PageSourceSearch

https://aluminahealth.com/assets/index-CSt8sTxi.js

js aluminahealth.com collected 2026-10-02 16:09:26 UTC 792,097 bytes, 26 lines download raw bytes

vendor: 6,616 bytes, lines 1-2
1const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/who-it-helps-CGxPKF3H.js","assets/SectionHeader-Bfk69xVp.js","assets/CTABand-ZlOJPoLS.js","assets/Breadcrumbs-Btk9SEdA.js","assets/FAQ-eASyqs_Q.js","assets/smartphone-DpkjDwuq.js","assets/arrow-right-CsK0hmQd.js","assets/voice-analysis-D_maVEW2.js","assets/mic-DfvAR17a.js","assets/check-DfImSwhH.js","assets/file-text-BioBWGvE.js","assets/triangle-alert-Bq36s3at.js","assets/terms-BYA5qqI6.js","assets/privacy-LdduW_FV.js","assets/pricing-Bkf0GqhT.js","assets/medical-disclaimer-PqdniaAn.js","assets/contact-DDpnnh8x.js","assets/assessment-types-uvOcuuZ-.js","assets/AssessmentsGrid-Ci5CwmBf.js","assets/AssessmentIcon-Lbv6TH_D.js","assets/about-BuT7RZjR.js","assets/heart-pulse-D4S8BCfq.js","assets/index-D1vq1eVv.js","assets/conditions.index-DlXqC8R3.js","assets/articles.index-BKgtRseV.js","assets/ArticleCard-UXDXrYAh.js","assets/conditions._slug-mddmJosp.js","assets/References-CrxdFT6a.js","assets/MedicalDisclaimerBanner-NFogI6TJ.js","assets/assessments._slug-Dw7rNMDy.js","assets/about_.our-process-B6HY2opI.js","assets/articles._category.index-DKoBepIG.js","assets/articles._category._slug-Dom_vM3k.js"])))=>i.map(i=>d[i]);
2function jg(a){return a&&a.__esModule&&Object.prototype.hasOwnProperty.call(a,"default")?a.default:a}var Hu={exports:{}},vo={};var xp;function qw(){if(xp)return vo;xp=1;var a=Symbol.for("react.transitional.element"),s=Symbol.for("react.fragment");function o(r,u,d){var h=null;if(d!==void 0&&(h=""+d),u.key!==void 0&&(h=""+u.key),"key"in u){d={};for(var y in u)y!=="key"&&(d[y]=u[y])}else d=u;return u=d.ref,{$$typeof:a,type:r,key:h,ref:u!==void 0?u:null,props:d}}return vo.Fragment=s,vo.jsx=o,vo.jsxs=o,vo}var Ap;function Lw(){return Ap||(Ap=1,Hu.exports=qw()),Hu.exports}var E=Lw(),Iu={exports:{}},ke={};var Tp;function Ow(){if(Tp)return ke;Tp=1;var a=Symbol.for("react.transitional.element"),s=Symbol.for("react.portal"),o=Symbol.for("react.fragment"),r=Symbol.for("react.strict_mode"),u=Symbol.for("react.profiler"),d=Symbol.for("react.consumer"),h=Symbol.for("react.context"),y=Symbol.for("react.forward_ref"),g=Symbol.for("react.suspense"),p=Symbol.for("react.memo"),b=Symbol.for("react.lazy"),f=Symbol.for("react.activity"),w=Symbol.iterator;function S(_){return _===null||typeof _!="object"?null:(_=w&&_[w]||_["@@iterator"],typeof _=="function"?_:null)}var M={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},D=Object.assign,x={};function C(_,B,W){this.props=_,this.context=B,this.refs=x,this.updater=W||M}C.prototype.isReactComponent={},C.prototype.setState=function(_,B){if(typeof _!="object"&&typeof _!="function"&&_!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,_,B,"setState")},C.prototype.forceUpdate=function(_){this.updater.enqueueForceUpdate(this,_,"forceUpdate")};function G(){}G.prototype=C.prototype;function U(_,B,W){this.props=_,this.context=B,this.refs=x,this.updater=W||M}var I=U.prototype=new G;I.constructor=U,D(I,C.prototype),I.isPureReactComponent=!0;var te=Array.isArray;function $(){}var V={H:null,A:null,T:null,S:null},O=Object.prototype.hasOwnProperty;function Q(_,B,W){var Z=W.ref;return{$$typeof:a,type:_,key:B,ref:Z!==void 0?Z:null,props:W}}function he(_,B){return Q(_.type,B,_.props)}function ne(_){return typeof _=="object"&&_!==null&&_.$$typeof===a}function ge(_){var B={"=":"=0",":":"=2"};return"$"+_.replace(/[=:]/g,function(W){return B[W]})}var ye=/\/+/g;function qe(_,B){return typeof _=="object"&&_!==null&&_.key!=null?ge(""+_.key):B.toString(36)}function Ae(_){switch(_.status){case"fulfilled":return _.value;case"rejected":throw _.reason;default:switch(typeof _.status=="string"?_.then($,$):(_.status="pending",_.then(function(B){_.status==="pending"&&(_.status="fulfilled",_.value=B)},function(B){_.status==="pending"&&(_.status="rejected",_.reason=B)})),_.status){case"fulfilled":return _.value;case"rejected":throw _.reason}}throw _}function z(_,B,W,Z,X){var ie=typeof _;(ie==="undefined"||ie==="boolean")&&(_=null);var we=!1;if(_===null)we=!0;else switch(ie){case"bigint":case"string":case"number":we=!0;break;case"object":switch(_.$$typeof){case a:case s:we=!0;break;case b:return we=_._init,z(we(_._payload),B,W,Z,X)}}if(we)return X=X(_),we=Z===""?"."+qe(_,0):Z,te(X)?(W="",we!=null&&(W=we.replace(ye,"$&/")+"/"),z(X,B,W,"",function(Tt){return Tt})):X!=null&&(ne(X)&&(X=he(X,W+(X.key==null||_&&_.key===X.key?"":(""+X.key).replace(ye,"$&/")+"/")+we)),B.push(X)),1;we=0;var ve=Z===""?".":Z+":";if(te(_))for(var fe=0;fe<_.length;fe++)Z=_[fe],ie=ve+qe(Z,fe),we+=z(Z,B,W,ie,X);else if(fe=S(_),typeof fe=="function")for(_=fe.call(_),fe=0;!(Z=_.next()).done;)Z=Z.value,ie=ve+qe(Z,fe++),we+=z(Z,B,W,ie,X);else if(ie==="object"){if(typeof _.then=="function")return z(Ae(_),B,W,Z,X);throw B=String(_),Error("Objects are not valid as a React child (found: "+(B==="[object Object]"?"object with keys {"+Object.keys(_).join(", ")+"}":B)+"). If you meant to render a collection of children, use an array instead.")}return we}function K(_,B,W){if(_==null)return _;var Z=[],X=0;return z(_,Z,"","",function(ie){return B.call(W,ie,X++)}),Z}function oe(_){if(_._status===-1){var B=_._result;B=B(),B.then(function(W){(_._status===0||_._status===-1)&&(_._status=1,_._result=W)},function(W){(_._status===0||_._status===-1)&&(_._status=2,_._result=W)}),_._status===-1&&(_._status=0,_._result=B)}if(_._status===1)return _._result.default;throw _._result}var Se=typeof reportError=="function"?reportError:function(_){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var B=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof _=="object"&&_!==null&&typeof _.message=="string"?String(_.message):String(_),error:_});if(!window.dispatchEvent(B))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",_);return}console.error(_)},J={map:K,forEach:function(_,B,W){K(_,function(){B.apply(this,arguments)},W)},count:function(_){var B=0;return K(_,function(){B++}),B},toArray:function(_){return K(_,function(B){return B})||[]},only:function(_){if(!ne(_))throw Error("React.Children.only expected to receive a single React element child.");return _}};return ke.Activity=f,ke.Children=J,ke.Component=C,ke.Fragment=o,ke.Profiler=u,ke.PureComponent=U,ke.StrictMode=r,ke.Suspense=g,ke.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=V,ke.__COMPILER_RUNTIME={__proto__:null,c:function(_){return V.H.useMemoCache(_)}}
vendor: 14,037 bytes, line 2
2,ke.cache=function(_){return function(){return _.apply(null,arguments)}},ke.cacheSignal=function(){return null},ke.cloneElement=function(_,B,W){if(_==null)throw Error("The argument must be a React element, but you passed "+_+".");var Z=D({},_.props),X=_.key;if(B!=null)for(ie in B.key!==void 0&&(X=""+B.key),B)!O.call(B,ie)||ie==="key"||ie==="__self"||ie==="__source"||ie==="ref"&&B.ref===void 0||(Z[ie]=B[ie]);var ie=arguments.length-2;if(ie===1)Z.children=W;else if(1<ie){for(var we=Array(ie),ve=0;ve<ie;ve++)we[ve]=arguments[ve+2];Z.children=we}return Q(_.type,X,Z)},ke.createContext=function(_){return _={$$typeof:h,_currentValue:_,_currentValue2:_,_threadCount:0,Provider:null,Consumer:null},_.Provider=_,_.Consumer={$$typeof:d,_context:_},_},ke.createElement=function(_,B,W){var Z,X={},ie=null;if(B!=null)for(Z in B.key!==void 0&&(ie=""+B.key),B)O.call(B,Z)&&Z!=="key"&&Z!=="__self"&&Z!=="__source"&&(X[Z]=B[Z]);var we=arguments.length-2;if(we===1)X.children=W;else if(1<we){for(var ve=Array(we),fe=0;fe<we;fe++)ve[fe]=arguments[fe+2];X.children=ve}if(_&&_.defaultProps)for(Z in we=_.defaultProps,we)X[Z]===void 0&&(X[Z]=we[Z]);return Q(_,ie,X)},ke.createRef=function(){return{current:null}},ke.forwardRef=function(_){return{$$typeof:y,render:_}},ke.isValidElement=ne,ke.lazy=function(_){return{$$typeof:b,_payload:{_status:-1,_result:_},_init:oe}},ke.memo=function(_,B){return{$$typeof:p,type:_,compare:B===void 0?null:B}},ke.startTransition=function(_){var B=V.T,W={};V.T=W;try{var Z=_(),X=V.S;X!==null&&X(W,Z),typeof Z=="object"&&Z!==null&&typeof Z.then=="function"&&Z.then($,Se)}catch(ie){Se(ie)}finally{B!==null&&W.types!==null&&(B.types=W.types),V.T=B}},ke.unstable_useCacheRefresh=function(){return V.H.useCacheRefresh()},ke.use=function(_){return V.H.use(_)},ke.useActionState=function(_,B,W){return V.H.useActionState(_,B,W)},ke.useCallback=function(_,B){return V.H.useCallback(_,B)},ke.useContext=function(_){return V.H.useContext(_)},ke.useDebugValue=function(){},ke.useDeferredValue=function(_,B){return V.H.useDeferredValue(_,B)},ke.useEffect=function(_,B){return V.H.useEffect(_,B)},ke.useEffectEvent=function(_){return V.H.useEffectEvent(_)},ke.useId=function(){return V.H.useId()},ke.useImperativeHandle=function(_,B,W){return V.H.useImperativeHandle(_,B,W)},ke.useInsertionEffect=function(_,B){return V.H.useInsertionEffect(_,B)},ke.useLayoutEffect=function(_,B){return V.H.useLayoutEffect(_,B)},ke.useMemo=function(_,B){return V.H.useMemo(_,B)},ke.useOptimistic=function(_,B){return V.H.useOptimistic(_,B)},ke.useReducer=function(_,B,W){return V.H.useReducer(_,B,W)},ke.useRef=function(_){return V.H.useRef(_)},ke.useState=function(_){return V.H.useState(_)},ke.useSyncExternalStore=function(_,B,W){return V.H.useSyncExternalStore(_,B,W)},ke.useTransition=function(){return V.H.useTransition()},ke.version="19.2.5",ke}var Mp;function qo(){return Mp||(Mp=1,Iu.exports=Ow()),Iu.exports}var ae=qo();const ee=jg(ae);var ju={exports:{}},bo={},Bu={exports:{}},Uu={};var Cp;function Hw(){return Cp||(Cp=1,(function(a){function s(z,K){var oe=z.length;z.push(K);e:for(;0<oe;){var Se=oe-1>>>1,J=z[Se];if(0<u(J,K))z[Se]=K,z[oe]=J,oe=Se;else break e}}function o(z){return z.length===0?null:z[0]}function r(z){if(z.length===0)return null;var K=z[0],oe=z.pop();if(oe!==K){z[0]=oe;e:for(var Se=0,J=z.length,_=J>>>1;Se<_;){var B=2*(Se+1)-1,W=z[B],Z=B+1,X=z[Z];if(0>u(W,oe))Z<J&&0>u(X,W)?(z[Se]=X,z[Z]=oe,Se=Z):(z[Se]=W,z[B]=oe,Se=B);else if(Z<J&&0>u(X,oe))z[Se]=X,z[Z]=oe,Se=Z;else break e}}return K}function u(z,K){var oe=z.sortIndex-K.sortIndex;return oe!==0?oe:z.id-K.id}if(a.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var d=performance;a.unstable_now=function(){return d.now()}}else{var h=Date,y=h.now();a.unstable_now=function(){return h.now()-y}}var g=[],p=[],b=1,f=null,w=3,S=!1,M=!1,D=!1,x=!1,C=typeof setTimeout=="function"?setTimeout:null,G=typeof clearTimeout=="function"?clearTimeout:null,U=typeof setImmediate<"u"?setImmediate:null;function I(z){for(var K=o(p);K!==null;){if(K.callback===null)r(p);else if(K.startTime<=z)r(p),K.sortIndex=K.expirationTime,s(g,K);else break;K=o(p)}}function te(z){if(D=!1,I(z),!M)if(o(g)!==null)M=!0,$||($=!0,ge());else{var K=o(p);K!==null&&Ae(te,K.startTime-z)}}var $=!1,V=-1,O=5,Q=-1;function he(){return x?!0:!(a.unstable_now()-Q<O)}function ne(){if(x=!1,$){var z=a.unstable_now();Q=z;var K=!0;try{e:{M=!1,D&&(D=!1,G(V),V=-1),S=!0;var oe=w;try{t:{for(I(z),f=o(g);f!==null&&!(f.expirationTime>z&&he());){var Se=f.callback;if(typeof Se=="function"){f.callback=null,w=f.priorityLevel;var J=Se(f.expirationTime<=z);if(z=a.unstable_now(),typeof J=="function"){f.callback=J,I(z),K=!0;break t}f===o(g)&&r(g),I(z)}else r(g);f=o(g)}if(f!==null)K=!0;else{var _=o(p);_!==null&&Ae(te,_.startTime-z),K=!1}}break e}finally{f=null,w=oe,S=!1}K=void 0}}finally{K?ge():$=!1}}}var ge;if(typeof U=="function")ge=function(){U(ne)};else if(typeof MessageChannel<"u"){var ye=new MessageChannel,qe=ye.port2;ye.port1.onmessage=ne,ge=function(){qe.postMessage(null)}}else ge=function(){C(ne,0)};function Ae(z,K){V=C(function(){z(a.unstable_now())},K)}a.unstable_IdlePriority=5,a.unstable_ImmediatePriority=1,a.unstable_LowPriority=4,a.unstable_NormalPriority=3,a.unstable_Profiling=null,a.unstable_UserBlockingPriority=2,a.unstable_cancelCallback=function(z){z.callback=null},a.unstable_forceFrameRate=function(z){0>z||125<z?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):O=0<z?Math.floor(1e3/z):5},a.unstable_getCurrentPriorityLevel=function(){return w},a.unstable_next=function(z){switch(w){case 1:case 2:case 3:var K=3;break;default:K=w}var oe=w;w=K;try{return z()}finally{w=oe}},a.unstable_requestPaint=function(){x=!0},a.unstable_runWithPriority=function(z,K){switch(z){case 1:case 2:case 3:case 4:case 5:break;default:z=3}var oe=w;w=z;try{return K()}finally{w=oe}},a.unstable_scheduleCallback=function(z,K,oe){var Se=a.unstable_now();switch(typeof oe=="object"&&oe!==null?(oe=oe.delay,oe=typeof oe=="number"&&0<oe?Se+oe:Se):oe=Se,z){case 1:var J=-1;break;case 2:J=250;break;case 5:J=1073741823;break;case 4:J=1e4;break;default:J=5e3}return J=oe+J,z={id:b++,callback:K,priorityLevel:z,startTime:oe,expirationTime:J,sortIndex:-1},oe>Se?(z.sortIndex=oe,s(p,z),o(g)===null&&z===o(p)&&(D?(G(V),V=-1):D=!0,Ae(te,oe-Se))):(z.sortIndex=J,s(g,z),M||S||(M=!0,$||($=!0,ge()))),z},a.unstable_shouldYield=he,a.unstable_wrapCallback=function(z){var K=w;return function(){var oe=w;w=K;try{return z.apply(this,arguments)}finally{w=oe}}}})(Uu)),Uu}var _p;function Iw(){return _p||(_p=1,Bu.exports=Hw()),Bu.exports}var Vu={exports:{}},Lt={};var Rp;function jw(){if(Rp)return Lt;Rp=1;var a=qo();function s(g){var p="https://react.dev/errors/"+g;if(1<arguments.length){p+="?args[]="+encodeURIComponent(arguments[1]);for(var b=2;b<arguments.length;b++)p+="&args[]="+encodeURIComponent(arguments[b])}return"Minified React error #"+g+"; visit "+p+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function o(){}var r={d:{f:o,r:function(){throw Error(s(522))},D:o,C:o,L:o,m:o,X:o,S:o,M:o},p:0,findDOMNode:null},u=Symbol.for("react.portal");function d(g,p,b){var f=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:u,key:f==null?null:""+f,children:g,containerInfo:p,implementation:b}}var h=a.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;function y(g,p){if(g==="font")return"";if(typeof p=="string")return p==="use-credentials"?p:""}return Lt.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=r,Lt.createPortal=function(g,p){var b=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!p||p.nodeType!==1&&p.nodeType!==9&&p.nodeType!==11)throw Error(s(299));return d(g,p,null,b)},Lt.flushSync=function(g){var p=h.T,b=r.p;try{if(h.T=null,r.p=2,g)return g()}finally{h.T=p,r.p=b,r.d.f()}},Lt.preconnect=function(g,p){typeof g=="string"&&(p?(p=p.crossOrigin,p=typeof p=="string"?p==="use-credentials"?p:"":void 0):p=null,r.d.C(g,p))},Lt.prefetchDNS=function(g){typeof g=="string"&&r.d.D(g)},Lt.preinit=function(g,p){if(typeof g=="string"&&p&&typeof p.as=="string"){var b=p.as,f=y(b,p.crossOrigin),w=typeof p.integrity=="string"?p.integrity:void 0,S=typeof p.fetchPriority=="string"?p.fetchPriority:void 0;b==="style"?r.d.S(g,typeof p.precedence=="string"?p.precedence:void 0,{crossOrigin:f,integrity:w,fetchPriority:S}):b==="script"&&r.d.X(g,{crossOrigin:f,integrity:w,fetchPriority:S,nonce:typeof p.nonce=="string"?p.nonce:void 0})}},Lt.preinitModule=function(g,p){if(typeof g=="string")if(typeof p=="object"&&p!==null){if(p.as==null||p.as==="script"){var b=y(p.as,p.crossOrigin);r.d.M(g,{crossOrigin:b,integrity:typeof p.integrity=="string"?p.integrity:void 0,nonce:typeof p.nonce=="string"?p.nonce:void 0})}}else p==null&&r.d.M(g)},Lt.preload=function(g,p){if(typeof g=="string"&&typeof p=="object"&&p!==null&&typeof p.as=="string"){var b=p.as,f=y(b,p.crossOrigin);r.d.L(g,b,{crossOrigin:f,integrity:typeof p.integrity=="string"?p.integrity:void 0,nonce:typeof p.nonce=="string"?p.nonce:void 0,type:typeof p.type=="string"?p.type:void 0,fetchPriority:typeof p.fetchPriority=="string"?p.fetchPriority:void 0,referrerPolicy:typeof p.referrerPolicy=="string"?p.referrerPolicy:void 0,imageSrcSet:typeof p.imageSrcSet=="string"?p.imageSrcSet:void 0,imageSizes:typeof p.imageSizes=="string"?p.imageSizes:void 0,media:typeof p.media=="string"?p.media:void 0})}},Lt.preloadModule=function(g,p){if(typeof g=="string")if(p){var b=y(p.as,p.crossOrigin);r.d.m(g,{as:typeof p.as=="string"&&p.as!=="script"?p.as:void 0,crossOrigin:b,integrity:typeof p.integrity=="string"?p.integrity:void 0})}else r.d.m(g)},Lt.requestFormReset=function(g){r.d.r(g)},Lt.unstable_batchedUpdates=function(g,p){return g(p)},Lt.useFormState=function(g,p,b){return h.H.useFormState(g,p,b)},Lt.useFormStatus=function(){return h.H.useHostTransitionStatus()},Lt.version="19.2.5",Lt}var Ep;function Bg(){if(Ep)return Vu.exports;Ep=1;function a(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(a)}catch(s){console.error(s)}}return a(),Vu.exports=jw(),Vu.exports}var Dp;function Bw(){if(Dp)return bo;Dp=1;var a=Iw(),s=qo(),o=Bg();function r(e){var t="https://react.dev/errors/"+e;if(1<arguments.length){t+="?args[]="+encodeURIComponent(arguments[1]);for(var n=2;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n])}return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function u(e){return!(!e||e.nodeType!==1&&e.nodeType!==9&&e.nodeType!==11)}function d(e){var t=e,n=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do t=e,(t.flags&4098)!==0&&(n=t.return),e=t.return;while(e)}return t.tag===3?n:null}function h(e){if(e.tag===13){var t=e.memoizedState;if(t===null&&(e=e.alternate,e!==null&&(t=e.memoizedState)),t!==null)return t.dehydrated}return null}function y(e){if(e.tag===31){var t=e.memoizedState;if(t===null&&(e=e.alternate,e!==null&&(t=e.memoizedState)),t!==null)return t.dehydrated}return null}function g(e){if(d(e)!==e)throw Error(r(188))}function p(e){var t=e.alternate;if(!t){if(t=d(e),t===null)throw Error(r(188));return t!==e?null:e}for(var n=e,i=t;;){var l=n.return;if(l===null)break;var c=l.alternate;if(c===null){if(i=l.return,i!==null){n=i;continue}break}if(l.child===c.child){for(c=l.child;c;){if(c===n)return g(l),e;if(c===i)return g(l),t;c=c.sibling}throw Error(r(188))}if(n.return!==i.return)n=l,i=c;else{for(var m=!1,v=l.child;v;){if(v===n){m=!0,n=l,i=c;break}if(v===i){m=!0,i=l,n=c;break}v=v.sibling}if(!m){for(v=c.child;v;){if(v===n){m=!0,n=c,i=l;break}if(v===i){m=!0,i=c,n=l;break}v=v.sibling}if(!m)throw Error(r(189))}}if(n.alternate!==i)throw Error(r(190))}if(n.tag!==3)throw Error(r(188));return n.stateNode.current===n?e:t}function b(e){var t=e.tag;if(t===5||t===26||t===27||t===6)return e;for(e=e.child;e!==null;){if(t=b(e),t!==null)return t;e=e.sibling}return null}var f=Object.assign,w=Symbol.for("react.element"),S=Symbol.for("react.transitional.element"),M=Symbol.for("react.portal"),D=Symbol.for("react.fragment"),x=Symbol.for("react.strict_mode"),C=Symbol.for("react.profiler"),G=Symbol.for("react.consumer"),U=Symbol.for("react.context"),I=Symbol.for("react.forward_ref"),te=Symbol.for("react.suspense"),$=Symbol.for("react.suspense_list"),V=Symbol.for("react.memo"),O=Symbol.for("react.lazy"),Q=Symbol.for("react.activity"),he=Symbol.for("react.memo_cache_sentinel"),ne=Symbol.iterator;function ge(e){return e===null||typeof e!="object"?null:(e=ne&&e[ne]||e["@@iterator"],typeof e=="function"?e:null)}var ye=Symbol.for("react.client.reference");function qe(e){if(e==null)return null;if(typeof e=="function")return e.$$typeof===ye?null:e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case D:return"Fragment";case C:return"Profiler";case x:return"StrictMode";case te:return"Suspense";case $:return"SuspenseList";case Q:return"Activity"}if(typeof e=="object")switch(e.$$typeof){case M:return"Portal";case U:return e.displayName||"Context";case G:return(e._context.displayName||"Context")+".Consumer";case I:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case V:return t=e.displayName||null,t!==null?t:qe(e.type)||"Memo";case O:t=e._payload,e=e._init;try{return qe(e(t))}catch{}}return null}var Ae=Array.isArray,z=s.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,K=o.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,oe={pending:!1,data:null,method:null,action:null},Se=[],J=-1;function _(e){return{current:e}}function B(e){0>J||(e.current=Se[J],Se[J]=null,J--)}function W(e,t){J++,Se[J]=e.current,e.current=t}var Z=_(null),X=_(null),ie=_(null),we=_(null);function ve(e,t){switch(W(ie,t),W(X,e),W(Z,null),t.nodeType){case 9:case 11:e=(e
vendor: 11,599 bytes, lines 2-9
2=t.documentElement)&&(e=e.namespaceURI)?Wf(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=Wf(t),e=Ff(t,e);else switch(e){case"svg":e=1;break;case"math":e=2;break;default:e=0}}B(Z),W(Z,e)}function fe(){B(Z),B(X),B(ie)}function Tt(e){e.memoizedState!==null&&W(we,e);var t=Z.current,n=Ff(t,e.type);t!==n&&(W(X,e),W(Z,n))}function ht(e){X.current===e&&(B(Z),B(X)),we.current===e&&(B(we),fo._currentValue=oe)}var ot,wa;function mt(e){if(ot===void 0)try{throw Error()}catch(n){var t=n.stack.trim().match(/\n( *(at )?)/);ot=t&&t[1]||"",wa=-1<n.stack.indexOf(`
3    at`)?" (<anonymous>)":-1<n.stack.indexOf("@")?"@unknown:0:0":""}return`
4`+ot+e+wa}var $n=!1;function Ia(e,t){if(!e||$n)return"";$n=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var i={DetermineComponentFrameRoot:function(){try{if(t){var F=function(){throw Error()};if(Object.defineProperty(F.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(F,[])}catch(H){var L=H}Reflect.construct(e,[],F)}else{try{F.call()}catch(H){L=H}e.call(F.prototype)}}else{try{throw Error()}catch(H){L=H}(F=e())&&typeof F.catch=="function"&&F.catch(function(){})}}catch(H){if(H&&L&&typeof H.stack=="string")return[H.stack,L.stack]}return[null,null]}};i.DetermineComponentFrameRoot.displayName="DetermineComponentFrameRoot";var l=Object.getOwnPropertyDescriptor(i.DetermineComponentFrameRoot,"name");l&&l.configurable&&Object.defineProperty(i.DetermineComponentFrameRoot,"name",{value:"DetermineComponentFrameRoot"});var c=i.DetermineComponentFrameRoot(),m=c[0],v=c[1];if(m&&v){var A=m.split(`
5`),q=v.split(`
6`);for(l=i=0;i<A.length&&!A[i].includes("DetermineComponentFrameRoot");)i++;for(;l<q.length&&!q[l].includes("DetermineComponentFrameRoot");)l++;if(i===A.length||l===q.length)for(i=A.length-1,l=q.length-1;1<=i&&0<=l&&A[i]!==q[l];)l--;for(;1<=i&&0<=l;i--,l--)if(A[i]!==q[l]){if(i!==1||l!==1)do if(i--,l--,0>l||A[i]!==q[l]){var j=`
7`+A[i].replace(" at new "," at ");return e.displayName&&j.includes("<anonymous>")&&(j=j.replace("<anonymous>",e.displayName)),j}while(1<=i&&0<=l);break}}}finally{$n=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:"")?mt(n):""}function Ca(e,t){switch(e.tag){case 26:case 27:case 5:return mt(e.type);case 16:return mt("Lazy");case 13:return e.child!==t&&t!==null?mt("Suspense Fallback"):mt("Suspense");case 19:return mt("SuspenseList");case 0:case 15:return Ia(e.type,!1);case 11:return Ia(e.type.render,!1);case 1:return Ia(e.type,!0);case 31:return mt("Activity");default:return""}}function la(e){try{var t="",n=null;do t+=Ca(e,n),n=e,e=e.return;while(e);return t}catch(i){return`
8Error generating stack: `+i.message+`
9`+i.stack}}var Mt=Object.prototype.hasOwnProperty,Jt=a.unstable_scheduleCallback,Jn=a.unstable_cancelCallback,vt=a.unstable_shouldYield,_a=a.unstable_requestPaint,bt=a.unstable_now,je=a.unstable_getCurrentPriorityLevel,et=a.unstable_ImmediatePriority,ca=a.unstable_UserBlockingPriority,ja=a.unstable_NormalPriority,Ms=a.unstable_LowPriority,Ba=a.unstable_IdlePriority,Ho=a.log,hn=a.unstable_setDisableYieldValue,ei=null,Ot=null;function ka(e){if(typeof Ho=="function"&&hn(e),Ot&&typeof Ot.setStrictMode=="function")try{Ot.setStrictMode(ei,e)}catch{}}var Pt=Math.clz32?Math.clz32:Ra,Cl=Math.log,Cs=Math.LN2;function Ra(e){return e>>>=0,e===0?32:31-(Cl(e)/Cs|0)|0}var Di=256,Ni=262144,ti=4194304;function Ea(e){var t=e&42;if(t!==0)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return e&261888;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function be(e,t,n){var i=e.pendingLanes;if(i===0)return 0;var l=0,c=e.suspendedLanes,m=e.pingedLanes;e=e.warmLanes;var v=i&134217727;return v!==0?(i=v&~c,i!==0?l=Ea(i):(m&=v,m!==0?l=Ea(m):n||(n=v&~e,n!==0&&(l=Ea(n))))):(v=i&~c,v!==0?l=Ea(v):m!==0?l=Ea(m):n||(n=i&~e,n!==0&&(l=Ea(n)))),l===0?0:t!==0&&t!==l&&(t&c)===0&&(c=l&-l,n=t&-t,c>=n||c===32&&(n&4194048)!==0)?t:l}function Xe(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function wt(e,t){switch(e){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function qt(){var e=ti;return ti<<=1,(ti&62914560)===0&&(ti=4194304),e}function mn(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function $e(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function It(e,t,n,i,l,c){var m=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var v=e.entanglements,A=e.expirationTimes,q=e.hiddenUpdates;for(n=m&~n;0<n;){var j=31-Pt(n),F=1<<j;v[j]=0,A[j]=-1;var L=q[j];if(L!==null)for(q[j]=null,j=0;j<L.length;j++){var H=L[j];H!==null&&(H.lane&=-536870913)}n&=~F}i!==0&&ai(e,i,0),c!==0&&l===0&&e.tag!==0&&(e.suspendedLanes|=c&~(m&~t))}function ai(e,t,n){e.pendingLanes|=t,e.suspendedLanes&=~t;var i=31-Pt(t);e.entangledLanes|=t,e.entanglements[i]=e.entanglements[i]|1073741824|n&261930}function jt(e,t){var n=e.entangledLanes|=t;for(e=e.entanglements;n;){var i=31-Pt(n),l=1<<i;l&t|e[i]&t&&(e[i]|=t),n&=~l}}function Bt(e,t){var n=t&-t;return n=(n&42)!==0?1:zi(n),(n&(e.suspendedLanes|t))!==0?0:n}function zi(e){switch(e){case 2:e=1;break;case 8:e=4;break;case 32:e=16;break;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:e=128;break;case 268435456:e=134217728;break;default:e=0}return e}function Sa(e){return e&=-e,2<e?8<e?(e&134217727)!==0?32:268435456:8:2}function _l(){var e=K.p;return e!==0?e:(e=window.event,e===void 0?32:gp(e.type))}function Dd(e,t){var n=K.p;try{return K.p=e,t()}finally{K.p=n}}var fn=Math.random().toString(36).slice(2),Ct="__reactFiber$"+fn,Ut="__reactProps$"+fn,Pi="__reactContainer$"+fn,Rl="__reactEvents$"+fn,Av="__reactListeners$"+fn,Tv="__reactHandles$"+fn,Nd="__reactResources$"+fn,_s="__reactMarker$"+fn;function El(e){delete e[Ct],delete e[Ut],delete e[Rl],delete e[Av],delete e[Tv]}function qi(e){var t=e[Ct];if(t)return t;for(var n=e.parentNode;n;){if(t=n[Pi]||n[Ct]){if(n=t.alternate,t.child!==null||n!==null&&n.child!==null)for(e=ep(e);e!==null;){if(n=e[Ct])return n;e=ep(e)}return t}e=n,n=e.parentNode}return null}function Li(e){if(e=e[Ct]||e[Pi]){var t=e.tag;if(t===5||t===6||t===13||t===31||t===26||t===27||t===3)return e}return null}function Rs(e){var t=e.tag;if(t===5||t===26||t===27||t===6)return e.stateNode;throw Error(r(33))}function Oi(e){var t=e[Nd];return t||(t=e[Nd]={hoistableStyles:new Map,hoistableScripts:new Map}),t}function kt(e){e[_s]=!0}var zd=new Set,Pd={};function ni(e,t){Hi(e,t),Hi(e+"Capture",t)}function Hi(e,t){for(Pd[e]=t,e=0;e<t.length;e++)zd.add(t[e])}var Mv=RegExp("^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$"),qd={},Ld={};function Cv(e){return Mt.call(Ld,e)?!0:Mt.call(qd,e)?!1:Mv.test(e)?Ld[e]=!0:(qd[e]=!0,!1)}function Io(e,t,n){if(Cv(t))if(n===null)e.removeAttribute(t);else{switch(typeof n){case"undefined":case"function":case"symbol":e.removeAttribute(t);return;case"boolean":var i=t.toLowerCase().slice(0,5);if(i!=="data-"&&i!=="aria-"){e.removeAttribute(t);return}}e.setAttribute(t,""+n)}}function jo(e,t,n){if(n===null)e.removeAttribute(t);else{switch(typeof n){case"undefined":case"function":case"symbol":case"boolean":e.removeAttribute(t);return}e.setAttribute(t,""+n)}}function Ua(e,t,n,i){if(i===null)e.removeAttribute(n);else{switch(typeof i){case"undefined":case"function":case"symbol":case"boolean":e.removeAttribute(n);return}e.setAttributeNS(t,n,""+i)}}function ua(e){switch(typeof e){case"bigint":case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function Od(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function _v(e,t,n){var i=Object.getOwnPropertyDescriptor(e.constructor.prototype,t);if(!e.hasOwnProperty(t)&&typeof i<"u"&&typeof i.get=="function"&&typeof i.set=="function"){var l=i.get,c=i.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return l.call(this)},set:function(m){n=""+m,c.call(this,m)}}),Object.defineProperty(e,t,{enumerable:i.enumerable}),{getValue:function(){return n},setValue:function(m){n=""+m},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function Dl(e){if(!e._valueTracker){var t=Od(e)?"checked":"value";e._valueTracker=_v(e,t,""+e[t])}}function Hd(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),i="";return e&&(i=Od(e)?e.checked?"true":"false":e.value),e=i,e!==n?(t.setValue(e),!0):!1}function Bo(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}}var Rv=/[\n"\\]/g;function da(e){return e.replace(Rv,function(t){return"\\"+t.charCodeAt(0).toString(16)+" "})}function Nl(e,t,n,i,l,c,m,v){e.name="",m!=null&&typeof m!="function"&&typeof m!="symbol"&&typeof m!="boolean"?e.type=m:e.removeAttribute("type"),t!=null?m==="number"?(t===0&&e.value===""||e.value!=t)&&(e.value=""+ua(t)):e.value!==""+ua(t)&&(e.value=""+ua(t)):m!=="submit"&&m!=="reset"||e.removeAttribute("value"),t!=null?zl(e,m,ua(t)):n!=null?zl(e,m,ua(n)):i!=null&&e.removeAttribute("value"),l==null&&c!=null&&(e.defaultChecked=!!c),l!=null&&(e.checked=l&&typeof l!="function"&&typeof l!="symbol"),v!=null&&typeof v!="function"&&typeof v!="symbol"&&typeof v!="boolean"?e.name=""+ua(v):e.removeAttribute("name")}function Id(e,t,n,i,l,c,m,v){if(c!=null&&typeof c!="function"&&typeof c!="symbol"&&typeof c!="boolean"&&(e.type=c),t!=null||n!=null){if(!(c!=="submit"&&c!=="reset"||t!=null)){Dl(e);return}n=n!=null?""+ua(n):"",t=t!=null?""+ua(t):n,v||t===e.value||(e.value=t),e.defaultValue=t}i=i??l,i=typeof i!="function"&&typeof i!="symbol"&&!!i,e.checked=v?e.checked:!!i,e.defaultChecked=!!i,m!=null&&typeof m!="function"&&typeof m!="symbol"&&typeof m!="boolean"&&(e.name=m),Dl(e)}function zl(e,t,n){t==="number"&&Bo(e.ownerDocument)===e||e.defaultValue===""+n||(e.defaultValue=""+n)}function Ii(e,t,n,i){if(e=e.options,t){t={};for(var l=0;l<n.length;l++)t["$"+n[l]]=!0;for(n=0;n<e.length;n++)l=t.hasOwnProperty("$"+e[n].value),e[n].selected!==l&&(e[n].selected=l),l&&i&&(e[n].defaultSelected=!0)}else{for(n=""+ua(n),t=null,l=0;l<e.length;l++){if(e[l].value===n){e[l].selected=!0,i&&(e[l].defaultSelected=!0);return}t!==null||e[l].disabled||(t=e[l])}t!==null&&(t.selected=!0)}}
vendor: 4,574 bytes, line 9
9function jd(e,t,n){if(t!=null&&(t=""+ua(t),t!==e.value&&(e.value=t),n==null)){e.defaultValue!==t&&(e.defaultValue=t);return}e.defaultValue=n!=null?""+ua(n):""}function Bd(e,t,n,i){if(t==null){if(i!=null){if(n!=null)throw Error(r(92));if(Ae(i)){if(1<i.length)throw Error(r(93));i=i[0]}n=i}n==null&&(n=""),t=n}n=ua(t),e.defaultValue=n,i=e.textContent,i===n&&i!==""&&i!==null&&(e.value=i),Dl(e)}function ji(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var Ev=new Set("animationIterationCount aspectRatio borderImageOutset borderImageSlice borderImageWidth boxFlex boxFlexGroup boxOrdinalGroup columnCount columns flex flexGrow flexPositive flexShrink flexNegative flexOrder gridArea gridRow gridRowEnd gridRowSpan gridRowStart gridColumn gridColumnEnd gridColumnSpan gridColumnStart fontWeight lineClamp lineHeight opacity order orphans scale tabSize widows zIndex zoom fillOpacity floodOpacity stopOpacity strokeDasharray strokeDashoffset strokeMiterlimit strokeOpacity strokeWidth MozAnimationIterationCount MozBoxFlex MozBoxFlexGroup MozLineClamp msAnimationIterationCount msFlex msZoom msFlexGrow msFlexNegative msFlexOrder msFlexPositive msFlexShrink msGridColumn msGridColumnSpan msGridRow msGridRowSpan WebkitAnimationIterationCount WebkitBoxFlex WebKitBoxFlexGroup WebkitBoxOrdinalGroup WebkitColumnCount WebkitColumns WebkitFlex WebkitFlexGrow WebkitFlexPositive WebkitFlexShrink WebkitLineClamp".split(" "));function Ud(e,t,n){var i=t.indexOf("--")===0;n==null||typeof n=="boolean"||n===""?i?e.setProperty(t,""):t==="float"?e.cssFloat="":e[t]="":i?e.setProperty(t,n):typeof n!="number"||n===0||Ev.has(t)?t==="float"?e.cssFloat=n:e[t]=(""+n).trim():e[t]=n+"px"}function Vd(e,t,n){if(t!=null&&typeof t!="object")throw Error(r(62));if(e=e.style,n!=null){for(var i in n)!n.hasOwnProperty(i)||t!=null&&t.hasOwnProperty(i)||(i.indexOf("--")===0?e.setProperty(i,""):i==="float"?e.cssFloat="":e[i]="");for(var l in t)i=t[l],t.hasOwnProperty(l)&&n[l]!==i&&Ud(e,l,i)}else for(var c in t)t.hasOwnProperty(c)&&Ud(e,c,t[c])}function Pl(e){if(e.indexOf("-")===-1)return!1;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 Dv=new Map([["acceptCharset","accept-charset"],["htmlFor","for"],["httpEquiv","http-equiv"],["crossOrigin","crossorigin"],["accentHeight","accent-height"],["alignmentBaseline","alignment-baseline"],["arabicForm","arabic-form"],["baselineShift","baseline-shift"],["capHeight","cap-height"],["clipPath","clip-path"],["clipRule","clip-rule"],["colorInterpolation","color-interpolation"],["colorInterpolationFilters","color-interpolation-filters"],["colorProfile","color-profile"],["colorRendering","color-rendering"],["dominantBaseline","dominant-baseline"],["enableBackground","enable-background"],["fillOpacity","fill-opacity"],["fillRule","fill-rule"],["floodColor","flood-color"],["floodOpacity","flood-opacity"],["fontFamily","font-family"],["fontSize","font-size"],["fontSizeAdjust","font-size-adjust"],["fontStretch","font-stretch"],["fontStyle","font-style"],["fontVariant","font-variant"],["fontWeight","font-weight"],["glyphName","glyph-name"],["glyphOrientationHorizontal","glyph-orientation-horizontal"],["glyphOrientationVertical","glyph-orientation-vertical"],["horizAdvX","horiz-adv-x"],["horizOriginX","horiz-origin-x"],["imageRendering","image-rendering"],["letterSpacing","letter-spacing"],["lightingColor","lighting-color"],["markerEnd","marker-end"],["markerMid","marker-mid"],["markerStart","marker-start"],["overlinePosition","overline-position"],["overlineThickness","overline-thickness"],["paintOrder","paint-order"],["panose-1","panose-1"],["pointerEvents","pointer-events"],["renderingIntent","rendering-intent"],["shapeRendering","shape-rendering"],["stopColor","stop-color"],["stopOpacity","stop-opacity"],["strikethroughPosition","strikethrough-position"],["strikethroughThickness","strikethrough-thickness"],["strokeDasharray","stroke-dasharray"],["strokeDashoffset","stroke-dashoffset"],["strokeLinecap","stroke-linecap"],["strokeLinejoin","stroke-linejoin"],["strokeMiterlimit","stroke-miterlimit"],["strokeOpacity","stroke-opacity"],["strokeWidth","stroke-width"],["textAnchor","text-anchor"],["textDecoration","text-decoration"],["textRendering","text-rendering"],["transformOrigin","transform-origin"],["underlinePosition","underline-position"],["underlineThickness","underline-thickness"],["unicodeBidi","unicode
9-bidi"],["unicodeRange","unicode-range"],["unitsPerEm","units-per-em"],["vAlphabetic","v-alphabetic"],["vHanging","v-hanging"],["vIdeographic","v-ideographic"],["vMathematical","v-mathematical"],["vectorEffect","vector-effect"],["vertAdvY","vert-adv-y"],["vertOriginX","vert-origin-x"],["vertOriginY","vert-origin-y"],["wordSpacing","word-spacing"],["writingMode","writing-mode"],["xmlnsXlink","xmlns:xlink"],["xHeight","x-height"]]),Nv=/^[\u0000-\u001F ]*j[\r\n\t]*a[\r\n\t]*v[\r\n\t]*a[\r\n\t]*s[\r\n\t]*c[\r\n\t]*r[\r\n\t]*i[\r\n\t]*p[\r\n\t]*t[\r\n\t]*:/i;function Uo(e){return Nv.test(""+e)?"javascript:throw new Error('React has blocked a javascript: URL as a security precaution.')":e}function Va(){}var ql=null;function Ll(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var Bi=null,Ui=null;function Gd(e){var t=Li(e);if(t&&(e=t.stateNode)){var n=e[Ut]||null;e:switch(e=t.stateNode,t.type){case"input":if(Nl(e,n.value,n.defaultValue,n.defaultValue,n.checked,n.defaultChecked,n.type,n.name),t=n.name,n.type==="radio"&&t!=null){for(n=e;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll('input[name="'+da(""+t)+'"][type="radio"]'),t=0;t<n.length;t++){var i=n[t];if(i!==e&&i.form===e.form){var l=i[Ut]||null;if(!l)throw Error(r(90));Nl(i,l.value,l.defaultValue,l.defaultValue,l.checked,l.defaultChecked,l.type,l.name)}}for(t=0;t<n.length;t++)i=n[t],i.form===e.form&&Hd(i)}break e;case"textarea":jd(e,n.value,n.defaultValue);break e;case"select":t=n.value,t!=null&&Ii(e,!!n.multiple,t,!1)}}}var Ol=!1;function Yd(e,t,n){if(Ol)return e(t,n);Ol=!0;try{var i=e(t);return i}finally{if(Ol=!1,(Bi!==null||Ui!==null)&&(Rr(),Bi&&(t=Bi,e=Ui,Ui=Bi=null,Gd(t),e)))for(t=0;t<e.length;t++)Gd(e[t])}}function Es(e,t){var n=e.stateNode;if(n===null)return null;var i=n[Ut]||null;if(i===null)return null;n=i[t];e:switch(t){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(i=!i.disabled)||(e=e.type,i=!(e==="button"||e==="input"||e==="select"||e==="textarea")),e=!i;break e;default:e=!1}if(e)return null;if(n&&typeof n!="function")throw Error(r(231,t,typeof n));return n}var Ga=!(typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Hl=!1;if(Ga)try{var Ds={};Object.defineProperty(Ds,"passive",{get:function(){Hl=!0}}),window.addEventListener("test",Ds,Ds),window.removeEventListener("test",Ds,Ds)}catch{Hl=!1}var pn=null,Il=null,Vo=null;function Wd(){if(Vo)return Vo;var e,t=Il,n=t.length,i,l="value"in pn?pn.value:pn.textContent,c=l.length;for(e=0;e<n&&t[e]===l[e];e++);var m=n-e;for(i=1;i<=m&&t[n-i]===l[c-i];i++);return Vo=l.slice(e,1<i?1-i:void 0)}function Go(e){var t=e.keyCode;return"charCode"in e?(e=e.charCode,e===0&&t===13&&(e=13)):e=t,e===10&&(e=13),32<=e||e===13?e:0}function Yo(){return!0}function Fd(){return!1}function Vt(e){function t(n,i,l,c,m){this._reactName=n,this._targetInst=l,this.type=i,this.nativeEvent=c,this.target=m,this.currentTarget=null;for(var v in e)e.hasOwnProperty(v)&&(n=e[v],this[v]=n?n(c):c[v]);return this.isDefaultPrevented=(c.defaultPrevented!=null?c.defaultPrevented:c.returnValue===!1)?Yo:Fd,this.isPropagationStopped=Fd,this}return f(t.prototype,{preventDefault:function(){this.defaultPrevented=!0;var n=this.nativeEvent;n&&(n.preventDefault?n.preventDefault():typeof n.returnValue!="unknown"&&(n.returnValue=!1),this.isDefaultPrevented=Yo)},stopPropagation:function(){var n=this.nativeEvent;n&&(n.stopPropagation?n.stopPropagation():typeof n.cancelBubble!="unknown"&&(n.cancelBubble=!0),this.isPropagationStopped=Yo)},persist:function(){},isPersistent:Yo}),t}var ii={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},Wo=Vt(ii),Ns=f({},ii,{view:0,detail:0}),zv=Vt(Ns),jl,Bl,zs,Fo=f({},Ns,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:Vl,button:0,buttons:0,relatedTarget:function(e){return e.relatedTarget===void 0?e.fromElement===e.srcElement?e.toElement:e.fromElement:e.relatedTarget},movementX:function(e){return"movementX"in e?e.movementX:(e!==zs&&(zs&&e.type==="mousemove"?(jl=e.screenX-zs.screenX,Bl=e.screenY-zs.screenY):Bl=jl=0,zs=e),jl)},movementY:function(e){return"movementY"in e?e.movementY:Bl}}),Kd=Vt(Fo),Pv=f({},Fo,{dataTransfer:0}),qv=Vt(Pv),Lv=f({},Ns,{relatedTarget:0}),Ul=Vt(Lv),Ov=f({},ii,{animationName:0,elapsedTime:0,pseudoElement:0}),Hv=Vt(Ov),Iv=f({},ii,{clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),jv=Vt(Iv),Bv=f({},ii,{data:0}),Xd=Vt(Bv),Uv={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"}
vendor: 4,245 bytes, line 9
9,Vv={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},Gv={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function Yv(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):(e=Gv[e])?!!t[e]:!1}function Vl(){return Yv}var Wv=f({},Ns,{key:function(e){if(e.key){var t=Uv[e.key]||e.key;if(t!=="Unidentified")return t}return e.type==="keypress"?(e=Go(e),e===13?"Enter":String.fromCharCode(e)):e.type==="keydown"||e.type==="keyup"?Vv[e.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:Vl,charCode:function(e){return e.type==="keypress"?Go(e):0},keyCode:function(e){return e.type==="keydown"||e.type==="keyup"?e.keyCode:0},which:function(e){return e.type==="keypress"?Go(e):e.type==="keydown"||e.type==="keyup"?e.keyCode:0}}),Fv=Vt(Wv),Kv=f({},Fo,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),Qd=Vt(Kv),Xv=f({},Ns,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:Vl}),Qv=Vt(Xv),Zv=f({},ii,{propertyName:0,elapsedTime:0,pseudoElement:0}),$v=Vt(Zv),Jv=f({},Fo,{deltaX:function(e){return"deltaX"in e?e.deltaX:"wheelDeltaX"in e?-e.wheelDeltaX:0},deltaY:function(e){return"deltaY"in e?e.deltaY:"wheelDeltaY"in e?-e.wheelDeltaY:"wheelDelta"in e?-e.wheelDelta:0},deltaZ:0,deltaMode:0}),eb=Vt(Jv),tb=f({},ii,{newState:0,oldState:0}),ab=Vt(tb),nb=[9,13,27,32],Gl=Ga&&"CompositionEvent"in window,Ps=null;Ga&&"documentMode"in document&&(Ps=document.documentMode);var ib=Ga&&"TextEvent"in window&&!Ps,Zd=Ga&&(!Gl||Ps&&8<Ps&&11>=Ps),$d=" ",Jd=!1;function eh(e,t){switch(e){case"keyup":return nb.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function th(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Vi=!1;function sb(e,t){switch(e){case"compositionend":return th(t);case"keypress":return t.which!==32?null:(Jd=!0,$d);case"textInput":return e=t.data,e===$d&&Jd?null:e;default:return null}}function ob(e,t){if(Vi)return e==="compositionend"||!Gl&&eh(e,t)?(e=Wd(),Vo=Il=pn=null,Vi=!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.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case"compositionend":return Zd&&t.locale!=="ko"?null:t.data;default:return null}}var rb={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function ah(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t==="input"?!!rb[e.type]:t==="textarea"}function nh(e,t,n,i){Bi?Ui?Ui.push(i):Ui=[i]:Bi=i,t=Lr(t,"onChange"),0<t.length&&(n=new Wo("onChange","change",null,n,i),e.push({event:n,listeners:t}))}var qs=null,Ls=null;function lb(e){jf(e,0)}function Ko(e){var t=Rs(e);if(Hd(t))return e}function ih(e,t){if(e==="change")return t}var sh=!1;if(Ga){var Yl;if(Ga){var Wl="oninput"in document;if(!Wl){var oh=document.createElement("div");oh.setAttribute("oninput","return;"),Wl=typeof oh.oninput=="function"}Yl=Wl}else Yl=!1;sh=Yl&&(!document.documentMode||9<document.documentMode)}function rh(){qs&&(qs.detachEvent("onpropertychange",lh),Ls=qs=null)}function lh(e){if(e.propertyName==="value"&&Ko(Ls)){var t=[];nh(t,Ls,e,Ll(e)),Yd(lb,t)}}function cb(e,t,n){e==="focusin"?(rh(),qs=t,Ls=n,qs.attachEvent("onpropertychange",lh)):e==="focusout"&&rh()}function ub(e){if(e==="selectionchange"||e==="keyup"||e==="keydown")return Ko(Ls)}function db(e,t){if(e==="click")return Ko(t)}function hb(e,t){if(e==="input"||e==="change")return Ko(t)}function mb(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var ea=typeof Object.is=="function"?Object.is:mb;function Os(e,t){if(ea(e,t))return!0;
vendor: 16,440 bytes, line 9
9if(typeof e!="object"||e===null||typeof t!="object"||t===null)return!1;var n=Object.keys(e),i=Object.keys(t);if(n.length!==i.length)return!1;for(i=0;i<n.length;i++){var l=n[i];if(!Mt.call(t,l)||!ea(e[l],t[l]))return!1}return!0}function ch(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function uh(e,t){var n=ch(e);e=0;for(var i;n;){if(n.nodeType===3){if(i=e+n.textContent.length,e<=t&&i>=t)return{node:n,offset:t-e};e=i}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=ch(n)}}function dh(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?dh(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function hh(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=Bo(e.document);t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=Bo(e.document)}return t}function Fl(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}var fb=Ga&&"documentMode"in document&&11>=document.documentMode,Gi=null,Kl=null,Hs=null,Xl=!1;function mh(e,t,n){var i=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;Xl||Gi==null||Gi!==Bo(i)||(i=Gi,"selectionStart"in i&&Fl(i)?i={start:i.selectionStart,end:i.selectionEnd}:(i=(i.ownerDocument&&i.ownerDocument.defaultView||window).getSelection(),i={anchorNode:i.anchorNode,anchorOffset:i.anchorOffset,focusNode:i.focusNode,focusOffset:i.focusOffset}),Hs&&Os(Hs,i)||(Hs=i,i=Lr(Kl,"onSelect"),0<i.length&&(t=new Wo("onSelect","select",null,t,n),e.push({event:t,listeners:i}),t.target=Gi)))}function si(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var Yi={animationend:si("Animation","AnimationEnd"),animationiteration:si("Animation","AnimationIteration"),animationstart:si("Animation","AnimationStart"),transitionrun:si("Transition","TransitionRun"),transitionstart:si("Transition","TransitionStart"),transitioncancel:si("Transition","TransitionCancel"),transitionend:si("Transition","TransitionEnd")},Ql={},fh={};Ga&&(fh=document.createElement("div").style,"AnimationEvent"in window||(delete Yi.animationend.animation,delete Yi.animationiteration.animation,delete Yi.animationstart.animation),"TransitionEvent"in window||delete Yi.transitionend.transition);function oi(e){if(Ql[e])return Ql[e];if(!Yi[e])return e;var t=Yi[e],n;for(n in t)if(t.hasOwnProperty(n)&&n in fh)return Ql[e]=t[n];return e}var ph=oi("animationend"),gh=oi("animationiteration"),yh=oi("animationstart"),pb=oi("transitionrun"),gb=oi("transitionstart"),yb=oi("transitioncancel"),vh=oi("transitionend"),bh=new Map,Zl="abort auxClick beforeToggle cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");Zl.push("scrollEnd");function xa(e,t){bh.set(e,t),ni(t,[e])}var Xo=typeof reportError=="function"?reportError:function(e){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var t=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof e=="object"&&e!==null&&typeof e.message=="string"?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",e);return}console.error(e)},ha=[],Wi=0,$l=0;function Qo(){for(var e=Wi,t=$l=Wi=0;t<e;){var n=ha[t];ha[t++]=null;var i=ha[t];ha[t++]=null;var l=ha[t];ha[t++]=null;var c=ha[t];if(ha[t++]=null,i!==null&&l!==null){var m=i.pending;m===null?l.next=l:(l.next=m.next,m.next=l),i.pending=l}c!==0&&wh(n,l,c)}}function Zo(e,t,n,i){ha[Wi++]=e,ha[Wi++]=t,ha[Wi++]=n,ha[Wi++]=i,$l|=i,e.lanes|=i,e=e.alternate,e!==null&&(e.lanes|=i)}function Jl(e,t,n,i){return Zo(e,t,n,i),$o(e)}function ri(e,t){return Zo(e,null,null,t),$o(e)}function wh(e,t,n){e.lanes|=n;var i=e.alternate;i!==null&&(i.lanes|=n);for(var l=!1,c=e.return;c!==null;)c.childLanes|=n,i=c.alternate,i!==null&&(i.childLanes|=n),c.tag===22&&(e=c.stateNode,e===null||e._visibility&1||(l=!0)),e=c,c=c.return;return e.tag===3?(c=e.stateNode,l&&t!==null&&(l=31-Pt(n),e=c.hiddenUpdates,i=e[l],i===null?e[l]=[t]:i.push(t),t.lane=n|536870912),c):null}function $o(e){if(50<oo)throw oo=0,lu=null,Error(r(185));for(var t=e.return;t!==null;)e=t,t=e.return;return e.tag===3?e.stateNode:null}var Fi={};function vb(e,t,n,i){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.refCleanup=this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=i,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function ta(e,t,n,i){return new vb(e,t,n,i)}function ec(e){return e=e.prototype,!(!e||!e.isReactComponent)}function Ya(e,t){var n=e.alternate;return n===null?(n=ta(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&65011712,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.refCleanup=e.refCleanup,n}function kh(e,t){e.flags&=65011714;var n=e.alternate;return n===null?(e.childLanes=0,e.lanes=t,e.child=null,e.subtreeFlags=0,e.memoizedProps=null,e.memoizedState=null,e.updateQueue=null,e.dependencies=null,e.stateNode=null):(e.childLanes=n.childLanes,e.lanes=n.lanes,e.child=n.child,e.subtreeFlags=0,e.deletions=null,e.memoizedProps=n.memoizedProps,e.memoizedState=n.memoizedState,e.updateQueue=n.updateQueue,e.type=n.type,t=n.dependencies,e.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext}),e}function Jo(e,t,n,i,l,c){var m=0;if(i=e,typeof e=="function")ec(e)&&(m=1);else if(typeof e=="string")m=xw(e,n,Z.current)?26:e==="html"||e==="head"||e==="body"?27:5;else e:switch(e){case Q:return e=ta(31,n,t,l),e.elementType=Q,e.lanes=c,e;case D:return li(n.children,l,c,t);case x:m=8,l|=24;break;case C:return e=ta(12,n,t,l|2),e.elementType=C,e.lanes=c,e;case te:return e=ta(13,n,t,l),e.elementType=te,e.lanes=c,e;case $:return e=ta(19,n,t,l),e.elementType=$,e.lanes=c,e;default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case U:m=10;break e;case G:m=9;break e;case I:m=11;break e;case V:m=14;break e;case O:m=16,i=null;break e}m=29,n=Error(r(130,e===null?"null":typeof e,"")),i=null}return t=ta(m,n,t,l),t.elementType=e,t.type=i,t.lanes=c,t}function li(e,t,n,i){return e=ta(7,e,i,t),e.lanes=n,e}function tc(e,t,n){return e=ta(6,e,null,t),e.lanes=n,e}function Sh(e){var t=ta(18,null,null,0);return t.stateNode=e,t}function ac(e,t,n){return t=ta(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}var xh=new WeakMap;function ma(e,t){if(typeof e=="object"&&e!==null){var n=xh.get(e);return n!==void 0?n:(t={value:e,source:t,stack:la(t)},xh.set(e,t),t)}return{value:e,source:t,stack:la(t)}}var Ki=[],Xi=0,er=null,Is=0,fa=[],pa=0,gn=null,Da=1,Na="";function Wa(e,t){Ki[Xi++]=Is,Ki[Xi++]=er,er=e,Is=t}function Ah(e,t,n){fa[pa++]=Da,fa[pa++]=Na,fa[pa++]=gn,gn=e;var i=Da;e=Na;var l=32-Pt(i)-1;i&=~(1<<l),n+=1;var c=32-Pt(t)+l;if(30<c){var m=l-l%5;c=(i&(1<<m)-1).toString(32),i>>=m,l-=m,Da=1<<32-Pt(t)+l|n<<l|i,Na=c+e}else Da=1<<c|n<<l|i,Na=e}function nc(e){e.return!==null&&(Wa(e,1),Ah(e,1,0))}function ic(e){for(;e===er;)er=Ki[--Xi],Ki[Xi]=null,Is=Ki[--Xi],Ki[Xi]=null;for(;e===gn;)gn=fa[--pa],fa[pa]=null,Na=fa[--pa],fa[pa]=null,Da=fa[--pa],fa[pa]=null}function Th(e,t){fa[pa++]=Da,fa[pa++]=Na,fa[pa++]=gn,Da=t.id,Na=t.overflow,gn=e}var _t=null,We=null,De=!1,yn=null,ga=!1,sc=Error(r(519));function vn(e){var t=Error(r(418,1<arguments.length&&arguments[1]!==void 0&&arguments[1]?"text":"HTML",""));throw js(ma(t,e)),sc}function Mh(e){var t=e.stateNode,n=e.type,i=e.memoizedProps;switch(t[Ct]=e,t[Ut]=i,n){case"dialog":_e("cancel",t),_e("close",t);break;case"iframe":case"object":case"embed":_e("load",t);break;case"video":case"audio":for(n=0;n<lo.length;n++)_e(lo[n],t);break;case"source":_e("error",t);break;case"img":case"image":case"link":_e("error",t),_e("load",t);break;case"details":_e("toggle",t);break;case"input":_e("invalid",t),Id(t,i.value,i.defaultValue,i.checked,i.defaultChecked,i.type,i.name,!0);break;case"select":_e("invalid",t);break;case"textarea":_e("invalid",t),Bd(t,i.value,i.defaultValue,i.children)}n=i.children,typeof n!="string"&&typeof n!="number"&&typeof n!="bigint"||t.textContent===""+n||i.suppressHydrationWarning===!0||Gf(t.textContent,n)?(i.popover!=null&&(_e("beforetoggle",t),_e("toggle",t)),i.onScroll!=null&&_e("scroll",t),i.onScrollEnd!=null&&_e("scrollend",t),i.onClick!=null&&(t.onclick=Va),t=!0):t=!1,t||vn(e,!0)}function Ch(e){for(_t=e.return;_t;)switch(_t.tag){case 5:case 31:case 13:ga=!1;return;case 27:case 3:ga=!0;return;default:_t=_t.return}}function Qi(e){if(e!==_t)return!1;if(!De)return Ch(e),De=!0,!1;var t=e.tag,n;if((n=t!==3&&t!==27)&&((n=t===5)&&(n=e.type,n=!(n!=="form"&&n!=="button")||xu(e.type,e.memoizedProps)),n=!n),n&&We&&vn(e),Ch(e),t===13){if(e=e.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(r(317));We=Jf(e)}else if(t===31){if(e=e.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(r(317));We=Jf(e)}else t===27?(t=We,Nn(e.type)?(e=_u,_u=null,We=e):We=t):We=_t?va(e.stateNode.nextSibling):null;return!0}function ci(){We=_t=null,De=!1}function oc(){var e=yn;return e!==null&&(Ft===null?Ft=e:Ft.push.apply(Ft,e),yn=null),e}function js(e){yn===null?yn=[e]:yn.push(e)}var rc=_(null),ui=null,Fa=null;function bn(e,t,n){W(rc,t._currentValue),t._currentValue=n}function Ka(e){e._currentValue=rc.current,B(rc)}function lc(e,t,n){for(;e!==null;){var i=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,i!==null&&(i.childLanes|=t)):i!==null&&(i.childLanes&t)!==t&&(i.childLanes|=t),e===n)break;e=e.return}}function cc(e,t,n,i){var l=e.child;for(l!==null&&(l.return=e);l!==null;){var c=l.dependencies;if(c!==null){var m=l.child;c=c.firstContext;e:for(;c!==null;){var v=c;c=l;for(var A=0;A<t.length;A++)if(v.context===t[A]){c.lanes|=n,v=c.alternate,v!==null&&(v.lanes|=n),lc(c.return,n,e),i||(m=null);break e}c=v.next}}else if(l.tag===18){if(m=l.return,m===null)throw Error(r(341));m.lanes|=n,c=m.alternate,c!==null&&(c.lanes|=n),lc(m,n,e),m=null}else m=l.child;if(m!==null)m.return=l;else for(m=l;m!==null;){if(m===e){m=null;break}if(l=m.sibling,l!==null){l.return=m.return,m=l;break}m=m.return}l=m}}function Zi(e,t,n,i){e=null;for(var l=t,c=!1;l!==null;){if(!c){if((l.flags&524288)!==0)c=!0;else if((l.flags&262144)!==0)break}if(l.tag===10){var m=l.alternate;if(m===null)throw Error(r(387));if(m=m.memoizedProps,m!==null){var v=l.type;ea(l.pendingProps.value,m.value)||(e!==null?e.push(v):e=[v])}}else if(l===we.current){if(m=l.alternate,m===null)throw Error(r(387));m.memoizedState.memoizedState!==l.memoizedState.memoizedState&&(e!==null?e.push(fo):e=[fo])}l=l.return}e!==null&&cc(t,e,n,i),t.flags|=262144}function tr(e){for(e=e.firstContext;e!==null;){if(!ea(e.context._currentValue,e.memoizedValue))return!0;e=e.next}return!1}function di(e){ui=e,Fa=null,e=e.dependencies,e!==null&&(e.firstContext=null)}function Rt(e){return _h(ui,e)}function ar(e,t){return ui===null&&di(e),_h(e,t)}function _h(e,t){var n=t._currentValue;if(t={context:t,memoizedValue:n,next:null},Fa===null){if(e===null)throw Error(r(308));Fa=t,e.dependencies={lanes:0,firstContext:t},e.flags|=524288}else Fa=Fa.next=t;return n}var bb=typeof AbortController<"u"?AbortController:function(){var e=[],t=this.signal={aborted:!1,addEventListener:function(n,i){e.push(i)}};this.abort=function(){t.aborted=!0,e.forEach(function(n){return n()})}},wb=a.unstable_scheduleCallback,kb=a.unstable_NormalPriority,rt={$$typeof:U,Consumer:null,Provider:null,_currentValue:null,_currentValue2:null,_threadCount:0};function uc(){return{controller:new bb,data:new Map,refCount:0}}function Bs(e){e.refCount--,e.refCount===0&&wb(kb,function(){e.controller.abort()})}var Us=null,dc=0,$i=0,Ji=null;function Sb(e,t){if(Us===null){var n=Us=[];dc=0,$i=fu(),Ji={status:"pending",value:void 0,then:function(i){n.push(i)}}}return dc++,t.then(Rh,Rh),t}function Rh(){if(--dc===0&&Us!==null){Ji!==null&&(Ji.status="fulfilled");var e=Us;Us=null,$i=0,Ji=null;for(var t=0;t<e.length;t++)(0,e[t])()}}function xb(e,t){var n=[],i={status:"pending",value:null,reason:null,then:function(l){n.push(l)}};return e.then(function(){i.status="fulfilled",i.value=t;for(var l=0;l<n.length;l++)(0,n[l])(t)},function(l){for(i.status="rejected",i.reason=l,l=0;l<n.length;l++)(0,n[l])(void 0)}),i}var Eh=z.S;z.S=function(e,t){ff=bt(),typeof t=="object"&&t!==null&&typeof t.then=="function"&&Sb(e,t),Eh!==null&&Eh(e,t)};var hi=_(null);function hc(){var e=hi.current;return e!==null?e:Ge.pooledCache}function nr(e,t){t===null?W(hi,hi.current):W(hi,t.pool)}function Dh(){var e=hc();return e===null?null:{parent:rt._currentValue,pool:e}}var es=Error(r(460)),mc=Error(r(474)),ir=Error(r(542)),sr={then:function(){}};function Nh(e){return e=e.status,e==="fulfilled"||e==="rejected"}function zh(e,t,n){switch(n=e[n],n===void 0?e.push(t):n!==t&&(t.then(Va,Va),t=n),t.status){case"fulfilled":return t.value;case"rejected":throw e=t.reason,qh(e),e;default:if(typeof t.status=="string")t.then(Va,Va);else{if(e=Ge,e!==null&&100<e.shellSuspendCounter)throw Error(r(482));e=t,e.status="pending",e.then(function(i){if(t.status==="pending"){var l=t;l.status="fulfilled",l.value=i}},function(i){if(t.status==="pending"){var l=t;l.status="rejected",l.reason=i}})}switch(t.status){case"fulfilled":return t.value;case"rejected":throw e=t.reason,qh(e),e}throw fi=t,es}}function mi(e){try{var t=e._init;return t(e._payload)}catch(n){throw n!==null&&typeof n=="object"&&typeof n.then=="function"?(fi=n,es):n}}var fi=null;function Ph(){if(fi===null)throw Error(r(459));var e=fi;return fi=null,e}function qh(e){if(e===es||e===ir)throw Error(r(483))}var ts=null,Vs=0;function or(e){var t=Vs;return Vs+=1,ts===null&&(ts=[]),zh(ts,e,t)}function Gs(e,t){t=t.props.ref,e.ref=t!==void 0?t:null}function rr(e,t){throw t.$$typeof===w?Error(r(525)):(e=Object.prototype.toString.call(t),Error(r(31,e==="[object Object]"?"object with keys {"+Object.keys(t).join(", ")+"}":e)))}function Lh(e){function t(N,R){if(e){var P=N.deletions;P===null?(N.deletions=[R],N.flags|=16):P.push(R)}}function n(N,R){if(!e)return null;for(;R!==null;)t(N,R),R=R.sibling;return null}function i(N){for(var R=new Map;N!==null;)N.key!==null?R.set(N.key,N):R.set(N.index,N),N=N.sibling;return R}function l(N,R){return N=Ya(N,R),N.index=0,N.sibling=null,N}function c(N,R,P){return N.index=P,e?(P=N.alternate,P!==null?(P=P.index,P<R?(N.flags|=67108866,R):P):(N.flags|=67108866,R)):(N.flags|=1048576,R)}function m(N){return e&&N.alternate===null&&(N.flags|=67108866),N}function v(N,R,P,Y){return R===null||R.tag!==6?(R=tc(P,N.mode,Y),R.return=N,R):(R=l(R,P),R.return=N,R)}function A(N,R,P,Y){var me=P.type;return me===D?j(N,R,P.props.children,Y,P.key):R!==null&&(R.elementType===me||typeof me=="object"&&me!==null&&me.$$typeof===O&&mi(me)===R.type)?(R=l(R,P.props),Gs(R,P),R.return=N,R):(R=Jo(P.type,P.key,P.props,null,N.mode,Y),Gs(R,P),R.return=N,R)}function q(N,R,P,Y){return R===null||R.tag!==4||R.stateNode.containerInfo!==P.containerInfo||R.stateNode.implementation!==P.implementation?(R=ac(P,N.mode,Y),R.return=N,R):(R=l(R,P.children||[]),R.return=N,R)}function j(N,R,P,Y,me){return R===null||R.tag!==7?(R=li(P,N.mode,Y,me),R.return=N,R):(R=l(R,P),R.return=N,R)}
vendor: 5,246 bytes, line 9
9function F(N,R,P){if(typeof R=="string"&&R!==""||typeof R=="number"||typeof R=="bigint")return R=tc(""+R,N.mode,P),R.return=N,R;if(typeof R=="object"&&R!==null){switch(R.$$typeof){case S:return P=Jo(R.type,R.key,R.props,null,N.mode,P),Gs(P,R),P.return=N,P;case M:return R=ac(R,N.mode,P),R.return=N,R;case O:return R=mi(R),F(N,R,P)}if(Ae(R)||ge(R))return R=li(R,N.mode,P,null),R.return=N,R;if(typeof R.then=="function")return F(N,or(R),P);if(R.$$typeof===U)return F(N,ar(N,R),P);rr(N,R)}return null}function L(N,R,P,Y){var me=R!==null?R.key:null;if(typeof P=="string"&&P!==""||typeof P=="number"||typeof P=="bigint")return me!==null?null:v(N,R,""+P,Y);if(typeof P=="object"&&P!==null){switch(P.$$typeof){case S:return P.key===me?A(N,R,P,Y):null;case M:return P.key===me?q(N,R,P,Y):null;case O:return P=mi(P),L(N,R,P,Y)}if(Ae(P)||ge(P))return me!==null?null:j(N,R,P,Y,null);if(typeof P.then=="function")return L(N,R,or(P),Y);if(P.$$typeof===U)return L(N,R,ar(N,P),Y);rr(N,P)}return null}function H(N,R,P,Y,me){if(typeof Y=="string"&&Y!==""||typeof Y=="number"||typeof Y=="bigint")return N=N.get(P)||null,v(R,N,""+Y,me);if(typeof Y=="object"&&Y!==null){switch(Y.$$typeof){case S:return N=N.get(Y.key===null?P:Y.key)||null,A(R,N,Y,me);case M:return N=N.get(Y.key===null?P:Y.key)||null,q(R,N,Y,me);case O:return Y=mi(Y),H(N,R,P,Y,me)}if(Ae(Y)||ge(Y))return N=N.get(P)||null,j(R,N,Y,me,null);if(typeof Y.then=="function")return H(N,R,P,or(Y),me);if(Y.$$typeof===U)return H(N,R,P,ar(R,Y),me);rr(R,Y)}return null}function re(N,R,P,Y){for(var me=null,Ne=null,de=R,Te=R=0,Ee=null;de!==null&&Te<P.length;Te++){de.index>Te?(Ee=de,de=null):Ee=de.sibling;var ze=L(N,de,P[Te],Y);if(ze===null){de===null&&(de=Ee);break}e&&de&&ze.alternate===null&&t(N,de),R=c(ze,R,Te),Ne===null?me=ze:Ne.sibling=ze,Ne=ze,de=Ee}if(Te===P.length)return n(N,de),De&&Wa(N,Te),me;if(de===null){for(;Te<P.length;Te++)de=F(N,P[Te],Y),de!==null&&(R=c(de,R,Te),Ne===null?me=de:Ne.sibling=de,Ne=de);return De&&Wa(N,Te),me}for(de=i(de);Te<P.length;Te++)Ee=H(de,N,Te,P[Te],Y),Ee!==null&&(e&&Ee.alternate!==null&&de.delete(Ee.key===null?Te:Ee.key),R=c(Ee,R,Te),Ne===null?me=Ee:Ne.sibling=Ee,Ne=Ee);return e&&de.forEach(function(On){return t(N,On)}),De&&Wa(N,Te),me}function pe(N,R,P,Y){if(P==null)throw Error(r(151));for(var me=null,Ne=null,de=R,Te=R=0,Ee=null,ze=P.next();de!==null&&!ze.done;Te++,ze=P.next()){de.index>Te?(Ee=de,de=null):Ee=de.sibling;var On=L(N,de,ze.value,Y);if(On===null){de===null&&(de=Ee);break}e&&de&&On.alternate===null&&t(N,de),R=c(On,R,Te),Ne===null?me=On:Ne.sibling=On,Ne=On,de=Ee}if(ze.done)return n(N,de),De&&Wa(N,Te),me;if(de===null){for(;!ze.done;Te++,ze=P.next())ze=F(N,ze.value,Y),ze!==null&&(R=c(ze,R,Te),Ne===null?me=ze:Ne.sibling=ze,Ne=ze);return De&&Wa(N,Te),me}for(de=i(de);!ze.done;Te++,ze=P.next())ze=H(de,N,Te,ze.value,Y),ze!==null&&(e&&ze.alternate!==null&&de.delete(ze.key===null?Te:ze.key),R=c(ze,R,Te),Ne===null?me=ze:Ne.sibling=ze,Ne=ze);return e&&de.forEach(function(Pw){return t(N,Pw)}),De&&Wa(N,Te),me}function Ve(N,R,P,Y){if(typeof P=="object"&&P!==null&&P.type===D&&P.key===null&&(P=P.props.children),typeof P=="object"&&P!==null){switch(P.$$typeof){case S:e:{for(var me=P.key;R!==null;){if(R.key===me){if(me=P.type,me===D){if(R.tag===7){n(N,R.sibling),Y=l(R,P.props.children),Y.return=N,N=Y;break e}}else if(R.elementType===me||typeof me=="object"&&me!==null&&me.$$typeof===O&&mi(me)===R.type){n(N,R.sibling),Y=l(R,P.props),Gs(Y,P),Y.return=N,N=Y;break e}n(N,R);break}else t(N,R);R=R.sibling}P.type===D?(Y=li(P.props.children,N.mode,Y,P.key),Y.return=N,N=Y):(Y=Jo(P.type,P.key,P.props,null,N.mode,Y),Gs(Y,P),Y.return=N,N=Y)}return m(N);case M:e:{for(me=P.key;R!==null;){if(R.key===me)if(R.tag===4&&R.stateNode.containerInfo===P.containerInfo&&R.stateNode.implementation===P.implementation){n(N,R.sibling),Y=l(R,P.children||[]),Y.return=N,N=Y;break e}else{n(N,R);break}else t(N,R);R=R.sibling}Y=ac(P,N.mode,Y),Y.return=N,N=Y}return m(N);case O:return P=mi(P),Ve(N,R,P,Y)}if(Ae(P))return re(N,R,P,Y);if(ge(P)){if(me=ge(P),typeof me!="function")throw Error(r(150));return P=me.call(P),pe(N,R,P,Y)}if(typeof P.then=="function")return Ve(N,R,or(P),Y);if(P.$$typeof===U)return Ve(N,R,ar(N,P),Y);rr(N,P)}return typeof P=="string"&&P!==""||typeof P=="number"||typeof P=="bigint"?(P=""+P,R!==null&&R.tag===6?(n(N,R.sibling),Y=l(R,P),Y.return=N,N=Y):(n(N,R),Y=tc(P,N.mode,Y),Y.return=N,N=Y),m(N)):n(N,R)}return function(N,R,P,Y){try{Vs=0;var me=Ve(N,R,P,Y);return ts=null,me}catch(de){if(de===es||de===ir)throw de;var Ne=ta(29,de,null,N.mode);return Ne.lanes=Y,Ne.return=N,Ne}}}var pi=Lh(!0),Oh=Lh(!1),wn=!1;function fc(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function pc(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function kn(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function Sn(e,t,n){var i=e.updateQueue;if(i===null)return null;if(i=i.shared,(Le&2)!==0){var l=i.pending;return l===null?t.next=t:(t.next=l.next,l.next=t),i.pending=t,t=$o(e),wh(e,null,n),t}return Zo(e,i,t,n),$o(e)}
vendor: 4,525 bytes, line 9
9function Ys(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,(n&4194048)!==0)){var i=t.lanes;i&=e.pendingLanes,n|=i,t.lanes=n,jt(e,n)}}function gc(e,t){var n=e.updateQueue,i=e.alternate;if(i!==null&&(i=i.updateQueue,n===i)){var l=null,c=null;if(n=n.firstBaseUpdate,n!==null){do{var m={lane:n.lane,tag:n.tag,payload:n.payload,callback:null,next:null};c===null?l=c=m:c=c.next=m,n=n.next}while(n!==null);c===null?l=c=t:c=c.next=t}else l=c=t;n={baseState:i.baseState,firstBaseUpdate:l,lastBaseUpdate:c,shared:i.shared,callbacks:i.callbacks},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}var yc=!1;function Ws(){if(yc){var e=Ji;if(e!==null)throw e}}function Fs(e,t,n,i){yc=!1;var l=e.updateQueue;wn=!1;var c=l.firstBaseUpdate,m=l.lastBaseUpdate,v=l.shared.pending;if(v!==null){l.shared.pending=null;var A=v,q=A.next;A.next=null,m===null?c=q:m.next=q,m=A;var j=e.alternate;j!==null&&(j=j.updateQueue,v=j.lastBaseUpdate,v!==m&&(v===null?j.firstBaseUpdate=q:v.next=q,j.lastBaseUpdate=A))}if(c!==null){var F=l.baseState;m=0,j=q=A=null,v=c;do{var L=v.lane&-536870913,H=L!==v.lane;if(H?(Re&L)===L:(i&L)===L){L!==0&&L===$i&&(yc=!0),j!==null&&(j=j.next={lane:0,tag:v.tag,payload:v.payload,callback:null,next:null});e:{var re=e,pe=v;L=t;var Ve=n;switch(pe.tag){case 1:if(re=pe.payload,typeof re=="function"){F=re.call(Ve,F,L);break e}F=re;break e;case 3:re.flags=re.flags&-65537|128;case 0:if(re=pe.payload,L=typeof re=="function"?re.call(Ve,F,L):re,L==null)break e;F=f({},F,L);break e;case 2:wn=!0}}L=v.callback,L!==null&&(e.flags|=64,H&&(e.flags|=8192),H=l.callbacks,H===null?l.callbacks=[L]:H.push(L))}else H={lane:L,tag:v.tag,payload:v.payload,callback:v.callback,next:null},j===null?(q=j=H,A=F):j=j.next=H,m|=L;if(v=v.next,v===null){if(v=l.shared.pending,v===null)break;H=v,v=H.next,H.next=null,l.lastBaseUpdate=H,l.shared.pending=null}}while(!0);j===null&&(A=F),l.baseState=A,l.firstBaseUpdate=q,l.lastBaseUpdate=j,c===null&&(l.shared.lanes=0),Cn|=m,e.lanes=m,e.memoizedState=F}}function Hh(e,t){if(typeof e!="function")throw Error(r(191,e));e.call(t)}function Ih(e,t){var n=e.callbacks;if(n!==null)for(e.callbacks=null,e=0;e<n.length;e++)Hh(n[e],t)}var as=_(null),lr=_(0);function jh(e,t){e=nn,W(lr,e),W(as,t),nn=e|t.baseLanes}function vc(){W(lr,nn),W(as,as.current)}function bc(){nn=lr.current,B(as),B(lr)}var aa=_(null),ya=null;function xn(e){var t=e.alternate;W(nt,nt.current&1),W(aa,e),ya===null&&(t===null||as.current!==null||t.memoizedState!==null)&&(ya=e)}function wc(e){W(nt,nt.current),W(aa,e),ya===null&&(ya=e)}function Bh(e){e.tag===22?(W(nt,nt.current),W(aa,e),ya===null&&(ya=e)):An()}function An(){W(nt,nt.current),W(aa,aa.current)}function na(e){B(aa),ya===e&&(ya=null),B(nt)}var nt=_(0);function cr(e){for(var t=e;t!==null;){if(t.tag===13){var n=t.memoizedState;if(n!==null&&(n=n.dehydrated,n===null||Mu(n)||Cu(n)))return t}else if(t.tag===19&&(t.memoizedProps.revealOrder==="forwards"||t.memoizedProps.revealOrder==="backwards"||t.memoizedProps.revealOrder==="unstable_legacy-backwards"||t.memoizedProps.revealOrder==="together")){if((t.flags&128)!==0)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var Xa=0,xe=null,Be=null,lt=null,ur=!1,ns=!1,gi=!1,dr=0,Ks=0,is=null,Ab=0;function tt(){throw Error(r(321))}function kc(e,t){if(t===null)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!ea(e[n],t[n]))return!1;return!0}function Sc(e,t,n,i,l,c){return Xa=c,xe=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,z.H=e===null||e.memoizedState===null?Am:Oc,gi=!1,c=n(i,l),gi=!1,ns&&(c=Vh(t,n,i,l)),Uh(e),c}function Uh(e){z.H=Zs;var t=Be!==null&&Be.next!==null;if(Xa=0,lt=Be=xe=null,ur=!1,Ks=0,is=null,t)throw Error(r(300));e===null||ct||(e=e.dependencies,e!==null&&tr(e)&&(ct=!0))}function Vh(e,t,n,i){xe=e;var l=0;do{if(ns&&(is=null),Ks=0,ns=!1,25<=l)throw Error(r(301));if(l+=1,lt=Be=null,e.updateQueue!=null){var c=e.updateQueue;c.lastEffect=null,c.events=null,c.stores=null,c.memoCache!=null&&(c.memoCache.index=0)}z.H=Tm,c=t(n,i)}while(ns);return c}function Tb(){var e=z.H,t=e.useState()[0];return t=typeof t.then=="function"?Xs(t):t,e=e.useState()[0],(Be!==null?Be.memoizedState:null)!==e&&(xe.flags|=1024),t}function xc(){var e=dr!==0;return dr=0,e}function Ac(e,t,n){t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~n}function Tc(e){if(ur){for(e=e.memoizedState;e!==null;){var t=e.queue;
vendor: 4,776 bytes, line 9
9t!==null&&(t.pending=null),e=e.next}ur=!1}Xa=0,lt=Be=xe=null,ns=!1,Ks=dr=0,is=null}function Ht(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return lt===null?xe.memoizedState=lt=e:lt=lt.next=e,lt}function it(){if(Be===null){var e=xe.alternate;e=e!==null?e.memoizedState:null}else e=Be.next;var t=lt===null?xe.memoizedState:lt.next;if(t!==null)lt=t,Be=e;else{if(e===null)throw xe.alternate===null?Error(r(467)):Error(r(310));Be=e,e={memoizedState:Be.memoizedState,baseState:Be.baseState,baseQueue:Be.baseQueue,queue:Be.queue,next:null},lt===null?xe.memoizedState=lt=e:lt=lt.next=e}return lt}function hr(){return{lastEffect:null,events:null,stores:null,memoCache:null}}function Xs(e){var t=Ks;return Ks+=1,is===null&&(is=[]),e=zh(is,e,t),t=xe,(lt===null?t.memoizedState:lt.next)===null&&(t=t.alternate,z.H=t===null||t.memoizedState===null?Am:Oc),e}function mr(e){if(e!==null&&typeof e=="object"){if(typeof e.then=="function")return Xs(e);if(e.$$typeof===U)return Rt(e)}throw Error(r(438,String(e)))}function Mc(e){var t=null,n=xe.updateQueue;if(n!==null&&(t=n.memoCache),t==null){var i=xe.alternate;i!==null&&(i=i.updateQueue,i!==null&&(i=i.memoCache,i!=null&&(t={data:i.data.map(function(l){return l.slice()}),index:0})))}if(t==null&&(t={data:[],index:0}),n===null&&(n=hr(),xe.updateQueue=n),n.memoCache=t,n=t.data[t.index],n===void 0)for(n=t.data[t.index]=Array(e),i=0;i<e;i++)n[i]=he;return t.index++,n}function Qa(e,t){return typeof t=="function"?t(e):t}function fr(e){var t=it();return Cc(t,Be,e)}function Cc(e,t,n){var i=e.queue;if(i===null)throw Error(r(311));i.lastRenderedReducer=n;var l=e.baseQueue,c=i.pending;if(c!==null){if(l!==null){var m=l.next;l.next=c.next,c.next=m}t.baseQueue=l=c,i.pending=null}if(c=e.baseState,l===null)e.memoizedState=c;else{t=l.next;var v=m=null,A=null,q=t,j=!1;do{var F=q.lane&-536870913;if(F!==q.lane?(Re&F)===F:(Xa&F)===F){var L=q.revertLane;if(L===0)A!==null&&(A=A.next={lane:0,revertLane:0,gesture:null,action:q.action,hasEagerState:q.hasEagerState,eagerState:q.eagerState,next:null}),F===$i&&(j=!0);else if((Xa&L)===L){q=q.next,L===$i&&(j=!0);continue}else F={lane:0,revertLane:q.revertLane,gesture:null,action:q.action,hasEagerState:q.hasEagerState,eagerState:q.eagerState,next:null},A===null?(v=A=F,m=c):A=A.next=F,xe.lanes|=L,Cn|=L;F=q.action,gi&&n(c,F),c=q.hasEagerState?q.eagerState:n(c,F)}else L={lane:F,revertLane:q.revertLane,gesture:q.gesture,action:q.action,hasEagerState:q.hasEagerState,eagerState:q.eagerState,next:null},A===null?(v=A=L,m=c):A=A.next=L,xe.lanes|=F,Cn|=F;q=q.next}while(q!==null&&q!==t);if(A===null?m=c:A.next=v,!ea(c,e.memoizedState)&&(ct=!0,j&&(n=Ji,n!==null)))throw n;e.memoizedState=c,e.baseState=m,e.baseQueue=A,i.lastRenderedState=c}return l===null&&(i.lanes=0),[e.memoizedState,i.dispatch]}function _c(e){var t=it(),n=t.queue;if(n===null)throw Error(r(311));n.lastRenderedReducer=e;var i=n.dispatch,l=n.pending,c=t.memoizedState;if(l!==null){n.pending=null;var m=l=l.next;do c=e(c,m.action),m=m.next;while(m!==l);ea(c,t.memoizedState)||(ct=!0),t.memoizedState=c,t.baseQueue===null&&(t.baseState=c),n.lastRenderedState=c}return[c,i]}function Gh(e,t,n){var i=xe,l=it(),c=De;if(c){if(n===void 0)throw Error(r(407));n=n()}else n=t();var m=!ea((Be||l).memoizedState,n);if(m&&(l.memoizedState=n,ct=!0),l=l.queue,Dc(Fh.bind(null,i,l,e),[e]),l.getSnapshot!==t||m||lt!==null&&lt.memoizedState.tag&1){if(i.flags|=2048,ss(9,{destroy:void 0},Wh.bind(null,i,l,n,t),null),Ge===null)throw Error(r(349));c||(Xa&127)!==0||Yh(i,t,n)}return n}function Yh(e,t,n){e.flags|=16384,e={getSnapshot:t,value:n},t=xe.updateQueue,t===null?(t=hr(),xe.updateQueue=t,t.stores=[e]):(n=t.stores,n===null?t.stores=[e]:n.push(e))}function Wh(e,t,n,i){t.value=n,t.getSnapshot=i,Kh(t)&&Xh(e)}function Fh(e,t,n){return n(function(){Kh(t)&&Xh(e)})}function Kh(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!ea(e,n)}catch{return!0}}function Xh(e){var t=ri(e,2);t!==null&&Kt(t,e,2)}function Rc(e){var t=Ht();if(typeof e=="function"){var n=e;if(e=n(),gi){ka(!0);try{n()}finally{ka(!1)}}}return t.memoizedState=t.baseState=e,t.queue={pending:null,lanes:0,dispatch:null,lastRenderedReducer:Qa,lastRenderedState:e},t}function Qh(e,t,n,i){return e.baseState=n,Cc(e,Be,typeof i=="function"?i:Qa)}function Mb(e,t,n,i,l){if(yr(e))throw Error(r(485));if(e=t.action,e!==null){var c={payload:l,action:e,next:null,isTransition:!0,status:"pending",value:null,reason:null,listeners:[],then:function(m){c.listeners.push(m)}};z.T!==null?n(!0):c.isTransition=!1,i(c),n=t.pending,n===null?(c.next=t.pending=c,Zh(t,c)):(c.next=n.next,t.pending=n.next=c)}}function Zh(e,t){var n=t.action,i=t.payload,l=e.state;if(t.isTransition){var c=z.T,m={};z.T=m;try{var v=n(l,i),A=z.S;A!==null&&A(m,v),$h(e,t,v)}catch(q){Ec(e,t,q)}
vendor: 7,301 bytes, line 9
9finally{c!==null&&m.types!==null&&(c.types=m.types),z.T=c}}else try{c=n(l,i),$h(e,t,c)}catch(q){Ec(e,t,q)}}function $h(e,t,n){n!==null&&typeof n=="object"&&typeof n.then=="function"?n.then(function(i){Jh(e,t,i)},function(i){return Ec(e,t,i)}):Jh(e,t,n)}function Jh(e,t,n){t.status="fulfilled",t.value=n,em(t),e.state=n,t=e.pending,t!==null&&(n=t.next,n===t?e.pending=null:(n=n.next,t.next=n,Zh(e,n)))}function Ec(e,t,n){var i=e.pending;if(e.pending=null,i!==null){i=i.next;do t.status="rejected",t.reason=n,em(t),t=t.next;while(t!==i)}e.action=null}function em(e){e=e.listeners;for(var t=0;t<e.length;t++)(0,e[t])()}function tm(e,t){return t}function am(e,t){if(De){var n=Ge.formState;if(n!==null){e:{var i=xe;if(De){if(We){t:{for(var l=We,c=ga;l.nodeType!==8;){if(!c){l=null;break t}if(l=va(l.nextSibling),l===null){l=null;break t}}c=l.data,l=c==="F!"||c==="F"?l:null}if(l){We=va(l.nextSibling),i=l.data==="F!";break e}}vn(i)}i=!1}i&&(t=n[0])}}return n=Ht(),n.memoizedState=n.baseState=t,i={pending:null,lanes:0,dispatch:null,lastRenderedReducer:tm,lastRenderedState:t},n.queue=i,n=km.bind(null,xe,i),i.dispatch=n,i=Rc(!1),c=Lc.bind(null,xe,!1,i.queue),i=Ht(),l={state:t,dispatch:null,action:e,pending:null},i.queue=l,n=Mb.bind(null,xe,l,c,n),l.dispatch=n,i.memoizedState=e,[t,n,!1]}function nm(e){var t=it();return im(t,Be,e)}function im(e,t,n){if(t=Cc(e,t,tm)[0],e=fr(Qa)[0],typeof t=="object"&&t!==null&&typeof t.then=="function")try{var i=Xs(t)}catch(m){throw m===es?ir:m}else i=t;t=it();var l=t.queue,c=l.dispatch;return n!==t.memoizedState&&(xe.flags|=2048,ss(9,{destroy:void 0},Cb.bind(null,l,n),null)),[i,c,e]}function Cb(e,t){e.action=t}function sm(e){var t=it(),n=Be;if(n!==null)return im(t,n,e);it(),t=t.memoizedState,n=it();var i=n.queue.dispatch;return n.memoizedState=e,[t,i,!1]}function ss(e,t,n,i){return e={tag:e,create:n,deps:i,inst:t,next:null},t=xe.updateQueue,t===null&&(t=hr(),xe.updateQueue=t),n=t.lastEffect,n===null?t.lastEffect=e.next=e:(i=n.next,n.next=e,e.next=i,t.lastEffect=e),e}function om(){return it().memoizedState}function pr(e,t,n,i){var l=Ht();xe.flags|=e,l.memoizedState=ss(1|t,{destroy:void 0},n,i===void 0?null:i)}function gr(e,t,n,i){var l=it();i=i===void 0?null:i;var c=l.memoizedState.inst;Be!==null&&i!==null&&kc(i,Be.memoizedState.deps)?l.memoizedState=ss(t,c,n,i):(xe.flags|=e,l.memoizedState=ss(1|t,c,n,i))}function rm(e,t){pr(8390656,8,e,t)}function Dc(e,t){gr(2048,8,e,t)}function _b(e){xe.flags|=4;var t=xe.updateQueue;if(t===null)t=hr(),xe.updateQueue=t,t.events=[e];else{var n=t.events;n===null?t.events=[e]:n.push(e)}}function lm(e){var t=it().memoizedState;return _b({ref:t,nextImpl:e}),function(){if((Le&2)!==0)throw Error(r(440));return t.impl.apply(void 0,arguments)}}function cm(e,t){return gr(4,2,e,t)}function um(e,t){return gr(4,4,e,t)}function dm(e,t){if(typeof t=="function"){e=e();var n=t(e);return function(){typeof n=="function"?n():t(null)}}if(t!=null)return e=e(),t.current=e,function(){t.current=null}}function hm(e,t,n){n=n!=null?n.concat([e]):null,gr(4,4,dm.bind(null,t,e),n)}function Nc(){}function mm(e,t){var n=it();t=t===void 0?null:t;var i=n.memoizedState;return t!==null&&kc(t,i[1])?i[0]:(n.memoizedState=[e,t],e)}function fm(e,t){var n=it();t=t===void 0?null:t;var i=n.memoizedState;if(t!==null&&kc(t,i[1]))return i[0];if(i=e(),gi){ka(!0);try{e()}finally{ka(!1)}}return n.memoizedState=[i,t],i}function zc(e,t,n){return n===void 0||(Xa&1073741824)!==0&&(Re&261930)===0?e.memoizedState=t:(e.memoizedState=n,e=gf(),xe.lanes|=e,Cn|=e,n)}function pm(e,t,n,i){return ea(n,t)?n:as.current!==null?(e=zc(e,n,i),ea(e,t)||(ct=!0),e):(Xa&42)===0||(Xa&1073741824)!==0&&(Re&261930)===0?(ct=!0,e.memoizedState=n):(e=gf(),xe.lanes|=e,Cn|=e,t)}function gm(e,t,n,i,l){var c=K.p;K.p=c!==0&&8>c?c:8;var m=z.T,v={};z.T=v,Lc(e,!1,t,n);try{var A=l(),q=z.S;if(q!==null&&q(v,A),A!==null&&typeof A=="object"&&typeof A.then=="function"){var j=xb(A,i);Qs(e,t,j,oa(e))}else Qs(e,t,i,oa(e))}catch(F){Qs(e,t,{then:function(){},status:"rejected",reason:F},oa())}finally{K.p=c,m!==null&&v.types!==null&&(m.types=v.types),z.T=m}}function Rb(){}function Pc(e,t,n,i){if(e.tag!==5)throw Error(r(476));var l=ym(e).queue;gm(e,l,t,oe,n===null?Rb:function(){return vm(e),n(i)})}function ym(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:oe,baseState:oe,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Qa,lastRenderedState:oe},next:null};var n={};return t.next={memoizedState:n,baseState:n,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Qa,lastRenderedState:n},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function vm(e){var t=ym(e);t.next===null&&(t=e.alternate.memoizedState),Qs(e,t.next.queue,{},oa())}function qc(){return Rt(fo)}function bm(){return it().memoizedState}function wm(){return it().memoizedState}function Eb(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var n=oa();e=kn(n);var i=Sn(t,e,n);i!==null&&(Kt(i,t,n),Ys(i,t,n)),t={cache:uc()},e.payload=t;return}t=t.return}}function Db(e,t,n){var i=oa();n={lane:i,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null},yr(e)?Sm(t,n):(n=Jl(e,t,n,i),n!==null&&(Kt(n,e,i),xm(n,t,i)))}function km(e,t,n){var i=oa();Qs(e,t,n,i)}function Qs(e,t,n,i){var l={lane:i,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null};if(yr(e))Sm(t,l);else{var c=e.alternate;if(e.lanes===0&&(c===null||c.lanes===0)&&(c=t.lastRenderedReducer,c!==null))try{var m=t.lastRenderedState,v=c(m,n);if(l.hasEagerState=!0,l.eagerState=v,ea(v,m))return Zo(e,t,l,0),Ge===null&&Qo(),!1}catch{}if(n=Jl(e,t,l,i),n!==null)return Kt(n,e,i),xm(n,t,i),!0}return!1}function Lc(e,t,n,i){if(i={lane:2,revertLane:fu(),gesture:null,action:i,hasEagerState:!1,eagerState:null,next:null},yr(e)){if(t)throw Error(r(479))}else t=Jl(e,n,i,2),t!==null&&Kt(t,e,2)}function yr(e){var t=e.alternate;return e===xe||t!==null&&t===xe}function Sm(e,t){ns=ur=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function xm(e,t,n){if((n&4194048)!==0){var i=t.lanes;i&=e.pendingLanes,n|=i,t.lanes=n,jt(e,n)}}var Zs={readContext:Rt,use:mr,useCallback:tt,useContext:tt,useEffect:tt,useImperativeHandle:tt,useLayoutEffect:tt,useInsertionEffect:tt,useMemo:tt,useReducer:tt,useRef:tt,useState:tt,useDebugValue:tt,useDeferredValue:tt,useTransition:tt,useSyncExternalStore:tt,useId:tt,useHostTransitionStatus:tt,useFormState:tt,useActionState:tt,useOptimistic:tt,useMemoCache:tt,useCacheRefresh:tt};Zs.useEffectEvent=tt;var Am={readContext:Rt,use:mr,useCallback:function(e,t){return Ht().memoizedState=[e,t===void 0?null:t],e},useContext:Rt,useEffect:rm,useImperativeHandle:function(e,t,n){n=n!=null?n.concat([e]):null,pr(4194308,4,dm.bind(null,t,e),n)},useLayoutEffect:function(e,t){return pr(4194308,4,e,t)},useInsertionEffect:function(e,t){pr(4,2,e,t)},useMemo:function(e,t){var n=Ht();t=t===void 0?null:t;var i=e();if(gi){ka(!0);try{e()}finally{ka(!1)}}return n.memoizedState=[i,t],i},useReducer:function(e,t,n){var i=Ht();if(n!==void 0){var l=n(t);if(gi){ka(!0);try{n(t)}finally{ka(!1)}}}else l=t;return i.memoizedState=i.baseState=l,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:l},i.queue=e,e=e.dispatch=Db.bind(null,xe,e),[i.memoizedState,e]}
vendor: 5,961 bytes, line 9
9,useRef:function(e){var t=Ht();return e={current:e},t.memoizedState=e},useState:function(e){e=Rc(e);var t=e.queue,n=km.bind(null,xe,t);return t.dispatch=n,[e.memoizedState,n]},useDebugValue:Nc,useDeferredValue:function(e,t){var n=Ht();return zc(n,e,t)},useTransition:function(){var e=Rc(!1);return e=gm.bind(null,xe,e.queue,!0,!1),Ht().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,n){var i=xe,l=Ht();if(De){if(n===void 0)throw Error(r(407));n=n()}else{if(n=t(),Ge===null)throw Error(r(349));(Re&127)!==0||Yh(i,t,n)}l.memoizedState=n;var c={value:n,getSnapshot:t};return l.queue=c,rm(Fh.bind(null,i,c,e),[e]),i.flags|=2048,ss(9,{destroy:void 0},Wh.bind(null,i,c,n,t),null),n},useId:function(){var e=Ht(),t=Ge.identifierPrefix;if(De){var n=Na,i=Da;n=(i&~(1<<32-Pt(i)-1)).toString(32)+n,t="_"+t+"R_"+n,n=dr++,0<n&&(t+="H"+n.toString(32)),t+="_"}else n=Ab++,t="_"+t+"r_"+n.toString(32)+"_";return e.memoizedState=t},useHostTransitionStatus:qc,useFormState:am,useActionState:am,useOptimistic:function(e){var t=Ht();t.memoizedState=t.baseState=e;var n={pending:null,lanes:0,dispatch:null,lastRenderedReducer:null,lastRenderedState:null};return t.queue=n,t=Lc.bind(null,xe,!0,n),n.dispatch=t,[e,t]},useMemoCache:Mc,useCacheRefresh:function(){return Ht().memoizedState=Eb.bind(null,xe)},useEffectEvent:function(e){var t=Ht(),n={impl:e};return t.memoizedState=n,function(){if((Le&2)!==0)throw Error(r(440));return n.impl.apply(void 0,arguments)}}},Oc={readContext:Rt,use:mr,useCallback:mm,useContext:Rt,useEffect:Dc,useImperativeHandle:hm,useInsertionEffect:cm,useLayoutEffect:um,useMemo:fm,useReducer:fr,useRef:om,useState:function(){return fr(Qa)},useDebugValue:Nc,useDeferredValue:function(e,t){var n=it();return pm(n,Be.memoizedState,e,t)},useTransition:function(){var e=fr(Qa)[0],t=it().memoizedState;return[typeof e=="boolean"?e:Xs(e),t]},useSyncExternalStore:Gh,useId:bm,useHostTransitionStatus:qc,useFormState:nm,useActionState:nm,useOptimistic:function(e,t){var n=it();return Qh(n,Be,e,t)},useMemoCache:Mc,useCacheRefresh:wm};Oc.useEffectEvent=lm;var Tm={readContext:Rt,use:mr,useCallback:mm,useContext:Rt,useEffect:Dc,useImperativeHandle:hm,useInsertionEffect:cm,useLayoutEffect:um,useMemo:fm,useReducer:_c,useRef:om,useState:function(){return _c(Qa)},useDebugValue:Nc,useDeferredValue:function(e,t){var n=it();return Be===null?zc(n,e,t):pm(n,Be.memoizedState,e,t)},useTransition:function(){var e=_c(Qa)[0],t=it().memoizedState;return[typeof e=="boolean"?e:Xs(e),t]},useSyncExternalStore:Gh,useId:bm,useHostTransitionStatus:qc,useFormState:sm,useActionState:sm,useOptimistic:function(e,t){var n=it();return Be!==null?Qh(n,Be,e,t):(n.baseState=e,[e,n.queue.dispatch])},useMemoCache:Mc,useCacheRefresh:wm};Tm.useEffectEvent=lm;function Hc(e,t,n,i){t=e.memoizedState,n=n(i,t),n=n==null?t:f({},t,n),e.memoizedState=n,e.lanes===0&&(e.updateQueue.baseState=n)}var Ic={enqueueSetState:function(e,t,n){e=e._reactInternals;var i=oa(),l=kn(i);l.payload=t,n!=null&&(l.callback=n),t=Sn(e,l,i),t!==null&&(Kt(t,e,i),Ys(t,e,i))},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var i=oa(),l=kn(i);l.tag=1,l.payload=t,n!=null&&(l.callback=n),t=Sn(e,l,i),t!==null&&(Kt(t,e,i),Ys(t,e,i))},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=oa(),i=kn(n);i.tag=2,t!=null&&(i.callback=t),t=Sn(e,i,n),t!==null&&(Kt(t,e,n),Ys(t,e,n))}};function Mm(e,t,n,i,l,c,m){return e=e.stateNode,typeof e.shouldComponentUpdate=="function"?e.shouldComponentUpdate(i,c,m):t.prototype&&t.prototype.isPureReactComponent?!Os(n,i)||!Os(l,c):!0}function Cm(e,t,n,i){e=t.state,typeof t.componentWillReceiveProps=="function"&&t.componentWillReceiveProps(n,i),typeof t.UNSAFE_componentWillReceiveProps=="function"&&t.UNSAFE_componentWillReceiveProps(n,i),t.state!==e&&Ic.enqueueReplaceState(t,t.state,null)}function yi(e,t){var n=t;if("ref"in t){n={};for(var i in t)i!=="ref"&&(n[i]=t[i])}if(e=e.defaultProps){n===t&&(n=f({},n));for(var l in e)n[l]===void 0&&(n[l]=e[l])}return n}function _m(e){Xo(e)}function Rm(e){console.error(e)}function Em(e){Xo(e)}function vr(e,t){try{var n=e.onUncaughtError;n(t.value,{componentStack:t.stack})}catch(i){setTimeout(function(){throw i})}}function Dm(e,t,n){try{var i=e.onCaughtError;i(n.value,{componentStack:n.stack,errorBoundary:t.tag===1?t.stateNode:null})}catch(l){setTimeout(function(){throw l})}}function jc(e,t,n){return n=kn(n),n.tag=3,n.payload={element:null},n.callback=function(){vr(e,t)},n}function Nm(e){return e=kn(e),e.tag=3,e}function zm(e,t,n,i){var l=n.type.getDerivedStateFromError;if(typeof l=="function"){var c=i.value;e.payload=function(){return l(c)},e.callback=function(){Dm(t,n,i)}}var m=n.stateNode;m!==null&&typeof m.componentDidCatch=="function"&&(e.callback=function(){Dm(t,n,i),typeof l!="function"&&(_n===null?_n=new Set([this]):_n.add(this));var v=i.stack;this.componentDidCatch(i.value,{componentStack:v!==null?v:""})})}function Nb(e,t,n,i,l){if(n.flags|=32768,i!==null&&typeof i=="object"&&typeof i.then=="function"){if(t=n.alternate,t!==null&&Zi(t,n,l,!0),n=aa.current,n!==null){switch(n.tag){case 31:case 13:return ya===null?Er():n.alternate===null&&at===0&&(at=3),n.flags&=-257,n.flags|=65536,n.lanes=l,i===sr?n.flags|=16384:(t=n.updateQueue,t===null?n.updateQueue=new Set([i]):t.add(i),du(e,i,l)),!1;case 22:return n.flags|=65536,i===sr?n.flags|=16384:(t=n.updateQueue,t===null?(t={transitions:null,markerInstances:null,retryQueue:new Set([i])},n.updateQueue=t):(n=t.retryQueue,n===null?t.retryQueue=new Set([i]):n.add(i)),du(e,i,l)),!1}throw Error(r(435,n.tag))}return du(e,i,l),Er(),!1}if(De)return t=aa.current,t!==null?((t.flags&65536)===0&&(t.flags|=256),t.flags|=65536,t.lanes=l,i!==sc&&(e=Error(r(422),{cause:i}),js(ma(e,n)))):(i!==sc&&(t=Error(r(423),{cause:i}),js(ma(t,n))),e=e.current.alternate,e.flags|=65536,l&=-l,e.lanes|=l,i=ma(i,n),l=jc(e.stateNode,i,l),gc(e,l),at!==4&&(at=2)),!1;var c=Error(r(520),{cause:i});if(c=ma(c,n),so===null?so=[c]:so.push(c),at!==4&&(at=2),t===null)return!0;
vendor: 12,327 bytes, line 9
9i=ma(i,n),n=t;do{switch(n.tag){case 3:return n.flags|=65536,e=l&-l,n.lanes|=e,e=jc(n.stateNode,i,e),gc(n,e),!1;case 1:if(t=n.type,c=n.stateNode,(n.flags&128)===0&&(typeof t.getDerivedStateFromError=="function"||c!==null&&typeof c.componentDidCatch=="function"&&(_n===null||!_n.has(c))))return n.flags|=65536,l&=-l,n.lanes|=l,l=Nm(l),zm(l,e,n,i),gc(n,l),!1}n=n.return}while(n!==null);return!1}var Bc=Error(r(461)),ct=!1;function Et(e,t,n,i){t.child=e===null?Oh(t,null,n,i):pi(t,e.child,n,i)}function Pm(e,t,n,i,l){n=n.render;var c=t.ref;if("ref"in i){var m={};for(var v in i)v!=="ref"&&(m[v]=i[v])}else m=i;return di(t),i=Sc(e,t,n,m,c,l),v=xc(),e!==null&&!ct?(Ac(e,t,l),Za(e,t,l)):(De&&v&&nc(t),t.flags|=1,Et(e,t,i,l),t.child)}function qm(e,t,n,i,l){if(e===null){var c=n.type;return typeof c=="function"&&!ec(c)&&c.defaultProps===void 0&&n.compare===null?(t.tag=15,t.type=c,Lm(e,t,c,i,l)):(e=Jo(n.type,null,i,t,t.mode,l),e.ref=t.ref,e.return=t,t.child=e)}if(c=e.child,!Xc(e,l)){var m=c.memoizedProps;if(n=n.compare,n=n!==null?n:Os,n(m,i)&&e.ref===t.ref)return Za(e,t,l)}return t.flags|=1,e=Ya(c,i),e.ref=t.ref,e.return=t,t.child=e}function Lm(e,t,n,i,l){if(e!==null){var c=e.memoizedProps;if(Os(c,i)&&e.ref===t.ref)if(ct=!1,t.pendingProps=i=c,Xc(e,l))(e.flags&131072)!==0&&(ct=!0);else return t.lanes=e.lanes,Za(e,t,l)}return Uc(e,t,n,i,l)}function Om(e,t,n,i){var l=i.children,c=e!==null?e.memoizedState:null;if(e===null&&t.stateNode===null&&(t.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),i.mode==="hidden"){if((t.flags&128)!==0){if(c=c!==null?c.baseLanes|n:n,e!==null){for(i=t.child=e.child,l=0;i!==null;)l=l|i.lanes|i.childLanes,i=i.sibling;i=l&~c}else i=0,t.child=null;return Hm(e,t,c,n,i)}if((n&536870912)!==0)t.memoizedState={baseLanes:0,cachePool:null},e!==null&&nr(t,c!==null?c.cachePool:null),c!==null?jh(t,c):vc(),Bh(t);else return i=t.lanes=536870912,Hm(e,t,c!==null?c.baseLanes|n:n,n,i)}else c!==null?(nr(t,c.cachePool),jh(t,c),An(),t.memoizedState=null):(e!==null&&nr(t,null),vc(),An());return Et(e,t,l,n),t.child}function $s(e,t){return e!==null&&e.tag===22||t.stateNode!==null||(t.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),t.sibling}function Hm(e,t,n,i,l){var c=hc();return c=c===null?null:{parent:rt._currentValue,pool:c},t.memoizedState={baseLanes:n,cachePool:c},e!==null&&nr(t,null),vc(),Bh(t),e!==null&&Zi(e,t,i,!0),t.childLanes=l,null}function br(e,t){return t=kr({mode:t.mode,children:t.children},e.mode),t.ref=e.ref,e.child=t,t.return=e,t}function Im(e,t,n){return pi(t,e.child,null,n),e=br(t,t.pendingProps),e.flags|=2,na(t),t.memoizedState=null,e}function zb(e,t,n){var i=t.pendingProps,l=(t.flags&128)!==0;if(t.flags&=-129,e===null){if(De){if(i.mode==="hidden")return e=br(t,i),t.lanes=536870912,$s(null,e);if(wc(t),(e=We)?(e=$f(e,ga),e=e!==null&&e.data==="&"?e:null,e!==null&&(t.memoizedState={dehydrated:e,treeContext:gn!==null?{id:Da,overflow:Na}:null,retryLane:536870912,hydrationErrors:null},n=Sh(e),n.return=t,t.child=n,_t=t,We=null)):e=null,e===null)throw vn(t);return t.lanes=536870912,null}return br(t,i)}var c=e.memoizedState;if(c!==null){var m=c.dehydrated;if(wc(t),l)if(t.flags&256)t.flags&=-257,t=Im(e,t,n);else if(t.memoizedState!==null)t.child=e.child,t.flags|=128,t=null;else throw Error(r(558));else if(ct||Zi(e,t,n,!1),l=(n&e.childLanes)!==0,ct||l){if(i=Ge,i!==null&&(m=Bt(i,n),m!==0&&m!==c.retryLane))throw c.retryLane=m,ri(e,m),Kt(i,e,m),Bc;Er(),t=Im(e,t,n)}else e=c.treeContext,We=va(m.nextSibling),_t=t,De=!0,yn=null,ga=!1,e!==null&&Th(t,e),t=br(t,i),t.flags|=4096;return t}return e=Ya(e.child,{mode:i.mode,children:i.children}),e.ref=t.ref,t.child=e,e.return=t,e}function wr(e,t){var n=t.ref;if(n===null)e!==null&&e.ref!==null&&(t.flags|=4194816);else{if(typeof n!="function"&&typeof n!="object")throw Error(r(284));(e===null||e.ref!==n)&&(t.flags|=4194816)}}function Uc(e,t,n,i,l){return di(t),n=Sc(e,t,n,i,void 0,l),i=xc(),e!==null&&!ct?(Ac(e,t,l),Za(e,t,l)):(De&&i&&nc(t),t.flags|=1,Et(e,t,n,l),t.child)}function jm(e,t,n,i,l,c){return di(t),t.updateQueue=null,n=Vh(t,i,n,l),Uh(e),i=xc(),e!==null&&!ct?(Ac(e,t,c),Za(e,t,c)):(De&&i&&nc(t),t.flags|=1,Et(e,t,n,c),t.child)}function Bm(e,t,n,i,l){if(di(t),t.stateNode===null){var c=Fi,m=n.contextType;typeof m=="object"&&m!==null&&(c=Rt(m)),c=new n(i,c),t.memoizedState=c.state!==null&&c.state!==void 0?c.state:null,c.updater=Ic,t.stateNode=c,c._reactInternals=t,c=t.stateNode,c.props=i,c.state=t.memoizedState,c.refs={},fc(t),m=n.contextType,c.context=typeof m=="object"&&m!==null?Rt(m):Fi,c.state=t.memoizedState,m=n.getDerivedStateFromProps,typeof m=="function"&&(Hc(t,n,m,i),c.state=t.memoizedState),typeof n.getDerivedStateFromProps=="function"||typeof c.getSnapshotBeforeUpdate=="function"||typeof c.UNSAFE_componentWillMount!="function"&&typeof c.componentWillMount!="function"||(m=c.state,typeof c.componentWillMount=="function"&&c.componentWillMount(),typeof c.UNSAFE_componentWillMount=="function"&&c.UNSAFE_componentWillMount(),m!==c.state&&Ic.enqueueReplaceState(c,c.state,null),Fs(t,i,c,l),Ws(),c.state=t.memoizedState),typeof c.componentDidMount=="function"&&(t.flags|=4194308),i=!0}else if(e===null){c=t.stateNode;var v=t.memoizedProps,A=yi(n,v);c.props=A;var q=c.context,j=n.contextType;m=Fi,typeof j=="object"&&j!==null&&(m=Rt(j));var F=n.getDerivedStateFromProps;j=typeof F=="function"||typeof c.getSnapshotBeforeUpdate=="function",v=t.pendingProps!==v,j||typeof c.UNSAFE_componentWillReceiveProps!="function"&&typeof c.componentWillReceiveProps!="function"||(v||q!==m)&&Cm(t,c,i,m),wn=!1;var L=t.memoizedState;c.state=L,Fs(t,i,c,l),Ws(),q=t.memoizedState,v||L!==q||wn?(typeof F=="function"&&(Hc(t,n,F,i),q=t.memoizedState),(A=wn||Mm(t,n,A,i,L,q,m))?(j||typeof c.UNSAFE_componentWillMount!="function"&&typeof c.componentWillMount!="function"||(typeof c.componentWillMount=="function"&&c.componentWillMount(),typeof c.UNSAFE_componentWillMount=="function"&&c.UNSAFE_componentWillMount()),typeof c.componentDidMount=="function"&&(t.flags|=4194308)):(typeof c.componentDidMount=="function"&&(t.flags|=4194308),t.memoizedProps=i,t.memoizedState=q),c.props=i,c.state=q,c.context=m,i=A):(typeof c.componentDidMount=="function"&&(t.flags|=4194308),i=!1)}else{c=t.stateNode,pc(e,t),m=t.memoizedProps,j=yi(n,m),c.props=j,F=t.pendingProps,L=c.context,q=n.contextType,A=Fi,typeof q=="object"&&q!==null&&(A=Rt(q)),v=n.getDerivedStateFromProps,(q=typeof v=="function"||typeof c.getSnapshotBeforeUpdate=="function")||typeof c.UNSAFE_componentWillReceiveProps!="function"&&typeof c.componentWillReceiveProps!="function"||(m!==F||L!==A)&&Cm(t,c,i,A),wn=!1,L=t.memoizedState,c.state=L,Fs(t,i,c,l),Ws();var H=t.memoizedState;m!==F||L!==H||wn||e!==null&&e.dependencies!==null&&tr(e.dependencies)?(typeof v=="function"&&(Hc(t,n,v,i),H=t.memoizedState),(j=wn||Mm(t,n,j,i,L,H,A)||e!==null&&e.dependencies!==null&&tr(e.dependencies))?(q||typeof c.UNSAFE_componentWillUpdate!="function"&&typeof c.componentWillUpdate!="function"||(typeof c.componentWillUpdate=="function"&&c.componentWillUpdate(i,H,A),typeof c.UNSAFE_componentWillUpdate=="function"&&c.UNSAFE_componentWillUpdate(i,H,A)),typeof c.componentDidUpdate=="function"&&(t.flags|=4),typeof c.getSnapshotBeforeUpdate=="function"&&(t.flags|=1024)):(typeof c.componentDidUpdate!="function"||m===e.memoizedProps&&L===e.memoizedState||(t.flags|=4),typeof c.getSnapshotBeforeUpdate!="function"||m===e.memoizedProps&&L===e.memoizedState||(t.flags|=1024),t.memoizedProps=i,t.memoizedState=H),c.props=i,c.state=H,c.context=A,i=j):(typeof c.componentDidUpdate!="function"||m===e.memoizedProps&&L===e.memoizedState||(t.flags|=4),typeof c.getSnapshotBeforeUpdate!="function"||m===e.memoizedProps&&L===e.memoizedState||(t.flags|=1024),i=!1)}return c=i,wr(e,t),i=(t.flags&128)!==0,c||i?(c=t.stateNode,n=i&&typeof n.getDerivedStateFromError!="function"?null:c.render(),t.flags|=1,e!==null&&i?(t.child=pi(t,e.child,null,l),t.child=pi(t,null,n,l)):Et(e,t,n,l),t.memoizedState=c.state,e=t.child):e=Za(e,t,l),e}function Um(e,t,n,i){return ci(),t.flags|=256,Et(e,t,n,i),t.child}var Vc={dehydrated:null,treeContext:null,retryLane:0,hydrationErrors:null};function Gc(e){return{baseLanes:e,cachePool:Dh()}}function Yc(e,t,n){return e=e!==null?e.childLanes&~n:0,t&&(e|=sa),e}function Vm(e,t,n){var i=t.pendingProps,l=!1,c=(t.flags&128)!==0,m;if((m=c)||(m=e!==null&&e.memoizedState===null?!1:(nt.current&2)!==0),m&&(l=!0,t.flags&=-129),m=(t.flags&32)!==0,t.flags&=-33,e===null){if(De){if(l?xn(t):An(),(e=We)?(e=$f(e,ga),e=e!==null&&e.data!=="&"?e:null,e!==null&&(t.memoizedState={dehydrated:e,treeContext:gn!==null?{id:Da,overflow:Na}:null,retryLane:536870912,hydrationErrors:null},n=Sh(e),n.return=t,t.child=n,_t=t,We=null)):e=null,e===null)throw vn(t);return Cu(e)?t.lanes=32:t.lanes=536870912,null}var v=i.children;return i=i.fallback,l?(An(),l=t.mode,v=kr({mode:"hidden",children:v},l),i=li(i,l,n,null),v.return=t,i.return=t,v.sibling=i,t.child=v,i=t.child,i.memoizedState=Gc(n),i.childLanes=Yc(e,m,n),t.memoizedState=Vc,$s(null,i)):(xn(t),Wc(t,v))}var A=e.memoizedState;if(A!==null&&(v=A.dehydrated,v!==null)){if(c)t.flags&256?(xn(t),t.flags&=-257,t=Fc(e,t,n)):t.memoizedState!==null?(An(),t.child=e.child,t.flags|=128,t=null):(An(),v=i.fallback,l=t.mode,i=kr({mode:"visible",children:i.children},l),v=li(v,l,n,null),v.flags|=2,i.return=t,v.return=t,i.sibling=v,t.child=i,pi(t,e.child,null,n),i=t.child,i.memoizedState=Gc(n),i.childLanes=Yc(e,m,n),t.memoizedState=Vc,t=$s(null,i));else if(xn(t),Cu(v)){if(m=v.nextSibling&&v.nextSibling.dataset,m)var q=m.dgst;m=q,i=Error(r(419)),i.stack="",i.digest=m,js({value:i,source:null,stack:null}),t=Fc(e,t,n)}else if(ct||Zi(e,t,n,!1),m=(n&e.childLanes)!==0,ct||m){if(m=Ge,m!==null&&(i=Bt(m,n),i!==0&&i!==A.retryLane))throw A.retryLane=i,ri(e,i),Kt(m,e,i),Bc;Mu(v)||Er(),t=Fc(e,t,n)}else Mu(v)?(t.flags|=192,t.child=e.child,t=null):(e=A.treeContext,We=va(v.nextSibling),_t=t,De=!0,yn=null,ga=!1,e!==null&&Th(t,e),t=Wc(t,i.children),t.flags|=4096);return t}return l?(An(),v=i.fallback,l=t.mode,A=e.child,q=A.sibling,i=Ya(A,{mode:"hidden",children:i.children}),i.subtreeFlags=A.subtreeFlags&65011712,q!==null?v=Ya(q,v):(v=li(v,l,n,null),v.flags|=2),v.return=t,i.return=t,i.sibling=v,t.child=i,$s(null,i),i=t.child,v=e.child.memoizedState,v===null?v=Gc(n):(l=v.cachePool,l!==null?(A=rt._currentValue,l=l.parent!==A?{parent:A,pool:A}:l):l=Dh(),v={baseLanes:v.baseLanes|n,cachePool:l}),i.memoizedState=v,i.childLanes=Yc(e,m,n),t.memoizedState=Vc,$s(e.child,i)):(xn(t),n=e.child,e=n.sibling,n=Ya(n,{mode:"visible",children:i.children}),n.return=t,n.sibling=null,e!==null&&(m=t.deletions,m===null?(t.deletions=[e],t.flags|=16):m.push(e)),t.child=n,t.memoizedState=null,n)}function Wc(e,t){return t=kr({mode:"visible",children:t},e.mode),t.return=e,e.child=t}function kr(e,t){return e=ta(22,e,null,t),e.lanes=0,e}function Fc(e,t,n){return pi(t,e.child,null,n),e=Wc(t,t.pendingProps.children),e.flags|=2,t.memoizedState=null,e}function Gm(e,t,n){e.lanes|=t;var i=e.alternate;i!==null&&(i.lanes|=t),lc(e.return,t,n)}function Kc(e,t,n,i,l,c){var m=e.memoizedState;m===null?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:i,tail:n,tailMode:l,treeForkCount:c}:(m.isBackwards=t,m.rendering=null,m.renderingStartTime=0,m.last=i,m.tail=n,m.tailMode=l,m.treeForkCount=c)}function Ym(e,t,n){var i=t.pendingProps,l=i.revealOrder,c=i.tail;i=i.children;var m=nt.current,v=(m&2)!==0;if(v?(m=m&1|2,t.flags|=128):m&=1,W(nt,m),Et(e,t,i,n),i=De?Is:0,!v&&e!==null&&(e.flags&128)!==0)e:for(e=t.child;e!==null;){if(e.tag===13)e.memoizedState!==null&&Gm(e,n,t);else if(e.tag===19)Gm(e,n,t);else if(e.child!==null){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;e.sibling===null;){if(e.return===null||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}switch(l){case"forwards":for(n=t.child,l=null;n!==null;)e=n.alternate,e!==null&&cr(e)===null&&(l=n),n=n.sibling;n=l,n===null?(l=t.child,t.child=null):(l=n.sibling,n.sibling=null),Kc(t,!1,l,n,c,i);break;case"backwards":case"unstable_legacy-backwards":for(n=null,l=t.child,t.child=null;l!==null;){if(e=l.alternate,e!==null&&cr(e)===null){t.child=l;break}e=l.sibling,l.sibling=n,n=l,l=e}Kc(t,!0,n,null,c,i);break;case"together":Kc(t,!1,null,null,void 0,i);break;default:t.memoizedState=null}return t.child}
vendor: 4,652 bytes, line 9
9function Za(e,t,n){if(e!==null&&(t.dependencies=e.dependencies),Cn|=t.lanes,(n&t.childLanes)===0)if(e!==null){if(Zi(e,t,n,!1),(n&t.childLanes)===0)return null}else return null;if(e!==null&&t.child!==e.child)throw Error(r(153));if(t.child!==null){for(e=t.child,n=Ya(e,e.pendingProps),t.child=n,n.return=t;e.sibling!==null;)e=e.sibling,n=n.sibling=Ya(e,e.pendingProps),n.return=t;n.sibling=null}return t.child}function Xc(e,t){return(e.lanes&t)!==0?!0:(e=e.dependencies,!!(e!==null&&tr(e)))}function Pb(e,t,n){switch(t.tag){case 3:ve(t,t.stateNode.containerInfo),bn(t,rt,e.memoizedState.cache),ci();break;case 27:case 5:Tt(t);break;case 4:ve(t,t.stateNode.containerInfo);break;case 10:bn(t,t.type,t.memoizedProps.value);break;case 31:if(t.memoizedState!==null)return t.flags|=128,wc(t),null;break;case 13:var i=t.memoizedState;if(i!==null)return i.dehydrated!==null?(xn(t),t.flags|=128,null):(n&t.child.childLanes)!==0?Vm(e,t,n):(xn(t),e=Za(e,t,n),e!==null?e.sibling:null);xn(t);break;case 19:var l=(e.flags&128)!==0;if(i=(n&t.childLanes)!==0,i||(Zi(e,t,n,!1),i=(n&t.childLanes)!==0),l){if(i)return Ym(e,t,n);t.flags|=128}if(l=t.memoizedState,l!==null&&(l.rendering=null,l.tail=null,l.lastEffect=null),W(nt,nt.current),i)break;return null;case 22:return t.lanes=0,Om(e,t,n,t.pendingProps);case 24:bn(t,rt,e.memoizedState.cache)}return Za(e,t,n)}function Wm(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps)ct=!0;else{if(!Xc(e,n)&&(t.flags&128)===0)return ct=!1,Pb(e,t,n);ct=(e.flags&131072)!==0}else ct=!1,De&&(t.flags&1048576)!==0&&Ah(t,Is,t.index);switch(t.lanes=0,t.tag){case 16:e:{var i=t.pendingProps;if(e=mi(t.elementType),t.type=e,typeof e=="function")ec(e)?(i=yi(e,i),t.tag=1,t=Bm(null,t,e,i,n)):(t.tag=0,t=Uc(null,t,e,i,n));else{if(e!=null){var l=e.$$typeof;if(l===I){t.tag=11,t=Pm(null,t,e,i,n);break e}else if(l===V){t.tag=14,t=qm(null,t,e,i,n);break e}}throw t=qe(e)||e,Error(r(306,t,""))}}return t;case 0:return Uc(e,t,t.type,t.pendingProps,n);case 1:return i=t.type,l=yi(i,t.pendingProps),Bm(e,t,i,l,n);case 3:e:{if(ve(t,t.stateNode.containerInfo),e===null)throw Error(r(387));i=t.pendingProps;var c=t.memoizedState;l=c.element,pc(e,t),Fs(t,i,null,n);var m=t.memoizedState;if(i=m.cache,bn(t,rt,i),i!==c.cache&&cc(t,[rt],n,!0),Ws(),i=m.element,c.isDehydrated)if(c={element:i,isDehydrated:!1,cache:m.cache},t.updateQueue.baseState=c,t.memoizedState=c,t.flags&256){t=Um(e,t,i,n);break e}else if(i!==l){l=ma(Error(r(424)),t),js(l),t=Um(e,t,i,n);break e}else for(e=t.stateNode.containerInfo,e.nodeType===9?e=e.body:e=e.nodeName==="HTML"?e.ownerDocument.body:e,We=va(e.firstChild),_t=t,De=!0,yn=null,ga=!0,n=Oh(t,null,i,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(ci(),i===l){t=Za(e,t,n);break e}Et(e,t,i,n)}t=t.child}return t;case 26:return wr(e,t),e===null?(n=ip(t.type,null,t.pendingProps,null))?t.memoizedState=n:De||(n=t.type,e=t.pendingProps,i=Or(ie.current).createElement(n),i[Ct]=t,i[Ut]=e,Dt(i,n,e),kt(i),t.stateNode=i):t.memoizedState=ip(t.type,e.memoizedProps,t.pendingProps,e.memoizedState),null;case 27:return Tt(t),e===null&&De&&(i=t.stateNode=tp(t.type,t.pendingProps,ie.current),_t=t,ga=!0,l=We,Nn(t.type)?(_u=l,We=va(i.firstChild)):We=l),Et(e,t,t.pendingProps.children,n),wr(e,t),e===null&&(t.flags|=4194304),t.child;case 5:return e===null&&De&&((l=i=We)&&(i=uw(i,t.type,t.pendingProps,ga),i!==null?(t.stateNode=i,_t=t,We=va(i.firstChild),ga=!1,l=!0):l=!1),l||vn(t)),Tt(t),l=t.type,c=t.pendingProps,m=e!==null?e.memoizedProps:null,i=c.children,xu(l,c)?i=null:m!==null&&xu(l,m)&&(t.flags|=32),t.memoizedState!==null&&(l=Sc(e,t,Tb,null,null,n),fo._currentValue=l),wr(e,t),Et(e,t,i,n),t.child;case 6:return e===null&&De&&((e=n=We)&&(n=dw(n,t.pendingProps,ga),n!==null?(t.stateNode=n,_t=t,We=null,e=!0):e=!1),e||vn(t)),null;case 13:return Vm(e,t,n);case 4:return ve(t,t.stateNode.containerInfo),i=t.pendingProps,e===null?t.child=pi(t,null,i,n):Et(e,t,i,n),t.child;case 11:return Pm(e,t,t.type,t.pendingProps,n);case 7:return Et(e,t,t.pendingProps,n),t.child;case 8:return Et(e,t,t.pendingProps.children,n),t.child;case 12:return Et(e,t,t.pendingProps.children,n),t.child;case 10:return i=t.pendingProps,bn(t,t.type,i.value),Et(e,t,i.children,n),t.child;case 9:return l=t.type._context,i=t.pendingProps.children,di(t),l=Rt(l),i=i(l),t.flags|=1,Et(e,t,i,n),t.child;case 14:return qm(e,t,t.type,t.pendingProps,n);case 15:return Lm(e,t,t.type,t.pendingProps,n);case 19:return Ym(e,t,n);case 31:return zb(e,t,n);case 22:return Om(e,t,n,t.pendingProps);case 24:return di(t),i=Rt(rt),e===null?(l=hc(),l===null&&(l=Ge,c=uc(),l.pooledCache=c,c.refCount++,c!==null&&(l.pooledCacheLanes|=n),l=c),t.memoizedState={parent:i,
vendor: 7,596 bytes, line 9
9cache:l},fc(t),bn(t,rt,l)):((e.lanes&n)!==0&&(pc(e,t),Fs(t,null,null,n),Ws()),l=e.memoizedState,c=t.memoizedState,l.parent!==i?(l={parent:i,cache:i},t.memoizedState=l,t.lanes===0&&(t.memoizedState=t.updateQueue.baseState=l),bn(t,rt,i)):(i=c.cache,bn(t,rt,i),i!==l.cache&&cc(t,[rt],n,!0))),Et(e,t,t.pendingProps.children,n),t.child;case 29:throw t.pendingProps}throw Error(r(156,t.tag))}function $a(e){e.flags|=4}function Qc(e,t,n,i,l){if((t=(e.mode&32)!==0)&&(t=!1),t){if(e.flags|=16777216,(l&335544128)===l)if(e.stateNode.complete)e.flags|=8192;else if(wf())e.flags|=8192;else throw fi=sr,mc}else e.flags&=-16777217}function Fm(e,t){if(t.type!=="stylesheet"||(t.state.loading&4)!==0)e.flags&=-16777217;else if(e.flags|=16777216,!cp(t))if(wf())e.flags|=8192;else throw fi=sr,mc}function Sr(e,t){t!==null&&(e.flags|=4),e.flags&16384&&(t=e.tag!==22?qt():536870912,e.lanes|=t,cs|=t)}function Js(e,t){if(!De)switch(e.tailMode){case"hidden":t=e.tail;for(var n=null;t!==null;)t.alternate!==null&&(n=t),t=t.sibling;n===null?e.tail=null:n.sibling=null;break;case"collapsed":n=e.tail;for(var i=null;n!==null;)n.alternate!==null&&(i=n),n=n.sibling;i===null?t||e.tail===null?e.tail=null:e.tail.sibling=null:i.sibling=null}}function Fe(e){var t=e.alternate!==null&&e.alternate.child===e.child,n=0,i=0;if(t)for(var l=e.child;l!==null;)n|=l.lanes|l.childLanes,i|=l.subtreeFlags&65011712,i|=l.flags&65011712,l.return=e,l=l.sibling;else for(l=e.child;l!==null;)n|=l.lanes|l.childLanes,i|=l.subtreeFlags,i|=l.flags,l.return=e,l=l.sibling;return e.subtreeFlags|=i,e.childLanes=n,t}function qb(e,t,n){var i=t.pendingProps;switch(ic(t),t.tag){case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return Fe(t),null;case 1:return Fe(t),null;case 3:return n=t.stateNode,i=null,e!==null&&(i=e.memoizedState.cache),t.memoizedState.cache!==i&&(t.flags|=2048),Ka(rt),fe(),n.pendingContext&&(n.context=n.pendingContext,n.pendingContext=null),(e===null||e.child===null)&&(Qi(t)?$a(t):e===null||e.memoizedState.isDehydrated&&(t.flags&256)===0||(t.flags|=1024,oc())),Fe(t),null;case 26:var l=t.type,c=t.memoizedState;return e===null?($a(t),c!==null?(Fe(t),Fm(t,c)):(Fe(t),Qc(t,l,null,i,n))):c?c!==e.memoizedState?($a(t),Fe(t),Fm(t,c)):(Fe(t),t.flags&=-16777217):(e=e.memoizedProps,e!==i&&$a(t),Fe(t),Qc(t,l,e,i,n)),null;case 27:if(ht(t),n=ie.current,l=t.type,e!==null&&t.stateNode!=null)e.memoizedProps!==i&&$a(t);else{if(!i){if(t.stateNode===null)throw Error(r(166));return Fe(t),null}e=Z.current,Qi(t)?Mh(t):(e=tp(l,i,n),t.stateNode=e,$a(t))}return Fe(t),null;case 5:if(ht(t),l=t.type,e!==null&&t.stateNode!=null)e.memoizedProps!==i&&$a(t);else{if(!i){if(t.stateNode===null)throw Error(r(166));return Fe(t),null}if(c=Z.current,Qi(t))Mh(t);else{var m=Or(ie.current);switch(c){case 1:c=m.createElementNS("http://www.w3.org/2000/svg",l);break;case 2:c=m.createElementNS("http://www.w3.org/1998/Math/MathML",l);break;default:switch(l){case"svg":c=m.createElementNS("http://www.w3.org/2000/svg",l);break;case"math":c=m.createElementNS("http://www.w3.org/1998/Math/MathML",l);break;case"script":c=m.createElement("div"),c.innerHTML="<script><\/script>",c=c.removeChild(c.firstChild);break;case"select":c=typeof i.is=="string"?m.createElement("select",{is:i.is}):m.createElement("select"),i.multiple?c.multiple=!0:i.size&&(c.size=i.size);break;default:c=typeof i.is=="string"?m.createElement(l,{is:i.is}):m.createElement(l)}}c[Ct]=t,c[Ut]=i;e:for(m=t.child;m!==null;){if(m.tag===5||m.tag===6)c.appendChild(m.stateNode);else if(m.tag!==4&&m.tag!==27&&m.child!==null){m.child.return=m,m=m.child;continue}if(m===t)break e;for(;m.sibling===null;){if(m.return===null||m.return===t)break e;m=m.return}m.sibling.return=m.return,m=m.sibling}t.stateNode=c;e:switch(Dt(c,l,i),l){case"button":case"input":case"select":case"textarea":i=!!i.autoFocus;break e;case"img":i=!0;break e;default:i=!1}i&&$a(t)}}return Fe(t),Qc(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,n),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==i&&$a(t);else{if(typeof i!="string"&&t.stateNode===null)throw Error(r(166));if(e=ie.current,Qi(t)){if(e=t.stateNode,n=t.memoizedProps,i=null,l=_t,l!==null)switch(l.tag){case 27:case 5:i=l.memoizedProps}e[Ct]=t,e=!!(e.nodeValue===n||i!==null&&i.suppressHydrationWarning===!0||Gf(e.nodeValue,n)),e||vn(t,!0)}else e=Or(e).createTextNode(i),e[Ct]=t,t.stateNode=e}return Fe(t),null;case 31:if(n=t.memoizedState,e===null||e.memoizedState!==null){if(i=Qi(t),n!==null){if(e===null){if(!i)throw Error(r(318));if(e=t.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(r(557));e[Ct]=t}else ci(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;Fe(t),e=!1}else n=oc(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e)return t.flags&256?(na(t),t):(na(t),null);if((t.flags&128)!==0)throw Error(r(558))}return Fe(t),null;case 13:if(i=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(l=Qi(t),i!==null&&i.dehydrated!==null){if(e===null){if(!l)throw Error(r(318));if(l=t.memoizedState,l=l!==null?l.dehydrated:null,!l)throw Error(r(317));l[Ct]=t}else ci(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;Fe(t),l=!1}else l=oc(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=l),l=!0;if(!l)return t.flags&256?(na(t),t):(na(t),null)}return na(t),(t.flags&128)!==0?(t.lanes=n,t):(n=i!==null,e=e!==null&&e.memoizedState!==null,n&&(i=t.child,l=null,i.alternate!==null&&i.alternate.memoizedState!==null&&i.alternate.memoizedState.cachePool!==null&&(l=i.alternate.memoizedState.cachePool.pool),c=null,i.memoizedState!==null&&i.memoizedState.cachePool!==null&&(c=i.memoizedState.cachePool.pool),c!==l&&(i.flags|=2048)),n!==e&&n&&(t.child.flags|=8192),Sr(t,t.updateQueue),Fe(t),null);case 4:return fe(),e===null&&vu(t.stateNode.containerInfo),Fe(t),null;case 10:return Ka(t.type),Fe(t),null;case 19:if(B(nt),i=t.memoizedState,i===null)return Fe(t),null;if(l=(t.flags&128)!==0,c=i.rendering,c===null)if(l)Js(i,!1);else{if(at!==0||e!==null&&(e.flags&128)!==0)for(e=t.child;e!==null;){if(c=cr(e),c!==null){for(t.flags|=128,Js(i,!1),e=c.updateQueue,t.updateQueue=e,Sr(t,e),t.subtreeFlags=0,e=n,n=t.child;n!==null;)kh(n,e),n=n.sibling;return W(nt,nt.current&1|2),De&&Wa(t,i.treeForkCount),t.child}e=e.sibling}i.tail!==null&&bt()>Cr&&(t.flags|=128,l=!0,Js(i,!1),t.lanes=4194304)}else{if(!l)if(e=cr(c),e!==null){if(t.flags|=128,l=!0,e=e.updateQueue,t.updateQueue=e,Sr(t,e),Js(i,!0),i.tail===null&&i.tailMode==="hidden"&&!c.alternate&&!De)return Fe(t),null}else 2*bt()-i.renderingStartTime>Cr&&n!==536870912&&(t.flags|=128,l=!0,Js(i,!1),t.lanes=4194304);i.isBackwards?(c.sibling=t.child,t.child=c):(e=i.last,e!==null?e.sibling=c:t.child=c,i.last=c)}return i.tail!==null?(e=i.tail,i.rendering=e,i.tail=e.sibling,i.renderingStartTime=bt(),e.sibling=null,n=nt.current,W(nt,l?n&1|2:n&1),De&&Wa(t,i.treeForkCount),e):(Fe(t),null);case 22:case 23:return na(t),bc(),i=t.memoizedState!==null,e!==null?e.memoizedState!==null!==i&&(t.flags|=8192):i&&(t.flags|=8192),i?(n&536870912)!==0&&(t.flags&128)===0&&(Fe(t),t.subtreeFlags&6&&(t.flags|=8192)):Fe(t),n=t.updateQueue,n!==null&&Sr(t,n.retryQueue),n=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),i=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(i=t.memoizedState.cachePool.pool),i!==n&&(t.flags|=2048),e!==null&&B(hi),null;case 24:return n=null,e!==null&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),Ka(rt),Fe(t),null;case 25:return null;case 30:return null}throw Error(r(156,t.tag))}
vendor: 18,026 bytes, line 9
9function Lb(e,t){switch(ic(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return Ka(rt),fe(),e=t.flags,(e&65536)!==0&&(e&128)===0?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return ht(t),null;case 31:if(t.memoizedState!==null){if(na(t),t.alternate===null)throw Error(r(340));ci()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(na(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(r(340));ci()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return B(nt),null;case 4:return fe(),null;case 10:return Ka(t.type),null;case 22:case 23:return na(t),bc(),e!==null&&B(hi),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return Ka(rt),null;case 25:return null;default:return null}}function Km(e,t){switch(ic(t),t.tag){case 3:Ka(rt),fe();break;case 26:case 27:case 5:ht(t);break;case 4:fe();break;case 31:t.memoizedState!==null&&na(t);break;case 13:na(t);break;case 19:B(nt);break;case 10:Ka(t.type);break;case 22:case 23:na(t),bc(),e!==null&&B(hi);break;case 24:Ka(rt)}}function eo(e,t){try{var n=t.updateQueue,i=n!==null?n.lastEffect:null;if(i!==null){var l=i.next;n=l;do{if((n.tag&e)===e){i=void 0;var c=n.create,m=n.inst;i=c(),m.destroy=i}n=n.next}while(n!==l)}}catch(v){Ie(t,t.return,v)}}function Tn(e,t,n){try{var i=t.updateQueue,l=i!==null?i.lastEffect:null;if(l!==null){var c=l.next;i=c;do{if((i.tag&e)===e){var m=i.inst,v=m.destroy;if(v!==void 0){m.destroy=void 0,l=t;var A=n,q=v;try{q()}catch(j){Ie(l,A,j)}}}i=i.next}while(i!==c)}}catch(j){Ie(t,t.return,j)}}function Xm(e){var t=e.updateQueue;if(t!==null){var n=e.stateNode;try{Ih(t,n)}catch(i){Ie(e,e.return,i)}}}function Qm(e,t,n){n.props=yi(e.type,e.memoizedProps),n.state=e.memoizedState;try{n.componentWillUnmount()}catch(i){Ie(e,t,i)}}function to(e,t){try{var n=e.ref;if(n!==null){switch(e.tag){case 26:case 27:case 5:var i=e.stateNode;break;case 30:i=e.stateNode;break;default:i=e.stateNode}typeof n=="function"?e.refCleanup=n(i):n.current=i}}catch(l){Ie(e,t,l)}}function za(e,t){var n=e.ref,i=e.refCleanup;if(n!==null)if(typeof i=="function")try{i()}catch(l){Ie(e,t,l)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof n=="function")try{n(null)}catch(l){Ie(e,t,l)}else n.current=null}function Zm(e){var t=e.type,n=e.memoizedProps,i=e.stateNode;try{e:switch(t){case"button":case"input":case"select":case"textarea":n.autoFocus&&i.focus();break e;case"img":n.src?i.src=n.src:n.srcSet&&(i.srcset=n.srcSet)}}catch(l){Ie(e,e.return,l)}}function Zc(e,t,n){try{var i=e.stateNode;iw(i,e.type,n,t),i[Ut]=t}catch(l){Ie(e,e.return,l)}}function $m(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&Nn(e.type)||e.tag===4}function $c(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||$m(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.tag===27&&Nn(e.type)||e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Jc(e,t,n){var i=e.tag;if(i===5||i===6)e=e.stateNode,t?(n.nodeType===9?n.body:n.nodeName==="HTML"?n.ownerDocument.body:n).insertBefore(e,t):(t=n.nodeType===9?n.body:n.nodeName==="HTML"?n.ownerDocument.body:n,t.appendChild(e),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=Va));else if(i!==4&&(i===27&&Nn(e.type)&&(n=e.stateNode,t=null),e=e.child,e!==null))for(Jc(e,t,n),e=e.sibling;e!==null;)Jc(e,t,n),e=e.sibling}function xr(e,t,n){var i=e.tag;if(i===5||i===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(i!==4&&(i===27&&Nn(e.type)&&(n=e.stateNode),e=e.child,e!==null))for(xr(e,t,n),e=e.sibling;e!==null;)xr(e,t,n),e=e.sibling}function Jm(e){var t=e.stateNode,n=e.memoizedProps;try{for(var i=e.type,l=t.attributes;l.length;)t.removeAttributeNode(l[0]);Dt(t,i,n),t[Ct]=e,t[Ut]=n}catch(c){Ie(e,e.return,c)}}var Ja=!1,ut=!1,eu=!1,ef=typeof WeakSet=="function"?WeakSet:Set,St=null;function Ob(e,t){if(e=e.containerInfo,ku=Gr,e=hh(e),Fl(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var i=n.getSelection&&n.getSelection();if(i&&i.rangeCount!==0){n=i.anchorNode;var l=i.anchorOffset,c=i.focusNode;i=i.focusOffset;try{n.nodeType,c.nodeType}catch{n=null;break e}var m=0,v=-1,A=-1,q=0,j=0,F=e,L=null;t:for(;;){for(var H;F!==n||l!==0&&F.nodeType!==3||(v=m+l),F!==c||i!==0&&F.nodeType!==3||(A=m+i),F.nodeType===3&&(m+=F.nodeValue.length),(H=F.firstChild)!==null;)L=F,F=H;for(;;){if(F===e)break t;if(L===n&&++q===l&&(v=m),L===c&&++j===i&&(A=m),(H=F.nextSibling)!==null)break;F=L,L=F.parentNode}F=H}n=v===-1||A===-1?null:{start:v,end:A}}else n=null}n=n||{start:0,end:0}}else n=null;for(Su={focusedElem:e,selectionRange:n},Gr=!1,St=t;St!==null;)if(t=St,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,St=e;else for(;St!==null;){switch(t=St,c=t.alternate,e=t.flags,t.tag){case 0:if((e&4)!==0&&(e=t.updateQueue,e=e!==null?e.events:null,e!==null))for(n=0;n<e.length;n++)l=e[n],l.ref.impl=l.nextImpl;break;case 11:case 15:break;case 1:if((e&1024)!==0&&c!==null){e=void 0,n=t,l=c.memoizedProps,c=c.memoizedState,i=n.stateNode;try{var re=yi(n.type,l);e=i.getSnapshotBeforeUpdate(re,c),i.__reactInternalSnapshotBeforeUpdate=e}catch(pe){Ie(n,n.return,pe)}}break;case 3:if((e&1024)!==0){if(e=t.stateNode.containerInfo,n=e.nodeType,n===9)Tu(e);else if(n===1)switch(e.nodeName){case"HEAD":case"HTML":case"BODY":Tu(e);break;default:e.textContent=""}}break;case 5:case 26:case 27:case 6:case 4:case 17:break;default:if((e&1024)!==0)throw Error(r(163))}if(e=t.sibling,e!==null){e.return=t.return,St=e;break}St=t.return}}function tf(e,t,n){var i=n.flags;switch(n.tag){case 0:case 11:case 15:tn(e,n),i&4&&eo(5,n);break;case 1:if(tn(e,n),i&4)if(e=n.stateNode,t===null)try{e.componentDidMount()}catch(m){Ie(n,n.return,m)}else{var l=yi(n.type,t.memoizedProps);t=t.memoizedState;try{e.componentDidUpdate(l,t,e.__reactInternalSnapshotBeforeUpdate)}catch(m){Ie(n,n.return,m)}}i&64&&Xm(n),i&512&&to(n,n.return);break;case 3:if(tn(e,n),i&64&&(e=n.updateQueue,e!==null)){if(t=null,n.child!==null)switch(n.child.tag){case 27:case 5:t=n.child.stateNode;break;case 1:t=n.child.stateNode}try{Ih(e,t)}catch(m){Ie(n,n.return,m)}}break;case 27:t===null&&i&4&&Jm(n);case 26:case 5:tn(e,n),t===null&&i&4&&Zm(n),i&512&&to(n,n.return);break;case 12:tn(e,n);break;case 31:tn(e,n),i&4&&sf(e,n);break;case 13:tn(e,n),i&4&&of(e,n),i&64&&(e=n.memoizedState,e!==null&&(e=e.dehydrated,e!==null&&(n=Wb.bind(null,n),hw(e,n))));break;case 22:if(i=n.memoizedState!==null||Ja,!i){t=t!==null&&t.memoizedState!==null||ut,l=Ja;var c=ut;Ja=i,(ut=t)&&!c?an(e,n,(n.subtreeFlags&8772)!==0):tn(e,n),Ja=l,ut=c}break;case 30:break;default:tn(e,n)}}function af(e){var t=e.alternate;t!==null&&(e.alternate=null,af(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&El(t)),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}var Qe=null,Gt=!1;function en(e,t,n){for(n=n.child;n!==null;)nf(e,t,n),n=n.sibling}function nf(e,t,n){if(Ot&&typeof Ot.onCommitFiberUnmount=="function")try{Ot.onCommitFiberUnmount(ei,n)}catch{}switch(n.tag){case 26:ut||za(n,t),en(e,t,n),n.memoizedState?n.memoizedState.count--:n.stateNode&&(n=n.stateNode,n.parentNode.removeChild(n));break;case 27:ut||za(n,t);var i=Qe,l=Gt;Nn(n.type)&&(Qe=n.stateNode,Gt=!1),en(e,t,n),uo(n.stateNode),Qe=i,Gt=l;break;case 5:ut||za(n,t);case 6:if(i=Qe,l=Gt,Qe=null,en(e,t,n),Qe=i,Gt=l,Qe!==null)if(Gt)try{(Qe.nodeType===9?Qe.body:Qe.nodeName==="HTML"?Qe.ownerDocument.body:Qe).removeChild(n.stateNode)}catch(c){Ie(n,t,c)}else try{Qe.removeChild(n.stateNode)}catch(c){Ie(n,t,c)}break;case 18:Qe!==null&&(Gt?(e=Qe,Qf(e.nodeType===9?e.body:e.nodeName==="HTML"?e.ownerDocument.body:e,n.stateNode),ys(e)):Qf(Qe,n.stateNode));break;case 4:i=Qe,l=Gt,Qe=n.stateNode.containerInfo,Gt=!0,en(e,t,n),Qe=i,Gt=l;break;case 0:case 11:case 14:case 15:Tn(2,n,t),ut||Tn(4,n,t),en(e,t,n);break;case 1:ut||(za(n,t),i=n.stateNode,typeof i.componentWillUnmount=="function"&&Qm(n,t,i)),en(e,t,n);break;case 21:en(e,t,n);break;case 22:ut=(i=ut)||n.memoizedState!==null,en(e,t,n),ut=i;break;default:en(e,t,n)}}function sf(e,t){if(t.memoizedState===null&&(e=t.alternate,e!==null&&(e=e.memoizedState,e!==null))){e=e.dehydrated;try{ys(e)}catch(n){Ie(t,t.return,n)}}}function of(e,t){if(t.memoizedState===null&&(e=t.alternate,e!==null&&(e=e.memoizedState,e!==null&&(e=e.dehydrated,e!==null))))try{ys(e)}catch(n){Ie(t,t.return,n)}}function Hb(e){switch(e.tag){case 31:case 13:case 19:var t=e.stateNode;return t===null&&(t=e.stateNode=new ef),t;case 22:return e=e.stateNode,t=e._retryCache,t===null&&(t=e._retryCache=new ef),t;default:throw Error(r(435,e.tag))}}function Ar(e,t){var n=Hb(e);t.forEach(function(i){if(!n.has(i)){n.add(i);var l=Fb.bind(null,e,i);i.then(l,l)}})}function Yt(e,t){var n=t.deletions;if(n!==null)for(var i=0;i<n.length;i++){var l=n[i],c=e,m=t,v=m;e:for(;v!==null;){switch(v.tag){case 27:if(Nn(v.type)){Qe=v.stateNode,Gt=!1;break e}break;case 5:Qe=v.stateNode,Gt=!1;break e;case 3:case 4:Qe=v.stateNode.containerInfo,Gt=!0;break e}v=v.return}if(Qe===null)throw Error(r(160));nf(c,m,l),Qe=null,Gt=!1,c=l.alternate,c!==null&&(c.return=null),l.return=null}if(t.subtreeFlags&13886)for(t=t.child;t!==null;)rf(t,e),t=t.sibling}var Aa=null;function rf(e,t){var n=e.alternate,i=e.flags;switch(e.tag){case 0:case 11:case 14:case 15:Yt(t,e),Wt(e),i&4&&(Tn(3,e,e.return),eo(3,e),Tn(5,e,e.return));break;case 1:Yt(t,e),Wt(e),i&512&&(ut||n===null||za(n,n.return)),i&64&&Ja&&(e=e.updateQueue,e!==null&&(i=e.callbacks,i!==null&&(n=e.shared.hiddenCallbacks,e.shared.hiddenCallbacks=n===null?i:n.concat(i))));break;case 26:var l=Aa;if(Yt(t,e),Wt(e),i&512&&(ut||n===null||za(n,n.return)),i&4){var c=n!==null?n.memoizedState:null;if(i=e.memoizedState,n===null)if(i===null)if(e.stateNode===null){e:{i=e.type,n=e.memoizedProps,l=l.ownerDocument||l;t:switch(i){case"title":c=l.getElementsByTagName("title")[0],(!c||c[_s]||c[Ct]||c.namespaceURI==="http://www.w3.org/2000/svg"||c.hasAttribute("itemprop"))&&(c=l.createElement(i),l.head.insertBefore(c,l.querySelector("head > title"))),Dt(c,i,n),c[Ct]=e,kt(c),i=c;break e;case"link":var m=rp("link","href",l).get(i+(n.href||""));if(m){for(var v=0;v<m.length;v++)if(c=m[v],c.getAttribute("href")===(n.href==null||n.href===""?null:n.href)&&c.getAttribute("rel")===(n.rel==null?null:n.rel)&&c.getAttribute("title")===(n.title==null?null:n.title)&&c.getAttribute("crossorigin")===(n.crossOrigin==null?null:n.crossOrigin)){m.splice(v,1);break t}}c=l.createElement(i),Dt(c,i,n),l.head.appendChild(c);break;case"meta":if(m=rp("meta","content",l).get(i+(n.content||""))){for(v=0;v<m.length;v++)if(c=m[v],c.getAttribute("content")===(n.content==null?null:""+n.content)&&c.getAttribute("name")===(n.name==null?null:n.name)&&c.getAttribute("property")===(n.property==null?null:n.property)&&c.getAttribute("http-equiv")===(n.httpEquiv==null?null:n.httpEquiv)&&c.getAttribute("charset")===(n.charSet==null?null:n.charSet)){m.splice(v,1);break t}}c=l.createElement(i),Dt(c,i,n),l.head.appendChild(c);break;default:throw Error(r(468,i))}c[Ct]=e,kt(c),i=c}e.stateNode=i}else lp(l,e.type,e.stateNode);else e.stateNode=op(l,i,e.memoizedProps);else c!==i?(c===null?n.stateNode!==null&&(n=n.stateNode,n.parentNode.removeChild(n)):c.count--,i===null?lp(l,e.type,e.stateNode):op(l,i,e.memoizedProps)):i===null&&e.stateNode!==null&&Zc(e,e.memoizedProps,n.memoizedProps)}break;case 27:Yt(t,e),Wt(e),i&512&&(ut||n===null||za(n,n.return)),n!==null&&i&4&&Zc(e,e.memoizedProps,n.memoizedProps);break;case 5:if(Yt(t,e),Wt(e),i&512&&(ut||n===null||za(n,n.return)),e.flags&32){l=e.stateNode;try{ji(l,"")}catch(re){Ie(e,e.return,re)}}i&4&&e.stateNode!=null&&(l=e.memoizedProps,Zc(e,l,n!==null?n.memoizedProps:l)),i&1024&&(eu=!0);break;case 6:if(Yt(t,e),Wt(e),i&4){if(e.stateNode===null)throw Error(r(162));i=e.memoizedProps,n=e.stateNode;try{n.nodeValue=i}catch(re){Ie(e,e.return,re)}}break;case 3:if(jr=null,l=Aa,Aa=Hr(t.containerInfo),Yt(t,e),Aa=l,Wt(e),i&4&&n!==null&&n.memoizedState.isDehydrated)try{ys(t.containerInfo)}catch(re){Ie(e,e.return,re)}eu&&(eu=!1,lf(e));break;case 4:i=Aa,Aa=Hr(e.stateNode.containerInfo),Yt(t,e),Wt(e),Aa=i;break;case 12:Yt(t,e),Wt(e);break;case 31:Yt(t,e),Wt(e),i&4&&(i=e.updateQueue,i!==null&&(e.updateQueue=null,Ar(e,i)));break;case 13:Yt(t,e),Wt(e),e.child.flags&8192&&e.memoizedState!==null!=(n!==null&&n.memoizedState!==null)&&(Mr=bt()),i&4&&(i=e.updateQueue,i!==null&&(e.updateQueue=null,Ar(e,i)));break;case 22:l=e.memoizedState!==null;var A=n!==null&&n.memoizedState!==null,q=Ja,j=ut;if(Ja=q||l,ut=j||A,Yt(t,e),ut=j,Ja=q,Wt(e),i&8192)e:for(t=e.stateNode,t._visibility=l?t._visibility&-2:t._visibility|1,l&&(n===null||A||Ja||ut||vi(e)),n=null,t=e;;){if(t.tag===5||t.tag===26){if(n===null){A=n=t;try{if(c=A.stateNode,l)m=c.style,typeof m.setProperty=="function"?m.setProperty("display","none","important"):m.display="none";else{v=A.stateNode;var F=A.memoizedProps.style,L=F!=null&&F.hasOwnProperty("display")?F.display:null;v.style.display=L==null||typeof L=="boolean"?"":(""+L).trim()}}catch(re){Ie(A,A.return,re)}}}else if(t.tag===6){if(n===null){A=t;try{A.stateNode.nodeValue=l?"":A.memoizedProps}catch(re){Ie(A,A.return,re)}}}else if(t.tag===18){if(n===null){A=t;try{var H=A.stateNode;l?Zf(H,!0):Zf(A.stateNode,!1)}catch(re){Ie(A,A.return,re)}}}else if((t.tag!==22&&t.tag!==23||t.memoizedState===null||t===e)&&t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break e;for(;t.sibling===null;){if(t.return===null||t.return===e)break e;n===t&&(n=null),t=t.return}n===t&&(n=null),t.sibling.return=t.return,t=t.sibling}i&4&&(i=e.updateQueue,i!==null&&(n=i.retryQueue,n!==null&&(i.retryQueue=null,Ar(e,n))));break;case 19:Yt(t,e),Wt(e),i&4&&(i=e.updateQueue,i!==null&&(e.updateQueue=null,Ar(e,i)));break;case 30:break;case 21:break;default:Yt(t,e),Wt(e)}}function Wt(e){var t=e.flags;if(t&2){try{for(var n,i=e.return;i!==null;){if($m(i)){n=i;break}i=i.return}if(n==null)throw Error(r(160));switch(n.tag){case 27:var l=n.stateNode,c=$c(e);xr(e,c,l);break;case 5:var m=n.stateNode;n.flags&32&&(ji(m,""),n.flags&=-33);var v=$c(e);xr(e,v,m);break;case 3:case 4:var A=n.stateNode.containerInfo,q=$c(e);Jc(e,q,A);break;default:throw Error(r(161))}}catch(j){Ie(e,e.return,j)}e.flags&=-3}t&4096&&(e.flags&=-4097)}function lf(e){if(e.subtreeFlags&1024)for(e=e.child;e!==null;){var t=e;lf(t),t.tag===5&&t.flags&1024&&t.stateNode.reset(),e=e.sibling}}function tn(e,t){if(t.subtreeFlags&8772)for(t=t.child;t!==null;)tf(e,t.alternate,t),t=t.sibling}function vi(e){for(e=e.child;e!==null;){var t=e;switch(t.tag){case 0:case 11:case 14:case 15:Tn(4,t,t.return),vi(t);break;case 1:za(t,t.return);var n=t.stateNode;typeof n.componentWillUnmount=="function"&&Qm(t,t.return,n),vi(t);break;case 27:uo(t.stateNode);case 26:case 5:za(t,t.return),vi(t);break;case 22:t.memoizedState===null&&vi(t);break;case 30:vi(t);break;default:vi(t)}e=e.sibling}}function an(e,t,n){for(n=n&&(t.subtreeFlags&8772)!==0,t=t.child;t!==null;){var i=t.alternate,l=e,c=t,m=c.flags;switch(c.tag){case 0:case 11:case 15:an(l,c,n),eo(4,c);break;case 1:if(an(l,c,n),i=c,l=i.stateNode,typeof l.componentDidMount=="function")try{l.componentDidMount()}catch(q){Ie(i,i.return,q)}if(i=c,l=i.updateQueue,l!==null){var v=i.stateNode;try{var A=l.shared.hiddenCallbacks;if(A!==null)for(l.shared.hiddenCallbacks=null,l=0;l<A.length;l++)Hh(A[l],v)}catch(q){Ie(i,i.return,q)}}n&&m&64&&Xm(c),to(c,c.return);break;case 27:Jm(c);case 26:case 5:an(l,c,n),n&&i===null&&m&4&&Zm(c),to(c,c.return);break;case 12:an(l,c,n);break;case 31:an(l,c,n),n&&m&4&&sf(l,c);break;case 13:an(l,c,n),n&&m&4&&of(l,c);break;case 22:c.memoizedState===null&&an(l,c,n),to(c,c.return);break;case 30:break;default:an(l,c,n)}t=t.sibling}}function tu(e,t){var n=null;e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),e=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(e=t.memoizedState.cachePool.pool),e!==n&&(e!=null&&e.refCount++,n!=null&&Bs(n))}function au(e,t){e=null,t.alternate!==null&&(e=t.alternate.memoizedState.cache),t=t.memoizedState.cache,t!==e&&(t.refCount++,e!=null&&Bs(e))}function Ta(e,t,n,i){if(t.subtreeFlags&10256)for(t=t.child;t!==null;)cf(e,t,n,i),t=t.sibling}function cf(e,t,n,i){var l=t.flags;switch(t.tag){case 0:case 11:case 15:Ta(e,t,n,i),l&2048&&eo(9,t);break;case 1:Ta(e,t,n,i);break;case 3:Ta(e,t,n,i),l&2048&&(e=null,t.alternate!==null&&(e=t.alternate.memoizedState.cache),t=t.memoizedState.cache,t!==e&&(t.refCount++,e!=null&&Bs(e)));break;case 12:if(l&2048){Ta(e,t,n,i),e=t.stateNode;try{var c=t.memoizedProps,m=c.id,v=c.onPostCommit;typeof v=="function"&&v(m,t.alternate===null?"mount":"update",e.passiveEffectDuration,-0)}catch(A){Ie(t,t.return,A)}}else Ta(e,t,n,i);break;case 31:Ta(e,t,n,i);break;case 13:Ta(e,t,n,i);break;case 23:break;case 22:c=t.stateNode,m=t.alternate,t.memoizedState!==null?c._visibility&2?Ta(e,t,n,i):ao(e,t):c._visibility&2?Ta(e,t,n,i):(c._visibility|=2,os(e,t,n,i,(t.subtreeFlags&10256)!==0||!1)),l&2048&&tu(m,t);break;case 24:Ta(e,t,n,i),l&2048&&au(t.alternate,t);break;default:Ta(e,t,n,i)}}function os(e,t,n,i,l){for(l=l&&((t.subtreeFlags&10256)!==0||!1),t=t.child;t!==null;){var c=e,m=t,v=n,A=i,q=m.flags;switch(m.tag){case 0:case 11:case 15:os(c,m,v,A,l),eo(8,m);break;case 23:break;case 22:var j=m.stateNode;m.memoizedState!==null?j._visibility&2?os(c,m,v,A,l):ao(c,m):(j._visibility|=2,os(c,m,v,A,l)),l&&q&2048&&tu(m.alternate,m);break;case 24:os(c,m,v,A,l),l&&q&2048&&au(m.alternate,m);break;default:os(c,m,v,A,l)}t=t.sibling}}function ao(e,t){if(t.subtreeFlags&10256)for(t=t.child;t!==null;){var n=e,i=t,l=i.flags;switch(i.tag){case 22:ao(n,i),l&2048&&tu(i.alternate,i);break;case 24:ao(n,i),l&2048&&au(i.alternate,i);break;default:ao(n,i)}t=t.sibling}}var no=8192;function rs(e,t,n){if(e.subtreeFlags&no)for(e=e.child;e!==null;)uf(e,t,n),e=e.sibling}
vendor: 5,387 bytes, line 9
9function uf(e,t,n){switch(e.tag){case 26:rs(e,t,n),e.flags&no&&e.memoizedState!==null&&Aw(n,Aa,e.memoizedState,e.memoizedProps);break;case 5:rs(e,t,n);break;case 3:case 4:var i=Aa;Aa=Hr(e.stateNode.containerInfo),rs(e,t,n),Aa=i;break;case 22:e.memoizedState===null&&(i=e.alternate,i!==null&&i.memoizedState!==null?(i=no,no=16777216,rs(e,t,n),no=i):rs(e,t,n));break;default:rs(e,t,n)}}function df(e){var t=e.alternate;if(t!==null&&(e=t.child,e!==null)){t.child=null;do t=e.sibling,e.sibling=null,e=t;while(e!==null)}}function io(e){var t=e.deletions;if((e.flags&16)!==0){if(t!==null)for(var n=0;n<t.length;n++){var i=t[n];St=i,mf(i,e)}df(e)}if(e.subtreeFlags&10256)for(e=e.child;e!==null;)hf(e),e=e.sibling}function hf(e){switch(e.tag){case 0:case 11:case 15:io(e),e.flags&2048&&Tn(9,e,e.return);break;case 3:io(e);break;case 12:io(e);break;case 22:var t=e.stateNode;e.memoizedState!==null&&t._visibility&2&&(e.return===null||e.return.tag!==13)?(t._visibility&=-3,Tr(e)):io(e);break;default:io(e)}}function Tr(e){var t=e.deletions;if((e.flags&16)!==0){if(t!==null)for(var n=0;n<t.length;n++){var i=t[n];St=i,mf(i,e)}df(e)}for(e=e.child;e!==null;){switch(t=e,t.tag){case 0:case 11:case 15:Tn(8,t,t.return),Tr(t);break;case 22:n=t.stateNode,n._visibility&2&&(n._visibility&=-3,Tr(t));break;default:Tr(t)}e=e.sibling}}function mf(e,t){for(;St!==null;){var n=St;switch(n.tag){case 0:case 11:case 15:Tn(8,n,t);break;case 23:case 22:if(n.memoizedState!==null&&n.memoizedState.cachePool!==null){var i=n.memoizedState.cachePool.pool;i!=null&&i.refCount++}break;case 24:Bs(n.memoizedState.cache)}if(i=n.child,i!==null)i.return=n,St=i;else e:for(n=e;St!==null;){i=St;var l=i.sibling,c=i.return;if(af(i),i===n){St=null;break e}if(l!==null){l.return=c,St=l;break e}St=c}}}var Ib={getCacheForType:function(e){var t=Rt(rt),n=t.data.get(e);return n===void 0&&(n=e(),t.data.set(e,n)),n},cacheSignal:function(){return Rt(rt).controller.signal}},jb=typeof WeakMap=="function"?WeakMap:Map,Le=0,Ge=null,Ce=null,Re=0,He=0,ia=null,Mn=!1,ls=!1,nu=!1,nn=0,at=0,Cn=0,bi=0,iu=0,sa=0,cs=0,so=null,Ft=null,su=!1,Mr=0,ff=0,Cr=1/0,_r=null,_n=null,ft=0,Rn=null,us=null,sn=0,ou=0,ru=null,pf=null,oo=0,lu=null;function oa(){return(Le&2)!==0&&Re!==0?Re&-Re:z.T!==null?fu():_l()}function gf(){if(sa===0)if((Re&536870912)===0||De){var e=Ni;Ni<<=1,(Ni&3932160)===0&&(Ni=262144),sa=e}else sa=536870912;return e=aa.current,e!==null&&(e.flags|=32),sa}function Kt(e,t,n){(e===Ge&&(He===2||He===9)||e.cancelPendingCommit!==null)&&(ds(e,0),En(e,Re,sa,!1)),$e(e,n),((Le&2)===0||e!==Ge)&&(e===Ge&&((Le&2)===0&&(bi|=n),at===4&&En(e,Re,sa,!1)),Pa(e))}function yf(e,t,n){if((Le&6)!==0)throw Error(r(327));var i=!n&&(t&127)===0&&(t&e.expiredLanes)===0||Xe(e,t),l=i?Vb(e,t):uu(e,t,!0),c=i;do{if(l===0){ls&&!i&&En(e,t,0,!1);break}else{if(n=e.current.alternate,c&&!Bb(n)){l=uu(e,t,!1),c=!1;continue}if(l===2){if(c=t,e.errorRecoveryDisabledLanes&c)var m=0;else m=e.pendingLanes&-536870913,m=m!==0?m:m&536870912?536870912:0;if(m!==0){t=m;e:{var v=e;l=so;var A=v.current.memoizedState.isDehydrated;if(A&&(ds(v,m).flags|=256),m=uu(v,m,!1),m!==2){if(nu&&!A){v.errorRecoveryDisabledLanes|=c,bi|=c,l=4;break e}c=Ft,Ft=l,c!==null&&(Ft===null?Ft=c:Ft.push.apply(Ft,c))}l=m}if(c=!1,l!==2)continue}}if(l===1){ds(e,0),En(e,t,0,!0);break}e:{switch(i=e,c=l,c){case 0:case 1:throw Error(r(345));case 4:if((t&4194048)!==t)break;case 6:En(i,t,sa,!Mn);break e;case 2:Ft=null;break;case 3:case 5:break;default:throw Error(r(329))}if((t&62914560)===t&&(l=Mr+300-bt(),10<l)){if(En(i,t,sa,!Mn),be(i,0,!0)!==0)break e;sn=t,i.timeoutHandle=Kf(vf.bind(null,i,n,Ft,_r,su,t,sa,bi,cs,Mn,c,"Throttled",-0,0),l);break e}vf(i,n,Ft,_r,su,t,sa,bi,cs,Mn,c,null,-0,0)}}break}while(!0);Pa(e)}function vf(e,t,n,i,l,c,m,v,A,q,j,F,L,H){if(e.timeoutHandle=-1,F=t.subtreeFlags,F&8192||(F&16785408)===16785408){F={stylesheets:null,count:0,imgCount:0,imgBytes:0,suspenseyImages:[],waitingForImages:!0,waitingForViewTransition:!1,unsuspend:Va},uf(t,c,F);var re=(c&62914560)===c?Mr-bt():(c&4194048)===c?ff-bt():0;if(re=Tw(F,re),re!==null){sn=c,e.cancelPendingCommit=re(Mf.bind(null,e,t,c,n,i,l,m,v,A,j,F,null,L,H)),En(e,c,m,!q);return}}Mf(e,t,c,n,i,l,m,v,A)}function Bb(e){for(var t=e;;){var n=t.tag;if((n===0||n===11||n===15)&&t.flags&16384&&(n=t.updateQueue,n!==null&&(n=n.stores,n!==null)))for(var i=0;i<n.length;i++){var l=n[i],c=l.getSnapshot;l=l.value;try{if(!ea(c(),l))return!1}catch{return!1}}if(n=t.child,t.subtreeFlags&16384&&n!==null)n.return=t,t=n;else{if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return!0;t=t.return}t.sibling.return=t.return,t=t.sibling}}return!0}function En(e,t,n,i){t&=~iu,t&=~bi,e.suspendedLanes|=t,e.pingedLanes&=~t,i&&(e.warmLanes|=t),i=e.expirationTimes;for(var l=t;0<l;){var c=31-Pt(l),m=1<<c;i[c]=-1,l&=~m}n!==0&&ai(e,n,t)}function Rr(){return(Le&6)===0?(ro(0),!1):!0}function cu(){if(Ce!==null){if(He===0)var e=Ce.return;else e=Ce,Fa=ui=null,Tc(e),ts=null,Vs=0,e=Ce;for(;e!==null;)Km(e.alternate,e),e=e.return;Ce=null}}function ds(e,t){var n=e.timeoutHandle;n!==-1&&(e.timeoutHandle=-1,rw(n)),n=e.cancelPendingCommit,n!==null&&(e.cancelPendingCommit=null,n()),sn=0,cu(),Ge=e,Ce=n=Ya(e.current,null),Re=t,He=0,ia=null,Mn=!1,ls=Xe(e,t),nu=!1,cs=sa=iu=bi=Cn=at=0,Ft=so=null,su=!1,(t&8)!==0&&(t|=t&32);var i=e.entangledLanes;if(i!==0)for(e=e.entanglements,i&=t;0<i;){var l=31-Pt(i),c=1<<l;t|=e[l],i&=~c}return nn=t,Qo(),n}
vendor: 4,344 bytes, line 9
9function bf(e,t){xe=null,z.H=Zs,t===es||t===ir?(t=Ph(),He=3):t===mc?(t=Ph(),He=4):He=t===Bc?8:t!==null&&typeof t=="object"&&typeof t.then=="function"?6:1,ia=t,Ce===null&&(at=1,vr(e,ma(t,e.current)))}function wf(){var e=aa.current;return e===null?!0:(Re&4194048)===Re?ya===null:(Re&62914560)===Re||(Re&536870912)!==0?e===ya:!1}function kf(){var e=z.H;return z.H=Zs,e===null?Zs:e}function Sf(){var e=z.A;return z.A=Ib,e}function Er(){at=4,Mn||(Re&4194048)!==Re&&aa.current!==null||(ls=!0),(Cn&134217727)===0&&(bi&134217727)===0||Ge===null||En(Ge,Re,sa,!1)}function uu(e,t,n){var i=Le;Le|=2;var l=kf(),c=Sf();(Ge!==e||Re!==t)&&(_r=null,ds(e,t)),t=!1;var m=at;e:do try{if(He!==0&&Ce!==null){var v=Ce,A=ia;switch(He){case 8:cu(),m=6;break e;case 3:case 2:case 9:case 6:aa.current===null&&(t=!0);var q=He;if(He=0,ia=null,hs(e,v,A,q),n&&ls){m=0;break e}break;default:q=He,He=0,ia=null,hs(e,v,A,q)}}Ub(),m=at;break}catch(j){bf(e,j)}while(!0);return t&&e.shellSuspendCounter++,Fa=ui=null,Le=i,z.H=l,z.A=c,Ce===null&&(Ge=null,Re=0,Qo()),m}function Ub(){for(;Ce!==null;)xf(Ce)}function Vb(e,t){var n=Le;Le|=2;var i=kf(),l=Sf();Ge!==e||Re!==t?(_r=null,Cr=bt()+500,ds(e,t)):ls=Xe(e,t);e:do try{if(He!==0&&Ce!==null){t=Ce;var c=ia;t:switch(He){case 1:He=0,ia=null,hs(e,t,c,1);break;case 2:case 9:if(Nh(c)){He=0,ia=null,Af(t);break}t=function(){He!==2&&He!==9||Ge!==e||(He=7),Pa(e)},c.then(t,t);break e;case 3:He=7;break e;case 4:He=5;break e;case 7:Nh(c)?(He=0,ia=null,Af(t)):(He=0,ia=null,hs(e,t,c,7));break;case 5:var m=null;switch(Ce.tag){case 26:m=Ce.memoizedState;case 5:case 27:var v=Ce;if(m?cp(m):v.stateNode.complete){He=0,ia=null;var A=v.sibling;if(A!==null)Ce=A;else{var q=v.return;q!==null?(Ce=q,Dr(q)):Ce=null}break t}}He=0,ia=null,hs(e,t,c,5);break;case 6:He=0,ia=null,hs(e,t,c,6);break;case 8:cu(),at=6;break e;default:throw Error(r(462))}}Gb();break}catch(j){bf(e,j)}while(!0);return Fa=ui=null,z.H=i,z.A=l,Le=n,Ce!==null?0:(Ge=null,Re=0,Qo(),at)}function Gb(){for(;Ce!==null&&!vt();)xf(Ce)}function xf(e){var t=Wm(e.alternate,e,nn);e.memoizedProps=e.pendingProps,t===null?Dr(e):Ce=t}function Af(e){var t=e,n=t.alternate;switch(t.tag){case 15:case 0:t=jm(n,t,t.pendingProps,t.type,void 0,Re);break;case 11:t=jm(n,t,t.pendingProps,t.type.render,t.ref,Re);break;case 5:Tc(t);default:Km(n,t),t=Ce=kh(t,nn),t=Wm(n,t,nn)}e.memoizedProps=e.pendingProps,t===null?Dr(e):Ce=t}function hs(e,t,n,i){Fa=ui=null,Tc(t),ts=null,Vs=0;var l=t.return;try{if(Nb(e,l,t,n,Re)){at=1,vr(e,ma(n,e.current)),Ce=null;return}}catch(c){if(l!==null)throw Ce=l,c;at=1,vr(e,ma(n,e.current)),Ce=null;return}t.flags&32768?(De||i===1?e=!0:ls||(Re&536870912)!==0?e=!1:(Mn=e=!0,(i===2||i===9||i===3||i===6)&&(i=aa.current,i!==null&&i.tag===13&&(i.flags|=16384))),Tf(t,e)):Dr(t)}function Dr(e){var t=e;do{if((t.flags&32768)!==0){Tf(t,Mn);return}e=t.return;var n=qb(t.alternate,t,nn);if(n!==null){Ce=n;return}if(t=t.sibling,t!==null){Ce=t;return}Ce=t=e}while(t!==null);at===0&&(at=5)}function Tf(e,t){do{var n=Lb(e.alternate,e);if(n!==null){n.flags&=32767,Ce=n;return}if(n=e.return,n!==null&&(n.flags|=32768,n.subtreeFlags=0,n.deletions=null),!t&&(e=e.sibling,e!==null)){Ce=e;return}Ce=e=n}while(e!==null);at=6,Ce=null}function Mf(e,t,n,i,l,c,m,v,A){e.cancelPendingCommit=null;do Nr();while(ft!==0);if((Le&6)!==0)throw Error(r(327));if(t!==null){if(t===e.current)throw Error(r(177));if(c=t.lanes|t.childLanes,c|=$l,It(e,n,c,m,v,A),e===Ge&&(Ce=Ge=null,Re=0),us=t,Rn=e,sn=n,ou=c,ru=l,pf=i,(t.subtreeFlags&10256)!==0||(t.flags&10256)!==0?(e.callbackNode=null,e.callbackPriority=0,Kb(ja,function(){return Df(),null})):(e.callbackNode=null,e.callbackPriority=0),i=(t.flags&13878)!==0,(t.subtreeFlags&13878)!==0||i){i=z.T,z.T=null,l=K.p,K.p=2,m=Le,Le|=4;try{Ob(e,t,n)}finally{Le=m,K.p=l,z.T=i}}ft=1,Cf(),_f(),Rf()}}function Cf(){if(ft===1){ft=0;var e=Rn,t=us,n=(t.flags&13878)!==0;if((t.subtreeFlags&13878)!==0||n){n=z.T,z.T=null;var i=K.p;K.p=2;var l=Le;Le|=4;try{rf(t,e);var c=Su,m=hh(e.containerInfo),v=c.focusedElem,A=c.selectionRange;if(m!==v&&v&&v.ownerDocument&&dh(v.ownerDocument.documentElement,v)){if(A!==null&&Fl(v)){var q=A.start,j=A.end;if(j===void 0&&(j=q),"selectionStart"in v)v.selectionStart=q,v.selectionEnd=Math.min(j,v.value.length);else{var F=v.ownerDocument||document,L=F&&F.defaultView||window;if(L.getSelection){var H=L.getSelection(),re=v.textContent.length,pe=M
vendor: 17,071 bytes, lines 9-10
9ath.min(A.start,re),Ve=A.end===void 0?pe:Math.min(A.end,re);!H.extend&&pe>Ve&&(m=Ve,Ve=pe,pe=m);var N=uh(v,pe),R=uh(v,Ve);if(N&&R&&(H.rangeCount!==1||H.anchorNode!==N.node||H.anchorOffset!==N.offset||H.focusNode!==R.node||H.focusOffset!==R.offset)){var P=F.createRange();P.setStart(N.node,N.offset),H.removeAllRanges(),pe>Ve?(H.addRange(P),H.extend(R.node,R.offset)):(P.setEnd(R.node,R.offset),H.addRange(P))}}}}for(F=[],H=v;H=H.parentNode;)H.nodeType===1&&F.push({element:H,left:H.scrollLeft,top:H.scrollTop});for(typeof v.focus=="function"&&v.focus(),v=0;v<F.length;v++){var Y=F[v];Y.element.scrollLeft=Y.left,Y.element.scrollTop=Y.top}}Gr=!!ku,Su=ku=null}finally{Le=l,K.p=i,z.T=n}}e.current=t,ft=2}}function _f(){if(ft===2){ft=0;var e=Rn,t=us,n=(t.flags&8772)!==0;if((t.subtreeFlags&8772)!==0||n){n=z.T,z.T=null;var i=K.p;K.p=2;var l=Le;Le|=4;try{tf(e,t.alternate,t)}finally{Le=l,K.p=i,z.T=n}}ft=3}}function Rf(){if(ft===4||ft===3){ft=0,_a();var e=Rn,t=us,n=sn,i=pf;(t.subtreeFlags&10256)!==0||(t.flags&10256)!==0?ft=5:(ft=0,us=Rn=null,Ef(e,e.pendingLanes));var l=e.pendingLanes;if(l===0&&(_n=null),Sa(n),t=t.stateNode,Ot&&typeof Ot.onCommitFiberRoot=="function")try{Ot.onCommitFiberRoot(ei,t,void 0,(t.current.flags&128)===128)}catch{}if(i!==null){t=z.T,l=K.p,K.p=2,z.T=null;try{for(var c=e.onRecoverableError,m=0;m<i.length;m++){var v=i[m];c(v.value,{componentStack:v.stack})}}finally{z.T=t,K.p=l}}(sn&3)!==0&&Nr(),Pa(e),l=e.pendingLanes,(n&261930)!==0&&(l&42)!==0?e===lu?oo++:(oo=0,lu=e):oo=0,ro(0)}}function Ef(e,t){(e.pooledCacheLanes&=t)===0&&(t=e.pooledCache,t!=null&&(e.pooledCache=null,Bs(t)))}function Nr(){return Cf(),_f(),Rf(),Df()}function Df(){if(ft!==5)return!1;var e=Rn,t=ou;ou=0;var n=Sa(sn),i=z.T,l=K.p;try{K.p=32>n?32:n,z.T=null,n=ru,ru=null;var c=Rn,m=sn;if(ft=0,us=Rn=null,sn=0,(Le&6)!==0)throw Error(r(331));var v=Le;if(Le|=4,hf(c.current),cf(c,c.current,m,n),Le=v,ro(0,!1),Ot&&typeof Ot.onPostCommitFiberRoot=="function")try{Ot.onPostCommitFiberRoot(ei,c)}catch{}return!0}finally{K.p=l,z.T=i,Ef(e,t)}}function Nf(e,t,n){t=ma(n,t),t=jc(e.stateNode,t,2),e=Sn(e,t,2),e!==null&&($e(e,2),Pa(e))}function Ie(e,t,n){if(e.tag===3)Nf(e,e,n);else for(;t!==null;){if(t.tag===3){Nf(t,e,n);break}else if(t.tag===1){var i=t.stateNode;if(typeof t.type.getDerivedStateFromError=="function"||typeof i.componentDidCatch=="function"&&(_n===null||!_n.has(i))){e=ma(n,e),n=Nm(2),i=Sn(t,n,2),i!==null&&(zm(n,i,t,e),$e(i,2),Pa(i));break}}t=t.return}}function du(e,t,n){var i=e.pingCache;if(i===null){i=e.pingCache=new jb;var l=new Set;i.set(t,l)}else l=i.get(t),l===void 0&&(l=new Set,i.set(t,l));l.has(n)||(nu=!0,l.add(n),e=Yb.bind(null,e,t,n),t.then(e,e))}function Yb(e,t,n){var i=e.pingCache;i!==null&&i.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,Ge===e&&(Re&n)===n&&(at===4||at===3&&(Re&62914560)===Re&&300>bt()-Mr?(Le&2)===0&&ds(e,0):iu|=n,cs===Re&&(cs=0)),Pa(e)}function zf(e,t){t===0&&(t=qt()),e=ri(e,t),e!==null&&($e(e,t),Pa(e))}function Wb(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),zf(e,n)}function Fb(e,t){var n=0;switch(e.tag){case 31:case 13:var i=e.stateNode,l=e.memoizedState;l!==null&&(n=l.retryLane);break;case 19:i=e.stateNode;break;case 22:i=e.stateNode._retryCache;break;default:throw Error(r(314))}i!==null&&i.delete(t),zf(e,n)}function Kb(e,t){return Jt(e,t)}var zr=null,ms=null,hu=!1,Pr=!1,mu=!1,Dn=0;function Pa(e){e!==ms&&e.next===null&&(ms===null?zr=ms=e:ms=ms.next=e),Pr=!0,hu||(hu=!0,Qb())}function ro(e,t){if(!mu&&Pr){mu=!0;do for(var n=!1,i=zr;i!==null;){if(e!==0){var l=i.pendingLanes;if(l===0)var c=0;else{var m=i.suspendedLanes,v=i.pingedLanes;c=(1<<31-Pt(42|e)+1)-1,c&=l&~(m&~v),c=c&201326741?c&201326741|1:c?c|2:0}c!==0&&(n=!0,Of(i,c))}else c=Re,c=be(i,i===Ge?c:0,i.cancelPendingCommit!==null||i.timeoutHandle!==-1),(c&3)===0||Xe(i,c)||(n=!0,Of(i,c));i=i.next}while(n);mu=!1}}function Xb(){Pf()}function Pf(){Pr=hu=!1;var e=0;Dn!==0&&ow()&&(e=Dn);for(var t=bt(),n=null,i=zr;i!==null;){var l=i.next,c=qf(i,t);c===0?(i.next=null,n===null?zr=l:n.next=l,l===null&&(ms=n)):(n=i,(e!==0||(c&3)!==0)&&(Pr=!0)),i=l}ft!==0&&ft!==5||ro(e),Dn!==0&&(Dn=0)}function qf(e,t){for(var n=e.suspendedLanes,i=e.pingedLanes,l=e.expirationTimes,c=e.pendingLanes&-62914561;0<c;){var m=31-Pt(c),v=1<<m,A=l[m];A===-1?((v&n)===0||(v&i)!==0)&&(l[m]=wt(v,t)):A<=t&&(e.expiredLanes|=v),c&=~v}if(t=Ge,n=Re,n=be(e,e===t?n:0,e.cancelPendingCommit!==null||e.timeoutHandle!==-1),i=e.callbackNode,n===0||e===t&&(He===2||He===9)||e.cancelPendingCommit!==null)return i!==null&&i!==null&&Jn(i),e.callbackNode=null,e.callbackPriority=0;if((n&3)===0||Xe(e,n)){if(t=n&-n,t===e.callbackPriority)return t;switch(i!==null&&Jn(i),Sa(n)){case 2:case 8:n=ca;break;case 32:n=ja;break;case 268435456:n=Ba;break;default:n=ja}return i=Lf.bind(null,e),n=Jt(n,i),e.callbackPriority=t,e.callbackNode=n,t}return i!==null&&i!==null&&Jn(i),e.callbackPriority=2,e.callbackNode=null,2}function Lf(e,t){if(ft!==0&&ft!==5)return e.callbackNode=null,e.callbackPriority=0,null;var n=e.callbackNode;if(Nr()&&e.callbackNode!==n)return null;var i=Re;return i=be(e,e===Ge?i:0,e.cancelPendingCommit!==null||e.timeoutHandle!==-1),i===0?null:(yf(e,i,t),qf(e,bt()),e.callbackNode!=null&&e.callbackNode===n?Lf.bind(null,e):null)}function Of(e,t){if(Nr())return null;yf(e,t,!0)}function Qb(){lw(function(){(Le&6)!==0?Jt(et,Xb):Pf()})}function fu(){if(Dn===0){var e=$i;e===0&&(e=Di,Di<<=1,(Di&261888)===0&&(Di=256)),Dn=e}return Dn}function Hf(e){return e==null||typeof e=="symbol"||typeof e=="boolean"?null:typeof e=="function"?e:Uo(""+e)}function If(e,t){var n=t.ownerDocument.createElement("input");return n.name=t.name,n.value=t.value,e.id&&n.setAttribute("form",e.id),t.parentNode.insertBefore(n,t),e=new FormData(e),n.parentNode.removeChild(n),e}function Zb(e,t,n,i,l){if(t==="submit"&&n&&n.stateNode===l){var c=Hf((l[Ut]||null).action),m=i.submitter;m&&(t=(t=m[Ut]||null)?Hf(t.formAction):m.getAttribute("formAction"),t!==null&&(c=t,m=null));var v=new Wo("action","action",null,i,l);e.push({event:v,listeners:[{instance:null,listener:function(){if(i.defaultPrevented){if(Dn!==0){var A=m?If(l,m):new FormData(l);Pc(n,{pending:!0,data:A,method:l.method,action:c},null,A)}}else typeof c=="function"&&(v.preventDefault(),A=m?If(l,m):new FormData(l),Pc(n,{pending:!0,data:A,method:l.method,action:c},c,A))},currentTarget:l}]})}}for(var pu=0;pu<Zl.length;pu++){var gu=Zl[pu],$b=gu.toLowerCase(),Jb=gu[0].toUpperCase()+gu.slice(1);xa($b,"on"+Jb)}xa(ph,"onAnimationEnd"),xa(gh,"onAnimationIteration"),xa(yh,"onAnimationStart"),xa("dblclick","onDoubleClick"),xa("focusin","onFocus"),xa("focusout","onBlur"),xa(pb,"onTransitionRun"),xa(gb,"onTransitionStart"),xa(yb,"onTransitionCancel"),xa(vh,"onTransitionEnd"),Hi("onMouseEnter",["mouseout","mouseover"]),Hi("onMouseLeave",["mouseout","mouseover"]),Hi("onPointerEnter",["pointerout","pointerover"]),Hi("onPointerLeave",["pointerout","pointerover"]),ni("onChange","change click focusin focusout input keydown keyup selectionchange".split(" ")),ni("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")),ni("onBeforeInput",["compositionend","keypress","textInput","paste"]),ni("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" ")),ni("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" ")),ni("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var lo="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),ew=new Set("beforetoggle cancel close invalid load scroll scrollend toggle".split(" ").concat(lo));function jf(e,t){t=(t&4)!==0;for(var n=0;n<e.length;n++){var i=e[n],l=i.event;i=i.listeners;e:{var c=void 0;if(t)for(var m=i.length-1;0<=m;m--){var v=i[m],A=v.instance,q=v.currentTarget;if(v=v.listener,A!==c&&l.isPropagationStopped())break e;c=v,l.currentTarget=q;try{c(l)}catch(j){Xo(j)}l.currentTarget=null,c=A}else for(m=0;m<i.length;m++){if(v=i[m],A=v.instance,q=v.currentTarget,v=v.listener,A!==c&&l.isPropagationStopped())break e;c=v,l.currentTarget=q;try{c(l)}catch(j){Xo(j)}l.currentTarget=null,c=A}}}}function _e(e,t){var n=t[Rl];n===void 0&&(n=t[Rl]=new Set);var i=e+"__bubble";n.has(i)||(Bf(t,e,2,!1),n.add(i))}function yu(e,t,n){var i=0;t&&(i|=4),Bf(n,e,i,t)}var qr="_reactListening"+Math.random().toString(36).slice(2);function vu(e){if(!e[qr]){e[qr]=!0,zd.forEach(function(n){n!=="selectionchange"&&(ew.has(n)||yu(n,!1,e),yu(n,!0,e))});var t=e.nodeType===9?e:e.ownerDocument;t===null||t[qr]||(t[qr]=!0,yu("selectionchange",!1,t))}}function Bf(e,t,n,i){switch(gp(t)){case 2:var l=_w;break;case 8:l=Rw;break;default:l=zu}n=l.bind(null,t,n,e),l=void 0,!Hl||t!=="touchstart"&&t!=="touchmove"&&t!=="wheel"||(l=!0),i?l!==void 0?e.addEventListener(t,n,{capture:!0,passive:l}):e.addEventListener(t,n,!0):l!==void 0?e.addEventListener(t,n,{passive:l}):e.addEventListener(t,n,!1)}function bu(e,t,n,i,l){var c=i;if((t&1)===0&&(t&2)===0&&i!==null)e:for(;;){if(i===null)return;var m=i.tag;if(m===3||m===4){var v=i.stateNode.containerInfo;if(v===l)break;if(m===4)for(m=i.return;m!==null;){var A=m.tag;if((A===3||A===4)&&m.stateNode.containerInfo===l)return;m=m.return}for(;v!==null;){if(m=qi(v),m===null)return;if(A=m.tag,A===5||A===6||A===26||A===27){i=c=m;continue e}v=v.parentNode}}i=i.return}Yd(function(){var q=c,j=Ll(n),F=[];e:{var L=bh.get(e);if(L!==void 0){var H=Wo,re=e;switch(e){case"keypress":if(Go(n)===0)break e;case"keydown":case"keyup":H=Fv;break;case"focusin":re="focus",H=Ul;break;case"focusout":re="blur",H=Ul;break;case"beforeblur":case"afterblur":H=Ul;break;case"click":if(n.button===2)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":H=Kd;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":H=qv;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":H=Qv;break;case ph:case gh:case yh:H=Hv;break;case vh:H=$v;break;case"scroll":case"scrollend":H=zv;break;case"wheel":H=eb;break;case"copy":case"cut":case"paste":H=jv;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":H=Qd;break;case"toggle":case"beforetoggle":H=ab}var pe=(t&4)!==0,Ve=!pe&&(e==="scroll"||e==="scrollend"),N=pe?L!==null?L+"Capture":null:L;pe=[];for(var R=q,P;R!==null;){var Y=R;if(P=Y.stateNode,Y=Y.tag,Y!==5&&Y!==26&&Y!==27||P===null||N===null||(Y=Es(R,N),Y!=null&&pe.push(co(R,Y,P))),Ve)break;R=R.return}0<pe.length&&(L=new H(L,re,null,n,j),F.push({event:L,listeners:pe}))}}if((t&7)===0){e:{if(L=e==="mouseover"||e==="pointerover",H=e==="mouseout"||e==="pointerout",L&&n!==ql&&(re=n.relatedTarget||n.fromElement)&&(qi(re)||re[Pi]))break e;if((H||L)&&(L=j.window===j?j:(L=j.ownerDocument)?L.defaultView||L.parentWindow:window,H?(re=n.relatedTarget||n.toElement,H=q,re=re?qi(re):null,re!==null&&(Ve=d(re),pe=re.tag,re!==Ve||pe!==5&&pe!==27&&pe!==6)&&(re=null)):(H=null,re=q),H!==re)){if(pe=Kd,Y="onMouseLeave",N="onMouseEnter",R="mouse",(e==="pointerout"||e==="pointerover")&&(pe=Qd,Y="onPointerLeave",N="onPointerEnter",R="pointer"),Ve=H==null?L:Rs(H),P=re==null?L:Rs(re),L=new pe(Y,R+"leave",H,n,j),L.target=Ve,L.relatedTarget=P,Y=null,qi(j)===q&&(pe=new pe(N,R+"enter",re,n,j),pe.target=P,pe.relatedTarget=Ve,Y=pe),Ve=Y,H&&re)t:{for(pe=tw,N=H,R=re,P=0,Y=N;Y;Y=pe(Y))P++;Y=0;for(var me=R;me;me=pe(me))Y++;for(;0<P-Y;)N=pe(N),P--;for(;0<Y-P;)R=pe(R),Y--;for(;P--;){if(N===R||R!==null&&N===R.alternate){pe=N;break t}N=pe(N),R=pe(R)}pe=null}else pe=null;H!==null&&Uf(F,L,H,pe,!1),re!==null&&Ve!==null&&Uf(F,Ve,re,pe,!0)}}e:{if(L=q?Rs(q):window,H=L.nodeName&&L.nodeName.toLowerCase(),H==="select"||H==="input"&&L.type==="file")var Ne=ih;else if(ah(L))if(sh)Ne=hb;else{Ne=ub;var de=cb}else H=L.nodeName,!H||H.toLowerCase()!=="input"||L.type!=="checkbox"&&L.type!=="radio"?q&&Pl(q.elementType)&&(Ne=ih):Ne=db;if(Ne&&(Ne=Ne(e,q))){nh(F,Ne,n,j);break e}de&&de(e,L,q),e==="focusout"&&q&&L.type==="number"&&q.memoizedProps.value!=null&&zl(L,"number",L.value)}switch(de=q?Rs(q):window,e){case"focusin":(ah(de)||de.contentEditable==="true")&&(Gi=de,Kl=q,Hs=null);break;case"focusout":Hs=Kl=Gi=null;break;case"mousedown":Xl=!0;break;case"contextmenu":case"mouseup":case"dragend":Xl=!1,mh(F,n,j);break;case"selectionchange":if(fb)break;case"keydown":case"keyup":mh(F,n,j)}var Te;if(Gl)e:{switch(e){case"compositionstart":var Ee="onCompositionStart";break e;case"compositionend":Ee="onCompositionEnd";break e;case"compositionupdate":Ee="onCompositionUpdate";break e}Ee=void 0}else Vi?eh(e,n)&&(Ee="onCompositionEnd"):e==="keydown"&&n.keyCode===229&&(Ee="onCompositionStart");Ee&&(Zd&&n.locale!=="ko"&&(Vi||Ee!=="onCompositionStart"?Ee==="onCompositionEnd"&&Vi&&(Te=Wd()):(pn=j,Il="value"in pn?pn.value:pn.textContent,Vi=!0)),de=Lr(q,Ee),0<de.length&&(Ee=new Xd(Ee,e,null,n,j),F.push({event:Ee,listeners:de}),Te?Ee.data=Te:(Te=th(n),Te!==null&&(Ee.data=Te)))),(Te=ib?sb(e,n):ob(e,n))&&(Ee=Lr(q,"onBeforeInput"),0<Ee.length&&(de=new Xd("onBeforeInput","beforeinput",null,n,j),F.push({event:de,listeners:Ee}),de.data=Te)),Zb(F,e,q,n,j)}jf(F,t)})}function co(e,t,n){return{instance:e,listener:t,currentTarget:n}}function Lr(e,t){for(var n=t+"Capture",i=[];e!==null;){var l=e,c=l.stateNode;if(l=l.tag,l!==5&&l!==26&&l!==27||c===null||(l=Es(e,n),l!=null&&i.unshift(co(e,l,c)),l=Es(e,t),l!=null&&i.push(co(e,l,c))),e.tag===3)return i;e=e.return}return[]}function tw(e){if(e===null)return null;do e=e.return;while(e&&e.tag!==5&&e.tag!==27);return e||null}function Uf(e,t,n,i,l){for(var c=t._reactName,m=[];n!==null&&n!==i;){var v=n,A=v.alternate,q=v.stateNode;if(v=v.tag,A!==null&&A===i)break;v!==5&&v!==26&&v!==27||q===null||(A=q,l?(q=Es(n,c),q!=null&&m.unshift(co(n,q,A))):l||(q=Es(n,c),q!=null&&m.push(co(n,q,A)))),n=n.return}m.length!==0&&e.push({event:t,listeners:m})}var aw=/\r\n?/g,nw=/\u0000|\uFFFD/g;function Vf(e){return(typeof e=="string"?e:""+e).replace(aw,`
10`).replace(nw,"")}function Gf(e,t){return t=Vf(t),Vf(e)===t}function Ue(e,t,n,i,l,c){switch(n){case"children":typeof i=="string"?t==="body"||t==="textarea"&&i===""||ji(e,i):(typeof i=="number"||typeof i=="bigint")&&t!=="body"&&ji(e,""+i);break;case"className":jo(e,"class",i);break;case"tabIndex":jo(e,"tabindex",i);break;case"dir":case"role":case"viewBox":case"width":case"height":jo(e,n,i);break;case"style":Vd(e,i,c);break;case"data":if(t!=="object"){jo(e,"data",i);break}case"src":case"href":if(i===""&&(t!=="a"||n!=="href")){e.removeAttribute(n);break}if(i==null||typeof i=="function"||typeof i=="symbol"||typeof i=="boolean"){e.removeAttribute(n);break}i=Uo(""+i),e.setAttribute(n,i);break;case"action":case"formAction":if(typeof i=="function"){e.setAttribute(n,"javascript:throw new Error('A React form was unexpectedly submitted. If you called form.submit() manually, consider using form.requestSubmit() instead. If you\\'re trying to use event.stopPropagation() in a submit event handler, consider also calling event.preventDefault().')");break}else typeof c=="function"&&(n==="formAction"?(t!=="input"&&Ue(e,t,"name",l.name,l,null),Ue(e,t,"formEncType",l.formEncType,l,null),Ue(e,t,"formMethod",l.formMethod,l,null),Ue(e,t,"formTarget",l.formTarget,l,null)):(Ue(e,t,"encType",l.encType,l,null),Ue(e,t,"method",l.method,l,null),Ue(e,t,"target",l.target,l,null)));if(i==null||typeof i=="symbol"||typeof i=="boolean"){e.removeAttribute(n);break}i=Uo(""+i),e.setAttribute(n,i);break;case"onClick":i!=null&&(e.onclick=Va);break;case"onScroll":i!=null&&_e("scroll",e);break;case"onScrollEnd":i!=null&&_e("scrollend",e);break;case"dangerouslySetInnerHTML":if(i!=null){if(typeof i!="object"||!("__html"in i))throw Error(r(61));if(n=i.__html,n!=null){if(l.children!=null)throw Error(r(60));e.innerHTML=n}}break;case"multiple":e.multiple=i&&typeof i!="function"&&typeof i!="symbol";break;case"muted":e.muted=i&&typeof i!="function"&&typeof i!="symbol";break;case"suppressContentEditableWarning":case"suppressHydrationWarning":case"defaultValue":case"defaultChecked":case"innerHTML":case"ref":break;case"autoFocus":break;case"xlinkHref":if(i==null||typeof i=="function"||typeof i=="boolean"||typeof i=="symbol"){e.removeAttribute("xlink:href");break}n=Uo(""+i),e.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",n);break;case"contentEditable":case"spellCheck":case"draggable":case"value":case"autoReverse":case"externalResourcesRequired":case"focusable":case"preserveAlpha":i!=null&&typeof i!="function"&&typeof i!="symbol"?e.setAttribute(n,""+i):e.removeAttribute(n);break;case"inert":case"allowFullScreen":case"async":case"autoPlay":case"controls":case"default":case"defer":case"disabled":case"disablePictureInPicture":case"disableRemotePlayback":case"formNoValidate":case"hidden":case"loop":case"noModule":case"noValidate":case"open":case"playsInl
10ine":case"readOnly":case"required":case"reversed":case"scoped":case"seamless":case"itemScope":i&&typeof i!="function"&&typeof i!="symbol"?e.setAttribute(n,""):e.removeAttribute(n);break;case"capture":case"download":i===!0?e.setAttribute(n,""):i!==!1&&i!=null&&typeof i!="function"&&typeof i!="symbol"?e.setAttribute(n,i):e.removeAttribute(n);break;case"cols":case"rows":case"size":case"span":i!=null&&typeof i!="function"&&typeof i!="symbol"&&!isNaN(i)&&1<=i?e.setAttribute(n,i):e.removeAttribute(n);break;case"rowSpan":case"start":i==null||typeof i=="function"||typeof i=="symbol"||isNaN(i)?e.removeAttribute(n):e.setAttribute(n,i);break;case"popover":_e("beforetoggle",e),_e("toggle",e),Io(e,"popover",i);break;case"xlinkActuate":Ua(e,"http://www.w3.org/1999/xlink","xlink:actuate",i);break;case"xlinkArcrole":Ua(e,"http://www.w3.org/1999/xlink","xlink:arcrole",i);break;case"xlinkRole":Ua(e,"http://www.w3.org/1999/xlink","xlink:role",i);break;case"xlinkShow":Ua(e,"http://www.w3.org/1999/xlink","xlink:show",i);break;case"xlinkTitle":Ua(e,"http://www.w3.org/1999/xlink","xlink:title",i);break;case"xlinkType":Ua(e,"http://www.w3.org/1999/xlink","xlink:type",i);break;case"xmlBase":Ua(e,"http://www.w3.org/XML/1998/namespace","xml:base",i);break;case"xmlLang":Ua(e,"http://www.w3.org/XML/1998/namespace","xml:lang",i);break;case"xmlSpace":Ua(e,"http://www.w3.org/XML/1998/namespace","xml:space",i);break;case"is":Io(e,"is",i);break;case"innerText":case"textContent":break;default:(!(2<n.length)||n[0]!=="o"&&n[0]!=="O"||n[1]!=="n"&&n[1]!=="N")&&(n=Dv.get(n)||n,Io(e,n,i))}}function wu(e,t,n,i,l,c){switch(n){case"style":Vd(e,i,c);break;case"dangerouslySetInnerHTML":if(i!=null){if(typeof i!="object"||!("__html"in i))throw Error(r(61));if(n=i.__html,n!=null){if(l.children!=null)throw Error(r(60));e.innerHTML=n}}break;case"children":typeof i=="string"?ji(e,i):(typeof i=="number"||typeof i=="bigint")&&ji(e,""+i);break;case"onScroll":i!=null&&_e("scroll",e);break;case"onScrollEnd":i!=null&&_e("scrollend",e);break;case"onClick":i!=null&&(e.onclick=Va);break;case"suppressContentEditableWarning":case"suppressHydrationWarning":case"innerHTML":case"ref":break;case"innerText":case"textContent":break;default:if(!Pd.hasOwnProperty(n))e:{if(n[0]==="o"&&n[1]==="n"&&(l=n.endsWith("Capture"),t=n.slice(2,l?n.length-7:void 0),c=e[Ut]||null,c=c!=null?c[n]:null,typeof c=="function"&&e.removeEventListener(t,c,l),typeof i=="function")){typeof c!="function"&&c!==null&&(n in e?e[n]=null:e.hasAttribute(n)&&e.removeAttribute(n)),e.addEventListener(t,i,l);break e}n in e?e[n]=i:i===!0?e.setAttribute(n,""):Io(e,n,i)}}}function Dt(e,t,n){switch(t){case"div":case"span":case"svg":case"path":case"a":case"g":case"p":case"li":break;case"img":_e("error",e),_e("load",e);var i=!1,l=!1,c;for(c in n)if(n.hasOwnProperty(c)){var m=n[c];if(m!=null)switch(c){case"src":i=!0;break;case"srcSet":l=!0;break;case"children":case"dangerouslySetInnerHTML":throw Error(r(137,t));default:Ue(e,t,c,m,n,null)}}l&&Ue(e,t,"srcSet",n.srcSet,n,null),i&&Ue(e,t,"src",n.src,n,null);return;case"input":_e("invalid",e);var v=c=m=l=null,A=null,q=null;for(i in n)if(n.hasOwnProperty(i)){var j=n[i];if(j!=null)switch(i){case"name":l=j;break;case"type":m=j;break;case"checked":A=j;break;case"defaultChecked":q=j;break;case"value":c=j;break;case"defaultValue":v=j;break;case"children":case"dangerouslySetInnerHTML":if(j!=null)throw Error(r(137,t));break;default:Ue(e,t,i,j,n,null)}}Id(e,c,v,A,q,m,l,!1);return;case"select":_e("invalid",e),i=m=c=null;for(l in n)if(n.hasOwnProperty(l)&&(v=n[l],v!=null))switch(l){case"value":c=v;break;case"defaultValue":m=v;break;case"multiple":i=v;default:Ue(e,t,l,v,n,null)}t=c,n=m,e.multiple=!!i,t!=null?Ii(e,!!i,t,!1):n!=null&&Ii(e,!!i,n,!0);return;case"textarea":_e("invalid",e),c=l=i=null;for(m in n)if(n.hasOwnProperty(m)&&(v=n[m],v!=null))switch(m){case"value":i=v;break;case"defaultValue":l=v;break;case"children":c=v;break;case"dangerouslySetInnerHTML":if(v!=null)throw Error(r(91));break;default:Ue(e,t,m,v,n,null)}Bd(e,i,l,c);return;case"option":for(A in n)n.hasOwnProperty(A)&&(i=n[A],i!=null)&&(A==="selected"?e.selected=i&&typeof i!="function"&&typeof i!="symbol":Ue(e,t,A,i,n,null));return;case"dialog":_e("beforetoggle",e),_e("toggle",e),_e("cancel",e),_e("close",e);break;case"iframe":case"object":_e("load",e);break;case"video":case"audio":for(i=0;i<lo.length;i++)_e(lo[i],e);break;case"image":_e("error",e),_e("load",e);break;case"details":_e("toggle",e);break;case"embed":case"source":case"link":_e("error",e),_e("load",e);case"area":case"base":case"br":case"col":case"hr":case"keygen":case"meta":case"param":case"track":case"wbr":case"menuitem":for(q in n)if(n.hasOwnProperty(q)&&(i=n[q],i!=null))switch(q){case"children":case"dangerouslySetInnerHTML":throw Error(r(137,t));default:Ue(e,t,q,i,n,null)}return;default:if(Pl(t)){for(j in n)n.hasOwnProperty(j)&&(i=n[j],i!==void 0&&wu(e,t,j,i,n,void 0));return}}for(v in n)n.hasOwnProperty(v)&&(i=n[v],i!=null&&Ue(e,t,v,i,n,null))}function iw(e,t,n,i){switch(t){case"div":case"span":case"svg":case"path":case"a":case"g":case"p":case"li":break;case"input":var l=null,c=null,m=null,v=null,A=null,q=null,j=null;for(H in n){var F=n[H];if(n.hasOwnProperty(H)&&F!=null)switch(H){case"checked":break;case"value":break;case"defaultValue":A=F;default:i.hasOwnProperty(H)||Ue(e,t,H,null,i,F)}}for(var L in i){var H=i[L];if(F=n[L],i.hasOwnProperty(L)&&(H!=null||F!=null))switch(L){case"type":c=H;break;case"name":l=H;break;case"checked":q=H;break;case"defaultChecked":j=H;break;case"value":m=H;break;case"defaultValue":v=H;break;case"children":case"dangerouslySetInnerHTML":if(H!=null)throw Error(r(137,t));break;default:H!==F&&Ue(e,t,L,H,i,F)}}Nl(e,m,v,A,q,j,c,l);return;case"select":H=m=v=L=null;for(c in n)if(A=n[c],n.hasOwnProperty(c)&&A!=null)switch(c){case"value":break;case"multiple":H=A;default:i.hasOwnProperty(c)||Ue(e,t,c,null,i,A)}for(l in i)if(c=i[l],A=n[l],i.hasOwnProperty(l)&&(c!=null||A!=null))switch(l){case"value":L=c;break;case"defaultValue":v=c;break;case"multiple":m=c;default:c!==A&&Ue(e,t,l,c,i,A)}t=v,n=m,i=H,L!=null?Ii(e,!!n,L,!1):!!i!=!!n&&(t!=null?Ii(e,!!n,t,!0):Ii(e,!!n,n?[]:"",!1));return;case"textarea":H=L=null;for(v in n)if(l=n[v],n.hasOwnProperty(v)&&l!=null&&!i.hasOwnProperty(v))switch(v){case"value":break;case"children":break;default:Ue(e,t,v,null,i,l)}for(m in i)if(l=i[m],c=n[m],i.hasOwnProperty(m)&&(l!=null||c!=null))switch(m){case"value":L=l;break;case"defaultValue":H=l;break;case"children":break;case"dangerouslySetInnerHTML":if(l!=null)throw Error(r(91));break;default:l!==c&&Ue(e,t,m,l,i,c)}jd(e,L,H);return;case"option":for(var re in n)L=n[re],n.hasOwnProperty(re)&&L!=null&&!i.hasOwnProperty(re)&&(re==="selected"?e.selected=!1:Ue(e,t,re,null,i,L));for(A in i)L=i[A],H=n[A],i.hasOwnProperty(A)&&L!==H&&(L!=null||H!=null)&&(A==="selected"?e.selected=L&&typeof L!="function"&&typeof L!="symbol":Ue(e,t,A,L,i,H));return;case"img":case"link":case"area":case"base":case"br":case"col":case"embed":case"hr":case"keygen":case"meta":case"param":case"source":case"track":case"wbr":case"menuitem":for(var pe in n)L=n[pe],n.hasOwnProperty(pe)&&L!=null&&!i.hasOwnProperty(pe)&&Ue(e,t,pe,null,i,L);for(q in i)if(L=i[q],H=n[q],i.hasOwnProperty(q)&&L!==H&&(L!=null||H!=null))switch(q){case"children":case"dangerouslySetInnerHTML":if(L!=null)throw Error(r(137,t));break;default:Ue(e,t,q,L,i,H)}return;default:if(Pl(t)){for(var Ve in n)L=n[Ve],n.hasOwnProperty(Ve)&&L!==void 0&&!i.hasOwnProperty(Ve)&&wu(e,t,Ve,void 0,i,L);for(j in i)L=i[j],H=n[j],!i.hasOwnProperty(j)||L===H||L===void 0&&H===void 0||wu(e,t,j,L,i,H);return}}for(var N in n)L=n[N],n.hasOwnProperty(N)&&L!=null&&!i.hasOwnProperty(N)&&Ue(e,t,N,null,i,L);for(F in i)L=i[F],H=n[F],!i.hasOwnProperty(F)||L===H||L==null&&H==null||Ue(e,t,F,L,i,H)}function Yf(e){switch(e){case"css":case"script":case"font":case"img":case"image":case"input":case"link":return!0;default:return!1}}function sw(){if(typeof performance.getEntriesByType=="function"){for(var e=0,t=0,n=performance.getEntriesByType("resource"),i=0;i<n.length;i++){var l=n[i],c=l.transferSize,m=l.initiatorType,v=l.duration;if(c&&v&&Yf(m)){for(m=0,v=l.responseEnd,i+=1;i<n.length;i++){var A=n[i],q=A.startTime;if(q>v)break;var j=A.transferSize,F=A.initiatorType;j&&Yf(F)&&(A=A.responseEnd,m+=j*(A<v?1:(v-q)/(A-q)))}if(--i,t+=8*(c+m)/(l.duration/1e3),e++,10<e)break}}if(0<e)return t/e/1e6}return navigator.connection&&(e=navigator.connection.downlink,typeof e=="number")?e:5}var ku=null,Su=null;
vendor: 4,349 bytes, line 10
10function Or(e){return e.nodeType===9?e:e.ownerDocument}function Wf(e){switch(e){case"http://www.w3.org/2000/svg":return 1;case"http://www.w3.org/1998/Math/MathML":return 2;default:return 0}}function Ff(e,t){if(e===0)switch(t){case"svg":return 1;case"math":return 2;default:return 0}return e===1&&t==="foreignObject"?0:e}function xu(e,t){return e==="textarea"||e==="noscript"||typeof t.children=="string"||typeof t.children=="number"||typeof t.children=="bigint"||typeof t.dangerouslySetInnerHTML=="object"&&t.dangerouslySetInnerHTML!==null&&t.dangerouslySetInnerHTML.__html!=null}var Au=null;function ow(){var e=window.event;return e&&e.type==="popstate"?e===Au?!1:(Au=e,!0):(Au=null,!1)}var Kf=typeof setTimeout=="function"?setTimeout:void 0,rw=typeof clearTimeout=="function"?clearTimeout:void 0,Xf=typeof Promise=="function"?Promise:void 0,lw=typeof queueMicrotask=="function"?queueMicrotask:typeof Xf<"u"?function(e){return Xf.resolve(null).then(e).catch(cw)}:Kf;function cw(e){setTimeout(function(){throw e})}function Nn(e){return e==="head"}function Qf(e,t){var n=t,i=0;do{var l=n.nextSibling;if(e.removeChild(n),l&&l.nodeType===8)if(n=l.data,n==="/$"||n==="/&"){if(i===0){e.removeChild(l),ys(t);return}i--}else if(n==="$"||n==="$?"||n==="$~"||n==="$!"||n==="&")i++;else if(n==="html")uo(e.ownerDocument.documentElement);else if(n==="head"){n=e.ownerDocument.head,uo(n);for(var c=n.firstChild;c;){var m=c.nextSibling,v=c.nodeName;c[_s]||v==="SCRIPT"||v==="STYLE"||v==="LINK"&&c.rel.toLowerCase()==="stylesheet"||n.removeChild(c),c=m}}else n==="body"&&uo(e.ownerDocument.body);n=l}while(n);ys(t)}function Zf(e,t){var n=e;e=0;do{var i=n.nextSibling;if(n.nodeType===1?t?(n._stashedDisplay=n.style.display,n.style.display="none"):(n.style.display=n._stashedDisplay||"",n.getAttribute("style")===""&&n.removeAttribute("style")):n.nodeType===3&&(t?(n._stashedText=n.nodeValue,n.nodeValue=""):n.nodeValue=n._stashedText||""),i&&i.nodeType===8)if(n=i.data,n==="/$"){if(e===0)break;e--}else n!=="$"&&n!=="$?"&&n!=="$~"&&n!=="$!"||e++;n=i}while(n)}function Tu(e){var t=e.firstChild;for(t&&t.nodeType===10&&(t=t.nextSibling);t;){var n=t;switch(t=t.nextSibling,n.nodeName){case"HTML":case"HEAD":case"BODY":Tu(n),El(n);continue;case"SCRIPT":case"STYLE":continue;case"LINK":if(n.rel.toLowerCase()==="stylesheet")continue}e.removeChild(n)}}function uw(e,t,n,i){for(;e.nodeType===1;){var l=n;if(e.nodeName.toLowerCase()!==t.toLowerCase()){if(!i&&(e.nodeName!=="INPUT"||e.type!=="hidden"))break}else if(i){if(!e[_s])switch(t){case"meta":if(!e.hasAttribute("itemprop"))break;return e;case"link":if(c=e.getAttribute("rel"),c==="stylesheet"&&e.hasAttribute("data-precedence"))break;if(c!==l.rel||e.getAttribute("href")!==(l.href==null||l.href===""?null:l.href)||e.getAttribute("crossorigin")!==(l.crossOrigin==null?null:l.crossOrigin)||e.getAttribute("title")!==(l.title==null?null:l.title))break;return e;case"style":if(e.hasAttribute("data-precedence"))break;return e;case"script":if(c=e.getAttribute("src"),(c!==(l.src==null?null:l.src)||e.getAttribute("type")!==(l.type==null?null:l.type)||e.getAttribute("crossorigin")!==(l.crossOrigin==null?null:l.crossOrigin))&&c&&e.hasAttribute("async")&&!e.hasAttribute("itemprop"))break;return e;default:return e}}else if(t==="input"&&e.type==="hidden"){var c=l.name==null?null:""+l.name;if(l.type==="hidden"&&e.getAttribute("name")===c)return e}else return e;if(e=va(e.nextSibling),e===null)break}return null}function dw(e,t,n){if(t==="")return null;for(;e.nodeType!==3;)if((e.nodeType!==1||e.nodeName!=="INPUT"||e.type!=="hidden")&&!n||(e=va(e.nextSibling),e===null))return null;return e}function $f(e,t){for(;e.nodeType!==8;)if((e.nodeType!==1||e.nodeName!=="INPUT"||e.type!=="hidden")&&!t||(e=va(e.nextSibling),e===null))return null;return e}function Mu(e){return e.data==="$?"||e.data==="$~"}function Cu(e){return e.data==="$!"||e.data==="$?"&&e.ownerDocument.readyState!=="loading"}function hw(e,t){var n=e.ownerDocument;if(e.data==="$~")e._reactRetry=t;else if(e.data!=="$?"||n.readyState!=="loading")t();else{var i=function(){t(),n.removeEventListener("DOMContentLoaded",i)};n.addEventListener("DOMContentLoaded",i),e._reactRetry=i}}function va(e){for(;e!=null;e=e.nextSibling){var t=e.nodeType;if(t===1||t===3)break;if(t===8){if(t=e.data,t==="$"||t==="$!"||t==="$?"||t==="$~"||t==="&"||t==="F!"||t==="F")break;
vendor: 1,179 bytes, line 10
10if(t==="/$"||t==="/&")return null}}return e}var _u=null;function Jf(e){e=e.nextSibling;for(var t=0;e;){if(e.nodeType===8){var n=e.data;if(n==="/$"||n==="/&"){if(t===0)return va(e.nextSibling);t--}else n!=="$"&&n!=="$!"&&n!=="$?"&&n!=="$~"&&n!=="&"||t++}e=e.nextSibling}return null}function ep(e){e=e.previousSibling;for(var t=0;e;){if(e.nodeType===8){var n=e.data;if(n==="$"||n==="$!"||n==="$?"||n==="$~"||n==="&"){if(t===0)return e;t--}else n!=="/$"&&n!=="/&"||t++}e=e.previousSibling}return null}function tp(e,t,n){switch(t=Or(n),e){case"html":if(e=t.documentElement,!e)throw Error(r(452));return e;case"head":if(e=t.head,!e)throw Error(r(453));return e;case"body":if(e=t.body,!e)throw Error(r(454));return e;default:throw Error(r(451))}}function uo(e){for(var t=e.attributes;t.length;)e.removeAttributeNode(t[0]);El(e)}var ba=new Map,ap=new Set;function Hr(e){return typeof e.getRootNode=="function"?e.getRootNode():e.nodeType===9?e:e.ownerDocument}var on=K.d;K.d={f:mw,r:fw,D:pw,C:gw,L:yw,m:vw,X:ww,S:bw,M:kw};function mw(){var e=on.f(),t=Rr();return e||t}function fw(e){var t=Li(e);t!==null&&t.tag===5&&t.type==="form"?vm(t):on.r(e)}var fs=typeof document>"u"?null:document;
vendor: 5,103 bytes, line 10
10function np(e,t,n){var i=fs;if(i&&typeof t=="string"&&t){var l=da(t);l='link[rel="'+e+'"][href="'+l+'"]',typeof n=="string"&&(l+='[crossorigin="'+n+'"]'),ap.has(l)||(ap.add(l),e={rel:e,crossOrigin:n,href:t},i.querySelector(l)===null&&(t=i.createElement("link"),Dt(t,"link",e),kt(t),i.head.appendChild(t)))}}function pw(e){on.D(e),np("dns-prefetch",e,null)}function gw(e,t){on.C(e,t),np("preconnect",e,t)}function yw(e,t,n){on.L(e,t,n);var i=fs;if(i&&e&&t){var l='link[rel="preload"][as="'+da(t)+'"]';t==="image"&&n&&n.imageSrcSet?(l+='[imagesrcset="'+da(n.imageSrcSet)+'"]',typeof n.imageSizes=="string"&&(l+='[imagesizes="'+da(n.imageSizes)+'"]')):l+='[href="'+da(e)+'"]';var c=l;switch(t){case"style":c=ps(e);break;case"script":c=gs(e)}ba.has(c)||(e=f({rel:"preload",href:t==="image"&&n&&n.imageSrcSet?void 0:e,as:t},n),ba.set(c,e),i.querySelector(l)!==null||t==="style"&&i.querySelector(ho(c))||t==="script"&&i.querySelector(mo(c))||(t=i.createElement("link"),Dt(t,"link",e),kt(t),i.head.appendChild(t)))}}function vw(e,t){on.m(e,t);var n=fs;if(n&&e){var i=t&&typeof t.as=="string"?t.as:"script",l='link[rel="modulepreload"][as="'+da(i)+'"][href="'+da(e)+'"]',c=l;switch(i){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":c=gs(e)}if(!ba.has(c)&&(e=f({rel:"modulepreload",href:e},t),ba.set(c,e),n.querySelector(l)===null)){switch(i){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(n.querySelector(mo(c)))return}i=n.createElement("link"),Dt(i,"link",e),kt(i),n.head.appendChild(i)}}}function bw(e,t,n){on.S(e,t,n);var i=fs;if(i&&e){var l=Oi(i).hoistableStyles,c=ps(e);t=t||"default";var m=l.get(c);if(!m){var v={loading:0,preload:null};if(m=i.querySelector(ho(c)))v.loading=5;else{e=f({rel:"stylesheet",href:e,"data-precedence":t},n),(n=ba.get(c))&&Ru(e,n);var A=m=i.createElement("link");kt(A),Dt(A,"link",e),A._p=new Promise(function(q,j){A.onload=q,A.onerror=j}),A.addEventListener("load",function(){v.loading|=1}),A.addEventListener("error",function(){v.loading|=2}),v.loading|=4,Ir(m,t,i)}m={type:"stylesheet",instance:m,count:1,state:v},l.set(c,m)}}}function ww(e,t){on.X(e,t);var n=fs;if(n&&e){var i=Oi(n).hoistableScripts,l=gs(e),c=i.get(l);c||(c=n.querySelector(mo(l)),c||(e=f({src:e,async:!0},t),(t=ba.get(l))&&Eu(e,t),c=n.createElement("script"),kt(c),Dt(c,"link",e),n.head.appendChild(c)),c={type:"script",instance:c,count:1,state:null},i.set(l,c))}}function kw(e,t){on.M(e,t);var n=fs;if(n&&e){var i=Oi(n).hoistableScripts,l=gs(e),c=i.get(l);c||(c=n.querySelector(mo(l)),c||(e=f({src:e,async:!0,type:"module"},t),(t=ba.get(l))&&Eu(e,t),c=n.createElement("script"),kt(c),Dt(c,"link",e),n.head.appendChild(c)),c={type:"script",instance:c,count:1,state:null},i.set(l,c))}}function ip(e,t,n,i){var l=(l=ie.current)?Hr(l):null;if(!l)throw Error(r(446));switch(e){case"meta":case"title":return null;case"style":return typeof n.precedence=="string"&&typeof n.href=="string"?(t=ps(n.href),n=Oi(l).hoistableStyles,i=n.get(t),i||(i={type:"style",instance:null,count:0,state:null},n.set(t,i)),i):{type:"void",instance:null,count:0,state:null};case"link":if(n.rel==="stylesheet"&&typeof n.href=="string"&&typeof n.precedence=="string"){e=ps(n.href);var c=Oi(l).hoistableStyles,m=c.get(e);if(m||(l=l.ownerDocument||l,m={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},c.set(e,m),(c=l.querySelector(ho(e)))&&!c._p&&(m.instance=c,m.state.loading=5),ba.has(e)||(n={rel:"preload",as:"style",href:n.href,crossOrigin:n.crossOrigin,integrity:n.integrity,media:n.media,hrefLang:n.hrefLang,referrerPolicy:n.referrerPolicy},ba.set(e,n),c||Sw(l,e,n,m.state))),t&&i===null)throw Error(r(528,""));return m}if(t&&i!==null)throw Error(r(529,""));return null;case"script":return t=n.async,n=n.src,typeof n=="string"&&t&&typeof t!="function"&&typeof t!="symbol"?(t=gs(n),n=Oi(l).hoistableScripts,i=n.get(t),i||(i={type:"script",instance:null,count:0,state:null},n.set(t,i)),i):{type:"void",instance:null,count:0,state:null};default:throw Error(r(444,e))}}function ps(e){return'href="'+da(e)+'"'}function ho(e){return'link[rel="stylesheet"]['+e+"]"}function sp(e){return f({},e,{"data-precedence":e.precedence,precedence:null})}function Sw(e,t,n,i){e.querySelector('link[rel="preload"][as="style"]['+t+"]")?i.loading=1:(t=e.createElement("link"),i.preload=t,t.addEventListener("load",function(){return i.loading|=1}),t.addEventListener("error",function(){return i.loading|=2}),Dt(t,"link",n),kt(t),e.head.appendChild(t))}function gs(e){return'[src="'+da(e)+'"]'}function mo(e){return"script[async]"+e}function op(e,t,n){if(t.count++,t.instance===null)switch(t.type){case"style":var i=e.querySelector('style[data-href~="'+da(n.href)+'"]');if(i)return t.instance=i,kt(i),i;var l=f({},n,{"data-href":n.href,"data-precedence":n.precedence,href:null,precedence:null});return i=(e.ownerDocument||e).createElement("style"),kt(i),Dt(i,"style",l),Ir(i,n.precedence,e),t.instance=i;case"stylesheet":l=ps(n.href);var c=e.querySelector(ho(l));if(c)return t.state.loading|=4,t.instance=c,kt(c),c;
vendor: 2,796 bytes, line 10
10i=sp(n),(l=ba.get(l))&&Ru(i,l),c=(e.ownerDocument||e).createElement("link"),kt(c);var m=c;return m._p=new Promise(function(v,A){m.onload=v,m.onerror=A}),Dt(c,"link",i),t.state.loading|=4,Ir(c,n.precedence,e),t.instance=c;case"script":return c=gs(n.src),(l=e.querySelector(mo(c)))?(t.instance=l,kt(l),l):(i=n,(l=ba.get(c))&&(i=f({},n),Eu(i,l)),e=e.ownerDocument||e,l=e.createElement("script"),kt(l),Dt(l,"link",i),e.head.appendChild(l),t.instance=l);case"void":return null;default:throw Error(r(443,t.type))}else t.type==="stylesheet"&&(t.state.loading&4)===0&&(i=t.instance,t.state.loading|=4,Ir(i,n.precedence,e));return t.instance}function Ir(e,t,n){for(var i=n.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),l=i.length?i[i.length-1]:null,c=l,m=0;m<i.length;m++){var v=i[m];if(v.dataset.precedence===t)c=v;else if(c!==l)break}c?c.parentNode.insertBefore(e,c.nextSibling):(t=n.nodeType===9?n.head:n,t.insertBefore(e,t.firstChild))}function Ru(e,t){e.crossOrigin==null&&(e.crossOrigin=t.crossOrigin),e.referrerPolicy==null&&(e.referrerPolicy=t.referrerPolicy),e.title==null&&(e.title=t.title)}function Eu(e,t){e.crossOrigin==null&&(e.crossOrigin=t.crossOrigin),e.referrerPolicy==null&&(e.referrerPolicy=t.referrerPolicy),e.integrity==null&&(e.integrity=t.integrity)}var jr=null;function rp(e,t,n){if(jr===null){var i=new Map,l=jr=new Map;l.set(n,i)}else l=jr,i=l.get(n),i||(i=new Map,l.set(n,i));if(i.has(e))return i;for(i.set(e,null),n=n.getElementsByTagName(e),l=0;l<n.length;l++){var c=n[l];if(!(c[_s]||c[Ct]||e==="link"&&c.getAttribute("rel")==="stylesheet")&&c.namespaceURI!=="http://www.w3.org/2000/svg"){var m=c.getAttribute(t)||"";m=e+m;var v=i.get(m);v?v.push(c):i.set(m,[c])}}return i}function lp(e,t,n){e=e.ownerDocument||e,e.head.insertBefore(n,t==="title"?e.querySelector("head > title"):null)}function xw(e,t,n){if(n===1||t.itemProp!=null)return!1;switch(e){case"meta":case"title":return!0;case"style":if(typeof t.precedence!="string"||typeof t.href!="string"||t.href==="")break;return!0;case"link":if(typeof t.rel!="string"||typeof t.href!="string"||t.href===""||t.onLoad||t.onError)break;return t.rel==="stylesheet"?(e=t.disabled,typeof t.precedence=="string"&&e==null):!0;case"script":if(t.async&&typeof t.async!="function"&&typeof t.async!="symbol"&&!t.onLoad&&!t.onError&&t.src&&typeof t.src=="string")return!0}return!1}function cp(e){return!(e.type==="stylesheet"&&(e.state.loading&3)===0)}function Aw(e,t,n,i){if(n.type==="stylesheet"&&(typeof i.media!="string"||matchMedia(i.media).matches!==!1)&&(n.state.loading&4)===0){if(n.instance===null){var l=ps(i.href),c=t.querySelector(ho(l));if(c){t=c._p,t!==null&&typeof t=="object"&&typeof t.then=="function"&&(e.count++,e=Br.bind(e),t.then(e,e)),n.state.loading|=4,n.instance=c,kt(c);return}
vendor: 11,091 bytes, line 10
10c=t.ownerDocument||t,i=sp(i),(l=ba.get(l))&&Ru(i,l),c=c.createElement("link"),kt(c);var m=c;m._p=new Promise(function(v,A){m.onload=v,m.onerror=A}),Dt(c,"link",i),n.instance=c}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(n,t),(t=n.state.preload)&&(n.state.loading&3)===0&&(e.count++,n=Br.bind(e),t.addEventListener("load",n),t.addEventListener("error",n))}}var Du=0;function Tw(e,t){return e.stylesheets&&e.count===0&&Vr(e,e.stylesheets),0<e.count||0<e.imgCount?function(n){var i=setTimeout(function(){if(e.stylesheets&&Vr(e,e.stylesheets),e.unsuspend){var c=e.unsuspend;e.unsuspend=null,c()}},6e4+t);0<e.imgBytes&&Du===0&&(Du=62500*sw());var l=setTimeout(function(){if(e.waitingForImages=!1,e.count===0&&(e.stylesheets&&Vr(e,e.stylesheets),e.unsuspend)){var c=e.unsuspend;e.unsuspend=null,c()}},(e.imgBytes>Du?50:800)+t);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(i),clearTimeout(l)}}:null}function Br(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Vr(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var Ur=null;function Vr(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,Ur=new Map,t.forEach(Mw,e),Ur=null,Br.call(e))}function Mw(e,t){if(!(t.state.loading&4)){var n=Ur.get(e);if(n)var i=n.get(null);else{n=new Map,Ur.set(e,n);for(var l=e.querySelectorAll("link[data-precedence],style[data-precedence]"),c=0;c<l.length;c++){var m=l[c];(m.nodeName==="LINK"||m.getAttribute("media")!=="not all")&&(n.set(m.dataset.precedence,m),i=m)}i&&n.set(null,i)}l=t.instance,m=l.getAttribute("data-precedence"),c=n.get(m)||i,c===i&&n.set(null,l),n.set(m,l),this.count++,i=Br.bind(this),l.addEventListener("load",i),l.addEventListener("error",i),c?c.parentNode.insertBefore(l,c.nextSibling):(e=e.nodeType===9?e.head:e,e.insertBefore(l,e.firstChild)),t.state.loading|=4}}var fo={$$typeof:U,Provider:null,Consumer:null,_currentValue:oe,_currentValue2:oe,_threadCount:0};function Cw(e,t,n,i,l,c,m,v,A){this.tag=1,this.containerInfo=e,this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.next=this.pendingContext=this.context=this.cancelPendingCommit=null,this.callbackPriority=0,this.expirationTimes=mn(-1),this.entangledLanes=this.shellSuspendCounter=this.errorRecoveryDisabledLanes=this.expiredLanes=this.warmLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=mn(0),this.hiddenUpdates=mn(null),this.identifierPrefix=i,this.onUncaughtError=l,this.onCaughtError=c,this.onRecoverableError=m,this.pooledCache=null,this.pooledCacheLanes=0,this.formState=A,this.incompleteTransitions=new Map}function up(e,t,n,i,l,c,m,v,A,q,j,F){return e=new Cw(e,t,n,m,A,q,j,F,v),t=1,c===!0&&(t|=24),c=ta(3,null,null,t),e.current=c,c.stateNode=e,t=uc(),t.refCount++,e.pooledCache=t,t.refCount++,c.memoizedState={element:i,isDehydrated:n,cache:t},fc(c),e}function dp(e){return e?(e=Fi,e):Fi}function hp(e,t,n,i,l,c){l=dp(l),i.context===null?i.context=l:i.pendingContext=l,i=kn(t),i.payload={element:n},c=c===void 0?null:c,c!==null&&(i.callback=c),n=Sn(e,i,t),n!==null&&(Kt(n,e,t),Ys(n,e,t))}function mp(e,t){if(e=e.memoizedState,e!==null&&e.dehydrated!==null){var n=e.retryLane;e.retryLane=n!==0&&n<t?n:t}}function Nu(e,t){mp(e,t),(e=e.alternate)&&mp(e,t)}function fp(e){if(e.tag===13||e.tag===31){var t=ri(e,67108864);t!==null&&Kt(t,e,67108864),Nu(e,67108864)}}function pp(e){if(e.tag===13||e.tag===31){var t=oa();t=zi(t);var n=ri(e,t);n!==null&&Kt(n,e,t),Nu(e,t)}}var Gr=!0;function _w(e,t,n,i){var l=z.T;z.T=null;var c=K.p;try{K.p=2,zu(e,t,n,i)}finally{K.p=c,z.T=l}}function Rw(e,t,n,i){var l=z.T;z.T=null;var c=K.p;try{K.p=8,zu(e,t,n,i)}finally{K.p=c,z.T=l}}function zu(e,t,n,i){if(Gr){var l=Pu(i);if(l===null)bu(e,t,i,Yr,n),yp(e,i);else if(Dw(l,e,t,n,i))i.stopPropagation();else if(yp(e,i),t&4&&-1<Ew.indexOf(e)){for(;l!==null;){var c=Li(l);if(c!==null)switch(c.tag){case 3:if(c=c.stateNode,c.current.memoizedState.isDehydrated){var m=Ea(c.pendingLanes);if(m!==0){var v=c;for(v.pendingLanes|=2,v.entangledLanes|=2;m;){var A=1<<31-Pt(m);v.entanglements[1]|=A,m&=~A}Pa(c),(Le&6)===0&&(Cr=bt()+500,ro(0))}}break;case 31:case 13:v=ri(c,2),v!==null&&Kt(v,c,2),Rr(),Nu(c,2)}if(c=Pu(i),c===null&&bu(e,t,i,Yr,n),c===l)break;l=c}l!==null&&i.stopPropagation()}else bu(e,t,i,null,n)}}function Pu(e){return e=Ll(e),qu(e)}var Yr=null;function qu(e){if(Yr=null,e=qi(e),e!==null){var t=d(e);if(t===null)e=null;else{var n=t.tag;if(n===13){if(e=h(t),e!==null)return e;e=null}else if(n===31){if(e=y(t),e!==null)return e;e=null}else if(n===3){if(t.stateNode.current.memoizedState.isDehydrated)return t.tag===3?t.stateNode.containerInfo:null;e=null}else t!==e&&(e=null)}}return Yr=e,null}function gp(e){switch(e){case"beforetoggle":case"cancel":case"click":case"close":case"contextmenu":case"copy":case"cut":case"auxclick":case"dblclick":case"dragend":case"dragstart":case"drop":case"focusin":case"focusout":case"input":case"invalid":case"keydown":case"keypress":case"keyup":case"mousedown":case"mouseup":case"paste":case"pause":case"play":case"pointercancel":case"pointerdown":case"pointerup":case"ratechange":case"reset":case"resize":case"seeked":case"submit":case"toggle":case"touchcancel":case"touchend":case"touchstart":case"volumechange":case"change":case"selectionchange":case"textInput":case"compositionstart":case"compositionend":case"compositionupdate":case"beforeblur":case"afterblur":case"beforeinput":case"blur":case"fullscreenchange":case"focus":case"hashchange":case"popstate":case"select":case"selectstart":return 2;case"drag":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"mousemove":case"mouseout":case"mouseover":case"pointermove":case"pointerout":case"pointerover":case"scroll":case"touchmove":case"wheel":case"mouseenter":case"mouseleave":case"pointerenter":case"pointerleave":return 8;case"message":switch(je()){case et:return 2;case ca:return 8;case ja:case Ms:return 32;case Ba:return 268435456;default:return 32}default:return 32}}var Lu=!1,zn=null,Pn=null,qn=null,po=new Map,go=new Map,Ln=[],Ew="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset".split(" ");function yp(e,t){switch(e){case"focusin":case"focusout":zn=null;break;case"dragenter":case"dragleave":Pn=null;break;case"mouseover":case"mouseout":qn=null;break;case"pointerover":case"pointerout":po.delete(t.pointerId);break;case"gotpointercapture":case"lostpointercapture":go.delete(t.pointerId)}}function yo(e,t,n,i,l,c){return e===null||e.nativeEvent!==c?(e={blockedOn:t,domEventName:n,eventSystemFlags:i,nativeEvent:c,targetContainers:[l]},t!==null&&(t=Li(t),t!==null&&fp(t)),e):(e.eventSystemFlags|=i,t=e.targetContainers,l!==null&&t.indexOf(l)===-1&&t.push(l),e)}function Dw(e,t,n,i,l){switch(t){case"focusin":return zn=yo(zn,e,t,n,i,l),!0;case"dragenter":return Pn=yo(Pn,e,t,n,i,l),!0;case"mouseover":return qn=yo(qn,e,t,n,i,l),!0;case"pointerover":var c=l.pointerId;return po.set(c,yo(po.get(c)||null,e,t,n,i,l)),!0;case"gotpointercapture":return c=l.pointerId,go.set(c,yo(go.get(c)||null,e,t,n,i,l)),!0}return!1}function vp(e){var t=qi(e.target);if(t!==null){var n=d(t);if(n!==null){if(t=n.tag,t===13){if(t=h(n),t!==null){e.blockedOn=t,Dd(e.priority,function(){pp(n)});return}}else if(t===31){if(t=y(n),t!==null){e.blockedOn=t,Dd(e.priority,function(){pp(n)});return}}else if(t===3&&n.stateNode.current.memoizedState.isDehydrated){e.blockedOn=n.tag===3?n.stateNode.containerInfo:null;return}}}e.blockedOn=null}function Wr(e){if(e.blockedOn!==null)return!1;for(var t=e.targetContainers;0<t.length;){var n=Pu(e.nativeEvent);if(n===null){n=e.nativeEvent;var i=new n.constructor(n.type,n);ql=i,n.target.dispatchEvent(i),ql=null}else return t=Li(n),t!==null&&fp(t),e.blockedOn=n,!1;t.shift()}return!0}function bp(e,t,n){Wr(e)&&n.delete(t)}function Nw(){Lu=!1,zn!==null&&Wr(zn)&&(zn=null),Pn!==null&&Wr(Pn)&&(Pn=null),qn!==null&&Wr(qn)&&(qn=null),po.forEach(bp),go.forEach(bp)}function Fr(e,t){e.blockedOn===t&&(e.blockedOn=null,Lu||(Lu=!0,a.unstable_scheduleCallback(a.unstable_NormalPriority,Nw)))}var Kr=null;function wp(e){Kr!==e&&(Kr=e,a.unstable_scheduleCallback(a.unstable_NormalPriority,function(){Kr===e&&(Kr=null);for(var t=0;t<e.length;t+=3){var n=e[t],i=e[t+1],l=e[t+2];if(typeof i!="function"){if(qu(i||n)===null)continue;break}var c=Li(n);c!==null&&(e.splice(t,3),t-=3,Pc(c,{pending:!0,data:l,method:n.method,action:i},i,l))}}))}function ys(e){function t(A){return Fr(A,e)}zn!==null&&Fr(zn,e),Pn!==null&&Fr(Pn,e),qn!==null&&Fr(qn,e),po.forEach(t),go.forEach(t);for(var n=0;n<Ln.length;n++){var i=Ln[n];i.blockedOn===e&&(i.blockedOn=null)}for(;0<Ln.length&&(n=Ln[0],n.blockedOn===null);)vp(n),n.blockedOn===null&&Ln.shift();if(n=(e.ownerDocument||e).$$reactFormReplay,n!=null)for(i=0;i<n.length;i+=3){var l=n[i],c=n[i+1],m=l[Ut]||null;if(typeof c=="function")m||wp(n);else if(m){var v=null;if(c&&c.hasAttribute("formAction")){if(l=c,m=c[Ut]||null)v=m.formAction;else if(qu(l)!==null)continue}else v=m.action;typeof v=="function"?n[i+1]=v:(n.splice(i,3),i-=3),wp(n)}}}function kp(){function e(c){c.canIntercept&&c.info==="react-transition"&&c.intercept({handler:function(){return new Promise(function(m){return l=m})},focusReset:"manual",scroll:"manual"})}function t(){l!==null&&(l(),l=null),i||setTimeout(n,20)}function n(){if(!i&&!navigation.transition){var c=navigation.currentEntry;c&&c.url!=null&&navigation.navigate(c.url,{state:c.getState(),info:"react-transition",history:"replace"})}}if(typeof navigation=="object"){var i=!1,l=null;return navigation.addEventListener("navigate",e),navigation.addEventListener("navigatesuccess",t),navigation.addEventListener("navigateerror",t),setTimeout(n,100),function(){i=!0,navigation.removeEventListener("navigate",e),navigation.removeEventListener("navigatesuccess",t),navigation.removeEventListener("navigateerror",t),l!==null&&(l(),l=null)}}}function Ou(e){this._internalRoot=e}Xr.prototype.render=Ou.prototype.render=function(e){var t=this._internalRoot;if(t===null)throw Error(r(409));var n=t.current,i=oa();hp(n,i,e,t,null,null)},Xr.prototype.unmount=Ou.prototype.unmount=function(){var e=this._internalRoot;if(e!==null){this._internalRoot=null;var t=e.containerInfo;hp(e.current,2,null,e,null,null),Rr(),t[Pi]=null}};function Xr(e){this._internalRoot=e}Xr.prototype.unstable_scheduleHydration=function(e){if(e){var t=_l();e={blockedOn:null,target:e,priority:t};for(var n=0;n<Ln.length&&t!==0&&t<Ln[n].priority;n++);Ln.splice(n,0,e),n===0&&vp(e)}};var Sp=s.version;if(Sp!=="19.2.5")throw Error(r(527,Sp,"19.2.5"));K.findDOMNode=function(e){var t=e._reactInternals;if(t===void 0)throw typeof e.render=="function"?Error(r(188)):(e=Object.keys(e).join(","),Error(r(268,e)));return e=p(t),e=e!==null?b(e):null,e=e===null?null:e.stateNode,e};var zw={bundleType:0,version:"19.2.5",rendererPackageName:"react-dom",currentDispatcherRef:z,reconcilerVersion:"19.2.5"};
10if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"){var Qr=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!Qr.isDisabled&&Qr.supportsFiber)try{ei=Qr.inject(zw),Ot=Qr}catch{}}return bo.createRoot=function(e,t){if(!u(e))throw Error(r(299));var n=!1,i="",l=_m,c=Rm,m=Em;return t!=null&&(t.unstable_strictMode===!0&&(n=!0),t.identifierPrefix!==void 0&&(i=t.identifierPrefix),t.onUncaughtError!==void 0&&(l=t.onUncaughtError),t.onCaughtError!==void 0&&(c=t.onCaughtError),t.onRecoverableError!==void 0&&(m=t.onRecoverableError)),t=up(e,1,!1,null,null,n,i,null,l,c,m,kp),e[Pi]=t.current,vu(e),new Ou(t)},bo.hydrateRoot=function(e,t,n){if(!u(e))throw Error(r(299));var i=!1,l="",c=_m,m=Rm,v=Em,A=null;return n!=null&&(n.unstable_strictMode===!0&&(i=!0),n.identifierPrefix!==void 0&&(l=n.identifierPrefix),n.onUncaughtError!==void 0&&(c=n.onUncaughtError),n.onCaughtError!==void 0&&(m=n.onCaughtError),n.onRecoverableError!==void 0&&(v=n.onRecoverableError),n.formState!==void 0&&(A=n.formState)),t=up(e,1,!0,t,n??null,i,l,A,c,m,v,kp),t.context=dp(null),n=t.current,i=oa(),i=zi(i),l=kn(i),l.callback=null,Sn(n,l,i),n=i,t.current.lanes=n,$e(t,n),Pa(t),e[Pi]=t.current,vu(e),new Xr(t)},bo.version="19.2.5",bo}var Np;function Uw(){if(Np)return ju.exports;Np=1;function a(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(a)}catch(s){console.error(s)}}return a(),ju.exports=Bw(),ju.exports}var Vw=Uw(),Gw="__TSS_CONTEXT",od=Symbol.for("TSS_SERVER_FUNCTION"),Yw="application/x-tss-framed",rn={JSON:0,CHUNK:1,END:2,ERROR:3},Ww=/;\s*v=(\d+)/;function Fw(a){const s=a.match(Ww);return s?parseInt(s[1],10):void 0}function Kw(a){const s=Fw(a);if(s!==void 0&&s!==1)throw new Error(`Incompatible framed protocol version: server=${s}, client=1. Please ensure client and server are using compatible versions.`)}var Ug=()=>window.__TSS_START_OPTIONS__,Vg=!1;function Eo(a){return a[a.length-1]}function Xw(a){return typeof a=="function"}function Un(a,s){return Xw(a)?a(s):a}var Qw=Object.prototype.hasOwnProperty,zp=Object.prototype.propertyIsEnumerable,Zw=()=>Object.create(null),wi=(a,s)=>Vn(a,s,Zw);function Vn(a,s,o=()=>({}),r=0){if(a===s)return a;if(r>500)return s;const u=s,d=Lp(a)&&Lp(u);if(!d&&!(As(a)&&As(u)))return u;const h=d?a:Pp(a);if(!h)return u;const y=d?u:Pp(u);if(!y)return u;const g=h.length,p=y.length,b=d?new Array(p):o();let f=0;for(let w=0;w<p;w++){const S=d?w:y[w],M=a[S],D=u[S];if(M===D){b[S]=M,(d?w<g:Qw.call(a,S))&&f++;continue}if(M===null||D===null||typeof M!="object"||typeof D!="object"){b[S]=D;continue}const x=Vn(M,D,o,r+1);b[S]=x,x===M&&f++}return g===p&&f===g?a:b}function Pp(a){const s=Object.getOwnPropertyNames(a);for(const u of s)if(!zp.call(a,u))return!1;const o=Object.getOwnPropertySymbols(a);if(o.length===0)return s;const r=s;for(const u of o){if(!zp.call(a,u))return!1;r.push(u)}return r}function As(a){if(!qp(a))return!1;const s=a.constructor;if(typeof s>"u")return!0;const o=s.prototype;return!(!qp(o)||!o.hasOwnProperty("isPrototypeOf"))}function qp(a){return Object.prototype.toString.call(a)==="[object Object]"}function Lp(a){return Array.isArray(a)&&a.length===Object.keys(a).length}function Qt(a,s,o){if(a===s)return!0;if(typeof a!=typeof s)return!1;if(Array.isArray(a)&&Array.isArray(s)){if(a.length!==s.length)return!1;for(let r=0,u=a.length;r<u;r++)if(!Qt(a[r],s[r],o))return!1;return!0}if(As(a)&&As(s)){const r=o?.ignoreUndefined??!0;if(o?.partial){for(const h in s)if((!r||s[h]!==void 0)&&!Qt(a[h],s[h],o))return!1;return!0}let u=0;if(!r)u=Object.keys(a).length;else for(const h in a)a[h]!==void 0&&u++;let d=0;for(const h in s)if((!r||s[h]!==void 0)&&(d++,d>u||!Qt(a[h],s[h],o)))return!1;return u===d}return!1}function Ci(a){let s,o;const r=new Promise((u,d)=>{s=u,o=d});return r.status="pending",r.resolve=u=>{r.status="resolved",r.value=u,s(u),a?.(u)},r.reject=u=>{r.status="rejected",o(u)},r}function $w(a){return typeof a?.message!="string"?!1:a.message.startsWith("Failed to fetch dynamically imported module")||a.message.startsWith("error loading dynamically imported module")||a.message.startsWith("Importing a module script failed")}function Do(a){return!!(a&&typeof a=="object"&&typeof a.then=="function")}function Jw(a){return a.replace(/[\x00-\x1f\x7f]/g,"")}function Op(a){let s;try{s=decodeURI(a)}catch{s=a.replaceAll(/%[0-9A-F]{2}/gi,o=>{try{return decodeURI(o)}catch{return o}})}return Jw(s)}var ek=["http:","https:","mailto:","tel:"];function ll(a,s){if(!a)return!1;try{const o=new URL(a);return!s.has(o.protocol)}catch{return!1}}var tk={"&":"\\u0026",">":"\\u003e","<":"\\u003c","\u2028":"\\u2028","\u2029":"\\u2029"},ak=/[&><\u2028\u2029]/g;function nk(a){return a.replace(ak,s=>tk[s])}function wo(a){if(!a)return{path:a,handledProtocolRelativeURL:!1};if(!/[%\\\x00-\x1f\x7f]/.test(a)&&!a.startsWith("//"))return{path:a,handledProtocolRelativeURL:!1};const s=/%25|%5C/gi;let o=0,r="",u;for(;(u=s.exec(a))!==null;)r+=Op(a.slice(o,u.index))+u[0],o=s.lastIndex;r=r+Op(o?a.slice(o):a);let d=!1;return r.startsWith("//")&&(d=!0,r="/"+r.replace(/^\/+/,"")),{path:r,handledProtocolRelativeURL:d}}function ik(a){return/\s|[^\u0000-\u007F]/.test(a)?a.replace(/\s|[^\u0000-\u007F]/gu,encodeURIComponent):a}function sk(a,s){if(a===s)return!0;
10if(a.length!==s.length)return!1;for(let o=0;o<a.length;o++)if(a[o]!==s[o])return!1;return!0}function $t(){throw new Error("Invariant failed")}function No(a){const s=new Map;let o,r;const u=d=>{d.next&&(d.prev?(d.prev.next=d.next,d.next.prev=d.prev,d.next=void 0,r&&(r.next=d,d.prev=r)):(d.next.prev=void 0,o=d.next,d.next=void 0,r&&(d.prev=r,r.next=d)),r=d)};return{get(d){const h=s.get(d);if(h)return u(h),h.value},set(d,h){if(s.size>=a&&o){const g=o;s.delete(g.key),g.next&&(o=g.next,g.next.prev=void 0),g===r&&(r=void 0)}const y=s.get(d);if(y)y.value=h,u(y);else{const g={key:d,value:h,prev:r};r&&(r.next=g),r=g,o||(o=g),s.set(d,g)}},clear(){s.clear(),o=void 0,r=void 0}}}var Si=4,Gg=5;function ok(a){const s=a.indexOf("{");if(s===-1)return null;const o=a.indexOf("}",s);return o===-1||s+1>=a.length?null:[s,o]}function gd(a,s,o=new Uint16Array(6)){const r=a.indexOf("/",s),u=r===-1?a.length:r,d=a.substring(s,u);if(!d||!d.includes("$"))return o[0]=0,o[1]=s,o[2]=s,o[3]=u,o[4]=u,o[5]=u,o;if(d==="$"){const y=a.length;return o[0]=2,o[1]=s,o[2]=s,o[3]=y,o[4]=y,o[5]=y,o}if(d.charCodeAt(0)===36)return o[0]=1,o[1]=s,o[2]=s+1,o[3]=u,o[4]=u,o[5]=u,o;const h=ok(d);if(h){const[y,g]=h,p=d.charCodeAt(y+1);if(p===45){if(y+2<d.length&&d.charCodeAt(y+2)===36){const b=y+3,f=g;if(b<f)return o[0]=3,o[1]=s+y,o[2]=s+b,o[3]=s+f,o[4]=s+g+1,o[5]=u,o}}else if(p===36){const b=y+1,f=y+2;return f===g?(o[0]=2,o[1]=s+y,o[2]=s+b,o[3]=s+f,o[4]=s+g+1,o[5]=a.length,o):(o[0]=1,o[1]=s+y,o[2]=s+f,o[3]=s+g,o[4]=s+g+1,o[5]=u,o)}}return o[0]=0,o[1]=s,o[2]=s,o[3]=u,o[4]=u,o[5]=u,o}function vl(a,s,o,r,u,d,h){h?.(o);let y=r;{const g=o.fullPath??o.from,p=g.length,b=o.options?.caseSensitive??a,f=!!(o.options?.params?.parse&&o.options?.skipRouteOnParseError?.params);for(;y<p;){const S=gd(g,y,s);let M;const D=y,x=S[5];switch(y=x+1,d++,S[0]){case 0:{const C=g.substring(S[2],S[3]);if(b){const G=u.static?.get(C);if(G)M=G;else{u.static??=new Map;const U=xi(o.fullPath??o.from);U.parent=u,U.depth=d,M=U,u.static.set(C,U)}}else{const G=C.toLowerCase(),U=u.staticInsensitive?.get(G);if(U)M=U;else{u.staticInsensitive??=new Map;const I=xi(o.fullPath??o.from);I.parent=u,I.depth=d,M=I,u.staticInsensitive.set(G,I)}}break}case 1:{const C=g.substring(D,S[1]),G=g.substring(S[4],x),U=b&&!!(C||G),I=C?U?C:C.toLowerCase():void 0,te=G?U?G:G.toLowerCase():void 0,$=!f&&u.dynamic?.find(V=>!V.skipOnParamError&&V.caseSensitive===U&&V.prefix===I&&V.suffix===te);if($)M=$;else{const V=Yu(1,o.fullPath??o.from,U,I,te);M=V,V.depth=d,V.parent=u,u.dynamic??=[],u.dynamic.push(V)}break}case 3:{const C=g.substring(D,S[1]),G=g.substring(S[4],x),U=b&&!!(C||G),I=C?U?C:C.toLowerCase():void 0,te=G?U?G:G.toLowerCase():void 0,$=!f&&u.optional?.find(V=>!V.skipOnParamError&&V.caseSensitive===U&&V.prefix===I&&V.suffix===te);if($)M=$;else{const V=Yu(3,o.fullPath??o.from,U,I,te);M=V,V.parent=u,V.depth=d,u.optional??=[],u.optional.push(V)}break}case 2:{const C=g.substring(D,S[1]),G=g.substring(S[4],x),U=b&&!!(C||G),I=C?U?C:C.toLowerCase():void 0,te=G?U?G:G.toLowerCase():void 0,$=Yu(2,o.fullPath??o.from,U,I,te);M=$,$.parent=u,$.depth=d,u.wildcard??=[],u.wildcard.push($)}}u=M}if(f&&o.children&&!o.isRoot&&o.id&&o.id.charCodeAt(o.id.lastIndexOf("/")+1)===95){const S=xi(o.fullPath??o.from);S.kind=Gg,S.parent=u,d++,S.depth=d,u.pathless??=[],u.pathless.push(S),u=S}const w=(o.path||!o.children)&&!o.isRoot;if(w&&g.endsWith("/")){const S=xi(o.fullPath??o.from);S.kind=Si,S.parent=u,d++,S.depth=d,u.index=S,u=S}u.parse=o.options?.params?.parse??null,u.skipOnParamError=f,u.parsingPriority=o.options?.skipRouteOnParseError?.priority??0,w&&!u.route&&(u.route=o,u.fullPath=o.fullPath??o.from)}if(o.children)for(const g of o.children)vl(a,s,g,y,u,d,h)}function Gu(a,s){if(a.skipOnParamError&&!s.skipOnParamError)return-1;if(!a.skipOnParamError&&s.skipOnParamError)return 1;if(a.skipOnParamError&&s.skipOnParamError&&(a.parsingPriority||s.parsingPriority))return s.parsingPriority-a.parsingPriority;if(a.prefix&&s.prefix&&a.prefix!==s.prefix){if(a.prefix.startsWith(s.prefix))return-1;if(s.prefix.startsWith(a.prefix))return 1}
10if(a.suffix&&s.suffix&&a.suffix!==s.suffix){if(a.suffix.endsWith(s.suffix))return-1;if(s.suffix.endsWith(a.suffix))return 1}return a.prefix&&!s.prefix?-1:!a.prefix&&s.prefix?1:a.suffix&&!s.suffix?-1:!a.suffix&&s.suffix?1:a.caseSensitive&&!s.caseSensitive?-1:!a.caseSensitive&&s.caseSensitive?1:0}function jn(a){if(a.pathless)for(const s of a.pathless)jn(s);if(a.static)for(const s of a.static.values())jn(s);if(a.staticInsensitive)for(const s of a.staticInsensitive.values())jn(s);if(a.dynamic?.length){a.dynamic.sort(Gu);for(const s of a.dynamic)jn(s)}if(a.optional?.length){a.optional.sort(Gu);for(const s of a.optional)jn(s)}if(a.wildcard?.length){a.wildcard.sort(Gu);for(const s of a.wildcard)jn(s)}}function xi(a){return{kind:0,depth:0,pathless:null,index:null,static:null,staticInsensitive:null,dynamic:null,optional:null,wildcard:null,route:null,fullPath:a,parent:null,parse:null,skipOnParamError:!1,parsingPriority:0}}function Yu(a,s,o,r,u){return{kind:a,depth:0,pathless:null,index:null,static:null,staticInsensitive:null,dynamic:null,optional:null,wildcard:null,route:null,fullPath:s,parent:null,parse:null,skipOnParamError:!1,parsingPriority:0,caseSensitive:o,prefix:r,suffix:u}}function rk(a,s){const o=xi("/"),r=new Uint16Array(6);for(const u of a)vl(!1,r,u,1,o,0);jn(o),s.masksTree=o,s.flatCache=No(1e3)}function lk(a,s){a||="/";const o=s.flatCache.get(a);if(o)return o;const r=yd(a,s.masksTree);return s.flatCache.set(a,r),r}function ck(a,s,o,r,u){a||="/",r||="/";const d=s?`case\0${a}`:a;let h=u.singleCache.get(d);return h||(h=xi("/"),vl(s,new Uint16Array(6),{from:a},1,h,0),u.singleCache.set(d,h)),yd(r,h,o)}function uk(a,s,o=!1){const r=o?a:`nofuzz\0${a}`,u=s.matchCache.get(r);if(u!==void 0)return u;a||="/";let d;try{d=yd(a,s.segmentTree,o)}catch(h){if(h instanceof URIError)d=null;else throw h}return d&&(d.branch=mk(d.route)),s.matchCache.set(r,d),d}function dk(a){return a==="/"?a:a.replace(/\/{1,}$/,"")}function hk(a,s=!1,o){const r=xi(a.fullPath),u=new Uint16Array(6),d={},h={};let y=0;return vl(s,u,a,1,r,0,g=>{if(o?.(g,y),g.id in d&&$t(),d[g.id]=g,y!==0&&g.path){const p=dk(g.fullPath);(!h[p]||g.fullPath.endsWith("/"))&&(h[p]=g)}y++}),jn(r),{processedTree:{segmentTree:r,singleCache:No(1e3),matchCache:No(1e3),flatCache:null,masksTree:null},routesById:d,routesByPath:h}}function yd(a,s,o=!1){const r=a.split("/"),u=pk(a,r,s,o);if(!u)return null;const[d]=Yg(a,r,u);return{route:u.node.route,rawParams:d,parsedParams:u.parsedParams}}function Yg(a,s,o){const r=fk(o.node);let u=null;const d=Object.create(null);let h=o.extract?.part??0,y=o.extract?.node??0,g=o.extract?.path??0,p=o.extract?.segment??0;for(;y<r.length;h++,y++,g++,p++){const b=r[y];if(b.kind===Si)break;if(b.kind===Gg){p--,h--,g--;continue}const f=s[h],w=g;if(f&&(g+=f.length),b.kind===1){u??=o.node.fullPath.split("/");const S=u[p],M=b.prefix?.length??0;if(S.charCodeAt(M)===123){const D=b.suffix?.length??0,x=S.substring(M+2,S.length-D-1),C=f.substring(M,f.length-D);d[x]=decodeURIComponent(C)}else{const D=S.substring(1);d[D]=decodeURIComponent(f)}}else if(b.kind===3){if(o.skipped&1<<y){h--,g=w-1;continue}u??=o.node.fullPath.split("/");const S=u[p],M=b.prefix?.length??0,D=b.suffix?.length??0,x=S.substring(M+3,S.length-D-1),C=b.suffix||b.prefix?f.substring(M,f.length-D):f;C&&(d[x]=decodeURIComponent(C))}else if(b.kind===2){const S=b,M=a.substring(w+(S.prefix?.length??0),a.length-(S.suffix?.length??0)),D=decodeURIComponent(M);d["*"]=D,d._splat=D;break}}return o.rawParams&&Object.assign(d,o.rawParams),[d,{part:h,node:y,path:g,segment:p}]}function mk(a){const s=[a];for(;a.parentRoute;)a=a.parentRoute,s.push(a);return s.reverse(),s}function fk(a){const s=Array(a.depth+1);do s[a.depth]=a,a=a.parent;while(a);return s}function pk(a,s,o,r){if(a==="/"&&o.index)return{node:o.index,skipped:0};const u=!Eo(s),d=u&&a!=="/",h=s.length-(u?1:0),y=[{node:o,index:1,skipped:0,depth:1,statics:1,dynamics:0,optionals:0}];let g=null,p=null,b=null;for(;y.length;){const f=y.pop(),{node:w,index:S,skipped:M,depth:D,statics:x,dynamics:C,optionals:G}=f;let{extract:U,rawParams:I,parsedParams:te}=f;if(w.skipOnParamError){if(!Wu(a,s,f))continue;I=f.rawParams,U=f.extract,te=f.parsedParams}r&&w.route&&w.kind!==Si&&ko(p,f)&&(p=f);const $=S===h;if($&&(w.route&&!d&&ko(b,f)&&(b=f),!w.optional&&!w.wildcard&&!w.index&&!w.pathless))continue;const V=$?void 0:s[S];let O;if($&&w.index){const Q={node:w.index,index:S,skipped:M,depth:D+1,statics:x,dynamics:C,optionals:G,extract:U,rawParams:I,parsedParams:te};let he=!0;if(w.index.skipOnParamError&&(Wu(a,s,Q)||(he=!1)),he){if(x===h&&!C&&!G&&!M)return Q;ko(b,Q)&&(b=Q)}}if(w.wildcard&&ko(g,f))for(const Q of w.wildcard){const{prefix:he,suffix:ne}=Q;if(he&&($||!(Q.caseSensitive?V:O??=V.toLowerCase()).startsWith(he)))continue;if(ne){if($)continue;const ye=s.slice(S).join("/").slice(-ne.length);if((Q.caseSensitive?ye:ye.toLowerCase())!==ne)continue}const ge={node:Q,index:h,skipped:M,depth:D,statics:x,dynamics:C,optionals:G,extract:U,rawParams:I,parsedParams:te};
10if(!(Q.skipOnParamError&&!Wu(a,s,ge))){g=ge;break}}if(w.optional){const Q=M|1<<D,he=D+1;for(let ne=w.optional.length-1;ne>=0;ne--){const ge=w.optional[ne];y.push({node:ge,index:S,skipped:Q,depth:he,statics:x,dynamics:C,optionals:G,extract:U,rawParams:I,parsedParams:te})}if(!$)for(let ne=w.optional.length-1;ne>=0;ne--){const ge=w.optional[ne],{prefix:ye,suffix:qe}=ge;if(ye||qe){const Ae=ge.caseSensitive?V:O??=V.toLowerCase();if(ye&&!Ae.startsWith(ye)||qe&&!Ae.endsWith(qe))continue}y.push({node:ge,index:S+1,skipped:M,depth:he,statics:x,dynamics:C,optionals:G+1,extract:U,rawParams:I,parsedParams:te})}}if(!$&&w.dynamic&&V)for(let Q=w.dynamic.length-1;Q>=0;Q--){const he=w.dynamic[Q],{prefix:ne,suffix:ge}=he;if(ne||ge){const ye=he.caseSensitive?V:O??=V.toLowerCase();if(ne&&!ye.startsWith(ne)||ge&&!ye.endsWith(ge))continue}y.push({node:he,index:S+1,skipped:M,depth:D+1,statics:x,dynamics:C+1,optionals:G,extract:U,rawParams:I,parsedParams:te})}if(!$&&w.staticInsensitive){const Q=w.staticInsensitive.get(O??=V.toLowerCase());Q&&y.push({node:Q,index:S+1,skipped:M,depth:D+1,statics:x+1,dynamics:C,optionals:G,extract:U,rawParams:I,parsedParams:te})}if(!$&&w.static){const Q=w.static.get(V);Q&&y.push({node:Q,index:S+1,skipped:M,depth:D+1,statics:x+1,dynamics:C,optionals:G,extract:U,rawParams:I,parsedParams:te})}if(w.pathless){const Q=D+1;for(let he=w.pathless.length-1;he>=0;he--){const ne=w.pathless[he];y.push({node:ne,index:S,skipped:M,depth:Q,statics:x,dynamics:C,optionals:G,extract:U,rawParams:I,parsedParams:te})}}}if(b&&g)return ko(g,b)?b:g;if(b)return b;if(g)return g;if(r&&p){let f=p.index;for(let S=0;S<p.index;S++)f+=s[S].length;const w=f===a.length?"/":a.slice(f);return p.rawParams??=Object.create(null),p.rawParams["**"]=decodeURIComponent(w),p}return null}function Wu(a,s,o){try{const[r,u]=Yg(a,s,o);o.rawParams=r,o.extract=u;const d=o.node.parse(r);return o.parsedParams=Object.assign(Object.create(null),o.parsedParams,d),!0}catch{return null}}function ko(a,s){return a?s.statics>a.statics||s.statics===a.statics&&(s.dynamics>a.dynamics||s.dynamics===a.dynamics&&(s.optionals>a.optionals||s.optionals===a.optionals&&((s.node.kind===Si)>(a.node.kind===Si)||s.node.kind===Si==(a.node.kind===Si)&&s.depth>a.depth))):!0}function nl(a){return vd(a.filter(s=>s!==void 0).join("/"))}function vd(a){return a.replace(/\/{2,}/g,"/")}function Wg(a){return a==="/"?a:a.replace(/^\/{1,}/,"")}function Yn(a){const s=a.length;return s>1&&a[s-1]==="/"?a.replace(/\/{1,}$/,""):a}function Fg(a){return Yn(Wg(a))}function cl(a,s){return a?.endsWith("/")&&a!=="/"&&a!==`${s}/`?a.slice(0,-1):a}function gk(a,s,o){return cl(a,o)===cl(s,o)}function yk({base:a,to:s,trailingSlash:o="never",cache:r}){const u=s.startsWith("/"),d=!u&&s===".";let h;if(r){h=u?s:d?a:a+"\0"+s;const f=r.get(h);if(f)return f}let y;if(d)y=a.split("/");else if(u)y=s.split("/");else{for(y=a.split("/");y.length>1&&Eo(y)==="";)y.pop();const f=s.split("/");for(let w=0,S=f.length;w<S;w++){const M=f[w];M===""?w?w===S-1&&y.push(M):y=[M]:M===".."?y.pop():M==="."||y.push(M)}}y.length>1&&(Eo(y)===""?o==="never"&&y.pop():o==="always"&&y.push(""));let g,p="";for(let f=0;f<y.length;f++){f>0&&(p+="/");const w=y[f];if(!w)continue;g=gd(w,0,g);const S=g[0];if(S===0){p+=w;continue}const M=g[5],D=w.substring(0,g[1]),x=w.substring(g[4],M),C=w.substring(g[2],g[3]);S===1?p+=D||x?`${D}{$${C}}${x}`:`$${C}`:S===2?p+=D||x?`${D}{$}${x}`:"$":p+=`${D}{-$${C}}${x}`}p=vd(p);const b=p||"/";return h&&r&&r.set(h,b),b}function vk(a){const s=new Map(a.map(u=>[encodeURIComponent(u),u])),o=Array.from(s.keys()).map(u=>u.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")).join("|"),r=new RegExp(o,"g");return u=>u.replace(r,d=>s.get(d)??d)}function Fu(a,s,o){const r=s[a];return typeof r!="string"?r:a==="_splat"?/^[a-zA-Z0-9\-._~!/]*$/.test(r)?r:r.split("/").map(u=>Ip(u,o)).join("/"):Ip(r,o)}function Hp({path:a,params:s,decoder:o,...r}){let u=!1;const d=Object.create(null);if(!a||a==="/")return{interpolatedPath:"/",usedParams:d,isMissingParams:u};if(!a.includes("$"))return{interpolatedPath:a,usedParams:d,isMissingParams:u};const h=a.length;let y=0,g,p="";for(;y<h;){const b=y;g=gd(a,b,g);const f=g[5];if(y=f+1,b===f)continue;const w=g[0];if(w===0){p+="/"+a.substring(b,f);continue}if(w===2){const S=s._splat;d._splat=S,d["*"]=S;const M=a.substring(b,g[1]),D=a.substring(g[4],f);if(!S){u=!0,(M||D)&&(p+="/"+M+D);continue}const x=Fu("_splat",s,o);p+="/"+M+x+D;continue}if(w===1){const S=a.substring(g[2],g[3]);!u&&!(S in s)&&(u=!0),d[S]=s[S];const M=a.substring(b,g[1]),D=a.substring(g[4],f),x=Fu(S,s,o)??"undefined";p+="/"+M+x+D;continue}if(w===3){const S=a.substring(g[2],g[3]),M=s[S];if(M==null)continue;d[S]=M;const D=a.substring(b,g[1]),x=a.substring(g[4],f),C=Fu(S,s,o)??"";p+="/"+D+C+x;continue}}return a.endsWith("/")&&(p+="/"),{usedParams:d,interpolatedPath:p||"/",isMissingParams:u}}function Ip(a,s){const o=encodeURIComponent(a);return s?.(o)??o}function Ts(a={}){if(a.isNotFound=!0,a.throw)throw a;return a}function xt(a){return a?.isNotFound===!0}function bk(){try{return typeof window<"u"&&typeof window.sessionStorage=="object"?window.sessionStorage:void 0}catch{return}}var wk="tsr-scroll-restoration-v1_3";function kk(){const a=bk();if(!a)return null;let s={};try{const r=JSON.parse(a.getItem("tsr-scroll-restoration-v1_3")||"{}");As(r)&&(s=r)}catch{}return{get state(){return s},set:r=>{s=Un(r,s)||s},persist:()=>{try{a.setItem(wk,JSON.stringify(s))}catch{}}}}var jp=kk(),Sk=a=>a.state.__TSR_key||a.href;function xk(a){const s=[];let o;for(;o=a.parentNode;)s.push(`${a.tagName}:nth-child(${Array.prototype.indexOf.call(o.children,a)+1})`),a=o;return`${s.reverse().join(" > ")}`.toLowerCase()}var Zr=!1,So="window",Bp="data-scroll-restoration-id";function Ak(a,s){if(!jp)return;const o=jp;if((a.options.scrollRestoration??!1)&&(a.isScrollRestoring=!0),a.isScrollRestorationSetup||!o)return;a.isScrollRestorationSetup=!0,Zr=!1;const r=a.options.getScrollRestorationKey||Sk,u=new Map;window.history.scrollRestoration="manual";const d=y=>{if(!(Zr||!a.isScrollRestoring))if(y.target===document||y.target===window)u.set(So,{scrollX:window.scrollX||0,scrollY:window.scrollY||0});else{const g=y.target;u.set(g,{scrollX:g.scrollLeft||0,scrollY:g.scrollTop||0})}},h=y=>{if(!a.isScrollRestoring||!y||u.size===0||!o)return;const g=o.state[y]||={};for(const[p,b]of u){let f;if(p===So)f=So;else if(p.isConnected){const w=p.getAttribute(Bp);f=w?`[${Bp}="${w}"]`:xk(p)}f&&(g[f]=b)}};document.addEventListener("scroll",d,!0),a.subscribe("onBeforeLoad",y=>{h(y.fromLocation?r(y.fromLocation):void 0),u.clear()}),window.addEventListener("pagehide",()=>{h(r(a.stores.resolvedLocation.get()??a.stores.location.get())),o.persist()}),a.subscribe("onRendered",y=>{const g=r(y.toLocation),p=a.options.scrollRestorationBehavior,b=a.options.scrollToTopSelectors;if(u.clear(),!a.resetNextScroll){a.resetNextScroll=!0;return}if(!(typeof a.options.scrollRestoration=="function"&&!a.options.scrollRestoration({location:a.latestLocation}))){Zr=!0;try{const f=a.isScrollRestoring?o.state[g]:void 0;let w=!1;if(f)for(const S in f){const M=f[S];if(!As(M))continue;const{scrollX:D,scrollY:x}=M;if(!(!Number.isFinite(D)||!Number.isFinite(x))){if(S===So)window.scrollTo({top:x,left:D,behavior:p}),w=!0;else if(S){let C;try{C=document.querySelector(S)}catch{continue}C&&(C.scrollLeft=D,C.scrollTop=x,w=!0)}}}if(!w){const S=a.history.location.hash.slice(1);if(S){const M=window.history.state?.__hashScrollIntoViewOptions??!0;if(M){const D=document.getElementById(S);D&&D.scrollIntoView(M)}}else{const M={top:0,left:0,behavior:p};if(window.scrollTo(M),b)for(const D of b){if(D===So)continue;const x=typeof D=="function"?D():document.querySelector(D);x&&x.scrollTo(M)}}}}finally{Zr=!1}a.isScrollRestoring&&o.set(f=>(f[g]||={},f))}})}function Kg(a,s=String){const o=new URLSearchParams;for(const r in a){const u=a[r];u!==void 0&&o.set(r,s(u))}return o.toString()}function Ku(a){return a?a==="false"?!1:a==="true"?!0:+a*0===0&&+a+""===a?+a:a:""}function Tk(a){const s=new URLSearchParams(a),o=Object.create(null);for(const[r,u]of s.entries()){const d=o[r];d==null?o[r]=Ku(u):Array.isArray(d)?d.push(Ku(u)):o[r]=[d,Ku(u)]}return o}var Mk=_k(JSON.parse),Ck=Rk(JSON.stringify,JSON.parse);function _k(a){return s=>{s[0]==="?"&&(s=s.substring(1));const o=Tk(s);for(const r in o){const u=o[r];if(typeof u=="string")try{o[r]=a(u)}catch{}}return o}}function Rk(a,s){const o=typeof s=="function";function r(u){if(typeof u=="object"&&u!==null)try{return a(u)}catch{}else if(o&&typeof u=="string")try{return s(u),a(u)}catch{}return u}return u=>{const d=Kg(u,r);return d?`?${d}`:""}}var Ti="__root__";function Xg(a){if(a.statusCode=a.statusCode||a.code||307,!a._builtLocation&&!a.reloadDocument&&typeof a.href=="string")try{new URL(a.href),a.reloadDocument=!0}catch{}const s=new Headers(a.headers);a.href&&s.get("Location")===null&&s.set("Location",a.href);const o=new Response(null,{status:a.statusCode,headers:s});if(o.options=a,a.throw)throw o;return o}function Zt(a){return a instanceof Response&&!!a.options}function Ek(a){if(a!==null&&typeof a=="object"&&a.isSerializedRedirect)return Xg(a)}function Dk(a){return{input:({url:s})=>{for(const o of a)s=rd(o,s);return s},output:({url:s})=>{for(let o=a.length-1;o>=0;o--)s=Qg(a[o],s);return s}}}function Nk(a){const s=Fg(a.basepath),o=`/${s}`,r=`${o}/`,u=a.caseSensitive?o:o.toLowerCase(),d=a.caseSensitive?r:r.toLowerCase();return{input:({url:h})=>{const y=a.caseSensitive?h.pathname:h.pathname.toLowerCase();return y===u?h.pathname="/":y.startsWith(d)&&(h.pathname=h.pathname.slice(o.length)),h},output:({url:h})=>(h.pathname=nl(["/",s,h.pathname]),h)}}function rd(a,s){const o=a?.input?.({url:s});
10if(o){if(typeof o=="string")return new URL(o);if(o instanceof URL)return o}return s}function Qg(a,s){const o=a?.output?.({url:s});if(o){if(typeof o=="string")return new URL(o);if(o instanceof URL)return o}return s}function zk(a,s){const{createMutableStore:o,createReadonlyStore:r,batch:u,init:d}=s,h=new Map,y=new Map,g=new Map,p=o(a.status),b=o(a.loadedAt),f=o(a.isLoading),w=o(a.isTransitioning),S=o(a.location),M=o(a.resolvedLocation),D=o(a.statusCode),x=o(a.redirect),C=o([]),G=o([]),U=o([]),I=r(()=>Xu(h,C.get())),te=r(()=>Xu(y,G.get())),$=r(()=>Xu(g,U.get())),V=r(()=>C.get()[0]),O=r(()=>C.get().some(K=>h.get(K)?.get().status==="pending")),Q=r(()=>({locationHref:S.get().href,resolvedLocationHref:M.get()?.href,status:p.get()})),he=r(()=>({status:p.get(),loadedAt:b.get(),isLoading:f.get(),isTransitioning:w.get(),matches:I.get(),location:S.get(),resolvedLocation:M.get(),statusCode:D.get(),redirect:x.get()})),ne=No(64);function ge(K){let oe=ne.get(K);return oe||(oe=r(()=>{const Se=C.get();for(const J of Se){const _=h.get(J);if(_&&_.routeId===K)return _.get()}}),ne.set(K,oe)),oe}const ye={status:p,loadedAt:b,isLoading:f,isTransitioning:w,location:S,resolvedLocation:M,statusCode:D,redirect:x,matchesId:C,pendingIds:G,cachedIds:U,matches:I,pendingMatches:te,cachedMatches:$,firstId:V,hasPending:O,matchRouteDeps:Q,matchStores:h,pendingMatchStores:y,cachedMatchStores:g,__store:he,getRouteMatchStore:ge,setMatches:qe,setPending:Ae,setCached:z};qe(a.matches),d?.(ye);function qe(K){Qu(K,h,C,o,u)}function Ae(K){Qu(K,y,G,o,u)}function z(K){Qu(K,g,U,o,u)}return ye}function Xu(a,s){const o=[];for(const r of s){const u=a.get(r);u&&o.push(u.get())}return o}function Qu(a,s,o,r,u){const d=a.map(y=>y.id),h=new Set(d);u(()=>{for(const y of s.keys())h.has(y)||s.delete(y);for(const y of a){const g=s.get(y.id);if(!g){const p=r(y);p.routeId=y.routeId,s.set(y.id,p);continue}g.routeId=y.routeId,g.get()!==y&&g.set(y)}sk(o.get(),d)||o.set(d)})}var ld=a=>{if(!a.rendered)return a.rendered=!0,a.onReady?.()},Pk=a=>a.stores.matchesId.get().some(s=>a.stores.matchStores.get(s)?.get()._forcePending),bl=(a,s)=>!!(a.preload&&!a.router.stores.matchStores.has(s)),Mi=(a,s,o=!0)=>{const r={...a.router.options.context??{}},u=o?s:s-1;for(let d=0;d<=u;d++){const h=a.matches[d];if(!h)continue;const y=a.router.getMatch(h.id);y&&Object.assign(r,y.__routeContext,y.__beforeLoadContext)}return r},Up=(a,s)=>{if(!a.matches.length)return;const o=s.routeId,r=a.matches.findIndex(h=>h.routeId===a.router.routeTree.id),u=r>=0?r:0;let d=o?a.matches.findIndex(h=>h.routeId===o):a.firstBadMatchIndex??a.matches.length-1;d<0&&(d=u);for(let h=d;h>=0;h--){const y=a.matches[h];if(a.router.looseRoutesById[y.routeId].options.notFoundComponent)return h}return o?d:u},Gn=(a,s,o)=>{if(!(!Zt(o)&&!xt(o)))throw Zt(o)&&o.redirectHandled&&!o.options.reloadDocument||(s&&(s._nonReactive.beforeLoadPromise?.resolve(),s._nonReactive.loaderPromise?.resolve(),s._nonReactive.beforeLoadPromise=void 0,s._nonReactive.loaderPromise=void 0,s._nonReactive.error=o,a.updateMatch(s.id,r=>({...r,status:Zt(o)?"redirected":xt(o)?"notFound":r.status==="pending"?"success":r.status,context:Mi(a,s.index),isFetching:!1,error:o})),xt(o)&&!o.routeId&&(o.routeId=s.routeId),s._nonReactive.loadPromise?.resolve()),Zt(o)&&(a.rendered=!0,o.options._fromLocation=a.location,o.redirectHandled=!0,o=a.router.resolveRedirect(o))),o},Zg=(a,s)=>{const o=a.router.getMatch(s);return!!(!o||o._nonReactive.dehydrated)},Vp=(a,s,o)=>{const r=Mi(a,o);a.updateMatch(s,u=>({...u,context:r}))},xo=(a,s,o,r)=>{const{id:u,routeId:d}=a.matches[s],h=a.router.looseRoutesById[d];if(o instanceof Promise)throw o;o.routerCode=r,a.firstBadMatchIndex??=s,Gn(a,a.router.getMatch(u),o);try{h.options.onError?.(o)}catch(y){o=y,Gn(a,a.router.getMatch(u),o)}a.updateMatch(u,y=>(y._nonReactive.beforeLoadPromise?.resolve(),y._nonReactive.beforeLoadPromise=void 0,y._nonReactive.loadPromise?.resolve(),{...y,error:o,status:"error",isFetching:!1,updatedAt:Date.now(),abortController:new AbortController})),!a.preload&&!Zt(o)&&!xt(o)&&(a.serialError??=o)},$g=(a,s,o,r)=>
10{if(r._nonReactive.pendingTimeout!==void 0)return;const u=o.options.pendingMs??a.router.options.defaultPendingMs;if(a.onReady&&!bl(a,s)&&(o.options.loader||o.options.beforeLoad||ey(o))&&typeof u=="number"&&u!==1/0&&(o.options.pendingComponent??a.router.options?.defaultPendingComponent)){const d=setTimeout(()=>{ld(a)},u);r._nonReactive.pendingTimeout=d}},qk=(a,s,o)=>{const r=a.router.getMatch(s);if(!r._nonReactive.beforeLoadPromise&&!r._nonReactive.loaderPromise)return;$g(a,s,o,r);const u=()=>{const d=a.router.getMatch(s);d.preload&&(d.status==="redirected"||d.status==="notFound")&&Gn(a,d,d.error)};return r._nonReactive.beforeLoadPromise?r._nonReactive.beforeLoadPromise.then(u):u()},Lk=(a,s,o,r)=>{const u=a.router.getMatch(s);let d=u._nonReactive.loadPromise;u._nonReactive.loadPromise=Ci(()=>{d?.resolve(),d=void 0});const{paramsError:h,searchError:y}=u;h&&xo(a,o,h,"PARSE_PARAMS"),y&&xo(a,o,y,"VALIDATE_SEARCH"),$g(a,s,r,u);const g=new AbortController;let p=!1;const b=()=>{p||(p=!0,a.updateMatch(s,I=>({...I,isFetching:"beforeLoad",fetchCount:I.fetchCount+1,abortController:g})))},f=()=>{u._nonReactive.beforeLoadPromise?.resolve(),u._nonReactive.beforeLoadPromise=void 0,a.updateMatch(s,I=>({...I,isFetching:!1}))};if(!r.options.beforeLoad){a.router.batch(()=>{b(),f()});return}u._nonReactive.beforeLoadPromise=Ci();const w={...Mi(a,o,!1),...u.__routeContext},{search:S,params:M,cause:D}=u,x=bl(a,s),C={search:S,abortController:g,params:M,preload:x,context:w,location:a.location,navigate:I=>a.router.navigate({...I,_fromLocation:a.location}),buildLocation:a.router.buildLocation,cause:x?"preload":D,matches:a.matches,routeId:r.id,...a.router.options.additionalContext},G=I=>{if(I===void 0){a.router.batch(()=>{b(),f()});return}(Zt(I)||xt(I))&&(b(),xo(a,o,I,"BEFORE_LOAD")),a.router.batch(()=>{b(),a.updateMatch(s,te=>({...te,__beforeLoadContext:I})),f()})};let U;try{if(U=r.options.beforeLoad(C),Do(U))return b(),U.catch(I=>{xo(a,o,I,"BEFORE_LOAD")}).then(G)}catch(I){b(),xo(a,o,I,"BEFORE_LOAD")}G(U)},Ok=(a,s)=>{const{id:o,routeId:r}=a.matches[s],u=a.router.looseRoutesById[r],d=()=>y(),h=()=>Lk(a,o,s,u),y=()=>
10{if(Zg(a,o))return;const g=qk(a,o,u);return Do(g)?g.then(h):h()};return d()},Hk=(a,s,o)=>{const r=a.router.getMatch(s);if(!r||!o.options.head&&!o.options.scripts&&!o.options.headers)return;const u={ssr:a.router.options.ssr,matches:a.matches,match:r,params:r.params,loaderData:r.loaderData};return Promise.all([o.options.head?.(u),o.options.scripts?.(u),o.options.headers?.(u)]).then(([d,h,y])=>({meta:d?.meta,links:d?.links,headScripts:d?.scripts,headers:y,scripts:h,styles:d?.styles}))},Jg=(a,s,o,r,u)=>{const d=s[r-1],{params:h,loaderDeps:y,abortController:g,cause:p}=a.router.getMatch(o),b=Mi(a,r),f=bl(a,o);return{params:h,deps:y,preload:!!f,parentMatchPromise:d,abortController:g,context:b,location:a.location,navigate:w=>a.router.navigate({...w,_fromLocation:a.location}),cause:f?"preload":p,route:u,...a.router.options.additionalContext}},Gp=async(a,s,o,r,u)=>{try{const d=a.router.getMatch(o);try{(!(Vg??a.router.isServer)||d.ssr===!0)&&zo(u);const h=u.options.loader,y=typeof h=="function"?h:h?.handler,g=y?.(Jg(a,s,o,r,u)),p=!!y&&Do(g);if((p||u._lazyPromise||u._componentsPromise||u.options.head||u.options.scripts||u.options.headers||d._nonReactive.minPendingPromise)&&a.updateMatch(o,f=>({...f,isFetching:"loader"})),y){const f=p?await g:g;Gn(a,a.router.getMatch(o),f),f!==void 0&&a.updateMatch(o,w=>({...w,loaderData:f}))}u._lazyPromise&&await u._lazyPromise;const b=d._nonReactive.minPendingPromise;b&&await b,u._componentsPromise&&await u._componentsPromise,a.updateMatch(o,f=>({...f,error:void 0,context:Mi(a,r),status:"success",isFetching:!1,updatedAt:Date.now()}))}catch(h){let y=h;if(y?.name==="AbortError"){if(d.abortController.signal.aborted){d._nonReactive.loaderPromise?.resolve(),d._nonReactive.loaderPromise=void 0;return}a.updateMatch(o,p=>({...p,status:p.status==="pending"?"success":p.status,isFetching:!1,context:Mi(a,r)}));return}const g=d._nonReactive.minPendingPromise;g&&await g,xt(h)&&await u.options.notFoundComponent?.preload?.(),Gn(a,a.router.getMatch(o),h);try{u.options.onError?.(h)}catch(p){y=p,Gn(a,a.router.getMatch(o),p)}!Zt(y)&&!xt(y)&&await zo(u,["errorComponent"]),a.updateMatch(o,p=>({...p,error:y,context:Mi(a,r),status:"error",isFetching:!1}))}}catch(d){const h=a.router.getMatch(o);h&&(h._nonReactive.loaderPromise=void 0),Gn(a,h,d)}},Ik=async(a,s,o)=>{async function r(S,M,D,x,C){const G=Date.now()-M.updatedAt,U=S?C.options.preloadStaleTime??a.router.options.defaultPreloadStaleTime??3e4:C.options.staleTime??a.router.options.defaultStaleTime??0,I=C.options.shouldReload,te=typeof I=="function"?I(Jg(a,s,u,o,C)):I,{status:$,invalid:V}=x,O=G>=U&&(!!a.forceStaleReload||x.cause==="enter"||D!==void 0&&D!==x.id);h=$==="success"&&(V||(te??O)),S&&C.options.preload===!1||(h&&!a.sync&&b?(y=!0,(async()=>{try{await Gp(a,s,u,o,C);const Q=a.router.getMatch(u);Q._nonReactive.loaderPromise?.resolve(),Q._nonReactive.loadPromise?.resolve(),Q._nonReactive.loaderPromise=void 0,Q._nonReactive.loadPromise=void 0}catch(Q){Zt(Q)&&await a.router.navigate(Q.options)}})()):$!=="success"||h?await Gp(a,s,u,o,C):Vp(a,u,o))}const{id:u,routeId:d}=a.matches[o];let h=!1,y=!1;const g=a.router.looseRoutesById[d],p=g.options.loader,b=((typeof p=="function"?void 0:p?.staleReloadMode)??a.router.options.defaultStaleReloadMode)!=="blocking";if(Zg(a,u)){if(!a.router.getMatch(u))return a.matches[o];Vp(a,u,o)}else{const S=a.router.getMatch(u),M=a.router.stores.matchesId.get()[o],D=(M&&a.router.stores.matchStores.get(M)||null)?.routeId===d?M:a.router.stores.matches.get().find(C=>C.routeId===d)?.id,x=bl(a,u);if(S._nonReactive.loaderPromise){if(S.status==="success"&&!a.sync&&!S.preload&&b)return S;await S._nonReactive.loaderPromise;const C=a.router.getMatch(u),G=C._nonReactive.error||C.error;G&&Gn(a,C,G),C.status==="pending"&&await r(x,S,D,C,g)}else{const C=x&&!a.router.stores.matchStores.has(u),G=a.router.getMatch(u);G._nonReactive.loaderPromise=Ci(),C!==G.preload&&a.updateMatch(u,U=>({...U,preload:C})),await r(x,S,D,G,g)}}const f=a.router.getMatch(u);y||(f._nonReactive.loaderPromise?.resolve(),f._nonReactive.loadPromise?.resolve(),f._nonReactive.loadPromise=void 0),clearTimeout(f._nonReactive.pen
10dingTimeout),f._nonReactive.pendingTimeout=void 0,y||(f._nonReactive.loaderPromise=void 0),f._nonReactive.dehydrated=void 0;const w=y?f.isFetching:!1;return w!==f.isFetching||f.invalid!==!1?(a.updateMatch(u,S=>({...S,isFetching:w,invalid:!1})),a.router.getMatch(u)):f};async function Yp(a){const s=a,o=[];Pk(s.router)&&ld(s);let r;for(let w=0;w<s.matches.length;w++){try{const S=Ok(s,w);Do(S)&&await S}catch(S){if(Zt(S))throw S;if(xt(S))r=S;else if(!s.preload)throw S;break}if(s.serialError||s.firstBadMatchIndex!=null)break}const u=s.firstBadMatchIndex??s.matches.length,d=r&&!s.preload?Up(s,r):void 0,h=r&&s.preload?0:d!==void 0?Math.min(d+1,u):u;let y,g;for(let w=0;w<h;w++)o.push(Ik(s,o,w));try{await Promise.all(o)}catch{const w=await Promise.allSettled(o);for(const S of w){if(S.status!=="rejected")continue;const M=S.reason;if(Zt(M))throw M;xt(M)?y??=M:g??=M}if(g!==void 0)throw g}const p=y??(r&&!s.preload?r:void 0);let b=s.firstBadMatchIndex!==void 0?s.firstBadMatchIndex:s.matches.length-1;if(!p&&r&&s.preload)return s.matches;if(p){const w=Up(s,p);w===void 0&&$t();const S=s.matches[w],M=s.router.looseRoutesById[S.routeId],D=s.router.options?.defaultNotFoundComponent;!M.options.notFoundComponent&&D&&(M.options.notFoundComponent=D),p.routeId=S.routeId;const x=S.routeId===s.router.routeTree.id;s.updateMatch(S.id,C=>({...C,...x?{status:"success",globalNotFound:!0,error:void 0}:{status:"notFound",error:p},isFetching:!1})),b=w,await zo(M,["notFoundComponent"])}else if(!s.preload){const w=s.matches[0];w.globalNotFound||s.router.getMatch(w.id)?.globalNotFound&&s.updateMatch(w.id,S=>({...S,globalNotFound:!1,error:void 0}))}if(s.serialError&&s.firstBadMatchIndex!==void 0){const w=s.router.looseRoutesById[s.matches[s.firstBadMatchIndex].routeId];await zo(w,["errorComponent"])}for(let w=0;w<=b;w++){const{id:S,routeId:M}=s.matches[w],D=s.router.looseRoutesById[M];try{const x=Hk(s,S,D);if(x){const C=await x;s.updateMatch(S,G=>({...G,...C}))}}catch(x){console.error(`Error executing head for route ${M}:`,x)}}const f=ld(s);if(Do(f)&&await f,p)throw p;if(s.serialError&&!s.preload&&!s.onReady)throw s.serialError;return s.matches}function Wp(a,s){const o=s.map(r=>a.options[r]?.preload?.()).filter(Boolean);if(o.length!==0)return Promise.all(o)}function zo(a,s=il){!a._lazyLoaded&&a._lazyPromise===void 0&&(a.lazyFn?a._lazyPromise=a.lazyFn().then(r=>{const{id:u,...d}=r.options;Object.assign(a.options,d),a._lazyLoaded=!0,a._lazyPromise=void 0}):a._lazyLoaded=!0);const o=()=>a._componentsLoaded?void 0:s===il?(()=>{if(a._componentsPromise===void 0){const r=Wp(a,il);r?a._componentsPromise=r.then(()=>{a._componentsLoaded=!0,a._componentsPromise=void 0}):a._componentsLoaded=!0}return a._componentsPromise})():Wp(a,s);return a._lazyPromise?a._lazyPromise.then(o):o()}function ey(a){for(const s of il)if(a.options[s]?.preload)return!0;return!1}var il=["component","errorComponent","pendingComponent","notFoundComponent"],Wn="__TSR_index",Fp="popstate",Kp="beforeunload";function jk(a){let s=a.getLocation();const o=new Set,r=h=>{s=a.getLocation(),o.forEach(y=>y({location:s,action:h}))},u=h=>{a.notifyOnIndexChange??!0?r(h):s=a.getLocation()},d=async({task:h,navigateOpts:y,...g})=>{if(y?.ignoreBlocker??!1){h();return}const p=a.getBlockers?.()??[],b=g.type==="PUSH"||g.type==="REPLACE";if(typeof document<"u"&&p.length&&b)for(const f of p){const w=ul(g.path,g.state);if(await f.blockerFn({currentLocation:s,nextLocation:w,action:g.type})){a.onBlocked?.();return}}h()};return{get location(){return s},get length(){return a.getLength()},subscribers:o,subscribe:h=>(o.add(h),()=>{o.delete(h)}),push:(h,y,g)=>{const p=s.state[Wn];y=Xp(p+1,y),d({task:()=>{a.pushState(h,y),r({type:"PUSH"})},navigateOpts:g,type:"PUSH",path:h,state:y})},replace:(h,y,g)=>{const p=s.state[Wn];y=Xp(p,y),d({task:()=>{a.replaceState(h,y),r({type:"REPLACE"})},navigateOpts:g,type:"REPLACE",path:h,state:y})},go:(h,y)=>{d({task:()=>{a.go(h),u({type:"GO",index:h})},navigateOpts:y,type:"GO"})},back:h=>{d({task:()=>{a.back(h?.ignoreBlocker??!1),u({type:"BACK"})},navigateOpts:h,type:"BACK"})},forward:h=>{d({task:()=>{a.forward(h?.ignoreBlocker??!1),u({type:"FORWARD"})},navigateOpts:h,type:"FORWARD"})},canGoBack:()=>s.state[Wn]!==0,createHref:h=>a.createHref(h),block:h=>{if(!a.setBlockers)return()=>{};const y=a.getBlockers?.()??[];return a.setBlockers([...y,h]),()=>{const g=a.getBlockers?.()??[];a.setBlockers?.(g.filter(p=>p!==h))}},flush:()=>a.flush?.(),destroy:()=>a.destroy?.(),notify:r}}function Xp(a,s){s||(s={});const o=bd();return{...s,key:o,__TSR_key:o,[Wn]:a}}function Bk(a){const s=typeof document<"u"?window:void 0,o=s.history.pushState,r=s.history.replaceState;let u=[];const d=()=>u,h=O=>u=O,y=(O=>O),g=(()=>ul(`${s.location.pathname}${s.location.search}${s.location.hash}`,s.history.state));if(!s.history.state?.__TSR_key&&!s.history.state?.key){const O=bd();s.history.replaceState({[Wn]:0,key:O,__TSR_key:O},"")}let p=g(),b,f=!1,w=!1,S=!1,M=!1;const D=()=>p;let x,C;const G=()=>{x&&(V._ignoreSubscribers=!0,(x.isPush?s.history.pushState:s.history.replaceState)(x.state,"",x.href),V._ignoreSubscribers=!1,x=void 0,C=void 0,b=void 0)},U=(O,Q,he)=>
10{const ne=y(Q);C||(b=p),p=ul(Q,he),x={href:ne,state:he,isPush:x?.isPush||O==="push"},C||(C=Promise.resolve().then(()=>G()))},I=O=>{p=g(),V.notify({type:O})},te=async()=>{if(w){w=!1;return}const O=g(),Q=O.state[Wn]-p.state[Wn],he=Q===1,ne=Q===-1,ge=!he&&!ne||f;f=!1;const ye=ge?"GO":ne?"BACK":"FORWARD",qe=ge?{type:"GO",index:Q}:{type:ne?"BACK":"FORWARD"};if(S)S=!1;else{const Ae=d();if(typeof document<"u"&&Ae.length){for(const z of Ae)if(await z.blockerFn({currentLocation:p,nextLocation:O,action:ye})){w=!0,s.history.go(1),V.notify(qe);return}}}p=g(),V.notify(qe)},$=O=>{if(M){M=!1;return}let Q=!1;const he=d();if(typeof document<"u"&&he.length)for(const ne of he){const ge=ne.enableBeforeUnload??!0;if(ge===!0){Q=!0;break}if(typeof ge=="function"&&ge()===!0){Q=!0;break}}if(Q)return O.preventDefault(),O.returnValue=""},V=jk({getLocation:D,getLength:()=>s.history.length,pushState:(O,Q)=>U("push",O,Q),replaceState:(O,Q)=>U("replace",O,Q),back:O=>(O&&(S=!0),M=!0,s.history.back()),forward:O=>{O&&(S=!0),M=!0,s.history.forward()},go:O=>{f=!0,s.history.go(O)},createHref:O=>y(O),flush:G,destroy:()=>{s.history.pushState=o,s.history.replaceState=r,s.removeEventListener(Kp,$,{capture:!0}),s.removeEventListener(Fp,te)},onBlocked:()=>{b&&p!==b&&(p=b)},getBlockers:d,setBlockers:h,notifyOnIndexChange:!1});return s.addEventListener(Kp,$,{capture:!0}),s.addEventListener(Fp,te),s.history.pushState=function(...O){const Q=o.apply(s.history,O);return V._ignoreSubscribers||I("PUSH"),Q},s.history.replaceState=function(...O){const Q=r.apply(s.history,O);return V._ignoreSubscribers||I("REPLACE"),Q},V}function Uk(a){let s=a.replace(/[\x00-\x1f\x7f]/g,"");return s.startsWith("//")&&(s="/"+s.replace(/^\/+/,"")),s}function ul(a,s){const o=Uk(a),r=o.indexOf("#"),u=o.indexOf("?"),d=bd();return{href:o,pathname:o.substring(0,r>0?u>0?Math.min(r,u):r:u>0?u:o.length),hash:r>-1?o.substring(r):"",search:u>-1?o.slice(u,r===-1?void 0:r):"",state:s||{[Wn]:0,key:d,__TSR_key:d}}}function bd(){return(Math.random()+1).toString(36).substring(7)}function Vk(a){return a instanceof Error?{name:a.name,message:a.message}:{data:a}}function ks(a,s){const o=s,r=a;return{fromLocation:o,toLocation:r,pathChanged:o?.pathname!==r.pathname,hrefChanged:o?.href!==r.href,hashChanged:o?.hash!==r.hash}}var Gk=class{constructor(a,s){this.tempLocationKey=`${Math.round(Math.random()*1e7)}`,this.resetNextScroll=!0,this.shouldViewTransition=void 0,this.isViewTransitionTypesSupported=void 0,this.subscribers=new Set,this.isScrollRestoring=!1,this.isScrollRestorationSetup=!1,this.startTransition=o=>o(),this.update=o=>{const r=this.options,u=this.basepath??r?.basepath??"/",d=this.basepath===void 0,h=r?.rewrite;if(this.options={...r,...o},this.isServer=this.options.isServer??typeof document>"u",this.protocolAllowlist=new Set(this.options.protocolAllowlist),this.options.pathParamsAllowedCharacters&&(this.pathParamsDecoder=vk(this.options.pathParamsAllowedCharacters)),(!this.history||this.options.history&&this.options.history!==this.history)&&(this.options.history?this.history=this.options.history:this.history=Bk()),this.origin=this.options.origin,this.origin||(window?.origin&&window.origin!=="null"?this.origin=window.origin:this.origin="http://localhost"),this.history&&this.updateLatestLocation(),this.options.routeTree!==this.routeTree){this.routeTree=this.options.routeTree;let b;this.resolvePathCache=No(1e3),b=this.buildRouteTree(),this.setRoutes(b)}if(!this.stores&&this.latestLocation){const b=this.getStoreConfig(this);this.batch=b.batch,this.stores=zk(Wk(this.latestLocation),b),Ak(this)}let y=!1;const g=this.options.basepath??"/",p=this.options.rewrite;if(d||u!==g||h!==p){this.basepath=g;const b=[],f=Fg(g);f&&f!=="/"&&b.push(Nk({basepath:g})),p&&b.push(p),this.rewrite=b.length===0?void 0:b.length===1?b[0]:Dk(b),this.history&&this.updateLatestLocation(),y=!0}y&&this.stores&&this.stores.location.set(this.latestLocation),typeof window<"u"&&"CSS"in window&&typeof window.CSS?.supports=="function"&&(this.isViewTransitionTypesSupported=window.CSS.supports("selector(:active-view-transition-type(a)"))},this.updateLatestLocation=()=>{this.latestLocation=this.parseLocation(this.history.location,this.latestLocation)},this.buildRouteTree=()=>{const o=hk(this.routeTree,this.options.caseSensitive,(r,u)=>{r.init({originalIndex:u})});return this.options.routeMasks&&rk(this.options.routeMasks,o.processedTree),o},this.subscribe=(o,r)=>{const u={eventType:o,fn:r};return this.subscribers.add(u),()=>{this.subscribers.delete(u)}},this.emit=o=>
10{this.subscribers.forEach(r=>{r.eventType===o.type&&r.fn(o)})},this.parseLocation=(o,r)=>{const u=({pathname:g,search:p,hash:b,href:f,state:w})=>{if(!this.rewrite&&!/[ \x00-\x1f\x7f\u0080-\uffff]/.test(g)){const C=this.options.parseSearch(p),G=this.options.stringifySearch(C);return{href:g+G+b,publicHref:g+G+b,pathname:wo(g).path,external:!1,searchStr:G,search:wi(r?.search,C),hash:wo(b.slice(1)).path,state:Vn(r?.state,w)}}const S=new URL(f,this.origin),M=rd(this.rewrite,S),D=this.options.parseSearch(M.search),x=this.options.stringifySearch(D);return M.search=x,{href:M.href.replace(M.origin,""),publicHref:f,pathname:wo(M.pathname).path,external:!!this.rewrite&&M.origin!==this.origin,searchStr:x,search:wi(r?.search,D),hash:wo(M.hash.slice(1)).path,state:Vn(r?.state,w)}},d=u(o),{__tempLocation:h,__tempKey:y}=d.state;if(h&&(!y||y===this.tempLocationKey)){const g=u(h);return g.state.key=d.state.key,g.state.__TSR_key=d.state.__TSR_key,delete g.state.__tempLocation,{...g,maskedLocation:d}}return d},this.resolvePathWithBase=(o,r)=>yk({base:o,to:vd(r),trailingSlash:this.options.trailingSlash,cache:this.resolvePathCache}),this.matchRoutes=(o,r,u)=>typeof o=="string"?this.matchRoutesInternal({pathname:o,search:r},u):this.matchRoutesInternal(o,r),this.getMatchedRoutes=o=>Fk({pathname:o,routesById:this.routesById,processedTree:this.processedTree}),this.cancelMatch=o=>{const r=this.getMatch(o);r&&(r.abortController.abort(),clearTimeout(r._nonReactive.pendingTimeout),r._nonReactive.pendingTimeout=void 0)},this.cancelMatches=()=>{this.stores.pendingIds.get().forEach(o=>{this.cancelMatch(o)}),this.stores.matchesId.get().forEach(o=>{if(this.stores.pendingMatchStores.has(o))return;const r=this.stores.matchStores.get(o)?.get();r&&(r.status==="pending"||r.isFetching==="loader")&&this.cancelMatch(o)})},this.buildLocation=o=>{const r=(d={})=>{const h=d._fromLocation||this.pendingBuiltLocation||this.latestLocation,y=this.matchRoutesLightweight(h);d.from;const g=d.unsafeRelative==="path"?h.pathname:d.from??y.fullPath,p=this.resolvePathWithBase(g,"."),b=y.search,f=Object.assign(Object.create(null),y.params),w=d.to?this.resolvePathWithBase(p,`${d.to}`):this.resolvePathWithBase(p,"."),S=d.params===!1||d.params===null?Object.create(null):(d.params??!0)===!0?f:Object.assign(f,Un(d.params,f)),M=this.getMatchedRoutes(w);let D=M.matchedRoutes;if((!M.foundRoute||M.foundRoute.path!=="/"&&M.routeParams["**"])&&this.options.notFoundRoute&&(D=[...D,this.options.notFoundRoute]),Object.keys(S).length>0)for(const he of D){const ne=he.options.params?.stringify??he.options.stringifyParams;if(ne)try{Object.assign(S,ne(S))}catch{}}const x=o.leaveParams?w:wo(Hp({path:w,params:S,decoder:this.pathParamsDecoder,server:this.isServer}).interpolatedPath).path;let C=b;if(o._includeValidateSearch&&this.options.search?.strict){const he={};D.forEach(ne=>{if(ne.options.validateSearch)try{Object.assign(he,sl(ne.options.validateSearch,{...he,...C}))}catch{}}),C=he}C=Kk({search:C,dest:d,destRoutes:D,_includeValidateSearch:o._includeValidateSearch}),C=wi(b,C);const G=this.options.stringifySearch(C),U=d.hash===!0?h.hash:d.hash?Un(d.hash,h.hash):void 0,I=U?`#${U}`:"";let te=d.state===!0?h.state:d.state?Un(d.state,h.state):{};te=Vn(h.state,te);const $=`${x}${G}${I}`;let V,O,Q=!1;if(this.rewrite){const he=new URL($,this.origin),ne=Qg(this.rewrite,he);V=he.href.replace(he.origin,""),ne.origin!==this.origin?(O=ne.href,Q=!0):O=ne.pathname+ne.search+ne.hash}else V=ik($),O=V;return{publicHref:O,href:V,pathname:x,search:C,searchStr:G,state:te,hash:U??"",external:Q,unmaskOnReload:d.unmaskOnReload}},u=(d={},h)=>{const y=r(d);let g=h?r(h):void 0;if(!g){const p=Object.create(null);if(this.options.routeMasks){const b=lk(y.pathname,this.processedTree);if(b){Object.assign(p,b.rawParams);const{from:f,params:w,...S}=b.route,M=w===!1||w===null?Object.create(null):(w??!0)===!0?p:Object.assign(p,Un(w,p));h={from:o.from,...S,params:M},g=r(h)}}}return g&&(y.maskedLocation=g),y};return o.mask?u(o,{from:o.from,...o.mask}):u(o)},this.commitLocation=async({viewTransition:o,ignoreBlocker:r,...u})=>{const d=()=>{const g=["key","__TSR_key","__TSR_index","__hashScrollIntoViewOptions"];g.forEach(b=>{u.state[b]=this.latestLocation.state[b]}
10);const p=Qt(u.state,this.latestLocation.state);return g.forEach(b=>{delete u.state[b]}),p},h=Yn(this.latestLocation.href)===Yn(u.href);let y=this.commitLocationPromise;if(this.commitLocationPromise=Ci(()=>{y?.resolve(),y=void 0}),h&&d())this.load();else{let{maskedLocation:g,hashScrollIntoView:p,...b}=u;g&&(b={...g,state:{...g.state,__tempKey:void 0,__tempLocation:{...b,search:b.searchStr,state:{...b.state,__tempKey:void 0,__tempLocation:void 0,__TSR_key:void 0,key:void 0}}}},(b.unmaskOnReload??this.options.unmaskOnReload??!1)&&(b.state.__tempKey=this.tempLocationKey)),b.state.__hashScrollIntoViewOptions=p??this.options.defaultHashScrollIntoView??!0,this.shouldViewTransition=o,this.history[u.replace?"replace":"push"](b.publicHref,b.state,{ignoreBlocker:r})}return this.resetNextScroll=u.resetScroll??!0,this.history.subscribers.size||this.load(),this.commitLocationPromise},this.buildAndCommitLocation=({replace:o,resetScroll:r,hashScrollIntoView:u,viewTransition:d,ignoreBlocker:h,href:y,...g}={})=>{if(y){const f=this.history.location.state.__TSR_index,w=ul(y,{__TSR_index:o?f:f+1}),S=new URL(w.pathname,this.origin);g.to=rd(this.rewrite,S).pathname,g.search=this.options.parseSearch(w.search),g.hash=w.hash.slice(1)}const p=this.buildLocation({...g,_includeValidateSearch:!0});this.pendingBuiltLocation=p;const b=this.commitLocation({...p,viewTransition:d,replace:o,resetScroll:r,hashScrollIntoView:u,ignoreBlocker:h});return Promise.resolve().then(()=>{this.pendingBuiltLocation===p&&(this.pendingBuiltLocation=void 0)}),b},this.navigate=async({to:o,reloadDocument:r,href:u,publicHref:d,...h})=>{let y=!1;if(u)try{new URL(`${u}`),y=!0}catch{}if(y&&!r&&(r=!0),r){if(o!==void 0||!u){const p=this.buildLocation({to:o,...h});u=u??p.publicHref,d=d??p.publicHref}const g=!y&&d?d:u;if(ll(g,this.protocolAllowlist))return Promise.resolve();if(!h.ignoreBlocker){const p=this.history.getBlockers?.()??[];for(const b of p)if(b?.blockerFn&&await b.blockerFn({currentLocation:this.latestLocation,nextLocation:this.latestLocation,action:"PUSH"}))return Promise.resolve()}return h.replace?window.location.replace(g):window.location.href=g,Promise.resolve()}return this.buildAndCommitLocation({...h,href:u,to:o,_isNavigate:!0})},this.beforeLoad=()=>{this.cancelMatches(),this.updateLatestLocation();const o=this.matchRoutes(this.latestLocation),r=this.stores.cachedMatches.get().filter(u=>!o.some(d=>d.id===u.id));this.batch(()=>{this.stores.status.set("pending"),this.stores.statusCode.set(200),this.stores.isLoading.set(!0),this.stores.location.set(this.latestLocation),this.stores.setPending(o),this.stores.setCached(r)})},this.load=async o=>{let r,u,d;const h=this.stores.resolvedLocation.get()??this.stores.location.get();for(d=new Promise(g=>{this.startTransition(async()=>{try{this.beforeLoad();const p=this.latestLocation,b=ks(p,this.stores.resolvedLocation.get());this.stores.redirect.get()||this.emit({type:"onBeforeNavigate",...b}),this.emit({type:"onBeforeLoad",...b}),await Yp({router:this,sync:o?.sync,forceStaleReload:h.href===p.href,matches:this.stores.pendingMatches.get(),location:p,updateMatch:this.updateMatch,onReady:async()=>{this.startTransition(()=>{this.startViewTransition(async()=>{let f=null,w=null,S=null,M=null;this.batch(()=>{const D=this.stores.pendingMatches.get(),x=D.length,C=this.stores.matches.get();f=x?C.filter(I=>!this.stores.pendingMatchStores.has(I.id)):null;const G=new Set;for(const I of this.stores.pendingMatchStores.values())I.routeId&&G.add(I.routeId);const U=new Set;for(const I of this.stores.matchStores.values())I.routeId&&U.add(I.routeId);w=x?C.filter(I=>!G.has(I.routeId)):null,S=x?D.filter(I=>!U.has(I.routeId)):null,M=x?D.filter(I=>U.has(I.routeId)):C,this.stores.isLoading.set(!1),this.stores.loadedAt.set(Date.now()),x&&(this.stores.setMatches(D),this.stores.setPending([]),this.stores.setCached([...this.stores.cachedMatches.get(),...f.filter(I=>I.status!=="error"&&I.status!=="notFound"&&I.status!=="redirected")]),this.clearExpiredCache())});for(const[D,x]of[[w,"onLeave"],[S,"onEnter"],[M,"onStay"]])if(D)for(const C of D)this.looseRoutesById[C.routeId].options[x]?.(C)})})}})}catch(p){Zt(p)?(r=p,this.navigate({...r.options,replace:!0,ignoreBlocker:!0})):xt(p)&&(u=p);const b=r?r.status:u?404:this.stores.matches.get().some(f=>f.status==="error")?500:200;this.batch(()=>{this.stores.statusCode.set(b),this.stores.redirect.set(r)})}this.latestLoadPromise===d&&(this.commitLocationPromise?.resolve(),this.latestLoadPromise=void 0,this.commitLocationPromise=void 0),g()})}),this.latestLoadPromise=d,await d;this.latestLoadPromise&&d!==this.latestLoadPromise;)await this.latestLoadPromise;let y;this.hasNotFoundMatch()?y=404:this.stores.matches.get().some(g=>g.status==="error")&&(y=500),y!==void 0&&this.stores.statusCode.set(y)},this.startViewTransition=o=>{const r=this.shouldViewTransition??this.options.defaultViewTransition;if(this.shouldViewTransition=void 0,r&&typeof document<"u"&&"startViewTransition"in document&&typeof document.startViewTransition=="function"){let u;if(typeof r=="object"&&this.isViewTransitionTypesSupported){const d=this.latestLocation,h=this.stores.resolvedLocation.get(),y=typeof r.types=="function"?r.types(ks(d,h)):r.types;if(y===!1){o();return}u={update:o,types:y}}else u=o;document.startViewTransition(u)}else o()},this.updateMatch=(o,r)=>{this.startTransition(()=>
10{const u=this.stores.pendingMatchStores.get(o);if(u){u.set(r);return}const d=this.stores.matchStores.get(o);if(d){d.set(r);return}const h=this.stores.cachedMatchStores.get(o);if(h){const y=r(h.get());y.status==="redirected"?this.stores.cachedMatchStores.delete(o)&&this.stores.cachedIds.set(g=>g.filter(p=>p!==o)):h.set(y)}})},this.getMatch=o=>this.stores.cachedMatchStores.get(o)?.get()??this.stores.pendingMatchStores.get(o)?.get()??this.stores.matchStores.get(o)?.get(),this.invalidate=o=>{const r=u=>o?.filter?.(u)??!0?{...u,invalid:!0,...o?.forcePending||u.status==="error"||u.status==="notFound"?{status:"pending",error:void 0}:void 0}:u;return this.batch(()=>{this.stores.setMatches(this.stores.matches.get().map(r)),this.stores.setCached(this.stores.cachedMatches.get().map(r)),this.stores.setPending(this.stores.pendingMatches.get().map(r))}),this.shouldViewTransition=!1,this.load({sync:o?.sync})},this.getParsedLocationHref=o=>o.publicHref||"/",this.resolveRedirect=o=>{const r=o.headers.get("Location");if(!o.options.href||o.options._builtLocation){const u=o.options._builtLocation??this.buildLocation(o.options),d=this.getParsedLocationHref(u);o.options.href=d,o.headers.set("Location",d)}else if(r)try{const u=new URL(r);if(this.origin&&u.origin===this.origin){const d=u.pathname+u.search+u.hash;o.options.href=d,o.headers.set("Location",d)}}catch{}if(o.options.href&&!o.options._builtLocation&&ll(o.options.href,this.protocolAllowlist))throw new Error("Redirect blocked: unsafe protocol");return o.headers.get("Location")||o.headers.set("Location",o.options.href),o},this.clearCache=o=>{const r=o?.filter;r!==void 0?this.stores.setCached(this.stores.cachedMatches.get().filter(u=>!r(u))):this.stores.setCached([])},this.clearExpiredCache=()=>{const o=Date.now(),r=u=>{const d=this.looseRoutesById[u.routeId];if(!d.options.loader)return!0;const h=(u.preload?d.options.preloadGcTime??this.options.defaultPreloadGcTime:d.options.gcTime??this.options.defaultGcTime)??300*1e3;return u.status==="error"?!0:o-u.updatedAt>=h};this.clearCache({filter:r})},this.loadRouteChunk=zo,this.preloadRoute=async o=>{const r=o._builtLocation??this.buildLocation(o);let u=this.matchRoutes(r,{throwOnError:!0,preload:!0,dest:o});const d=new Set([...this.stores.matchesId.get(),...this.stores.pendingIds.get()]),h=new Set([...d,...this.stores.cachedIds.get()]),y=u.filter(g=>!h.has(g.id));if(y.length){const g=this.stores.cachedMatches.get();this.stores.setCached([...g,...y])}try{return u=await Yp({router:this,matches:u,location:r,preload:!0,updateMatch:(g,p)=>{d.has(g)?u=u.map(b=>b.id===g?p(b):b):this.updateMatch(g,p)}}),u}catch(g){if(Zt(g))return g.options.reloadDocument?void 0:await this.preloadRoute({...g.options,_fromLocation:r});xt(g)||console.error(g);return}},this.matchRoute=(o,r)=>{const u={...o,to:o.to?this.resolvePathWithBase(o.from||"",o.to):void 0,params:o.params||{},leaveParams:!0},d=this.buildLocation(u);if(r?.pending&&this.stores.status.get()!=="pending")return!1;const h=(r?.pending===void 0?!this.stores.isLoading.get():r.pending)?this.latestLocation:this.stores.resolvedLocation.get()||this.stores.location.get(),y=ck(d.pathname,r?.caseSensitive??!1,r?.fuzzy??!1,h.pathname,this.processedTree);return!y||o.params&&!Qt(y.rawParams,o.params,{partial:!0})?!1:r?.includeSearch??!0?Qt(h.search,d.search,{partial:!0})?y.rawParams:!1:y.rawParams},this.hasNotFoundMatch=()=>this.stores.matches.get().some(o=>o.status==="notFound"||o.globalNotFound),this.getStoreConfig=s,this.update({defaultPreloadDelay:50,defaultPendingMs:1e3,defaultPendingMinMs:500,context:void 0,...a,caseSensitive:a.caseSensitive??!1,notFoundMode:a.notFoundMode??"fuzzy",stringifySearch:a.stringifySearch??Ck,parseSearch:a.parseSearch??Mk,protocolAllowlist:a.protocolAllowlist??ek}),typeof document<"u"&&(self.__TSR_ROUTER__=this)}isShell(){return!!this.options.isShell}isPrerendering(){return!!this.options.isPrerendering}get state(){return this.stores.__store.get()}setRoutes({routesById:a,routesByPath:s,processedTree:o}){this.routesById=a,this.routesByPath=s,this.processedTree=o;const r=this.options.notFoundRoute;r&&(r.init({originalIndex:99999999999}),this.routesById[r.id]=r)}get looseRoutesById(){return this.routesById}getParentContext(a){return a?.id?a.context??this.options.context??void 0:this.options.context??void 0}matchRoutesInternal(a,s){const o=this.getMatchedRoutes(a.pathname),{foundRoute:r,routeParam
10s:u,parsedParams:d}=o;let{matchedRoutes:h}=o,y=!1;(r?r.path!=="/"&&u["**"]:Yn(a.pathname))&&(this.options.notFoundRoute?h=[...h,this.options.notFoundRoute]:y=!0);const g=y?Qk(this.options.notFoundMode,h):void 0,p=new Array(h.length),b=new Map;for(const f of this.stores.matchStores.values())f.routeId&&b.set(f.routeId,f.get());for(let f=0;f<h.length;f++){const w=h[f],S=p[f-1];let M,D,x;{const ye=S?.search??a.search,qe=S?._strictSearch??void 0;try{const Ae=sl(w.options.validateSearch,{...ye})??void 0;M={...ye,...Ae},D={...qe,...Ae},x=void 0}catch(Ae){let z=Ae;if(Ae instanceof dl||(z=new dl(Ae.message,{cause:Ae})),s?.throwOnError)throw z;M=ye,D={},x=z}}const C=w.options.loaderDeps?.({search:M})??"",G=C?JSON.stringify(C):"",{interpolatedPath:U,usedParams:I}=Hp({path:w.fullPath,params:u,decoder:this.pathParamsDecoder,server:this.isServer}),te=w.id+U+G,$=this.getMatch(te),V=b.get(w.id),O=$?._strictParams??I;let Q;if(!$)try{Qp(w,I,d,O)}catch(ye){if(xt(ye)||Zt(ye)?Q=ye:Q=new Yk(ye.message,{cause:ye}),s?.throwOnError)throw Q}Object.assign(u,O);const he=V?"stay":"enter";let ne;if($)ne={...$,cause:he,params:V?.params??u,_strictParams:O,search:wi(V?V.search:$.search,M),_strictSearch:D};else{const ye=w.options.loader||w.options.beforeLoad||w.lazyFn||ey(w)?"pending":"success";ne={id:te,ssr:w.options.ssr,index:f,routeId:w.id,params:V?.params??u,_strictParams:O,pathname:U,updatedAt:Date.now(),search:V?wi(V.search,M):M,_str
10ictSearch:D,searchError:void 0,status:ye,isFetching:!1,error:void 0,paramsError:Q,__routeContext:void 0,_nonReactive:{loadPromise:Ci()},__beforeLoadContext:void 0,context:{},abortController:new AbortController,fetchCount:0,cause:he,loaderDeps:V?Vn(V.loaderDeps,C):C,invalid:!1,preload:!1,links:void 0,scripts:void 0,headScripts:void 0,meta:void 0,staticData:w.options.staticData||{},fullPath:w.fullPath}}s?.preload||(ne.globalNotFound=g===w.id),ne.searchError=x;const ge=this.getParentContext(S);ne.context={...ge,...ne.__routeContext,...ne.__beforeLoadContext},p[f]=ne}for(let f=0;f<p.length;f++){const w=p[f],S=this.looseRoutesById[w.routeId],M=this.getMatch(w.id),D=b.get(w.routeId);if(w.params=D?wi(D.params,u):u,!M){const x=p[f-1],C=this.getParentContext(x);if(S.options.context){const G={deps:w.loaderDeps,params:w.params,context:C??{},location:a,navigate:U=>this.navigate({...U,_fromLocation:a}),buildLocation:this.buildLocation,cause:w.cause,abortController:w.abortController,preload:!!w.preload,matches:p,routeId:S.id};w.__routeContext=S.options.context(G)??void 0}w.context={...C,...w.__routeContext,...w.__beforeLoadContext}}}return p}matchRoutesLightweight(a){const{matchedRoutes:s,routeParams:o,parsedParams:r}=this.getMatchedRoutes(a.pathname),u=Eo(s),d={...a.search};for(const b of s)try{Object.assign(d,sl(b.options.validateSearch,d))}catch{}const h=Eo(this.stores.matchesId.get()),y=h&&this.stores.matchStores.get(h)?.get(),g=y&&y.routeId===u.id&&y.pathname===a.pathname;let p;if(g)p=y.params;else{const b=Object.assign(Object.create(null),o);for(const f of s)try{Qp(f,o,r??{},b)}catch{}p=b}return{matchedRoutes:s,fullPath:u.fullPath,search:d,params:p}}},dl=class extends Error{},Yk=class extends Error{};function Wk(a){return{loadedAt:0,isLoading:!1,isTransitioning:!1,status:"idle",resolvedLocation:void 0,location:a,matches:[],statusCode:200}}function sl(a,s){if(a==null)return{};if("~standard"in a){const o=a["~standard"].validate(s);if(o instanceof Promise)throw new dl("Async validation not supported");if(o.issues)throw new dl(JSON.stringify(o.issues,void 0,2),{cause:o});return o.value}return"parse"in a?a.parse(s):typeof a=="function"?a(s):{}}function Fk({pathname:a,routesById:s,processedTree:o}){const r=Object.create(null),u=Yn(a);let d,h;const y=uk(u,o,!0);return y&&(d=y.route,Object.assign(r,y.rawParams),h=Object.assign(Object.create(null),y.parsedParams)),{matchedRoutes:y?.branch||[s.__root__],routeParams:r,foundRoute:d,parsedParams:h}}function Kk({search:a,dest:s,destRoutes:o,_includeValidateSearch:r}){return Xk(o)(a,s,r??!1)}function Xk(a){const s={dest:null,_includeValidateSearch:!1,middlewares:[]};for(const u of a){if("search"in u.options)u.options.search?.middlewares&&s.middlewares.push(...u.options.search.middlewares);else if(u.options.preSearchFilters||u.options.postSearchFilters){const d=({search:h,next:y})=>{let g=h;"preSearchFilters"in u.options&&u.options.preSearchFilters&&(g=u.options.preSearchFilters.reduce((b,f)=>f(b),h));const p=y(g);return"postSearchFilters"in u.options&&u.options.postSearchFilters?u.options.postSearchFilters.reduce((b,f)=>f(b),p):p};s.middlewares.push(d)}if(u.options.validateSearch){const d=({search:h,next:y})=>{const g=y(h);if(!s._includeValidateSearch)return g;try{return{...g,...sl(u.options.validateSearch,g)??void 0}}catch{return g}};s.middlewares.push(d)}}const o=({search:u})=>{const d=s.dest;return d.search?d.search===!0?u:Un(d.search,u):{}};s.middlewares.push(o);const r=(u,d,h)=>{if(u>=h.length)return d;const y=h[u];return y({search:d,next:p=>r(u+1,p,h)})};return function(d,h,y){return s.dest=h,s._includeValidateSearch=y,r(0,d,s.middlewares)}}function Qk(a,s){if(a!=="root")for(let o=s.length-1;o>=0;o--){const r=s[o];if(r.children)return r.id}return Ti}function Qp(a,s,o,r){const u=a.options.params?.parse??a.options.parseParams;if(u)if(a.options.skipRouteOnParseError)for(const d in s)d in o&&(r[d]=o[d]);else{const d=u(r);Object.assign(r,d)}}var Oa=Symbol.for("TSR_DEFERRED_PROMISE");function Zk(a,s){const o=a;return o[Oa]||(o[Oa]={status:"pending"},o.then(r=>{o[Oa].status="success",o[Oa].data=r}).catch(r=>{o[Oa].status="error",o[Oa].error={data:Vk(r),__isServerError:!0}})),o}var $k="Error preloading route! ☝️";
10function Zp(a,s){if(a)return typeof a=="string"?a:a[s]}function Jk(a){return typeof a=="string"?{href:a,crossOrigin:void 0}:a}var ty=class{get to(){return this._to}get id(){return this._id}get path(){return this._path}get fullPath(){return this._fullPath}constructor(a){if(this.init=s=>{this.originalIndex=s.originalIndex;const o=this.options,r=!o?.path&&!o?.id;this.parentRoute=this.options.getParentRoute?.(),r?this._path=Ti:this.parentRoute||$t();let u=r?Ti:o?.path;u&&u!=="/"&&(u=Wg(u));const d=o?.id||u;let h=r?Ti:nl([this.parentRoute.id==="__root__"?"":this.parentRoute.id,d]);u==="__root__"&&(u="/"),h!=="__root__"&&(h=nl(["/",h]));const y=h==="__root__"?"/":nl([this.parentRoute.fullPath,u]);this._path=u,this._id=h,this._fullPath=y,this._to=Yn(y)},this.addChildren=s=>this._addFileChildren(s),this._addFileChildren=s=>(Array.isArray(s)&&(this.children=s),typeof s=="object"&&s!==null&&(this.children=Object.values(s)),this),this._addFileTypes=()=>this,this.updateLoader=s=>(Object.assign(this.options,s),this),this.update=s=>(Object.assign(this.options,s),this),this.lazy=s=>(this.lazyFn=s,this),this.redirect=s=>Xg({from:this.fullPath,...s}),this.options=a||{},this.isRoot=!a?.getParentRoute,a?.id&&a?.path)throw new Error("Route cannot have both an 'id' and a 'path' option.")}},e0=class extends ty{constructor(a){super(a)}};function t0(a){if(typeof document<"u"&&document.querySelector){const s=a.stores.location.get(),o=s.state.__hashScrollIntoViewOptions??!0;if(o&&s.hash!==""){const r=document.getElementById(s.hash);r&&r.scrollIntoView(o)}}}var a0=(a=>(a[a.AggregateError=1]="AggregateError",a[a.ArrowFunction=2]="ArrowFunction",a[a.ErrorPrototypeStack=4]="ErrorPrototypeStack",a[a.ObjectAssign=8]="ObjectAssign",a[a.BigIntTypedArray=16]="BigIntTypedArray",a[a.RegExp=32]="RegExp",a))(a0||{}),cn=Symbol.asyncIterator,ay=Symbol.hasInstance,Ss=Symbol.isConcatSpreadable,un=Symbol.iterator,ny=Symbol.match,iy=Symbol.matchAll,sy=Symbol.replace,oy=Symbol.search,ry=Symbol.species,ly=Symbol.split,cy=Symbol.toPrimitive,xs=Symbol.toStringTag,uy=Symbol.unscopables,dy={[cn]:0,[ay]:1,[Ss]:2,[un]:3,[ny]:4,[iy]:5,[sy]:6,[oy]:7,[ry]:8,[ly]:9,[cy]:10,[xs]:11,[uy]:12},n0={0:cn,1:ay,2:Ss,3:un,4:ny,5:iy,6:sy,7:oy,8:ry,9:ly,10:cy,11:xs,12:uy},k=void 0,i0={2:!0,3:!1,1:k,0:null,4:-0,5:Number.POSITIVE_INFINITY,6:Number.NEGATIVE_INFINITY,7:Number.NaN},s0={0:"Error",1:"EvalError",2:"RangeError",3:"ReferenceError",4:"SyntaxError",5:"TypeError",6:"URIError"},o0={0:Error,1:EvalError,2:RangeError,3:ReferenceError,4:SyntaxError,5:TypeError,6:URIError};function Pe(a,s,o,r,u,d,h,y,g,p,b,f){return{t:a,i:s,s:o,c:r,m:u,p:d,e:h,a:y,f:g,b:p,o:b,l:f}}function Fn(a){return Pe(2,k,a,k,k,k,k,k,k,k,k,k)}var hy=Fn(2),my=Fn(3),r0=Fn(1),l0=Fn(0),c0=Fn(4),u0=Fn(5),d0=Fn(6),h0=Fn(7);function m0(a){switch(a){case'"':return'\\"';case"\\":return"\\\\";case`
11`:return"\\n";case"\r":return"\\r";case"\b":return"\\b";case"	":return"\\t";case"\f":return"\\f";case"<":return"\\x3C";case"\u2028":return"\\u2028";case"\u2029":return"\\u2029";default:return k}}function Kn(a){let s="",o=0,r;for(let u=0,d=a.length;u<d;u++)r=m0(a[u]),r&&(s+=a.slice(o,u)+r,o=u+1);return o===0?s=a:s+=a.slice(o),s}function f0(a){switch(a){case"\\\\":return"\\";case'\\"':return'"';case"\\n":return`
12`;case"\\r":return"\r";case"\\b":return"\b";case"\\t":return"	";case"\\f":return"\f";case"\\x3C":return"<";case"\\u2028":return"\u2028";case"\\u2029":return"\u2029";default:return a}}function Xn(a){return a.replace(/(\\\\|\\"|\\n|\\r|\\b|\\t|\\f|\\u2028|\\u2029|\\x3C)/g,f0)}var $r="__SEROVAL_REFS__",fy=new Map,ws=new Map;function py(a){return fy.has(a)}function p0(a){return ws.has(a)}function g0(a){if(py(a))return fy.get(a);throw new F0(a)}function y0(a){if(p0(a))return ws.get(a);throw new K0(a)}typeof globalThis<"u"?Object.defineProperty(globalThis,$r,{value:ws,configurable:!0,writable:!1,enumerable:!1}):typeof window<"u"?Object.defineProperty(window,$r,{value:ws,configurable:!0,writable:!1,enumerable:!1}):typeof self<"u"?Object.defineProperty(self,$r,{value:ws,configurable:!0,writable:!1,enumerable:!1}):typeof global<"u"&&Object.defineProperty(global,$r,{value:ws,configurable:!0,writable:!1,enumerable:!1});function wd(a){return a instanceof EvalError?1:a instanceof RangeError?2:a instanceof ReferenceError?3:a instanceof SyntaxError?4:a instanceof TypeError?5:a instanceof URIError?6:0}function v0(a){let s=s0[wd(a)];return a.name!==s?{name:a.name}:a.constructor.name!==s?{name:a.constructor.name}:{}}function gy(a,s){let o=v0(a),r=Object.getOwnPropertyNames(a);for(let u=0,d=r.length,h;u<d;u++)h=r[u],h!=="name"&&h!=="message"&&(h==="stack"?s&4&&(o=o||{},o[h]=a[h]):(o=o||{},o[h]=a[h]));return o}function yy(a){return Object.isFrozen(a)?3:Object.isSealed(a)?2:Object.isExtensible(a)?0:1}function b0(a){switch(a){case Number.POSITIVE_INFINITY:return u0;case Number.NEGATIVE_INFINITY:return d0}return a!==a?h0:Object.is(a,-0)?c0:Pe(0,k,a,k,k,k,k,k,k,k,k,k)}function vy(a){return Pe(1,k,Kn(a),k,k,k,k,k,k,k,k,k)}function w0(a){return Pe(3,k,""+a,k,k,k,k,k,k,k,k,k)}function k0(a){return Pe(4,a,k,k,k,k,k,k,k,k,k,k)}function S0(a,s){let o=s.valueOf();return Pe(5,a,o!==o?"":s.toISOString(),k,k,k,k,k,k,k,k,k)}function x0(a,s){return Pe(6,a,k,Kn(s.source),s.flags,k,k,k,k,k,k,k)}function A0(a,s){return Pe(17,a,dy[s],k,k,k,k,k,k,k,k,k)}function T0(a,s){return Pe(18,a,Kn(g0(s)),k,k,k,k,k,k,k,k,k)}function M0(a,s,o){return Pe(25,a,o,Kn(s),k,k,k,k,k,k,k,k)}function C0(a,s,o){return Pe(9,a,k,k,k,k,k,o,k,k,yy(s),k)}function _0(a,s){return Pe(21,a,k,k,k,k,k,k,s,k,k,k)}function R0(a,s,o){return Pe(15,a,k,s.constructor.name,k,k,k,k,o,s.byteOffset,k,s.length)}function E0(a,s,o){return Pe(16,a,k,s.constructor.name,k,k,k,k,o,s.byteOffset,k,s.byteLength)}
12function D0(a,s,o){return Pe(20,a,k,k,k,k,k,k,o,s.byteOffset,k,s.byteLength)}function N0(a,s,o){return Pe(13,a,wd(s),k,Kn(s.message),o,k,k,k,k,k,k)}function z0(a,s,o){return Pe(14,a,wd(s),k,Kn(s.message),o,k,k,k,k,k,k)}function P0(a,s){return Pe(7,a,k,k,k,k,k,s,k,k,k,k)}function q0(a,s){return Pe(28,k,k,k,k,k,k,[a,s],k,k,k,k)}function L0(a,s){return Pe(30,k,k,k,k,k,k,[a,s],k,k,k,k)}function O0(a,s,o){return Pe(31,a,k,k,k,k,k,o,s,k,k,k)}function H0(a,s){return Pe(32,a,k,k,k,k,k,k,s,k,k,k)}function I0(a,s){return Pe(33,a,k,k,k,k,k,k,s,k,k,k)}function j0(a,s){return Pe(34,a,k,k,k,k,k,k,s,k,k,k)}function B0(a,s,o,r){return Pe(35,a,o,k,k,k,k,s,k,k,k,r)}var U0={parsing:1,serialization:2,deserialization:3};function V0(a){return`Seroval Error (step: ${U0[a]})`}var G0=(a,s)=>V0(a),by=class extends Error{constructor(a,s){super(G0(a)),this.cause=s}},$p=class extends by{constructor(a){super("parsing",a)}},Y0=class extends by{constructor(a){super("deserialization",a)}};function dn(a){return`Seroval Error (specific: ${a})`}var wl=class extends Error{constructor(s){super(dn(1)),this.value=s}},wy=class extends Error{constructor(s){super(dn(2))}},W0=class extends Error{constructor(a){super(dn(3))}},Lo=class extends Error{constructor(a){super(dn(4))}},F0=class extends Error{constructor(a){super(dn(5)),this.value=a}},K0=class extends Error{constructor(a){super(dn(6))}},X0=class extends Error{constructor(a){super(dn(7))}},Qn=class extends Error{constructor(a){super(dn(8))}},Q0=class extends Error{constructor(s){super(dn(9))}},Z0=class{constructor(a,s){this.value=a,this.replacement=s}},kl=()=>{let a={p:0,s:0,f:0};return a.p=new Promise((s,o)=>{a.s=s,a.f=o}),a},$0=(a,s)=>{a.s(s),a.p.s=1,a.p.v=s},J0=(a,s)=>{a.f(s),a.p.s=2,a.p.v=s};kl.toString();$0.toString();J0.toString();var eS=()=>{let a=[],s=[],o=!0,r=!1,u=0,d=(g,p,b)=>{for(b=0;b<u;b++)s[b]&&s[b][p](g)},h=(g,p,b,f)=>{for(p=0,b=a.length;p<b;p++)f=a[p],!o&&p===b-1?g[r?"return":"throw"](f):g.next(f)},y=(g,p)=>(o&&(p=u++,s[p]=g),h(g),()=>{o&&(s[p]=s[u],s[u--]=void 0)});return{__SEROVAL_STREAM__:!0,on:g=>y(g),next:g=>{o&&(a.push(g),d(g,"next"))},throw:g=>{o&&(a.push(g),d(g,"throw"),o=!1,r=!1,s.length=0)},return:g=>{o&&(a.push(g),d(g,"return"),o=!1,r=!0,s.length=0)}}},tS=a=>s=>()=>{let o=0,r={[a]:()=>r,next:()=>{if(o>s.d)return{done:!0,value:void 0};let u=o++,d=s.v[u];if(u===s.t)throw d;return{done:u===s.d,value:d}}};return r},aS=(a,s)=>o=>()=>{let r=0,u=-1,d=!1,h=[],y=[],g=(b=0,f=y.length)=>{for(;b<f;b++)y[b].s({done:!0,value:void 0})};o.on({next:b=>{let f=y.shift();f&&f.s({done:!1,value:b}),h.push(b)},throw:b=>{let f=y.shift();f&&f.f(b),g(),u=h.length,d=!0,h.push(b)},return:b=>{let f=y.shift();f&&f.s({done:!0,value:b}),g(),u=h.length,h.push(b)}});let p={[a]:()=>p,next:()=>{if(u===-1){let w=r++;if(w>=h.length){let S=s();return y.push(S),S.p}return{done:!1,value:h[w]}}if(r>u)return{done:!0,value:void 0};let b=r++,f=h[b];if(b!==u)return{done:!1,value:f};if(d)throw f;return{done:!0,value:f}}};return p},ky=a=>{let s=atob(a),o=s.length,r=new Uint8Array(o);for(let u=0;u<o;u++)r[u]=s.charCodeAt(u);return r.buffer};ky.toString();function nS(a){return"__SEROVAL_SEQUENCE__"in a}function Sy(a,s,o){return{__SEROVAL_SEQUENCE__:!0,v:a,t:s,d:o}}function iS(a){let s=[],o=-1,r=-1,u=a[un]();for(;;)try{let d=u.next();if(s.push(d.value),d.done){r=s.length-1;break}}catch(d){o=s.length,s.push(d)}return Sy(s,o,r)}var sS=tS(un);function oS(a){return sS(a)}var rS={},lS={},cS={0:{},1:{},2:{},3:{},4:{},5:{}};function Sl(a){return"__SEROVAL_STREAM__"in a}function _i(){return eS()}function uS(a){let s=_i(),o=a[cn]();async function r(){try{let u=await o.next();u.done?s.return(u.value):(s.next(u.value),await r())}catch(u){s.throw(u)}}return r().catch(()=>{}),s}var dS=aS(cn,kl);function hS(a){return dS(a)}async function mS(a){try{return[1,await a]}catch(s){return[0,s]}}function fS(a,s){return{plugins:s.plugins,mode:a,marked:new Set,features:63^(s.disabledFeatures||0),refs:s.refs||new Map,depthLimit:s.depthLimit||1e3}}function ol(a,s){a.marked.add(s)}function pS(a,s){let o=a.refs.size;return a.refs.set(s,o),o}function xl(a,s){let o=a.refs.get(s);return o!=null?(ol(a,o),{type:1,value:k0(o)}):{type:0,value:pS(a,s)}}function kd(a,s){let o=xl(a,s);return o.type===1?o:py(s)?{type:2,value:T0(o.value,s)}:o}function Ai(a,s){let o=kd(a,s);if(o.type!==0)return o.value;if(s in dy)return A0(o.value,s);throw new wl(s)}function Al(a,s){let o=xl(a,cS[s]);return o.type===1?o.value:Pe(26,o.value,s,k,k,k,k,k,k,k,k,k)}function gS(a){let s=xl(a,rS);return s.type===1?s.value:Pe(27,s.value,k,k,k,k,k,k,Ai(a,un),k,k,k)}function yS(a){let s=xl(a,lS);return s.type===1?s.value:Pe(29,s.value,k,k,k,k,k,[Al(a,1),Ai(a,cn)],k,k,k,k)}function vS(a,s,o,r){return Pe(o?11:10,a,k,k,k,r,k,k,k,k,yy(s),k)}function bS(a,s,o,r){return Pe(8,s,k,k,k,k,{k:o,v:r},k,Al(a,0),k,k,k)}function wS(a,s,o){let r=new Uint8Array(o),u="";for(let d=0,h=r.length;d<h;d++)u+=String.fromCharCode(r[d]);return Pe(19,s,Kn(btoa(u)),k,k,k,k,k,Al(a,5),k,k,k)}function kS(a,s){return{base:fS(a,s),child:void 0}}var SS=class{constructor(a,s){this._p=a,this.depth=s}parse(a){return gt(this._p,this.depth,a)}};async function xS(a,s,o){let r=[];for(let u=0,d=o.length;u<d;u++)u in o?r[u]=await gt(a,s,o[u]):r[u]=0;return r}async function AS(a,s,o,r){return C0(o,r,await xS(a,s,r))}async function Sd(a,s,o){let r=Object.entries(o),u=[],d=[];for(let h=0,y=r.length;h<y;h++)u.push(Kn(r[h][0])),d.push(await gt(a,s,r[h][1]));
12return un in o&&(u.push(Ai(a.base,un)),d.push(q0(gS(a.base),await gt(a,s,iS(o))))),cn in o&&(u.push(Ai(a.base,cn)),d.push(L0(yS(a.base),await gt(a,s,uS(o))))),xs in o&&(u.push(Ai(a.base,xs)),d.push(vy(o[xs]))),Ss in o&&(u.push(Ai(a.base,Ss)),d.push(o[Ss]?hy:my)),{k:u,v:d}}async function Zu(a,s,o,r,u){return vS(o,r,u,await Sd(a,s,r))}async function TS(a,s,o,r){return _0(o,await gt(a,s,r.valueOf()))}async function MS(a,s,o,r){return R0(o,r,await gt(a,s,r.buffer))}async function CS(a,s,o,r){return E0(o,r,await gt(a,s,r.buffer))}async function _S(a,s,o,r){return D0(o,r,await gt(a,s,r.buffer))}async function Jp(a,s,o,r){let u=gy(r,a.base.features);return N0(o,r,u?await Sd(a,s,u):k)}async function RS(a,s,o,r){let u=gy(r,a.base.features);return z0(o,r,u?await Sd(a,s,u):k)}async function ES(a,s,o,r){let u=[],d=[];for(let[h,y]of r.entries())u.push(await gt(a,s,h)),d.push(await gt(a,s,y));return bS(a.base,o,u,d)}async function DS(a,s,o,r){let u=[];for(let d of r.keys())u.push(await gt(a,s,d));return P0(o,u)}async function xy(a,s,o,r){let u=a.base.plugins;if(u)for(let d=0,h=u.length;d<h;d++){let y=u[d];if(y.parse.async&&y.test(r))return M0(o,y.tag,await y.parse.async(r,new SS(a,s),{id:o}))}return k}async function NS(a,s,o,r){let[u,d]=await mS(r);return Pe(12,o,u,k,k,k,k,k,await gt(a,s,d),k,k,k)}function zS(a,s,o,r,u){let d=[],h=o.on({next:y=>{ol(this.base,s),gt(this,a,y).then(g=>{d.push(H0(s,g))},g=>{u(g),h()})},throw:y=>{ol(this.base,s),gt(this,a,y).then(g=>{d.push(I0(s,g)),r(d),h()},g=>{u(g),h()})},return:y=>{ol(this.base,s),gt(this,a,y).then(g=>{d.push(j0(s,g)),r(d),h()},g=>{u(g),h()})}})}async function PS(a,s,o,r){return O0(o,Al(a.base,4),await new Promise(zS.bind(a,s,o,r)))}async function qS(a,s,o,r){let u=[];for(let d=0,h=r.v.length;d<h;d++)u[d]=await gt(a,s,r.v[d]);return B0(o,u,r.t,r.d)}async function LS(a,s,o,r){if(Array.isArray(r))return AS(a,s,o,r);if(Sl(r))return PS(a,s,o,r);if(nS(r))return qS(a,s,o,r);let u=r.constructor;if(u===Z0)return gt(a,s,r.replacement);let d=await xy(a,s,o,r);if(d)return d;switch(u){case Object:return Zu(a,s,o,r,!1);case k:return Zu(a,s,o,r,!0);case Date:return S0(o,r);case Error:case EvalError:case RangeError:case ReferenceError:case SyntaxError:case TypeError:case URIError:return Jp(a,s,o,r);case Number:case Boolean:case String:case BigInt:return TS(a,s,o,r);case ArrayBuffer:return wS(a.base,o,r);case Int8Array:case Int16Array:case Int32Array:case Uint8Array:case Uint16Array:case Uint32Array:case Uint8ClampedArray:case Float32Array:case Float64Array:return MS(a,s,o,r);case DataView:return _S(a,s,o,r);case Map:return ES(a,s,o,r);case Set:return DS(a,s,o,r)}if(u===Promise||r instanceof Promise)return NS(a,s,o,r);let h=a.base.features;if(h&32&&u===RegExp)return x0(o,r);if(h&16)switch(u){case BigInt64Array:case BigUint64Array:return CS(a,s,o,r)}if(h&1&&typeof AggregateError<"u"&&(u===AggregateError||r instanceof AggregateError))return RS(a,s,o,r);if(r instanceof Error)return Jp(a,s,o,r);if(un in r||cn in r)return Zu(a,s,o,r,!!u);throw new wl(r)}async function OS(a,s,o){let r=kd(a.base,o);if(r.type!==0)return r.value;let u=await xy(a,s,r.value,o);if(u)return u;throw new wl(o)}async function gt(a,s,o){switch(typeof o){case"boolean":return o?hy:my;case"undefined":return r0;case"string":return vy(o);case"number":return b0(o);case"bigint":return w0(o);case"object":{if(o){let r=kd(a.base,o);return r.type===0?await LS(a,s+1,r.value,o):r.value}return l0}case"symbol":return Ai(a.base,o);case"function":return OS(a,s,o);default:throw new wl(o)}}async function HS(a,s){try{return await gt(a,0,s)}catch(o){throw o instanceof $p?o:new $p(o)}}var IS=(a=>(a[a.Vanilla=1]="Vanilla",a[a.Cross=2]="Cross",a))(IS||{});function Ay(a,s){for(let o=0,r=s.length;o<r;o++){let u=s[o];a.has(u)||(a.add(u),u.extends&&Ay(a,u.extends))}}function Ty(a){if(a){let s=new Set;return Ay(s,a),[...s]}}function jS(a){switch(a){case"Int8Array":return Int8Array;case"Int16Array":return Int16Array;case"Int32Array":return Int32Array;case"Uint8Array":return Uint8Array;case"Uint16Array":return Uint16Array;case"Uint32Array":return Uint32Array;case"Uint8ClampedArray":return Uint8ClampedArray;case"Float32Array":return Float32Array;case"Float64Array":return Float64Array;case"BigInt64Array":return BigInt64Array;case"BigUint64Array":return BigUint64Array;default:throw new X0(a)}}var BS=1e6,US=1e4,VS=2e4;function My(a,s){switch(s){case 3:return Object.freeze(a);case 1:return Object.preventExtensions(a);case 2:return Object.seal(a);default:return a}}var GS=1e3;function YS(a,s){var o;return{mode:a,plugins:s.plugins,refs:s.refs||new Map,features:(o=s.features)!=null?o:63^(s.disabledFeatures||0),depthLimit:s.depthLimit||GS}}
12function WS(a){return{mode:2,base:YS(2,a),child:k}}var FS=class{constructor(a,s){this._p=a,this.depth=s}deserialize(a){return Ye(this._p,this.depth,a)}};function Cy(a,s){if(s<0||!Number.isFinite(s)||!Number.isInteger(s))throw new Qn({t:4,i:s});if(a.refs.has(s))throw new Error("Conflicted ref id: "+s)}function KS(a,s,o){return Cy(a.base,s),a.state.marked.has(s)&&a.base.refs.set(s,o),o}function XS(a,s,o){return Cy(a.base,s),a.base.refs.set(s,o),o}function yt(a,s,o){return a.mode===1?KS(a,s,o):XS(a,s,o)}function cd(a,s,o){if(Object.hasOwn(s,o))return s[o];throw new Qn(a)}function QS(a,s){return yt(a,s.i,y0(Xn(s.s)))}function ZS(a,s,o){let r=o.a,u=r.length,d=yt(a,o.i,new Array(u));for(let h=0,y;h<u;h++)y=r[h],y&&(d[h]=Ye(a,s,y));return My(d,o.o),d}function $S(a){switch(a){case"constructor":case"__proto__":case"prototype":case"__defineGetter__":case"__defineSetter__":case"__lookupGetter__":case"__lookupSetter__":return!1;default:return!0}}function JS(a){switch(a){case cn:case Ss:case xs:case un:return!0;default:return!1}}function eg(a,s,o){$S(s)?a[s]=o:Object.defineProperty(a,s,{value:o,configurable:!0,enumerable:!0,writable:!0})}function ex(a,s,o,r,u){if(typeof r=="string")eg(o,Xn(r),Ye(a,s,u));else{let d=Ye(a,s,r);switch(typeof d){case"string":eg(o,d,Ye(a,s,u));break;case"symbol":JS(d)&&(o[d]=Ye(a,s,u));break;default:throw new Qn(r)}}}function _y(a,s,o,r){let u=o.k;if(u.length>0)for(let d=0,h=o.v,y=u.length;d<y;d++)ex(a,s,r,u[d],h[d]);return r}function tx(a,s,o){let r=yt(a,o.i,o.t===10?{}:Object.create(null));return _y(a,s,o.p,r),My(r,o.o),r}function ax(a,s){return yt(a,s.i,new Date(s.s))}function nx(a,s){if(a.base.features&32){let o=Xn(s.c);if(o.length>VS)throw new Qn(s);return yt(a,s.i,new RegExp(o,s.m))}throw new wy(s)}function ix(a,s,o){let r=yt(a,o.i,new Set);for(let u=0,d=o.a,h=d.length;u<h;u++)r.add(Ye(a,s,d[u]));return r}function sx(a,s,o){let r=yt(a,o.i,new Map);for(let u=0,d=o.e.k,h=o.e.v,y=d.length;u<y;u++)r.set(Ye(a,s,d[u]),Ye(a,s,h[u]));return r}function ox(a,s){if(s.s.length>BS)throw new Qn(s);return yt(a,s.i,ky(Xn(s.s)))}function rx(a,s,o){var r;let u=jS(o.c),d=Ye(a,s,o.f),h=(r=o.b)!=null?r:0;if(h<0||h>d.byteLength)throw new Qn(o);return yt(a,o.i,new u(d,h,o.l))}function lx(a,s,o){var r;let u=Ye(a,s,o.f),d=(r=o.b)!=null?r:0;if(d<0||d>u.byteLength)throw new Qn(o);return yt(a,o.i,new DataView(u,d,o.l))}function Ry(a,s,o,r){if(o.p){let u=_y(a,s,o.p,{});Object.defineProperties(r,Object.getOwnPropertyDescriptors(u))}return r}function cx(a,s,o){let r=yt(a,o.i,new AggregateError([],Xn(o.m)));return Ry(a,s,o,r)}function ux(a,s,o){let r=cd(o,o0,o.s),u=yt(a,o.i,new r(Xn(o.m)));return Ry(a,s,o,u)}function dx(a,s,o){let r=kl(),u=yt(a,o.i,r.p),d=Ye(a,s,o.f);return o.s?r.s(d):r.f(d),u}function hx(a,s,o){return yt(a,o.i,Object(Ye(a,s,o.f)))}function mx(a,s,o){let r=a.base.plugins;if(r){let u=Xn(o.c);for(let d=0,h=r.length;d<h;d++){let y=r[d];if(y.tag===u)return yt(a,o.i,y.deserialize(o.s,new FS(a,s),{id:o.i}))}}throw new W0(o.c)}function fx(a,s){return yt(a,s.i,yt(a,s.s,kl()).p)}function px(a,s,o){let r=a.base.refs.get(o.i);if(r)return r.s(Ye(a,s,o.a[1])),k;throw new Lo("Promise")}function gx(a,s,o){let r=a.base.refs.get(o.i);if(r)return r.f(Ye(a,s,o.a[1])),k;throw new Lo("Promise")}function yx(a,s,o){Ye(a,s,o.a[0]);let r=Ye(a,s,o.a[1]);return oS(r)}function vx(a,s,o){Ye(a,s,o.a[0]);let r=Ye(a,s,o.a[1]);return hS(r)}function bx(a,s,o){let r=yt(a,o.i,_i()),u=o.a,d=u.length;if(d)for(let h=0;h<d;h++)Ye(a,s,u[h]);return r}function wx(a,s,o){let r=a.base.refs.get(o.i);if(r&&Sl(r))return r.next(Ye(a,s,o.f)),k;throw new Lo("Stream")}function kx(a,s,o){let r=a.base.refs.get(o.i);if(r&&Sl(r))return r.throw(Ye(a,s,o.f)),k;throw new Lo("Stream")}function Sx(a,s,o){let r=a.base.refs.get(o.i);if(r&&Sl(r))return r.return(Ye(a,s,o.f)),k;throw new Lo("Stream")}function xx(a,s,o){return Ye(a,s,o.f),k}function Ax(a,s,o){return Ye(a,s,o.a[1]),k}function Tx(a,s,o){let r=yt(a,o.i,Sy([],o.s,o.l));for(let u=0,d=o.a.length;u<d;u++)r.v[u]=Ye(a,s,o.a[u]);return r}function Ye(a,s,o){if(s>a.base.depthLimit)throw new Q0(a.base.depthLimit);switch(s+=1,o.t){case 2:return cd(o,i0,o.s);case 0:return Number(o.s);case 1:return Xn(String(o.s));case 3:if(String(o.s).length>US)throw new Qn(o);return BigInt(o.s);case 4:return a.base.refs.get(o.i);case 18:return QS(a,o);case 9:return ZS(a,s,o);case 10:case 11:return tx(a,s,o);case 5:return ax(a,o);case 6:return nx(a,o);case 7:return ix(a,s,o);case 8:return sx(a,s,o);case 19:return ox(a,o);case 16:case 15:return rx(a,s,o);case 20:return lx(a,s,o);case 14:return cx(a,s,o);case 13:return ux(a,s,o);case 12:return dx(a,s,o);case 17:return cd(o,n0,o.s);case 21:return hx(a,s,o);case 25:return mx(a,s,o);case 22:return fx(a,o);case 23:return px(a,s,o);case 24:return gx(a,s,o);case 28:return yx(a,s,o);case 30:return vx(a,s,o);case 31:return bx(a,s,o);case 32:return wx(a,s,o);case 33:return kx(a,s,o);case 34:return Sx(a,s,o);case 27:return xx(a,s,o);case 29:return Ax(a,s,o);case 35:return Tx(a,s,o);default:throw new wy(o)}}function Mx(a,s){try{return Ye(a,0,s)}catch(o){throw new Y0(o)}}var Cx=()=>T;Cx.toString();function tg(a,s){let o=Ty(s.plugins),r=WS({plugins:o,refs:s.refs,features:s.features,disabledFeatures:s.disabledFeatures,depthLimit:s.depthLimit});return Mx(r,a)}async function _x(a,s={}){let o=Ty(s.plugins),r=kS(1,{plugins:o,disabledFeatures:s.disabledFeatures});return{t:await HS(r,a),f:r.base.features,m:Array.from(r.base.marked)}}function Rx(a){return{tag:"$TSR/t/"+a.key,test:a.test,parse:{sync(s,o,r){return{v:o.parse(a.toSerializable(s))}},async async(s,o,r){return{v:await o.parse(a.toSerializable(s))}},stream(s,o,r){return{v:o.parse(a.toSerializable(s))}}},serialize:void 0,deserialize(s,o,r){return a.fromSerializable(o.deserialize(s.v))}}}var Ex=class{constructor(a,s){this.stream=a,this.hint=s?.hint??"binary"}},hl=globalThis.Buffer,Ey=!!hl&&typeof hl.from=="function";function Dy(a){if(a.length===0)return"";if(Ey)return hl.from(a).toString("base64");const s=32768,o=[];for(let r=0;r<a.length;r+=s){const u=a.subarray(r,r+s);o.push(String.fromCharCode.apply(null,u))}return btoa(o.join(""))}
12function Ny(a){if(a.length===0)return new Uint8Array(0);if(Ey){const r=hl.from(a,"base64");return new Uint8Array(r.buffer,r.byteOffset,r.byteLength)}const s=atob(a),o=new Uint8Array(s.length);for(let r=0;r<s.length;r++)o[r]=s.charCodeAt(r);return o}var Ao=Object.create(null),To=Object.create(null),Dx=a=>new ReadableStream({start(s){a.on({next(o){try{s.enqueue(Ny(o))}catch{}},throw(o){s.error(o)},return(){try{s.close()}catch{}}})}}),Nx=new TextEncoder,zx=a=>new ReadableStream({start(s){a.on({next(o){try{typeof o=="string"?s.enqueue(Nx.encode(o)):s.enqueue(Ny(o.$b64))}catch{}},throw(o){s.error(o)},return(){try{s.close()}catch{}}})}}),Px="(s=>new ReadableStream({start(c){s.on({next(b){try{const d=atob(b),a=new Uint8Array(d.length);for(let i=0;i<d.length;i++)a[i]=d.charCodeAt(i);c.enqueue(a)}catch(_){}},throw(e){c.error(e)},return(){try{c.close()}catch(_){}}})}}))",qx="(s=>{const e=new TextEncoder();return new ReadableStream({start(c){s.on({next(v){try{if(typeof v==='string'){c.enqueue(e.encode(v))}else{const d=atob(v.$b64),a=new Uint8Array(d.length);for(let i=0;i<d.length;i++)a[i]=d.charCodeAt(i);c.enqueue(a)}}catch(_){}},throw(x){c.error(x)},return(){try{c.close()}catch(_){}}})}})})";function ag(a){const s=_i(),o=a.getReader();return(async()=>{try{for(;;){const{done:r,value:u}=await o.read();if(r){s.return(void 0);break}s.next(Dy(u))}}catch(r){s.throw(r)}finally{o.releaseLock()}})(),s}function ng(a){const s=_i(),o=a.getReader(),r=new TextDecoder("utf-8",{fatal:!0});return(async()=>{try{for(;;){const{done:u,value:d}=await o.read();if(u){try{const h=r.decode();h.length>0&&s.next(h)}catch{}s.return(void 0);break}try{const h=r.decode(d,{stream:!0});h.length>0&&s.next(h)}catch{s.next({$b64:Dy(d)})}}}catch(u){s.throw(u)}finally{o.releaseLock()}})(),s}var Lx={tag:"tss/RawStream",extends:[{tag:"tss/RawStreamFactory",test(a){return a===Ao},parse:{sync(a,s,o){return{}},async async(a,s,o){return{}},stream(a,s,o){return{}}},serialize(a,s,o){return Px},deserialize(a,s,o){return Ao}},{tag:"tss/RawStreamFactoryText",test(a){return a===To},parse:{sync(a,s,o){return{}},async async(a,s,o){return{}},stream(a,s,o){return{}}},serialize(a,s,o){return qx},deserialize(a,s,o){return To}}],test(a){return a instanceof Ex},parse:{sync(a,s,o){const r=a.hint==="text"?To:Ao;return{hint:s.parse(a.hint),factory:s.parse(r),stream:s.parse(_i())}},async async(a,s,o){const r=a.hint==="text"?To:Ao,u=a.hint==="text"?ng(a.stream):ag(a.stream);return{hint:await s.parse(a.hint),factory:await s.parse(r),stream:await s.parse(u)}},stream(a,s,o){const r=a.hint==="text"?To:Ao,u=a.hint==="text"?ng(a.stream):ag(a.stream);return{hint:s.parse(a.hint),factory:s.parse(r),stream:s.parse(u)}}},serialize(a,s,o){return"("+s.serialize(a.factory)+")("+s.serialize(a.stream)+")"},deserialize(a,s,o){const r=s.deserialize(a.stream);return s.deserialize(a.hint)==="text"?zx(r):Dx(r)}};function Ox(a){return{tag:"tss/RawStream",test:()=>!1,parse:{},serialize(){throw new Error("RawStreamDeserializePlugin.serialize should not be called. Client only deserializes.")},deserialize(s,o,r){return a(typeof o?.deserialize=="function"?o.deserialize(s.streamId):s.streamId)}}}var Hx={tag:"$TSR/Error",test(a){return a instanceof Error},parse:{sync(a,s){return{message:s.parse(a.message)}},async async(a,s){return{message:await s.parse(a.message)}},stream(a,s){return{message:s.parse(a.message)}}},serialize(a,s){return"new Error("+s.serialize(a.message)+")"},deserialize(a,s){return new Error(s.deserialize(a.message))}},Bn={},zy=a=>new ReadableStream({start:s=>{a.on({next:o=>{try{s.enqueue(o)}catch{}},throw:o=>{s.error(o)},return:()=>{try{s.close()}catch{}}})}}),Ix={tag:"seroval-plugins/web/ReadableStreamFactory",test(a){return a===Bn},parse:{sync(){return Bn},async async(){return await Promise.resolve(Bn)},stream(){return Bn}},serialize(){return zy.toString()},deserialize(){return Bn}};function ig(a){let s=_i(),o=a.getReader();async function r(){try{let u=await o.read();u.done?s.return(u.value):(s.next(u.value),await r())}catch(u){s.throw(u)}}return r().catch(()=>{}),s}var jx={tag:"seroval/plugins/web/ReadableStream",extends:[Ix],test(a){return typeof ReadableStream>"u"?!1:a instanceof ReadableStream},parse:{sync(a,s){return{factory:s.parse(Bn),stream:s.parse(_i())}},async async(a,s){return{factory:await s.parse(Bn),stream:await s.parse(ig(a))}},stream(a,s){return{factory:s.parse(Bn),stream:s.parse(ig(a))}}}
12,serialize(a,s){return"("+s.serialize(a.factory)+")("+s.serialize(a.stream)+")"},deserialize(a,s){let o=s.deserialize(a.stream);return zy(o)}},Bx=jx,Ux=[Hx,Lx,Bx];function Vx(){return[...Ug()?.serializationAdapters?.map(Rx)??[],...Ux]}var sg=new TextDecoder,Gx=new Uint8Array(0),og=16*1024*1024,rg=32*1024*1024,lg=1024,cg=1e5;function Yx(a){const s=new Map,o=new Map,r=new Set;let u=!1,d=null,h=0,y;const g=new ReadableStream({start(f){y=f},cancel(){u=!0;try{d?.cancel()}catch{}s.forEach(f=>{try{f.error(new Error("Framed response cancelled"))}catch{}}),s.clear(),o.clear(),r.clear()}});function p(f){const w=o.get(f);if(w)return w;if(r.has(f))return new ReadableStream({start(M){M.close()}});if(o.size>=lg)throw new Error(`Too many raw streams in framed response (max ${lg})`);const S=new ReadableStream({start(M){s.set(f,M)},cancel(){r.add(f),s.delete(f),o.delete(f)}});return o.set(f,S),S}function b(f){return p(f),s.get(f)}return(async()=>{const f=a.getReader();d=f;const w=[];let S=0;function M(){if(S<9)return null;const x=w[0];if(x.length>=9)return{type:x[0],streamId:(x[1]<<24|x[2]<<16|x[3]<<8|x[4])>>>0,length:(x[5]<<24|x[6]<<16|x[7]<<8|x[8])>>>0};const C=new Uint8Array(9);let G=0,U=9;for(let I=0;I<w.length&&U>0;I++){const te=w[I],$=Math.min(te.length,U);C.set(te.subarray(0,$),G),G+=$,U-=$}return{type:C[0],streamId:(C[1]<<24|C[2]<<16|C[3]<<8|C[4])>>>0,length:(C[5]<<24|C[6]<<16|C[7]<<8|C[8])>>>0}}function D(x){if(x===0)return Gx;const C=new Uint8Array(x);let G=0,U=x;for(;U>0&&w.length>0;){const I=w[0];if(!I)break;const te=Math.min(I.length,U);C.set(I.subarray(0,te),G),G+=te,U-=te,te===I.length?w.shift():w[0]=I.subarray(te)}return S-=x,C}try{for(;;){const{done:x,value:C}=await f.read();if(u||x)break;if(C){if(S+C.length>rg)throw new Error(`Framed response buffer exceeded ${rg} bytes`);for(w.push(C),S+=C.length;;){const G=M();if(!G)break;const{type:U,streamId:I,length:te}=G;if(U!==rn.JSON&&U!==rn.CHUNK&&U!==rn.END&&U!==rn.ERROR)throw new Error(`Unknown frame type: ${U}`);if(U===rn.JSON){if(I!==0)throw new Error("Invalid JSON frame streamId (expected 0)")}else if(I===0)throw new Error("Invalid raw frame streamId (expected non-zero)");if(te>og)throw new Error(`Frame payload too large: ${te} bytes (max ${og})`);const $=9+te;if(S<$)break;if(++h>cg)throw new Error(`Too many frames in framed response (max ${cg})`);D(9);const V=D(te);switch(U){case rn.JSON:try{y.enqueue(sg.decode(V))}catch{}break;case rn.CHUNK:{const O=b(I);O&&O.enqueue(V);break}case rn.END:{const O=b(I);if(r.add(I),O){try{O.close()}catch{}s.delete(I)}break}case rn.ERROR:{const O=b(I);if(r.add(I),O){const Q=sg.decode(V);O.error(new Error(Q)),s.delete(I)}break}}}}}if(S!==0)throw new Error("Incomplete frame at end of framed response");try{y.close()}catch{}s.forEach(x=>{try{x.close()}catch{}}),s.clear()}catch(x){try{y.error(x)}catch{}s.forEach(C=>{try{C.error(x)}catch{}}),s.clear()}finally{try{f.releaseLock()}catch{}d=null}})(),{getOrCreateStream:p,jsonChunks:g}}var Po=null;async function ud(a){a.length>0&&await Promise.allSettled(a)}var Wx=Object.prototype.hasOwnProperty;function Py(a){for(const s in a)if(Wx.call(a,s))return!0;return!1}async function Fx(a,s,o){Po||(Po=Vx());const r=s[0],u=r.fetch??o,d=r.data instanceof FormData?"formData":"payload",h=r.headers?new Headers(r.headers):new Headers;if(h.set("x-tsr-serverFn","true"),d==="payload"&&h.set("accept",`${Yw}, application/x-ndjson, application/json`),r.method==="GET"){if(d==="formData")throw new Error("FormData is not supported with GET requests");const g=await qy(r);if(g!==void 0){const p=Kg({payload:g});a.includes("?")?a+=`&${p}`:a+=`?${p}`}}let y;if(r.method==="POST"){const g=await Kx(r);g?.contentType&&h.set("content-type",g.contentType),y=g?.body}return await Xx(async()=>u(a,{method:r.method,headers:h,signal:r.signal,body:y}))}async function qy(a){let s=!1;const o={};if(a.data!==void 0&&(s=!0,o.data=a.data),a.context&&Py(a.context)&&(s=!0,o.context=a.context),s)return Ly(o)}async function Ly(a){return JSON.stringify(await Promise.resolve(_x(a,{plugins:Po})))}async function Kx(a){if(a.data instanceof FormData){let o;return a.context&&Py(a.context)&&(o=await Ly(a.context)),o!==void 0&&a.data.set(Gw,o),{body:a.data}}const s=await qy(a);if(s)return{body:s,contentType:"application/json"}}async function Xx(a){let s;try{s=await a()}catch(r){if(r instanceof Response)s=r;else throw console.log(r),r}if(s.headers.get("x-tss-raw")==="true")return s;const o=s.headers.get("content-type");if(o||$t(),s.headers.get("x-tss-serialized")){let r;if(o.includes("application/x-tss-framed")){if(Kw(o),!s.body)throw new Error("No response body for framed response");const{getOrCreateStream:u,jsonChunks:d}=Yx(s.body),h=[Ox(u),...Po||[]],y=new Map;r=await Qx({jsonStream:d,onMessage:g=>tg(g,{refs:y,plugins:h}),onError(g,p){console.error(g,p)}})}else if(o.includes("application/json")){const u=await s.json(),d=[];r=tg(u,{plugins:Po}),await ud(d)}if(r||$t(),r instanceof Error)throw r;return r}if(o.includes("application/json")){const r=await s.json(),u=Ek(r);if(u)throw u;if(xt(r))throw r;return r}if(!s.ok)throw new Error(await s.text());return s}async function Qx({jsonStream:a,onMessage:s,onError:o}){const r=a.getReader(),{value:u,done:d}=await r.read();if(d||!u)throw new Error("Stream ended before first object");const h=JSON.parse(u);let y=!1;const g=(async()=>{try{for(;;){const{value:f,done:w}=await r.read();if(w)break;if(f)try{const S=[];try{s(JSON.parse(f))}finally{}await ud(S)}catch(S){o?.(`Invalid JSON: ${f}`,S)}}}catch(f){y||o?.("Stream processing error:",f)}})();let p;const b=[];try{p=s(h)}catch(f){throw y=!0,r.cancel().catch(()=>{}),f}return await ud(b),Promise.resolve(p).catch(()=>{y=!0,r.cancel().catch(()=>{})}),g.finally(()=>{try{r.releaseLock()}catch{}}),p}function Zx(a){const s="/_serverFn/"+a;return Object.assign((...u)=>{const d=Ug()?.serverFns?.fetch;return Fx(s,u,d??fetch)},{url:s,serverFnMeta:{id:a},[od]:!0})}
12var $x={key:"$TSS/serverfn",test:a=>typeof a!="function"||!(od in a)?!1:!!a[od],toSerializable:({serverFnMeta:a})=>({functionId:a.id}),fromSerializable:({functionId:a})=>Zx(a)};function ug(a){return a.replaceAll("\0","/").replaceAll("�","/")}function Jx(a,s){a.id=s.i,a.__beforeLoadContext=s.b,a.loaderData=s.l,a.status=s.s,a.ssr=s.ssr,a.updatedAt=s.u,a.error=s.e,s.g!==void 0&&(a.globalNotFound=s.g)}async function eA(a){window.$_TSR||$t();const s=a.options.serializationAdapters;if(s?.length){const x=new Map;s.forEach(C=>{x.set(C.key,C.fromSerializable)}),window.$_TSR.t=x,window.$_TSR.buffer.forEach(C=>C())}window.$_TSR.initialized=!0,window.$_TSR.router||$t();const o=window.$_TSR.router;o.matches.forEach(x=>{x.i=ug(x.i)}),o.lastMatchId&&(o.lastMatchId=ug(o.lastMatchId));const{manifest:r,dehydratedData:u,lastMatchId:d}=o;a.ssr={manifest:r};const h=document.querySelector('meta[property="csp-nonce"]')?.content;a.options.ssr={nonce:h};const y=a.matchRoutes(a.stores.location.get()),g=Promise.all(y.map(x=>a.loadRouteChunk(a.looseRoutesById[x.routeId])));function p(x){const C=a.looseRoutesById[x.routeId].options.pendingMinMs??a.options.defaultPendingMinMs;if(C){const G=Ci();x._nonReactive.minPendingPromise=G,x._forcePending=!0,setTimeout(()=>{G.resolve(),a.updateMatch(x.id,U=>(U._nonReactive.minPendingPromise=void 0,{...U,_forcePending:void 0}))},C)}}function b(x){const C=a.looseRoutesById[x.routeId];C&&(C.options.ssr=x.ssr)}let f;
12y.forEach(x=>{const C=o.matches.find(G=>G.i===x.id);if(!C){x._nonReactive.dehydrated=!1,x.ssr=!1,b(x);return}Jx(x,C),b(x),x._nonReactive.dehydrated=x.ssr!==!1,(x.ssr==="data-only"||x.ssr===!1)&&f===void 0&&(f=x.index,p(x))}),a.stores.setMatches(y),await a.options.hydrate?.(u);const w=a.stores.matches.get(),S=a.stores.location.get();await Promise.all(w.map(async x=>{try{const C=a.looseRoutesById[x.routeId],G=w[x.index-1]?.context??a.options.context;if(C.options.context){const $={deps:x.loaderDeps,params:x.params,context:G??{},location:S,navigate:V=>a.navigate({...V,_fromLocation:S}),buildLocation:a.buildLocation,cause:x.cause,abortController:x.abortController,preload:!1,matches:y,routeId:C.id};x.__routeContext=C.options.context($)??void 0}x.context={...G,...x.__routeContext,...x.__beforeLoadContext};const U={ssr:a.options.ssr,matches:w,match:x,params:x.params,loaderData:x.loaderData},I=await C.options.head?.(U),te=await C.options.scripts?.(U);x.meta=I?.meta,x.links=I?.links,x.headScripts=I?.scripts,x.styles=I?.styles,x.scripts=te}catch(C){if(xt(C))x.error={isNotFound:!0},console.error(`NotFound error during hydration for routeId: ${x.routeId}`,C);else throw x.error=C,console.error(`Error during hydration for route ${x.routeId}:`,C),C}}));const M=y[y.length-1].id!==d;if(!y.some(x=>x.ssr===!1)&&!M)return y.forEach(x=>{x._nonReactive.dehydrated=void 0}),a.stores.resolvedLocation.set(a.stores.location.get()),g;const D=Promise.resolve().then(()=>a.load()).catch(x=>{console.error("Error during router hydration:",x)});if(M){const x=y[1];x||$t(),p(x),x._displayPending=!0,x._nonReactive.displayPendingPromise=D,D.then(()=>{a.batch(()=>{a.stores.status.get()==="pending"&&(a.stores.status.set("idle"),a.stores.resolvedLocation.set(a.stores.location.get())),a.updateMatch(x.id,C=>({...C,_displayPending:void 0,displayPendingPromise:void 0}))})})}return g}var ml=ae.use,_o=typeof window<"u"?ae.useLayoutEffect:ae.useEffect;function $u(a){const s=ae.useRef({value:a,prev:null}),o=s.current.value;return a!==o&&(s.current={value:a,prev:o}),s.current.prev}function tA(a,s,o={},r={}){ae.useEffect(()=>{if(!a.current||r.disabled||typeof IntersectionObserver!="function")return;const u=new IntersectionObserver(([d])=>{s(d)},o);return u.observe(a.current),()=>{u.disconnect()}},[s,o,r.disabled,a])}function aA(a){const s=ae.useRef(null);return ae.useImperativeHandle(a,()=>s.current,[]),s}function nA({promise:a}){if(ml)return ml(a);const s=Zk(a);if(s[Oa].status==="pending")throw s;if(s[Oa].status==="error")throw s[Oa].error;return s[Oa].data}function iA(a){const s=E.jsx(sA,{...a});return a.fallback?E.jsx(ae.Suspense,{fallback:a.fallback,children:s}):s}function sA(a){const s=nA(a);return a.children(s)}function xd(a){const s=a.errorComponent??Ad;return E.jsx(oA,{getResetKey:a.getResetKey,onCatch:a.onCatch,children:({error:o,reset:r})=>o?ae.createElement(s,{error:o,reset:r}):a.children})}var oA=class extends ae.Component{constructor(...a){super(...a),this.state={error:null}}static getDerivedStateFromProps(a,s){const o=a.getResetKey();return s.error&&s.resetKey!==o?{resetKey:o,error:null}:{resetKey:o}}static getDerivedStateFromError(a){return{error:a}}reset(){this.setState({error:null})}componentDidCatch(a,s){this.props.onCatch&&this.props.onCatch(a,s)}render(){return this.props.children({error:this.state.error,reset:()=>{this.reset()}})}};function Ad({error:a}){const[s,o]=ae.useState(!1);return E.jsxs("div",{style:{padding:".5rem",maxWidth:"100%"},children:[E.jsxs("div",{style:{display:"flex",alignItems:"center",gap:".5rem"},children:[E.jsx("strong",{style:{fontSize:"1rem"},children:"Something went wrong!"}),E.jsx("button",{style:{appearance:"none",fontSize:".6em",border:"1px solid currentColor",padding:".1rem .2rem",fontWeight:"bold",borderRadius:".25rem"},onClick:()=>o(r=>!r),children:s?"Hide Error":"Show Error"})]}),E.jsx("div",{style:{height:".25rem"}}),s?E.jsx("div",{children:E.jsx("pre",{style:{fontSize:".7em",border:"1px solid red",borderRadius:".25rem",padding:".3rem",color:"red",overflow:"auto"},children:a.message?E.jsx("code",{children:a.message}):null})}):null]})}function rA({children:a,fallback:s=null}){return Td()?E.jsx(ee.Fragment,{children:a}):E.jsx(ee.Fragment,{children:s})}function Td(){return ee.useSyncExternalStore(lA,()=>!0,()=>!1)}function lA(){return()=>{}}var Oy=ae.createContext(null);function dt(a){return ae.useContext(Oy)}var Tl=ae.createContext(void 0),cA=ae.createContext(void 0),Ze=(a=>(a[a.None=0]="None",a[a.Mutable=1]="Mutable",a[a.Watching=2]="Watching",a[a.RecursedCheck=4]="RecursedCheck",a[a.Recursed=8]="Recursed",a[a.Dirty=16]="Dirty",a[a.Pending=32]="Pending",a))(Ze||{});function uA({update:a,notify:s,unwatched:o}){return{link:r,unlink:u,propagate:d,checkDirty:h,shallowPropagate:y};function r(p,b,f){const w=b.depsTail;if(w!==void 0&&w.dep===p)return;const S=w!==void 0?w.nextDep:b.deps;if(S!==void 0&&S.dep===p){S.version=f,b.depsTail=S;return}const M=p.subsTail;if(M!==void 0&&M.version===f&&M.sub===b)return;const D=b.depsTail=p.subsTail={version:f,dep:p,sub:b,prevDep:w,nextDep:S,prevSub:M,nextSub:void 0};S!==void 0&&(S.prevDep=D),w!==void 0?w.nextDep=D:b.deps=D,M!==void 0?M.nextSub=D:p.subs=D}function u(p,b=p.sub){const f=p.dep,w=p.prevDep,S=p.nextDep,M=p.nextSub,D=
12p.prevSub;return S!==void 0?S.prevDep=w:b.depsTail=w,w!==void 0?w.nextDep=S:b.deps=S,M!==void 0?M.prevSub=D:f.subsTail=D,D!==void 0?D.nextSub=M:(f.subs=M)===void 0&&o(f),S}function d(p){let b=p.nextSub,f;e:do{const w=p.sub;let S=w.flags;if(S&60?S&12?S&4?!(S&48)&&g(p,w)?(w.flags=S|40,S&=1):S=0:w.flags=S&-9|32:S=0:w.flags=S|32,S&2&&s(w),S&1){const M=w.subs;if(M!==void 0){const D=(p=M).nextSub;D!==void 0&&(f={value:b,prev:f},b=D);continue}}if((p=b)!==void 0){b=p.nextSub;continue}for(;f!==void 0;)if(p=f.value,f=f.prev,p!==void 0){b=p.nextSub;continue e}break}while(!0)}function h(p,b){let f,w=0,S=!1;e:do{const M=p.dep,D=M.flags;if(b.flags&16)S=!0;else if((D&17)===17){if(a(M)){const x=M.subs;x.nextSub!==void 0&&y(x),S=!0}}else if((D&33)===33){(p.nextSub!==void 0||p.prevSub!==void 0)&&(f={value:p,prev:f}),p=M.deps,b=M,++w;continue}if(!S){const x=p.nextDep;if(x!==void 0){p=x;continue}}for(;w--;){const x=b.subs,C=x.nextSub!==void 0;if(C?(p=f.value,f=f.prev):p=x,S){if(a(b)){C&&y(x),b=p.sub;continue}S=!1}else b.flags&=-33;b=p.sub;const G=p.nextDep;if(G!==void 0){p=G;continue e}}return S}while(!0)}function y(p){do{const b=p.sub,f=b.flags;(f&48)===32&&(b.flags=f|16,(f&6)===2&&s(b))}while((p=p.nextSub)!==void 0)}function g(p,b){let f=b.depsTail;for(;f!==void 0;){if(f===p)return!0;f=f.prevDep}return!1}}function dA(a,s,o){const r=typeof a=="object",u=r?a:void 0;return{next:(r?a.next:a)?.bind(u),error:(r?a.error:s)?.bind(u),complete:(r?a.complete:o)?.bind(u)}}const dd=[];let rl=0;const{link:dg,unlink:hA,propagate:mA,checkDirty:Hy,shallowPropagate:hg}=uA({update(a){return a._update()},notify(a){dd[hd++]=a,a.flags&=~Ze.Watching},unwatched(a){a.depsTail!==void 0&&(a.depsTail=void 0,a.flags=Ze.Mutable|Ze.Dirty,fl(a))}});let Jr=0,hd=0,La,md=0;function Iy(a){try{++md,a()}finally{--md||jy()}}function fl(a){const s=a.depsTail;let o=s!==void 0?s.nextDep:a.deps;for(;o!==void 0;)o=hA(o,a)}function jy(){if(!(md>0)){for(;Jr<hd;){const a=dd[Jr];dd[Jr++]=void 0,a.notify()}Jr=0,hd=0}}function mg(a,s){const o=typeof a=="function",r=a,u={_snapshot:o?void 0:a,subs:void 0,subsTail:void 0,deps:void 0,depsTail:void 0,flags:o?Ze.None:Ze.Mutable,get(){return La!==void 0&&dg(u,La,rl),u._snapshot},subscribe(d){const h=dA(d),y={current:!1},g=fA(()=>{u.get(),y.current?h.next?.(u._snapshot):y.current=!0});return{unsubscribe:()=>{g.stop()}}},_update(d){const h=La,y=s?.compare??Object.is;if(o)La=u,++rl,u.depsTail=void 0;else if(d===void 0)return!1;o&&(u.flags=Ze.Mutable|Ze.RecursedCheck);try{const g=u._snapshot,p=typeof d=="function"?d(g):d===void 0&&o?r(g):d;return g===void 0||!y(g,p)?(u._snapshot=p,!0):!1}finally{La=h,o&&(u.flags&=~Ze.RecursedCheck),fl(u)}}};return o?(u.flags=Ze.Mutable|Ze.Dirty,u.get=function(){const d=u.flags;if(d&Ze.Dirty||d&Ze.Pending&&Hy(u.deps,u)){if(u._update()){const h=u.subs;h!==void 0&&hg(h)}}else d&Ze.Pending&&(u.flags=d&~Ze.Pending);return La!==void 0&&dg(u,La,rl),u._snapshot}):u.set=function(d){if(u._update(d)){const h=u.subs;h!==void 0&&(mA(h),hg(h),jy())}},u}function fA(a){const s=()=>{const r=La;La=o,++rl,o.depsTail=void 0,o.flags=Ze.Watching|Ze.RecursedCheck;try{return a()}finally{La=r,o.flags&=~Ze.RecursedCheck,fl(o)}},o={deps:void 0,depsTail:void 0,subs:void 0,subsTail:void 0,flags:Ze.Watching|Ze.RecursedCheck,notify(){const r=this.flags;r&Ze.Dirty||r&Ze.Pending&&Hy(this.deps,this)?s():this.flags=Ze.Watching},stop(){this.flags=Ze.None,this.depsTail=void 0,fl(this)}};return s(),o}var Ju={exports:{}},ed={},td={exports:{}},ad={};var fg;function pA(){if(fg)return ad;fg=1;var a=qo();function s(f,w){return f===w&&(f!==0||1/f===1/w)||f!==f&&w!==w}var o=typeof Object.is=="function"?Object.is:s,r=a.useState,u=a.useEffect,d=a.useLayoutEffect,h=a.useDebugValue;function y(f,w){var S=w(),M=r({inst:{value:S,getSnapshot:w}}),D=M[0].inst,x=M[1];return d(function(){D.value=S,D.getSnapshot=w,g(D)&&x({inst:D})},[f,S,w]),u(function(){return g(D)&&x({inst:D}),f(function(){g(D)&&x({inst:D})})},[f]),h(S),S}function g(f){var w=f.getSnapshot;f=f.value;try{var S=w();return!o(f,S)}catch{return!0}}function p(f,w){return w()}var b=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?p:y;return ad.useSyncExternalStore=a.useSyncExternalStore!==void 0?a.useSyncExternalStore:b,ad}var pg;function gA(){return pg||(pg=1,td.exports=pA()),td.exports}var gg;
12function yA(){if(gg)return ed;gg=1;var a=qo(),s=gA();function o(p,b){return p===b&&(p!==0||1/p===1/b)||p!==p&&b!==b}var r=typeof Object.is=="function"?Object.is:o,u=s.useSyncExternalStore,d=a.useRef,h=a.useEffect,y=a.useMemo,g=a.useDebugValue;return ed.useSyncExternalStoreWithSelector=function(p,b,f,w,S){var M=d(null);if(M.current===null){var D={hasValue:!1,value:null};M.current=D}else D=M.current;M=y(function(){function C($){if(!G){if(G=!0,U=$,$=w($),S!==void 0&&D.hasValue){var V=D.value;if(S(V,$))return I=V}return I=$}if(V=I,r(U,$))return V;var O=w($);return S!==void 0&&S(V,O)?(U=$,V):(U=$,I=O)}var G=!1,U,I,te=f===void 0?null:f;return[function(){return C(b())},te===null?void 0:function(){return C(te())}]},[b,f,w,S]);var x=u(p,M[0],M[1]);return h(function(){D.hasValue=!0,D.value=x},[x]),g(x),x},ed}var yg;function vA(){return yg||(yg=1,Ju.exports=yA()),Ju.exports}var bA=vA();function wA(a,s){return a===s}function st(a,s,o=wA){const r=ae.useCallback(h=>{if(!a)return()=>{};const{unsubscribe:y}=a.subscribe(h);return y},[a]),u=ae.useCallback(()=>a?.get(),[a]);return bA.useSyncExternalStoreWithSelector(r,u,u,s,o)}var kA={get:()=>{},subscribe:()=>({unsubscribe:()=>{}})};function Ri(a){const s=dt(),o=ae.useContext(a.from?cA:Tl),r=a.from??o,u=r?a.from?s.stores.getRouteMatchStore(r):s.stores.matchStores.get(r):void 0,d=ae.useRef(void 0);return st(u??kA,h=>{if((a.shouldThrow??!0)&&!h&&$t(),h===void 0)return;const y=a.select?a.select(h):h;if(a.structuralSharing??s.options.defaultStructuralSharing){const g=Vn(d.current,y);return d.current=g,g}return y})}function By(a){return Ri({from:a.from,strict:a.strict,structuralSharing:a.structuralSharing,select:s=>a.select?a.select(s.loaderData):s.loaderData})}function Uy(a){const{select:s,...o}=a;return Ri({...o,select:r=>s?s(r.loaderDeps):r.loaderDeps})}function Vy(a){return Ri({from:a.from,shouldThrow:a.shouldThrow,structuralSharing:a.structuralSharing,strict:a.strict,select:s=>{const o=a.strict===!1?s.params:s._strictParams;return a.select?a.select(o):o}})}function Gy(a){return Ri({from:a.from,strict:a.strict,shouldThrow:a.shouldThrow,structuralSharing:a.structuralSharing,select:s=>a.select?a.select(s.search):s.search})}function Yy(a){const s=dt();return ae.useCallback(o=>s.navigate({...o,from:o.from??a?.from}),[a?.from,s])}function Wy(a){return Ri({...a,select:s=>a.select?a.select(s.context):s.context})}var Fy=Bg();const SA=jg(Fy);function xA(a,s){const o=dt(),r=aA(s),{activeProps:u,inactiveProps:d,activeOptions:h,to:y,preload:g,preloadDelay:p,preloadIntentProximity:b,hashScrollIntoView:f,replace:w,startTransition:S,resetScroll:M,viewTransition:D,children:x,target:C,disabled:G,style:U,className:I,onClick:te,onBlur:$,onFocus:V,onMouseEnter:O,onMouseLeave:Q,onTouchStart:he,ignoreBlocker:ne,params:ge,search:ye,hash:qe,state:Ae,mask:z,reloadDocument:K,unsafeRelative:oe,from:Se,_fromLocation:J,..._}=a,B=Td(),W=ae.useMemo(()=>a,[o,a.from,a._fromLocation,a.hash,a.to,a.search,a.params,a.state,a.mask,a.unsafeRelative]),Z=st(o.stores.location,je=>je,(je,et)=>je.href===et.href),X=ae.useMemo(()=>{const je={_fromLocation:Z,...W};return o.buildLocation(je)},[o,Z,W]),ie=X.maskedLocation?X.maskedLocation.publicHref:X.publicHref,we=X.maskedLocation?X.maskedLocation.external:X.external,ve=ae.useMemo(()=>RA(ie,we,o.history,G),[G,we,ie,o.history]),fe=ae.useMemo(()=>{if(ve?.external)return ll(ve.href,o.protocolAllowlist)?void 0:ve.href;if(!EA(y)&&!(typeof y!="string"||y.indexOf(":")===-1))try{return new URL(y),ll(y,o.protocolAllowlist)?void 0:y}catch{}},[y,ve,o.protocolAllowlist]),Tt=ae.useMemo(()=>{if(fe)return!1;if(h?.exact){if(!gk(Z.pathname,X.pathname,o.basepath))return!1}else{const je=cl(Z.pathname,o.basepath),et=cl(X.pathname,o.basepath);if(!(je.startsWith(et)&&(je.length===et.length||je[et.length]==="/")))return!1}return(h?.includeSearch??!0)&&!Qt(Z.search,X.search,{partial:!h?.exact,ignoreUndefined:!h?.explicitUndefined})?!1:h?.includeHash?B&&Z.hash===X.hash:!0},[h?.exact,h?.explicitUndefined,h?.includeHash,h?.includeSearch,Z,fe,B,X.hash,X.pathname,X.search,o.basepath]),ht=Tt?Un(u,{})??AA:nd,ot=Tt?nd:Un(d,{}
12)??nd,wa=[I,ht.className,ot.className].filter(Boolean).join(" "),mt=(U||ht.style||ot.style)&&{...U,...ht.style,...ot.style},[$n,Ia]=ae.useState(!1),Ca=ae.useRef(!1),la=a.reloadDocument||fe?!1:g??o.options.defaultPreload,Mt=p??o.options.defaultPreloadDelay??0,Jt=ae.useCallback(()=>{o.preloadRoute({...W,_builtLocation:X}).catch(je=>{console.warn(je),console.warn($k)})},[o,W,X]);tA(r,ae.useCallback(je=>{je?.isIntersecting&&Jt()},[Jt]),_A,{disabled:!!G||la!=="viewport"}),ae.useEffect(()=>{Ca.current||!G&&la==="render"&&(Jt(),Ca.current=!0)},[G,Jt,la]);const Jn=je=>{const et=je.currentTarget.getAttribute("target"),ca=C!==void 0?C:et;if(!G&&!DA(je)&&!je.defaultPrevented&&(!ca||ca==="_self")&&je.button===0){je.preventDefault(),Fy.flushSync(()=>{Ia(!0)});const ja=o.subscribe("onResolved",()=>{ja(),Ia(!1)});o.navigate({...W,replace:w,resetScroll:M,hashScrollIntoView:f,startTransition:S,viewTransition:D,ignoreBlocker:ne})}};if(fe)return{..._,ref:r,href:fe,...x&&{children:x},...C&&{target:C},...G&&{disabled:G},...U&&{style:U},...I&&{className:I},...te&&{onClick:te},...$&&{onBlur:$},...V&&{onFocus:V},...O&&{onMouseEnter:O},...Q&&{onMouseLeave:Q},...he&&{onTouchStart:he}};const vt=je=>{if(G||la!=="intent")return;if(!Mt){Jt();return}const et=je.currentTarget;if(Mo.has(et))return;const ca=setTimeout(()=>{Mo.delete(et),Jt()},Mt);Mo.set(et,ca)},_a=je=>{G||la!=="intent"||Jt()},bt=je=>{if(G||!la||!Mt)return;const et=je.currentTarget,ca=Mo.get(et);ca&&(clearTimeout(ca),Mo.delete(et))};return{..._,...ht,...ot,href:ve?.href,ref:r,onClick:vs([te,Jn]),onBlur:vs([$,bt]),onFocus:vs([V,vt]),onMouseEnter:vs([O,vt]),onMouseLeave:vs([Q,bt]),onTouchStart:vs([he,_a]),disabled:!!G,target:C,...mt&&{style:mt},...wa&&{className:wa},...G&&TA,...Tt&&MA,...B&&$n&&CA}}var nd={},AA={className:"active"},TA={role:"link","aria-disabled":!0},MA={"data-status":"active","aria-current":"page"},CA={"data-transitioning":"transitioning"},Mo=new WeakMap,_A={rootMargin:"100px"},vs=a=>s=>{for(const o of a)if(o){if(s.defaultPrevented)return;o(s)}};function RA(a,s,o,r){if(!r)return s?{href:a,external:!0}:{href:o.createHref(a)||"/",external:!1}}function EA(a){if(typeof a!="string")return!1;const s=a.charCodeAt(0);return s===47?a.charCodeAt(1)!==47:s===46}var Je=ae.forwardRef((a,s)=>{const{_asChild:o,...r}=a,{type:u,...d}=xA(r,s),h=typeof r.children=="function"?r.children({isActive:d["data-status"]==="active"}):r.children;if(!o){const{disabled:y,...g}=d;return ae.createElement("a",g,h)}return ae.createElement(o,d,h)});function DA(a){return!!(a.metaKey||a.altKey||a.ctrlKey||a.shiftKey)}var NA=class extends ty{constructor(s){super(s),this.useMatch=o=>Ri({select:o?.select,from:this.id,structuralSharing:o?.structuralSharing}),this.useRouteContext=o=>Wy({...o,from:this.id}),this.useSearch=o=>Gy({select:o?.select,structuralSharing:o?.structuralSharing,from:this.id}),this.useParams=o=>Vy({select:o?.select,structuralSharing:o?.structuralSharing,from:this.id}),this.useLoaderDeps=o=>Uy({...o,from:this.id}),this.useLoaderData=o=>By({...o,from:this.id}),this.useNavigate=()=>Yy({from:this.fullPath}),this.Link=ee.forwardRef((o,r)=>E.jsx(Je,{ref:r,from:this.fullPath,...o}))}};function zA(a){return new NA(a)}var PA=class extends e0{constructor(a){super(a),this.useMatch=s=>Ri({select:s?.select,from:this.id,structuralSharing:s?.structuralSharing}),this.useRouteContext=s=>Wy({...s,from:this.id}),this.useSearch=s=>Gy({select:s?.select,structuralSharing:s?.structuralSharing,from:this.id}),this.useParams=s=>Vy({select:s?.select,structuralSharing:s?.structuralSharing,from:this.id}),this.useLoaderDeps=s=>Uy({...s,from:this.id}),this.useLoaderData=s=>By({...s,from:this.id}),this.useNavigate=()=>Yy({from:this.fullPath}),this.Link=ee.forwardRef((s,o)=>E.jsx(Je,{ref:o,from:this.fullPath,...s}))}};function qA(a){return new PA(a)}function Nt(a){return new LA(a,{silent:!0}).createRoute}var LA=class{constructor(a,s){this.path=a,this.createRoute=o=>{const r=zA(o);return r.isRoot=!1,r},this.silent=s?.silent}};function Ke(a,s){let o,r,u,d;const h=()=>(o||(o=a().then(g=>{o=void 0,r=g[s??"default"]}).catch(g=>{if(u=g,$w(u)&&u instanceof Error&&typeof window<"u"&&typeof sessionStorage<"u"){const p=`tanstack_router_reload:${u.message}`;sessionStorage.getItem(p)||(sessionStorage.setItem(p,"1"),d=!0)}})),o),y=function(p){if(d)throw window.location.reload(),new Promise(()=>{});if(u)throw u;if(!r)if(ml)ml(h());else throw h();return ae.createElement(r,p)};return y.preload=h,y}function OA(a){const s=dt(),o=`not-found-${st(s.stores.location,r=>r.pathname)}-${st(s.stores.status,r=>r)}`;return E.jsx(xd,{getResetKey:()=>o,onCatch:(r,u)=>{if(xt(r))a.onCatch?.(r,u);else throw r},errorComponent:({error:r})=>{if(xt(r))return a.fallback?.(r);throw r},children:a.children})}function HA(){return E.jsx("p",{children:"Not Found"})}function bs(a){return E.jsx(E.Fragment,{children:a.children})}function Ky(a,s,o){return s.options.notFoundComponent?E.jsx(s.options.notFoundComponent,{...o}):a.options.defaultNotFoundComponent?E.jsx(a.options.defaultNotFoundComponent,{...o}):E.jsx(HA,{})}function IA(a){return null}function jA(){return IA(dt()),null}
12var Xy=ae.memo(function({matchId:s}){const o=dt(),r=o.stores.matchStores.get(s);r||$t();const u=st(o.stores.loadedAt,h=>h),d=st(r,h=>h);return E.jsx(BA,{router:o,matchId:s,resetKey:u,matchState:ae.useMemo(()=>{const h=d.routeId,y=o.routesById[h].parentRoute?.id;return{routeId:h,ssr:d.ssr,_displayPending:d._displayPending,parentRouteId:y}},[d._displayPending,d.routeId,d.ssr,o.routesById])})});function BA({router:a,matchId:s,resetKey:o,matchState:r}){const u=a.routesById[r.routeId],d=u.options.pendingComponent??a.options.defaultPendingComponent,h=d?E.jsx(d,{}):null,y=u.options.errorComponent??a.options.defaultErrorComponent,g=u.options.onCatch??a.options.defaultOnCatch,p=u.isRoot?u.options.notFoundComponent??a.options.notFoundRoute?.options.component:u.options.notFoundComponent,b=r.ssr===!1||r.ssr==="data-only",f=(!u.isRoot||u.options.wrapInSuspense||b)&&(u.options.wrapInSuspense??d??(u.options.errorComponent?.preload||b))?ae.Suspense:bs,w=y?xd:bs,S=p?OA:bs;return E.jsxs(u.isRoot?u.options.shellComponent??bs:bs,{children:[E.jsx(Tl.Provider,{value:s,children:E.jsx(f,{fallback:h,children:E.jsx(w,{getResetKey:()=>o,errorComponent:y||Ad,onCatch:(M,D)=>
12{if(xt(M))throw M.routeId??=r.routeId,M;g?.(M,D)},children:E.jsx(S,{fallback:M=>{if(M.routeId??=r.routeId,!p||M.routeId&&M.routeId!==r.routeId||!M.routeId&&!u.isRoot)throw M;return ae.createElement(p,M)},children:b||r._displayPending?E.jsx(rA,{fallback:h,children:E.jsx(vg,{matchId:s})}):E.jsx(vg,{matchId:s})})})})}),r.parentRouteId===Ti?E.jsxs(E.Fragment,{children:[E.jsx(UA,{resetKey:o}),a.options.scrollRestoration&&Vg?E.jsx(jA,{}):null]}):null]})}function UA({resetKey:a}){const s=dt(),o=ae.useRef(void 0);return _o(()=>{const r=s.latestLocation.href;(o.current===void 0||o.current!==r)&&(s.emit({type:"onRendered",...ks(s.stores.location.get(),s.stores.resolvedLocation.get())}),o.current=r)},[s.latestLocation.state.__TSR_key,a,s]),null}var vg=ae.memo(function({matchId:s}){const o=dt(),r=(b,f)=>o.getMatch(b.id)?._nonReactive[f]??b._nonReactive[f],u=o.stores.matchStores.get(s);u||$t();const d=st(u,b=>b),h=d.routeId,y=o.routesById[h],g=ae.useMemo(()=>{const b=(o.routesById[h].options.remountDeps??o.options.defaultRemountDeps)?.({routeId:h,loaderDeps:d.loaderDeps,params:d._strictParams,search:d._strictSearch});return b?JSON.stringify(b):void 0},[h,d.loaderDeps,d._strictParams,d._strictSearch,o.options.defaultRemountDeps,o.routesById]),p=ae.useMemo(()=>{const b=y.options.component??o.options.defaultComponent;return b?E.jsx(b,{},g):E.jsx(Qy,{})},[g,y.options.component,o.options.defaultComponent]);if(d._displayPending)throw r(d,"displayPendingPromise");if(d._forcePending)throw r(d,"minPendingPromise");if(d.status==="pending"){const b=y.options.pendingMinMs??o.options.defaultPendingMinMs;if(b){const f=o.getMatch(d.id);if(f&&!f._nonReactive.minPendingPromise){const w=Ci();f._nonReactive.minPendingPromise=w,setTimeout(()=>{w.resolve(),f._nonReactive.minPendingPromise=void 0},b)}}throw r(d,"loadPromise")}if(d.status==="notFound")return xt(d.error)||$t(),Ky(o,y,d.error);if(d.status==="redirected")throw Zt(d.error)||$t(),r(d,"loadPromise");if(d.status==="error")throw d.error;return p}),Qy=ae.memo(function(){const s=dt(),o=ae.useContext(Tl);let r,u=!1,d;{const p=o?s.stores.matchStores.get(o):void 0;[r,u]=st(p,b=>[b?.routeId,b?.globalNotFound??!1]),d=st(s.stores.matchesId,b=>b[b.findIndex(f=>f===o)+1])}const h=r?s.routesById[r]:void 0,y=s.options.defaultPendingComponent?E.jsx(s.options.defaultPendingComponent,{}):null;if(u)return h||$t(),Ky(s,h,void 0);if(!d)return null;const g=E.jsx(Xy,{matchId:d});return r===Ti?E.jsx(ae.Suspense,{fallback:y,children:g}):g});function VA(){const a=dt(),s=ae.useRef({router:a,mounted:!1}),[o,r]=ae.useState(!1),u=st(a.stores.isLoading,f=>f),d=st(a.stores.hasPending,f=>f),h=$u(u),y=u||o||d,g=$u(y),p=u||d,b=$u(p);return a.startTransition=f=>{r(!0),ae.startTransition(()=>{f(),r(!1)})},ae.useEffect(()=>{const f=a.history.subscribe(a.load),w=a.buildLocation({to:a.latestLocation.pathname,search:!0,params:!0,hash:!0,state:!0,_includeValidateSearch:!0});return Yn(a.latestLocation.publicHref)!==Yn(w.publicHref)&&a.commitLocation({...w,replace:!0}),()=>{f()}},[a,a.history]),_o(()=>{if(typeof window<"u"&&a.ssr||s.current.router===a&&s.current.mounted)return;s.current={router:a,mounted:!0},(async()=>{try{await a.load()}catch(w){console.error(w)}})()},[a]),_o(()=>{h&&!u&&a.emit({type:"onLoad",...ks(a.stores.location.get(),a.stores.resolvedLocation.get())})},[h,a,u]),_o(()=>{b&&!p&&a.emit({type:"onBeforeRouteMount",...ks(a.stores.location.get(),a.stores.resolvedLocation.get())})},[p,b,a]),_o(()=>{if(g&&!y){const f=ks(a.stores.location.get(),a.stores.resolvedLocation.get());a.emit({type:"onResolved",...f}),Iy(()=>{a.stores.status.set("idle"),a.stores.resolvedLocation.set(a.stores.location.get())}),f.hrefChanged&&t0(a)}},[y,g,a]),null}function GA(){const a=dt(),s=a.routesById[Ti].options.pendingComponent??a.options.defaultPendingComponent,o=s?E.jsx(s,{}):null,r=E.jsxs(typeof document<"u"&&a.ssr?bs:ae.Suspense,{fallback:o,children:[E.jsx(VA,{}),E.jsx(YA,{})]});return a.options.InnerWrap?E.jsx(a.options.InnerWrap,{children:r}):r}function YA(){const a=dt(),s=st(a.stores.firstId,u=>u),o=st(a.stores.loadedAt,u=>u),r=s?E.jsx(Xy,{matchId:s}):null;return E.jsx(Tl.Provider,{value:s,children:a.options.disableGlobalCatchBoundary?r:E.jsx(xd,{getResetKey:()=>o,errorComponent:Ad,onCatch:void 0,children:r})})}var WA=a=>({createMutableStore:mg,createReadonlyStore:mg,batch:Iy}),FA=a=>
12new KA(a),KA=class extends Gk{constructor(a){super(a,WA)}};function XA({router:a,children:s,...o}){Object.keys(o).length>0&&a.update({...a.options,...o,context:{...a.options.context,...o.context}});const r=E.jsx(Oy.Provider,{value:a,children:s});return a.options.Wrap?E.jsx(a.options.Wrap,{children:r}):r}function QA({router:a,...s}){return E.jsx(XA,{router:a,...s,children:E.jsx(GA,{})})}function ZA(a){const s=dt({warn:a?.router===void 0}),o=a?.router||s,r=ae.useRef(void 0);return st(o.stores.__store,u=>{if(a?.select){if(a.structuralSharing??o.options.defaultStructuralSharing){const d=Vn(r.current,a.select(u));return r.current=d,d}return a.select(u)}return u})}function Zy({tag:a,attrs:s,children:o,nonce:r}){switch(a){case"title":return E.jsx("title",{...s,suppressHydrationWarning:!0,children:o});case"meta":return E.jsx("meta",{...s,suppressHydrationWarning:!0});case"link":return E.jsx("link",{...s,nonce:r,suppressHydrationWarning:!0});case"style":return E.jsx("style",{...s,dangerouslySetInnerHTML:{__html:o},nonce:r});case"script":return E.jsx($A,{attrs:s,children:o});default:return null}}function $A({attrs:a,children:s}){dt();const o=Td(),r=typeof a?.type=="string"&&a.type!==""&&a.type!=="text/javascript"&&a.type!=="module";if(ae.useEffect(()=>{if(!r){if(a?.src){const u=(()=>{try{const h=document.baseURI||window.location.href;return new URL(a.src,h).href}catch{return a.src}})();if(Array.from(document.querySelectorAll("script[src]")).find(h=>h.src===u))return;const d=document.createElement("script");for(const[h,y]of Object.entries(a))h!=="suppressHydrationWarning"&&y!==void 0&&y!==!1&&d.setAttribute(h,typeof y=="boolean"?"":String(y));return document.head.appendChild(d),()=>{d.parentNode&&d.parentNode.removeChild(d)}}if(typeof s=="string"){const u=typeof a?.type=="string"?a.type:"text/javascript",d=typeof a?.nonce=="string"?a.nonce:void 0;if(Array.from(document.querySelectorAll("script:not([src])")).find(y=>{if(!(y instanceof HTMLScriptElement))return!1;const g=y.getAttribute("type")??"text/javascript",p=y.getAttribute("nonce")??void 0;return y.textContent===s&&g===u&&p===d}))return;const h=document.createElement("script");if(h.textContent=s,a)for(const[y,g]of Object.entries(a))y!=="suppressHydrationWarning"&&g!==void 0&&g!==!1&&h.setAttribute(y,typeof g=="boolean"?"":String(g));return document.head.appendChild(h),()=>{h.parentNode&&h.parentNode.removeChild(h)}}}},[a,s,r]),r&&typeof s=="string")return E.jsx("script",{...a,suppressHydrationWarning:!0,dangerouslySetInnerHTML:{__html:s}});if(!o){if(a?.src)return E.jsx("script",{...a,suppressHydrationWarning:!0});if(typeof s=="string")return E.jsx("script",{...a,dangerouslySetInnerHTML:{__html:s},suppressHydrationWarning:!0})}return null}var JA=a=>{const s=dt(),o=s.options.ssr?.nonce,r=st(s.stores.matches,p=>p.map(b=>b.meta).filter(Boolean),Qt),u=ae.useMemo(()=>{const p=[],b={};let f;for(let w=r.length-1;w>=0;w--){const S=r[w];for(let M=S.length-1;M>=0;M--){const D=S[M];if(D)if(D.title)f||(f={tag:"title",children:D.title});else if("script:ld+json"in D)try{const x=JSON.stringify(D["script:ld+json"]);p.push({tag:"script",attrs:{type:"application/ld+json"},children:nk(x)})}catch{}else{const x=D.name??D.property;if(x){if(b[x])continue;b[x]=!0}p.push({tag:"meta",attrs:{...D,nonce:o}})}}}return f&&p.push(f),o&&p.push({tag:"meta",attrs:{property:"csp-nonce",content:o}}),p.reverse(),p},[r,o]),d=st(s.stores.matches,p=>{const b=p.map(S=>S.links).filter(Boolean).flat(1).map(S=>({tag:"link",attrs:{...S,nonce:o}})),f=s.ssr?.manifest,w=p.map(S=>f?.routes[S.routeId]?.assets??[]).filter(Boolean).flat(1).filter(S=>S.tag==="link").map(S=>({tag:"link",attrs:{...S.attrs,crossOrigin:Zp(a,"stylesheet")??S.attrs?.crossOrigin,suppressHydrationWarning:!0,nonce:o}}));return[...b,...w]},Qt),h=st(s.stores.matches,p=>{const b=[];return p.map(f=>s.looseRoutesById[f.routeId]).forEach(f=>s.ssr?.manifest?.routes[f.id]?.preloads?.filter(Boolean).forEach(w=>{const S=Jk(w);b.push({tag:"link",attrs:{rel:"modulepreload",href:S.href,crossOrigin:Zp(a,"modulepreload")??S.crossOrigin,nonce:o}})})),b},Qt),y=st(s.stores.matches,p=>p.map(b=>
12b.styles).flat(1).filter(Boolean).map(({children:b,...f})=>({tag:"style",attrs:{...f,nonce:o},children:b})),Qt),g=st(s.stores.matches,p=>p.map(b=>b.headScripts).flat(1).filter(Boolean).map(({children:b,...f})=>({tag:"script",attrs:{...f,nonce:o},children:b})),Qt);return eT([...u,...h,...d,...y,...g],p=>JSON.stringify(p))};function eT(a,s){const o=new Set;return a.filter(r=>{const u=s(r);return o.has(u)?!1:(o.add(u),!0)})}function tT(a){const s=JA(a.assetCrossOrigin),o=dt().options.ssr?.nonce;return E.jsx(E.Fragment,{children:s.map(r=>ae.createElement(Zy,{...r,key:`tsr-meta-${JSON.stringify(r)}`,nonce:o}))})}var aT=()=>{const a=dt(),s=a.options.ssr?.nonce,o=d=>{const h=[],y=a.ssr?.manifest;return y?(d.map(g=>a.looseRoutesById[g.routeId]).forEach(g=>y.routes[g.id]?.assets?.filter(p=>p.tag==="script").forEach(p=>{h.push({tag:"script",attrs:{...p.attrs,nonce:s},children:p.children})})),h):[]},r=d=>d.map(h=>h.scripts).flat(1).filter(Boolean).map(({children:h,...y})=>({tag:"script",attrs:{...y,suppressHydrationWarning:!0,nonce:s},children:h})),u=st(a.stores.matches,o,Qt);return nT(a,st(a.stores.matches,r,Qt),u)};function nT(a,s,o){let r;a.serverSsr&&(r=a.serverSsr.takeBufferedScripts());const u=[...s,...o];return r&&u.unshift(r),E.jsx(E.Fragment,{children:u.map((d,h)=>ae.createElement(Zy,{...d,key:`tsr-scripts-${d.tag}-${h}`}))})}function iT(a){if(typeof document>"u")return;let s=document.head||document.getElementsByTagName("head")[0],o=document.createElement("style");o.type="text/css",s.appendChild(o),o.styleSheet?o.styleSheet.cssText=a:o.appendChild(document.createTextNode(a))}const sT=a=>{switch(a){case"success":return lT;case"info":return uT;case"warning":return cT;case"error":return dT;default:return null}},oT=Array(12).fill(0),rT=({visible:a,className:s})=>ee.createElement("div",{className:["sonner-loading-wrapper",s].filter(Boolean).join(" "),"data-visible":a},ee.createElement("div",{className:"sonner-spinner"},oT.map((o,r)=>ee.createElement("div",{className:"sonner-loading-bar",key:`spinner-bar-${r}`})))),lT=ee.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},ee.createElement("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z",clipRule:"evenodd"})),cT=ee.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",height:"20",width:"20"},ee.createElement("path",{fillRule:"evenodd",d:"M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z",clipRule:"evenodd"})),uT=ee.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},ee.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z",clipRule:"evenodd"})),dT=ee.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},ee.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-5a.75.75 0 01.75.75v4.5a.75.75 0 01-1.5 0v-4.5A.75.75 0 0110 5zm0 10a1 1 0 100-2 1 1 0 000 2z",clipRule:"evenodd"})),hT=ee.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"},ee.createElement("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),ee.createElement("line",{x1:"6",y1:"6",x2:"18",y2:"18"})),mT=()=>{const[a,s]=ee.useState(document.hidden);return ee.useEffect(()=>{const o=()=>{s(document.hidden)};return document.addEventListener("visibilitychange",o),()=>window.removeEventListener("visibilitychange",o)},[]),a};let fd=1;class fT{constructor(){this.subscribe=s=>(this.subscribers.push(s),()=>{const o=this.subscribers.indexOf(s);this.subscribers.splice(o,1)}),this.publish=s=>
vendor: 3,617 bytes, line 12
12{this.subscribers.forEach(o=>o(s))},this.addToast=s=>{this.publish(s),this.toasts=[...this.toasts,s]},this.create=s=>{var o;const{message:r,...u}=s,d=typeof s?.id=="number"||((o=s.id)==null?void 0:o.length)>0?s.id:fd++,h=this.toasts.find(g=>g.id===d),y=s.dismissible===void 0?!0:s.dismissible;return this.dismissedToasts.has(d)&&this.dismissedToasts.delete(d),h?this.toasts=this.toasts.map(g=>g.id===d?(this.publish({...g,...s,id:d,title:r}),{...g,...s,id:d,dismissible:y,title:r}):g):this.addToast({title:r,...u,dismissible:y,id:d}),d},this.dismiss=s=>(s?(this.dismissedToasts.add(s),requestAnimationFrame(()=>this.subscribers.forEach(o=>o({id:s,dismiss:!0})))):this.toasts.forEach(o=>{this.subscribers.forEach(r=>r({id:o.id,dismiss:!0}))}),s),this.message=(s,o)=>this.create({...o,message:s}),this.error=(s,o)=>this.create({...o,message:s,type:"error"}),this.success=(s,o)=>this.create({...o,type:"success",message:s}),this.info=(s,o)=>this.create({...o,type:"info",message:s}),this.warning=(s,o)=>this.create({...o,type:"warning",message:s}),this.loading=(s,o)=>this.create({...o,type:"loading",message:s}),this.promise=(s,o)=>{if(!o)return;let r;o.loading!==void 0&&(r=this.create({...o,promise:s,type:"loading",message:o.loading,description:typeof o.description!="function"?o.description:void 0}));const u=Promise.resolve(s instanceof Function?s():s);let d=r!==void 0,h;const y=u.then(async p=>{if(h=["resolve",p],ee.isValidElement(p))d=!1,this.create({id:r,type:"default",message:p});else if(gT(p)&&!p.ok){d=!1;const f=typeof o.error=="function"?await o.error(`HTTP error! status: ${p.status}`):o.error,w=typeof o.description=="function"?await o.description(`HTTP error! status: ${p.status}`):o.description,M=typeof f=="object"&&!ee.isValidElement(f)?f:{message:f};this.create({id:r,type:"error",description:w,...M})}else if(p instanceof Error){d=!1;const f=typeof o.error=="function"?await o.error(p):o.error,w=typeof o.description=="function"?await o.description(p):o.description,M=typeof f=="object"&&!ee.isValidElement(f)?f:{message:f};this.create({id:r,type:"error",description:w,...M})}else if(o.success!==void 0){d=!1;const f=typeof o.success=="function"?await o.success(p):o.success,w=typeof o.description=="function"?await o.description(p):o.description,M=typeof f=="object"&&!ee.isValidElement(f)?f:{message:f};this.create({id:r,type:"success",description:w,...M})}}).catch(async p=>{if(h=["reject",p],o.error!==void 0){d=!1;const b=typeof o.error=="function"?await o.error(p):o.error,f=typeof o.description=="function"?await o.description(p):o.description,S=typeof b=="object"&&!ee.isValidElement(b)?b:{message:b};this.create({id:r,type:"error",description:f,...S})}}).finally(()=>{d&&(this.dismiss(r),r=void 0),o.finally==null||o.finally.call(o)}),g=()=>new Promise((p,b)=>y.then(()=>h[0]==="reject"?b(h[1]):p(h[1])).catch(b));return typeof r!="string"&&typeof r!="number"?{unwrap:g}:Object.assign(r,{unwrap:g})},this.custom=(s,o)=>{const r=o?.id||fd++;return this.create({jsx:s(r),id:r,...o}),r},this.getActiveToasts=()=>this.toasts.filter(s=>!this.dismissedToasts.has(s.id)),this.subscribers=[],this.toasts=[],this.dismissedToasts=new Set}}const Xt=new fT,pT=(a,s)=>{const o=s?.id||fd++;return Xt.addToast({title:a,...s,id:o}),o},gT=a=>a&&typeof a=="object"&&"ok"in a&&typeof a.ok=="boolean"&&"status"in a&&typeof a.status=="number",yT=pT,vT=()=>Xt.toasts,bT=()=>Xt.getActiveToasts(),q2=Object.assign(yT,{success:Xt.success,info:Xt.info,warning:Xt.warning,error:Xt.error,custom:Xt.custom,message:Xt.message,promise:Xt.promise,dismiss:Xt.dismiss,loading:Xt.loading},{getHistory:vT,getToasts:bT});iT
vendor: 14,873 bytes, line 12
12("[data-sonner-toaster][dir=ltr],html[dir=ltr]{--toast-icon-margin-start:-3px;--toast-icon-margin-end:4px;--toast-svg-margin-start:-1px;--toast-svg-margin-end:0px;--toast-button-margin-start:auto;--toast-button-margin-end:0;--toast-close-button-start:0;--toast-close-button-end:unset;--toast-close-button-transform:translate(-35%, -35%)}[data-sonner-toaster][dir=rtl],html[dir=rtl]{--toast-icon-margin-start:4px;--toast-icon-margin-end:-3px;--toast-svg-margin-start:0px;--toast-svg-margin-end:-1px;--toast-button-margin-start:0;--toast-button-margin-end:auto;--toast-close-button-start:unset;--toast-close-button-end:0;--toast-close-button-transform:translate(35%, -35%)}[data-sonner-toaster]{position:fixed;width:var(--width);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--gray1:hsl(0, 0%, 99%);--gray2:hsl(0, 0%, 97.3%);--gray3:hsl(0, 0%, 95.1%);--gray4:hsl(0, 0%, 93%);--gray5:hsl(0, 0%, 90.9%);--gray6:hsl(0, 0%, 88.7%);--gray7:hsl(0, 0%, 85.8%);--gray8:hsl(0, 0%, 78%);--gray9:hsl(0, 0%, 56.1%);--gray10:hsl(0, 0%, 52.3%);--gray11:hsl(0, 0%, 43.5%);--gray12:hsl(0, 0%, 9%);--border-radius:8px;box-sizing:border-box;padding:0;margin:0;list-style:none;outline:0;z-index:999999999;transition:transform .4s ease}@media (hover:none) and (pointer:coarse){[data-sonner-toaster][data-lifted=true]{transform:none}}[data-sonner-toaster][data-x-position=right]{right:var(--offset-right)}[data-sonner-toaster][data-x-position=left]{left:var(--offset-left)}[data-sonner-toaster][data-x-position=center]{left:50%;transform:translateX(-50%)}[data-sonner-toaster][data-y-position=top]{top:var(--offset-top)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--offset-bottom)}[data-sonner-toast]{--y:translateY(100%);--lift-amount:calc(var(--lift) * var(--gap));z-index:var(--z-index);position:absolute;opacity:0;transform:var(--y);touch-action:none;transition:transform .4s,opacity .4s,height .4s,box-shadow .2s;box-sizing:border-box;outline:0;overflow-wrap:anywhere}[data-sonner-toast][data-styled=true]{padding:16px;background:var(--normal-bg);border:1px solid var(--normal-border);color:var(--normal-text);border-radius:var(--border-radius);box-shadow:0 4px 12px rgba(0,0,0,.1);width:var(--width);font-size:13px;display:flex;align-items:center;gap:6px}[data-sonner-toast]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-y-position=top]{top:0;--y:translateY(-100%);--lift:1;--lift-amount:calc(1 * var(--gap))}[data-sonner-toast][data-y-position=bottom]{bottom:0;--y:translateY(100%);--lift:-1;--lift-amount:calc(var(--lift) * var(--gap))}[data-sonner-toast][data-styled=true] [data-description]{font-weight:400;line-height:1.4;color:#3f3f3f}[data-rich-colors=true][data-sonner-toast][data-styled=true] [data-description]{color:inherit}[data-sonner-toaster][data-sonner-theme=dark] [data-description]{color:#e8e8e8}[data-sonner-toast][data-styled=true] [data-title]{font-weight:500;line-height:1.5;color:inherit}[data-sonner-toast][data-styled=true] [data-icon]{display:flex;height:16px;width:16px;position:relative;justify-content:flex-start;align-items:center;flex-shrink:0;margin-left:var(--toast-icon-margin-start);margin-right:var(--toast-icon-margin-end)}[data-sonner-toast][data-promise=true] [data-icon]>svg{opacity:0;transform:scale(.8);transform-origin:center;animation:sonner-fade-in .3s ease forwards}[data-sonner-toast][data-styled=true] [data-icon]>*{flex-shrink:0}[data-sonner-toast][data-styled=true] [data-icon] svg{margin-left:var(--toast-svg-margin-start);margin-right:var(--toast-svg-margin-end)}[data-sonner-toast][data-styled=true] [data-content]{display:flex;flex-direction:column;gap:2px}[data-sonner-toast][data-styled=true] [data-button]{border-radius:4px;padding-left:8px;padding-right:8px;height:24px;font-size:12px;color:var(--normal-bg);background:var(--normal-text);margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end);border:none;font-weight:500;cursor:pointer;outline:0;display:flex;align-items:center;flex-shrink:0;transition:opacity .4s,box-shadow .2s}[data-sonner-toast][data-styled=true] [data-button]:focus-visible{box-shadow:0 0 0 2px rgba(0,0,0,.4)}[data-sonner-toast][data-styled=true] [data-button]:first-of-type{margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end)}[data-sonner-toast][data-styled=true] [data-cancel]{color:var(--normal-text);background:rgba(0,0,0,.08)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-styled=true] [data-cancel]{background:rgba(255,255,255,.3)}[data-sonner-toast][data-styled=true] [data-close-button]{position:absolute;left:var(--toast-close-button-start);right:var(--toast-close-button-end);top:0;height:20px;width:20px;display:flex;justify-content:center;align-items:center;padding:0;color:var(--gray12);background:var(--normal-bg);border:1px solid var(--gray4);transform:var(--toast-close-button-transform);border-radius:50%;cursor:pointer;z-index:1;transition:opacity .1s,background .2s,border-color .2s}[data-sonner-toast][data-styled=true] [data-close-button]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-styled=true] [data-disabled=true]{cursor:not-allowed}[data-sonner-toast][data-styled=true]:hover [data-close-button]:hover{background:var(--gray2);border-color:var(--gray5)}[data-sonner-toast][data-swiping=true]::before{content:'';position:absolute;left:-100%;right:-100%;height:100%;z-index:-1}[data-sonner-toast][data-y-position=top][data-swiping=true]::before{bottom:50%;transform:scaleY(3) translateY(50%)}[data-sonner-toast][data-y-position=bottom][data-swiping=true]::before{top:50%;transform:scaleY(3) translateY(-50%)}[data-sonner-toast][data-swiping=false][data-removed=true]::before{content:'';position:absolute;inset:0;transform:scaleY(2)}[data-sonner-toast][data-expanded=true]::after{content:'';position:absolute;left:0;height:calc(var(--gap) + 1px);bottom:100%;width:100%}[data-sonner-toast][data-mounted=true]{--y:translateY(0);opacity:1}[data-sonner-toast][data-expanded=false][data-front=false]{--scale:var(--toasts-before) * 0.05 + 1;--y:translateY(calc(var(--lift-amount) * var(--toasts-before))) scale(calc(-1 * var(--scale)));height:var(--front-toast-height)}[data-sonner-toast]>*{transition:opacity .4s}[data-sonner-toast][data-x-position=right]{right:0}[data-sonner-toast][data-x-position=left]{left:0}[data-sonner-toast][data-expanded=false][data-front=false][data-styled=true]>*{opacity:0}[data-sonner-toast][data-visible=false]{opacity:0;pointer-events:none}[data-sonner-toast][data-mounted=true][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset)));height:var(--initial-height)}[data-sonner-toast][data-removed=true][data-front=true][data-swipe-out=false]{--y:translateY(calc(var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset) + var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=false]{--y:translateY(40%);opacity:0;transition:transform .5s,opacity .2s}[data-sonner-toast][data-removed=true][data-front=false]::before{height:calc(var(--initial-height) + 20%)}[data-sonner-toast][data-swiping=true]{transform:var(--y) translateY(var(--swipe-amount-y,0)) translateX(var(--swipe-amount-x,0));transition:none}[data-sonner-toast][data-swiped=true]{user-select:none}[data-sonner-toast][data-swipe-out=true][data-y-position=bottom],[data-sonner-toast][data-swipe-out=true][data-y-position=top]{animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:forwards}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=left]{animation-name:swipe-out-left}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=right]{animation-name:swipe-out-right}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=up]{animation-name:swipe-out-up}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=down]{animation-name:swipe-out-down}@keyframes swipe-out-left{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) - 100%));opacity:0}}@keyframes swipe-out-right{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) + 100%));opacity:0}}@keyframes swipe-out-up{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) - 100%));opacity:0}}@keyframes swipe-out-down{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) + 100%));opacity:0}}@media (max-width:600px){[data-sonner-toaster]{position:fixed;right:var(--mobile-offset-right);left:var(--mobile-offset-left);width:100%}[data-sonner-toaster][dir=rtl]{left:calc(var(--mobile-offset-left) * -1)}[data-sonner-toaster] [data-sonner-toast]{left:0;right:0;width:calc(100% - var(--mobile-offset-left) * 2)}[data-sonner-toaster][data-x-position=left]{left:var(--mobile-offset-left)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--mobile-offset-bottom)}[data-sonner-toaster][data-y-position=top]{top:var(--mobile-offset-top)}[data-sonner-toaster][data-x-position=center]{left:var(--mobile-offset-left);right:var(--mobile-offset-right);transform:none}}[data-sonner-toaster][data-sonner-theme=light]{--normal-bg:#fff;--normal-border:var(--gray4);--normal-text:var(--gray12);--success-bg:hsl(143, 85%, 96%);--success-border:hsl(145, 92%, 87%);--success-text:hsl(140, 100%, 27%);--info-bg:hsl(208, 100%, 97%);--info-border:hsl(221, 91%, 93%);--info-text:hsl(210, 92%, 45%);--warning-bg:hsl(49, 100%, 97%);--warning-border:hsl(49, 91%, 84%);--warning-text:hsl(31, 92%, 45%);--error-bg:hsl(359, 100%, 97%);--error-border:hsl(359, 100%, 94%);--error-text:hsl(360, 100%, 45%)}[data-sonner-toaster][data-sonner-theme=light] [data-sonner-toast][data-invert=true]{--normal-bg:#000;--normal-border:hsl(0, 0%, 20%);--normal-text:var(--gray1)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-invert=true]{--normal-bg:#fff;--normal-border:var(--gray3);--normal-text:var(--gray12)}[data-sonner-toaster][data-sonner-theme=dark]{--normal-bg:#000;--normal-bg-hover:hsl(0, 0%, 12%);--normal-border:hsl(0, 0%, 20%);--normal-border-hover:hsl(0, 0%, 25%);--normal-text:var(--gray1);--success-bg:hsl(150, 100%, 6%);--success-border:hsl(147, 100%, 12%);--success-text:hsl(150, 86%, 65%);--info-bg:hsl(215, 100%, 6%);--info-border:hsl(223, 43%, 17%);--info-text:hsl(216, 87%, 65%);--warning-bg:hsl(64, 100%, 6%);--warning-border:hsl(60, 100%, 9%);--warning-text:hsl(46, 87%, 65%);--error-bg:hsl(358, 76%, 10%);--error-border:hsl(357, 89%, 16%);--error-text:hsl(358, 100%, 81%)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]{background:var(--normal-bg);border-color:var(--normal-border);color:var(--normal-text)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]:hover{background:var(--normal-bg-hover);border-color:var(--normal-border-hover)}[data-rich-colors=true][data-sonner-toast][data-type=success]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=success] [data-close-button]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=info]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=info] [data-close-button]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning] [data-close-button]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=error]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}[data-rich-colors=true][data-sonner-toast][data-type=error] [data-close-button]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}.sonner-loading-wrapper{--size:16px;height:var(--size);width:var(--size);position:absolute;inset:0;z-index:10}.sonner-loading-wrapper[data-visible=false]{transform-origin:center;animation:sonner-fade-out .2s ease forwards}.sonner-spinner{position:relative;top:50%;left:50%;height:var(--size);width:var(--size)}.sonner-loading-bar{animation:sonner-spin 1.2s linear infinite;background:var(--gray11);border-radius:6px;height:8%;left:-10%;position:absolute;top:-3.9%;width:24%}.sonner-loading-bar:first-child{animation-delay:-1.2s;transform:rotate(.0001deg) translate(146%)}.sonner-loading-bar:nth-child(2){animation-delay:-1.1s;transform:rotate(30deg) translate(146%)}.sonner-loading-bar:nth-child(3){animation-delay:-1s;transform:rotate(60deg) translate(146%)}.sonner-loading-bar:nth-child(4){animation-delay:-.9s;transform:rotate(90deg) translate(146%)}.sonner-loading-bar:nth-child(5){animation-delay:-.8s;transform:rotate(120deg) translate(146%)}.sonner-loading-bar:nth-child(6){animation-delay:-.7s;transform:rotate(150deg) translate(146%)}.sonner-loading-bar:nth-child(7){animation-delay:-.6s;transform:rotate(180deg) translate(146%)}.sonner-loading-bar:nth-child(8){animation-delay:-.5s;transform:rotate(210deg) translate(146%)}.sonner-loading-bar:nth-child(9){animation-delay:-.4s;transform:rotate(240deg) translate(146%)}.sonner-loading-bar:nth-child(10){animation-delay:-.3s;transform:rotate(270deg) translate(146%)}.sonner-loading-bar:nth-child(11){animation-delay:-.2s;transform:rotate(300deg) translate(146%)}.sonner-loading-bar:nth-child(12){animation-delay:-.1s;transform:rotate(330deg) translate(146%)}@keyframes sonner-fade-in{0%{opacity:0;transform:scale(.8)}100%{opacity:1;transform:scale(1)}}@keyframes sonner-fade-out{0%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(.8)}}@keyframes sonner-spin{0%{opacity:1}100%{opacity:.15}}@media (prefers-reduced-motion){.sonner-loading-bar,[data-sonner-toast],[data-sonner-toast]>*{transition:none!important;animation:none!important}}.sonner-loader{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);transform-origin:center;transition:opacity .2s,transform .2s}.sonner-loader[data-visible=false]{opacity:0;transform:scale(.8) translate(-50%,-50%)}");function 
12el(a){return a.label!==void 0}const wT=3,kT="24px",ST="16px",bg=4e3,xT=356,AT=14,TT=45,MT=200;
vendor: 7,775 bytes, line 12
12function qa(...a){return a.filter(Boolean).join(" ")}function CT(a){const[s,o]=a.split("-"),r=[];return s&&r.push(s),o&&r.push(o),r}const _T=a=>{var s,o,r,u,d,h,y,g,p;const{invert:b,toast:f,unstyled:w,interacting:S,setHeights:M,visibleToasts:D,heights:x,index:C,toasts:G,expanded:U,removeToast:I,defaultRichColors:te,closeButton:$,style:V,cancelButtonStyle:O,actionButtonStyle:Q,className:he="",descriptionClassName:ne="",duration:ge,position:ye,gap:qe,expandByDefault:Ae,classNames:z,icons:K,closeButtonAriaLabel:oe="Close toast"}=a,[Se,J]=ee.useState(null),[_,B]=ee.useState(null),[W,Z]=ee.useState(!1),[X,ie]=ee.useState(!1),[we,ve]=ee.useState(!1),[fe,Tt]=ee.useState(!1),[ht,ot]=ee.useState(!1),[wa,mt]=ee.useState(0),[$n,Ia]=ee.useState(0),Ca=ee.useRef(f.duration||ge||bg),la=ee.useRef(null),Mt=ee.useRef(null),Jt=C===0,Jn=C+1<=D,vt=f.type,_a=f.dismissible!==!1,bt=f.className||"",je=f.descriptionClassName||"",et=ee.useMemo(()=>x.findIndex(be=>be.toastId===f.id)||0,[x,f.id]),ca=ee.useMemo(()=>{var be;return(be=f.closeButton)!=null?be:$},[f.closeButton,$]),ja=ee.useMemo(()=>f.duration||ge||bg,[f.duration,ge]),Ms=ee.useRef(0),Ba=ee.useRef(0),Ho=ee.useRef(0),hn=ee.useRef(null),[ei,Ot]=ye.split("-"),ka=ee.useMemo(()=>x.reduce((be,Xe,wt)=>wt>=et?be:be+Xe.height,0),[x,et]),Pt=mT(),Cl=f.invert||b,Cs=vt==="loading";Ba.current=ee.useMemo(()=>et*qe+ka,[et,ka]),ee.useEffect(()=>{Ca.current=ja},[ja]),ee.useEffect(()=>{Z(!0)},[]),ee.useEffect(()=>{const be=Mt.current;if(be){const Xe=be.getBoundingClientRect().height;return Ia(Xe),M(wt=>[{toastId:f.id,height:Xe,position:f.position},...wt]),()=>M(wt=>wt.filter(qt=>qt.toastId!==f.id))}},[M,f.id]),ee.useLayoutEffect(()=>{if(!W)return;const be=Mt.current,Xe=be.style.height;be.style.height="auto";const wt=be.getBoundingClientRect().height;be.style.height=Xe,Ia(wt),M(qt=>qt.find($e=>$e.toastId===f.id)?qt.map($e=>$e.toastId===f.id?{...$e,height:wt}:$e):[{toastId:f.id,height:wt,position:f.position},...qt])},[W,f.title,f.description,M,f.id,f.jsx,f.action,f.cancel]);const Ra=ee.useCallback(()=>{ie(!0),mt(Ba.current),M(be=>be.filter(Xe=>Xe.toastId!==f.id)),setTimeout(()=>{I(f)},MT)},[f,I,M,Ba]);ee.useEffect(()=>{if(f.promise&&vt==="loading"||f.duration===1/0||f.type==="loading")return;let be;return U||S||Pt?(()=>{if(Ho.current<Ms.current){const qt=new Date().getTime()-Ms.current;Ca.current=Ca.current-qt}Ho.current=new Date().getTime()})():Ca.current!==1/0&&(Ms.current=new Date().getTime(),be=setTimeout(()=>{f.onAutoClose==null||f.onAutoClose.call(f,f),Ra()},Ca.current)),()=>clearTimeout(be)},[U,S,f,vt,Pt,Ra]),ee.useEffect(()=>{f.delete&&(Ra(),f.onDismiss==null||f.onDismiss.call(f,f))},[Ra,f.delete]);function Di(){var be;if(K?.loading){var Xe;return ee.createElement("div",{className:qa(z?.loader,f==null||(Xe=f.classNames)==null?void 0:Xe.loader,"sonner-loader"),"data-visible":vt==="loading"},K.loading)}return ee.createElement(rT,{className:qa(z?.loader,f==null||(be=f.classNames)==null?void 0:be.loader),visible:vt==="loading"})}const Ni=f.icon||K?.[vt]||sT(vt);var ti,Ea;return ee.createElement("li",{tabIndex:0,ref:Mt,className:qa(he,bt,z?.toast,f==null||(s=f.classNames)==null?void 0:s.toast,z?.default,z?.[vt],f==null||(o=f.classNames)==null?void 0:o[vt]),"data-sonner-toast":"","data-rich-colors":(ti=f.richColors)!=null?ti:te,"data-styled":!(f.jsx||f.unstyled||w),"data-mounted":W,"data-promise":!!f.promise,"data-swiped":ht,"data-removed":X,"data-visible":Jn,"data-y-position":ei,"data-x-position":Ot,"data-index":C,"data-front":Jt,"data-swiping":we,"data-dismissible":_a,"data-type":vt,"data-invert":Cl,"data-swipe-out":fe,"data-swipe-direction":_,"data-expanded":!!(U||Ae&&W),"data-testid":f.testId,style:{"--index":C,"--toasts-before":C,"--z-index":G.length-C,"--offset":`${X?wa:Ba.current}px`,"--initial-height":Ae?"auto":`${$n}px`,...V,...f.style},onDragEnd:()=>{ve(!1),J(null),hn.current=null},onPointerDown:be=>{be.button!==2&&(Cs||!_a||(la.current=new Date,mt(Ba.current),be.target.setPointerCapture(be.pointerId),be.target.tagName!=="BUTTON"&&(ve(!0),hn.current={x:be.clientX,y:be.clientY})))},onPointerUp:()=>{var be,Xe,wt;if(fe||!_a)return;hn.current=null;const qt=Number(((be=Mt.current)==null?void 0:be.style.getPropertyValue("--swipe-amount-x").replace("px",""))||0),mn=Number(((Xe=Mt.current)==null?void 0:Xe.style.getPropertyValue("--swipe-amount-y").replace("px",""))||0),$e=new Date().getTime()-((wt=la.current)==null?void 0:wt.getTime()),It=Se==="x"?qt:mn,ai=Math.abs(It)/$e;if(Math.abs(It)>=TT||ai>.11){mt(Ba.current),f.onDismiss==null||f.onDismiss.call(f,f),B(Se==="x"?qt>0?"right":"left":mn>0?"down":"up"),Ra(),Tt(!0);return}else{var jt,Bt;(jt=Mt.current)==null||jt.style.setProperty("--swipe-amount-x","0px"),(Bt=Mt.current)==null||Bt.style.setProperty("--swipe-amount-y","0px")}ot(!1),ve(!1),J(null)},onPointerMove:be=>{var Xe,wt,qt;if(!hn.current||!_a||((Xe=window.getSelection())==null?void 0:Xe.toString().length)>0)return;const $e=be.clientY-hn.current.y,It=be.clientX-hn.current.x;var ai;const jt=(ai=a.swipeDirections)!=null?ai:CT(ye);!Se&&(Math.abs(It)>1||Math.abs($e)>1)&&J(Math.abs(It)>Math.abs($e)?"x":"y");let Bt={x:0,y:0};const zi=Sa=>1/(1.5+Math.abs(Sa)/20);if(Se==="y"){if(jt.includes("top")||jt.includes("bottom"))if(jt.includes("top")&&$e<0||jt.includes("bottom")&&$e>0)Bt.y=$e;else{const Sa=$e*zi($e);Bt.y=Math.abs(Sa)<Math.abs($e)?Sa:$e}}else if(Se==="x"&&(jt.includes("left")||jt.includes("right")))if(jt.includes("left")&&It<0||jt.includes("right")&&It>0)Bt.x=It;else{const Sa=It*zi(It);Bt.x=Math.abs(Sa)<Math.abs(It)?Sa:It}(Math.abs(Bt.x)>0||Math.abs(Bt.y)>0)&&ot(!0),(wt=Mt.current)==null||wt.style.setProperty("--swipe-amount-x",`${Bt.x}px`),(qt=Mt.current)==null||qt.style.setProperty("--swipe-amount-y",`${Bt.y}px`)}},ca&&!f.jsx&&vt!=="loading"?ee.createElement("button",{"aria-label":oe,"data-disabled":Cs,"data-close-button":!0,onClick:Cs||!_a?()=>{}:()=>{Ra(),f.onDismiss==null||f.onDismiss.call(f,f)},className:qa(z?.closeButton,f==null||(r=f.classNames)==null?void 0:r.closeButton)},(Ea=K?.close)!=null?Ea:hT):null,(vt||f.icon||f.promise)&&f.icon!==null&&(K?.[vt]!==null||f.icon)?ee.createElement("div",{"data-icon":"",className:qa(z?.icon,f==null||(u=f.classNames)==null?void 0:u.icon)},f.promise||f.type==="loading"&&!f.icon?f.icon||Di():null,f.type!=="loading"?Ni:null):null,ee.createElement("div",{"data-content":"",className:qa(z?.content,f==null||(d=f.classNames)==null?void 0:d.content)},ee.createElement("div",{"data-title":"",className:qa(z?.title,f==null||(h=f.classNames)==null?void 0:h.title)},f.jsx?f.jsx:typeof f.title=="function"?f.title():f.title),f.description?ee.createElement("div",{"data-description":"",className:qa(ne,je,z?.description,f==null||(y=f.classNames)==null?void 0:y.description)},typeof f.description=="function"?f.description():f.description):null),ee.isValidElement(f.cancel)?f.cancel:f.cancel&&el(f.cancel)?ee.createElement("button",{"data-button":!0,"data-cancel":!0,style:f.cancelButtonStyle||O,onClick:be=>{el(f.cancel)&&_a&&(f.cancel.onClick==null||f.cancel.onClick.call(f.cancel,be),Ra())},className:qa(z?.cancelButton,f==null||(g=f.classNames)==null?void 0:g.cancelButton)},f.cancel.label):null,ee.isValidElement(f.action)?f.action:f.action&&el(f.action)?ee.createElement("button",{"data-button":!0,"data-action":!0,style:f.actionButtonStyle||Q,onClick:be=>{el(f.action)&&(f.action.onClick==null||f.action.onClick.call(f.action,be),!be.defaultPrevented&&Ra())},className:qa(z?.actionButton,f==null||(p=f.classNames)==null?void 0:p.actionButton)},f.action.label):null)};function wg(){if(typeof window>"u"||typeof document>"u")return"ltr";const a=document.documentElement.getAttribute("dir");return a==="auto"||!a?window.getComputedStyle(document.documentElement).direction:a}function RT(a,s){const o={};
vendor: 4,364 bytes, line 12
12return[a,s].forEach((r,u)=>{const d=u===1,h=d?"--mobile-offset":"--offset",y=d?ST:kT;function g(p){["top","right","bottom","left"].forEach(b=>{o[`${h}-${b}`]=typeof p=="number"?`${p}px`:p})}typeof r=="number"||typeof r=="string"?g(r):typeof r=="object"?["top","right","bottom","left"].forEach(p=>{r[p]===void 0?o[`${h}-${p}`]=y:o[`${h}-${p}`]=typeof r[p]=="number"?`${r[p]}px`:r[p]}):g(y)}),o}const ET=ee.forwardRef(function(s,o){const{id:r,invert:u,position:d="bottom-right",hotkey:h=["altKey","KeyT"],expand:y,closeButton:g,className:p,offset:b,mobileOffset:f,theme:w="light",richColors:S,duration:M,style:D,visibleToasts:x=wT,toastOptions:C,dir:G=wg(),gap:U=AT,icons:I,containerAriaLabel:te="Notifications"}=s,[$,V]=ee.useState([]),O=ee.useMemo(()=>r?$.filter(W=>W.toasterId===r):$.filter(W=>!W.toasterId),[$,r]),Q=ee.useMemo(()=>Array.from(new Set([d].concat(O.filter(W=>W.position).map(W=>W.position)))),[O,d]),[he,ne]=ee.useState([]),[ge,ye]=ee.useState(!1),[qe,Ae]=ee.useState(!1),[z,K]=ee.useState(w!=="system"?w:typeof window<"u"&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"),oe=ee.useRef(null),Se=h.join("+").replace(/Key/g,"").replace(/Digit/g,""),J=ee.useRef(null),_=ee.useRef(!1),B=ee.useCallback(W=>{V(Z=>{var X;return(X=Z.find(ie=>ie.id===W.id))!=null&&X.delete||Xt.dismiss(W.id),Z.filter(({id:ie})=>ie!==W.id)})},[]);return ee.useEffect(()=>Xt.subscribe(W=>{if(W.dismiss){requestAnimationFrame(()=>{V(Z=>Z.map(X=>X.id===W.id?{...X,delete:!0}:X))});return}setTimeout(()=>{SA.flushSync(()=>{V(Z=>{const X=Z.findIndex(ie=>ie.id===W.id);return X!==-1?[...Z.slice(0,X),{...Z[X],...W},...Z.slice(X+1)]:[W,...Z]})})})}),[$]),ee.useEffect(()=>{if(w!=="system"){K(w);return}if(w==="system"&&(window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?K("dark"):K("light")),typeof window>"u")return;const W=window.matchMedia("(prefers-color-scheme: dark)");try{W.addEventListener("change",({matches:Z})=>{K(Z?"dark":"light")})}catch{W.addListener(({matches:X})=>{try{K(X?"dark":"light")}catch(ie){console.error(ie)}})}},[w]),ee.useEffect(()=>{$.length<=1&&ye(!1)},[$]),ee.useEffect(()=>{const W=Z=>{var X;if(h.every(ve=>Z[ve]||Z.code===ve)){var we;ye(!0),(we=oe.current)==null||we.focus()}Z.code==="Escape"&&(document.activeElement===oe.current||(X=oe.current)!=null&&X.contains(document.activeElement))&&ye(!1)};return document.addEventListener("keydown",W),()=>document.removeEventListener("keydown",W)},[h]),ee.useEffect(()=>{if(oe.current)return()=>{J.current&&(J.current.focus({preventScroll:!0}),J.current=null,_.current=!1)}},[oe.current]),ee.createElement("section",{ref:o,"aria-label":`${te} ${Se}`,tabIndex:-1,"aria-live":"polite","aria-relevant":"additions text","aria-atomic":"false",suppressHydrationWarning:!0},Q.map((W,Z)=>{var X;const[ie,we]=W.split("-");return O.length?ee.createElement("ol",{key:W,dir:G==="auto"?wg():G,tabIndex:-1,ref:oe,className:p,"data-sonner-toaster":!0,"data-sonner-theme":z,"data-y-position":ie,"data-x-position":we,style:{"--front-toast-height":`${((X=he[0])==null?void 0:X.height)||0}px`,"--width":`${xT}px`,"--gap":`${U}px`,...D,...RT(b,f)},onBlur:ve=>{_.current&&!ve.currentTarget.contains(ve.relatedTarget)&&(_.current=!1,J.current&&(J.current.focus({preventScroll:!0}),J.current=null))},onFocus:ve=>{ve.target instanceof HTMLElement&&ve.target.dataset.dismissible==="false"||_.current||(_.current=!0,J.current=ve.relatedTarget)},onMouseEnter:()=>ye(!0),onMouseMove:()=>ye(!0),onMouseLeave:()=>{qe||ye(!1)},onDragEnd:()=>ye(!1),onPointerDown:ve=>{ve.target instanceof HTMLElement&&ve.target.dataset.dismissible==="false"||Ae(!0)},onPointerUp:()=>Ae(!1)},O.filter(ve=>!ve.position&&Z===0||ve.position===W).map((ve,fe)=>{var Tt,ht;return ee.createElement(_T,{key:ve.id,icons:I,index:fe,toast:ve,defaultRichColors:S,duration:(Tt=C?.duration)!=null?Tt:M,className:C?.className,descriptionClassName:C?.descriptionClassName,invert:u,visibleToasts:x,closeButton:(ht=C?.closeButton)!=null?ht:g,interacting:qe,position:W,style:C?.style,unstyled:C?.unstyled,classNames:C?.classNames,cancelButtonStyle:C?.cancelButtonStyle,actionButtonStyle:C?.actionButtonStyle,closeButtonAriaLabel:C?.closeButtonAriaLabel,removeToast:B,toasts:O.filter(ot=>ot.position==ve.position),heights:he.filter(ot=>ot.position==ve.position),setHeights:ne,expandByDefault:y,gap:U,exp
vendor: 4,231 bytes, line 12
12anded:ge,swipeDirections:s.swipeDirections})})):null}))}),DT=({...a})=>E.jsx(ET,{className:"toaster group",toastOptions:{classNames:{toast:"group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg",description:"group-[.toast]:text-muted-foreground",actionButton:"group-[.toast]:bg-primary group-[.toast]:text-primary-foreground",cancelButton:"group-[.toast]:bg-muted group-[.toast]:text-muted-foreground"}},...a}),NT="/assets/alumina-logo-CJDb5awp.png";function $y({className:a=""}){return E.jsxs(Je,{to:"/","aria-label":"Alumina Health home",className:`inline-flex items-center gap-3 ${a}`,children:[E.jsx("img",{src:NT,alt:"Alumina Health logo",width:44,height:44,className:"h-11 w-11 rounded-lg object-contain"}),E.jsxs("span",{className:"text-xl font-semibold tracking-tight text-foreground md:text-[22px]",children:["Alumina ",E.jsx("span",{className:"text-primary",children:"Health"})]})]})}function Jy(a){var s,o,r="";if(typeof a=="string"||typeof a=="number")r+=a;else if(typeof a=="object")if(Array.isArray(a)){var u=a.length;for(s=0;s<u;s++)a[s]&&(o=Jy(a[s]))&&(r&&(r+=" "),r+=o)}else for(o in a)a[o]&&(r&&(r+=" "),r+=o);return r}function zT(){for(var a,s,o=0,r="",u=arguments.length;o<u;o++)(a=arguments[o])&&(s=Jy(a))&&(r&&(r+=" "),r+=s);return r}const PT=(a,s)=>{const o=new Array(a.length+s.length);for(let r=0;r<a.length;r++)o[r]=a[r];for(let r=0;r<s.length;r++)o[a.length+r]=s[r];return o},qT=(a,s)=>({classGroupId:a,validator:s}),ev=(a=new Map,s=null,o)=>({nextPart:a,validators:s,classGroupId:o}),pl="-",kg=[],LT="arbitrary..",OT=a=>{const s=IT(a),{conflictingClassGroups:o,conflictingClassGroupModifiers:r}=a;return{getClassGroupId:h=>{if(h.startsWith("[")&&h.endsWith("]"))return HT(h);const y=h.split(pl),g=y[0]===""&&y.length>1?1:0;return tv(y,g,s)},getConflictingClassGroupIds:(h,y)=>{if(y){const g=r[h],p=o[h];return g?p?PT(p,g):g:p||kg}return o[h]||kg}}},tv=(a,s,o)=>{if(a.length-s===0)return o.classGroupId;const u=a[s],d=o.nextPart.get(u);if(d){const p=tv(a,s+1,d);if(p)return p}const h=o.validators;if(h===null)return;const y=s===0?a.join(pl):a.slice(s).join(pl),g=h.length;for(let p=0;p<g;p++){const b=h[p];if(b.validator(y))return b.classGroupId}},HT=a=>a.slice(1,-1).indexOf(":")===-1?void 0:(()=>{const s=a.slice(1,-1),o=s.indexOf(":"),r=s.slice(0,o);return r?LT+r:void 0})(),IT=a=>{const{theme:s,classGroups:o}=a;return jT(o,s)},jT=(a,s)=>{const o=ev();for(const r in a){const u=a[r];Md(u,o,r,s)}return o},Md=(a,s,o,r)=>{const u=a.length;for(let d=0;d<u;d++){const h=a[d];BT(h,s,o,r)}},BT=(a,s,o,r)=>{if(typeof a=="string"){UT(a,s,o);return}if(typeof a=="function"){VT(a,s,o,r);return}GT(a,s,o,r)},UT=(a,s,o)=>{const r=a===""?s:av(s,a);r.classGroupId=o},VT=(a,s,o,r)=>{if(YT(a)){Md(a(r),s,o,r);return}s.validators===null&&(s.validators=[]),s.validators.push(qT(o,a))},GT=(a,s,o,r)=>{const u=Object.entries(a),d=u.length;for(let h=0;h<d;h++){const[y,g]=u[h];Md(g,av(s,y),o,r)}},av=(a,s)=>{let o=a;const r=s.split(pl),u=r.length;for(let d=0;d<u;d++){const h=r[d];let y=o.nextPart.get(h);y||(y=ev(),o.nextPart.set(h,y)),o=y}return o},YT=a=>"isThemeGetter"in a&&a.isThemeGetter===!0,WT=a=>{if(a<1)return{get:()=>{},set:()=>{}};let s=0,o=Object.create(null),r=Object.create(null);const u=(d,h)=>{o[d]=h,s++,s>a&&(s=0,r=o,o=Object.create(null))};return{get(d){let h=o[d];if(h!==void 0)return h;if((h=r[d])!==void 0)return u(d,h),h},set(d,h){d in o?o[d]=h:u(d,h)}}},pd="!",Sg=":",FT=[],xg=(a,s,o,r,u)=>({modifiers:a,hasImportantModifier:s,baseClassName:o,maybePostfixModifierPosition:r,isExternal:u}),KT=a=>{const{prefix:s,experimentalParseClassName:o}=a;let r=u=>{const d=[];let h=0,y=0,g=0,p;const b=u.length;for(let D=0;D<b;D++){const x=u[D];if(h===0&&y===0){if(x===Sg){d.push(u.slice(g,D)),g=D+1;continue}if(x==="/"){p=D;continue}}x==="["?h++:x==="]"?h--:x==="("?y++:x===")"&&y--}const f=d.length===0?u:u.slice(g);let w=f,S=!1;f.endsWith(pd)?(w=f.slice(0,-1),S=!0):f.startsWith(pd)&&(w=f.slice(1),S=!0);const M=p&&p>g?p-g:void 0;return xg(d,S,w,M)};if(s){const u=s+Sg,d=r;r=h=>h.startsWith(u)?d(h.slice(u.length)):xg(FT,!1,h,void 0,!0)}if(o){const u=r;r=d=>o({className:d,parseClassName:u})}return r},XT=a=>{const s=new Map;
vendor: 5,463 bytes, line 12
12return a.orderSensitiveModifiers.forEach((o,r)=>{s.set(o,1e6+r)}),o=>{const r=[];let u=[];for(let d=0;d<o.length;d++){const h=o[d],y=h[0]==="[",g=s.has(h);y||g?(u.length>0&&(u.sort(),r.push(...u),u=[]),r.push(h)):u.push(h)}return u.length>0&&(u.sort(),r.push(...u)),r}},QT=a=>({cache:WT(a.cacheSize),parseClassName:KT(a),sortModifiers:XT(a),...OT(a)}),ZT=/\s+/,$T=(a,s)=>{const{parseClassName:o,getClassGroupId:r,getConflictingClassGroupIds:u,sortModifiers:d}=s,h=[],y=a.trim().split(ZT);let g="";for(let p=y.length-1;p>=0;p-=1){const b=y[p],{isExternal:f,modifiers:w,hasImportantModifier:S,baseClassName:M,maybePostfixModifierPosition:D}=o(b);if(f){g=b+(g.length>0?" "+g:g);continue}let x=!!D,C=r(x?M.substring(0,D):M);if(!C){if(!x){g=b+(g.length>0?" "+g:g);continue}if(C=r(M),!C){g=b+(g.length>0?" "+g:g);continue}x=!1}const G=w.length===0?"":w.length===1?w[0]:d(w).join(":"),U=S?G+pd:G,I=U+C;if(h.indexOf(I)>-1)continue;h.push(I);const te=u(C,x);for(let $=0;$<te.length;++$){const V=te[$];h.push(U+V)}g=b+(g.length>0?" "+g:g)}return g},JT=(...a)=>{let s=0,o,r,u="";for(;s<a.length;)(o=a[s++])&&(r=nv(o))&&(u&&(u+=" "),u+=r);return u},nv=a=>{if(typeof a=="string")return a;let s,o="";for(let r=0;r<a.length;r++)a[r]&&(s=nv(a[r]))&&(o&&(o+=" "),o+=s);return o},e1=(a,...s)=>{let o,r,u,d;const h=g=>{const p=s.reduce((b,f)=>f(b),a());return o=QT(p),r=o.cache.get,u=o.cache.set,d=y,y(g)},y=g=>{const p=r(g);if(p)return p;const b=$T(g,o);return u(g,b),b};return d=h,(...g)=>d(JT(...g))},t1=[],pt=a=>{const s=o=>o[a]||t1;return s.isThemeGetter=!0,s},iv=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,sv=/^\((?:(\w[\w-]*):)?(.+)\)$/i,a1=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,n1=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,i1=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,s1=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,o1=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,r1=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,Hn=a=>a1.test(a),Me=a=>!!a&&!Number.isNaN(Number(a)),In=a=>!!a&&Number.isInteger(Number(a)),id=a=>a.endsWith("%")&&Me(a.slice(0,-1)),ln=a=>n1.test(a),ov=()=>!0,l1=a=>i1.test(a)&&!s1.test(a),Cd=()=>!1,c1=a=>o1.test(a),u1=a=>r1.test(a),d1=a=>!le(a)&&!ce(a),h1=a=>Zn(a,cv,Cd),le=a=>iv.test(a),ki=a=>Zn(a,uv,l1),Ag=a=>Zn(a,w1,Me),m1=a=>Zn(a,hv,ov),f1=a=>Zn(a,dv,Cd),Tg=a=>Zn(a,rv,Cd),p1=a=>Zn(a,lv,u1),tl=a=>Zn(a,mv,c1),ce=a=>sv.test(a),Co=a=>Ei(a,uv),g1=a=>Ei(a,dv),Mg=a=>Ei(a,rv),y1=a=>Ei(a,cv),v1=a=>Ei(a,lv),al=a=>Ei(a,mv,!0),b1=a=>Ei(a,hv,!0),Zn=(a,s,o)=>{const r=iv.exec(a);return r?r[1]?s(r[1]):o(r[2]):!1},Ei=(a,s,o=!1)=>{const r=sv.exec(a);return r?r[1]?s(r[1]):o:!1},rv=a=>a==="position"||a==="percentage",lv=a=>a==="image"||a==="url",cv=a=>a==="length"||a==="size"||a==="bg-size",uv=a=>a==="length",w1=a=>a==="number",dv=a=>a==="family-name",hv=a=>a==="number"||a==="weight",mv=a=>a==="shadow",k1=()=>{const a=pt("color"),s=pt("font"),o=pt("text"),r=pt("font-weight"),u=pt("tracking"),d=pt("leading"),h=pt("breakpoint"),y=pt("container"),g=pt("spacing"),p=pt("radius"),b=pt("shadow"),f=pt("inset-shadow"),w=pt("text-shadow"),S=pt("drop-shadow"),M=pt("blur"),D=pt("perspective"),x=pt("aspect"),C=pt("ease"),G=pt("animate"),U=()=>["auto","avoid","all","avoid-page","page","left","right","column"],I=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],te=()=>[...I(),ce,le],$=()=>["auto","hidden","clip","visible","scroll"],V=()=>["auto","contain","none"],O=()=>[ce,le,g],Q=()=>[Hn,"full","auto",...O()],he=()=>[In,"none","subgrid",ce,le],ne=()=>["auto",{span:["full",In,ce,le]},In,ce,le],ge=()=>[In,"auto",ce,le],ye=()=>["auto","min","max","fr",ce,le],qe=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],Ae=()=>["start","end","center","stretch","center-safe","end-safe"],z=()=>["auto",...O()],K=()=>[Hn,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...O()],oe=()=>[Hn,"screen","full","dvw","lvw","svw","min","max","fit",...O()],Se=()=>[Hn,"screen","full","lh","dvh","lvh","svh","min","max","fit",...O()],J=()=>[a,ce,le],_=()=>[...I(),Mg,Tg,{position:[ce,le]}],B=()=>["no-repeat",{repeat:["","x","y","space","round"]}],W=()=>["auto","cover","contain",y1,h1,{size:[ce,le]}],Z=()=>[id,Co,ki],X=()=>["","none","full",p,ce,le],ie=()=>["",Me,Co,ki],we=()=>["solid","dashed","dotted","double"],ve=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],fe=()=>[Me,id,Mg,Tg],Tt=()=>["","none",M,ce,le],ht=()=>["none",Me,ce,le],ot=()=>["none",Me,ce,le],wa=()=>[Me,ce,le],mt=()=>[Hn,"full",...O()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[ln],breakpoint:[ln],color:[ov],container:[ln],"drop-shadow":[ln],ease:["in","out","in-out"],font:[d1],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[ln],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[ln],shadow:[ln],spacing:["px",Me],text:[ln],"text-shadow":[ln],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",Hn,le,ce,x]}
vendor: 6,117 bytes, line 12
12],container:["container"],columns:[{columns:[Me,le,ce,y]}],"break-after":[{"break-after":U()}],"break-before":[{"break-before":U()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:te()}],overflow:[{overflow:$()}],"overflow-x":[{"overflow-x":$()}],"overflow-y":[{"overflow-y":$()}],overscroll:[{overscroll:V()}],"overscroll-x":[{"overscroll-x":V()}],"overscroll-y":[{"overscroll-y":V()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:Q()}],"inset-x":[{"inset-x":Q()}],"inset-y":[{"inset-y":Q()}],start:[{"inset-s":Q(),start:Q()}],end:[{"inset-e":Q(),end:Q()}],"inset-bs":[{"inset-bs":Q()}],"inset-be":[{"inset-be":Q()}],top:[{top:Q()}],right:[{right:Q()}],bottom:[{bottom:Q()}],left:[{left:Q()}],visibility:["visible","invisible","collapse"],z:[{z:[In,"auto",ce,le]}],basis:[{basis:[Hn,"full","auto",y,...O()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[Me,Hn,"auto","initial","none",le]}],grow:[{grow:["",Me,ce,le]}],shrink:[{shrink:["",Me,ce,le]}],order:[{order:[In,"first","last","none",ce,le]}],"grid-cols":[{"grid-cols":he()}],"col-start-end":[{col:ne()}],"col-start":[{"col-start":ge()}],"col-end":[{"col-end":ge()}],"grid-rows":[{"grid-rows":he()}],"row-start-end":[{row:ne()}],"row-start":[{"row-start":ge()}],"row-end":[{"row-end":ge()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":ye()}],"auto-rows":[{"auto-rows":ye()}],gap:[{gap:O()}],"gap-x":[{"gap-x":O()}],"gap-y":[{"gap-y":O()}],"justify-content":[{justify:[...qe(),"normal"]}],"justify-items":[{"justify-items":[...Ae(),"normal"]}],"justify-self":[{"justify-self":["auto",...Ae()]}],"align-content":[{content:["normal",...qe()]}],"align-items":[{items:[...Ae(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...Ae(),{baseline:["","last"]}]}],"place-content":[{"place-content":qe()}],"place-items":[{"place-items":[...Ae(),"baseline"]}],"place-self":[{"place-self":["auto",...Ae()]}],p:[{p:O()}],px:[{px:O()}],py:[{py:O()}],ps:[{ps:O()}],pe:[{pe:O()}],pbs:[{pbs:O()}],pbe:[{pbe:O()}],pt:[{pt:O()}],pr:[{pr:O()}],pb:[{pb:O()}],pl:[{pl:O()}],m:[{m:z()}],mx:[{mx:z()}],my:[{my:z()}],ms:[{ms:z()}],me:[{me:z()}],mbs:[{mbs:z()}],mbe:[{mbe:z()}],mt:[{mt:z()}],mr:[{mr:z()}],mb:[{mb:z()}],ml:[{ml:z()}],"space-x":[{"space-x":O()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":O()}],"space-y-reverse":["space-y-reverse"],size:[{size:K()}],"inline-size":[{inline:["auto",...oe()]}],"min-inline-size":[{"min-inline":["auto",...oe()]}],"max-inline-size":[{"max-inline":["none",...oe()]}],"block-size":[{block:["auto",...Se()]}],"min-block-size":[{"min-block":["auto",...Se()]}],"max-block-size":[{"max-block":["none",...Se()]}],w:[{w:[y,"screen",...K()]}],"min-w":[{"min-w":[y,"screen","none",...K()]}],"max-w":[{"max-w":[y,"screen","none","prose",{screen:[h]},...K()]}],h:[{h:["screen","lh",...K()]}],"min-h":[{"min-h":["screen","lh","none",...K()]}],"max-h":[{"max-h":["screen","lh",...K()]}],"font-size":[{text:["base",o,Co,ki]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[r,b1,m1]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",id,le]}],"font-family":[{font:[g1,f1,s]}],"font-features":[{"font-features":[le]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[u,ce,le]}],"line-clamp":[{"line-clamp":[Me,"none",ce,Ag]}],leading:[{leading:[d,...O()]}],"list-image":[{"list-image":["none",ce,le]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",ce,le]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:J()}],"text-color":[{text:J()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...we(),"wavy"]}],"text-decoration-thickness":[{decoration:[Me,"from-font","auto",ce,ki]}],"text-decoration-color":[{decoration:J()}],"underline-offset":[{"underline-offset":[Me,"auto",ce,le]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:O()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",ce,le]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",ce,le]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:_()}],"bg-repeat":[{bg:B()}],"bg-size":[{bg:W()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},In,ce,le],radial:["",ce,le],conic:[In,ce,le]},v1,p1]}],"bg-color":[{bg:J()}],"gradient-from-pos":[{from:Z()}
vendor: 6,574 bytes, line 12
12],"gradient-via-pos":[{via:Z()}],"gradient-to-pos":[{to:Z()}],"gradient-from":[{from:J()}],"gradient-via":[{via:J()}],"gradient-to":[{to:J()}],rounded:[{rounded:X()}],"rounded-s":[{"rounded-s":X()}],"rounded-e":[{"rounded-e":X()}],"rounded-t":[{"rounded-t":X()}],"rounded-r":[{"rounded-r":X()}],"rounded-b":[{"rounded-b":X()}],"rounded-l":[{"rounded-l":X()}],"rounded-ss":[{"rounded-ss":X()}],"rounded-se":[{"rounded-se":X()}],"rounded-ee":[{"rounded-ee":X()}],"rounded-es":[{"rounded-es":X()}],"rounded-tl":[{"rounded-tl":X()}],"rounded-tr":[{"rounded-tr":X()}],"rounded-br":[{"rounded-br":X()}],"rounded-bl":[{"rounded-bl":X()}],"border-w":[{border:ie()}],"border-w-x":[{"border-x":ie()}],"border-w-y":[{"border-y":ie()}],"border-w-s":[{"border-s":ie()}],"border-w-e":[{"border-e":ie()}],"border-w-bs":[{"border-bs":ie()}],"border-w-be":[{"border-be":ie()}],"border-w-t":[{"border-t":ie()}],"border-w-r":[{"border-r":ie()}],"border-w-b":[{"border-b":ie()}],"border-w-l":[{"border-l":ie()}],"divide-x":[{"divide-x":ie()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":ie()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...we(),"hidden","none"]}],"divide-style":[{divide:[...we(),"hidden","none"]}],"border-color":[{border:J()}],"border-color-x":[{"border-x":J()}],"border-color-y":[{"border-y":J()}],"border-color-s":[{"border-s":J()}],"border-color-e":[{"border-e":J()}],"border-color-bs":[{"border-bs":J()}],"border-color-be":[{"border-be":J()}],"border-color-t":[{"border-t":J()}],"border-color-r":[{"border-r":J()}],"border-color-b":[{"border-b":J()}],"border-color-l":[{"border-l":J()}],"divide-color":[{divide:J()}],"outline-style":[{outline:[...we(),"none","hidden"]}],"outline-offset":[{"outline-offset":[Me,ce,le]}],"outline-w":[{outline:["",Me,Co,ki]}],"outline-color":[{outline:J()}],shadow:[{shadow:["","none",b,al,tl]}],"shadow-color":[{shadow:J()}],"inset-shadow":[{"inset-shadow":["none",f,al,tl]}],"inset-shadow-color":[{"inset-shadow":J()}],"ring-w":[{ring:ie()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:J()}],"ring-offset-w":[{"ring-offset":[Me,ki]}],"ring-offset-color":[{"ring-offset":J()}],"inset-ring-w":[{"inset-ring":ie()}],"inset-ring-color":[{"inset-ring":J()}],"text-shadow":[{"text-shadow":["none",w,al,tl]}],"text-shadow-color":[{"text-shadow":J()}],opacity:[{opacity:[Me,ce,le]}],"mix-blend":[{"mix-blend":[...ve(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":ve()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[Me]}],"mask-image-linear-from-pos":[{"mask-linear-from":fe()}],"mask-image-linear-to-pos":[{"mask-linear-to":fe()}],"mask-image-linear-from-color":[{"mask-linear-from":J()}],"mask-image-linear-to-color":[{"mask-linear-to":J()}],"mask-image-t-from-pos":[{"mask-t-from":fe()}],"mask-image-t-to-pos":[{"mask-t-to":fe()}],"mask-image-t-from-color":[{"mask-t-from":J()}],"mask-image-t-to-color":[{"mask-t-to":J()}],"mask-image-r-from-pos":[{"mask-r-from":fe()}],"mask-image-r-to-pos":[{"mask-r-to":fe()}],"mask-image-r-from-color":[{"mask-r-from":J()}],"mask-image-r-to-color":[{"mask-r-to":J()}],"mask-image-b-from-pos":[{"mask-b-from":fe()}],"mask-image-b-to-pos":[{"mask-b-to":fe()}],"mask-image-b-from-color":[{"mask-b-from":J()}],"mask-image-b-to-color":[{"mask-b-to":J()}],"mask-image-l-from-pos":[{"mask-l-from":fe()}],"mask-image-l-to-pos":[{"mask-l-to":fe()}],"mask-image-l-from-color":[{"mask-l-from":J()}],"mask-image-l-to-color":[{"mask-l-to":J()}],"mask-image-x-from-pos":[{"mask-x-from":fe()}],"mask-image-x-to-pos":[{"mask-x-to":fe()}],"mask-image-x-from-color":[{"mask-x-from":J()}],"mask-image-x-to-color":[{"mask-x-to":J()}],"mask-image-y-from-pos":[{"mask-y-from":fe()}],"mask-image-y-to-pos":[{"mask-y-to":fe()}],"mask-image-y-from-color":[{"mask-y-from":J()}],"mask-image-y-to-color":[{"mask-y-to":J()}],"mask-image-radial":[{"mask-radial":[ce,le]}],"mask-image-radial-from-pos":[{"mask-radial-from":fe()}],"mask-image-radial-to-pos":[{"mask-radial-to":fe()}],"mask-image-radial-from-color":[{"mask-radial-from":J()}],"mask-image-radial-to-color":[{"mask-radial-to":J()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":I()}],"mask-image-conic-pos":[{"mask-conic":[Me]}],"mask-image-conic-from-pos":[{"mask-conic-from":fe()}],"mask-image-conic-to-pos":[{"mask-conic-to":fe()}],"mask-image-conic-from-color":[{"mask-conic-from":J()}],"mask-image-conic-to-color":[{"mask-conic-to":J()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:_()}],"mask-repeat":[{mask:B()}],"mask-size":[{mask:W()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",ce,le]}],filter:[{filter:["","none",ce,le]}],blur:[{blur:Tt()}],brightness:[{brightness:[Me,ce,le]}],contrast:[{contrast:[Me,ce,le]}],"drop-shadow":[{"drop-shadow":["","none",S,al,tl]}],"drop-shadow-color":[{"drop-shadow":J()}],grayscale:[{grayscale:["",Me,ce,le]}],"hue-rotate":[{"hue-rotate":[Me,ce,le]}],invert:[{invert:["",Me,ce,le]}],saturate:[{saturate:[Me,ce,le]}],sepia:[{sepia:["",Me,ce,le]}],"backdrop-filter":[{"backdrop-filter":["","none",ce,le]}],"backdrop-blur":[{"backdrop-blur":Tt()}],"backdrop-brightness":[{"backdrop-brightness":[Me,ce,le]}],"backdrop-contrast":[{"backdrop-contrast":[Me,ce,le]}],"backdrop-grayscale":[{"backdrop-grayscale":["",Me,ce,le]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[Me,ce,le]}],"backdrop-invert":[{"backdrop-invert":["",Me,ce,le]}],"backdrop-opacity":[{"backdrop-opacity":[Me,ce,le]}],"backdrop-saturate":[{"backdrop-saturate":[Me,ce,le]}],"backdrop-sepia":[{"backdrop-sepia":["",Me,ce,le]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":O()}],"border-spacing-x":[{"border-spacing-x":O()}],"border-spacing-y":[{"border-spacing-y":O()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",ce,le]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[Me,"initial",ce,le]}],ease:[{ease:["linear","initial",C,ce,le]}],delay:[{delay:[Me,ce,le]}],animate:[{animate:["none",G,ce,le]}],backface:[{backface:["hidden","visible"]}
vendor: 6,065 bytes, lines 12-22
12],perspective:[{perspective:[D,ce,le]}],"perspective-origin":[{"perspective-origin":te()}],rotate:[{rotate:ht()}],"rotate-x":[{"rotate-x":ht()}],"rotate-y":[{"rotate-y":ht()}],"rotate-z":[{"rotate-z":ht()}],scale:[{scale:ot()}],"scale-x":[{"scale-x":ot()}],"scale-y":[{"scale-y":ot()}],"scale-z":[{"scale-z":ot()}],"scale-3d":["scale-3d"],skew:[{skew:wa()}],"skew-x":[{"skew-x":wa()}],"skew-y":[{"skew-y":wa()}],transform:[{transform:[ce,le,"","none","gpu","cpu"]}],"transform-origin":[{origin:te()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:mt()}],"translate-x":[{"translate-x":mt()}],"translate-y":[{"translate-y":mt()}],"translate-z":[{"translate-z":mt()}],"translate-none":["translate-none"],accent:[{accent:J()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:J()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",ce,le]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":O()}],"scroll-mx":[{"scroll-mx":O()}],"scroll-my":[{"scroll-my":O()}],"scroll-ms":[{"scroll-ms":O()}],"scroll-me":[{"scroll-me":O()}],"scroll-mbs":[{"scroll-mbs":O()}],"scroll-mbe":[{"scroll-mbe":O()}],"scroll-mt":[{"scroll-mt":O()}],"scroll-mr":[{"scroll-mr":O()}],"scroll-mb":[{"scroll-mb":O()}],"scroll-ml":[{"scroll-ml":O()}],"scroll-p":[{"scroll-p":O()}],"scroll-px":[{"scroll-px":O()}],"scroll-py":[{"scroll-py":O()}],"scroll-ps":[{"scroll-ps":O()}],"scroll-pe":[{"scroll-pe":O()}],"scroll-pbs":[{"scroll-pbs":O()}],"scroll-pbe":[{"scroll-pbe":O()}],"scroll-pt":[{"scroll-pt":O()}],"scroll-pr":[{"scroll-pr":O()}],"scroll-pb":[{"scroll-pb":O()}],"scroll-pl":[{"scroll-pl":O()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",ce,le]}],fill:[{fill:["none",...J()]}],"stroke-w":[{stroke:[Me,Co,ki,Ag]}],stroke:[{stroke:["none",...J()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","inset-bs","inset-be","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pbs","pbe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mbs","mbe","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-bs","border-w-be","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-bs","border-color-be","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mbs","scroll-mbe","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pbs","scroll-pbe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}},S1=e1(k1);function Cg(...a){return S1(zT(a))}const gl="G-265H74VQGJ",x1=/(^|\.)aluminahealth\.com$/i;function fv(a){return x1.test(a)}const A1=`(function(){
13  try {
14    var h = window.location.hostname;
15    if (!/(^|\\.)aluminahealth\\.com$/i.test(h)) return;
16    window.dataLayer = window.dataLayer || [];
17    function gtag(){dataLayer.push(arguments);}
18    window.gtag = gtag;
19    gtag('js', new Date());
20    gtag('config', '${gl}', { send_page_view: false });
21    var s = document.createElement('script');
22    s.async = true;
23    s.src = 'https://www.googletagmanager.com/gtag/js?id=${gl}';
24    document.head.appendChild(s);
25  } catch (e) {}
26})();`;function T1(a){if(typeof window>"u"||!fv(window.location.hostname))return;const s=window.gtag;typeof s=="function"&&s("event","app_store_click",{page_path:window.location.pathname,placement:a,send_to:gl})}function _g(a,s){if(typeof window>"u"||!fv(window.location.hostname))return;const o=window.gtag;typeof o=="function"&&o("event","page_view",{page_path:a,page_location:window.location.href,page_title:document.title,send_to:gl})}const M1="https://apps.apple.com/us/app/alumina-brain-health/id6764492616?ppid=945274d9-5c37-44a5-a17c-9674a675f329",C1="https://developer.apple.com/assets/elements/badges/download-on-the-app-store.svg",_1={sm:"h-10",md:"h-12",lg:"h-14"};function yl({size:a="md",className:s,label:o="Download Alumina Brain Health on the App Store",alt:r="Download on the App Store",placement:u="site"}){return E.jsx("a",{href:M1,target:"_blank",rel:"noopener noreferrer","aria-label":o,onClick:()=>T1(u),className:Cg("inline-flex items-center justify-center transition-transform hover:-translate-y-0.5 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background rounded-lg",s),children:E.jsx("img",{src:C1,alt:r,className:Cg(_1[a],"w-auto"),loading:"lazy"})})}const pv=(...a)=>a.filter((s,o,r)=>!!s&&s.trim()!==""&&r.indexOf(s)===o).join(" ").trim();const R1=a=>a.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase();const E1=a=>a.replace(/^([A-Z])|[\s-_]+(\w)/g,(s,o,r)=>r?r.toUpperCase():o.toLowerCase());const Rg=a=>{const s=E1(a);return s.charAt(0).toUpperCase()+s.slice(1)};var D1={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};const N1=a=>{for(const s in a)if(s.startsWith("aria-")||s==="role"||s==="title")return!0;return!1};const z1=ae.forwardRef(({color:a="currentColor",size:s=24,strokeWidth:o=2,absoluteStrokeWidth:r,className:u="",children:d,iconNode:h,...y},g)=>ae.createElement("svg",{ref:g,...D1,width:s,height:s,stroke:a,strokeWidth:r?Number(o)*24/Number(s):o,className:pv("lucide",u),...!d&&!N1(y)&&{"aria-hidden":"true"},...y},[...h.map(([p,b])=>ae.createElement(p,b)),...Array.isArray(d)?d:[d]]));const gv=(a,s)=>{const o=ae.forwardRef(({className:r,...u},d)=>ae.createElement(z1,{ref:d,iconNode:s,className:pv(`lucide-${R1(Rg(a))}`,`lucide-${a}`,r),...u}));return o.displayName=Rg(a),o};const P1=[["path",{d:"M4 5h16",key:"1tepv9"}],["path",{d:"M4 12h16",key:"1lakjw"}],["path",{d:"M4 19h16",key:"1djgab"}]],q1=gv("menu",P1);const L1=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],O1=gv("x",L1),Eg=[{to:"/",label:"Home"},{to:"/assessment-types/",label:"Assessment Types",shortLabel:"Assessments"},{to:"/conditions/",label:"Conditions & Support",shortLabel:"Conditions"},{to:"/articles/",label:"Articles"},{to:"/who-it-helps/",label:"Who It Helps"},{to:"/pricing/",label:"Pricing"},{to:"/contact/",label:"Contact"}];function H1(){const[a,s]=ae.useState(!1),o=ZA({select:r=>r.location.pathname});return ae.useEffect(()=>{s(!1)},[o]),E.jsxs("header",{className:"sticky top-0 z-50 w-full border-b border-border/40 bg-surface/60 backdrop-blur-2xl backdrop-saturate-150 supports-[backdrop-filter]:bg-surface/55",children:[E.jsxs("div",{className:"container-prose flex h-16 items-center justify-between gap-4",children:[E.jsx("div",{className:"shrink-0",children:E.jsx($y,{})}),E.jsx("nav",{"aria-label":"Primary",className:"hidden items-center gap-1 lg:flex",children:Eg.filter(r=>r.to!=="/contact/").map(r=>E.jsx(Je,{to:r.to,activeOptions:{exact:r.to==="/"},activeProps:{className:"text-foreground bg-primary-soft"},inactiveProps:{className:"text-muted-foreground hover:text-foreground"},className:"whitespace-nowrap rounded-full px-3 py-1.5 text-sm font-medium transition-colors hover:bg-secondary",children:"shortLabel"in r&&r.shortLabel?r.shortLabel:r.label},r.to))}),E.jsx("div",{className:"hidden shrink-0 lg:block",children:E.jsx(yl,{size:"sm"})}),E.jsx("button",{type:"button","aria-label":a?"Close menu":"Open menu","aria-expanded":a,onClick:()=>s(r=>!r),className:"inline-flex h-10 w-10 shrink-0 items-center justify-center rounded-full border border-border bg-surface text-foreground lg:hidden",children:a?E.jsx(O1,{className:"h-5 w-5"}):E.jsx(q1,{className:"h-5 w-5"})})]}),a&&E.jsx("div",{className:"border-t border-border/70 bg-surface/95 backdrop-blur-xl lg:hidden",children:E.jsxs("nav",{"aria-label":"Mobile primary",className:"container-prose flex flex-col gap-1 py-4",children:[Eg.map(r=>E.jsx(Je,{to:r.to,activeOptions:{exact:r.to==="/"},activeProps:{className:"bg-primary-soft text-foreground"},inactiveProps:{className:"text-foreground"},className:"rounded-xl px-4 py-3 text-base font-medium hover:bg-secondary",children:r.label},r.to)),E.jsx("div",{className:"pt-2",children:E.jsx(yl,{className:"w-full",size:"md"})})]})})]})}const I1=ae.memo(H1),_d=[{slug:"memory-and-recall",navLabel:"Memory & Recall",shortName:"Memory and recall",title:"Memory and recall assessments on iPhone and iPad",tagline:"Guided memory tasks you can complete from home.",description:"Memory and recall assessments help you complete short, guided tasks designed to track recall, attention, and cognitive consistency over time.",helps:"Subtle changes in memory can be hard to describe in the moment. Repeating a structured asse
26ssment over weeks and months gives patients, caregivers, and care teams a clearer picture than memory alone.",examples:["Word and list recall tasks","Delayed recall prompts","Pattern and sequence memory","Short attention and focus checks"],audience:["People monitoring memory concerns","Caregivers tracking cognitive change","Anyone preparing for a care discussion about memory"],icon:"memory",whatItMeasures:"Memory and recall tasks sample short-term recall, working memory, and sustained attention — the everyday cognitive functions that people most often notice shifting first. Rather than a single score, the goal is to build a personal baseline across repeated sessions so that day-to-day variability (sleep, mood, stress) can be separated from a real trend. Clinicians commonly refer to this kind of longitudinal, self-directed data as patient-reported cognitive tracking.",howItWorks:["Sit somewhere quiet with your iPhone or iPad and open Alumina Health.","The app guides you through a short warm-up so you know what to expect.","Complete a mix of word-recall, delayed-recall, and pattern-memory prompts (about 3-5 minutes).","Rate your alertness at the end so results can be reviewed in context.","Repeat on your own schedule; weekly is a common starting cadence."],whatResultsShow:"Session summaries highlight recall accuracy, response consistency, and how today compares with your recent range. Trends become useful once you have several sessions to compare; reviewers typically look for gradual directional shifts rather than a single low or high score.",conditionsUsedFor:["memory-concerns","dementia-related-concerns","cognitive-change"],faqs:[{q:"Is this a diagnostic memory test?",a:"No. Alumina Health is not a medical device and does not diagnose or rule out any condition. It is designed to help you track memory and attention consistently over time so you can bring more grounded observations into a clinical conversation."},{q:"How often should I complete a memory session?",a:"Most people start with once a week at a similar time of day. Consistency matters more than frequency; the goal is a reliable baseline you can compare against later."},{q:"Will I get better the more I do it?",a:"Repeated tasks may produce a small practice effect. The app uses varied prompt sets to reduce this, and reviewers focus on longer-term trends rather than single sessions."},{q:"Can a caregiver help me complete a session?",a:"A caregiver can help set up the session and provide reminders, but the person being tracked should complete the tasks themselves so results reflect their own performance."},{q:"Should I share results with my clinician?",a:"Yes. Bringing longitudinal summaries to a visit gives clinicians additional context beyond a single in-office snapshot. Always follow their guidance for interpretation."}]},{slug:"tremor-and-hand-control",navLabel:"Tremor & Hand Control",shortName:"Tremor and hand control",title:"Tremor and hand control assessments on iPhone and iPad",tagline:"Guided tasks for tremor, steadiness, and fine motor control.",description:"Tremor and hand control assessments use guided drawing, tracing, and steadiness tasks to help track hand stability and fine motor control over time.",helps:"Tremor can change subtly week to week. A consistent, guided assessment makes it easier to notice trends in steadiness, postural tremor, and fine motor control.",examples:["Spiral drawing","Line tracing tasks","Postural and resting steadiness","Fine motor precision tasks"],audience:["People living with essential tremor","People monitoring tremor related to Parkinson's","Caregivers helping track day-to-day changes"],icon:"tremor",whatItMeasures:"Tremor and hand-control tasks measure fine motor steadiness, postural stability, and drawing precision — the observable movement signals clinicians commonly consider when evaluating tremor severity and progression. Because tremor amplitude fluctuates with caffeine, sleep, stress, and medication timing, a single measurement rarely tells the full story. Repeating the same guided tasks builds a longitudinal picture that is less sensitive to any one day.",howItWorks:["Rest your arm and device on a stable surface before beginning.","Follow on-screen prompts to draw a spiral and trace lines with your dominant hand.","Complete a short postural-hold task so steadiness can be sampled.","Optionally note recent medication timing, sleep, and stress to add context.","Repeat with the same setup so sessions stay comparable."],whatResultsShow:"You'll see steadiness scores for each task and how they compare with your recent range. Reviewers commonly look at trends across weeks, correlating steadier or shakier windows with medication timing, sleep, or stress notes captured during the session.",conditionsUsedFor:["essential-tremor","parkinsons-disease","movement-symptoms","multiple-sclerosis"],faqs:[{q:"Does Alumina diagnose essential tremor or Parkinson's disease?",a:"No. Alumina Health is a tracking tool, not a diagnostic device. Diagnosing tremor requires a clinical evaluation. The app helps you record steadiness and drawing precision over time so trends are easier to discu
26ss with a clinician."},{q:"Does it matter which hand I use?",a:"Use the same hand each time you repeat a task. Many people track their dominant hand; if tremor differs between sides, consider running the sequence on both."},{q:"How is tremor steadiness scored?",a:"The app analyzes touch-path deviation on drawing and tracing tasks. Rather than a diagnostic threshold, the score is best read against your own baseline over multiple sessions."},{q:"Should I complete a session before or after medication?",a:"Both can be informative. Many people log a session at a consistent time relative to their medication schedule so on and off windows can be compared over time."},{q:"Can caffeine or fatigue affect my results?",a:"Yes. Caffeine, fatigue, stress, and cold hands are all known to increase tremor amplitude. Noting these factors in the session helps put a shakier day in context."}]},{slug:"tapping-and-coordination",navLabel:"Tapping & Coordination",shortName:"Tapping and coordination",title:"Tapping and coordination assessments on iPhone and iPad",tagline:"Simple tap tests for rhythm and movement consistency.",description:"Tapping and coordination assessments use guided tap tests, alternating tap tasks, and rhythm checks to help track movement consistency over time.",helps:"Tapping speed, rhythm, and coordination are commonly used to monitor motor function. Repeating these tasks gives a more structured view than self-reporting alone.",examples:["Single-finger tap tests","Alternating two-finger tap tasks","Rhythm and timing tasks","Coordination consistency checks"],audience:["People monitoring movement-related symptoms","People living with Parkinson's or related conditions","Caregivers tracking coordination over time"],icon:"tap",whatItMeasures:"Timed finger-tapping tasks are among the most established motor assessments used in movement-disorder clinics. They sample tap speed, rhythm regularity, and inter-tap variability, signals that reflect motor planning, bradykinesia, and coordination. Alumina translates the same underlying task into a short, repeatable at-home check-in so patterns can be tracked between visits.",howItWorks:["Rest your device on a flat surface with the screen visible.","Tap the on-screen targets as quickly and evenly as you can for the allotted window.","Repeat with alternating fingers for a coordination-focused sample.","Note whether you are in an on or off medication window if relevant.","Session takes about two minutes end-to-end."],whatResultsShow:"Results show tap rate, rhythm consistency, and inter-tap variability across the session. Longitudinal views highlight whether rhythm is holding steady or drifting, and how performance shifts across morning and evening or across medication cycles.",conditionsUsedFor:["parkinsons-disease","movement-symptoms","essential-tremor","multiple-sclerosis"],faqs:[{q:"What does the tapping task actually measure?",a:"Tap rate, rhythm consistency, and inter-tap variability, all signals commonly used in clinical movement assessments to characterize motor speed and coordination."},{q:"Is faster always better?",a:"Not on its own. Rhythm consistency and how tapping trends over time can be more informative than raw speed. Reviewers usually look at your personal baseline, not an absolute cutoff."},{q:"Can I track on versus off medication windows?",a:"Yes. Noting medication timing at the start of each session makes it easier to compare performance across dose cycles over weeks."},{q:"Does the app replace an in-clinic finger-tapping exam?",a:"No. In-clinic exams remain the standard for evaluation. Alumina adds between-visit context that can help ground discussions with your clinician."}]},{slug:"walking-and-movement",navLabel:"Walking & Movement",shortName:"Walking and movement",title:"Walking and movement assessments on iPhone and iPad",tagline:"Guided walking and gait-related tracking from your phone.",description:"Walking and movement assessments use the sensors in iPhone and iPad to help track gait, mobility, and movement-related tasks over time.",helps:"Walking and gait can shift gradually. Capturing structured walking sessions over time helps surface changes that are easy to miss in everyday life.",examples:["Short guided walks","Turning and balance tasks","Step rhythm and consistency","Mobility tracking sessions"],audience:["People monitoring gait or balance changes","People with Parkinson's or movement-related concerns","Caregivers supporting mobility tracking"],icon:"walk",whatItMeasures:"Guided walking sessions use iPhone and iPad motion sensors to sample gait cadence, step regularity, turning, and balance-related motion. These are the same domains gait labs and neurology clinics evaluate when tracking movement disorders. Alumina simply captures short, repeatable at-home versions so trends are visible between visits.",howItWorks:["Choose a safe indoor space with at least a few meters of clear walking room.","Place the device in your pocket or hold it securely as guided.","Walk at a natural pace along a straight path when prompted.","Complete a short turning task and optional balance hold.","The full session takes about three to four minutes."],whatResultsShow:"You'll see cadence, step regularity, and turn quality summarized per session, plus a trend view across recent sessions. Reviewers commonly look for gradual changes in rhythm or turning smoothness that would be hard to notice in day-to-day walking.",conditionsUsedFor:["parkinsons-disease","multiple-sclerosis","movement-symptoms","concussion"],faqs:[{q:"Is a walking session safe if I have balance issues?",a:"Please only complete sessions in a safe environment, and skip the balance hold if you are at risk of falling. If you are unsure, ask your clinician 
26whether the walking task is appropriate for you."},{q:"How long does a session take?",a:"About three to four minutes end-to-end, including the short balance and turning tasks."},{q:"Should I use the same walking surface each time?",a:"Yes, when possible. A consistent surface, footwear, and route reduces variability so trends over time are easier to read."},{q:"Can I use it outdoors?",a:"You can, but wind, uneven ground, and traffic add variability. A consistent indoor space is usually a better fit for tracking trends."}]},{slug:"sit-to-stand-test",navLabel:"30-Second Sit-to-Stand Test",shortName:"30-second sit-to-stand test",title:"30-Second Sit-to-Stand Test on iPhone and iPad",tagline:"A guided chair-stand check for lower-body strength and endurance.",description:"The 30-Second Sit-to-Stand Test records how many complete chair stands you perform in 30 seconds, helping you track functional lower-body performance over time.",helps:"Standing from a chair combines lower-body strength, balance, coordination, and endurance. Repeating the same short test with a consistent setup can make gradual changes easier to describe and discuss with a care team.",examples:["A standardized 30-second chair-stand session","Manual repetition counting by default","Optional camera-assisted repetition counting","Repeat sessions using the same chair and setup"],audience:["People monitoring lower-body strength or mobility","People living with Parkinson's disease or multiple sclerosis","Caregivers and care teams reviewing movement trends"],icon:"chair",beta:!0,safetyNote:"Only perform this test when standing repeatedly is safe for you. Use a stable chair on a non-slip surface and have another person nearby if you may be at risk of falling. Do not force an arms-crossed setup if you need your hands to stand. Stop immediately for pain, dizziness, unusual shortness of breath, or unsteadiness, and ask a qualified clinician 
26whether the test is appropriate if you are unsure.",whatItMeasures:"The 30-Second Sit-to-Stand Test samples functional lower-body strength and endurance during a familiar movement: rising from a chair and sitting back down. Performance also depends on balance, coordination, joint comfort, chair height, and technique, so the result should be treated as a task-specific count rather than a diagnosis or a pure measure of muscle strength.",howItWorks:["Choose a stable, straight-backed chair on a non-slip surface and clear the surrounding area.","Set up your iPhone or iPad. Manual counting is the default; camera-assisted counting is optional.","Begin seated near the middle of the chair with your feet flat. Cross your arms only if you can stand safely without using your hands.","On the start cue, rise to a full standing position and sit back down as many times as you safely can in 30 seconds.","Repeat future sessions with the same chair, counting method, footwear, and setup so the results are easier to compare."],whatResultsShow:"Results show the number of complete stands recorded in 30 seconds and how that count changes across sessions. A single count does not diagnose a condition or determine fall risk. Look for patterns across comparable sessions, and note when pain, fatigue, medication timing, chair height, arm use, or counting method changed.",conditionsUsedFor:["movement-symptoms","parkinsons-disease","multiple-sclerosis"],faqs:[{q:"What does the 30-Second Sit-to-Stand Test measure?",a:"It records the number of complete chair stands performed in 30 seconds. The task reflects functional lower-body strength and endurance, while balance, coordination, joint comfort, chair height, and technique can also affect the result."},{q:"Do I have to keep my arms crossed?",a:"The standardized CDC protocol uses arms crossed over the chest. Do not use that position if you need your hands to stand safely. A modified attempt is not directly comparable with the standardized protocol, so document the setup and follow your clinician's guidance."},{q:"Does a lower count mean I am at risk of falling?",a:"Not by itself. The CDC publishes age- and sex-specific reference thresholds for a standardized clinical setup, but a single home result cannot determine fall risk or explain why performance changed. A clinician considers the test alongside history and other assessments."},{q:"Is the camera required?",a:"No. Manual counting is the default. Camera-assisted counting is optional while the feature is in beta. For cleaner trends, use the same counting method across sessions whenever possible."},{q:"What does beta mean for this assessment?",a:"The assessment is available to use, but its camera-assisted experience and presentation may continue to be refined. Treat results as personal tracking information and share questions or unexpected results with a qualified healthcare professional."}]},{slug:"reaction-and-processing-speed",navLabel:"Reaction & Processing Speed",shortName:"Reaction and processing speed",title:"Reaction & processing speed tests on iPhone and iPad",tagline:"Quick guided tasks for reaction time and consistency.",description:"Reaction and processing speed assessments use quick, guided tasks to help track response time, consistency, and processing-related performance over time.",helps:"Reaction time and processing speed are sensitive markers of cognitive change. Repeated, structured tasks make trends easier to recognize than one-off observations.",examples:["Simple reaction time tasks","Choice reaction tasks","Processing speed checks","Consistency over multiple trials"],audience:["People monitoring cognitive change","People tracking attention and processing","Caregivers supporting cognitive monitoring"],icon:"reaction",whatItMeasures:"Reaction time and processing speed are considered sensitive early indicators of cognitive change and post-concussion recovery. Simple reaction time reflects basic responsiveness; choice reaction time and multi-trial consistency add signal on attention, decision-making, and sustained processing. Together they build a lightweight, repeatable snapshot of cognitive tempo.",howItWorks:["Find a quiet spot and place the device on a stable surface.","Respond to on-screen targets as they appear during a short simple-reaction block.","Complete a choice-reaction block where the correct response depends on the target.","The app records timing and consistency across all trials.","Sessions take about two minutes and are designed to be repeated."],whatResultsShow:"Session summaries display mean reaction time, choice-reaction accuracy, and trial-to-trial consistency. Longer term, reviewers look for directional shifts and rising variability rather than any single fast or slow response.",conditionsUsedFor:["cognitive-change","memory-concerns","concussion","multiple-sclerosis","migraine"],faqs:[{q:"Why does consistency matter as much as raw speed?",a:"Rising variability between trials is often a more sensitive marker of cognitive change than a small shift in average reaction time."},{q:"Should I be well-rested before a session?",a:"Yes. Sleep, caffeine, stress, and time of day all influence reaction time. Running sessions under similar conditions makes trends easier to interpret."},{q:"Can I use this to track concussion recovery at home?",a:"Reaction and processing speed check-ins are commonly used alongside symptom logs during concussion recovery. Always follow your clinician's guidance and pair with the Eye-Brain Vision Check when relevant."},{q:"Is a slower reaction time a sign of a problem?",a:"Not on its own. Many everyday factors slow reaction time. Alumina helps you compare against your own baseline over time rather than a diagnostic threshold."}]},{slug:"visual-matching-tasks",navLabel:"Visual Matching Tasks",shortName:"Visual matching and cognitive tasks",title:"Visual matching and cognitive tasks on iPhone and iPad",tagline:"Visual recognition and simple c
26ognitive matching tasks.",description:"Shape matching, visual recognition, and simple cognitive tasks on iPhone and iPad help track visual processing consistency over time.",helps:"Visual recognition and matching are useful indicators of cognitive function. Repeating these tasks makes it easier to notice meaningful change.",examples:["Shape matching tasks","Visual recognition prompts","Pattern matching","Simple cognitive matching tasks"],audience:["People monitoring memory or cognitive concerns","People tracking visual processing","Caregivers supporting cognitive monitoring"],icon:"visual",whatItMeasures:"Visual matching tasks sample visual attention, pattern recognition, and working memory, cognitive functions that often shift alongside memory or processing changes. Because the tasks are visual rather than verbal, they can complement recall-based checks and offer a broader view of everyday cognitive function.",howItWorks:["The app presents a reference pattern or shape.","You select the matching option from a short list of candidates.","Difficulty adjusts gently to keep the task engaging without becoming stressful.","Sessions run for about two to three minutes.","Repeat regularly so results can be compared against your baseline."],whatResultsShow:"Summaries include match accuracy, response time, and consistency across the session. Reviewers look for gradual changes across weeks rather than reacting to any single session.",conditionsUsedFor:["memory-concerns","cognitive-change","dementia-related-concerns","concussion"],faqs:[{q:"Is this the same as a memory test?",a:"It's related but distinct. Visual matching leans more on attention and pattern recognition, while recall tasks focus on verbal or sequence memory. Using both gives a broader view of cognitive function."},{q:"Are the visuals accessible for people with low vision?",a:"The app uses high-contrast targets and supports iOS accessibility settings. If reduced vision makes the task difficult, share that context with your care team when reviewing results."},{q:"How long before I can see a trend?",a:"Most people find several weeks of consistent sessions gives enough data to see a stable baseline and identify meaningful shifts."},{q:"Does the app score my results against a norm?",a:"No. Alumina compares your results against your own recent range rather than a population norm; the focus is your personal trend line."}]},{slug:"low-contrast-vision",navLabel:"Low-Contrast Vision",shortName:"Low-contrast vision",title:"Low-contrast vision assessments on iPhone and iPad",tagline:"Guided low-contrast tasks to help track subtle visual changes.",description:"Guided on-screen tasks with reduced-contrast letters and shapes help track subtle changes in visual sensitivity over time.",helps:"Low-contrast visual changes can be an early indicator of neurologic shifts, particularly for people living with multiple sclerosis. Repeating short, structured tasks makes it easier to notice trends that everyday vision checks may miss.",examples:["Low-contrast letter recognition","Faded shape identification","Contrast sensitivity prompts","Repeated baseline check-ins"],audience:["People living with multiple sclerosis (MS)","People monitoring vision-related neurologic change","Caregivers tracking subtle visual shifts"],icon:"contrast",whatItMeasures:"Low-contrast letter acuity is a well-recognized marker of subtle visual pathway change and is used in MS clinical research and care to complement standard high-contrast acuity. Alumina's task samples letter identification at reduced contrast so that gradual shifts, often unnoticed in everyday vision, can be tracked across weeks and months.",howItWorks:["Sit in a well-lit room and hold the device at a comfortable, consistent distance.","Wear your usual glasses or contacts if you use them.","Identify letters as they appear at decreasing contrast levels.","Complete the session with each eye and both eyes together as guided.","Repeat weekly or on a schedule that fits your care plan."],whatResultsShow:"You'll see a per-eye contrast score and how it compares with your recent range. Reviewers look for meaningful directional change rather than a single session, and often correlate results with fatigue, temperature, or MS relapse history.",conditionsUsedFor:["multiple-sclerosis","migraine","concussion"],faqs:[{q:"Is this a replacement for an eye exam?",a:"No. Comprehensive eye care requires an in-person examination by a qualified professional. Alumina supports at-home tracking of contrast sensitivity trends and does not diagnose eye disease."},{q:"Why low contrast specifically?",a:"Standard eye charts test high-contrast acuity, which can remain normal even when subtle changes in the visual pathway are present. Low-contrast tasks are more sensitive to these changes, particularly in MS."},{q:"Should I run the test with each eye?",a:"Yes. Alternating between eyes and testing both together helps surface asymmetries that may be relevant to a clinical discussion."},{q:"Does room lighting matter?",a:"It matters a lot. Try to run the task in similar lighting each time so results stay comparable, and note any changes in setup at the end of the session."}]},{slug:"shape-tracing",navLabel:"Shape Tracing",shortName:"Shape tracing",title:"Shape tracing assessments on iPhone and iPad",tagline:"Guided tracing tasks for hand control, coordination, and visual-motor precision.",description:"Shape tracing assessments use guided on-screen tracing tasks to help track fine motor control, hand steadiness, and visual-motor coordination over time.",helps:"Tracing performance can reflect changes in coordination, steadiness, and visual-motor integration. Repeating the same guided shapes over time makes subtle changes easier to recognize than self-reporting alone.",examples:["Curved line tracing","Geometric shape tracing","Spiral and loop paths","Precision and steadiness tasks"],audience:["People living with multiple sclerosis (MS)","People monitoring tremor or coordination changes","Caregivers tracking fine motor consistency"],icon:"trace",whatItMeasures:"Shape tracing samples visual-motor integration: how accurately your hand can follow what your eye is guiding it to do. That combination is sensitive to changes in coordination, fine motor control, and in some conditions subtle cerebellar signal. The task complements pure tremor and tapping tasks by focu
26sing on control across a continuous path rather than a single action.",howItWorks:["Rest your hand and device on a stable surface.","Follow the on-screen path with your fingertip or stylus as guided.","Complete a mix of curved, geometric, and spiral shapes.","Session takes about two to three minutes.","Use the same hand and device orientation each time for comparable results."],whatResultsShow:"You'll see a path-deviation score per shape, plus a session summary against your recent range. Reviewers look for trends in precision and smoothness across weeks rather than reacting to a single tracing.",conditionsUsedFor:["multiple-sclerosis","essential-tremor","parkinsons-disease","movement-symptoms"],faqs:[{q:"Is a stylus required?",a:"No. A fingertip works well. If you already use a stylus regularly, using the same one each time will keep sessions comparable."},{q:"What does path deviation actually measure?",a:"It measures how far your traced path strays from the target shape. Rather than a diagnostic threshold, the score is best read against your own baseline over multiple sessions."},{q:"Can I switch hands between sessions?",a:"For clean trend data, keep the same hand and setup each time. If both hands are relevant, run separate sequences for each."},{q:"How is this different from tremor tasks?",a:"Tremor tasks focus on steadiness during holds and short drawings. Tracing focuses on visual-motor precision across a continuous path, which can capture coordination changes tremor tasks might miss."}]},{slug:"eye-brain-vision-check",navLabel:"Eye-Brain Vision Check",shortName:"Eye-brain vision check",title:"Eye-Brain Vision Check on iPhone and iPad",tagline:"A fast, non-diagnostic way to monitor visual, balance, and symptom changes after a possible concussion.",description:"Monitor how your eyes, balance, and symptoms respond to short guided tasks after a possible concussion. About two minutes per session.",helps:"After a bump, fall, or jolt, subtle visual and balance changes can be hard to track day to day. Repeating the same short check gives a clearer view of headache, dizziness, brain fog, and tracking confidence trends than memory alone — useful when comparing recovery sessions over time. Lower stress scores suggest less symptom or tracking stress; higher confidence scores mean the test data was more usable.",examples:["Smooth pursuit eye-tracking","Saccade (rapid eye movement) tasks","Vestibular-ocular reflex check","Visual motion sensitivity task","Symptom check-in (headache, dizziness, nausea, brain fog)"],audience:["People monitoring symptoms after a possible concussion or mild TBI","Athletes and parents tracking post-impact recovery at home","Care teams reviewing symptom and tracking trends between visits"],icon:"eyeBrain",safetyNote:"Not for emergencies. Seek urgent medical care for severe or worsening symptoms, repeated vomiting, confusion, seizure, loss of consciousness, weakness, new vision loss, double vision, or significant neck pain after an impact.",whatItMeasures:"The Eye-Brain Vision Check samples the oculomotor and vestibular systems commonly affected by concussion and mild TBI: smooth pursuit (following a moving target), saccades (rapid eye jumps), the vestibular-ocular reflex (VOR), and visual motion sensitivity. These domains are the same ones clinicians evaluate with in-office tools like VOMS-style assessments. A paired symptom check-in captures headache, dizziness, nausea, and brain fog alongside the visual data.",howItWorks:["Find a quiet spot and hold the device at a comfortable distance.","Follow the on-screen target with your eyes as it moves smoothly across the screen.","Complete short saccade and vestibular-ocular reflex prompts as guided.","Rate current symptoms (headache, dizziness, nausea, brain fog).","Full session takes about two minutes."],whatResultsShow:"You'll see a per-domain stress score, a data-quality confidence score, and a symptom summary. Lower stress suggests less symptom or tracking stress during that session; higher confidence means the underlying data was more usable. Reviewers compare sessions across recovery to spot directional trends.",conditionsUsedFor:["concussion","migraine"],faqs:[{q:"Can this diagnose a concussion?",a:"No. Alumina Health is not a medical device and does not diagnose or rule out a concussion. It supports at-home tracking of visual, vestibular, and symptom trends during recovery, always alongside a clinician's guidance."},{q:"When should I seek urgent care instead of tracking at home?",a:"Seek urgent medical care for severe or worsening symptoms, repeated vomiting, confusion, seizure, loss of consciousness, weakness, new vision loss, double vision, or significant neck pain after an impact."},{q:"How often should I run the check?",a:"Follow your clinician's guidance. In post-concussion recovery, a common pattern is once daily during the first week, then tapering as symptoms improve."},{q:"What do the stress and confidence scores mean?",a:"Lower stress suggests fewer symptoms triggered during the session. Higher confidence means the eye-tracking data was more consistent and usable; a low confidence score usually points to setup issues rather than a clinical finding."},{q:"Can athletes use this for return-to-play decisions?",a:"Alumina is not a return-to-play decision tool. Return-to-play decisions must be made by a qualified clinician. The app can help capture recovery trends to bring into that conversation."}]}],Rd=[{slug:"parkinsons-disease",name:"Parkinson's Disease",navLabel:"Parkinson's Disease",alternateName:"PD",icd10:"G20",tagline:"Track tremor, movement, and cognition between visits.",title:"Parkinson's Disease support and tracking | Alumina Health",description:"Guided iPhone and iPad assessments help people with Parkinson's disease and their caregivers track tremor, movement, and cognitive changes over time.",overview:"Parkinson's disease is a progressive neurologic condition that affects movement, coordination, and, over time, aspects of cognition. Day-to-day changes can be subtle, which makes structured tracking valuable for patients, caregivers, and care teams.",signs:["Resting tremor in hands or fingers","Stiffness or reduced range of motion","Slower movement (bradykinesia)","Changes in gait, balance, or posture","Smaller handwriting or reduced fine motor control"],howAluminaHelps:"Repeating the same guided tasks over weeks and months helps surface trends that are easy to miss in everyday life, including changes in tremor steadiness, tapping rhythm, walking, chair-stand performance, and reaction time.",relatedAssessments:["tremor-and-hand-control","tapping-and-coordination","walking-and-movement","sit-to-stand-test","reaction-and-processing-speed"],audience:["People living with Parkinson's","Caregivers and family members","Care teams looking for structured between-visit data"],whatItIs:"Parkinson's disease is a progressive movement disorder caused by a gradual loss of dopamine-producing neurons in a region of the brain called the substantia nigra. Because dopamine plays a central role in coordinating smooth, purposeful movement, its decline produces the characteristic motor signs of Parkinson's: tremor at rest, stiffness (rigidity), slowne
26ss of movement (bradykinesia), and postural instability. Non-motor features are common as well, including changes in sleep, mood, sense of smell, and, over time, aspects of cognition. Parkinson's is typically diagnosed clinically by a neurologist, often a movement-disorders specialist, and is managed with a combination of medication, exercise, and multidisciplinary support.",whenToSeekCare:["New or rapidly worsening weakness, numbness, or difficulty speaking","A sudden fall or head injury","New confusion, hallucinations, or sudden change in behavior","Signs of medication side effects such as severe dizziness or fainting","Any symptom your care team has told you to call about"],livingWith:["Parkinson's is highly variable from person to person. Symptoms often fluctuate through the day around medication timing, sleep, stress, and activity — the well-known 'on' and 'off' periods. Tracking short, guided sessions at consistent times helps make those patterns visible instead of relying on memory alone.","Care teams typically emphasize a combination of medication, regular exercise (especially aerobic and balance-focused activity), and support from occupational and speech therapists as symptoms evolve. Bringing longitudinal, patient-reported data into visits can help ground medication and lifestyle decisions in real day-to-day performance rather than a single snapshot in clinic."],relatedConditions:["essential-tremor","movement-symptoms","cognitive-change"],faqs:[{q:"Is Alumina Health approved to diagnose Parkinson's?",a:"No. Alumina Health is not a medical device and cannot diagnose Parkinson's or any other condition. Diagnosis requires a clinical evaluation, typically by a neurologist. Alumina helps track motor and cognitive trends between visits."},{q:"How is Parkinson's tremor different from essential tremor?",a:"Parkinson's tremor is often most noticeable at rest and tends to improve during purposeful movement, while essential tremor typically appears during action such as writing or holding a cup. A clinician's exam is the reliable way to distinguish them."},{q:"Can I use the app to track 'on' and 'off' medication windows?",a:"Yes. Running the same tapping, tremor, or walking task at consistent times relative to your medication schedule makes it easier to see how performance shifts across dose cycles over weeks."},{q:"Is exercise really important with Parkinson's?",a:"Regular exercise is strongly emphasized in Parkinson's care and is associated with better symptom management and quality of life. Talk with your care team about the type and intensity that is safe and appropriate for you."}]},{slug:"essential-tremor",name:"Essential Tremor",navLabel:"Essential Tremor",alternateName:"ET",icd10:"G25.0",tagline:"Monitor tremor steadiness and fine motor control.",title:"Essential Tremor tracking and support | Alumina Health",description:"Guided tremor and hand-control assessments on iPhone and iPad help people with essential tremor track steadiness and fine motor control over time.",overview:"Essential tremor is a common movement disorder that causes involuntary, rhythmic shaking, most often in the hands. Severity can fluctuate, so consistent tracking helps separate everyday variation from real change.",signs:["Shaking in hands during action (writing, eating, holding)","Tremor that worsens with stress or fatigue","Difficulty with fine motor tasks","Voice or head tremor in some cases"],howAluminaHelps:"Guided spiral drawing, line tracing, and steadiness tasks make it easier to see how tremor is trending, not just how it feels on a given day.",relatedAssessments:["tremor-and-hand-control","tapping-and-coordination"],audience:["People living with essential tremor","Caregivers helping monitor day-to-day change","Care teams reviewing tremor patterns over time"],whatItIs:"Essential tremor (ET) is one of the most common movement disorders. It causes involuntary, rhythmic shaking, most often in the hands and arms, and typically appears during action, such as writing, eating, holding a cup, or reaching for an object, rather than at rest. Voice and head tremor can also occur. ET is generally slowly progressive and, unlike Parkinson's disease, is not caused by loss of dopamine neurons. It often runs 
26in families and can be diagnosed clinically by a neurologist. Treatments range from lifestyle strategies to medication and, in select cases, procedural options.",whenToSeekCare:["Sudden onset or rapid worsening of tremor","Tremor accompanied by weakness, numbness, or loss of coordination","Tremor that becomes disabling for daily tasks","New tremor at rest (rather than with action)"],livingWith:["Because tremor amplitude fluctuates with caffeine, sleep, stress, medication timing, and cold hands, a single measurement rarely tells the full story. Consistent short check-ins on steadiness and drawing precision give a much clearer picture of whether tremor is stable, improving, or worsening over time.","Many people manage essential tremor with lifestyle adjustments alongside clinician-guided treatment. Bringing longitudinal tracking data to visits helps clinicians consider medication timing, dose adjustments, or referrals with more day-to-day context."],relatedConditions:["parkinsons-disease","movement-symptoms","multiple-sclerosis"],faqs:[{q:"Is essential tremor the same as Parkinson's disease?",a:"No. Essential tremor typically appears during action and is not caused by dopamine loss, while Parkinson's tremor is often most noticeable at rest. A clinician's evaluation is the reliable way to tell them apart."},{q:"Can Alumina Health tell me how severe my tremor is?",a:"It can help you track how your steadiness and drawing precision change over time, but severity ratings and clinical decisions belong with your care team."},{q:"What lifestyle factors can affect tremor?",a:"Caffeine, fatigue, stress, cold temperatures, and certain medications can all increase tremor amplitude. Noting these at the start of a session helps put a shakier day in context."},{q:"How often should I run a tremor check-in?",a:"A common starting cadence is once or twice a week at consistent times, adjusted based on what your care team finds most useful."}]},{slug:"multiple-sclerosis",name:"Multiple Sclerosis",navLabel:"Multiple Sclerosis (MS)",alternateName:"MS",icd10:"G35",tagline:"Track vision, coordination, and cognition between visits.",title:"Multiple Sclerosis (MS) tracking | Alumina Health",description:"Guided iPhone and iPad assessments help people with multiple sclerosis (MS) track changes in vision, coordination, walking, and cognition over time.",overview:"Multiple sclerosis (MS) can affect vision, movement, coordination, and cognition in ways that vary from day to day. Short, repeatable assessments help separate everyday fluctuation from meaningful change and support more grounded conversations with care teams.",signs:["Subtle changes in low-contrast or color vision","Numbness, tingling, or weakness in limbs","Balance, coordination, or gait changes","Fatigue and changes in processing speed","Difficulty with fine motor tasks or handwriting"],howAluminaHelps:"Guided low-contrast vision, shape tracing, walking, chair-stand, tapping, and reaction tasks build a longitudinal view of MS-relevant changes that are easy to miss in everyday life.",relatedAssessments:["low-contrast-vision","shape-tracing","walking-and-movement","sit-to-stand-test","tapping-and-coordination","reaction-and-processing-speed"],audience:["People living with multiple sclerosis (MS)","Care partners and family members","Care teams looking for structured between-visit data"],whatItIs:"Multiple sclerosis (MS) is an immune-mediated neurologic condition in which the immune system damages the protective myelin coating around nerve fibers in the brain, spinal cord, and optic nerves. Because those pathways are involved in nearly every function, MS can produce a wide and shifting mix of symptoms: vision changes, numbness or weakness in the limbs, coordination and balance changes, fatigue, and shifts in processing speed. MS is typically classified into relapsing and progressive forms, and is managed with disease-modifying therapies, symptomatic treatment, and rehabilitation, guided by a neurologist with MS expertise.",whenToSeekCare:["New or worsening weakness, numbness, or vision loss","New difficulty walking, severe balance loss, or falls","Symptoms that may represent an MS relapse per your care plan","Signs of infection during immune-modulating therapy","Any symptom your MS care team has told you to call about"],livingWith:["Because MS symptoms fluctuate with heat, fatigue, sleep, and stress, isolated observations can be misleading. Short repeat check-ins on low-contrast vision, shape tracing, tapping rhythm, walking, and reaction speed build a longitudinal view that is far more informative than any single session.","Care partners often notice subtle changes first. Sharing structured trend summaries with an MS care team can help ground conversations about therapy response, rehabilitation referrals, or symptomatic treatment."],relatedConditions:["movement-symptoms","cognitive-change","migraine"],faqs:[{q:"Can Alumina Health detect an MS relapse?",a:"No. Only a clinician can evaluate whether new or worsening symptoms represent a relapse. Alumina helps track trends over time so shifts are easier to notice and describe when you talk with your care team."},{q:"Why does low-contrast vision matter in MS?",a:"Low-contrast letter acuity is a well-recognized marker of subtle visual pathway change and is used in MS research and care to complement standard high-contrast eye charts, which can remain normal even when the pathway is affected."},{q:"Do heat and fatigue really affect symptoms?",a:"Yes. Heat sensitivity (sometimes called Uhthoff's phenomenon) and fatigue can transiently worsen MS symptoms. Noting these factors at check-in helps put a difficult session in context."},{q:"Is the app safe to use during an active relapse?",a:"Focus first on communicating with your care team. If your clinician approves, gentle at-home tracking can add useful context; skip any task that feels unsafe (for example, the balance hold in walking) during a symptomatic period."}]},{slug:"memory-concerns",name:"Memory Concerns",navLabel:"Memory Concerns",icd10:"R41.3",tagline:"Track recall, attention, and cognitive consistency.",title:"Memory concerns tracking | Alumina Health",description:"Track memory, recall, and attention with guided iPhone and iPad assessments designed for people noticing memory changes and the caregivers supporting them.",overview:"Memory changes can be hard to describe in the moment. Repeating a structured asse
26ssment over time gives patients, caregivers, and clinicians a clearer picture than recollection alone.",signs:["Forgetting recent conversations or appointments","Misplacing items more often than usual","Difficulty recalling names or words","Trouble following multi-step instructions"],howAluminaHelps:"Guided recall, attention, and processing tasks build a consistent record of cognitive performance that you can review and bring to a care discussion.",relatedAssessments:["memory-and-recall","reaction-and-processing-speed","visual-matching-tasks"],audience:["People noticing changes in their own memory","Caregivers tracking a loved one's cognition","Anyone preparing for a care discussion about memory"],whatItIs:"Memory concerns cover a wide range of experiences, from occasional forgetfulness that many adults notice with age, to more persistent changes that may prompt a clinical evaluation. Not every memory change reflects a progressive condition; medications, sleep, mood, stress, thyroid issues, and other reversible factors can all affect memory. When memory changes are new, worsening, or interfer
26ing with day-to-day function, they warrant a conversation with a primary care clinician or neurologist, who can order the right evaluation and rule in or out treatable causes.",whenToSeekCare:["Memory changes that interfere with daily tasks or work","Getting lost in familiar places","Difficulty managing finances, medications, or appointments","Sudden confusion, disorientation, or personality change","Concerns about safety at home or while driving"],livingWith:["The most useful thing many people can do early is to build a consistent, structured record of memory and attention over time. That record helps separate everyday variability (a bad night's sleep, stress, a new medication) from a real directional trend, and gives a clinician far more to work with than a single office visit.","Caregivers often notice subtle changes first. Working together on short weekly sessions, with a light touch of encouragement rather than pressure, tends to produce the most useful data and the least stress."],relatedConditions:["dementia-related-concerns","cognitive-change"],faqs:[{q:"Are memory changes always a sign of dementia?",a:"No. Many memory changes are related to sleep, mood, medication, stress, or reversible medical conditions. A clinical evaluation is the reliable way to sort through possible causes."},{q:"How is Alumina Health different from a doctor's memory test?",a:"In-clinic memory testing is diagnostic and interpreted by trained clinicians. Alumina is a tracking tool, designed to help you build a longitudinal, patient-reported record of memory and attention over time."},{q:"How often should I check in?",a:"A weekly session at a consistent time of day is a common starting cadence and usually enough to see stable trends within a few weeks."},{q:"Should I share results with my clinician?",a:"Yes. Longitudinal summaries give clinicians additional context beyond a single in-office snapshot. Always follow their guidance for interpretation."}]},{slug:"dementia-related-concerns",name:"Dementia-Related Concerns",navLabel:"Dementia-Related Concerns",alternateName:"Dementia (including Alzheimer's disease)",icd10:"F03.90",tagline:"Structured cognitive tracking for dementia and Alzheimer's, for families and care teams.",title:"Dementia & Alzheimer's tracking | Alumina Health",description:"Guided memory, attention, and visual matching tasks on iPhone and iPad help families track dementia and Alzheimer's-related cognitive changes.",overview:"Cognitive changes related to dementia often unfold gradually. Structured, repeatable assessments help capture trends so that care decisions are based on more than memory and impression. Alzheimer's disease is the most common form of dementia, and often shows up first as gradual changes in memory, attention, or familiar routines.",signs:["Memory loss that disrupts daily life (a common early Alzheimer's sign)","Repeated questions or stories","Increasing difficulty with familiar tasks","Disorientation in time or place","Changes in judgment, attention, or planning"],howAluminaHelps:"Caregivers can support consistent assessment sessions and keep a longitudinal record of recall, attention, and visual matching performance — useful for families tracking Alzheimer's-related changes — to share with clinicians.",relatedAssessments:["memory-and-recall","visual-matching-tasks","reaction-and-processing-speed"],audience:["Families navigating a recent diagnosis","Families navigating an Alzheimer's diagnosis","Caregivers supporting a loved one over time","Care teams looking for between-visit cognitive data"],whatItIs:"Dementia is not a single disease but a general term for a decline in cognitive abilities severe enough to interfere with daily life. Alzheimer's disease is the most common cause of dementia and typically begins with gradual changes in memory and, over time, attention, language, judgment, and familiar routines. Other causes include vascular dementia, Lewy body dementia, and frontotemporal disorders, each with a somewhat different pattern of symptoms and progression. A dementia diagnosis is made clinically, usually by a primary care clinician or neurologist, and involves ruling out reversible causes such as medication effects, thyroid disease, or vitamin deficiencies.",whenToSeekCare:["Sudden or rapid cognitive change (over days to a few weeks)","New confusion accompanied by fever, weakness, or difficulty speaking","Safety concerns at home, while driving, or with medications","Wandering or getting lost in familiar places","Significant changes in mood, personality, or behavior"],livingWith:["Living well with dementia is possible, especially when families, caregivers, and care teams can align around consistent routines, supportive environments, and clear communication. Structured cognitive tracking can help families notice meaningful shifts earlier, without turning everyday interactions into a test.","Caregiver wellbeing matters just as much as tracking. Building in respite, connecting with local support programs, and using tools like Alumina Health to reduce the mental load of remembering everything are all part of sustainable care."],relatedConditions:["memory-concerns","cognitive-change","caregiver-support"],faqs:[{q:"Is Alzhe
26imer's the same as dementia?",a:"Alzheimer's disease is the most common cause of dementia, but not the only one. Dementia is the umbrella term for cognitive decline that interferes with daily life; Alzheimer's is a specific underlying disease."},{q:"Can Alumina Health be used with a person who has been diagnosed with dementia?",a:"Yes, with caregiver support. Short, guided sessions in a calm environment tend to work best. Skip any session that causes distress and focus on consistency over frequency."},{q:"How can tracking help our family?",a:"Longitudinal records help everyone, family, primary care, and specialists, ground conversations in real trend data instead of memory and impression, which can be especially valuable across long stretches between visits."},{q:"Are there reversible causes of memory changes we should rule out first?",a:"Yes. Medication effects, sleep problems, mood disorders, thyroid issues, and vitamin deficiencies can all affect cognition and are typically evaluated as part of a thorough workup."}]},{slug:"cognitive-change",name:"Cognitive Change",navLabel:"Cognitive Change",icd10:"R41.89",tagline:"Notice subtle shifts in attention and processing speed.",title:"Cognitive change tracking | Alumina Health",description:"Track subtle cognitive changes, attention, reaction time, and processing speed, with short guided assessments on iPhone and iPad.",overview:"Cognitive change can show up first as small shifts in attention, processing speed, or consistency. Repeating quick guided tasks makes those shifts easier to recognize early.",signs:["Slower processing of new information","Reduced attention span on tasks","More effort needed for everyday decisions","Variability in performance from day to day"],howAluminaHelps:"Short, repeatable reaction and processing tasks build a baseline that makes meaningful change easier to see.",relatedAssessments:["reaction-and-processing-speed","memory-and-recall","visual-matching-tasks"],audience:["People monitoring early cognitive change","Caregivers tracking a loved one's performance","Care teams reviewing trends over time"],whatItIs:"Cognitive change is a broad term for shifts in attention, processing speed, memory, or executive function that fall short of a formal diagnosis. Many adults experience mild changes with age, sleep loss, stress, or after illnesses like COVID-19. Others notice cognitive shifts related to medication changes, mood, or an underlying neurologic condition. The goal of tracking is not to diagnose, but to build a consistent record that helps you and your care team see whether change is stable, transient, or trending in a direction that deserves attention.",whenToSeekCare:["New confusion, disorientation, or personality change","Cognitive changes that interfere with work or daily tasks","Symptoms following a head injury, stroke-like event, or new medication","Any cognitive change your clinician has told you to report"],livingWith:["Cognitive performance is highly context-dependent. Sleep, hydration, mood, caffeine, exercise, and stress all influence day-to-day results. The most useful tracking approach is short, consistent sessions under similar conditions so trends stand out from everyday noise.","For many people, cognitive change is manageable with lifestyle strategies like consistent sleep, regular exercise, cognitively engaging activities, and, when appropriate, medical treatment for underlying contributors like sleep apnea or depression. Longitudinal tracking supports those conversations with real data."],relatedConditions:["memory-concerns","dementia-related-concerns","concussion"],faqs:[{q:"Is cognitive change always something to worry about?",a:"No. Many everyday factors, sleep, stress, mood, medication, illness, can produce short-term cognitive shifts. Tracking helps distinguish transient dips from sustained trends."},{q:"How long before trends become meaningful?",a:"A few weeks of consistent sessions is usually enough to establish a baseline and start noticing directional change."},{q:"Can 'brain fog' after illness be tracked here?",a:"Reaction, processing speed, and visual matching check-ins are commonly used to track brain-fog-type symptoms over time. Always pair with clinical guidance for interpretation."},{q:"Does the app diagnose mild cognitive impairment (MCI)?",a:"No. MCI is a clinical diagnosis. Alumina helps build the longitudinal record that a clinician can consider alongside their own evaluation."}]},{slug:"movement-symptoms",name:"Movement Symptoms",navLabel:"Movement Symptoms",icd10:"R26.9",tagline:"Capture changes in walking, balance, and coordination.",title:"Movement symptom tracking | Alumina Health",description:"Track walking, balance, coordination, and tapping rhythm with guided iPhone and iPad assessments for people monitoring movement changes.",overview:"Movement symptoms can be hard to describe and easy to underestimate. Capturing structured walking, tapping, and coordination sessions over time helps surface trends.",signs:["Changes in gait, balance, or posture","Stiffness or reduced range of motion","Slower or less consistent movement","Reduced coordination or rhythm"],howAluminaHelps:"Guided walking, sit-to-stand, and tapping sessions build a longitudinal view of mobility, functional lower-body performance, and coordination that's hard to capture in a single visit.",relatedAssessments:["walking-and-movement","sit-to-stand-test","tapping-and-coordination","tremor-and-hand-control"],audience:["People monitoring gait, balance, or coordination","People with Parkinson's or related conditions","Caregivers supporting mobility tracking"],whatItIs:"'Movement symptoms' is a broad, non-diagnostic term for changes in walking, balance, coordination, or rhythm that don't yet fit a specific label. They can be related to a diagnosed condition (like Parkinson's, essential tremor, or MS), a side effect of medication, deconditioning, joint or musculoskeletal issues, or an early neurologic change that warrants evaluation. Tracking short, guided walking, tapping, and tremor sessions builds a longitudinal record that helps a clinician sort through possible contributors.",whenToSeekCare:["A sudden fall or new difficulty walking","New weakness, numbness, or difficulty speaking","Loss of coordination that appears suddenly","Movement changes after a head injury","Any symptom your clinician has told you to report"],livingWith:["Movement symptoms often shift with fatigue, medication timing, sleep, and stress. Repeating the same walking, tapping, and tremor tasks under similar conditions makes a stable trend far easier to see than isolated observations.","For many people, physical therapy, targeted exercise, and adjustments to medication or environment produce meaningful improvements. Structured tracking data supports those decisions and helps make progress visible."],relatedConditions:["parkinsons-disease","essential-tremor","multiple-sclerosis"],faqs:[{q:"Do I need a diagnosis to use these assessments?",a:"No. Many people begin tracking to help clarify what they're experiencing before or during a clinical evaluation."},{q:"Is a single session enough to see a pattern?",a:"No. Trends emerge across repeated sessions. Aim for consistent setup and timing so week-over-week comparisons are meaningful."},{q:"Can these tasks help track physical therapy progress?",a:"Yes. Walking, tapping, and coordination check-ins can complement PT progress notes with structured at-home data."},{q:"Should I stop the walking task if I feel unsteady?",a:"Yes, always prioritize safety. Complete tasks only in a safe environment and skip anything that feels unsafe."}]},{slug:"caregiver-support",name:"Caregiver Support",navLabel:"Caregiver Support",tagline:"Tools and structure to help caregivers track what matters.",title:"Caregiver support and tracking tools | Alumina Health",description:"Alumina Health gives caregivers a structured way to track brain and movement changes for a loved one, using guided iPhone and iPad assessments.",overview:"Caregivers often notice subtle changes first, but those observations are hard to share without structure. Alumina Health turns everyday observation into a consistent record you can review and share.",signs:["Day-to-day variability that's hard to describe","Changes that feel meaningful but are hard to quantify","Difficulty preparing for clinical visits","Wanting more than memory to back up concerns"],howAluminaHelps:"Caregivers can support short, repeatable assessment sessions and keep a longitudinal view of memory, movement, and reaction performance to bring into care discussions.",relatedAssessments:["memory-and-recall","tremor-and-hand-control","walking-and-movement","reaction-and-processing-speed"],audience:["Family caregivers","Professional caregivers","Anyone supporting a loved one's brain or movement health"],whatItIs:"Caregivers, whether family members, friends, or professionals, are often the first to notice subtle changes in a loved one's memory, movement, or mood. Those observations are valuable, but they can be hard to describe with the precision clinicians need. Structured tracking tools give caregivers a way to translate everyday observation into a consistent record that supports clinical conversations without adding significant burden.",whenToSeekCare:["A sudden change in cognition, behavior, or movement","Signs of a possible stroke (facial droop, arm weakness, speech difficulty)","Falls, injuries, or new safety concerns at home","Signs of depression or thoughts of self
26-harm","Anything your care team has told you to call about"],livingWith:["Sustainable caregiving means protecting your own wellbeing too. Building in respite, connecting with local caregiver support programs, and using tools that reduce the mental load of remembering everything are all part of caring well over time.","Short, consistent tracking sessions, ideally at a calm time of day, tend to produce better data and less friction than trying to capture everything. The goal is a useful signal, not a comprehensive record."],relatedConditions:["memory-concerns","dementia-related-concerns","movement-symptoms"],faqs:[{q:"Should the caregiver or the person being cared for complete the sessions?",a:"The person being tracked should complete the tasks themselves so results reflect their own performance. A caregiver can help with setup, reminders, and a supportive presence."},{q:"How can I share results with our clinician?",a:"Bringing a printed or on-screen summary of recent sessions to a visit is a simple way to ground the conversation in real trend data."},{q:"What if my loved one gets frustrated with the tasks?",a:"Skip any session that causes distress. Consistency matters more than frequency, and a calm, low-pressure environment produces the most useful results."},{q:"Is there a caregiver-specific view in the app?",a:"The app is designed so caregivers can help set up and review sessions with the person they support. Reach out via the contact page for feedback on features you'd find useful."}]},{slug:"concussion",name:"Concussion",navLabel:"Concussion",alternateName:"mTBI",icd10:"S06.0",tagline:"Monitor visual, balance, and symptom changes during concussion recovery.",title:"Concussion recovery tracking and support | Alumina Health",description:"Track visual, balance, and symptom changes after a possible concussion or mild TBI with short guided iPhone and iPad assessments.",overview:"A concussion is a mild traumatic brain injury that can follow a bump, fall, or jolt to the head or body. Symptoms like headache, dizziness, brain fog, and visual discomfort often shift day to day, which makes consistent, structured tracking useful during recovery. Alumina Health supports monitoring, not diagnosis: it does not confirm or rule out a concussion, but it helps surface trends across repeated sessions so changes are easier to recognize and discuss with a care team.",signs:["Headache or pressure in the head","Dizziness or balance problems","Nausea or visual discomfort","Brain fog, slowed thinking, or trouble concentrating","Sensitivity to light, motion, or screens","Fatigue that worsens with cognitive or physical effort"],howAluminaHelps:"The Eye-Brain Vision Check walks through smooth pursuit, saccades, vestibular-ocular reflex, and visual motion sensitivity tasks in about two minutes, alongside a symptom check-in. Repeating the same short session with a consistent setup makes recovery trends easier to read than memory alone.",relatedAssessments:["eye-brain-vision-check","reaction-and-processing-speed","walking-and-movement","visual-matching-tasks"],audience:["People recovering from a possible concussion or mild TBI","Athletes and parents tracking post-impact recovery at home","Care teams reviewing symptom and tracking trends between visits"],whatItIs:"A concussion is a mild traumatic brain injury (mTBI) caused by a bump, blow, or jolt to the head or body that produces a rapid change in how the brain functions. It does not require loss of consciousness. Common symptoms include headache, dizziness, nausea, sensitivity to light or sound, brain fog, difficulty concentrating, and sleep disturbance. Most people recover within days to weeks with appropriate rest and a gradual return to activity, but a subset experience prolonged symptoms and benefit from more structured monitoring and care.",whenToSeekCare:["Loss of consciousness or a seizure after a head impact","Repeated vomiting","Worsening headache, confusion, or slurred speech","Weakness, numbness, or new coordination problems","Significant neck pain, new vision loss, or double vision","Any symptom that is severe, worsening, or concerns you"],livingWith:["Concussion recovery is rarely linear. Symptoms often fluctuate day to day with sleep, screen time, cognitive effort, and physical activity. Short, consistent Eye-Brain Vision Check sessions paired with a symptom log tend to reveal a clearer recovery trajectory than trying to remember how each day felt.","Return-to-work, return-to-learn, and return-to-play decisions belong with a qualified clinician. Bringing longitudinal tracking data to those discussions can help ground decisions in objective trend information alongside symptom self-report."],relatedConditions:["migraine","cognitive-change","movement-symptoms"],faqs:[{q:"Can Alumina Health confirm or rule out a concussion?",a:"No. Diagnosis of a concussion is a clinical decision. Alumina supports symptom and visual/vestibular tracking during recovery but does not diagnose or rule out concussion."},{q:"How soon after an impact can I start using the app?",a:"Follow your clinician's guidance. Many people begin tracking as soon as symptoms are stable enough to complete a two-minute session without significant discomfort."},{q:"Is it safe to use screens during concussion recovery?",a:"Modern guidance is to gradually reintroduce cognitive and visual activity as tolerated rather than complete rest. A brief, guided session with clear pacing is very different from prolonged screen time."},{q:"Can this be used for return-to-play decisions?",a:"Alumina is not a return-to-play decision tool. Those decisions must be made by a qualified clinician. The app can help capture recovery trends to bring into that conversation."}]}];Rd.push({slug:"migraine",name:"Migraine",navLabel:"Migraine",alternateName:"Migraine headache",icd10:"G43",tagline:"Log attacks, spot triggers, and track symptom trends over time.",title:"Migraine tracking and support | Alumina Health",description:"Log migraines, spot triggers, and track visual and vestibular symptoms over time with guided iPhone and iPad check-ins from Alumina Health.",overview:"Migraine is a neurologic condition marked by recurring attacks that vary in frequency, duration, and symptom profile, from headache and aura to light and sound sensitivity, nausea, and vestibular symptoms. Because attacks and triggers are easy to forget between visits, consistent logging surfaces patterns that are hard to see day to day.",signs:["Recurring moderate-to-severe headache attacks","Sensitivity to light, sound, or smell","Visual aura such as spots, zigzags, or blind spots","Nausea or vomiting during attacks","Dizziness or balance changes (vestibular symptoms)","Attacks triggered by sleep, stress, hormones, foods, or weather"],howAluminaHelps:"Alumina's migraine tracking combines a structured migraine diary with a baseline assessment and clear reporting so trends in frequency, severity, and triggers are easier to review. Perio
26dic visual sensitivity and vestibular symptom check-ins add objective signal alongside self-report, and a red-flag safety screening highlights sudden or unusual features to discuss with a clinician.",relatedAssessments:["low-contrast-vision","reaction-and-processing-speed"],audience:["People living with migraine or vestibular migraine","Caregivers helping track patterns and triggers","Care teams reviewing attack frequency and symptom trends between visits"],whatItIs:"Migraine is a neurologic condition characterized by recurring attacks of moderate-to-severe head pain, often accompanied by nausea, sensitivity to light and sound, and, in some people, visual aura or vestibular symptoms. Migraine involves changes in brain and blood-vessel activity and is influenced by genetics, hormones, sleep, stress, and environmental triggers. It is one of the most common neurologic conditions worldwide and is a leading cause of disability in adults. Migraine is a clinical diagnosis, typically made by a primary care clinician or neurologist based on the pattern and features of attacks, and is managed with a combination of acute treatments, preventive strategies, and lifestyle adjustments.",whenToSeekCare:["The 'worst headache of your life' or a sudden thunderclap headache","New neurologic symptoms: weakness, numbness, slurred speech, or vision loss","Headache with fever, stiff neck, rash, or confusion","Headache after a head injury","A significant change in your usual migraine pattern","Any red-flag feature your clinician has told you to call about"],livingWith:["Migraine patterns are highly individual, and small variables like sleep, meals, screen time, hormones, and weather can shift attack frequency and severity. A consistent diary combined with periodic visual sensitivity and vestibular check-ins builds the kind of longitudinal picture that makes preventive strategies and medication decisions much more grounded.","Care teams often iterate on preventive plans over months. Bringing structured trend data to visits, attack frequency, severity, duration, and likely triggers, gives clinicians far more to work with than trying to reconstruct the last few weeks from memory."],relatedConditions:["concussion","multiple-sclerosis","cognitive-change"],faqs:[{q:"Can Alumina diagnose migraine?",a:"No. Migraine is a clinical diagnosis. Alumina supports diary-based tracking and periodic visual and vestibular check-ins that can inform, but not replace, a clinician's evaluation."},{q:"What kinds of triggers can the diary help me spot?",a:"Common trackable triggers include sleep changes, meal timing, stress, hormonal cycles, weather shifts, screen exposure, and specific foods. Longitudinal tracking makes patterns easier to see than isolated observations."},{q:"What's the difference between migraine and vestibular migraine?",a:"Vestibular migraine features prominent dizziness or vertigo alongside typical migraine features. A neurologist or headache specialist can evaluate whether the pattern fits."},{q:"How is the red-flag safety screening different from a diagnosis?",a:"The screening highlights features that clinicians consider warning signs for other conditions and suggests you contact your care team. It does not make a diagnosis or rule anything in or out."},{q:"Should I keep tracking during a bad attack?",a:"No. Take care of yourself during an attack and log details when you feel able. Even a short entry after the fact adds useful signal to your longer-term trend."}]});function Ro(a){return Rd.find(s=>s.slug===a)}const j1=[{title:"Neurological Assessment at Home: What It Can and Cannot Tell You",metaTitle:"Neurological Assessment at Home | Alumina Health",description:"Learn what a neurological assessment covers, what can be tracked safely at home, and why home results cannot replace a clinician’s neurological exam.",slug:"neurological-assessment-at-home",category:"neurology",primaryKeyword:"neurological assessment",conditions:["neurology","cognitive-change","movement-symptoms"],assessments:["memory-and-recall","tapping-and-coordination","reaction-and-processing-speed"],assessmentLinks:[{anchor:"memory and recall assessment",slug:"memory-and-recall"}
26,{anchor:"tapping and coordination",slug:"tapping-and-coordination"}],articleLinks:[{anchor:"between-visit data",slug:"why-between-visit-data-matters-for-neurology"},{anchor:"symptom tracker",slug:"neurological-symptom-tracker"}],pageLinks:[{anchor:"guided assessment types",path:"/assessment-types"}],datePublished:"2026-07-26",dateModified:"2026-07-26",launchPriority:1,readingTimeMin:9,keyTakeaways:["A clinical neurological exam evaluates several nervous-system functions in context.","Home tasks can document a personal baseline but cannot identify the cause of a change.","Consistent setup and real-world examples make a home record easier to interpret.","Sudden or severe neurological symptoms require urgent medical evaluation."],faqs:[{q:"Can I perform a neurological assessment on myself at home?",a:"You can record symptoms and repeat simple guided tasks, but you cannot reproduce or interpret a complete clinical neurological examination on yourself. Use home results as descriptive information for a qualified clinician."},{q:"What does a clinician check during a neurological examination?",a:"The examination may include mental status, cranial nerves, strength, sensation, reflexes, coordination, balance, and walking. The exact components depend on the symptoms and medical history."},{q:"What should I write down with an at-home assessment result?",a:"Record the date, time, device, assistance, sleep, illness, medication timing, interruptions, and a concrete example of how the same ability felt in daily life."},{q:"When should neurological symptoms be treated as an emergency?",a:"Seek emergency help for sudden weakness or numbness, new trouble speaking, a sudden severe headache, seizure, loss of consciousness, or another abrupt and serious change."}],citations:[{label:"Neurological Exam",publisher:"MedlinePlus, U.S. National Library of Medicine",url:"https://medlineplus.gov/lab-tests/neurological-exam/"},{label:"Neurological Examinations",publisher:"Mayo Clinic",url:"https://www.mayoclinic.org/tests-procedures/neurological-exam/about/pac-20587319"},{label:"Patient-Generated Health Data Fact Sheet",publisher:"HealthIT.gov",url:"https://www.healthit.gov/sites/default/files/patient_generated_data_factsheet.pdf"}]},{title:"Cognitive Assessment vs. Cognitive Screening: Key Differences",metaTitle:"Cognitive Assessment vs. Screening | Alumina Health",description:"Compare cognitive screening, cognitive assessment, neuropsychological evaluation, and at-home tracking—including their purposes, limits, and next steps.",slug:"cognitive-assessment-vs-cognitive-screening",category:"cognitive-change",primaryKeyword:"cognitive assessment vs cognitive screening",conditions:["cognitive-change","memory-concerns","dementia-related-concerns"],assessments:["memory-and-recall","visual-matching-tasks"],articleLinks:[{anchor:"normal aging versus MCI",slug:"normal-aging-vs-mild-cognitive-impairment-vs-dementia"},{anchor:"memory test at home",slug:"memory-test-at-home"}],assessmentLinks:[{anchor:"memory and recall",slug:"memory-and-recall"},{anchor:"visual matching tasks",slug:"visual-matching-tasks"}],datePublished:"2026-07-26",dateModified:"2026-07-26",launchPriority:2,readingTimeMin:9,keyTakeaways:["Screening is a brief check for possible concern, not a diagnosis.","A broader assessment combines testing with history, function, and clinical judgment.","Neuropsychological evaluation provides detailed domain-level information when indicated.","At-home tracking can add longitudinal context but does not replace any clinical level."],faqs:[{q:"Is cognitive screening the same as a cognitive assessment?",a:"The terms are sometimes used loosely, but screening is generally a brief first check. A broader assessment considers more history, function, examination findings, and sometimes additional tests."},{q:"Can a normal cognitive screening result rule out a problem?",a:"No. A brief screen may miss subtle or domain-specific changes. Persistent concerns should still be discussed with a clinician 
26who can decide whether a more detailed evaluation is appropriate."},{q:"Why might someone be referred for neuropsychological testing?",a:"A detailed evaluation may be useful when the pattern is unclear, important decisions depend on understanding strengths and weaknesses, or screening and everyday function do not agree."},{q:"Where does repeated home cognitive tracking fit?",a:"It can document a personal pattern between visits and provide examples for discussion. It is not equivalent to a validated clinical screen, comprehensive assessment, or neuropsychological evaluation."}],citations:[{label:"Cognitive Testing",publisher:"MedlinePlus, U.S. National Library of Medicine",url:"https://medlineplus.gov/lab-tests/cognitive-testing/"},{label:"Assessing Cognitive Impairment in Older Patients",publisher:"National Institute on Aging",url:"https://www.nia.nih.gov/health/health-care-professionals-information/assessing-cognitive-impairment-older-patients"},{label:"Cognitive Screening Tests Versus Comprehensive Neuropsychological Test Batteries",publisher:"National Academy of Neuropsychology",url:"https://pubmed.ncbi.nlm.nih.gov/28334244/"}]},{title:"Memory Test at Home: What Results Can and Cannot Mean",metaTitle:"Memory Test at Home: Results and Limits | Alumina",description:"Understand what a memory test at home measures, why scores vary, how to build a useful baseline, and when memory changes deserve clinical evaluation.",slug:"memory-test-at-home",category:"memory-concerns",primaryKeyword:"memory test",conditions:["memory-concerns","cognitive-change","dementia-related-concerns"],assessments:["memory-and-recall"],assessmentLinks:[{anchor:"memory and recall task",slug:"memory-and-recall"}],articleLinks:[{anchor:"normal aging, MCI, and dementia",slug:"normal-aging-vs-mild-cognitive-impairment-vs-dementia"},{anchor:"caregiver tracking guide",slug:"caregiver-guide-to-tracking-cognitive-change"},{anchor:"cognitive test at home",slug:"cognitive-test-at-home"}],datePublished:"2026-07-26",dateModified:"2026-07-26",launchPriority:3,readingTimeMin:9,keyTakeaways:["A home memory test samples a narrow ability under specific conditions.","Repeated results are more useful than one score when setup stays consistent.","Memory concerns must be interpreted with function, health, sleep, mood, and medicines.","Persistent or safety-related change should be evaluated clinically."],faqs:[{q:"What is a home memory test actually measuring?",a:"It may sample immediate recall, delayed recall, recognition, learning across trials, or working memory. The exact result only applies to the task and conditions used."},{q:"Why can my memory-test score change from one day to another?",a:"Sleep, stress, pain, illness, distraction, hearing or vision, medication effects, device setup, and familiarity with the task can all influence performance."},{q:"Does a low online memory score mean dementia?",a:"No. A consumer result cannot diagnose dementia or determine its cause. A clinician evaluates the history, daily function, examination, and other possible contributors."},{q:"How should I share memory tracking with a healthcare professional?",a:"Bring a short trend summary, testing context, the original dates, and two or three concrete examples of changes in everyday tasks or independence."}],citations:[{label:"Memory Problems, Forgetfulness, and Aging",publisher:"National Institute on Aging",url:"https://www.nia.nih.gov/health/alzheimers-symptoms-and-diagnosis/do-memory-problems-always-mean-alzheimers-disease"},{label:"What Is Mild Cognitive Impairment?",publisher:"National Institute on Aging",url:"https://www.nia.nih.gov/health/memory-loss-and-forgetfulness/what-mild-cognitive-impairment"},{label:"Cognitive Testing",publisher:"MedlinePlus, U.S. National Library of Medicine",url:"https://medlineplus.gov/lab-tests/cognitive-testing/"}]},{title:"Cognitive Test at Home: Types, Limits, and Next Steps",metaTitle:"Cognitive Test at Home: Types and Limits | Alumina",description:"Explore cognitive test types for memory, attention, speed, language, and visual skills—and learn how to use at-home results without overinterpreting them.",slug:"cognitive-test-at-home",category:"cognitive-change",primaryKeyword:"cognitive test",conditions:["cognitive-change","memory-concerns","neurology"],assessments:["memory-and-recall","reaction-and-processing-speed","visual-matching-tasks"],articleLinks:[{anchor:"cognitive assessment versus screening",slug:"cognitive-assessment-vs-cognitive-screening"}
26,{anchor:"shape-matching tasks",slug:"shape-matching-tasks-and-cognitive-change"},{anchor:"memory test at home",slug:"memory-test-at-home"}],assessmentLinks:[{anchor:"reaction and processing speed",slug:"reaction-and-processing-speed"},{anchor:"visual matching",slug:"visual-matching-tasks"}],datePublished:"2026-07-26",dateModified:"2026-07-26",launchPriority:4,readingTimeMin:9,keyTakeaways:["Cognitive tests sample domains such as memory, attention, speed, language, and visuospatial skill.","No brief home test captures cognition as a whole or identifies a medical cause.","The best longitudinal record uses relevant tasks under consistent conditions.","Everyday function and clinical evaluation remain essential to interpretation."],faqs:[{q:"Which abilities can an at-home cognitive test sample?",a:"Depending on its design, a task may sample memory, attention, processing speed, executive function, language, or visuospatial performance. Most brief tools cover only part of that range."},{q:"Is there one best cognitive test for everyone?",a:"No. The appropriate test depends on the question, the person’s language and abilities, and whether the purpose is screening, detailed evaluation, or longitudinal tracking."},{q:"Can repeated cognitive testing make a score improve?",a:"Yes. Familiarity with instructions and task patterns can create practice effects. Improvement should be interpreted alongside session context and everyday function."},{q:"What if home cognitive results and daily experience do not agree?",a:"Share the disagreement with a clinician. A brief task may miss complex difficulties, while poor performance may reflect non-cognitive factors such as fatigue, vision, hearing, or device use."}],citations:[{label:"Cognitive Testing",publisher:"MedlinePlus, U.S. National Library of Medicine",url:"https://medlineplus.gov/lab-tests/cognitive-testing/"},{label:"Assessing Cognitive Impairment in Older Patients",publisher:"National Institute on Aging",url:"https://www.nia.nih.gov/health/health-care-professionals-information/assessing-cognitive-impairment-older-patients"},{label:"Practice Effects on Digital Cognitive Assessment Tools",publisher:"Alzheimer's & Dementia: Diagnosis, Assessment & Disease Monitoring",url:"https://pmc.ncbi.nlm.nih.gov/articles/PMC12412751/"}]},{title:"Reaction Time Test: What Results Mean and How to Track Change",metaTitle:"Reaction Time Test Results and Tracking | Alumina",description:"Learn what a reaction time test measures, why devices and daily factors affect results, and how to track response-time change without overinterpreting it.",slug:"reaction-time-test-results",category:"cognitive-change",primaryKeyword:"reaction time test",conditions:["cognitive-change","neurology","movement-symptoms"],assessments:["reaction-and-processing-speed"],assessmentLinks:[{anchor:"reaction and processing speed assessment",slug:"reaction-and-processing-speed"}],articleLinks:[{anchor:"between-visit data",slug:"why-between-visit-data-matters-for-neurology"},{anchor:"processing speed test",slug:"processing-speed-test"},{anchor:"concussion symptom tracking",slug:"how-to-track-concussion-symptoms-during-recovery"}],datePublished:"2026-07-26",dateModified:"2026-09-23",launchPriority:5,readingTimeMin:9,keyTakeaways:["Reaction time combines noticing a stimulus, deciding, and producing a response.","Hardware, software, input method, attention, fatigue, and motor ability affect results.","A personal multi-session trend is more defensible than one score or gaming benchmark.","Reaction-time results alone cannot diagnose neurological change."],faqs:[{q:"What does an online reaction time test measure?",a:"It measures elapsed time between a presented stimulus and a recorded response within that test. The result includes sensory processing, attention, decision demands, movement, and device latency."},{q:"Why is my reaction time different on a phone and computer?",a:"Screens, refresh rates, browsers, touch input, keyboards, mice, and operating-system timing can add different delays. For longitudinal tracking, use the same setup."},{q:"Should reaction time be judged by one average score?",a:"No. Review several trials and sessions, accuracy, early responses, variability, and context. One average can conceal errors or an unusual outlier."},{q:"Can slow reaction time identify a neurological disease?",a:"No. Slower performance has many possible explanations and is not disease-specific. A clinician must interpret persistent change with symptoms, function, examination, and medical history."}],citations:[{label:"Cognitive Test Scores Vary With Choice of Personal Digital Device",publisher:"Behavior Research Methods",url:"https://pmc.ncbi.nlm.nih.gov/articles/PMC8568735/"},{label:"Response Time Reduction Due to Retesting in Mental Speed Tests",publisher:"Psychological Test and Assessment Modeling",url:"https://pmc.ncbi.nlm.nih.gov/articles/PMC6480749/"},{label:"Practice Effects Associated With Repeated Assessment of a Clinical Test of Reaction Time",publisher:"Journal of Athletic Training",url:"https://pmc.ncbi.nlm.nih.gov/articles/PMC4080596/"}]},{title:"MoCA Test vs. At-Home Cognitive Assessments: Key Differences",metaTitle:"MoCA Test vs. At-Home Assessment | Alumina",description:"Compare the MoCA test with at-home cognitive tracking, including purpose, administration, interpretation, practice effects, and important limitations.",slug:"moca-test-vs-at-home-cognitive-assessment",category:"memory-concerns",primaryKeyword:"MoCA test",conditions:["memory-concerns","cognitive-change","dementia-related-concerns"],assessments:["memory-and-recall","visual-matching-tasks"],articleLinks:[{anchor:"cognitive assessment versus screening",slug:"cognitive-assessment-vs-cognitive-screening"}
26,{anchor:"memory test at home",slug:"memory-test-at-home"}],assessmentLinks:[{anchor:"memory and recall",slug:"memory-and-recall"}],datePublished:"2026-07-26",dateModified:"2026-08-03",launchPriority:6,readingTimeMin:8,keyTakeaways:["The MoCA is a copyrighted clinical screening instrument with standardized administration.","At-home tasks can document repeated personal performance but are not substitutes for the MoCA.","Neither a screening score nor a home trend independently establishes a diagnosis.","The purpose of testing should determine which tool and professional involvement are appropriate."],faqs:[{q:"Is the MoCA test available as a casual online self-test?",a:"The MoCA is copyrighted, and its official site controls access, administration guidance, training, and permissions. Unofficial reproductions should not be treated as valid administration."},{q:"Can an Alumina assessment replace a MoCA screening?",a:"No. Alumina provides non-diagnostic longitudinal tracking tasks. It does not administer, reproduce, score, or replace the MoCA."},{q:"Does an unusual MoCA result diagnose dementia?",a:"No. The MoCA is a screening instrument. A clinician interprets it with history, function, examination, and any additional evaluation needed to understand possible causes."},{q:"Can home cognitive trends still help after clinical screening?",a:"They may add between-visit context when collected consistently and paired with real-world examples. The clinician decides whether the trend is relevant to follow-up."}],citations:[{label:"MoCA Training, Certification, and Use FAQ",publisher:"MoCA Cognition",url:"https://mocacognition.com/faq/"},{label:"MoCA Permissions and Web-Use Requirements",publisher:"MoCA Cognition",url:"https://mocacognition.com/permission"},{label:"Cognitive Testing",publisher:"MedlinePlus, U.S. National Library of Medicine",url:"https://medlineplus.gov/lab-tests/cognitive-testing/"},{label:"Assessing Cognitive Impairment in Older Patients",publisher:"National Institute on Aging",url:"https://www.nia.nih.gov/health/health-care-professionals-information/assessing-cognitive-impairment-older-patients"}]},{title:"Symptom Tracker for Neurological Conditions: What to Record",metaTitle:"Neurological Symptom Tracker: What to Record",description:"Build a useful neurological symptom tracker with dates, frequency, function, medication context, and concise trends that support better clinical conversations.",slug:"neurological-symptom-tracker",category:"neurology",primaryKeyword:"symptom tracker",conditions:["neurology","movement-symptoms","cognitive-change"],assessments:["memory-and-recall","tremor-and-hand-control","walking-and-movement"],articleLinks:[{anchor:"between-visit data",slug:"why-between-visit-data-matters-for-neurology"},{anchor:"neurological assessment at home",slug:"neurological-assessment-at-home"},{anchor:"medication timing",slug:"medication-timing-symptom-tracking"}],pageLinks:[{anchor:"assessment types",path:"/assessment-types"}],datePublished:"2026-07-26",dateModified:"2026-07-26",launchPriority:7,readingTimeMin:8,keyTakeaways:["Track concrete events, frequency, direction, function, and context—not every sensation.","A short consistent record is easier to sustain and interpret than an exhaustive diary.","Keep raw dates and exceptions so a summary does not hide uncertainty.","A tracker supports care conversations but does not monitor emergencies."],faqs:[{q:"What belongs in a neurological symptom tracker?",a:"Record the symptom or event, date and time, duration, frequency, severity in plain language, functional effect, medication timing, and relevant context such as sleep, illness, stress, or activity."},{q:"How often should a symptom diary be updated?",a:"Use event-based entries for distinct episodes and a brief daily or weekly check-in for ongoing symptoms. Choose the least burdensome schedule that still answers the care question."},{q:"Should unusual entries be deleted from a symptom record?",a:"Usually no. Preserve the entry and add a note about interruption, device failure, illness, or another explanation. Removing outliers can create a misleading trend."},{q:"Can a tracking app alert my clinician automatically?",a:"Do not assume it does. Unless a care team has explicitly established monitoring and response procedures, treat the record as information you must share through the agreed channel."}],citations:[{label:"Patient-Generated Health Data Fact Sheet",publisher:"HealthIT.gov",url:"https://www.healthit.gov/sites/default/files/patient_generated_data_factsheet.pdf"},{label:"Neurological Exam",publisher:"MedlinePlus, U.S. National Library of Medicine",url:"https://medlineplus.gov/lab-tests/neurological-exam/"},{label:"Digital Health Technologies for Remote Data Acquisition",publisher:"U.S. Food and Drug Administration",url:"https://www.fda.gov/regulatory-information/search-fda-guidance-documents/digital-health-technologies-remote-data-acquisition-clinical-investigations"}]},{title:"Parkinson’s Off Periods: How to Track Symptoms and Medication Timing",metaTitle:"Parkinson’s Off Periods: Tracking Guide | Alumina",description:"Learn how to record Parkinson’s off periods, symptom return, medication timing, meals, function, and questions for a movement-disorder clinician.",slug:"parkinsons-off
26-periods-tracking",category:"parkinsons-disease",primaryKeyword:"Parkinson's off periods",conditions:["parkinsons-disease","movement-symptoms"],assessments:["tremor-and-hand-control","tapping-and-coordination","walking-and-movement"],articleLinks:[{anchor:"early Parkinson’s signs",slug:"early-signs-of-parkinsons-disease"},{anchor:"medication timing and symptom tracking",slug:"medication-timing-symptom-tracking"},{anchor:"symptom tracker",slug:"neurological-symptom-tracker"}],assessmentLinks:[{anchor:"tapping and coordination task",slug:"tapping-and-coordination"}],datePublished:"2026-07-26",dateModified:"2026-07-26",launchPriority:8,readingTimeMin:8,keyTakeaways:["Off periods are times when Parkinson’s symptoms return or worsen between medication effects.","Record dose times, symptom timing, meals, function, and context without changing treatment.","Motor and non-motor symptoms can both fluctuate.","Medication adjustments belong to the prescribing clinician."],faqs:[{q:"What is an off period in Parkinson’s disease?",a:"It is a period when symptoms return or worsen as the benefit of Parkinson’s medication is reduced or inconsistent. The pattern may be predictable, delayed, sudden, or variable."},{q:"Which symptoms should be logged during Parkinson’s off time?",a:"Record movement changes such as slowness, stiffness, tremor, freezing, or cramps, along with non-motor changes such as anxiety, fatigue, pain, sweating, or thinking difficulty."},{q:"Should meal timing be included in an off-period diary?",a:"Yes, as context. Record meals and digestive issues without changing diet or medication timing unless the clinician provides instructions."},{q:"Can I adjust levodopa based on a home tracking pattern?",a:"Not on your own. Share the pattern with the prescriber, who can weigh symptom control, side effects, other medicines, meals, digestion, and the overall treatment plan."}],citations:[{label:"Managing Off Time in Parkinson's",publisher:"Parkinson's Foundation",url:"https://www.parkinson.org/library/fact-sheets/managing-off-time"},{label:"Parkinson's Disease: Challenges, Progress, and Promise",publisher:"National Institute of Neurological Disorders and Stroke",url:"https://www.ninds.nih.gov/current-research/focus-disorders/parkinsons-disease-research/parkinsons-disease-challenges-progress-and-promise"},{label:"Impacts on Study Design When Implementing Digital Measures in Parkinson's Disease Trials",publisher:"Journal of Parkinson's Disease",url:"https://pmc.ncbi.nlm.nih.gov/articles/PMC11496294/"}]},{title:"Processing Speed Test: What Slower Responses Can Mean",metaTitle:"Processing Speed Test: Results and Limits | Alumina",description:"Learn what a processing speed test measures, why accuracy and device setup matter, and how to interpret repeated slower responses responsibly.",slug:"processing-speed-test",category:"cognitive-change",primaryKeyword:"processing speed test",conditions:["cognitive-change","multiple-sclerosis","neurology"],assessments:["reaction-and-processing-speed","visual-matching-tasks"],articleLinks:[{anchor:"reaction time test",slug:"reaction-time-test-results"},{anchor:"cognitive changes in multiple sclerosis",slug:"cognitive-changes-multiple-sclerosis"},{anchor:"shape-matching tasks",slug:"shape-matching-tasks-and-cognitive-change"}],assessmentLinks:[{anchor:"reaction and processing speed task",slug:"reaction-and-processing-speed"}],datePublished:"2026-07-26",dateModified:"2026-07-26",launchPriority:9,readingTimeMin:8,keyTakeaways:["Processing speed concerns how efficiently simple information is handled, not intelligence.","Tests often combine perception, decision-making, accuracy, and motor response.","Sleep, fatigue, mood, illness, medicines, vision, and devices can affect performance.","Use repeated personal results with functional examples and clinical context."],faqs:[{q:"What is cognitive processing speed?",a:"It is the efficiency with which a person notices, understands, and responds to relatively simple information. It is distinct from how much the person knows or how complex their reasoning can be."},{q:"Is a processing speed test the same as a reaction time test?",a:"Not necessarily. Simple reaction time can require one response to one signal, while processing-speed tasks may require matching, scanning, choosing, or applying a rule."},{q:"Can fatigue make processing-speed performance slower?",a:"Yes. Fatigue, poor sleep, pain, illness, stress, depression, medication effects, and sensory or motor factors can all influence a speeded task."}
26,{q:"Does slower processing speed prove cognitive decline?",a:"No. A repeated change may deserve evaluation, but the test cannot establish cause. Interpretation requires the person’s baseline, accuracy, function, health context, and clinical assessment."}],citations:[{label:"Response Time Reduction Due to Retesting in Mental Speed Tests",publisher:"Psychological Test and Assessment Modeling",url:"https://pmc.ncbi.nlm.nih.gov/articles/PMC6480749/"},{label:"Cognitive Testing",publisher:"MedlinePlus, U.S. National Library of Medicine",url:"https://medlineplus.gov/lab-tests/cognitive-testing/"},{label:"Multiple Sclerosis",publisher:"National Institute of Neurological Disorders and Stroke",url:"https://www.ninds.nih.gov/health-information/disorders/multiple-sclerosis-ms"}]},{title:"Finger Tapping Test: What It Measures in Neurology",metaTitle:"Finger Tapping Test in Neurology | Alumina Health",description:"Learn what a finger tapping test observes, why rhythm, speed, amplitude, fatigue, and setup matter, and how to track results without diagnosing.",slug:"finger-tapping-test-neurology",category:"movement-symptoms",primaryKeyword:"finger tapping test",conditions:["movement-symptoms","parkinsons-disease","neurology"],assessments:["tapping-and-coordination","tremor-and-hand-control"],articleLinks:[{anchor:"Parkinson’s tremor assessments",slug:"tremor-assessments-for-parkinsons-disease"},{anchor:"bradykinesia at home",slug:"bradykinesia-at-home"},{anchor:"between-visit data",slug:"why-between-visit-data-matters-for-neurology"}],assessmentLinks:[{anchor:"tapping and coordination assessment",slug:"tapping-and-coordination"}],datePublished:"2026-07-26",dateModified:"2026-07-26",launchPriority:10,readingTimeMin:8,keyTakeaways:["Tapping tasks can capture timing, rhythm, errors, and change during repeated movement.","Hand dominance, pain, device input, instructions, and posture affect results.","Side-to-side differences deserve context and are not automatically pathological.","A home tapping trend cannot diagnose Parkinson’s disease or grade clinical severity."],faqs:[{q:"What can a digital finger tapping test record?",a:"Depending on the design, it may record tap count, intervals, rhythm, errors, alternating accuracy, or change across the trial. Those metrics remain specific to the task and device."},{q:"Should the dominant hand always tap faster?",a:"It may, but dominance is only one influence. Pain, injury, practice, posture, device position, and neurological or musculoskeletal factors can also affect each hand."},{q:"Does slower finger tapping indicate Parkinson’s disease?",a:"No. Slower or irregular tapping is not specific to Parkinson’s disease. Diagnosis requires a clinical history and examination by a qualified professional."},{q:"How should both hands be compared over time?",a:"Use the same device, finger, posture, instructions, and trial duration for each side. Track each hand separately instead of merging them into one score."}],citations:[{label:"Impacts on Study Design When Implementing Digital Measures in Parkinson's Disease Trials",publisher:"Journal of Parkinson's Disease",url:"https://pmc.ncbi.nlm.nih.gov/articles/PMC11496294/"},{label:"Developing and Assessing a New Web-Based Tapping Test",publisher:"Scientific Reports",url:"https://pmc.ncbi.nlm.nih.gov/articles/PMC8748736/"},{label:"Computer Vision for Parkinson’s Disease Evaluation: A Survey on Finger Tapping",publisher:"Sensors",url:"https://pmc.ncbi.nlm.nih.gov/articles/PMC10888014/"}]},{title:"Brain Health and Neurology Apps: What to Look For",metaTitle:"Brain Health and Neurology Apps: Buyer’s Guide",description:"Evaluate a brain health or neurology app by intended use, assessment quality, privacy, accessibility, trends, exports, and honest clinical limitations.",slug:"brain-health-neurology-apps",category:"neurology",primaryKeyword:"brain health app",conditions:["neurology","cognitive-change","movement-symptoms"],articleLinks:[{anchor:"between-visit data",slug:"why-between-visit-data-matters-for-neurology"},{anchor:"digital cognitive assessment",slug:"digital-cognitive-assessment"}
26,{anchor:"symptom tracker",slug:"neurological-symptom-tracker"}],pageLinks:[{anchor:"assessment types",path:"/assessment-types"},{anchor:"contact Alumina Health",path:"/contact"}],datePublished:"2026-07-26",dateModified:"2026-07-26",launchPriority:11,readingTimeMin:8,keyTakeaways:["Start with the app’s intended use and evidence, not its score design or AI language.","Useful apps preserve context, trends, raw dates, and exportable summaries.","Privacy, accessibility, burden, and data deletion deserve evaluation before tracking begins.","A consumer app should state clearly that it does not diagnose or provide emergency monitoring."],faqs:[{q:"How can I tell whether a brain health app is credible?",a:"Look for a clear intended use, named measures, evidence appropriate to that use, transparent limitations, privacy details, accessible design, and an explanation of how results should be interpreted."},{q:"Should a neurology app provide one overall brain score?",a:"A single score may be simple, but it can hide differences among memory, speed, accuracy, movement, and symptoms. Prefer products that preserve domain-level results and context."},{q:"What privacy questions should I ask before entering health information?",a:"Ask what data are collected, where they are stored, who receives them, whether they are sold or used for advertising or model training, how to export them, and how to delete the account and data."},{q:"Will an app notify a neurologist when a result changes?",a:"Only if a specific care program explicitly says so. Consumer tracking normally requires the user to share results; an app graph should not be assumed to have clinical monitoring behind it."}],citations:[{label:"Digital Health Technologies for Remote Data Acquisition",publisher:"U.S. Food and Drug Administration",url:"https://www.fda.gov/regulatory-information/search-fda-guidance-documents/digital-health-technologies-remote-data-acquisition-clinical-investigations"},{label:"Patient-Generated Health Data Fact Sheet",publisher:"HealthIT.gov",url:"https://www.healthit.gov/sites/default/files/patient_generated_data_factsheet.pdf"},{label:"Practice Effects on Digital Cognitive Assessment Tools",publisher:"Alzheimer's & Dementia: Diagnosis, Assessment & Disease Monitoring",url:"https://pmc.ncbi.nlm.nih.gov/articles/PMC12412751/"}]},{title:"Medication Timing and Symptom Tracking: How to Spot Patterns",metaTitle:"Medication Timing and Symptom Tracking | Alumina",description:"Learn how to align prescribed medication times with symptom observations while avoiding self-directed dose changes and false cause-and-effect conclusions.",slug:"medication-timing-symptom-tracking",category:"neurology",primaryKeyword:"medication timing",conditions:["neurology","parkinsons-disease","movement-symptoms"],articleLinks:[{anchor:"symptom tracker",slug:"neurological-symptom-tracker"},{anchor:"Parkinson’s off periods",slug:"parkinsons-off-periods-tracking"}
26,{anchor:"between-visit data",slug:"why-between-visit-data-matters-for-neurology"}],datePublished:"2026-07-26",dateModified:"2026-07-26",launchPriority:12,readingTimeMin:8,keyTakeaways:["Record the prescribed schedule and actual dose time without changing either for testing.","Pair symptoms with function, duration, meals, sleep, illness, and side-effect context.","Repeated timing patterns create questions, not proof that a medicine caused the change.","Only the prescriber should direct dose or schedule changes."],faqs:[{q:"What medication details are useful in a symptom log?",a:"Record the medicine name as listed, prescribed schedule, actual time taken, missed or late doses, and any clinician-directed as-needed use. Do not include guesses about blood levels."},{q:"How long should medication and symptom timing be tracked?",a:"Use the period requested by the care team or a short representative window that captures ordinary variation. Longer is not automatically better if entries become incomplete."},{q:"Does a symptom occurring after a dose prove a side effect?",a:"No. Timing can identify an association worth discussing, but illness, meals, activity, sleep, other medicines, and the underlying condition may also contribute."},{q:"What should I do after noticing a repeated medication pattern?",a:"Summarize the dates, timing, symptoms, function, and context and contact the prescriber through the appropriate channel. Follow existing instructions while awaiting guidance."}],citations:[{label:"Managing Off Time in Parkinson's",publisher:"Parkinson's Foundation",url:"https://www.parkinson.org/library/fact-sheets/managing-off-time"},{label:"Patient-Generated Health Data Fact Sheet",publisher:"HealthIT.gov",url:"https://www.healthit.gov/sites/default/files/patient_generated_data_factsheet.pdf"},{label:"Neurological Exam",publisher:"MedlinePlus, U.S. National Library of Medicine",url:"https://medlineplus.gov/lab-tests/neurological-exam/"}]},{title:"Digital Cognitive Assessment: What Patients and Clinicians Should Know",metaTitle:"Digital Cognitive Assessment: Quality and Limits",description:"A practical guide to digital cognitive assessment validity, intended use, accessibility, practice effects, device variation, privacy, and clinical boundaries.",slug:"digital-cognitive-assessment",category:"cognitive-change",primaryKeyword:"digital cognitive assessment",conditions:["cognitive-change","memory-concerns","neurology"],articleLinks:[{anchor:"cognitive assessment versus screening",slug:"cognitive-assessment-vs-cognitive-screening"},{anchor:"reaction time test",slug:"reaction-time-test-results"},{anchor:"between-visit data",slug:"why-between-visit-data-matters-for-neurology"}],pageLinks:[{anchor:"contact Alumina Health",path:"/contact"}],datePublished:"2026-07-26",dateModified:"2026-07-26",launchPriority:13,readingTimeMin:9,keyTakeaways:["Validity must match the exact intended use, population, setting, and decision.","Devices, accessibility, assistance, incomplete sessions, and practice effects affect interpretation.","Patient-generated results should preserve context and uncertainty.","Digital convenience does not confer diagnostic or regulatory status."],faqs:[{q:"What makes a digital cognitive assessment valid?",a:"Evidence should show that the exact tool performs adequately for its stated purpose, population, setting, device conditions, and interpretation. One validation claim does not cover every use."},{q:"Why does device type matter in computerized cognitive testing?",a:"Screen size, refresh behavior, input method, latency, audio, and accessibility settings can change how stimuli are presented and responses recorded."},{q:"How should incomplete digital assessment sessions be handled?",a:"Retain completion status and the reason when known. Distress, fatigue, interruption, technical failure, and misunderstanding have different implications and should not be silently converted to a score."},{q:"Is a digital cognitive assessment automatically a medical device?",a:"No. Regulatory status depends on the product’s intended use and claims, among other factors. Users should not infer authorization or compliance from the word digital."}],citations:[{label:"Digital Health Technologies for Remote Data Acquisition",publisher:"U.S. Food and Drug Administration",url:"https://www.fda.gov/regulatory-information/search-fda-guidance-documents/digital-health-technologies-remote-data-acquisition-clinical-investigations"},{label:"Practice Effects on Digital Cognitive Assessment Tools",publisher:"Alzheimer's & Dementia: Diagnosis, Assessment & Disease Monitoring",url:"https://pmc.ncbi.nlm.nih.gov/articles/PMC12412751/"},{label:"Cognitive Test Scores Vary With Choice of Personal Digital Device",publisher:"Behavior Research Methods",url:"https://pmc.ncbi.nlm.nih.gov/articles/PMC8568735/"},{label:"Patient-Generated Health Data Fact Sheet",publisher:"HealthIT.gov",url:"https://www.healthit.gov/sites/default/files/patient_generated_data_factsheet.pdf"}]},{title:"Remote Neurological Monitoring: What Patients Should Expect",metaTitle:"Remote Neurological Monitoring: Patient Guide",description:"Understand remote neurological monitoring, including enrollment, tasks, devices, data review, privacy, escalation rules, and what monitoring cannot promise.",slug:"remote-neurological-monitoring",category:"neurology",primaryKeyword:"remote monitoring",conditions:["neurology","movement-symptoms","cognitive-change"],articleLinks:[{anchor:"between-visit data",slug:"why-between-visit-data-matters-for-neurology"},{anchor:"symptom tracker",slug:"neurological-symptom-tracker"}
26,{anchor:"telehealth neurology appointment",slug:"telehealth-neurology-appointment"}],pageLinks:[{anchor:"contact Alumina Health",path:"/contact"}],datePublished:"2026-07-26",dateModified:"2026-07-26",launchPriority:14,readingTimeMin:8,keyTakeaways:["Remote monitoring ranges from self-tracking to formal care programs with defined review workflows.","Patients should know what is collected, who reviews it, and how quickly anyone may respond.","Consistent tasks and contextual notes improve interpretability.","Routine remote monitoring is not a substitute for emergency care."],faqs:[{q:"What is remote neurological monitoring?",a:"It is the collection of neurological symptoms, tasks, device data, or patient reports away from the clinic. The term can describe consumer tracking, research, or a formal clinical program."},{q:"Who reviews information collected remotely?",a:"That depends on the program. Ask whether review is automated or human, which team is responsible, how often review occurs, and what response time is promised."},{q:"What happens when remote data are missing?",a:"A good program records missingness and distinguishes technical failure, skipped sessions, inability, and withdrawal. Missing data should not silently become a normal result."},{q:"Can remote neurological monitoring replace office visits?",a:"Usually it complements rather than replaces care. Some concerns require a hands-on examination, imaging, laboratory tests, or direct observation that remote tools cannot provide."}],citations:[{label:"Digital Health Technologies for Remote Data Acquisition",publisher:"U.S. Food and Drug Administration",url:"https://www.fda.gov/regulatory-information/search-fda-guidance-documents/digital-health-technologies-remote-data-acquisition-clinical-investigations"},{label:"Patient-Generated Health Data Fact Sheet",publisher:"HealthIT.gov",url:"https://www.healthit.gov/sites/default/files/patient_generated_data_factsheet.pdf"},{label:"Conduct a Telehealth Physical Exam",publisher:"Telehealth.HHS.gov",url:"https://telehealth.hhs.gov/providers/preparing-patients-for-telehealth/telehealth-physical-exam"}]},{title:"What to Bring to a Neurologist Appointment: A Patient Checklist",metaTitle:"Neurologist Appointment Checklist | Alumina Health",description:"Prepare for a neurologist appointment with a concise symptom timeline, medication list, records, questions, functional examples, and home assessment trends.",slug:"neurologist-appointment-checklist",category:"neurology",primaryKeyword:"neurologist appointment checklist",conditions:["neurology","movement-symptoms","cognitive-change"],articleLinks:[{anchor:"between-visit data",slug:"why-between-visit-data-matters-for-neurology"},{anchor:"symptom tracker",slug:"neurological-symptom-tracker"},{anchor:"neurological assessment at home",slug:"neurological-assessment-at-home"}],datePublished:"2026-07-26",dateModified:"2026-07-26",launchPriority:15,readingTimeMin:8,keyTakeaways:["Lead with the main concern, timeline, functional impact, and desired decision.","Bring complete medication, allergy, test, imaging, and clinician information.","Summarize home tracking to one page while retaining the underlying record.","Write questions in priority order and leave with a clear follow-up plan."],faqs:[{q:"How much symptom history should I bring to a first neurology visit?",a:"Bring a concise timeline from baseline through the present, highlighting onset, major changes, frequency, function, and prior evaluation. Keep longer records available rather than leading with every detail."},{q:"Should I bring medication bottles to the neurologist?",a:"A current list with names, doses, timing, and prescribers is essential. Bringing bottles can help when names or formulations are uncertain, but follow the clinic’s preparation instructions."},{q:"Is it helpful to bring someone to a neurological appointment?",a:"With the patient’s consent, a trusted person can help recall events, describe observations, take notes, and support communication. The patient’s own priorities should remain central."},{q:"How should home assessment results be presented at the visit?",a:"Use a one-page trend with task name, dates, setup, direction, context, and two or three daily examples. Bring raw results as backup and avoid diagnostic conclusions."}],citations:[{label:"Neurological Exam",publisher:"MedlinePlus, U.S. National Library of Medicine",url:"https://medlineplus.gov/lab-tests/neurological-exam/"},{label:"Neurological Examinations",publisher:"Mayo Clinic",url:"https://www.mayoclinic.org/tests-procedures/neurological-exam/about/pac-20587319"},{label:"Patient-Generated Health Data Fact Sheet",publisher:"HealthIT.gov",url:"https://www.healthit.gov/sites/default/files/patient_generated_data_factsheet.pdf"}]},{title:"Telehealth Neurology Appointment: How to Prepare With Home Data",metaTitle:"Telehealth Neurology Appointment Preparation",description:"Prepare for a telehealth neurology appointment with a technology check, safe camera setup, medication list, symptom timeline, and concise home data.",slug:"telehealth-neurology-appointment",category:"neurology",primaryKeyword:"telehealth neurology appointment",conditions:["neurology","movement-symptoms","cognitive-change"],articleLinks:[{anchor:"neurologist appointment checklist",slug:"neurologist-appointment-checklist"}
26,{anchor:"remote neurological monitoring",slug:"remote-neurological-monitoring"},{anchor:"between-visit data",slug:"why-between-visit-data-matters-for-neurology"}],pageLinks:[{anchor:"contact page",path:"/contact"}],datePublished:"2026-07-26",dateModified:"2026-07-26",launchPriority:16,readingTimeMin:7,keyTakeaways:["Test the connection, camera, microphone, lighting, and backup plan before the visit.","Prepare a concise symptom timeline, medication list, questions, and home-data summary.","Only perform movement demonstrations the clinician requests and that are safe.","Telehealth cannot replace every hands-on neurological examination."],faqs:[{q:"How early should I test technology for a virtual neurology visit?",a:"Complete the platform setup before appointment day when possible, then connect about 15 minutes early to handle updates, permissions, audio, or camera problems."},{q:"What camera view is useful for a telehealth neurological appointment?",a:"Start with a steady, eye-level view of the head and shoulders. If movement may be observed, ask the clinic in advance about space and full-body positioning."},{q:"Can a caregiver attend a telehealth neurology visit?",a:"Yes, with the patient’s consent. Clarify whether the person will help with technology, describe observations, take notes, or support safe movement."},{q:"What if the clinician cannot complete the examination by video?",a:"The clinician may arrange an in-person visit, testing, imaging, or another referral. A virtual visit should not force a conclusion when required information is unavailable."}],citations:[{label:"What Should I Know Before My Telehealth Visit?",publisher:"Telehealth.HHS.gov",url:"https://telehealth.hhs.gov/patients/what-should-i-know-before-my-telehealth-visit"},{label:"Helping Patients Prepare for Their Telehealth Appointment",publisher:"Telehealth.HHS.gov",url:"https://telehealth.hhs.gov/providers/preparing-patients-for-telehealth/helping-patients-prepare-for-their-appointment"},{label:"Conduct a Telehealth Physical Exam",publisher:"Telehealth.HHS.gov",url:"https://telehealth.hhs.gov/providers/preparing-patients-for-telehealth/telehealth-physical-exam"}]},{title:"Coordination Test at Home: What It Measures and How to Track Change",metaTitle:"Coordination Test at Home | Alumina Health",description:"Learn what coordination tasks observe, how vision, sensation, strength, timing, and devices affect results, and when change needs clinical evaluation.",slug:"coordination-test-at-home",category:"movement-symptoms",primaryKeyword:"coordination test",conditions:["movement-symptoms","neurology","multiple-sclerosis"],assessments:["tapping-and-coordination","walking-and-movement"],assessmentLinks:[{anchor:"tapping and coordination task",slug:"tapping-and-coordination"}],articleLinks:[{anchor:"gait analysis",slug:"gait-analysis-for-neurological-conditions"},{anchor:"finger tapping test",slug:"finger-tapping-test-neurology"},{anchor:"neurological assessment at home",slug:"neurological-assessment-at-home"}],datePublished:"2026-07-26",dateModified:"2026-07-26",launchPriority:17,readingTimeMin:7,keyTakeaways:["Coordination depends on sensory information, timing, movement control, strength, and attention.","Home tasks should be seated or otherwise safe and should never provoke a fall.","Track each side separately with consistent instructions and setup.","Sudden loss of coordination can be an emergency."],faqs:[{q:"What does a hand coordination test observe?",a:"It may observe timing, target accuracy, rhythm, sequencing, or smoothness during a defined task. It cannot determine the cause of an unusual result."},{q:"Can poor vision affect a coordination task?",a:"Yes. Visual targets require adequate acuity and contrast. Sensation, pain, weakness, attention, and device layout can also influence performance."},{q:"Is it safe to test balance or walking alone at home?",a:"Not when there is fall risk, dizziness, weakness, or uncertainty. Do not attempt unsupported standing or walking tests unless a qualified professional has provided a safe plan."},{q:"How should a new coordination change be documented?",a:"Record onset, side, task, frequency, duration, function, associated symptoms, injury or illness, medicines, and whether the change was sudden or gradual."}],citations:[{label:"Neurological Exam",publisher:"MedlinePlus, U.S. National Library of Medicine",url:"https://medlineplus.gov/lab-tests/neurological-exam/"},{label:"Neurological Examinations",publisher:"Mayo Clinic",url:"https://www.mayoclinic.org/tests-procedures/neurological-exam/about/pac-20587319"},{label:"Multiple Sclerosis",publisher:"National Institute of Neurological Disorders and Stroke",url:"https://www.ninds.nih.gov/health-information/disorders/multiple-sclerosis-ms"}]},{title:"Visual Motor Test: How Vision and Movement Work Together",metaTitle:"Visual Motor Test: Vision and Movement | Alumina",description:"Understand visual-motor tests, including matching, tracing, timing, accuracy, device effects, and why results require vision and movement context.",slug:"visual-motor-test",category:"cognitive-change",primaryKeyword:"visual motor test",conditions:["cognitive-change","movement-symptoms","multiple-sclerosis"],assessments:["visual-matching-tasks","shape-tracing","low-contrast-vision"],assessmentLinks:[{anchor:"visual matching task",slug:"visual-matching-tasks"},{anchor:"shape tracing",slug:"shape-tracing"}],articleLinks:[{anchor:"contrast sensitivity versus visual acuity",slug:"contrast-sensitivity-test-at-home"}
26,{anchor:"shape-matching tasks",slug:"shape-matching-tasks-and-cognitive-change"},{anchor:"low-contrast vision changes",slug:"low-contrast-vision-changes-in-multiple-sclerosis"},{anchor:"coordination test at home",slug:"coordination-test-at-home"}],datePublished:"2026-07-26",dateModified:"2026-09-23",launchPriority:18,readingTimeMin:7,keyTakeaways:["Visual-motor performance combines seeing, interpreting, planning, and moving.","Matching and tracing emphasize different parts of the process.","Screen, contrast, corrective lenses, input method, and hand function affect results.","A home result cannot separate visual, cognitive, and motor causes."],faqs:[{q:"What is visual-motor integration?",a:"It is the coordination of visual information with a planned motor response, such as copying, tracing, reaching, or selecting a matching target."},{q:"How is visual matching different from shape tracing?",a:"Matching emphasizes visual comparison and selection, while tracing adds continuous movement control, path accuracy, and hand-device interaction."},{q:"Should glasses be worn during a visual-motor task?",a:"Use the correction normally required for the activity and keep it consistent across sessions. Record changes in glasses, lighting, or display."},{q:"Can a visual-motor result identify an eye or brain condition?",a:"No. Many visual, cognitive, motor, and technical factors can affect the task. Persistent change should be evaluated by the appropriate qualified professional."}],citations:[{label:"Neurological Exam",publisher:"MedlinePlus, U.S. National Library of Medicine",url:"https://medlineplus.gov/lab-tests/neurological-exam/"},{label:"Cognitive Test Scores Vary With Choice of Personal Digital Device",publisher:"Behavior Research Methods",url:"https://pmc.ncbi.nlm.nih.gov/articles/PMC8568735/"},{label:"Multiple Sclerosis",publisher:"National Institute of Neurological Disorders and Stroke",url:"https://www.ninds.nih.gov/health-information/disorders/multiple-sclerosis-ms"}]},{title:"Voice Changes in Parkinson’s Disease: What to Track at Home",metaTitle:"Voice Changes in Parkinson’s: Home Tracking Guide",description:"Track Parkinson’s voice changes such as loudness, clarity, pace, fatigue, and communication impact without replacing speech-language evaluation.",slug:"voice-changes-parkinsons",category:"parkinsons-disease",primaryKeyword:"voice changes Parkinson's",conditions:["parkinsons-disease","movement-symptoms"],articleLinks:[{anchor:"early Parkinson’s signs",slug:"early-signs-of-parkinsons-disease"},{anchor:"Parkinson’s off periods",slug:"parkinsons-off-periods-tracking"}
26,{anchor:"symptom tracker",slug:"neurological-symptom-tracker"}],pageLinks:[{anchor:"voice analysis",path:"/voice-analysis"}],datePublished:"2026-07-26",dateModified:"2026-07-26",launchPriority:19,readingTimeMin:7,keyTakeaways:["Parkinson’s can affect loudness, clarity, pace, pitch, and awareness of speech change.","Track communication impact and context rather than relying only on recordings.","Swallowing symptoms require prompt professional attention.","Voice tracking cannot diagnose Parkinson’s disease or replace speech-language evaluation."],faqs:[{q:"Which voice changes can occur in Parkinson’s disease?",a:"Speech may become softer, less varied in pitch, breathy, rapid, slurred, or harder to understand. Experiences vary, and other conditions can cause similar changes."},{q:"How can voice loudness be tracked without special equipment?",a:"Use consistent phrases and recording distance, and pair the observation with communication examples such as requests for repetition. Consumer microphone levels are not clinical sound measurements."},{q:"Why might a person not notice that their voice is softer?",a:"Parkinson’s can affect sensory feedback and self-perception, so the person’s experience and a conversation partner’s observation may differ."},{q:"When should swallowing concerns be reported?",a:"Report coughing or choking with food or drink, a wet voice after swallowing, unexplained weight loss, dehydration, or recurrent chest infections promptly to the care team."}],citations:[{label:"Speech and Swallowing in Parkinson's",publisher:"Parkinson's Foundation",url:"https://www.parkinson.org/library/fact-sheets/speech-swallowing"},{label:"Speech and Swallowing Issues",publisher:"Parkinson's Foundation",url:"https://www.parkinson.org/understanding-parkinsons/non-movement-symptoms/speech-swallowing"},{label:"Physical, Occupational and Speech Therapies",publisher:"Parkinson's Foundation",url:"https://www.parkinson.org/living-with-parkinsons/treatment/physical-occupational-speech-therapies"}]},{title:"Bradykinesia at Home: How to Describe Slowness of Movement",metaTitle:"Bradykinesia at Home: Describe Movement Change",description:"Learn how to describe slowness, reduced movement size, hesitations, and daily functional change without using home tasks to diagnose bradykinesia.",slug:"bradykinesia-at-home",category:"parkinsons-disease",primaryKeyword:"bradykinesia",conditions:["parkinsons-disease","movement-symptoms","neurology"],assessments:["tapping-and-coordination","walking-and-movement"],assessmentLinks:[{anchor:"tapping and coordination",slug:"tapping-and-coordination"}],articleLinks:[{anchor:"early Parkinson’s signs",slug:"early-signs-of-parkinsons-disease"},{anchor:"finger tapping test",slug:"finger-tapping-test-neurology"},{anchor:"gait analysis at home",slug:"gait-analysis-at-home-balance-changes-to-track"}],datePublished:"2026-07-26",dateModified:"2026-07-26",launchPriority:20,readingTimeMin:7,keyTakeaways:["Bradykinesia is a clinical movement sign, not a synonym for feeling tired or slow.","Describe onset, movement size, hesitations, repetition, side, and functional impact.","Tapping and walking observations can add context but cannot establish the sign.","Sudden slowness or weakness requires urgent evaluation."],faqs:[{q:"What does bradykinesia mean?",a:"Bradykinesia refers to slowness of movement and may include reduced movement size or progressive decrement during repeated actions. A clinician determines whether the sign is present."},{q:"Is fatigue the same as bradykinesia?",a:"No. Fatigue is an experience of low energy or limited endurance. It can make movement slower, but bradykinesia has specific clinical features assessed in context."},{q:"Which daily activities can reveal movement slowness?",a:"Examples include dressing, buttoning, turning in bed, rising, handwriting, utensil use, typing, walking, and beginning an intended action."},{q:"Can a tapping score grade Parkinson’s bradykinesia?",a:"A consumer tapping score cannot reproduce clinical rating or diagnose Parkinson’s disease. It may document a personal task trend for discussion."}],citations:[{label:"Parkinson's Disease: Challenges, Progress, and Promise",publisher:"National Institute of Neurological Disorders and Stroke",url:"https://www.ninds.nih.gov/current-research/focus-disorders/parkinsons-disease-research/parkinsons-disease-challenges-progress-and-promise"},{label:"Developing and Assessing a New Web-Based Tapping Test",publisher:"Scientific Reports",url:"https://pmc.ncbi.nlm.nih.gov/articles/PMC8748736/"},{label:"Quantitative Digitography Measures Motor Symptoms and Disease Progression",publisher:"Journal of Parkinson's Disease",url:"https://pmc.ncbi.nlm.nih.gov/articles/PMC9535590/"}]},{title:"Handwriting Changes in Parkinson’s Disease and Essential Tremor",metaTitle:"Handwriting Changes in Parkinson’s and Essential Tremor",description:"Learn what handwriting changes may occur with Parkinson’s disease or essential tremor, what to track at home, and why handwriting alone cannot diagnose either condition.",slug:"handwriting-changes-parkinsons-essential-tremor",category:"movement-symptoms",primaryKeyword:"handwriting changes Parkinson's",conditions:["parkinsons-disease","essential-tremor","movement-symptoms"],assessments:["shape-tracing","tremor-and-hand-control"],pageLinks:[{anchor:"home assessments",path:"/assessment-types"}],datePublished:"2026-07-26",dateModified:"2026-09-23",readingTimeMin:8,launchPriority:21,keyTakeaways:["Smaller, slower, or shakier writing can be worth documenting, but no handwriting sample can diagnose Parkinson’s disease or essential tremor.","Use the same short sample, pen, paper, posture, and time limit when comparing writing over time.","Save representative samples and record medication timing, fatigue, stress, and task difficulty.","Pair handwriting observations with other movement and daily-function changes for a more useful clinical conversation."],faqs:[{q:"Can handwriting diagnose Parkinson’s disease?",a:"No. Small or changing handwriting can occur for many reasons. Diagnosis requires a clinician’s history and examination, sometimes with additional testing."},{q:"What does essential tremor handwriting look like?",a:"Some people notice visible shakiness or irregular lines while writing, but the appearance varies with posture, task, stress, fatigue, and other factors."},{q:"How often should I save a handwriting sample?",a:"A brief sample at a consistent interval, such as weekly, is usually easier to compare than frequent unscheduled samples. Follow any schedule your clinician provides."},{q:"Should I practice before recording a sample?",a:"Avoid extra practice immediately beforehand if the goal is comparison. Complete the same brief task under similar conditions and note unusual circumstances."}],citations:[{label:"Parkinson’s Disease: Challenges, Progress, and Promise",url:"https://www.ninds.nih.gov/current-research/focus-disorders/parkinsons-disease-research/parkinsons-disease-challenges-progress-and-promise",publisher:"National Institute of Neurological Disorders and Stroke"},{label:"Essential Tremor",url:"https://www.ninds.nih.gov/health-information/disorders/essential-tremor",publisher:"National Institute of Neurological Disorders and Stroke"},{label:"Quantitative Digitography Measures Motor Symptoms and Disease Progression in Parkinson’s Disease",url:"https://pmc.ncbi.nlm.nih.gov/articles/PMC5366510/",publisher:"Journal of Parkinson's Disease"}],articleLinks:[{anchor:"spiral test for tremor",slug:"spiral-test-for-tremor"}
26,{anchor:"essential tremor versus Parkinson’s tremor",slug:"essential-tremor-vs-parkinsons-tremor"},{anchor:"bradykinesia at home",slug:"bradykinesia-at-home"},{anchor:"finger tapping test",slug:"finger-tapping-test-neurology"}],assessmentLinks:[{anchor:"shape tracing assessment",slug:"shape-tracing"},{anchor:"tremor and hand control assessment",slug:"tremor-and-hand-control"}]},{title:"Essential Tremor Triggers: Stress, Sleep, Caffeine, and Medication",metaTitle:"Essential Tremor Triggers: What to Track",description:"Learn how stress, sleep, caffeine, illness, and medication context may affect essential tremor and how to build a useful, non-diagnostic symptom record.",slug:"essential-tremor-triggers",category:"essential-tremor",primaryKeyword:"essential tremor triggers",conditions:["essential-tremor","movement-symptoms"],assessments:["tremor-and-hand-control"],pageLinks:[{anchor:"contact Alumina Health",path:"/contact"}],datePublished:"2026-07-26",dateModified:"2026-09-23",readingTimeMin:8,launchPriority:22,keyTakeaways:["Essential tremor can vary with stress, fatigue, caffeine, illness, activity, and medication context, but triggers differ between people.","Change one observation variable at a time when practical and avoid changing medication without clinical guidance.","Use the same short task and record its timing, setup, and real-world effect.","Seek evaluation for a new, rapidly changing, or functionally important tremor."],faqs:[{q:"Can stress make essential tremor worse?",a:"Many people report more noticeable tremor during stress or anxiety. That does not mean stress causes essential tremor, and the effect varies between individuals."},{q:"Should I stop caffeine if I have essential tremor?",a:"Caffeine may worsen tremor for some people, but do not make major dietary or medication changes solely from a tracking result. Discuss concerns with your clinician."},{q:"Can poor sleep affect tremor?",a:"Fatigue or poor sleep may coincide with more noticeable symptoms. Recording sleep alongside tremor helps show whether the pattern is repeatable for you."},{q:"Can medication cause or worsen tremor?",a:"Some medicines and substances can affect tremor. Keep an accurate list and discuss timing or changes with a clinician rather than stopping a medicine yourself."}],citations:[{label:"Essential Tremor",url:"https://www.ninds.nih.gov/health-information/disorders/essential-tremor",publisher:"National Institute of Neurological Disorders and Stroke"},{label:"Stress and Essential Tremor",url:"https://essentialtremor.org/resource/stress-et/",publisher:"International Essential Tremor Foundation"},{label:"Essential Tremor: Diagnosis and Treatment",url:"https://www.mayoclinic.org/diseases-conditions/essential-tremor/diagnosis-treatment/drc-20350539",publisher:"Mayo Clinic"}],articleLinks:[{anchor:"track tremor with repeated spiral drawings",slug:"spiral-test-for-tremor"},{anchor:"essential tremor and Parkinson’s tremor",slug:"essential-tremor-vs-parkinsons-tremor"},{anchor:"medication timing and symptom tracking",slug:"medication-timing-symptom-tracking"}
26,{anchor:"handwriting changes",slug:"handwriting-changes-parkinsons-essential-tremor"}],assessmentLinks:[{anchor:"tremor and hand control assessment",slug:"tremor-and-hand-control"}]},{title:"Multiple Sclerosis Fatigue: How to Track Patterns and Triggers",metaTitle:"Multiple Sclerosis Fatigue: Track Patterns and Triggers",description:"Learn how to track multiple sclerosis fatigue, daily function, sleep, heat, illness, and medication context without confusing a symptom record with treatment advice.",slug:"multiple-sclerosis-fatigue-tracking",category:"multiple-sclerosis",primaryKeyword:"multiple sclerosis fatigue",conditions:["multiple-sclerosis"],assessments:["reaction-and-processing-speed","visual-matching-tasks"],pageLinks:[{anchor:"Alumina assessment options",path:"/assessment-types"}],datePublished:"2026-07-26",dateModified:"2026-07-26",readingTimeMin:8,launchPriority:23,keyTakeaways:["MS fatigue can affect physical and cognitive activity and may not match the amount of effort a person has made.","Track timing, severity, function, sleep, heat, illness, activity, and medication context with one consistent method.","A multi-day pattern is more useful than a single fatigue score.","New or rapidly worsening symptoms need clinical review rather than assumptions about fatigue."],faqs:[{q:"What does multiple sclerosis fatigue feel like?",a:"Experiences include overwhelming tiredness, reduced physical endurance, cognitive slowing, or worsening later in the day. A clinician should assess new or changing symptoms."},{q:"How should I rate MS fatigue?",a:"Use one simple personal scale consistently and pair the number with the activity affected. The trend against your own baseline is more useful than comparing with someone else."},{q:"Can heat make MS fatigue worse?",a:"Heat may temporarily worsen fatigue or other symptoms for some people with MS. Record temperature and recovery, and discuss recurrent or concerning changes with your care team."},{q:"Can a home cognitive test measure fatigue?",a:"No. Fatigue may influence cognitive or movement performance, but a home test does not isolate fatigue or establish its cause."}],citations:[{label:"Multiple Sclerosis",url:"https://www.ninds.nih.gov/health-information/disorders/multiple-sclerosis-ms",publisher:"National Institute of Neurological Disorders and Stroke"},{label:"Fatigue in Multiple Sclerosis: A Rapid Review",url:"https://pmc.ncbi.nlm.nih.gov/articles/PMC12559044/",publisher:"Multiple Sclerosis and Related Disorders"},{label:"Multiple Sclerosis Signs and Symptoms",url:"https://www.nationalmssociety.org/understanding-ms/what-is-ms/ms-symptoms",publisher:"National Multiple Sclerosis Society"}],articleLinks:[{anchor:"heat sensitivity in multiple sclerosis",slug:"heat-sensitivity-multiple-sclerosis"},{anchor:"processing speed",slug:"processing-speed-test"},{anchor:"between-visit data",slug:"why-between-visit-data-matters-for-neurology"}],assessmentLinks:[{anchor:"reaction time assessment",slug:"reaction-and-processing-speed"},{anchor:"shape matching assessment",slug:"visual-matching-tasks"}]},{title:"Cognitive Changes in Multiple Sclerosis: Memory, Attention, and Processing Speed",metaTitle:"Cognitive Changes in Multiple Sclerosis",description:"Understand how multiple sclerosis may affect memory, attention, and processing speed, what to track at home, and why repeated assessments require clinical context.",slug:"cognitive-changes-multiple-sclerosis",category:"multiple-sclerosis",primaryKeyword:"MS cognitive changes",conditions:["multiple-sclerosis","cognitive-change"],assessments:["visual-matching-tasks","reaction-and-processing-speed"],pageLinks:[{anchor:"cognitive assessment options",path:"/assessment-types"}],datePublished:"2026-07-26",dateModified:"2026-07-26",readingTimeMin:9,launchPriority:24,keyTakeaways:["MS can affect processing speed, attention, learning, or memory, but experiences vary widely.","Track changes against the person’s own baseline and connect results to real-world examples.","Fatigue, sleep, heat, mood, vision, motor ability, and device setup can influence home test performance.","Home assessments cannot diagnose cognitive impairment, an MS relapse, or the cause of a change."],faqs:[{q:"Can multiple sclerosis cause memory problems?",a:"Some people with MS experience changes in learning or recalling information, while others do not. A clinician can asse
26ss the pattern and other possible contributors."},{q:"What is processing speed in multiple sclerosis?",a:"Processing speed describes how efficiently a person takes in information and responds. It is distinct from intelligence and can be influenced by many temporary factors."},{q:"Does one low cognitive score mean my MS is getting worse?",a:"No. A single result can reflect fatigue, sleep, mood, vision, movement, device setup, distraction, or unfamiliarity. Trends and daily function require clinical interpretation."},{q:"When should cognitive changes be discussed with an MS clinician?",a:"Discuss persistent, worsening, or functionally important changes, especially when they affect safety, work, medication management, finances, or independence."}],citations:[{label:"Multiple Sclerosis",url:"https://www.ninds.nih.gov/health-information/disorders/multiple-sclerosis-ms",publisher:"National Institute of Neurological Disorders and Stroke"},{label:"Cognitive Impairment in Multiple Sclerosis",url:"https://pmc.ncbi.nlm.nih.gov/articles/PMC4581520/",publisher:"Frontiers in Neurology"},{label:"Cognitive Changes",url:"https://www.nationalmssociety.org/understanding-ms/what-is-ms/ms-symptoms/cognitive-changes",publisher:"National Multiple Sclerosis Society"}],articleLinks:[{anchor:"low-contrast vision testing",slug:"low-contrast-vision-changes-in-multiple-sclerosis"},{anchor:"multiple sclerosis fatigue",slug:"multiple-sclerosis-fatigue-tracking"}
26,{anchor:"processing speed test",slug:"processing-speed-test"}],assessmentLinks:[{anchor:"shape matching assessment",slug:"visual-matching-tasks"},{anchor:"reaction time assessment",slug:"reaction-and-processing-speed"}]},{title:"Heat Sensitivity in Multiple Sclerosis: How to Track Symptom Changes",metaTitle:"Heat Sensitivity in Multiple Sclerosis: Tracking Guide",description:"Learn how heat may temporarily affect multiple sclerosis symptoms, what context to record, and when symptom changes need prompt medical evaluation.",slug:"heat-sensitivity-multiple-sclerosis",category:"multiple-sclerosis",primaryKeyword:"heat sensitivity multiple sclerosis",conditions:["multiple-sclerosis"],assessments:["low-contrast-vision","walking-and-movement"],pageLinks:[{anchor:"assessment library",path:"/assessment-types"}],datePublished:"2026-07-26",dateModified:"2026-09-23",readingTimeMin:8,launchPriority:25,keyTakeaways:["Heat may temporarily worsen existing MS symptoms for some people, but a symptom change should not automatically be attributed to temperature.","Record the heat source, symptoms, function, duration, recovery, illness, and other context.","Do not deliberately overheat to test a suspected pattern.","New, severe, persistent, or safety-relevant symptoms require clinical guidance or urgent evaluation."],faqs:[{q:"Why can heat make MS symptoms feel worse?",a:"A small increase in body temperature may temporarily interfere with signaling in already affected nerve pathways for some people with MS. Individual experiences vary."},{q:"Does heat sensitivity mean my MS is progressing?",a:"Not necessarily. Heat-related worsening can be temporary, but new, persistent, or concerning symptoms still need clinical assessment."},{q:"How long should heat-related MS symptoms last?",a:"Recovery varies. Record when symptoms began, when cooling occurred, and whether function returned to baseline. Contact the care team if symptoms do not resolve as expected."},{q:"Should I exercise to test heat sensitivity?",a:"No. Do not deliberately overheat or overexert yourself for tracking. Follow the activity and temperature guidance provided by your clinician."}],citations:[{label:"Multiple Sclerosis",url:"https://www.ninds.nih.gov/health-information/disorders/multiple-sclerosis-ms",publisher:"National Institute of Neurological Disorders and Stroke"},{label:"Temperature Sensitivity in Multiple Sclerosis",url:"https://pmc.ncbi.nlm.nih.gov/articles/PMC6205043/",publisher:"Multiple Sclerosis Journal"},{label:"Uhthoff’s Phenomenon 125 Years Later",url:"https://pmc.ncbi.nlm.nih.gov/articles/PMC3056752/",publisher:"Perspectives in Medicine"}],articleLinks:[{anchor:"track low-contrast vision consistently",slug:"contrast-sensitivity-test-at-home"},{anchor:"multiple sclerosis fatigue",slug:"multiple-sclerosis-fatigue-tracking"}
26,{anchor:"low-contrast vision changes",slug:"low-contrast-vision-changes-in-multiple-sclerosis"},{anchor:"walking analysis",slug:"gait-analysis-at-home-balance-changes-to-track"}],assessmentLinks:[{anchor:"low-contrast vision assessment",slug:"low-contrast-vision"},{anchor:"walking analysis assessment",slug:"walking-and-movement"}]},{title:"30-Second Sit-to-Stand Test: What It Measures",metaTitle:"30-Second Sit-to-Stand Test | Alumina Health",description:"Learn what the 30-second sit-to-stand test measures, how chair setup and counting affect results, and how to track change without self-diagnosing.",slug:"30-second-sit-to-stand-test",category:"movement-symptoms",primaryKeyword:"30 second sit to stand test",conditions:["movement-symptoms","parkinsons-disease","multiple-sclerosis"],assessments:["sit-to-stand-test","walking-and-movement"],assessmentLinks:[{anchor:"30-second sit-to-stand assessment",slug:"sit-to-stand-test"},{anchor:"walking and movement assessment",slug:"walking-and-movement"}],articleLinks:[{anchor:"coordination test at home",slug:"coordination-test-at-home"},{anchor:"bradykinesia at home",slug:"bradykinesia-at-home"},{anchor:"between-visit data",slug:"why-between-visit-data-matters-for-neurology"}],pageLinks:[{anchor:"assessment library",path:"/assessment-types"}],datePublished:"2026-07-28",dateModified:"2026-07-28",launchPriority:26,readingTimeMin:9,keyTakeaways:["The test counts how many times a person reaches a full stand in 30 seconds under defined conditions.","Chair height, arm use, footwear, pain, fatigue, instructions, and counting method can change the result.","CDC reference thresholds apply to its standardized older-adult protocol and are not diagnostic cutoffs.","Repeated results are most useful when the setup stays consistent and the trend is interpreted with daily function."],faqs:[{q:"What is a normal 30-second sit-to-stand score?",a:"There is no single normal score for everyone. The CDC publishes age- and sex-specific below-average thresholds for adults ages 60–94 using its standardized protocol, but those values do not apply universally to younger people, modified techniques, or every medical population."},{q:"Can I use my hands during the chair stand test?",a:"The standardized CDC protocol uses arms crossed at the chest. If you need your hands to stand safely, do not force the standard position. Record the modification and ask a clinician 
26which version is appropriate; modified and standard results should not be treated as equivalent."},{q:"Does a low chair-stand count mean I will fall?",a:"No. A low count can be one part of a broader fall-risk evaluation, but it cannot predict an individual fall or identify the cause of lower performance. Clinical interpretation also considers history, medicines, vision, balance, walking, and the environment."},{q:"Should I use manual or camera-assisted counting?",a:"Either can support a personal series, but use the same method whenever possible. Manual counting is the Alumina default and camera assistance is optional and in beta. A method change can affect comparability, so label it rather than treating every count as interchangeable."}],citations:[{label:"30-Second Chair Stand Assessment",publisher:"Centers for Disease Control and Prevention",url:"https://www.cdc.gov/steadi/media/pdfs/steadi-assessment-30sec-508.pdf"},{label:"A 30-s Chair-Stand Test as a Measure of Lower Body Strength in Community-Residing Older Adults",publisher:"Research Quarterly for Exercise and Sport",url:"https://pubmed.ncbi.nlm.nih.gov/10380242/"},{label:"Reliability and Minimal Detectable Change for Sit-to-Stand Tests and the Functional Gait Assessment for Individuals With Parkinson Disease",publisher:"Journal of Geriatric Physical Therapy",url:"https://pubmed.ncbi.nlm.nih.gov/27805924/"},{label:"The Reliability and Validity of the 30-Second Chair Stand Test and Modified Four Square Step Test in Persons With Multiple Sclerosis",publisher:"Physiotherapy Theory and Practice",url:"https://pubmed.ncbi.nlm.nih.gov/35471847/"},{label:"Reliability of Digitally Instructed Self-Reported 30-Second Chair Stand Test for Lower Extremity Function",publisher:"Osteoarthritis and Cartilage Open",url:"https://pmc.ncbi.nlm.nih.gov/articles/PMC12053707/"}]},{title:"Migraine vs. Headache: How to Tell the Difference",metaTitle:"Migraine vs. Headache: Symptoms and Key Differences",description:"Learn how migraine differs from common headaches, including pain patterns, nausea, sensory sensitivity, aura, duration, and when to seek care.",slug:"migraine-vs-headache",category:"migraine",primaryKeyword:"migraine vs headache",conditions:["migraine"],assessments:["eye-brain-vision-check","reaction-and-processing-speed"],assessmentLinks:[{anchor:"eye-brain vision check",slug:"eye-brain-vision-check"}],articleLinks:[{anchor:"full migraine symptom guide",slug:"migraine-symptoms-what-to-track"},{anchor:"migraine tracking guide",slug:"how-to-track-migraine-attacks-at-home"},{anchor:"migraine duration guide",slug:"how-long-does-a-migraine-last"}],pageLinks:[{anchor:"migraine condition overview",path:"/conditions/migraine"},{anchor:"Migraine article hub",path:"/articles/migraine"}],datePublished:"2026-08-03",dateModified:"2026-08-03",launchPriority:27,readingTimeMin:10,keyTakeaways:["Migraine is a neurological disorder; headache is a symptom with many possible causes.","Nausea, sensory sensitivity, aura, fatigue, and activity-related worsening can help describe a migraine pattern.","No comparison chart or online quiz can diagnose an individual headache.","Sudden severe pain or new neurological symptoms require urgent medical evaluation."],faqs:[{q:"Can a tension headache change into a migraine attack?",a:"A headache can change in intensity or features, and people can experience more than one headache disorder. A clinician should evaluate a recurring pattern rather than assuming one headache type transformed into another."},{q:"Does migraine always include aura?",a:"No. Migraine without aura is common. Aura is a defined group of temporary neurological symptoms that occurs in only some people with migraine."},{q:"Is migraine possible when head pain is mild or absent?",a:"Yes. Some attacks involve mild pain, and aura can occur without a headache. Dizziness, nausea, visual symptoms, or sensory sensitivity still need clinical context, especially when they are new."},{q:"Can an online quiz tell whether a headache is migraine?",a:"No. A questionnaire can organize symptoms, but diagnosis requires clinical history and, when appropriate, examination or further evaluation."}],citations:[{label:"Migraine",publisher:"National Institute of Neurological Disorders and Stroke",url:"https://www.ninds.nih.gov/health-information/disorders/migraine"},{label:"Migraine Without Aura",publisher:"International Classification of Headache Disorders, 3rd edition",url:"https://ichd-3.org/1-migraine/1-1-migraine-without-aura/"},{label:"Headaches and Pregnancy",publisher:"American College of Obstetricians and Gynecologists",url:"https://www.acog.org/womens-health/faqs/headaches-and-pregnancy"}]},{title:"Is There a Test for Migraine? How Migraine Is Evaluated",metaTitle:"Is There a Migraine Test? How Diagnosis Works",description:"There is no single test that confirms migraine. Learn how clinicians use symptom history, neurological findings, and selective testing to evaluate headaches.",slug:"migraine-test-and-diagnosis",category:"migraine",primaryKeyword:"migraine test",conditions:["migraine"],assessments:["eye-brain-vision-check","reaction-and-processing-speed"],assessmentLinks:[{anchor:"eye-brain vision check",slug:"eye-brain-vision-check"}],articleLinks:[{anchor:"migraine symptom guide",slug:"migraine-symptoms-what-to-track"},{anchor:"migraine tracking guide",slug:"how-to-track-migraine-attacks-at-home"}
26,{anchor:"migraine and headache comparison",slug:"migraine-vs-headache"}],pageLinks:[{anchor:"migraine condition page",path:"/conditions/migraine"},{anchor:"migraine education hub",path:"/articles/migraine"}],datePublished:"2026-08-03",dateModified:"2026-08-03",launchPriority:28,readingTimeMin:10,keyTakeaways:["No single blood test, scan, eye test, or home task independently confirms migraine.","Diagnosis usually depends on a detailed attack history and a neurological examination.","Tests may be used to investigate another suspected cause rather than to show migraine itself.","A diary or questionnaire can support a clinical conversation but cannot make the diagnosis."],faqs:[{q:"Can a clinician diagnose migraine without ordering a scan?",a:"Yes. Migraine is commonly diagnosed from the history, symptom pattern, and examination. Imaging may be considered when findings or features raise concern for another cause."},{q:"Is any at-home test able to confirm migraine?",a:"No. Home questionnaires and tracking tasks may organize observations, but they cannot independently confirm or exclude migraine."},{q:"Can an eye examination identify migraine?",a:"An eye examination may help evaluate visual symptoms or identify an eye-related cause, but it does not provide a standalone migraine diagnosis."},{q:"What information is useful at a headache appointment?",a:"Bring attack dates, duration, pain features, associated symptoms, functional effects, medicines and timing, relevant health history, and any major change or warning symptom."}],citations:[{label:"Migraine",publisher:"National Institute of Neurological Disorders and Stroke",url:"https://www.ninds.nih.gov/health-information/disorders/migraine"},{label:"Neuroimaging for Migraine: Systematic Review and Evidence-Based Guideline",publisher:"American Headache Society",url:"https://headachejournal.onlinelibrary.wiley.com/doi/10.1111/head.13720"},{label:"Imaging: Do I Need an Imaging Study for My Headache?",publisher:"American Academy of Neurology and American Headache Society",url:"https://www.aan.com/siteassets/home-page/policy-and-guidelines/quality/quality-improvement/patient-handouts/14headacheimagingsdmtool_pg.pdf"}]},{title:"How Long Does a Migraine Last? Understanding the Four Phases",metaTitle:"How Long Does a Migraine Last? Phases and Duration",description:"A migraine may include prodrome, aura, headache, and postdrome. Learn how phase timing varies and when prolonged symptoms need medical attention.",slug:"how-long-does-a-migraine-last",category:"migraine",primaryKeyword:"how long does a migraine last",conditions:["migraine"],assessments:["reaction-and-processing-speed","eye-brain-vision-check"],assessmentLinks:[{anchor:"reaction and processing speed assessment",slug:"reaction-and-processing-speed"}],articleLinks:[{anchor:"migraine symptom guide",slug:"migraine-symptoms-what-to-track"},{anchor:"migraine tracking guide",slug:"how-to-track-migraine-attacks-at-home"},{anchor:"migraine evaluation guide",slug:"migraine-test-and-diagnosis"},{anchor:"aura comparison guide",slug:"migraine-with-aura-vs-without-aura"}],pageLinks:[{anchor:"migraine condition overview",path:"/conditions/migraine"}],datePublished:"2026-08-03",dateModified:"2026-08-03",launchPriority:29,readingTimeMin:10,keyTakeaways:["The headache phase may last hours to days, while symptoms can begin before and continue after pain.","Prodrome, aura, headache, and postdrome do not occur in every attack or follow a rigid schedule.","Track the first symptom and return to baseline, not only the period of head pain.","New, unusual, severe, or prolonged symptoms require professional evaluation."],faqs:[{q:"Is it possible for a migraine attack to continue for several days?",a:"Yes. Some attacks and their recovery symptoms can span several days. A prolonged, disabling, worsening, or unusual episode should be discussed with a clinician rather than labeled at home."},{q:"Why can symptoms continue after migraine pain improves?",a:"Postdrome can include fatigue, cognitive fog, dizziness, mood change, or lingering sensory sensitivity. Persistent or atypical symptoms still need clinical context."},{q:"What is the usual time course of a migraine aura?",a:"Typical aura symptoms often develop gradually and individual symptoms commonly last minutes rather than many hours. First-time, sudden, prolonged, or incompletely resolving symptoms need prompt evaluation."},{q:"When does a long-lasting migraine require urgent care?",a:"Seek urgent care for sudden severe onset, new neurological deficits, seizure, fainting, fever with stiff neck, severe dehydration, pregnancy-related concerns, or a major change from the established pattern."}],citations:[{label:"Migraine",publisher:"National Institute of Neurological Disorders and Stroke",url:"https://www.ninds.nih.gov/health-information/disorders/migraine"},{label:"Migraine Without Aura",publisher:"International Classification of Headache Disorders, 3rd edition",url:"https://ichd-3.org/1-migraine/1-1-migraine-without-aura/"},{label:"Migraine With Aura",publisher:"International Classification of Headache Disorders, 3rd edition",url:"https://ichd-3.org/1-migraine/1-2-migraine-with-aura/"}]},{title:"Migraine Symptoms in Women: Hormones, Cycles, and Changing Patterns",metaTitle:"Migraine Symptoms in Women: Hormones and Patterns",description:"Learn how migraine patterns may change with menstrual cycles, pregnancy, postpartum, perimenopause, and menopause, and what details to track.",slug:"migraine-symptoms-in-women",category:"migraine",primaryKeyword:"migraine symptoms in women",conditions:["migraine"],assessments:["eye-brain-vision-check","reaction-and-processing-speed"],assessmentLinks:[{anchor:"eye-brain vision check",slug:"eye-brain-vision-check"}],articleLinks:[{anchor:"complete migraine symptom guide",slug:"migraine-symptoms-what-to-track"},{anchor:"migraine tracking guide",slug:"how-to-track-migraine-attacks-at-home"}
26,{anchor:"migraine duration guide",slug:"how-long-does-a-migraine-last"},{anchor:"aura comparison guide",slug:"migraine-with-aura-vs-without-aura"}],pageLinks:[{anchor:"migraine condition page",path:"/conditions/migraine"}],datePublished:"2026-08-03",dateModified:"2026-08-03",launchPriority:30,readingTimeMin:10,keyTakeaways:["Migraine symptoms are broadly similar across sexes, but timing and burden may shift with hormonal transitions.","Not every attack in a woman is hormonally driven; repeated timing is more useful than assumption.","Pregnancy and postpartum headaches require a lower threshold for professional evaluation.","Track attacks alongside cycle or life-stage context without changing medication independently."],faqs:[{q:"Why can migraine attacks occur around a menstrual period?",a:"Hormonal changes around menstruation can influence migraine susceptibility in some people. A repeated cycle-linked pattern is more informative than one coincidental attack."},{q:"Do migraine patterns always improve during pregnancy?",a:"No. Patterns may improve, worsen, remain unchanged, or appear for the first time. New, severe, or unusual headache during pregnancy needs professional evaluation."},{q:"Can migraine change after menopause?",a:"Yes. Some people improve after hormonal fluctuations settle, while others continue to have attacks. A clinician can evaluate a new or changing later-life pattern."},{q:"What belongs in a menstrual migraine record?",a:"Record cycle timing, earliest symptom, headache and recovery duration, aura, nausea, sensory sensitivity, function, sleep, medicines and timing, and relevant pregnancy or postpartum context."}],citations:[{label:"Migraine",publisher:"National Institute of Neurological Disorders and Stroke",url:"https://www.ninds.nih.gov/health-information/disorders/migraine"},{label:"Headaches in Pregnancy and Postpartum",publisher:"American College of Obstetricians and Gynecologists",url:"https://www.acog.org/clinical/clinical-guidance/clinical-practice-guideline/articles/2022/05/headaches-in-pregnancy-and-postpartum"},{label:"Hormonal and Menstrual Migraine",publisher:"American Migraine Foundation",url:"https://americanmigrainefoundation.org/resource-library/hormonal-menstrual-migraine/"}]},{title:"Migraine With Aura vs. Without Aura: Symptoms and Differences",metaTitle:"Migraine With Aura vs. Without Aura: Key Differences",description:"Compare migraine with and without aura, including visual, sensory, speech, and headache symptoms and when new neurological changes need urgent care.",slug:"migraine-with-aura-vs-without-aura",category:"migraine",primaryKeyword:"migraine with aura vs without aura",conditions:["migraine"],assessments:["eye-brain-vision-check","reaction-and-processing-speed"],assessmentLinks:[{anchor:"eye-brain vision check",slug:"eye-brain-vision-check"}],articleLinks:[{anchor:"migraine symptom guide",slug:"migraine-symptoms-what-to-track"},{anchor:"migraine duration guide",slug:"how-long-does-a-migraine-last"},{anchor:"migraine evaluation guide",slug:"migraine-test-and-diagnosis"}],pageLinks:[{anchor:"migraine condition overview",path:"/conditions/migraine"},{anchor:"migraine article collection",path:"/articles/migraine"}],datePublished:"2026-08-03",dateModified:"2026-08-03",launchPriority:31,readingTimeMin:10,keyTakeaways:["Aura is a temporary neurological symptom phase; many migraine attacks occur without it.","Typical aura may involve gradually developing visual, sensory, or speech/language changes.","Aura can occur without headache, but first or unusual symptoms need medical evaluation.","Sudden neurological deficits should be treated as a possible emergency, not self-labeled as aura."],faqs:[{q:"Can an aura occur when no headache follows?",a:"Yes. Typical aura without headache is recognized, but a first episode or a new pattern should be evaluated because other neurological or eye conditions can appear similar."},{q:"How long do typical aura symptoms usually continue?",a:"Individual typical aura symptoms commonly last 5 to 60 minutes and often develop gradually. Sudden, prolonged, or incompletely resolving symptoms need prompt professional assessment."},{q:"Does every person with migraine eventually experience aura?",a:"No. Many people have migraine without aura, and some people experience both attack types at different times."},{q:"Which visual or neurological symptoms should be treated as an emergency?",a:"Seek emergency care for sudden weakness, facial droop, speech difficulty, confusion, loss of vision, seizure, fainting, or any abrupt deficit that could represent stroke or another urgent condition."}],citations:[{label:"Migraine With Aura",publisher:"International Classification of Headache Disorders, 3rd edition",url:"https://ichd-3.org/1-migraine/1-2-migraine-with-aura/"},{label:"Migraine With Typical Aura",publisher:"International Classification of Headache Disorders, 3rd edition",url:"https://ichd-3.org/1-migraine/1-2-migraine-with-aura/1-2-1-migraine-with-typical-aura/"},{label:"Migraine",publisher:"National Institute of Neurological Disorders and Stroke",url:"https://www.ninds.nih.gov/health-information/disorders/migraine"}]},{title:"Concussion Eye Tests: What Clinicians Check and What Home Tests Cannot Diagnose",metaTitle:"Concussion Eye Tests: Uses, Limits, and Warning Signs",description:"Learn what clinicians may examine after concussion, including pupils, eye movement, tracking, and visual symptoms—and why home tests cannot diagnose it.",slug:"concussion-eye-tests",category:"concussion",primaryKeyword:"concussion eye test",conditions:["concussion"],assessments:["eye-brain-vision-check","walking-and-movement"],assessmentLinks:[{anchor:"eye-brain vision check",slug:"eye-brain-vision-check"},{anchor:"walking and movement assessment",slug:"walking-and-movement"}],articleLinks:[{anchor:"concussion symptom tracking guide",slug:"how-to-track-concussion-symptoms-during-recovery"},{anchor:"visual motor test guide",slug:"visual-motor-test"}
26,{anchor:"gait analysis guide",slug:"gait-analysis-at-home-balance-changes-to-track"}],pageLinks:[{anchor:"concussion condition page",path:"/conditions/concussion"}],datePublished:"2026-08-03",dateModified:"2026-08-03",launchPriority:32,readingTimeMin:9,keyTakeaways:["No pupil check, eye-tracking task, or other home eye test can confirm or exclude concussion.","Clinicians assess vision and eye movement as one part of a broader injury evaluation.","Device, baseline, fatigue, pain, practice, and screen conditions can change home performance.","Unequal pupils or worsening neurological signs after injury can require emergency care."],faqs:[{q:"Can an eye movement test confirm a concussion?",a:"No. Ocular and vestibular findings may contribute to a comprehensive clinical evaluation, but no single eye test independently confirms or excludes concussion."},{q:"Do pupils always change after a concussion?",a:"No. Pupils may appear normal. One pupil becoming larger than the other after an injury is a danger sign that requires emergency evaluation."},{q:"Can concussion affect eye tracking?",a:"It can be associated with changes or symptom provocation during pursuits, saccades, convergence, or vestibular-ocular tasks, but these findings are not specific to concussion."},{q:"Is it safe to test a child for concussion at home?",a:"A caregiver may observe symptoms, but should not rely on a home test for diagnosis or clearance. A suspected concussion in a child needs evaluation and activity guidance from a qualified professional."}],citations:[{label:"Symptoms of Mild TBI and Concussion",publisher:"Centers for Disease Control and Prevention",url:"https://www.cdc.gov/traumatic-brain-injury/signs-symptoms/index.html"},{label:"A Brief Vestibular/Ocular Motor Screening Assessment to Evaluate Concussions",publisher:"American Journal of Sports Medicine",url:"https://pubmed.ncbi.nlm.nih.gov/25106780/"},{label:"Oculomotor-Based Vision Assessment in Mild Traumatic Brain Injury: A Systematic Review",publisher:"Journal of Head Trauma Rehabilitation",url:"https://pubmed.ncbi.nlm.nih.gov/26291632/"}]},{title:"Difficulty Walking: Neurological Signs to Track and When to Seek Care",metaTitle:"Difficulty Walking: Neurological Signs and Next Steps",description:"Difficulty walking can have neurological, musculoskeletal, medication-related, and other causes. Learn what changes to track and when to seek care.",slug:"difficulty-walking-neurological-signs",category:"movement-symptoms",primaryKeyword:"difficulty walking causes",conditions:["movement-symptoms","parkinsons-disease","multiple-sclerosis","concussion"],assessments:["walking-and-movement","sit-to-stand-test"],assessmentLinks:[{anchor:"walking and movement assessment",slug:"walking-and-movement"}],articleLinks:[{anchor:"gait analysis guide",slug:"gait-analysis-for-neurological-conditions"},{anchor:"coordination testing guide",slug:"coordination-test-at-home"}],pageLinks:[{anchor:"Parkinson's condition page",path:"/conditions/parkinsons-disease"},{anchor:"multiple sclerosis condition page",path:"/conditions/multiple-sclerosis"},{anchor:"concussion condition page",path:"/conditions/concussion"}],datePublished:"2026-08-03",dateModified:"2026-08-03",launchPriority:33,readingTimeMin:9,keyTakeaways:["Difficulty walking is a symptom with neurological, musculoskeletal, cardiovascular, sensory, and medication-related possibilities.","Describe onset, gait changes, falls, associated symptoms, and function instead of assigning a diagnosis.","Home measurements are most useful against a personal baseline under safe, consistent conditions.","Sudden weakness, speech change, severe dizziness, or abrupt inability to walk can be an emergency."],faqs:[{q:"Why might walking suddenly become unsteady?",a:"Sudden unsteadiness can have urgent neurological, cardiovascular, vestibular, medication-related, or other causes. Abrupt change—especially with weakness, speech, facial, vision, or coordination symptoms—needs immediate evaluation."},{q:"What happens during a clinical gait assessment?",a:"A clinician may observe ordinary walking, speed, step pattern, turning, balance, strength, sensation, coordination, reflexes, and mobility aids, selecting tasks based on safety and symptoms."},{q:"Can a phone measure changes in walking?",a:"A phone may record selected movement features under defined conditions, but device data cannot diagnose a cause, reproduce a complete examination, or establish that walking is safe."},{q:"When should walking difficulty be discussed with a neurologist?",a:"Persistent, progressive, unexplained, or function-limiting changes should be evaluated. A primary care clinician can help determine whether neurological, orthopedic, vestibular, cardiovascular, or rehabilitation referral is appropriate."}],citations:[{label:"Walking Abnormalities",publisher:"MedlinePlus Medical Encyclopedia",url:"https://medlineplus.gov/ency/article/003199.htm"},{label:"Neurological Exam",publisher:"MedlinePlus",url:"https://medlineplus.gov/lab-tests/neurological-exam/"}
26,{label:"Observational Gait Assessment Scales in Patients With Walking Disorders",publisher:"BioMed Research International",url:"https://pubmed.ncbi.nlm.nih.gov/31781597/"}]},{title:"Mild Cognitive Impairment: Symptoms, Evaluation, and What Happens Next",metaTitle:"Mild Cognitive Impairment: Symptoms and Evaluation",description:"Learn what mild cognitive impairment is, how it differs from normal aging and dementia, how clinicians evaluate it, and why changes are tracked over time.",slug:"mild-cognitive-impairment-guide",category:"dementia-related-concerns",primaryKeyword:"mild cognitive impairment",conditions:["dementia-related-concerns","memory-concerns","cognitive-change","caregiver-support"],assessments:["memory-and-recall","reaction-and-processing-speed"],assessmentLinks:[{anchor:"memory and recall assessment",slug:"memory-and-recall"}],articleLinks:[{anchor:"normal aging, MCI, and dementia comparison",slug:"normal-aging-vs-mild-cognitive-impairment-vs-dementia"},{anchor:"memory test at home guide",slug:"memory-test-at-home"},{anchor:"cognitive screening and assessment guide",slug:"cognitive-assessment-vs-cognitive-screening"},{anchor:"caregiver cognitive tracking guide",slug:"caregiver-guide-to-tracking-cognitive-change"}],pageLinks:[{anchor:"dementia-related concerns page",path:"/conditions/dementia-related-concerns"}],datePublished:"2026-08-03",dateModified:"2026-08-03",launchPriority:34,readingTimeMin:10,keyTakeaways:["MCI involves measurable cognitive change while much day-to-day independence remains preserved.","MCI is not the same as dementia and does not always progress to dementia.","Evaluation considers cognition, function, health history, medicines, mood, sleep, hearing, vision, and other contributors.","Respectful longitudinal tracking should describe real-world change without taking over the person's decisions."],faqs:[{q:"Can mild cognitive impairment improve?",a:"Some people remain stable or improve, particularly when contributing factors are identified and addressed, while others progress. Follow-up is important because outcomes vary."},{q:"How quickly does MCI progress?",a:"There is no single timeline. Some people remain stable for years, some improve, and some experience gradual progression. Clinicians follow cognition and daily function over time."},{q:"Can a person with MCI continue living independently?",a:"Many people with MCI remain largely independent, although reminders or support with complex tasks may help. Safety and support should be individualized and discussed respectfully."},{q:"Is MCI simply another name for early dementia?",a:"No. MCI and dementia differ in the degree to which cognitive change interferes with independent daily function. MCI may have multiple causes and does not always progress."}],citations:[{label:"What Is Mild Cognitive Impairment?",publisher:"National Institute on Aging",url:"https://www.nia.nih.gov/health/memory-loss-and-forgetfulness/what-mild-cognitive-impairment"},{label:"Assessing Cognitive Impairment in Older Patients",publisher:"National Institute on Aging",url:"https://www.nia.nih.gov/health/health-care-professionals-information/assessing-cognitive-impairment-older-patients"},{label:"Cognitive Testing",publisher:"MedlinePlus",url:"https://medlineplus.gov/lab-tests/cognitive-testing/"}]},{title:"MoCA Scores Explained: What the Results Can and Cannot Mean",metaTitle:"MoCA Scores Explained: Meaning, Limits, and Next Steps",description:"Learn what a MoCA score may indicate, why education, language, health, and testing conditions matter, and why results do not diagnose dementia.",slug:"moca-scores-explained",category:"dementia-related-concerns",primaryKeyword:"MoCA scores explained",conditions:["dementia-related-concerns","memory-concerns","cognitive-change"],assessments:["memory-and-recall","visual-matching-tasks"],assessmentLinks:[{anchor:"memory and recall assessment",slug:"memory-and-recall"}],articleLinks:[{anchor:"MoCA and at-home assessment comparison",slug:"moca-test-vs-at-home-cognitive-assessment"},{anchor:"cognitive screening and assessment guide",slug:"cognitive-assessment-vs-cognitive-screening"}
26,{anchor:"memory test at home guide",slug:"memory-test-at-home"},{anchor:"mild cognitive impairment guide",slug:"mild-cognitive-impairment-guide"}],pageLinks:[{anchor:"dementia-related concerns page",path:"/conditions/dementia-related-concerns"}],datePublished:"2026-08-03",dateModified:"2026-08-03",launchPriority:35,readingTimeMin:9,keyTakeaways:["The MoCA is a copyrighted cognitive screening instrument, not a standalone diagnosis.","A total score must be interpreted with language, education, health, function, and testing conditions.","A lower result can support further evaluation but cannot identify dementia or its cause.","At-home tracking and standardized clinical screening answer different questions."],faqs:[{q:"Is there one normal MoCA score for every person?",a:"No. Interpretation depends on the official version, context, education, language, sensory abilities, health, function, and the qualified professional's purpose for using the screen."},{q:"Does a low MoCA result establish dementia?",a:"No. A result may support further evaluation, but dementia diagnosis also requires history, functional assessment, examination, and investigation of possible causes."},{q:"Should the MoCA be taken casually online?",a:"No. The official test and instructions are controlled by MoCA Cognition. Unofficial copies or self-administration should not be treated as valid clinical screening."},{q:"How often should MoCA screening be repeated?",a:"A qualified professional should choose whether and when to repeat it based on the clinical question, official requirements, prior testing, alternate forms, and the risk of practice or context effects."}],citations:[{label:"MoCA Training and Certification FAQ",publisher:"MoCA Cognition",url:"https://mocacognition.com/faq/"},{label:"MoCA Permissions and Web-Use Requirements",publisher:"MoCA Cognition",url:"https://mocacognition.com/permission"},{label:"Assessing Cognitive Impairment in Older Patients",publisher:"National Institute on Aging",url:"https://www.nia.nih.gov/health/health-care-professionals-information/assessing-cognitive-impairment-older-patients"},{label:"Cognitive Testing",publisher:"MedlinePlus",url:"https://medlineplus.gov/lab-tests/cognitive-testing/"}]},{title:"Parkinson's Without Tremor: Signs Beyond Shaking",metaTitle:"Parkinson's Without Tremor: Symptoms Beyond Shaking",description:"Parkinson's disease does not always begin with tremor. Learn about slowness, stiffness, gait changes, reduced arm swing, and non-motor symptoms.",slug:"parkinsons-without-tremor",category:"parkinsons-disease",primaryKeyword:"Parkinson's without tremor",conditions:["parkinsons-disease","movement-symptoms"],assessments:["tapping-and-coordination","walking-and-movement"],assessmentLinks:[{anchor:"tapping and coordination assessment",slug:"tapping-and-coordination"}],articleLinks:[{anchor:"bradykinesia guide",slug:"bradykinesia-at-home"},{anchor:"finger tapping test guide",slug:"finger-tapping-test-neurology"},{anchor:"gait analysis guide",slug:"gait-analysis-at-home-balance-changes-to-track"},{anchor:"essential tremor comparison",slug:"essential-tremor-vs-parkinsons-tremor"},{anchor:"voice changes guide",slug:"voice-changes-parkinsons"}],pageLinks:[{anchor:"Parkinson's condition page",path:"/conditions/parkinsons-disease"}],datePublished:"2026-08-03",dateModified:"2026-08-03",launchPriority:36,readingTimeMin:9,keyTakeaways:["Tremor is not present in every person with Parkinson's disease.","Slowness, rigidity, reduced automatic movement, gait change, and non-motor symptoms can be prominent.","Many other conditions cause stiffness, slowness, or walking changes, so examination is essential.","Home tapping or gait data can describe change but cannot diagnose Parkinson's disease."],faqs:[{q:"Can slowness be the first noticeable Parkinson's symptom?",a:"It can be, but pain, weakness, arthritis, depression, medication effects, and other neurological or medical conditions can also cause slowness. A clinician must evaluate the pattern."},{q:"Can Parkinson's disease begin with walking changes?",a:"Walking or reduced arm-swing changes may be noticed early in some people, although balance and gait problems have many possible causes."},{q:"How is Parkinson's evaluated when tremor is absent?",a:"A clinician reviews the history and medicines and performs a neurological movement examination, looking at bradykinesia, rigidity, gait, posture, and other features while considering alternative causes."},{q:"Can a tapping test diagnose Parkinson's disease?",a:"No. Tapping may document personal speed, rhythm, or movement-size changes, but consumer performance cannot establish bradykinesia or diagnose a movement disorder."}],citations:[{label:"Parkinson's Disease: Challenges, Progress, and Promise",publisher:"National Institute of Neurological Disorders and Stroke",url:"https://www.ninds.nih.gov/current-research/focus-disorders/parkinsons-disease-research/parkinsons-disease-challenges-progress-and-promise"},{label:"Parkinson's Disease",publisher:"National Institute on Aging",url:"https://www.nia.nih.gov/health/parkinsons-disease/parkinsons-disease"},{label:"10 Early Signs of Parkinson's Disease",publisher:"Parkinson's Foundation",url:"https://www.parkinson.org/understanding-parkinsons/10-early-signs"}]},{title:"Spiral Test for Tremor: What It Shows and How to Track",metaTitle:"Spiral Test for Tremor: Tracking Guide | Alumina Health",description:"Learn what a spiral test for tremor shows, how freehand drawing differs from guided tracing, and how to track hand steadiness without diagnosing yourself.",slug:"spiral-test-for-tremor",category:"essential-tremor",primaryKeyword:"spiral test for tremor",conditions:["essential-tremor","parkinsons-disease","movement-symptoms"],assessments:["tremor-and-hand-control","shape-tracing"],assessmentLinks:[{anchor:"tremor and hand control assessment",slug:"tremor-and-hand-control"}
26,{anchor:"shape tracing assessment",slug:"shape-tracing"}],articleLinks:[{anchor:"essential tremor versus Parkinson’s tremor",slug:"essential-tremor-vs-parkinsons-tremor"},{anchor:"essential tremor triggers",slug:"essential-tremor-triggers"}],linkAnchors:["spiral test for tremor","spiral drawing test for tremor","Archimedes spiral test"],datePublished:"2026-09-23",dateModified:"2026-09-23",launchPriority:37,readingTimeMin:7,keyTakeaways:["A spiral captures hand movement during drawing; it cannot diagnose the cause of shaking by itself.","Freehand drawing and guided tracing are different tasks and should be compared in separate series.","Use the same hand, input method, posture, and task when comparing repeated samples.","Track everyday function and context alongside the drawing, then discuss persistent changes with a clinician."],faqs:[{q:"Does a wavy spiral confirm essential tremor?",a:"No. Waviness is an observation during a movement task, not a diagnosis. A clinician considers history, other symptoms, medicines, and an examination before identifying a cause. A smooth spiral also cannot rule out a movement disorder."},{q:"Are paper spirals and touchscreen traces comparable?",a:"Keep them in separate series. Surface friction, scale, input method, and whether you copy or follow a line all change the task. A paper sample cannot be converted directly into an app score."},{q:"Should I keep my best spiral or every planned sample?",a:"Keep the samples from your planned sessions, including difficult ones, and label interruptions or setup problems. Selecting only the neatest drawing hides variability and makes the record less representative."},{q:"Can a relative steady my hand while I draw?",a:"A relative can help position the device, read instructions, or record context. Holding or guiding the drawing hand changes what is measured; label any assistance and avoid comparing assisted and unassisted samples as equivalent."}],citations:[{label:"Essential tremor test",publisher:"Mayo Clinic",url:"https://www.mayoclinic.org/diseases-conditions/essential-tremor/multimedia/essential-tremor-test/img-20177820"},{label:"How to use pen and paper tasks to aid tremor diagnosis in the clinic",publisher:"Practical Neurology",url:"https://pmc.ncbi.nlm.nih.gov/articles/PMC5739823/"},{label:"A digital assessment system for evaluating kinetic tremor in essential tremor and Parkinson’s disease",publisher:"BMC Neurology",url:"https://pmc.ncbi.nlm.nih.gov/articles/PMC5845296/"},{label:"Tremor",publisher:"National Institute of Neurological Disorders and Stroke",url:"https://www.ninds.nih.gov/sites/default/files/2025-05/Tremor.pdf"}]},{title:"Contrast Sensitivity Test at Home: Uses and Limits",metaTitle:"Contrast Sensitivity Test at Home | Alumina Health",description:"Explore contrast sensitivity testing at home, how it differs from visual acuity, and how consistent low-contrast tasks can support tracking between visits.",slug:"contrast-sensitivity-test-at-home",category:"neurology",primaryKeyword:"contrast sensitivity test at home",conditions:["neurology","multiple-sclerosis"],assessments:["low-contrast-vision"],assessmentLinks:[{anchor:"low-contrast vision assessment",slug:"low-contrast-vision"}],articleLinks:[{anchor:"low-contrast vision changes in MS",slug:"low-contrast-vision-changes-in-multiple-sclerosis"},{anchor:"visual-motor testing",slug:"visual-motor-test"}],linkAnchors:["contrast sensitivity test at home","contrast sensitivity testing at home","contrast sensitivity versus visual acuity"],datePublished:"2026-09-23",dateModified:"2026-09-23",launchPriority:38,readingTimeMin:7,keyTakeaways:["Contrast sensitivity concerns faint differences between a target and its background, not just letter size.","Low-contrast letter tasks and clinical contrast-sensitivity tests do not produce interchangeable scores.","Device, brightness, lighting, viewing distance, and corrective lenses can change a home result.","Repeated home observations support a conversation with an eye-care professional; they do not replace an exam."],faqs:[{q:"Can I print a contrast chart from the internet for reliable scores?",a:"A generic printout is not a calibrated chart. Printer settings, ink, paper, scaling, and illumination affect its appearance. Use the specific materials and instructions recommended by your eye-care professional when a clinical measurement is needed."},{q:"Does 20/20 vision guarantee normal contrast sensitivity?",a:"No. High-contrast acuity and contrast sensitivity describe different aspects of vision. Difficulty seeing faint detail deserves discussion even when small black letters on a bright chart remain readable."},{q:"Can I compare my contrast result across two phone models?",a:"Treat a device change as a break in the comparison series unless the test has established comparability. Display properties and settings may affect the stimulus, so equal-looking numerical scores need not represent equal performance."},{q:"Does a low contrast result identify the cause of blurred vision?",a:"No. A result may reflect vision, testing conditions, or task performance. It cannot identify an eye disease, neurological condition, or the need for a prescription change. New or persistent symptoms require professional evaluation."}],citations:[{label:"SPARCS and Pelli–Robson contrast sensitivity testing in normal controls and patients with cataract",publisher:"Eye",url:"https://pmc.ncbi.nlm.nih.gov/articles/PMC5437330/"},{label:"Spaeth/Richman Contrast Sensitivity Center",publisher:"SPARCS",url:"https://www.sparcscontrastcenter.com/home.php"},{label:"Low Vision",publisher:"National Eye Institute",url:"https://www.nei.nih.gov/eye
26-health-information/eye-conditions-and-diseases/low-vision"},{label:"Retinal Detachment",publisher:"National Eye Institute",url:"https://www.nei.nih.gov/eye-health-information/eye-conditions-and-diseases/retinal-detachment"}]}],B1="modulepreload",U1=function(a){return"/"+a},Dg={},ue=function(s,o,r){let u=Promise.resolve();if(o&&o.length>0){let g=function(p){return Promise.all(p.map(b=>Promise.resolve(b).then(f=>({status:"fulfilled",value:f}),f=>({status:"rejected",reason:f}))))};document.getElementsByTagName("link");const h=document.querySelector("meta[property=csp-nonce]"),y=h?.nonce||h?.getAttribute("nonce");u=g(o.map(p=>{if(p=U1(p),p in Dg)return;Dg[p]=!0;const b=p.endsWith(".css"),f=b?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${p}"]${f}`))return;const w=document.createElement("link");if(w.rel=b?"stylesheet":B1,b||(w.as="script"),w.crossOrigin="",w.href=p,y&&w.setAttribute("nonce",y),document.head.appendChild(w),b)return new Promise((S,M)=>{w.addEventListener("load",S),w.addEventListener("error",()=>M(new Error(`Unable to preload CSS for ${p}`)))})}))}function d(h){const y=new Event("vite:preloadError",{cancelable:!0});if(y.payload=h,window.dispatchEvent(y),!y.defaultPrevented)throw h}return u.then(h=>{for(const y of h||[])y.status==="rejected"&&d(y.reason);return s().catch(d)})},V1={"neurological-assessment-at-home":()=>ue(()=>import("./neurological-assessment-at-home-BtwpbtvP.js"),[]).then(a=>a.article),"cognitive-assessment-vs-cognitive-screening":()=>ue(()=>import("./cognitive-assessment-vs-cognitive-screening-DqpROhmI.js"),[]).then(a=>a.article),"memory-test-at-home":()=>ue(()=>import("./memory-test-at-home-CZkYP_a4.js"),[]).then(a=>a.article),"cognitive-test-at-home":()=>ue(()=>import("./cognitive-test-at-home-BEd6rmfk.js"),[]).then(a=>a.article),"reaction-time-test-results":()=>ue(()=>import("./reaction-time-test-results-Bqr8Xe3V.js"),[]).then(a=>a.article),"moca-test-vs-at-home-cognitive-assessment":()=>ue(()=>import("./moca-test-vs-at-home-cognitive-assessment-DhYBf54k.js"),[]).then(a=>a.article),"neurological-symptom-tracker":()=>ue(()=>import("./neurological-symptom-tracker-BDziG9lM.js"),[]).then(a=>a.article),"parkinsons-off-periods-tracking":()=>ue(()=>import("./parkinsons-off-periods-tracking-R2DBMLaQ.js"),[]).then(a=>a.article),"processing-speed-test":()=>ue(()=>import("./processing-speed-test-Clg0CfG7.js"),[]).then(a=>a.article),"finger-tapping-test-neurology":()=>ue(()=>import("./finger-tapping-test-neurology-B5GmxrJ3.js"),[]).then(a=>a.article),"brain-health-neurology-apps":()=>ue(()=>import("./brain-health-neurology-apps-Cz74r8SK.js"),[]).then(a=>a.article),"medication-timing-symptom-tracking":()=>ue(()=>import("./medication-timing-symptom-tracking-Boiz_iRR.js"),[]).then(a=>a.article),"digital-cognitive-assessment":()=>ue(()=>import("./digital-cognitive-assessment-RBLIe6sQ.js"),[]).then(a=>a.article),"remote-neurological-monitoring":()=>ue(()=>import("./remote-neurological-monitoring-Dg9H91Hg.js"),[]).then(a=>a.article),"neurologist-appointment-checklist":()=>ue(()=>import("./neurologist-appointment-checklist-1cld-Dku.js"),[]).then(a=>a.article),"telehealth-neurology-appointment":()=>ue(()=>import("./telehealth-neurology-appointment-Cb7y050O.js"),[]).then(a=>a.article),"coordination-test-at-home":()=>ue(()=>import("./coordination-test-at-home-DHugBbw-.js"),[]).then(a=>a.article),"visual-motor-test":()=>ue(()=>import("./visual-motor-test-Cha0rQ-k.js"),[]).then(a=>a.article),"voice-changes-parkinsons":()=>ue(()=>import("./voice-changes-parkinsons-COQdFOgi.js"),[]).then(a=>a.article),"bradykinesia-at-home":()=>ue(()=>import("./bradykinesia-at-home-7JZwsN8p.js"),[]).then(a=>a.article),"handwriting-changes-parkinsons-essential-tremor":()=>ue(()=>import("./handwriting-changes-parkinsons-essential-tremor-BCpv1VhB.js"),[]).then(a=>a.article),"essential-tremor-triggers":()=>ue(()=>import("./essential-tremor-triggers-DQReURP_.js"),[]).then(a=>a.article),"multiple-sclerosis-fatigue-tracking":()=>ue(()=>import("./multiple-sclerosis-fatigue-tracking-DeWWfalN.js"),[]).then(a=>a.article),"cognitive-changes-multiple-sclerosis":()=>ue(()=>import("./cognitive-changes-multiple-sclerosis-DjcgwBue.js"),[]).then(a=>a.article),"heat-sensitivity-multiple-sclerosis":()=>ue(()=>
26import("./heat-sensitivity-multiple-sclerosis-Bybf1i-Q.js"),[]).then(a=>a.article),"30-second-sit-to-stand-test":()=>ue(()=>import("./30-second-sit-to-stand-test-yUTZXPgk.js"),[]).then(a=>a.article),"migraine-vs-headache":()=>ue(()=>import("./migraine-vs-headache-CH3ku_Bt.js"),[]).then(a=>a.article),"migraine-test-and-diagnosis":()=>ue(()=>import("./migraine-test-and-diagnosis-HKb05bS9.js"),[]).then(a=>a.article),"how-long-does-a-migraine-last":()=>ue(()=>import("./how-long-does-a-migraine-last-CrLfKjCL.js"),[]).then(a=>a.article),"migraine-symptoms-in-women":()=>ue(()=>import("./migraine-symptoms-in-women-Ls-VsU2E.js"),[]).then(a=>a.article),"migraine-with-aura-vs-without-aura":()=>ue(()=>import("./migraine-with-aura-vs-without-aura-BihYQ2TP.js"),[]).then(a=>a.article),"concussion-eye-tests":()=>ue(()=>import("./concussion-eye-tests-0pxRyDbt.js"),[]).then(a=>a.article),"difficulty-walking-neurological-signs":()=>ue(()=>import("./difficulty-walking-neurological-signs-kc5CvuNI.js"),[]).then(a=>a.article),"mild-cognitive-impairment-guide":()=>ue(()=>import("./mild-cognitive-impairment-guide-DXFcYh9l.js"),[]).then(a=>a.article),"moca-scores-explained":()=>ue(()=>import("./moca-scores-explained-wQw5G0NO.js"),[]).then(a=>a.article),"parkinsons-without-tremor":()=>ue(()=>import("./parkinsons-without-tremor-DDKjAGVG.js"),[]).then(a=>a.article),"spiral-test-for-tremor":()=>ue(()=>import("./spiral-test-for-tremor-CFj_7CnH.js"),[]).then(a=>a.article),"contrast-sensitivity-test-at-home":()=>ue(()=>import("./contrast-sensitivity-test-at-home-CnMZ_tYZ.js"),[]).then(a=>a.article)},yv=[{slug:"early-signs-of-parkinsons-disease",category:"parkinsons-disease",title:"Early Signs of Parkinson's Disease to Track at Home",description:"The early signs of Parkinson's disease: resting tremor, slower movement, handwriting changes, sleep and smell shifts, and how to track them between visits.",primaryKeyword:"early signs of Parkinson's disease",conditions:["parkinsons-disease"],assessments:["tremor-and-hand-control","tapping-and-coordination","walking-and-movement"],assessmentLinks:[{anchor:"tremor and hand-control",slug:"tremor-and-hand-control"}],linkAnchors:["early signs of Parkinson's disease","resting tremor","bradykinesia","movement disorder specialist"],datePublished:"2026-07-10",dateModified:"2026-07-10",readingTimeMin:8,keyTakeaways:["Early Parkinson's signs are subtle: rest tremor, slower movement, smaller handwriting, gait or facial changes.","Non-motor signs, including lost smell, acting out dreams, constipation, and low mood, can appear years before tremor.","Symptoms vary day to day, so a dated log is far more reliable than memory at a neurology visit.","Home tracking supplements, but never replaces, evaluation by a movement disorder specialist."],body:[{type:"p",text:"Parkinson's disease usually announces itself quietly. The earliest signs of Parkinson's disease are easy to write off as ageing, stress, or a bad night's sleep: a slight tremor when the hand is resting on the arm of a chair, a signature that has started to shrink, a family member noticing that your face is less expressive than it used to be. Because the change is gradual, the person living with it is often the last to notice. This guide walks through the motor and non-motor changes that most commonly show up first, why they matter, and how a simple tracking habit at home can give your care team a much clearer picture at the next appointment."},{type:"callout",variant:"note",text:"None of the signs described here are diagnostic on their own. Many have benign explanations. Use this article to know what to observe and log, and take that log to a qualified clinician."},{type:"h2",id:"motor-signs",text:"Motor signs that often appear first"},{type:"p",text:"Motor symptoms are what most people associate with Parkinson's, but in the earliest stage they are usually asymmetric, appearing on one side of the body first, and mild enough that they only show up during specific tasks. Four patterns are worth watching for."}
26,{type:"definition",term:"Resting tremor",definition:"A rhythmic shaking, usually in a hand or finger, that appears when the limb is at rest and quiets when the hand is used for a task. It is the sign the public associates most with Parkinson's, but roughly one in five people never develop tremor at all."},{type:"definition",term:"Bradykinesia (slowness of movement)",definition:"Everyday movements, such as buttoning a shirt, brushing teeth, or chopping vegetables, take longer and require more effort. Bradykinesia is the cardinal motor feature of Parkinson's and is required for clinical diagnosis."},{type:"definition",term:"Rigidity",definition:"Muscles feel stiff and resistant when moved through their range of motion, often described by patients as an ache in the shoulder, neck, or hip that does not improve with rest."},{type:"definition",term:"Postural and gait changes",definition:"A slight stoop, shorter steps, reduced arm swing on one side, or an occasional feeling that the feet freeze when starting to walk or turning in a doorway."},{type:"h3",id:"handwriting-and-fine-motor",text:"Handwriting and fine motor changes"},{type:"p",text:"Micrographia, or handwriting that gets smaller and more cramped as the sentence goes on, is one of the earliest and most specific fine-motor signs. Compare a recent signature against one from two or three years ago. If letters are noticeably smaller, more crowded, or if the writing hand fatigues quickly, note it down."},{type:"h2",id:"non-motor-signs",text:"Non-motor signs that can appear years earlier"},{type:"p",text:"There is now strong evidence that Parkinson's disease begins to affect the brain and body years, sometimes decades, before the first tremor. These prodromal (pre-motor) signs are individually common and non-specific, but a cluster of them warrants attention."},{type:"ul",items:["Reduced or lost sense of smell (hyposmia), often first noticed with coffee, spices, or perfumes.","REM sleep behaviour disorder, or acting out vivid dreams by shouting, kicking, or punching. A bed partner usually notices before the person does.","New or worsening constipation without a clear dietary cause.","Persistent low mood, apathy, or anxiety that does not have an obvious trigger.","A soft, monotone voice, or family telling you that you sound quieter than you used to.","A blank or 'masked' facial expression that others may interpret as boredom or annoyance."]},{type:"h2",id:"why-tracking-matters",text:"Why tracking these signs matters"},{type:"p",text:"The single most useful thing a person or family can bring to a first neurology appointment is a written record of what changed, when it started, and how often it happens. Movement disorder specialists rely heavily on history because early Parkinson's is a clinical diagnosis: no blood test or scan confirms it in most cases. A dated log of symptoms, ideally with short video clips of tremor or gait, dramatically shortens the diagnostic conversation."},{type:"p",text:"Structured, repeated self-assessments add another layer that memory alone cannot: they let you and your clinician see whether tremor steadiness, tapping rhythm, or walking speed are drifting in one direction over weeks and months. That trend information is what separates a normal off day from a real change worth acting on."},{type:"h2",id:"how-alumina-fits-in",text:"How Alumina Health fits in"},{type:"p",text:"Alumina Health provides short, guided iPhone and iPad assessments that people at risk of, or living with, Parkinson's disease can complete at home in a few minutes. The tremor and hand-control task, the tapping and coordination task, and the walking assessment are the most directly relevant. Repeating them on a routine, the same time of day and the same setup, builds a longitudinal record that is far easier to interpret than a single measurement."},{type:"p",text:"Alumina is not a diagnostic device. It does not tell you whether you have Parkinson's disease. It does give you a structured way to notice, record, and share what is changing, so that when you sit down with a neurologist you are working from data instead of trying to remember whether the tremor was worse in April or May."},{type:"h2",id:"when-to-see-a-clinician",text:"When to talk to a clinician"},{type:"p",text:"Any persistent, one-sided tremor at rest, a new stoop, unexplained slowness of movement, or a combination of the prodromal signs above is worth bringing to a primary care doctor or, ideally, a movement disorder specialist. Early evaluation matters: the therapies used in Parkinson's work best when started at the right time, and many treatable conditions can mimic Parkinson's early on."}],faqs:[{q:"Is a hand tremor always a sign of Parkinson's disease?",a:"No. Essential tremor, which usually appears when the hand is being used rather than at rest, is far more common than Parkinson's tremor. Anxiety, caffeine, certain medications, and thyroid disease can also cause tremor. A clinician can distinguish these based on when and how the tremor appears."},{q:"How early can Parkinson's disease be detected?",a:"Non-motor signs such as loss of smell and REM sleep behaviour disorder can appear years before motor symptoms. Formal clinical diagnosis, however, requires observable motor features such as bradykinesia together with tremor, rigidity, or postural change."},{q:"Can Alumina Health diagnose Parkinson's disease?",a:"No. Alumina Health is a patient-reported tracking tool and is not a medical device. It helps you and your clinician see structured trends over time. Diagnosis must be made by a qualified clinician."},{q:"How often should I complete tracking assessments?",a:"For most people, once or twice a week at the same time of day is enough to build a useful trend without becoming a burden. Consistency matters more than frequency."}],citations:[{label:"Parkinson's Disease: Hope Through Research",publisher:"National Institute of Neurological Disorders and Stroke (NINDS)",url:"https://www.ninds.nih.gov/health-information/disorders/parkinsons-disease"},{label:"Parkinson's Disease: Symptoms and Causes",publisher:"Mayo Clinic",url:"https://www.mayoclinic.org/diseases-conditions/parkinsons-disease/symptoms-causes/syc-20376055"},{label:"10 Early Signs of Parkinson's Disease",publisher:"Parkinson's Foundation",url:"https://www.parkinson.org/understanding-parkinsons/10-early-signs"}]},{slug:"caregiver-guide-to-tracking-cognitive-change",category:"caregiver-support",title:"A Caregiver's Guide to Tracking Cognitive 
26Change",description:"How family caregivers can track subtle cognitive changes at home, what to record, and how to bring useful data to a memory clinic or primary care appointment.",primaryKeyword:"tracking cognitive change",conditions:["dementia-related-concerns","memory-concerns","caregiver-support","cognitive-change"],assessments:["memory-and-recall","reaction-and-processing-speed"],assessmentLinks:[{anchor:"memory and recall",slug:"memory-and-recall"}],articleLinks:[{anchor:"memory loss that disrupts daily life",slug:"normal-aging-vs-mild-cognitive-impairment-vs-dementia"},{anchor:"between-visit data",slug:"why-between-visit-data-matters-for-neurology"}],linkAnchors:["tracking cognitive change","memory clinic","cognitive change","family caregivers"],datePublished:"2026-07-10",dateModified:"2026-07-26",readingTimeMin:9,keyTakeaways:["Cognitive tracking is most useful when it is structured, dated, and repeated on the same routine.","Log what changed, when it started, how often it happens, and whether it is better, worse, or stable.","Caregivers can support a consistent assessment setup without coaching answers or changing the result.","Bring the log, not just impressions, to a memory clinic or primary care visit."],body:[{type:"p",text:"Caring for someone whose memory or thinking seems to be changing is one of the hardest kinds of noticing. The shifts are usually subtle: a repeated question, a missed appointment, a familiar recipe that suddenly needs the cookbook. Any single moment is easy to explain away. The pattern is what matters, and the pattern only becomes visible when someone writes things down. This guide is for family caregivers who want a practical way of tracking cognitive change at home so that the next conversation with a clinician is grounded in data instead of anxiety."},{type:"callout",variant:"note",text:"This article is educational. It does not diagnose dementia, mild cognitive impairment, or any other condition. If you are worried about someone's memory, contact a primary care clinician or memory clinic."},{type:"h2",id:"what-to-look-for",text:"What to look for"},{type:"p",text:"Some cognitive shifts are a normal part of ageing. Others are not. The Alzheimer's Association's ten early signs are a good starting checklist: memory loss that disrupts daily life, difficulty planning or solving problems, trouble completing familiar tasks, confusion with time or place, new problems with words in speaking or writing, misplacing things and being unable to retrace steps, decreased or poor judgement, withdrawal from work or social activities, and changes in mood or personality."},{type:"p",text:"The word 'disrupts' matters. Forgetting a name and remembering it later is normal. Forgetting the name of a lifelong friend, or repeatedly asking a question that was answered ten minutes ago, is a different signal. Getting lost briefly in a new city is normal. Getting lost driving home from a shop that has been visited weekly for years is not."},{type:"h2",id:"a-simple-log",text:"A simple weekly log that actually works"},{type:"p",text:"Elaborate tracking systems get abandoned within a month. A workable log has four columns and takes less than five minutes a week to update."},{type:"ol",items:["Date. Even an approximate week is better than nothing.","What changed or was noticed. One sentence. 'Called me by his brother's name twice this week.'","How often. Rare, occasional, several times a week, daily. Consistency of frequency is more informative than a single event.","Direction. Better, the same, or worse than a month ago. This one column, kept honestly, is the single most useful thing you can bring to a clinician."]},{type:"p",text:"Once a month, read the log back and write a short summary paragraph: what has stayed the same, what has drifted, and what has newly appeared. That summary is the piece the memory clinic actually needs."},{type:"h2",id:"what-to-record-when-things-change",text:"What to record when something new appears"},{type:"ul",items:["When did you first notice it, roughly?","How does it show up? A specific task, a specific time of day, or only when tired?","Has it changed the person's ability to live independently, drive, cook, manage medications, or manage money?","Any safety concerns: leaving the stove on, wandering, falls, missed medications.","Any medication changes, illnesses, hospital
26isations, or major life events around the same time."]},{type:"h2",id:"structured-assessments-at-home",text:"Adding structured assessments at home"},{type:"p",text:"A written log captures what you observe. Structured, repeatable assessments capture what the person themselves can do on a task that stays exactly the same from week to week. That is the piece that most clearly separates a bad day from a real trend."},{type:"p",text:"Alumina Health's memory and recall assessment and its reaction and processing speed assessment are designed for this. Both are short, guided, and designed to be repeated over months. The value is not any single result; it is the shape of the line over time. A stable line, even a modestly below-average one, is reassuring. A line that is slowly drifting down is a clinical conversation."},{type:"h2",id:"help-without-changing-results",text:"How to help without changing the results"},{type:"p",text:"A caregiver can make a guided check-in easier to complete without influencing the answers. Start by asking whether the person wants help and agree on what that help will include. During the task, use the standardized instructions and let the assessment, not the caregiver, provide any allowed prompts."},{type:"ul",items:["Set up the device, reduce distractions, and help with glasses, hearing aids, seating, or another agreed accessibility need.","Do not hint, correct an answer, repeat a prompt that the task does not repeat, or praise one response more than another.","Record whether help was limited to setup, navigation, reading instructions, or physical access.","Use the same level of assistance in later sessions whenever that remains appropriate.","Pause or stop if the person becomes distressed, unusually fatigued, or no longer wants to continue."]},{type:"p",text:"Accessibility assistance helps a person access the task; answering, explaining clues, or steering a response changes what the task records. If support varies from one session to another, note it beside the result so the difference is not mistaken for cognitive change. This same context makes between-visit data easier for a clinician to interpret."},{type:"h2",id:"care-of-the-caregiver",text:"Taking care of the caregiver"},{type:"p",text:"Tracking someone else's cognition is emotionally heavy. It changes the register of ordinary conversations. Two rules help keep it sustainable. First, the person being tracked should know what you are doing and, wherever possible, be a partner in it: a log kept in secret becomes surveillance and undermines trust. Second, keep the log to the point. It is not a diary of every hard moment. It is a working document for a future clinical appointment."},{type:"quote",text:"The most useful thing a family brings to a first memory clinic visit is not a diagnosis, or even a worry. It is a timeline.",cite:"Memory clinic team"},{type:"h2",id:"one-page-clinician-summary",text:"A one-page summary for the clinician"},{type:"p",text:"Before an appointment, condense the log into a page that can be reviewed quickly. Use examples rather than labels, separate observations from interpretations, and put the questions that need a clinical decision at the end."},{type:"table",caption:"One-page cognitive change summary",headers:["Include","What to write"],rows:[["Baseline and timing","Usual level of function, when the first change appeared, and whether onset was gradual or abrupt."],["Representative examples","Two or three dated events that show the change clearly without listing every difficult moment."],["Frequency and direction","How often it occurs and whether the pattern is stable, fluctuating, improving, or worsening."],["Function and safety","Effects on medicines, finances, driving, cooking, navigation, appointments, or independent living."],["Relevant context","Medicine changes, illness, sleep, mood, pain, hearing, vision, hospital stays, or major life events."],["Assessment trend","Typical range, unusual sessions, assistance provided, and whether the trend matches everyday observations."],["Questions for the clinician","The two or three decisions or concerns the patient and caregiver most need addressed."]]}
26,{type:"h2",id:"when-to-seek-care",text:"When to seek care sooner rather than later"},{type:"p",text:"Get a clinical evaluation soon if the person has become disoriented in familiar places, is having trouble with medications or money in a way that is new, has had a fall or a near-miss driving, has withdrawn from activities they used to enjoy, or has had a rapid change over weeks rather than months. Rapid change is a different clinical picture from slow drift and needs different investigation."},{type:"h2",id:"how-alumina-helps-caregivers",text:"How Alumina Health helps caregivers"},{type:"p",text:"Alumina Health does not diagnose dementia or memory concerns and it is not a medical device. It provides the structured, repeatable at-home cognitive assessments that turn a caregiver's observations into a trend the person, their family, and their clinician can look at together. Combined with the simple weekly log above, it is a workable, sustainable way to notice, record, and communicate what is actually changing."}],faqs:[{q:"Is memory loss always a sign of dementia?",a:"No. Mild forgetfulness, such as briefly misplacing keys or occasionally forgetting a name, is a normal part of ageing. Concern is warranted when memory changes disrupt daily life, are noticed by others, or are combined with confusion, disorientation, or personality change."},{q:"How often should I complete a home cognitive assessment for a loved one?",a:"Once every one to two weeks is usually enough to build a useful trend without becoming exhausting. Complete it at the same time of day, in the same quiet setting, and after a normal night's sleep whenever possible."},{q:"Should a caregiver help during a home cognitive assessment?",a:"A caregiver can help with consent, device setup, accessibility, and a calm environment, but should not hint, correct answers, add prompts, or steer responses. Record what assistance was provided and stop if the person becomes distressed or no longer wants to continue."},{q:"What do I bring to a memory clinic appointment?",a:"The dated log, a monthly summary paragraph, a list of current medications, and, if you have been using one, the trend view from a home assessment app. Also bring any concerns about safety, driving, finances, and medication management."},{q:"Can Alumina Health diagnose dementia or Alzheimer's disease?",a:"No. Alumina Health is a patient-reported tracking tool. Diagnosis of dementia, Alzheimer's disease, mild cognitive impairment, or any other condition must be made by a qualified clinician following clinical evaluation."}],citations:[{label:"10 Early Signs and Symptoms of Alzheimer's",publisher:"Alzheimer's Association",url:"https://www.alz.org/alzheimers-dementia/10_signs"},{label:"Memory, Forgetfulness, and Aging: What's Normal and What's Not?",publisher:"National Institute on Aging (NIA), NIH",url:"https://www.nia.nih.gov/health/memory-loss-and-forgetfulness/memory-forgetfulness-and-aging-whats-normal-and-whats-not"},{label:"Caregiving for a Person with Alzheimer's or a Related Dementia",publisher:"Centers for Disease Control and Prevention (CDC)",url:"https://www.cdc.gov/aging/caregiving/index.html"}]},{slug:"why-between-visit-data-matters-for-neurology",category:"neurology",title:"Why Between-Visit Data Matters in Neurology",description:"Neurology visits are short and infrequent. Between-visit patient-reported data closes the gap by turning single snapshots into a trend clinicians can act on.",primaryKeyword:"between-visit data neurology",conditions:["parkinsons-disease","essential-tremor","multiple-sclerosis","memory-concerns","dementia-related-concerns","cognitive-change","movement-symptoms","caregiver-support","concussion","migraine"],assessments:["memory-and-recall","tremor-and-hand-control","tapping-and-coordination","walking-and-movement","reaction-and-processing-speed"],assessmentLinks:[{anchor:"reaction and processing speed",slug:"reaction-and-processing-speed"}],articleLinks:[{anchor:"essential tremor",slug:"essential-tremor-vs-parkinsons-tremor"},{anchor:"post-concussion recovery",slug:"how-to-track-concussion-symptoms-during-recovery"}],linkAnchors:["between-visit data","between visits","neurology appointment","trend line"],datePublished:"2026-07-10",dateModified:"2026-07-26",readingTimeMin:7,keyTakeaways:["Neurologic conditions change slowly, but clinic visits capture one point in t
26ime, often months apart.","Symptoms fluctuate day to day, so a single in-clinic reading can misrepresent how someone is doing.","Consistent tasks, context, completion notes, and real-world examples make a trend easier to interpret.","The goal is not to replace the visit; it is to make the twenty minutes of that visit count for more."],body:[{type:"p",text:"Neurology, more than most specialties, is a discipline of trends. A single measurement of tremor amplitude, a single walking speed, a single word-recall score tells a clinician surprisingly little on its own. What matters is the direction of travel over weeks and months. And yet the standard model, a twenty-minute appointment every three to six months, asks the clinician to infer that direction from two or three widely spaced snapshots, plus whatever the patient and family happen to remember. Between-visit data is the fix for that mismatch."},{type:"h2",id:"the-visit-cadence-problem",text:"The visit cadence problem"},{type:"p",text:"Take Parkinson's disease. A typical follow-up cadence is every three to six months. Movement symptoms are known to vary substantially within a single day, let alone across seasons, medication windows, and sleep patterns. The reading a neurologist gets during a Tuesday morning appointment may be the person's best hour of the month, or their worst. Either way, it is one hour out of roughly four thousand between visits."},{type:"p",text:"The same shape appears in multiple sclerosis relapse tracking, in essential tremor progression, in cognitive change in memory clinics, in post-concussion recovery, and in migraine pattern-finding. The rare specialist visit is a valuable but narrow window. Everything that happens between windows currently depends on the patient and family remembering it accurately weeks later. That is a task memory is not built to do well."},{type:"h2",id:"what-good-between-visit-data-looks-like",text:"What good between-visit data looks like"},{type:"p",text:"Not all self-reported data is equally useful. The characteristics that make it clinically actionable are consistent across every neurologic condition:"},{type:"ul",items:["Structured. The same task is repeated in the same way every time, not free-text journalling.","Longitudinal. The value is in the line, not the individual point.","Dated. Every entry has an accurate timestamp; trends without dates are noise.","Contextual. A short note about sleep, medication timing, or a bad head cold makes an outlier interpretable.","Portable. The data has to be viewable by a clinician in less than a minute, or it will not be looked at."]},{type:"p",text:"A useful record does not need to be a research dataset. It does need enough information to show whether sessions were comparable and why a result may differ from the person's usual range. Missing or interrupted sessions can still be informative when they are recorded honestly, especially when fatigue, symptoms, access, or technical trouble repeatedly prevents completion. The checklist below adapts general patient-generated data and remote-data quality principles to a practical home record; it is not a claim that a consumer tracking tool meets clinical-investigation requirements."},{type:"table",caption:"Minimum useful between-visit record",headers:["Record","Why it matters"],rows:[["Consistent task and instructions","Repeat the same task with the same instructions so a change in procedure is not mistaken for a change in performance."],["Date, time, device, and setup","Note when and where the session occurred, which device was used, and any meaningful change in position, footwear, lighting, or environment."],["Completion status","Distinguish a completed session from one interrupted by fatigue, symptoms, a phone call, technical trouble, or a decision to stop."],["Relevant context","Record sleep, illness, pain, fatigue, stress, medication timing, and other circumstances that may help explain variation."],["Outliers with an explanation","Keep an unusual result and add a short note rather than deleting it; removal can hide information and make the trend look cleaner than 
26it was."],["Trend plus real-world examples","Summarize several comparable sessions and pair the pattern with concrete changes in walking, memory, hand use, speech, or daily function."]]},{type:"p",text:"Completeness and context make a record easier to review, but data quality does not turn a consumer assessment into a diagnosis, establish clinical validity, or make a result suitable for automated treatment decisions. A clinician still has to consider symptoms, examination findings, medicines, health history, and the assessment's intended use before deciding what a trend means."},{type:"h2",id:"what-it-changes-in-a-visit",text:"What between-visit data changes in the visit itself"},{type:"p",text:"When patients arrive with a longitudinal record, the conversation shape shifts. Instead of the first ten minutes being spent piecing together what happened since the last visit, that time is available for interpretation and shared decision-making. A gradual downward drift in tapping speed, a step increase in tremor amplitude the week a new medication started, a stable line despite the patient's fear that things were getting worse. Each of these is a different clinical conversation, and each one requires data the memory alone cannot produce."},{type:"h2",id:"what-it-changes-outside-the-visit",text:"What between-visit data changes outside the visit"},{type:"p",text:"Two things. First, it gives the patient and family agency: a way of noticing that is not either panic or denial. A stable trend is genuinely reassuring in a way that vague reassurance from a clinician cannot be. Second, it surfaces problems earlier. A drift that would otherwise only become obvious at the next appointment can prompt a phone call, a message, or a schedule change now."},{type:"h2",id:"what-it-is-not",text:"What between-visit data is not"},{type:"p",text:"It is not a substitute for a neurologist. It is not a diagnostic test. It is not a scoring system that anyone should be reading in isolation. Every data point produced at home is a self-report; it needs a clinician to give it meaning. The right mental model is a lab result: useful, but interpreted in context."},{type:"h2",id:"how-alumina-fits",text:"How Alumina Health fits this model"},{type:"p",text:"Alumina Health provides short, guided iPhone and iPad assessments across the domains that most commonly change in neurologic conditions: tremor and hand control, tapping and coordination, walking and movement, memory and recall, and reaction and processing speed. Each task is designed to be repeated identically over months, producing a trend line that the person, their family, and their clinician can read together. Alumina is not a medical device and does not diagnose; it is the between-visit layer."},{type:"h2",id:"for-clinicians",text:"For clinicians and clinics"},{type:"p",text:"If your practice is interested in reviewing structured between-visit patient-reported data at scale, our contact form has a dedicated route for clinics."}],faqs:[{q:"How often should someone complete between-visit assessments?",a:"Once or twice a week is usually enough to build a useful trend without becoming a burden. Consistency of timing matters more than frequency."},{q:"Does Alumina Health replace a clinical appointment?",a:"No. Alumina Health is a patient-reported tracking tool and does not diagnose, treat, or manage any condition. It is designed to make the clinical appointment more productive, not to substitute for it."},{q:"Can I share Alumina Health data with my clinician?",a:"Yes. Trend views can be reviewed together during an appointment. Alumina Health does not send data directly to any health record; sharing is at the patient's discretion."}],citations:[{label:"Movement Disorders",publisher:"Johns Hopkins Medicine",url:"https://www.hopkinsmedicine.org/health/conditions-and-diseases/movement-disorders"},{label:"Cognitive Health and Older Adults",publisher:"National Institute on Aging (NIA), NIH",url:"https://www.nia.nih.gov/health/cognitive-health-and-older-adults"},{label:"Digital Health Technologies for Remote Data Acquisition in Clinical Investigations",publisher:"U.S. Food and Drug Administration (FDA)",url:"https://www.fda.gov/regulatory-information/search-fda-guidance-documents/digital-health-technologies-remote-data-acquisition-clinical-investigations"},{label:"Patient-Generated Health Data Fact Sheet",publisher:"Office of the National Coordinator for Health Information Technology",url:"https://healthit.gov/wp-content/uploads/2026/01/patient_generated_data_factsheet.pdf"}]},{slug:"low-contrast-vision-changes-in-multiple-sclerosis",category:"multiple-sclerosis",title:"Low-Contrast Vision Changes in MS: What to Notice",description:"Why low-contrast vision matters in multiple sclerosis, how to notice subtle changes at home, and how to track them between neurology visits.",primaryKeyword:"low-contrast vision multiple sclerosis",conditions:["multiple-sclerosis"],assessments:["low-contrast-vision","shape-tracing","reaction-and-processing-speed"],assessmentLinks:[{anchor:"low-contrast vision",slug:"low-contrast-vision"}],articleLinks:[{anchor:"contrast sensitivity testing at home",slug:"contrast-sensitivity-test-at-home"}],linkAnchors:["low-contrast vision","low-contrast letter acuity","optic neuritis","Uhthoff's phenomenon"],datePublished:"2026-07-14",dateModified:"2026-09-23",readingTimeMin:9,keyTakeaways:["Standard eye charts can look normal in MS even when the visual pathway has changed; low-contrast letter acuity is more sensitive.","People often notice washed-out colours, harder night driving, and trouble in rain or fog before a formal exam changes.","Heat, fatigue, and exercise can transiently worsen vision (Uhthoff's phenomenon); note conditions at every check-in.","A short, repeatable low-contrast check at home builds a trend that makes MS visits and relapse discussions more concrete."],body:[{type:"p",text:"The visual pathway is one of the most commonly affected systems in multiple sclerosis, and it is also one of the earliest to show quiet, subclinical change. A person can pass a standard 20/20 eye chart and still be losing sensitivity in ways that matter for driving at night, reading in dim light, or picking a face out of a crowd on a grey afternoon. That gap between how the eye chart looks in a bright clinic and how vision actually behaves in the real world is where low-contrast vision tracking earns its place. This article explains what low-contrast vision is, why it matters in MS, what to notice at home, and how to turn scattered observations into a record your MS team can use."},{type:"p",text:"For a practical comparison of test methods, read our guide to contrast sensitivity testing at home. It explains why reduced-contrast letter tasks, clinical charts, and online tests do not produce interchangeable scores."},{type:"callout",variant:"note",text:"This article is educational and n
26ot diagnostic. Any new or worsening vision change, especially painful eye movement, sudden colour desaturation, or vision loss in one eye, should be evaluated by an MS or eye clinician promptly."},{type:"h2",id:"what-is-low-contrast-vision",text:"What is low-contrast vision, and why MS?"},{type:"p",text:"High-contrast vision is what a standard eye chart measures: black letters on a bright white background. Low-contrast vision is the ability to resolve detail when the difference between object and background is small, grey letters on a lighter grey background, a kerb against a wet street at dusk, a face lit only by a screen. Real-world vision depends heavily on this low-contrast range. In multiple sclerosis, damage to the optic nerve and to the visual pathways behind the eye can dampen contrast sensitivity long before high-contrast letter acuity slips."},{type:"definition",term:"Low-contrast letter acuity",definition:"A vision test that measures the smallest low-contrast (grey-on-grey) letters a person can read. It is widely used in MS research and MS clinics because it is more sensitive to subtle visual-pathway change than a high-contrast Snellen chart."},{type:"definition",term:"Optic neuritis",definition:"Inflammation of the optic nerve, often the first clinical event of MS in adults. Classic features are painful eye movement, blurred vision in one eye, and washed-out colours. Even after recovery, subtle low-contrast changes commonly persist."},{type:"definition",term:"Uhthoff's phenomenon",definition:"A transient worsening of MS symptoms, often vision, when core body temperature rises, whether from exercise, a hot shower, a warm room, or fever. It is a signal of pathway sensitivity, not a new relapse in itself."},{type:"h2",id:"what-people-notice",text:"What people usually notice first"},{type:"p",text:"Because most day-to-day vision uses reasonably good light, the earliest subjective changes in MS-related vision often show up at the edges of the day, or in weather and lighting that reduce contrast. The exact experience varies, but there are recurring patterns worth logging."},{type:"ul",items:["Colours look faded or washed out in one eye compared with the other, particularly reds.","Night driving feels harder: headlights bloom, road markings blur, or oncoming glare recovers more slowly.","Fog, rain, or dusk make it noticeably harder to read signs or spot pedestrians.","Reading a screen or book in low light feels more effortful, or you find yourself turning lights up.","A sense of vision 'greying out' briefly when overheated, exercising, or in a hot shower, a hallmark of Uhthoff's phenomenon."]},{type:"h2",id:"why-standard-charts-miss-it",text:"Why the standard eye chart can miss this"},{type:"p",text:"A Snellen chart in a bright exam lane measures the best-case scenario: high-contrast letters, ideal lighting, near-perfect focus. That test is essential for driving standards and glasses prescriptions, but it does not sample the low-contrast range where MS-related change usually appears first. This is why MS specialists increasingly use low-contrast letter acuity charts alongside standard testing, and why patient-reported changes in low-light or low-contrast situations deserve to be taken seriously even when a routine eye exam is unremarkable."},{type:"h2",id:"tracking-at-home",text:"Tracking low-contrast vision at home"},{type:"p",text:"The point of an at-home check is not to reproduce a clinical exam. It is to give yourself and your MS team a longitudinal record: how does your low-contrast performance compare with your own baseline over weeks and months, and does it drift after a hot summer, a stressful stretch, or a suspected relapse?"},{type:"h3",id:"session-setup",text:"Setting up a consistent session"},{type:"ol",items:["Pick a time of day when you are not overheated and not immediately post-exercise.","Use the same room, same ambient lighting, and the same distance from the screen each time.","Wear your usual corrective lenses if you use them.","Complete a short low-contrast task on each eye separately, then together, so any asymmetry is visible.","Note your current temperature, fatigue, sleep, and any recent activity that could transiently affect vision."]},{type:"h3",id:"what-to-log-alongside",text:"What to log alongside the result"},{type:"p",text:"A single number is rarely useful on its own. A few lines of context turn it into signal: which eye felt better today, whether you noticed colour washout, whether you had a hot shower or workout in the previous hour, and how alert you feel. That context is what lets a clinician read a shakier week as heat-related rather than a red flag, or the opposite."},{type:"h2",id:"when-to-call",text:"When to call your MS team"},{type:"ul",items:["New pain with eye movement, especially in one eye.","Sudden vision loss, a growing dark spot, or vision that does not recover after cooling down.","New colour desaturation (reds looking brown or grey) in one eye.","Any vision change accompanied by new weakness, numbness, balance loss, or bladder change.","A pattern your MS care plan has told you to call about."]},{type:"h2",id:"how-alumina-fits-in",text:"How Alumina Health fits in"},{type:"p",text:"Alumina Health provides a guided low-contrast vision check-in on iPhone and iPad, alongside shape-tracing and reaction-and-processing-speed tasks that pick up other MS-relevant changes. None of these are diagnostic. They are designed to be repeated on a consistent setup so that trends across weeks and months become visible, and so that a conversation with your MS team can start from data rather than from trying to remember whether last month was really better or worse."}],faqs:[{q:"Can Alumina Health diagnose optic neuritis or an MS relapse?",a:"No. Alumina Health is not a medical device. Only an MS or eye clinician can diagnose optic neuritis or determine whether new symptoms represent a relapse. Alumina helps you notice and record trends so that clinical conversations are grounded in more than memory."},{q:"How is low-contrast vision different from what my optometrist tests?",a:"A routine optometry visit focuses on high-contrast acuity and refraction. Low-contrast letter acuity uses grey-on-grey letters and is more sensitive to subtle visual-pathway change, which is why MS specialists rely on it alongside standard testing."},{q:"Why did my vision get worse for an hour after a hot shower?",a:"That pattern, transient worsening with heat, is called Uhthoff's phenomenon. It reflects heat sensitivity in a previously affected pathway rather than a 
26new relapse, but new, persistent, or unusual changes still deserve a call to your MS team."},{q:"How often should I run a low-contrast check-in?",a:"For most people, once or twice a week at a consistent time of day is enough to build a useful baseline without becoming a burden. Consistency matters more than frequency."}],citations:[{label:"Multiple Sclerosis Information Page",publisher:"National Institute of Neurological Disorders and Stroke (NINDS)",url:"https://www.ninds.nih.gov/health-information/disorders/multiple-sclerosis"},{label:"Vision Problems",publisher:"National Multiple Sclerosis Society",url:"https://www.nationalmssociety.org/Symptoms-Diagnosis/MS-Symptoms/Vision-Problems"},{label:"Optic Neuritis: Symptoms and Causes",publisher:"Mayo Clinic",url:"https://www.mayoclinic.org/diseases-conditions/optic-neuritis/symptoms-causes/syc-20354953"}]},{slug:"tremor-assessments-for-parkinsons-disease",category:"parkinsons-disease",title:"Tremor Assessments for Parkinson's Disease at Home",description:"How Parkinson's disease tremor assessments work, what spiral, tapping, and steadiness tasks measure, and how to use them at home between visits.",primaryKeyword:"Parkinson's disease tremor assessments",conditions:["parkinsons-disease","essential-tremor"],assessments:["tremor-and-hand-control","tapping-and-coordination"],assessmentLinks:[{anchor:"tapping and coordination",slug:"tapping-and-coordination"}],articleLinks:[{anchor:"spiral drawing test for tremor",slug:"spiral-test-for-tremor"},{anchor:"Parkinson's tremor",slug:"essential-tremor-vs-parkinsons-tremor"}],linkAnchors:["Parkinson's disease tremor assessments","Parkinson's tremor","spiral drawing","on and off periods"],datePublished:"2026-07-14",dateModified:"2026-09-23",readingTimeMin:9,keyTakeaways:["Parkinson's tremor is typically a resting tremor, asymmetric, and quiets during purposeful movement.","Spiral drawing, postural hold, and finger-tapping tasks are the workhorse at-home samples of tremor and bradykinesia.","Tremor varies with caffeine, sleep, stress, and medication timing; log context or the trend is noise.","The value of at-home tremor assessments is longitudinal, a trend line across weeks, not a single score."],body:[{type:"p",text:"Tremor is what most people picture when they think of Parkinson's disease, and it is often the sign that prompts a first neurology visit. What is less obvious is how much a movement disorder specialist can learn from watching the same hand perform the same simple tasks over time. That is exactly what Parkinson's disease tremor assessments are designed to capture: not a diagnosis in a single moment, but a structured record of how tremor and hand control behave across days, weeks, and medication cycles. This article walks through what these assessments measure, how to run them consistently at home, and how to use the record."},{type:"p",text:"Our guide to the spiral drawing test for tremor explains freehand drawing, guided tracing, and consistent setup in more detail. Keep these task types separate when comparing samples over time."},{type:"callout",variant:"note",text:"Tracking tremor at home does not diagnose or manage Parkinson's disease. It supplements care from a neurologist or movement disorder specialist and is meant to make clinical visits more productive, not to replace them."},{type:"h2",id:"what-parkinsons-tremor-looks-like",text:"What Parkinson's tremor actually looks like"},{type:"p",text:"Parkinson's tremor has a recognisable signature. It usually appears at rest, for example when the hand is sitting on the arm of a chair, and quiets down when the hand is used for a purposeful task. It typically starts on one side of the body, is often described as a 'pill-rolling' motion between the thumb and index finger, and beats at roughly 4 to 6 cycles per second. Around one in five people with Parkinson's, however, never develop a prominent tremor at all; the disease can present with slowness (bradykinesia), stiffness (rigidity), and gait change instead."},{type:"definition",term:"Resting tremor",definition:"Rhythmic shaking that appears when the limb is supported and at rest, and quiets when the limb is used purposefully. This is the classic Parkinson's tremor pattern."},{type:"definition",term:"Action tremor",definition:"Tremor that appears during voluntary movement, such as writing or holding a cup. It is far more suggestive of essential tremor than of Parkinson's disease, though the two can coexist."},{type:"definition",term:"Bradykinesia",definition:"Slowness of movement, together with reduced amplitude and difficulty initiating or sustaining rhythm
26ic actions. It is the cardinal motor feature of Parkinson's and the reason tapping-based assessments are so informative."},{type:"h2",id:"what-the-assessments-measure",text:"What tremor assessments actually measure"},{type:"p",text:"At-home tremor assessments do not attempt to reproduce a neurologist's exam. Instead, they sample two things that reliably drift over time in Parkinson's disease: fine motor steadiness (via drawing and postural tasks) and rhythmic motor control (via finger tapping). Repeated on a consistent setup, these produce a trend that is far more informative than any single measurement."},{type:"h3",id:"spiral-and-line-tracing",text:"Spiral drawing and line tracing"},{type:"p",text:"Spiral drawing has been a standard bedside tremor assessment for decades. The person draws a spiral within guide lines; deviations from the line, waviness, and micrographia (progressively smaller loops) are all readable at a glance. On a touchscreen, path deviation can be sampled continuously, so subtle changes in steadiness that a paper spiral would hide become visible in the trace."},{type:"h3",id:"postural-hold",text:"Postural hold and steadiness"},{type:"p",text:"Holding a finger or the device in a fixed position samples postural tremor, the shaking that appears when a limb is held against gravity. In Parkinson's this is typically less prominent than the resting tremor, but tracking it over time still helps separate day-to-day variability from a real drift."},{type:"h3",id:"finger-tapping",text:"Finger tapping"},{type:"p",text:"Timed finger-tapping is one of the most established motor tasks in movement-disorder clinics. Tap rate, tap-to-tap variability, and amplitude decrement across a 15-second burst all speak to bradykinesia. On a phone or tablet, the tap positions and timings are recorded automatically, so the same task can be repeated many times without any manual scoring."},{type:"h2",id:"on-and-off-windows",text:"Making sense of on and off medication windows"},{type:"p",text:"Most people on Parkinson's medication cycle through periods where the medication is working well ('on') and periods where symptoms return ('off'). Running the same short tremor and tapping tasks at consistent times relative to a dose, for example 30 minutes after taking levodopa, and again just before the next dose, lets you see how those windows are behaving over weeks. That pattern is one of the most useful things a neurologist can look at when deciding whether to adjust medication timing."},{type:"h2",id:"context-context-context",text:"Context matters as much as the score"},{type:"ul",items:["Note caffeine intake, sleep quality, and stress level at the start of every session.","Log medication timing relative to the session (last dose, next dose).","Use the same hand, same seated position, and same device orientation each time.","Aim for the same time of day for at least one of your weekly sessions to reduce circadian variability.","If tremor differs between sides, track both, otherwise you may miss asymmetric progression."]},{type:"h2",id:"what-a-clinician-can-do-with-it",text:"What a clinician can do with the record"},{type:"p",text:"A movement disorder specialist working from a three-month trend of tremor steadiness and tapping performance can see things that would be invisible in a twenty-minute clinic visit: whether an on-window has been shrinking, whether tapping amplitude is decrementing faster than a few months ago, whether one side is drifting away from the other. That kind of longitudinal patient-reported data does not replace the neurological exam, but it grounds the conversation in something more than recollection."},{type:"h2",id:"how-alumina-fits-in",text:"How Alumina Health fits in"},{type:"p",text:"Alumina Health provides guided tremor and hand-control and tapping and coordination assessments on iPhone and iPad. Each is designed to be repeated identically over weeks and months, and each captures the underlying task well enough to support the kind of trend a specialist can actually read. Alumina is not a medical device and does not diagnose or manage Parkinson's disease; it is the between-visit layer."}],faqs:[{q:"How do I tell Parkinson's tremor from essential tremor?",a:"Parkinson's tremor is usually most obvious at rest and quiets during use of the hand; essential tremor typically appears during action, such as writing or holding a cup. The distinction can be subtle and should be made by a clinician, but home tracking of resting versus action tasks can add helpful context."},{q:"Do I need to be off my medication to get a useful reading?",a:"No, and you should never stop or skip medication for the sake of a home assessment. Running the same task at consistent times relative to a dose, on and after medication, is usually the most informative approach."},{q:"Why does my tremor look worse some weeks than others?",a:"Tremor amplitude varies with caffeine, sleep, stress, cold hands, medication timing, and infections. Noting these at each session is what lets a trend line be read correctly, and is why occasional shaky weeks are not automatically a red flag."},{q:"Can Alumina Health tell me my tremor severity score?",a:"No. Formal severity ratings are clinical instruments used by neurologists. Alumina reports how today compares with your own recent range, which is the trend information a clinician can pair with their exam."}],citations:[{label:"Understanding Parkinson's: Tremor",publisher:"Parkinson's Foundation",url:"https://www.parkinson.org/understanding-parkinsons/movement-symptoms/tremor"},{label:"Parkinson's Disease: Symptoms and Causes",publisher:"Mayo Clinic",url:"https://www.mayoclinic.org/diseases-conditions/parkinsons-disease/symptoms-causes/syc-20376055"},{label:"Parkinson's Disease: Hope Through Research",publisher:"National Institute of Neurological Disorders and Stroke (NINDS)",url:"https://www.ninds.nih.gov/health-information/disorders/parkinsons-disease"}]},{slug:"shape-matching-tasks-and-cognitive-change",category:"cognitive-change",title:"Shape Matching Tasks and What They Reveal About Cognition",description:"How shape matching cognitive assessments probe visual processing, working memory, and attention, and how to use them to track cognitive change at home.",primaryKeyword:"shape matching cognitive assessment",conditions:["cognitive-change","memory-concerns","dementia-related-concerns"],assessments:["visual-matching-tasks","memory-and-recall","reaction-and-processing-speed"],assessmentLinks:[{anchor:"visual matching",slug:"visual-matching-tasks"}],articleLinks:[{anchor:"between-visit data",slug:"why-between-visit-data-matters-for-neurology"}],linkAnchors:["shape matching","shape matching cognitive assessment","visuospatial change","processing speed"],datePublished:"2026-07-14",dateModified:"2026-07-26",readingTimeMin:9,keyTakeaways:["Shape matching tasks sample visual processing, working memory, and sustained attention in one short activity.","Early improvement may reflect practice effects, so trends need a consistent setup and multiple sessions.","A single low score means little; a drift across weeks or growing variability is what a clinician can act on.","Home cognitive tracking supplements, never replaces, an evaluation by a primary care clinician or memory clinic."],body:[{type:"p",text:"Most people associate cognitive assessment with remembering words or naming objects. Those tasks are useful, but they only cover part of the picture. Shape matching tasks, comparing figures, identifying which of several shapes matches a target, or spotting the odd one out, sample a different and complementary set of cognitive functions: visual processing, working memory, and sustained attention. This article explains what a shape matching cognitive assessment actually measures, why response consistency matters as much as accuracy, and how to use short repeated sessions at home to make cognitive change easier to see and describe."},{type:"callout",variant:"note",text:"This article is educational. Shape matching tasks are not a diagnostic test for dementia, mild cognitive impairment, or any other condition. Concerns about cognition should be discussed with a primary care clinician or a memory clinic."},{type:"h2",id:"what-shape-matching-measures",text:"What a shape matching task actually measures"},{type:"p",text:"A well-designed shape matching task looks simple: a target figure appears, and the person selects the matching shape from a small array. Underneath, several cognitive systems are engaged at once. Visual perception has to parse the shapes accurately. Working memory has to hold the target while scanning the choices. Attention has to stay on task through the full trial block. And processing speed determines how quickly all of that resolves into a response. Because these systems share underlying brain networks, shape matching is a compact way to sample cognitive tempo without asking anyone to remember a word list."},{type:"definition",term:"Working memory",definition:"The ability to hold and manipulate information in mind for a few seconds, for example, keeping a target shape in mind while comparing it against several options. It is one of the earliest cognitive domains to show subtle change."},{type:"definition",term:"Processing speed",definition:"How quickly the brain takes in information, decides, and responds. Slower or more variable processing speed is a well-recognised early marker in many neurologic and cognitive conditions."},{type:"definition",term:"Visuospatial change",definition:"Shifts in the ability to perceive, mentally rotate, or compare shapes and spatial relationships. Because it depends on cortical networks that can be affected early in some dementias, tracking it adds signal that pure verbal tasks do not."},{type:"h2",id:"why-consistency-matters",text:"Why response consistency matters as much as accuracy"},{type:"p",text:"It is tempting to grade a cognitive session by the number of correct answers. In practice, one of the most sensitive markers of cognitive change is not accuracy itself but variability: the spread of response times across trials of the same task. A brain that is well-rested and steady produces tightly-clustered response times. A brain that is fatigued, distracted, or genuinely losing consistency produces a wider spread, even when the average is unchanged. Watching trial-to-trial variability across weeks often surfaces drift that an accuracy score alone would miss."},{type:"h2",id:"a-bad-day-vs-a-real-trend",text:"Telling a bad day from a real trend"},{type:"p",text:"Cognitive performance moves around a great deal in healthy people. Sleep, mood, caffeine, medications, illness, and time of day all matter. A single low session is close to meaningless. A drift across four to six sessions in the same direction, or a sustained increase in variability, is a different signal, and one worth bringing to a clinician."},{type:"ol",items:["Run sessions on a consistent schedule (for example, the same weekday morning).","Note sleep, mood, medication changes, and recent illness at the start of every session.","Look at trends across at least four sessions before drawing conclusions.","Compare against your own baseline, not a population average or diagnostic threshold.","If a change persists across sessions and lines up with something you or family have noticed in daily life, bring it to a clinician."]},{type:"h2",id:"practice-effects",text:"Practice effects: why early improvement can be misleading"},{type:"p",text:"A practice effect is an improvement associated with prior exposure to a task rather than proof that the underlying cognitive ability has changed. During early sessions, a person may become more comfortable with the instructions, the location of controls, the pace of the activity, or the kind of comparison being requested. That familiarity can make responses faster or more accurate even when everyday cognition is unchanged."},{type:"p",text:"Practice effects vary across people, tasks, alternate forms, and the time between sessions. Changing the individual shapes or prompts may reduce simple item memorization, but it does not eliminate familiarity with the task format. This is why a home result should not be treated as a pure measurement of cognition or compared with a diagnostic threshold."},{type:"ul",items:["Use the same device, instructions, position, and approximate time of day.","Record interruptions, accessibility assistance, fatigue, illness, and medication changes.","Expect the earliest sessions to be noisier while the task becomes familiar.","Interpret improvement, stability, or decline across multiple sessions and alongside everyday function."]},{type:"p",text:"A short note about setup and familiarity makes the result more useful as between-visit data. If performance changes persist after the initial sessions and match changes in daily activities, share the pattern with a clinician rather than trying to determine the cause from the task alone."},{type:"h2",id:"who-benefits-from-tracking",text:"Who benefits from shape matching at home"},{type:"ul",items:["Adults who have noticed subtle changes in their own attention or thinking and want to see whether the pattern is stable.","Family caregivers building a longitudinal picture ahead of a memory clinic visit.","People with a diagnosis of mild cognitive impairment tracking response consistency over time.","Anyone recovering from concussion 
26whose care team has recommended structured cognitive check-ins.","People living with a neurologic condition (MS, Parkinson's disease) that can affect processing speed and visuospatial function."]},{type:"h2",id:"what-to-bring-to-a-clinician",text:"What to bring to a clinician"},{type:"p",text:"A short summary is more useful than a raw data dump. Aim for one page: when you started tracking, how often you run sessions, what your typical range looks like now versus one to three months ago, whether variability is increasing, and any real-world observations (missed appointments, difficulty following recipes, getting lost) that line up with what the sessions are showing. That kind of structured summary lets a primary care clinician or memory clinic decide quickly whether further evaluation is warranted."},{type:"h2",id:"how-alumina-fits-in",text:"How Alumina Health fits in"},{type:"p",text:"Alumina Health provides guided visual matching, memory and recall, and reaction and processing speed tasks on iPhone and iPad. Each is short enough to fit into a weekly routine and structured enough to be compared across sessions. Alumina is not a medical device and does not diagnose cognitive conditions. It is designed to help you build the kind of longitudinal, patient-reported record that turns anxious impressions into evidence you and a clinician can look at together."}],faqs:[{q:"Is a shape matching task a memory test?",a:"Not primarily. It samples visual processing, working memory, and sustained attention, a different and complementary set of functions to word-list or delayed-recall memory testing. Both kinds of task add signal, which is why guided at-home programs usually combine them."},{q:"Will I get better at the task just by doing it?",a:"You may improve as the instructions and task format become familiar, which is called a practice effect. Changing specific shapes may reduce item memorization but does not remove familiarity with the task. Review multiple comparable sessions and everyday function rather than treating improvement in one score as proven cognitive change."},{q:"Can shape matching detect early dementia?",a:"No. No home task can diagnose dementia. Structured cognitive tracking can help make subtle changes easier to notice and describe, which supports an earlier conversation with a clinician, the diagnosis itself belongs in a clinical evaluation."},{q:"How often should I run a session?",a:"Once a week at a consistent time of day is a common starting cadence. Consistency of timing matters more than frequency, because it reduces the noise that comes from running a session when tired or distracted."}],citations:[{label:"Cognitive Health and Older Adults",publisher:"National Institute on Aging (NIA), NIH",url:"https://www.nia.nih.gov/health/cognitive-health-and-older-adults"},{label:"10 Early Signs and Symptoms of Alzheimer's and Dementia",publisher:"Alzheimer's Association",url:"https://www.alz.org/alzheimers-dementia/10_signs"},{label:"Healthy Brain Initiative",publisher:"Centers for Disease Control and Prevention (CDC)",url:"https://www.cdc.gov/aging/healthybrain/index.html"},{label:"Lower Practice Effects as a Marker of Cognitive Performance and Dementia Risk",publisher:"Alzheimer's & Dementia: Diagnosis, Assessment & Disease Monitoring",url:"https://pmc.ncbi.nlm.nih.gov/articles/PMC7346865/"}]},{slug:"how-to-track-migraine-attacks-at-home",category:"migraine",title:"How to Track Migraine Attacks at Home (Without Burning Out)",description:"A practical migraine tracking guide: what to log during an attack, how to spot triggers, and how short cognitive check-ins add signal a paper diary misses.",primaryKeyword:"how to track migraine attacks",conditions:["migraine"],assessments:["reaction-and-processing-speed","eye-brain-vision-check"],assessmentLinks:[{anchor:"eye-brain vision check",slug:"eye-brain-vision-check"}],articleLinks:[{anchor:"migraine symptoms",slug:"migraine-symptoms-what-to-track"}],linkAnchors:["track migraine attacks","migraine diary","migraine triggers","headache clinic"],datePublished:"2026-07-15",dateModified:"2026-09-23",readingTimeMin:9,keyTakeaways:["A useful migraine log captures onset, duration, severity, associated symptoms, and what you took, not much more.","Record headache days and days using acute medication; both help a clinician understand the pattern.","Optional app check-ins may add context, but should never delay rest, treatment, or medical care.","Bring a short trend summary and the underlying log to a headache-clinic visit."],body:[{type:"p",text:"If you have lived with migraine for any length of time, someone has probably told you to keep a diary. And if you have actually tried, you have probably given up on one within a few weeks. The reason is almost always the same. The forms ask for too much, the writing has to happen when you feel your worst, and by the time you sit down at a headache-clinic appointment you cannot remember whether last Tuesday was a bad four or a bad six. A good migraine log is not a research instrument. It is a habit small enough to survive a real attack, structured enough that a clinician can look at three months of it and see something, and grounded in how migraine symptoms can change before and after head pain."},{type:"callout",variant:"note",text:"This article is about tracking, not treatment. If your headaches have changed suddenly, feel like the worst headache of your life, or come with new weakness, numbness, speech changes, fever, or vision loss, that is an urgent evaluation, not something to log at home."},{type:"h2",id:"what-to-actually-log",text:"What to actually log during an attack"},{type:"p",text:"The temptation is to record everything. Resist it. The fields that turn out to be most useful, month after month, are boring and short: the date, the time you first noticed something was off, the time the pain became the main event, how long the attack lasted, the peak severity on a simple zero to ten scale, and a short list of associated features (aura, nausea, sensitivity to light or sound, dizziness). Add what you took, when, and whether it worked. That is roughly seven fields. It is the difference between a log you keep and a log you abandon."},{type:"ul",items:["Date and rough time of the earliest warning sign","Time the headache became the dominant symptom","Peak severity on a 0-10 scale","Duration in hours (estimate is fine)","Associated features (aura, nausea, photophobia, phonophobia, vertigo)","Medication taken, dose, and time","One or two words about how 
26it resolved"]},{type:"p",text:"A compact log can be filled in after the attack if writing during symptoms is too difficult. The fictional example below shows the level of detail to aim for; it is not a patient record or a treatment recommendation. Keep medication names and doses exactly as used, including over-the-counter products, so your clinician can review the number of medication days as well as headache days."},{type:"table",caption:"Illustrative migraine diary entry, not patient data",headers:["Field","Example entry","Why it helps"],rows:[["Start and duration","Tuesday, about 8 a.m.; lasted about 11 hours","Separates one attack from the next"],["Symptoms and function","Pain 6/10; light sensitivity; missed afternoon meeting","Shows burden beyond a pain score"],["Medication","Name, dose, and time taken; whether it helped","Lets a clinician review response and medication days"],["Context","Short sleep the night before; no clear trigger","Keeps observations without assigning a cause"]]},{type:"h2",id:"the-prodrome-and-postdrome",text:"The prodrome and postdrome matter more than people think"},{type:"p",text:"The headache phase gets all the attention, but many people can look back and notice a prodrome hours or even a day before: yawning that will not stop, a strange food craving, a mood shift, blurred thinking, sensitivity to smells. The postdrome, that day-after fog when the pain is gone but you cannot focus, is often the phase that actually costs you a workday. If you log only the peak, you miss most of the burden. A single line noting how you felt the evening before and the morning after is worth more than an elaborate pain scale."},{type:"h2",id:"triggers",text:"Trigger hunting: log first, look for patterns later"},{type:"p",text:"Almost every migraine patient has a mental list of triggers. Almost every list is partly wrong. Triggers are notoriously hard to identify in the moment because attacks often start well before the perceived trigger, and because the prodrome can create the very craving (sugar, caffeine, alcohol) later blamed for the attack. The way to actually find your patterns is to log neutrally for two or three months and then look back. Sleep timing, menstrual cycle, work stress, weather changes, and screen-heavy days tend to be more reliable signals than any single food. A headache specialist reading your log wants to see a pattern, not a suspect."},{type:"definition",term:"Prodrome",definition:"The early phase before the headache begins, sometimes hours to a day beforehand, when subtle warning signs such as mood shifts, food cravings, yawning, or blurred thinking appear."},{type:"h2",id:"cognitive-checkins",text:"Short cognitive check-ins add signal a diary misses"},{type:"p",text:"Migraine can involve more than head pain. Some people notice visual symptoms or difficulty concentrating before or after an attack. If a person already uses a reaction and processing speed check-in, they may choose to record when it was done relative to symptoms, but an app result is not an objective measure of migraine severity or a way to predict an attack. Skip any task that worsens symptoms or gets in the way of rest, prescribed treatment, or care."},{type:"p",text:"An eye-brain vision check is likewise optional and should not be used to judge whether visual symptoms are harmless. New, unusual, or persistent visual changes need medical advice. See the reaction and processing speed and eye-brain vision check pages for what those assessments do and where their limits are."},{type:"h2",id:"paper-vs-app",text:"Paper, spreadsheet, or app: it barely matters"},{type:"p",text:"The best format is the one you will still be using in ninety days. A folded index card by the bed works. A note on the phone works. What matters is that the same fields are captured every time, so that three months of data can actually be compared. If you switch tools every few weeks, you lose the comparability, which is the whole point."},{type:"h2",id:"bringing-it-in",text:"What to bring to a headache clinic"},{type:"p",text:"Summarize the log on one page and bring the underlying entr
26ies in case the clinician needs detail. Include headache days and days using acute medication for each month, typical duration, associated features, functional impact, what you tried, and what seemed to help. If optional app check-ins were useful, label the task and timing without presenting the trend as a diagnosis. This format gives the clinician a quick overview while preserving the record behind it."},{type:"h2",id:"how-alumina-fits",text:"How Alumina Health fits in"},{type:"p",text:"Alumina Health does not replace a headache diary and does not diagnose migraine. It provides short, guided reaction-time, processing-speed, and vision check-ins that some people may record alongside a simple log. The most useful evidence for a headache visit may still be the dates, symptoms, medication days, and effect on daily life. Bring the summary to a neurologist or headache specialist for interpretation."}],faqs:[{q:"How long should I track before looking for patterns?",a:"Two to three months of consistent logging is usually the minimum before trigger patterns become trustworthy. Shorter windows over-fit to a single stressful week or a single bad cycle."},{q:"Do I need to log every single headache?",a:"Log migraines and any severe or unusual headaches. Everyday tension headaches can be tallied in a weekly total rather than individually recorded, which keeps the habit sustainable."},{q:"Is a symptom score of six the same as someone else's six?",a:"No, and it does not need to be. The scale is only useful as a comparison against your own attacks over time. Consistency with yourself is what makes the number readable."},{q:"Can tracking make migraine anxiety worse?",a:"It can if the log is elaborate or focused on catastrophising. Keep it short, factual, and roughly the same every time. If tracking itself becomes stressful, discuss a reduced format with your clinician."}],citations:[{label:"Migraine Information Page",publisher:"National Institute of Neurological Disorders and Stroke (NINDS)",url:"https://www.ninds.nih.gov/health-information/disorders/migraine"},{label:"Migraine: Symptoms and Causes",publisher:"Mayo Clinic",url:"https://www.mayoclinic.org/diseases-conditions/migraine-headache/symptoms-causes/syc-20360201"},{label:"Understanding Migraine",publisher:"American Migraine Foundation",url:"https://americanmigrainefoundation.org/resource-library/understanding-migraine/"},{label:"Medication Overuse Headache and Headache Diary",publisher:"American Migraine Foundation",url:"https://americanmigrainefoundation.org/resource-library/what-is-medication-overuse-headache/"}]},{slug:"migraine-symptoms-what-to-track",category:"migraine",title:"Migraine Symptoms: What to Track Through Each Phase",description:"Learn how migraine symptoms can change across prodrome, aura, headache, and postdrome, what to track, and which warning signs need urgent medical care.",primaryKeyword:"migraine symptoms",conditions:["migraine"],assessments:["reaction-and-processing-speed","eye-brain-vision-check"],assessmentLinks:[{anchor:"reaction and processing speed",slug:"reaction-and-processing-speed"},{anchor:"eye-brain vision check",slug:"eye-brain-vision-check"}],articleLinks:[{anchor:"migraine tracking guide",slug:"how-to-track-migraine-attacks-at-home"}],linkAnchors:["migraine symptoms","migraine phases","visual aura","migraine postdrome"],datePublished:"2026-07-25",dateModified:"2026-07-25",readingTimeMin:10,keyTakeaways:["Migraine symptoms can begin before head pain and continue after it ends.","Track timing, associated symptoms, function, and treatment response using the same short format.","Aura is not universal; new or unusual neurologic symptoms need medical evaluation.","A sudden severe headache or headache with emergency warning signs should not be tracked at home."],body:[{type:"p",text:"Migraine symptoms are not limited to head pain. An attack may begin with fatigue, yawning, food cravings, mood or concentration changes, then progress to visual or sensory aura in some people, headache with nausea and sensory sensitivity, and a postdrome marked by fogginess or exhaustion. These phases can overlap, and not every person experiences all of them. Tracking the timing and shape of your own symptoms can make it easier to recognize a familiar pattern, describe its impact, and give a clinician a useful record without turning every day into a monitoring project."},{type:"callout",variant:"warning",text:"Do not assume that a new or unusual symptom is migraine. A sudden thunderclap headache, new weakness or numbness, trouble speaking, vision loss, seizure, confusion, fever with a stiff neck, headache after a head injury, or a major change from your usual pattern needs urgent medical evaluation."},{type:"h2",id:"migraine-phases-at-a-glance",text:"Migraine symptoms across the phases of an attack"},{type:"p",text:"Clinicians often describe four migraine phases: prodrome, aura, headache, and postdrome. This is a useful map, not a schedule every attack must follow. Aura occurs only in some people, phases may overlap, and attacks can vary. The goal is to notice which features belong to your pattern and how long it takes to return to your usual function."},{type:"table",caption:"Common migraine phases and useful details to track",headers:["Phase","Possible symptoms","What to record"],rows:[["Prodrome","Fatigue, yawning, mood or concentration changes, food cravings, neck 
26stiffness, light or sound sensitivity.","First change, approximate start time, and whether it usually precedes head pain."],["Aura","Fully reversible visual, sensory, or speech and language symptoms that usually develop gradually.","Symptom type, time it began, how it spread or changed, duration, and whether it completely resolved."],["Headache","Head pain, nausea or vomiting, light and sound sensitivity, smell sensitivity, dizziness, or brain fog.","Pain location and quality, peak severity, activity limits, treatment timing, and response."],["Postdrome","Fatigue, concentration difficulty, dizziness, mood change, body aches, or lingering sensory sensitivity.","When head pain ended, remaining symptoms, functional effect, and time back to your usual baseline."]]},{type:"h2",id:"prodrome-symptoms",text:"Prodrome symptoms: notice the earliest repeatable change"},{type:"p",text:"Prodrome can begin hours or even a day or two before headache. Reported changes include unusual tiredness, frequent yawning, difficulty concentrating, neck stiffness, mood changes, food cravings, increased urination, nausea, and light or sound sensitivity. A common symptom such as fatigue does not prove an attack has started; it becomes useful when the same cluster repeatedly precedes attacks."},{type:"p",text:"Record the earliest change and the rough time it began. Use neutral wording such as “yawning and light sensitivity began after lunch” rather than labeling a food, weather event, or stressful meeting as the cause. Experiences blamed as triggers may be early symptoms of an attack already underway. Review several weeks before drawing conclusions."}
26,{type:"h2",id:"aura-symptoms",text:"Aura symptoms: track development, duration, and recovery"},{type:"p",text:"Migraine aura can involve flashing lights, zigzag patterns, shimmering areas, or blind spots; pins and needles or numbness; and speech or language difficulty. International headache criteria describe aura as fully reversible and typically developing gradually. Individual symptoms commonly last five to sixty minutes, although experiences vary. Aura can occur before or during pain and is not always followed by headache."},{type:"p",text:"For an established aura pattern, record when it began, how it spread or changed, which part of vision or the body seemed affected, when it resolved, and when headache began. Timing it prospectively is more reliable than estimating later. An app or diary cannot determine that a first, sudden, prolonged, or atypical neurologic symptom is safe. New weakness, vision loss, trouble speaking, or symptoms unlike your usual aura require prompt evaluation."},{type:"h2",id:"headache-phase-symptoms",text:"Headache-phase symptoms: record more than pain intensity"},{type:"p",text:"Migraine headache is often moderate or severe, pulsating, and worsened by ordinary activity, but its location and character can vary. Nausea, vomiting, light and sound sensitivity are central features; smell sensitivity, dizziness, fatigue, neck discomfort, cognitive slowing, and mood changes may also occur. Disabling migraine symptoms can occur with little or no head pain, so a pain score may understate an attack."},{type:"p",text:"Use one personal zero-to-ten scale and add what a number cannot show: pain location and quality, associated symptoms, and activities that stopped. Record each treatment and dose, when you took it, how long relief took, whether function returned, and whether symptoms came back. Follow your clinician's plan; tracking should document care, not generate medication instructions."},{type:"h2",id:"postdrome-and-between-attacks",text:"Postdrome and symptoms between attacks"},{type:"p",text:"The end of head pain is not always the end of an attack. During migraine postdrome, people may feel exhausted, mentally slowed, dizzy, achy, emotionally changed, or still sensitive to light and sound. These effects can last into the next day and disrupt work, school, caregiving, or driving. Record when headache ended and when you returned to your usual baseline."},{type:"p",text:"Symptoms can occur between attacks. Note persistent light sensitivity, concentration difficulty, dizziness, or other symptoms without automatically attributing them to migraine. Separate headache days, other symptom days, and symptom-free days in the monthly summary. Discuss persistent or changing symptoms with a clinician, especially when they affect function or differ from the pattern previously evaluated."},{type:"h2",id:"sustainable-tracking-template",text:"A sustainable migraine symptom-tracking template"},{type:"p",text:"Keep the record short enough to complete when unwell and consistent enough to compare later. The companion migraine tracking guide covers formats and trigger review. Use the same small set of fields for each attack."},{type:"ol",items:["Start and end: note the earliest symptom, approximate onset, end of head pain, and return to your usual baseline.","Phase and symptoms: mark prodrome, aura, headache, or postdrome and select only the symptoms that were present.","Severity and function: use one personal scale and record what work, school, household, social, or caregiving activity changed.","Treatment response: record the treatment, dose, time taken, relief, return of function, and whether symptoms returned.","Context: add only a few relevant factors such as sleep, meals, menstrual cycle, illness, stress, or unusual exposure.","Safety: flag anything new, sudden, prolonged, or meaningfully different from the pattern your clinician has evaluated."]},{type:"p",text:"Review patterns monthly instead of checking the log after every sensation. Summarize headache days, other symptom days, acute-treatment days, typical duration, disabling associated symptoms, and days with limited activity. A one-page view is easier to discu
26ss than individual entries. If tracking increases anxiety or dominates the day, simplify it with your clinician."},{type:"h2",id:"when-to-seek-care",text:"When migraine-like symptoms need medical care"},{type:"p",text:"Call emergency services for a headache that reaches severe intensity suddenly; a headache with new weakness, numbness, facial droop, speech difficulty, loss of vision, seizure, fainting, marked confusion, or inability to wake; or a severe headache with fever and neck stiffness. Headache after a recent head injury also needs medical assessment rather than routine migraine tracking. New headache during pregnancy or after delivery and any symptom your clinician has identified as an emergency warning sign require prompt guidance."},{type:"p",text:"Arrange a non-emergency clinical review when attacks are becoming more frequent or disabling, the pattern changes, symptoms no longer respond as expected to the care plan, or you are using acute medicine more often. Bring the summary and medication list. A primary care clinician, neurologist, or headache specialist can determine whether the pattern fits migraine, whether testing is needed, and how treatment should change."},{type:"h2",id:"how-alumina-fits-in",text:"How Alumina Health can support a symptom record"},{type:"p",text:"Alumina Health can place short reaction and processing speed and eye-brain vision check sessions alongside a migraine diary when those activities are comfortable and appropriate for you. Repeating a brief check-in under similar conditions may add context about how you function before, during, or after an attack, but the result cannot confirm migraine, classify aura, identify an emergency, or determine treatment."},{type:"p",text:"Do not push through a screen-based task during severe pain, visual symptoms, nausea, or sensory sensitivity. Skip the session if it conflicts with your care plan or makes you feel worse. Alumina Health is not a medical device and is not a substitute for clinical evaluation; its role is limited to organizing repeat observations that you may choose to share with a qualified healthcare professional."}],faqs:[{q:"Does every migraine attack have four phases?",a:"No. The four-phase model is a useful framework, but phases may overlap or be absent. Aura occurs only in some people, and the same person's attacks can vary."},{q:"What migraine symptoms should I track besides headache?",a:"Track only symptoms relevant to your pattern, such as nausea, light or sound sensitivity, visual or sensory changes, dizziness, concentration difficulty, fatigue, and the effect on normal activity."},{q:"How can I tell whether a symptom is aura or a medical emergency?",a:"You should not make that decision from a diary or app. A first, sudden, prolonged, or unusual neurologic symptom, or weakness, speech difficulty, or vision loss, needs prompt medical evaluation."},{q:"Should I track symptoms every day?",a:"A simple daily mark for headache, other symptoms, or symptom-free status can help show monthly frequency. Detailed entries can be limited to attacks or treatment changes so tracking remains sustainable."},{q:"Can Alumina Health diagnose migraine or measure its severity?",a:"No. Alumina Health is a non-diagnostic tracking tool. Its guided check-ins may add structured context to a symptom record, but diagnosis, severity assessment, and treatment decisions belong with a qualified clinician."}],citations:[{label:"Migraine",publisher:"National Institute of Neurological Disorders and Stroke (NINDS)",url:"https://www.ninds.nih.gov/health-information/disorders/migraine"},{label:"1.1 Migraine Without Aura",publisher:"International Headache Society, ICHD-3",url:"https://ichd-3.org/1-migraine/1-1-migraine-without-aura/"},{label:"1.2 Migraine With Aura",publisher:"International Headache Society, ICHD-3",url:"https://ichd-3.org/1-migraine/1-2-migraine-with-aura/"},{label:"Migraine Signs and Symptoms",publisher:"American Migraine Foundation",url:"https://americanmigrainefoundation.org/migraine-signs-symptoms/"},{label:"Headache Journals: Tracking Your Migraine",publisher:"American Migraine Foundation",url:"https://americanmigrainefoundation.org/understanding-migraine/headache-diary/"}]},{slug:"word-spelling-tasks-for-alzheimers-and-dementia-tracking",category:"dementia-related-concerns",title:"Word Spelling Tasks for Alzheimer's and Dementia Tracking",description:"Why clinicians may ask someone to spell WORLD backwards, what that task can and cannot show, and how families can record concerns for a memory clinic.",primaryKeyword:"word spelling task dementia",conditions:["dementia-related-concerns","memory-concerns","cognitive-change"],assessments:["memory-and-recall","reaction-and-processing-speed"],assessmentLinks:[{anchor:"memory and recall",slug:"memory-and-recall"}],linkAnchors:["word spelling task","spelling assessment","Alzheimer's tracking","memory clinic"],datePublished:"2026-07-15",dateModified:"2026-09-23",readingTimeMin:9,keyTakeaways:["Spelling WORLD backwards is one option in the MMSE attention task; it is not a MoCA item.","A spelling response can reflect attention and sequencing, but also hearing, language, education, or fatigue.","An informal home attempt is not a validated screen and cannot diagnose Alzheimer's disease or dementia.","A dated record of everyday changes is more useful to a clinician than a self-assigned spelling score."],body:[{type:"p",text:"Why might a clinician ask someone to spell WORLD backwards? In the Mini-Mental State Examination (MMSE), it can be used as an attention task: the person has to hold the letters in mind and reverse their order. The Montreal Cognitive Assessment (MoCA) tests attention using other tasks, including digit span and serial subtraction; WORLD backwards is not a MoCA item. Repeating a bedside task at home does not recreate either validated assessment. If a family notices difficulty with a familiar task, the observation can be recorded and discussed, but it cannot identify a cause or supply a diagnosis."},{type:"callout",variant:"note",text:"Nothing at home diagnoses Alzheimer's disease or any other dementia. What a home spelling check-in can do is add a repeatable data point that supports a clearer conversation at a memory clinic."},{type:"h2",id:"what-spelling-actually-measures",text:"What a spelling task actually measures"},{type:"p",text:"A word spelling task can draw on language, attention, and working memory. To say a word backwards, a person has to hear or read the instruction, hold the letter sequence in mind, reverse it, and speak the answer. Hearing, vision, language familiarity, literacy, stress, pain, sleep, and the way the task is given can all affect the response. A single error is not specific to dementia, and there is no evidence that an informal home spelling task can detect Alzheimer's disease early."},{type:"h2",id:"forward-vs-backward",text:"Forward versus backward: why the direction matters"},{type:"p",text:"Forward spelling asks for a familiar sequence; backward spelling adds a reversal step. That extra step is one reason the MMSE includes WORLD backwards as an attention option. It does not make the task a stand-alone measure of memory or a more sensitive home test for dementia. Changing words, prompts, or help from a caregiver also changes the task, so scores across sessions are not directly comparable."},{type:"table",caption:"Where backward spelling fits—and where it does not",headers:["Setting","What happens","What the result can tell you"],rows:[["MMSE administered by a trained professional","WORLD backwards may be used for an attention item","One item contributes to a broader standardized screen"],["MoCA administered by a trained professional","Attention is sampled with other tasks, such as digit span and serial subtraction","A clinician interprets the full screen in context"],["Informal attempt at home","A family may note the exact prompt and response","An observation to discu
26ss, not an MMSE or MoCA score"]]},{type:"definition",term:"Working memory",definition:"The short-term system that holds and manipulates information over seconds, for example keeping a phone number in mind while dialing or reversing a word letter by letter."},{type:"h2",id:"how-to-document",text:"How to document a concern at home"},{type:"p",text:"If a clinician has asked you to make home observations, follow that clinician's instructions. Otherwise, it is reasonable to write down a change you happened to notice without setting up a repeated test. Record the date, exact prompt, response, whether the person heard and understood it, and any help given. Also note a concrete everyday example, such as difficulty following a familiar recipe. Do not administer or score an MMSE or MoCA from memory and do not pressure someone to keep repeating a distressing task."},{type:"ol",items:["Write down the date and the exact task or everyday situation you noticed.","Record the person's response in their own words, without adding an interpretation or score.","Note relevant context such as poor sleep, illness, hearing difficulty, or a change in medication.","Add one example of whether daily function has changed, then bring the notes to a clinician."]},{type:"h2",id:"what-to-look-for",text:"What to look for over weeks"},{type:"p",text:"Do not read too much into one attempt or a string of informal scores. Sleep, illness, medication, hearing, language, and repeated practice may change performance. Note whether a concern persists and whether there are changes in everyday tasks, communication, or independence. A clinician can decide whether formal cognitive assessment is appropriate and which tools to use."},{type:"h2",id:"pairing-with-other-tasks",text:"Pair spelling with memory and reaction check-ins"},{type:"p",text:"Different tasks sample different abilities, but combining several home scores does not turn them into a clinical screen. Memory and recall and reaction and processing speed check-ins can help organize observations over time when they are comfortable and useful to the person. Share the task names, circumstances, and any daily changes with a clinician rather than combining the results into a dementia risk score."},{type:"h2",id:"when-to-escalate",text:"When to bring it up with a clinician"},{type:"p",text:"Contact a primary care clinician or memory clinic when cognitive concerns persist, worsen, or affect daily life, including missed appointments, difficulty managing medication, or getting lost. Do not wait for a home spelling trend before seeking advice. Bring a short summary of when changes began, concrete examples, medicines and health changes, and any observations you recorded. Sudden confusion or new neurological symptoms need prompt medical evaluation."},{type:"h2",id:"how-alumina-fits",text:"How Alumina Health fits in"},{type:"p",text:"Alumina Health provides guided memory and recall and reaction and processing speed check-ins on iPhone and iPad. These are separate from the MMSE and MoCA. The app does not diagnose Alzheimer's disease or any other dementia. Its record can help a family describe what changed and when, alongside examples from daily life, for a clinician to interpret."}],faqs:[{q:"Is a word spelling task a diagnostic test for Alzheimer's disease?",a:"No. WORLD backwards is an optional attention item in the MMSE, not a stand-alone diagnostic test and not an item in the MoCA. A clinician evaluates symptoms, function, and other findings before determining what further assessment is needed."},{q:"Why does backward spelling feel so much harder?",a:"It adds a reversal step that draws on attention and working memory. Difficulty can have many causes and does not by itself indicate cognitive disease."},{q:"Is spelling WORLD backwards part of the MoCA?",a:"No. It is associated with the MMSE attention item. The MoCA samples attention with other tasks, including digit span and serial subtraction."},{q:"Should we repeat the task every week at home?",a:"There is no validated home schedule for informal spelling checks. Ask the person's clinician 
26what, if anything, is useful to track and prioritize changes in daily function over a homemade score."}],citations:[{label:"Alzheimer's Disease Fact Sheet",publisher:"National Institute on Aging (NIA), NIH",url:"https://www.nia.nih.gov/health/alzheimers-and-dementia/alzheimers-disease-fact-sheet"},{label:"The Montreal Cognitive Assessment (MoCA): A Brief Screening Tool for Mild Cognitive Impairment",publisher:"Journal of the American Geriatrics Society (Nasreddine et al., 2005)",url:"https://pubmed.ncbi.nlm.nih.gov/15817019/"},{label:"Mini-Mental State: A Practical Method for Grading the Cognitive State of Patients",publisher:"Journal of Psychiatric Research (Folstein, Folstein & McHugh, 1975)",url:"https://pubmed.ncbi.nlm.nih.gov/1202204/"},{label:"MMSE administration protocol: WORLD backwards attention item",publisher:"National Institute on Aging Research Biobank",url:"https://agingresearchbiobank.nia.nih.gov/studies/sof/documents/download/Protocols/Visit_8/MMSE_Visit8.pdf/"},{label:"The MoCA Test",publisher:"MoCA Cognition",url:"https://www.mocacognition.com/the-moca-test/"}]},{slug:"gait-analysis-for-neurological-conditions",category:"movement-symptoms",title:"Gait Analysis for Neurological Conditions: A Practical Guide",description:"How gait analysis is used in Parkinson's, MS, and other neurological conditions, what a clinical gait exam looks for, and how home walking check-ins add signal.",primaryKeyword:"gait analysis neurological conditions",conditions:["movement-symptoms","parkinsons-disease","multiple-sclerosis"],assessments:["walking-and-movement","reaction-and-processing-speed"],assessmentLinks:[{anchor:"walking and movement",slug:"walking-and-movement"},{anchor:"reaction and processing speed",slug:"reaction-and-processing-speed"}],articleLinks:[{anchor:"gait analysis at home",slug:"gait-analysis-at-home-balance-changes-to-track"},{anchor:"fall risk assessment",slug:"fall-risk-assessment-and-tracking"}],linkAnchors:["gait analysis","gait assessment","walking assessment","gait changes"],datePublished:"2026-07-15",dateModified:"2026-07-25",readingTimeMin:9,keyTakeaways:["Gait is one of the most information-rich signals in neurology, and one of the earliest to shift in many conditions.","A clinical gait exam looks at speed, cadence, step length, symmetry, arm swing, turning, and balance recovery.","Home walking check-ins capture short, repeatable samples that are hard to fake and easy to trend over weeks.","Pair gait tracking with a short reaction and processing speed session to catch dual-task slowing."],body:[{type:"p",text:"Neurologists have been reading gait for as long as neurology has existed. Long before imaging existed, clinicians learned to spot the shuffling steps of Parkinson's disease, the wide-based, uncertain walking of a cerebellar problem, the foot drop of a peripheral nerve injury, and the subtle asymmetry that can hint at an early stroke. Gait is not a single measurement. It is a compact summary of motor planning, coordination, balance, sensation, and attention working together. That is why gait analysis for neurological conditions remains one of the most information-dense parts of the exam, and why a short weekly walking check-in at home is one of the highest-yield things a family can add between visits."},{type:"callout",variant:"note",text:"If you are working through new falls, sudden weakness, or an unexplained change in walking, do not track quietly. That is a call to a clinician."},{type:"h2",id:"what-a-clinician-looks-at",text:"What a clinician actually looks at"},{type:"p",text:"When a neurologist watches a patient walk down the corridor, they are looking at several things at once, most of them without saying so. Walking speed and cadence come first, because they change earliest across a wide range of conditions. Step length and step symmetry come next, along with base of support, that is, how wide the feet are apart. Arm swing carries a surprising amount of information; a reduced or absent arm swing on one side is a classic early feature in Parkinson's disease. Turning is watched closely because turning is when balance systems are most stressed. Finally, the clinician 
26will often look for how the person recovers from a small unexpected push (a pull test), because postural recovery is a sensitive early indicator of neurological trouble."},{type:"ul",items:["Walking speed and cadence","Step length and step-to-step symmetry","Base of support (foot spacing)","Arm swing, symmetry, and posture","Turning smoothness and number of steps to turn","Balance recovery after a small perturbation"]},{type:"h2",id:"what-gait-tells-you",text:"What gait tells you across conditions"},{type:"p",text:"Different conditions leave different fingerprints. Parkinson's disease tends to shorten stride, reduce arm swing (often first on one side), and produce difficulty initiating movement or turning in multiple small steps. Multiple sclerosis often affects walking through fatigue and heat sensitivity, so the same person may look fine walking to the kitchen and quite different after ten minutes. Cerebellar disease produces a wide-based, staggering gait. Normal pressure hydrocephalus classically produces a magnetic, shuffling gait paired with cognitive and urinary changes. Small-vessel disease can produce a cautious, short-stepped gait even when strength on exam is preserved. Reading a gait, in other words, is pattern recognition, and it depends on seeing enough of it."},{type:"definition",term:"Cadence",definition:"The number of steps taken per minute. Cadence typically declines earlier than raw walking speed in many neurological conditions."},{type:"h2",id:"why-home-matters",text:"Why home walking samples matter"},{type:"p",text:"A twenty-second walk in a clinic corridor is a snapshot, and often an unrepresentative one. People walk differently when they know they are being watched, they walk differently on the day of a stressful appointment, and they often walk best in the corridor and worst at 5 pm on a fatigued Tuesday. A short walking session done in the same hallway at home, at the same time of week, is a much steadier baseline. Over two months you can see whether cadence is stable, whether turning is taking more steps than it used to, and whether the gap between a good and bad day is widening."},{type:"p",text:"For a repeatable routine focused on walking and balance trends, use the gait analysis at home guide. If falls or near-falls are part of the pattern, a fall risk assessment broadens the conversation beyond gait to medicines, dizziness, vision, footwear, and the home environment."},{type:"h2",id:"dual-task",text:"Dual-task gait: the underused signal"},{type:"p",text:"One of the most sensitive gait findings in early cognitive and movement disorders is not walking itself but walking while doing something else. Asking a person to walk while counting backwards from one hundred by sevens is a well-known clinical trick because attentional load reveals subtle motor cost that a plain walk hides. At home, running a short reaction and processing speed check-in on the same day as a walking session gives you a rough version of the same idea: it lets you see whether motor and cognitive tempo are trending together or apart. When they start diverging, it is often a useful conversation to have with a neurologist."},{type:"h2",id:"how-to-run",text:"How to run a home walking check-in"},{type:"ol",items:["Choose a safe indoor space with a straight walking path of at least a few metres.","Wear the same footwear you usually wear indoors.","Do the session at roughly the same time of week, ideally not right after a meal or a stressful call.","Walk at a natural pace for the length of the path, then turn and walk back.","Note anything unusual (a bad night of sleep, medication timing, pain) in a single line."]},{type:"h2",id:"what-to-bring-in",text:"What to bring to a neurology visit"},{type:"p",text:"As with every other kind of tracking, a summary beats a spreadsheet. One page with how long you have been tracking, your typical cadence and walking speed range, whether turning has changed, and any real-world observations (near-falls, needing to hold a handrail more often, a slower pace on a familiar walk) is what a neurologist can act on quickly. If you are also tracking reaction time or processing speed, add those trend lines. A clinician looking at that page for two minutes will get more than they would from a twenty-second corridor walk."},{type:"h2",id:"how-alumina-fits",text:"How Alumina Health fits in"},{type:"p",text:"Alumina Health provides a guided walking and movement assessment that uses the motion sensors in iPhone and iPad to sample cadence, step regularity, and turning, plus a short reaction and processing speed check-in that pairs naturally with it for dual-task-style tracking. Alumina is not a medical device and does not diagnose neurological conditions. It is designed to help you and your care team see how gait is trending in real life, between the appointments where it can only be sampled for a few seconds at a time."}],faqs:[{q:"How is a home walking sample different from a clinic gait exam?",a:"A clinic exam is a rich, one-time snapshot interpreted by a trained clinician. A home walking sample is a lighter, repeatable measurement designed to show a trend. Both are useful, and they answer different questions."},{q:"Which gait changes are worth mentioning to a doctor?",a:"New shuffling, reduced arm swing on one side, new falls or near-falls, freezing on turns, and any sudden change in walking. Gradual changes over weeks are worth mentioning too if a trend is visible."},{q:"Is dual-task walking safe to try at home?",a:"Only in a safe indoor space and only if a family member is present to spot for balance. If dual-task walking makes you noticeably unsteady, skip it and mention that to your clinician."},{q:"Can gait tracking help with Parkinson's medication decisions?",a:"It can add context. Running the walking session at consistent times relative to medication makes on and off windows visible over weeks, which is something a movement-disorder specialist can use when adjusting a regimen."}],citations:[{label:"Gait and Balance Disorders in Older Adults",publisher:"American Family Physician (AAFP)",url:"https://www.aafp.org/pubs/afp/issues/2010/0701/p61.html"},{label:"Movement Disorders",publisher:"Johns Hopkins Medicine",url:"https://www.hopkinsmedicine.org/health/conditions-and-diseases/movement-disorders"},{label:"MDS-UPDRS: Movement Disorder Society Unified Parkinson's Disease Rating Scale",publisher:"International Parkinson and Movement Disorder Society",url:"https://www.movementdisorders.org/MDS/MDS-Rating-Scales/MDS-Unified-Parkinsons-Disease-Rating-Scale-MDS-UPDRS.htm"}]},{slug:"gait-analysis-at-home-balance-changes-to-track",category:"movement-symptoms",title:"Gait Analysis at Home: Balance Changes to Track",description:"Learn how gait analysis at home can track walking speed, turning, balance, and fatigue—and how to summarize meaningful changes for a clinician.",primaryKeyword:"gait analysis at home",conditions:["movement-symptoms","parkinsons-disease","multiple-sclerosis"],assessments:["walking-and-movement","reaction-and-processing-speed"],assessmentLinks:[{anchor:"walking and movement assessment",slug:"walking-and-movement"}
26,{anchor:"reaction and processing speed",slug:"reaction-and-processing-speed"}],articleLinks:[{anchor:"gait analysis for neurological conditions",slug:"gait-analysis-for-neurological-conditions"},{anchor:"fall risk assessment",slug:"fall-risk-assessment-and-tracking"}],linkAnchors:["gait analysis at home","balance assessment","gait and balance assessment","home mobility tracking"],datePublished:"2026-07-25",dateModified:"2026-07-25",readingTimeMin:10,keyTakeaways:["Gait and balance are related, but they describe different parts of safe, efficient mobility.","A consistent setup makes week-to-week trends more useful than an isolated home score.","Home tracking should never require a difficult balance task or walking without usual support.","Sudden or substantial mobility changes need clinical attention, not another tracking session."],body:[{type:"p",text:"Gait analysis at home means observing a short, familiar walk in a repeatable way and recording how it changes over time. It can capture walking pace, step rhythm, turning, use of support, fatigue, and the circumstances around a good or difficult day. It cannot diagnose the cause of a walking change, reproduce a physical therapist's examination, or tell someone whether they are safe from a fall. Its value is longitudinal: a series of comparable observations can make a gradual change easier to describe at a neurology, primary-care, or rehabilitation visit."},{type:"callout",variant:"warning",text:"Do not attempt a walking or balance check if you feel unsafe, unusually dizzy, faint, or newly weak. Use your usual mobility aid and have appropriate supervision. Sudden inability to stand or walk, new one-sided weakness or numbness, fainting, a serious injury or head impact, or another abrupt neurological change needs prompt medical evaluation."},{type:"h2",id:"what-home-gait-analysis-shows",text:"What gait analysis at home can—and cannot—show"},{type:"p",text:"A home check-in is best understood as structured observation. Repeating the same safe route can reveal whether a person is taking more pauses, using more steps to turn, relying on furniture, or slowing earlier with fatigue. Those observations may help a clinician decide what to examine more closely. They are not a diagnosis or a clearance to walk without help. Formal gait analysis for neurological conditions also considers strength, sensation, reflexes, joint motion, vision, attention, and the pattern of any neurological signs."},{type:"definition",term:"Gait",definition:"The pattern of walking created by posture, balance, strength, coordination, sensation, vision, and motor planning working together."},{type:"definition",term:"Balance",definition:"The ability to keep the body's centre of mass controlled while still, moving, turning, or responding to a change in the surface or surroundings."},{type:"h2",id:"gait-versus-balance",text:"Gait versus balance: what each measure adds"},{type:"p",text:"Gait and balance overlap, but they are not interchangeable. Someone may walk at a familiar speed yet become less steady when turning, while another person may have stable standing balance but take shorter or less regular steps. A useful balance assessment therefore looks beyond straight-line speed. The table separates common observations so a log describes what changed instead of collapsing everything into the word “unsteady.”"},{type:"table",caption:"Walking and balance observations that can add context",headers:["Domain","What to notice","Context to record"],rows:[["Pace and rhythm","Usual pace, pauses, step regularity, or a new shuffle","Fatigue, pain, illness, medication timing"],["Symmetry","One step looks shorter, one foot catches, or one arm swings less","Which side, how often, and whether it is new"],["Turning","Smooth turn, extra steps, freezing, or reaching for support","Turn direction, space available, and nearby obstacles"],["Postural control","Sway, leaning, or difficulty settling after stopping","Lighting, surface, footwear, and dizziness"],["Functional effect","Handrail use, reduced distance, near-fall, or avoided activity","What the person could usually do before the change"]]},{type:"h2",id:"clinical-gait-and-balance-assessment",text:"What clinicians include in a gait and balance assessment"},{type:"p",text:"A clinician starts with history and observation, then selects tasks appropriate to the person's health and fall risk. Common components include comfortable walking speed, turning, rising from a chair, the Timed Up and Go, and progressively narrower standing positions. These tasks are interpreted alongside symptoms, medicines, blood pressure, strength, sensation, vision, cognition, and prior falls. No single time or score explains why gait changed, and a person who is unsteady should not recreate clinical balance challenges alone."},{type:"p",text:"The CDC's STEADI materials include the Timed Up and Go, 30-Second Chair Stand, Four-Stage Balance Test, and orthostatic blood-pressure measurement for trained clinical use. At home, the safer goal is not to reproduce every test. It is to document ordinary movement under familiar conditions and let a qualified professional choose and supervise any formal examination."},{type:"h2",id:"what-to-track-safely",text:"What to track safely at home"},{type:"p",text:"Start with real-life observations before adding a formal session. Note whether walking to the bathroom at night now requires a hand on the wall, whether a familiar grocery trip needs a rest, or whether turning in the kitchen feels less controlled. If a short check-in is appropriate, keep the route clear, use normal footwear and the usual cane or walker, and stop at the first sign of instability. A walking and movement assessment can organize cadence, step regularity, and turning observations without replacing hands-on evaluation."},{type:"ul",items:["Approximate pace and whether there were hesitations, pauses, or unusually short steps.","Turning direction, smoothness, number of small corrective steps, and any need for support.","Foot clearance, scuffing, freezing, or a difference between the left and right side.","Dizziness, pain, breathlessness, fatigue, or divided-attention difficulty during the walk.","Footwear, surface, lighting, mobility aid, medication timing, sleep, illness, and heat.","Falls, near-falls, avoided activities, and any increasing reliance on another person or furniture."]},{type:"h2",id:"weekly-tracking-routine",text:"Create a sustainable weekly tracking routine"},{type:"p",text:"Consistency matters more than intensity. Choose one safe indoor route and one or tw
26o check-ins per week. Keep the approximate time of day, footwear, mobility aid, and instructions consistent. Record a brief context note rather than trying to eliminate every source of variation. If symptoms fluctuate with medication, fatigue, or heat, a clinician may prefer planned comparisons at different times, but that schedule should be agreed with the care team."},{type:"ol",items:["Confirm that the route is dry, well lit, uncluttered, and wide enough for the usual mobility aid.","Record date, time, footwear, device, symptoms, and relevant medication or fatigue context.","Walk naturally; do not deliberately walk faster, remove support, or add a difficult mental task.","Note pace, rhythm, turning, support, and any symptom that limited the session.","Stop if the task feels unsafe and record why it was skipped rather than forcing a result."]},{type:"h2",id:"interpret-trends-carefully",text:"How to interpret trends without overinterpreting them"},{type:"p",text:"One difficult session can reflect poor sleep, pain, an infection, a medication change, anxiety, heat, or an unfamiliar surface. Look for repeated changes under comparable conditions and for real-world impact: more near-falls, less distance, extra support, or activities being avoided. A reaction and processing speed check-in may add context when attention or mental fatigue seems connected to movement, but it should be completed separately and only when tolerated. It does not measure dual-task gait or establish the cause of slowing."},{type:"h2",id:"clinician-summary",text:"How to summarize changes for a clinician"},{type:"p",text:"A one-page summary is usually more useful than a long spreadsheet. State the baseline, the first date of change, frequency, most affected situations, associated symptoms, falls or near-falls, and whether a cane, walker, handrail, or another person is needed more often. Add a representative trend rather than every score. If near-falls or broader safety concerns are present, the companion fall risk assessment guide explains the additional medication, vision, dizziness, and home-environment details worth bringing."},{type:"table",caption:"A clinician-ready gait and balance summary",headers:["Summarize","Useful detail"],rows:[["Baseline","What walking, turning, stairs, and community activity usually looked like"],["Change","What is different, when it began, which side, and how often it occurs"],["Context","Fatigue, pain, dizziness, illness, medication timing, surface, and footwear"],["Safety impact","Falls, near-falls, activity avoidance, or greater reliance on support"],["Trend","Stable, intermittent, steadily changing, or linked to a repeatable circumstance"]]},{type:"h2",id:"alumina-role-and-limits",text:"How Alumina supports tracking—and where it stops"},{type:"p",text:"Alumina Health can help organize repeatable walking observations and optional reaction check-ins between visits. It does not diagnose a neurological or balance disorder, calculate fall risk, recommend treatment, or determine whether it is safe to walk without assistance. Results are most useful when paired with real-world notes and reviewed by a clinician 
26who understands the person's health, medicines, mobility aid, and usual level of function."}],faqs:[{q:"What is gait analysis?",a:"Gait analysis is the observation and measurement of how a person walks, including pace, cadence, step length, symmetry, posture, turning, and use of support. A clinical assessment also considers strength, sensation, joint motion, balance, attention, symptoms, and medical history."},{q:"What is the difference between gait analysis and balance assessment?",a:"Gait analysis focuses on the pattern of walking. Balance assessment examines postural control while standing and moving, including turning and responding to changes. They overlap, but a person can have a change in one domain that is less obvious in the other."},{q:"Can gait analysis be performed safely at home?",a:"Simple observation of ordinary walking may be appropriate when the route is safe and the person uses their usual support. Do not attempt challenging balance positions, remove a mobility aid, or continue when dizzy or unsteady. Ask a clinician 
26what is appropriate for your situation."},{q:"How often should walking and balance be tracked?",a:"One or two consistent check-ins per week is often enough to establish a trend without creating fatigue or practice effects. A clinician may recommend a different schedule for medication changes, rehabilitation, or fluctuating symptoms."},{q:"Can an app diagnose the cause of a gait or balance change?",a:"No. Similar changes can result from neurological, vestibular, cardiovascular, musculoskeletal, medication-related, or environmental factors. An app can organize observations, but diagnosis and treatment decisions require a qualified clinician."}],citations:[{label:"Clinical Resources: Functional Assessments",publisher:"CDC STEADI",url:"https://www.cdc.gov/steadi/hcp/clinical-resources/index.html"},{label:"Older Adults and Balance Problems",publisher:"National Institute on Aging, NIH",url:"https://www.nia.nih.gov/health/balance-problems-and-disorders"},{label:"World Guidelines for Falls Prevention and Management for Older Adults",publisher:"Age and Ageing (Montero-Odasso et al., 2022)",url:"https://pmc.ncbi.nlm.nih.gov/articles/PMC9523684/"},{label:"Evaluating Patients for Fall Risk",publisher:"Mayo Clinic",url:"https://www.mayoclinic.org/medical-professionals/clinical-updates/physical-medicine-rehabilitation/evaluating-patients-for-fall-risk"}]},{slug:"fall-risk-assessment-and-tracking",category:"movement-symptoms",title:"Fall Risk Assessment: What to Track Between Visits",description:"Learn what a fall risk assessment covers, how to log falls, near-falls, gait, balance, medicines, and hazards, and when to contact a clinician.",primaryKeyword:"fall risk assessment",conditions:["movement-symptoms","parkinsons-disease","multiple-sclerosis"],assessments:["walking-and-movement","reaction-and-processing-speed"],assessmentLinks:[{anchor:"walking and movement assessment",slug:"walking-and-movement"},{anchor:"reaction and processing speed",slug:"reaction-and-processing-speed"}],articleLinks:[{anchor:"gait analysis at home",slug:"gait-analysis-at-home-balance-changes-to-track"},{anchor:"gait analysis for neurological conditions",slug:"gait-analysis-for-neurological-conditions"}],linkAnchors:["fall risk assessment","fall risk tracking","fall prevention assessment","near-fall tracking"],datePublished:"2026-07-25",dateModified:"2026-07-25",readingTimeMin:10,keyTakeaways:["Fall risk assessment combines history, mobility, medicines, symptoms, and environment.","Falls and near-falls are most useful when their circumstances and consequences are recorded.","No isolated score or consumer app can reliably predict whether an individual will fall.","Tracking supports a clinician conversation but never replaces evaluation or urgent care."],body:[{type:"p",text:"A fall risk assessment is a clinical process for identifying factors that may make a person more likely to fall and deciding which risks can be addressed. It usually combines fall and near-fall history with gait, balance, strength, medicines, dizziness, vision, feet, footwear, cognition, daily activities, and the home environment. Tracking between visits can make these patterns easier to recall, but it is not a prediction score. The goal is to give a clinician, physical therapist, or occupational therapist a clear picture of what happened, what changed, and where prevention may be possible."},{type:"callout",variant:"warning",text:"After a fall, seek urgent help for loss of consciousness, new confusion or neurological symptoms, severe pain, inability to bear weight, chest pain, severe breathing difficulty, or concerning symptoms after a head impact. When in doubt about an injury or sudden illness, stop tracking and contact an appropriate medical service."},{type:"h2",id:"what-fall-risk-assessment-means",text:"What a fall risk assessment is"},{type:"p",text:"A brief screen may ask about falls in the past year, feeling unsteady, or worrying about falling. A positive answer can lead to a more comprehensive assessment. That assessment looks for interacting contributors rather than a single cause. For example, a new sedating medicine, reduced night vision, dizziness on standing, and a loose rug may create more risk together than any one factor alone. The result should guide a personalized clinical conversation, not label someone as inevitably “high risk.”"},{type:"definition",term:"Near-fall",definition:"An event in which a person loses balance or would probably have fallen without grabbing support, taking a rapid corrective step, or receiving help."},{type:"h2",id:"screening-assessment-tracking-detection",text:"Screening, assessment, tracking, and fall detection"},{type:"p",text:"These terms are often mixed together online, but they describe different jobs. Screening decides who may need closer evaluation. Comprehensive assessment examines contributing factors. Fall risk tracking records events and changes between visits. Real-time fall detection uses a wearable or environmental sensor to re
26cognize that a fall may already have occurred and may alert another person. Alumina does not perform fall detection, emergency response, or individualized fall prediction."},{type:"table",caption:"Four different approaches to falls and mobility",headers:["Approach","Main question","What it produces"],rows:[["Brief screening","Could this person benefit from further evaluation?","Questions or a short clinical screen"],["Clinical assessment","Which health and environmental factors may be modifiable?","Professional findings and a care plan"],["Between-visit tracking","What events or mobility changes are occurring over time?","A dated log and trend summary"],["Real-time detection","Might a fall have just occurred?","A device alert, not a risk diagnosis"]]},{type:"p",text:"NICE specifically advises clinicians not to use fall-risk prediction tools to predict an individual's risk of falling. That distinction matters: a checklist or app can help organize relevant information, but it cannot reduce a complex, changing situation to a reliable personal forecast."},{type:"h2",id:"risk-domains-clinicians-review",text:"Risk domains a clinician may review"},{type:"p",text:"The CDC STEADI framework and international falls guidance emphasize a multifactorial review. The clinician chooses what is relevant to the individual, including whether symptoms are new, whether support is available, and whether the person has changed activities because of fear. A walking and movement assessment can contribute longitudinal gait context, but it covers only one part of this broader evaluation."},{type:"ul",items:["Falls, near-falls, fear of falling, and activities reduced or avoided because of safety concerns.","Gait, balance, lower-body strength, transfers, stairs, endurance, and use of a cane or walker.","Prescription medicines, over-the-counter products, alcohol, and recent dose or schedule changes.","Dizziness, faintness, blood-pressure symptoms, urgency, pain, numbness, weakness, or fatigue.","Vision, hearing, cognition, mood, feet, footwear, and the fit of any mobility aid.","Lighting, stairs, rugs, cords, pets, bathroom supports, outdoor surfaces, and access to help."]},{type:"h2",id:"record-fall-or-near-fall",text:"What to record after a fall or near-fall"},{type:"p",text:"Record the event as soon as practical, after immediate safety and medical needs are addressed. Use neutral language: “left foot caught the rug while turning” is more useful than “was careless.” Include near-falls even when no one was hurt, because they may reveal an earlier change in turning, dizziness, attention, or environmental demands. If the event was witnessed, note what the other person observed without treating that account as a diagnosis."},{type:"table",caption:"Fall and near-fall event log",headers:["Record","Examples"],rows:[["When and where","Date, time, room or outdoor location, lighting, and surface"],["What was happening","Rising, turning, stairs, reaching, toileting, or carrying something"],["Before the event","Dizziness, pain, urgency, weakness, distraction, or no warning"],["Equipment and context","Footwear, cane or walker, glasses, medication timing, and alcohol"],["What happened next","Direction of fall, support grabbed, ability to get up, injury, and help received"]]},{type:"h2",id:"practical-tracking-routine",text:"Create a practical fall-risk tracking routine"},{type:"p",text:"Use three layers: an event note after every fall or near-fall, a brief weekly mobility check, and a monthly summary. The weekly note might cover walking confidence, use of support, dizziness, and any activity that became harder. Record weeks with no events so the denominator is visible. A sustainable log should take minutes, not become a constant test of the person being observed."},{type:"ol",items:["Log each event after urgent needs have been handled.","Once a week, note mobility, dizziness, support used, medicine changes, and avoided activities.","If safe and tolerated, add a consistent walking check-in; do not perform a difficult balance challenge.","At month end, summarize counts, repeated circumstances, injuries, and change from usual function.","Share a concise summary and the most representative examples with the care team."]},{type:"h2",id:"when-to-contact-clinician",text:"When a change needs medical attention"},{type:"p",text:"Repeated near-falls, a first unexplained fall, new dizziness, growing reliance on furniture or another person, or a major change from baseline deserves timely clinical discussion. Contact the prescribing clinician 
26when a pattern appears after a medicine or dose change; do not stop a prescribed medicine independently. Abrupt weakness, numbness, speech or vision change, loss of consciousness, or a serious injury needs urgent evaluation rather than a routine appointment."},{type:"h2",id:"fall-prevention-conversation",text:"Questions to discuss about fall prevention"},{type:"p",text:"Evidence-based fall prevention is individualized. Depending on the assessment, a clinician may discuss strength and balance exercise, physical or occupational therapy, medicine review, vision or hearing care, blood-pressure symptoms, footwear, assistive-device fit, and home modifications. The USPSTF recommends exercise interventions for community-dwelling adults age 65 or older who are at increased risk, while multifactorial interventions are offered selectively. That guidance supports assessment-led decisions rather than a universal home program."},{type:"ul",items:["Would supervised strength, balance, or gait training be appropriate?","Could any medicine or combination of medicines contribute to dizziness or sedation?","Do vision, hearing, feet, footwear, or the mobility aid need review?","Would a home-safety evaluation or occupational-therapy visit help?","Which changes should trigger a call, an earlier appointment, or urgent care?"]},{type:"h2",id:"alumina-role-and-limits",text:"How Alumina supports the conversation"},{type:"p",text:"Alumina Health can help organize repeatable walking trends and an optional reaction and processing speed check-in when it is safe and tolerated. For a consistent walking setup, see the gait analysis at home guide; for clinical gait patterns, see gait analysis for neurological conditions. Alumina does not detect falls, call for help, produce a validated fall-risk score, diagnose a cause, or determine treatment. Pair app trends with the event log and a clinician's assessment."}],faqs:[{q:"What happens during a fall risk assessment?",a:"A clinician usually asks about falls and near-falls, then reviews mobility, balance, strength, medicines, dizziness, vision, feet, footwear, cognition, activities, and environmental hazards as appropriate. The assessment is tailored to the person rather than based on one universal test."},{q:"How is fall risk assessment different from fall detection?",a:"Assessment examines factors that may contribute to future falls and guides prevention. Fall detection uses a wearable or environmental device to recognize that a fall may already have happened and may send an alert. Alumina provides neither real-time detection nor emergency response."},{q:"Should near-falls be included in a fall log?",a:"Yes. A near-fall can expose a change in turning, balance, dizziness, attention, footwear, or the environment before an injury occurs. Record what prevented the fall, such as grabbing a counter or receiving help."},{q:"How often should fall risk be reviewed?",a:"Review is appropriate after a fall or important near-fall, after a meaningful health or medication change, or when mobility or confidence declines. Routine screening frequency depends on age, health, care setting, and the clinician's recommendations."},{q:"Can a balance test or app predict whether someone will fall?",a:"No single balance test or consumer app can reliably predict an individual's fall. Clinical findings, history, health conditions, medicines, behavior, and environment must be considered together, and risk can change over time."}],citations:[{label:"Clinical Resources for Fall Risk Screening and Assessment",publisher:"CDC STEADI",url:"https://www.cdc.gov/steadi/hcp/clinical-resources/index.html"},{label:"Falls and Fractures in Older Adults: Causes and Prevention",publisher:"National Institute on Aging, NIH",url:"https://www.nia.nih.gov/health/falls-and-falls-prevention/falls-and-fractures-older-adults-causes-and-prevention"},{label:"Falls Prevention in Community-Dwelling Older Adults: Interventions",publisher:"U.S. Preventive Services Task Force",url:"https://www.uspreventiveservicestaskforce.org/uspstf/announcements/final-recommendation-statement-interventions-prevent-falls-older-adults"},{label:"Falls: Assessment and Prevention in Older People",publisher:"National Institute for Health and Care Excellence (NICE)",url:"https://www.nice.org.uk/guidance/NG249/chapter/recommendations"},{label:"World Guidelines for Falls Prevention and Management for Older Adults",publisher:"Age and Ageing (Montero-Odasso et al., 2022)",url:"https://pmc.ncbi.nlm.nih.gov/articles/PMC9523684/"}]},{slug:"essential-tremor-vs-parkinsons-tremor",category:"essential-tremor",title:"Essential Tremor vs. Parkinson's Tremor: Key Differences",description:"Essential tremor vs. Parkinson's tremor: compare when shaking occurs, which body parts are affected, related symptoms, and what to track for a clinician.",primaryKeyword:"essential tremor vs Parkinson's",conditions:["essential-tremor","parkinsons-disease","movement-symptoms"],assessments:["tremor-and-hand-control","tapping-and-coordination"],assessmentLinks:[{anchor:"tremor and hand-control",slug:"tremor-and-hand-control"}],linkAnchors:["essential tremor vs Parkinson's","essential tremor","Parkinson's tremor","action tremor"],datePublished:"2026-07-24",dateModified:"2026-07-24",readingTimeMin:10,keyTakeaways:["Essential tremor usually appears during action; Parkinson's tremor is often most visible at rest.","Essential tremor often affects both hands, head, or voice; Parkinson's commonly begins on one side.","Slowness, stiffness, reduced arm swing, or shuffling point beyond tremor alone and need clinical evaluation.","The pattern is more useful than one shaky moment: record the task, side, timing, and possible triggers."],body:[{type:"p",text:"The clearest difference between essential tremor and Parkinson's tremor is when the shaking is most visible. Essential tremor is usually an action or postural tremor, meaning it appears while holding the arms out or using the hands. Parkinson's tremor is classically a resting tremor, most noticeable when a hand is relaxed in the lap or hanging at the side, and it often begins on one side. That distinction is useful, but it is not a diagnosis: both conditions can produce more than one tremor pattern, and medication effects, thyroid problems, anxiety, and other neurologic conditions can also cause shaking."},{type:"callout",variant:"note",text:"A tremor cannot be classified reliably from one symptom, one drawing, or one home assessment. Use these differences to organize what you notice, then bring the record to a primary care clinician, neurologist, or movement disorder specialist."},{type:"h2",id:"what-each-term-means",text:"What essential tremor and Parkinson's tremor mean"},{type:"definition",term:"Essential tremor (ET)",definition:"A neurologic movement disorder whose main feature is involuntary, rhythm
26ic shaking. It most often affects the hands during action or while holding a posture, but the head and voice can also be involved."},{type:"definition",term:"Parkinson's tremor",definition:"One possible motor feature of Parkinson's disease. The classic pattern is a slow resting tremor that starts on one side, often in a hand, and may lessen temporarily when that hand begins a purposeful movement."},{type:"p",text:"Parkinson's disease is more than a tremor disorder. Clinicians also look for bradykinesia, meaning slowness and decreasing size of repeated movements, together with rigidity, gait change, or postural problems. Some people with Parkinson's never develop a prominent tremor. Essential tremor, by contrast, is defined primarily by its tremor pattern, although balance or other non-tremor features can occur in some people. The diagnosis depends on the full history and neurologic exam, not on a single rule."},{type:"h2",id:"comparison",text:"Essential tremor vs. Parkinson's: a practical comparison"},{type:"table",caption:"Patterns clinicians consider when comparing essential tremor and Parkinson's tremor",headers:["Feature","Essential tremor","Parkinson's tremor"],rows:[["When it is most visible","During action or while holding a posture, such as writing, pouring, eating, or holding a phone.","Often at rest, such as when a hand is relaxed in the lap; it may decrease briefly with purposeful movement."],["Typical starting pattern","May affect both hands, although one side can be worse.","Commonly begins on one side and remains asymmetric early on."],["Body areas","Hands are most common; the head and voice may also shake.","Hands are common; the jaw, lips, or legs may be involved. Head and voice tremor are less typical."],["Handwriting","Letters may be large and shaky because action makes the tremor visible.","Writing may become unusually small or crowded, called micrographia, especially when bradykinesia is present."],["Other movement signs","Tremor may be the main visible problem.","Slowness, stiffness, reduced arm swing, short steps, or difficulty turning may accompany the tremor."],["Common modifiers","Stress, fatigue, caffeine, and temperature can make shaking more noticeable.","Stress and fatigue can also matter; symptoms may vary with the timing of Parkinson's medication."]]},{type:"p",text:"The table describes common patterns, not absolute rules. Long-standing essential tremor can sometimes appear at rest. People with Parkinson's can have postural or action tremor as well as resting tremor. A person can also have features of more than one tremor disorder. That overlap is why videos and repeated observations are more informative than trying to label a single moment at home."},{type:"h2",id:"where-they-overlap",text:"Where the two tremor patterns overlap"},{type:"p",text:"Both conditions can make writing, eating, shaving, applying makeup, fastening buttons, or carrying a full cup harder. Both can fluctuate with sleep, stress, illness, and attention. Both may become more noticeable over time, and neither can be confirmed by an app or a drawing test alone. Family history can support an essential tremor evaluation, but the absence of affected relatives does not rule it out. Likewise, a tremor that improves when a person moves the hand is suggestive of Parkinson's, but not conclusive."},{type:"p",text:"It is also easy to mistake an enhanced physiologic tremor for either condition. Everyone has a tiny background tremor; caffeine, some medications, low blood sugar, anxiety, fever, and an overactive thyroid can amplify it. A medication list, the timeline of onset, and a description of what the hands were doing when the tremor appeared help a clinician consider these alternatives."},{type:"h2",id:"what-to-track",text:"Six details to track before an appointment"},{type:"ol",items:["Activity: note whether the hand was fully supported and resting, held out against gravity, or being used for a task.","Side: record right, left, or both, and whether the difference between sides is consistent.","Body area: include the hands, head, jaw, voice, or legs rather than writing only 'tremor.'","Task effect: describe what happened while writing, pouring water, using utensils, buttoning clothing, or walking.","Context: note sleep, stress, caffeine, illness, cold, and the timing of any medicines that may affect movement.","Related changes: record slower movement, stiffness, smaller handwriting, reduced arm swing, balance change, or a softer voice."]},{type:"p",text:"A short video can preserve details that disappear by the time of an appointment. If it is safe and the person agrees, c
26apture ten to twenty seconds with the hands resting, then held out, then completing a familiar task. Add the date and context. Do not repeatedly provoke a tremor or stop prescribed medication to make it visible unless a clinician has specifically instructed you to do so."},{type:"h2",id:"clinical-evaluation",text:"How a clinician tells the difference"},{type:"p",text:"The evaluation begins with observation: hands resting in the lap, arms held out, finger-to-nose movement, handwriting or spiral drawing, finger tapping, walking, turning, arm swing, and muscle tone. The clinician will ask when the tremor began, whether it is progressive, which medicines and substances may contribute, and whether relatives have similar shaking. Blood tests or imaging may be used to rule out other causes, but essential tremor and Parkinson's disease are primarily clinical diagnoses."},{type:"p",text:"A movement disorder specialist is a neurologist with additional expertise in conditions such as Parkinson's disease, essential tremor, and dystonia. A specialist evaluation is particularly useful when the tremor pattern is mixed, the first diagnosis is uncertain, or symptoms are changing despite treatment. Bring a one-page summary, medication list, and two or three representative videos rather than hours of unsorted recordings."},{type:"h2",id:"when-to-seek-care",text:"When shaking needs prompt medical attention"},{type:"p",text:"Arrange a clinical evaluation for a new persistent tremor, a tremor that interferes with eating or other daily tasks, or shaking accompanied by progressive stiffness, slowness, falls, or cognitive change. Sudden shaking with new weakness, facial droop, speech difficulty, severe headache, confusion, or loss of coordination is not a routine tremor-tracking problem; seek emergency care. A sudden change after starting or changing a medicine should also be reported promptly to the prescribing clinician."},{type:"h2",id:"how-alumina-fits-in",text:"How Alumina Health supports tremor tracking"},{type:"p",text:"Alumina Health's tremor and hand-control and tapping and coordination assessments provide repeatable tasks on iPhone and iPad. Used with the same hand, setup, and medication context, they can help show whether steadiness, tracing, tap rhythm, or side-to-side differences are stable or changing. Alumina does not identify the cause of a tremor and cannot distinguish essential tremor from Parkinson's disease. Its role is to make the pattern easier to document and discuss with a qualified clinician."}],faqs:[{q:"Does shaking during movement always mean essential tremor?",a:"No. Essential tremor commonly appears during action, but Parkinson's disease and several other conditions can also produce action or postural tremor. The complete movement pattern and neurologic exam matter."},{q:"Does a resting tremor always mean Parkinson's disease?",a:"No. A one-sided resting tremor is a classic Parkinson's feature, but other tremor disorders can sometimes appear at rest. Parkinson's diagnosis also requires evidence of bradykinesia and other clinical features."},{q:"Can someone have both essential tremor and Parkinson's disease?",a:"It is possible for a person with a long-standing essential tremor diagnosis to later develop separate parkinsonian features. New slowness, stiffness, gait change, or a different resting tremor deserves a fresh clinical evaluation."},{q:"What kind of doctor evaluates a tremor?",a:"A primary care clinician can begin the evaluation. A neurologist, especially a movement disorder specialist, is the most focused specialist when the cause is uncertain or symptoms are complex."},{q:"Can a home tremor assessment diagnose either condition?",a:"No. Home assessments can document steadiness and change over time, but they cannot diagnose essential tremor, Parkinson's disease, or another cause of shaking."}],citations:[{label:"Essential Tremor: Symptoms and Causes",publisher:"Mayo Clinic",url:"https://www.mayoclinic.org/diseases-conditions/essential-tremor/symptoms-causes/syc-20350534"},{label:"Essential Tremor Disorder",publisher:"Johns Hopkins Medicine",url:"https://www.hopkinsmedicine.org/health/conditions-and-diseases/essential-tremor-disorder"},{label:"Tremor in Parkinson's Disease",publisher:"Parkinson's Foundation",url:"https://www.parkinson.org/understanding-parkinsons/movement-symptoms/tremor"},{label:"Parkinson's Disease: Hope Through Research",publisher:"National Institute of Neurological Disorders and Stroke (NINDS)",url:"https://www.ninds.nih.gov/health-information/disorders/parkinsons-disease"}]},{slug:"normal-aging-vs-mild-cognitive-impairment-vs-dementia",category:"memory-concerns",title:"Normal Aging vs. MCI vs. Dementia: Key Differences",description:"Compare normal aging vs. mild cognitive impairment and dementia, including memory examples, everyday independence, what to track, and when to seek care.",primaryKeyword:"normal aging vs mild cognitive impairment",conditions:["memory-concerns","cognitive-change","dementia-related-concerns","caregiver-support"],assessments:["memory-and-recall","reaction-and-processing-speed","visual-matching-tasks"],assessmentLinks:[{anchor:"memory and recall",slug:"memory-and-recall"}],articleLinks:[{anchor:"weekly summary",slug:"caregiver-guide-to-tracking-cognitive-change"}
26,{anchor:"visual matching tasks",slug:"shape-matching-tasks-and-cognitive-change"}],linkAnchors:["normal aging","mild cognitive impairment","MCI","memory loss that disrupts daily life"],datePublished:"2026-07-24",dateModified:"2026-07-26",readingTimeMin:11,keyTakeaways:["Normal aging may slow recall, but the information often returns and everyday independence stays intact.","MCI causes more change than expected for age while most day-to-day activities remain independent.","Dementia interferes with independent daily life; it is a syndrome with several possible causes.","Track specific examples, frequency, direction, and functional impact rather than relying on a label or one score."],body:[{type:"p",text:"The most useful distinction between normal aging, mild cognitive impairment, and dementia is not whether someone forgets. Everyone forgets. The key question is whether memory or thinking has changed beyond what is expected for that person and whether the change is beginning to interfere with independent daily life. Normal aging may make recall slower. Mild cognitive impairment, or MCI, creates a noticeable and measurable decline while independence is largely preserved. Dementia causes cognitive or behavioral changes substantial enough to disrupt everyday functioning."},{type:"callout",variant:"note",text:"These categories cannot be assigned from a home test or checklist. Depression, medication effects, sleep problems, infection, thyroid disease, vitamin deficiencies, head injury, and other conditions can affect memory. A clinician needs to evaluate the pattern and possible causes."},{type:"h2",id:"three-terms",text:"Normal aging, MCI, and dementia in plain language"},{type:"definition",term:"Normal age-related cognitive change",definition:"Occasional lapses or slower recall that do not meaningfully interfere with independent life. A person may need more time or a reminder, then remember the information later."},{type:"definition",term:"Mild cognitive impairment (MCI)",definition:"Memory or thinking difficulty beyond what is expected for age, noticeable to the person or others and sometimes measurable on testing, while the person can still manage most normal daily activities."},{type:"definition",term:"Dementia",definition:"A syndrome in which decline in memory, language, judgment, attention, visual processing, behavior, or other cognitive abilities interferes with independent daily life. Alzheimer's disease is one cause, not a synonym for every dementia."},{type:"p",text:"MCI is not automatically early Alzheimer's disease. Some people remain stable for years, some improve, and some progress to dementia. The label describes the current level of function, not a guaranteed future. Dementia also has multiple causes, including Alzheimer's disease, vascular disease, Lewy body disease, and frontotemporal disorders. Identifying the cause and ruling out treatable contributors requires a clinical evaluation."},{type:"h2",id:"comparison",text:"A practical comparison of memory and daily function"},{type:"table",caption:"How normal aging, mild cognitive impairment, and dementia often differ",headers:["Everyday example","Normal aging","MCI","Dementia"],rows:[["Recent information","Forgets a name or appointment occasionally, then remembers later or uses a reminder successfully.","Misses events more often or repeatedly loses track of recent conversations, but compensates with calendars or lists.","Repeatedly forgets recent information and may ask the same question without remembering the answer."],["Bills and medications","Makes an occasional error and corrects it.","Needs more time, stronger routines, or occasional checking while remaining mostly independent.","Regularly misses payments, duplicates doses, or needs another person to take over for safety."],["Navigation","Briefly hesitates in an unfamiliar place and finds the way.","Has more difficulty learning new routes or relies more heavily on navigation aids.","Gets lost on familiar routes or cannot retrace steps reliably."],["Language","Sometimes searches for a word and recalls it later.","Word-finding pauses are more frequent or noticeable than before.","Conversation becomes difficult because common words, meaning, or the thread of discussion is repeatedly lost."],["Familiar tasks","Completes the task, perhaps more slowly.","Needs notes or extra concentration for complex tasks but usually finishes independently.","Struggles with the sequence of a familiar recipe, appliance, or routine and requires help."],["Overall independence","Preserved.","Largely preserved, sometimes with new strategies or modest support.","Meaningfully affected 
26in one or more areas of daily life."]]},{type:"p",text:"The boundaries are not perfectly sharp. Early dementia may affect only one complex activity, while a person with MCI may temporarily function worse during illness or severe stress. Education, language, culture, hearing, vision, and lifelong habits also influence how cognitive changes appear. The strongest signal is change from the person's own previous ability, confirmed across time and connected to real-world function."},{type:"h2",id:"mci-in-everyday-life",text:"What MCI can look like in everyday life"},{type:"p",text:"MCI can affect memory, planning, language, attention, or visuospatial skills while normal daily activities remain largely independent. The examples below show patterns worth describing to a clinician, not a checklist for assigning a diagnosis."},{type:"table",caption:"Examples of MCI while everyday independence is largely preserved",headers:["Cognitive area","Possible everyday example","What remains independent","What to record"],rows:[["Memory","Misses appointments or recent plans more often, then compensates with calendar alerts or written reminders.","Manages the calendar and responds to reminders without another person taking over.","Frequency, which reminder works, and whether the strategy is becoming less reliable."],["Executive function","Needs more time or a checklist to pay bills, organize a trip, or follow a multistep plan.","Completes the task safely using added structure.","Harder steps, extra time or checking, and whether errors are increasing."],["Language","Pauses for words more often but continues to understand and participate in conversation.","Communicates needs and usually retrieves or works around the missing word.","Frequency, setting, later recall, and any change in meaning or comprehension."],["Visuospatial function","Finds an unfamiliar route harder to learn and relies more on landmarks or navigation aids.","Manages familiar routes and uses navigation tools appropriately.","Whether difficulty is limited to new places, changes on familiar routes, and safety concerns."]]},{type:"p",text:"These examples do not establish MCI. Poor sleep, mood, medicine effects, sensory loss, illness, stress, and other conditions can cause similar difficulties. Concern rises with sustained change from the person's previous ability while independence remains largely intact. A clinician must evaluate the pattern, impact, and possible causes."},{type:"h2",id:"independence",text:"Why everyday independence is the dividing line"},{type:"p",text:"Clinicians often ask about instrumental activities of daily living: managing medications, paying bills, shopping, preparing meals, arranging transportation, using technology, and keeping appointments. These tasks require several cognitive systems to work together. A person can score lower on a memory task yet manage them safely. Another person can appear conversationally fluent while bills go unpaid and medication doses are repeated. Functional examples make the difference visible."},{type:"p",text:"Compensation matters too. Using a calendar, pill organizer, written recipe, or phone reminder is not itself evidence of dementia; many healthy adults use them. What matters is whether a familiar strategy still works. If reminders are ignored, misunderstood, or no longer enough to keep an activity safe, document that change and discuss it with a clinician."},{type:"h2",id:"other-causes",text:"Memory changes can have treatable contributors"},{type:"p",text:"Not every concerning change is caused by a neurodegenerative disease. Medication side effects, depression and anxiety, poor sleep, alcohol or drug use, vitamin B12 deficiency, thyroid or other metabolic problems, hearing or vision loss, infection, and recent head injury can all affect memory or attention. Several may be present at once. This is one reason an early evaluation is useful: it can identify contributors that should be treated rather than assuming the change is simply aging or dementia."},{type:"p",text:"Bring a complete list of prescription medicines, over-the-counter products, and supplements. Note recent illnesses, falls, anesthesia, mood changes, changes in sleep, and alcohol use. The clinician may combine that history with physical and neurologic examination, brief cognitive screening, laboratory tests, and sometimes brain imaging or specialist assessment."},{type:"h2",id:"what-to-track",text:"A normal lapse or a concerning pattern: what to track"},{type:"ul",items:["Specific event: write what happened instead of 'memory was bad,' such as 'asked the same appointment time three times in one hour.'","Frequency: distinguish once, monthly, weekly, or daily, and note whether the intervals are shortening.","Recovery: record whether the information returned later or whether a cue or reminder helped.","Functional impact: n
26ote missed medicines, unpaid bills, unsafe cooking, getting lost, driving concerns, or withdrawal from familiar activities.","Direction: once a month, summarize whether the pattern is stable, improving, fluctuating, or gradually worsening.","Context: include sleep, illness, stress, mood, pain, hearing or vision difficulty, and medication changes."]},{type:"p",text:"A weekly summary is usually more sustainable than documenting every lapse. Pair observations with short, consistent tasks only if the person agrees and the process does not create distress. A low score on one day may reflect fatigue or distraction; a repeated trend alongside everyday examples is more useful. Preserve the person's dignity and involve them in deciding what is tracked and shared."},{type:"h2",id:"when-to-seek-evaluation",text:"When to arrange an evaluation"},{type:"p",text:"Schedule a primary care visit when memory or thinking changes are persistent, are noticed by more than one person, or begin to affect appointments, finances, medicines, navigation, work, or safety. Bring a family member or trusted observer if the person agrees; they may notice changes that are hard to describe from inside the experience. A memory clinic, neurologist, geriatrician, or neuropsychologist may be involved when the cause remains uncertain or a more detailed asse
26ssment is needed."},{type:"callout",variant:"warning",text:"Sudden confusion, new trouble speaking, facial droop, one-sided weakness or numbness, a severe new headache, seizure, or abrupt loss of balance can signal an emergency such as stroke or acute illness. Call emergency services rather than waiting to complete a memory log."},{type:"h2",id:"how-alumina-fits-in",text:"How Alumina Health supports cognitive tracking"},{type:"p",text:"Alumina Health offers guided memory and recall, reaction and processing speed, and visual matching tasks on iPhone and iPad. Repeating a small set under similar conditions can help show whether performance is stable, unusually variable, or drifting alongside everyday observations. Alumina does not diagnose MCI, dementia, Alzheimer's disease, or normal aging. The useful output is a longitudinal record that a patient, caregiver, and clinician can review together."}],faqs:[{q:"Is forgetting names a sign of mild cognitive impairment?",a:"Occasionally struggling to retrieve a name can occur in normal aging. Concern rises when word-finding or forgetting is clearly more frequent than before, is noticed across settings, or begins to interfere with everyday activities."},{q:"Does mild cognitive impairment always progress to dementia?",a:"No. People with MCI have a higher risk of later dementia, but some remain stable and some improve. A clinician can look for treatable contributors and follow cognitive and functional change over time."},{q:"What are examples of mild cognitive impairment in everyday life?",a:"Examples can include missing appointments more often but managing them with reminders, needing extra structure for bills or plans, more frequent word-finding pauses, or greater difficulty learning unfamiliar routes while familiar daily activities remain largely independent. These patterns need clinical evaluation because many other factors can cause similar changes."},{q:"Can someone with early dementia still live independently?",a:"Some people with early dementia continue many everyday activities, but may 
26need support with complex or safety-sensitive tasks. The amount of assistance depends on the person, the cause, and which abilities are affected."},{q:"What should a caregiver bring to a memory appointment?",a:"Bring a concise timeline, specific examples, a medication and supplement list, relevant medical history, and notes about changes in finances, medicines, driving, cooking, mood, sleep, or navigation."},{q:"Can an app tell whether memory change is normal aging or MCI?",a:"No. An app can support consistent tracking, but distinguishing normal aging, MCI, dementia, and treatable causes requires clinical evaluation."}],citations:[{label:"Memory Problems, Forgetfulness, and Aging",publisher:"National Institute on Aging (NIA), NIH",url:"https://www.nia.nih.gov/health/alzheimers-symptoms-and-diagnosis/do-memory-problems-always-mean-alzheimers-disease"},{label:"What Is Mild Cognitive Impairment?",publisher:"National Institute on Aging (NIA), NIH",url:"https://www.nia.nih.gov/health/memory-loss-and-forgetfulness/what-mild-cognitive-impairment"},{label:"Mild Cognitive Impairment: Symptoms and Causes",publisher:"Mayo Clinic",url:"https://www.mayoclinic.org/diseases-conditions/mild-cognitive-impairment/symptoms-causes/syc-20354578"},{label:"10 Early Signs and Symptoms of Alzheimer's and Dementia",publisher:"Alzheimer's Association",url:"https://www.alz.org/alzheimers-dementia/10_signs"}]},{slug:"how-to-track-concussion-symptoms-during-recovery",category:"concussion",title:"How to Track Concussion Symptoms During Recovery",description:"How to track concussion symptoms across physical, cognitive, sleep, and emotional domains, connect them to activity, and prepare a useful recovery summary.",primaryKeyword:"how to track concussion symptoms",conditions:["concussion"],assessments:["eye-brain-vision-check","reaction-and-processing-speed","walking-and-movement"],assessmentLinks:[{anchor:"eye-brain vision check",slug:"eye-brain-vision-check"}],linkAnchors:["track concussion symptoms","concussion symptoms","concussion recovery","return to activity"],datePublished:"2026-07-24",dateModified:"2026-07-24",readingTimeMin:10,keyTakeaways:["Track a small set of p
26hysical, cognitive, sleep, and emotional symptoms on a consistent scale.","Record activity with symptoms: note the level before, during, and after exertion and time needed to settle.","Recovery is individual; a clinician should guide return to driving, work, school, and sport.","Worsening headache, repeated vomiting, seizure, weakness, slurred speech, or inability to wake needs emergency care."],body:[{type:"p",text:"To track concussion symptoms usefully, record a small, consistent set across four domains: physical symptoms, thinking and memory, sleep, and mood. Add what the person was doing, how symptoms changed before, during, and after the activity, and how long they took to return toward baseline. The goal is not to prove recovery with one score. It is to show a clinician which activities are tolerated, which repeatedly trigger a meaningful increase, and whether the overall pattern is improving, stable, or worsening."},{type:"callout",variant:"warning",text:"A suspected concussion should be evaluated by a qualified healthcare professional. Do not use symptom tracking to decide that a head injury is safe, to clear someone for driving or sport, or to delay emergency care."},{type:"h2",id:"four-symptom-domains",text:"Track symptoms across four domains"},{type:"p",text:"Concussion can affect how a person feels, thinks, acts, and sleeps. Symptoms may appear immediately or later, and the mix can change during recovery. Choose the symptoms that are actually present rather than rating a long checklist several times a day. Five to eight items are usually enough to capture the pattern without making tracking the center of every waking hour."},{type:"table",caption:"Concussion symptom domains and examples to record",headers:["Domain","Examples","Useful context"],rows:[["Physical","Headache, dizziness, nausea, light or noise sensitivity, vision problems, fatigue, or balance difficulty.","Location and quality of headache, lighting, movement, meals, hydration, and whether symptoms followed exertion."],["Thinking and memory","Feeling slowed or foggy, concentration difficulty, memory lapses, trouble reading, or slower responses.","Task duration, screen use, complexity, distractions, and whether a break restored function."],["Sleep","Trouble falling asleep, waking frequently, sleeping more or less than usual, or daytime sleepiness.","Bedtime, wake time, naps, caffeine, and how rested the person felt the next morning."],["Social or emotional","Irritability, anxiety, sadness, emotional sensitivity, or feeling overwhelmed.","S
26ocial load, noise, pain, poor sleep, and whether the change is new or worsening."]]},{type:"p",text:"Use plain language and one scale consistently, such as zero for absent through ten for the worst that symptom has felt during this recovery. The number is personal; one person's six is not comparable with another's. It becomes useful when today's rating can be compared with that same person's previous ratings under similar conditions."},{type:"h2",id:"connect-activity-and-symptoms",text:"Connect symptoms to physical and cognitive activity"},{type:"p",text:"A symptom number without activity context is hard to interpret. A headache rated four after waking is different from a headache that moves from one to four after fifteen minutes of reading and settles after a short break. Record the activity, duration, symptom level before it began, highest level during or soon after, and approximate time needed to return toward the earlier level."},{type:"p",text:"Useful activity categories include walking, household tasks, reading, computer or phone work, conversation, driving if a clinician has allowed it, schoolwork, and the exercises included in a care plan. Do not deliberately push until symptoms become severe just to find a limit. Follow the written plan from the treating clinician. Current CDC guidance supports easing back into regular activities after a short initial rest period and cutting back when symptoms worsen, but the appropriate progression is individual."},{type:"h2",id:"daily-template",text:"A reusable daily concussion tracking template"},{type:"ol",items:["Morning baseline: record sleep quality and rate the three to five symptoms that matter most that day.","Planned activity: write the activity and intended duration, such as a ten-minute walk or fifteen minutes of email.","Before, during, and after: note symptom levels and any new symptom rather than rating the entire checklist again.","Recovery time: record how long it took to return near the morning or pre-activity level.","Support used: note breaks, reduced brightness, quiet space, hydration, or another accommodation in the care plan.","Evening summary: write one sentence describing what was better tolerated, what was harder, and whether the day felt better, similar, or worse overall."]},{type:"p",text:"A simple example might read: 'Morning headache 2/10, dizziness 1/10, slept seven hours. Read on a laptop for fifteen minutes; headache reached 4/10 and returned to 2/10 after twenty minutes in a dim room. Ten-minute walk did not increase symptoms. Overall slightly better than yesterday.' That gives a clinician more usable information than a page of disconnected scores."},{type:"h2",id:"signs-of-progress",text:"What signs of progress look like"},{type:"p",text:"Recovery does not always look like every symptom dropping each day. A more useful pattern may be tolerating a longer conversation at the same symptom level, needing less recovery time after a walk, completing more school or work with the same accommodations, or having fewer large fluctuations across the day. Weekly trends are usually easier to interpret than comparing one Tuesday with one Wednesday."},{type:"p",text:"Tell the healthcare provider if symptoms are getting worse rather than gradually improving, return strongly with ordinary activity, or are not resolving on the timeline the provider discussed. CDC guidance advises contacting a healthcare provider when symptoms do not go away within two to three weeks or worsen after returning to regular activities. Individual factors such as age, previous concussion, migraine, anxiety, depression, and other health conditions can affect recovery."},{type:"h2",id:"avoid-overtracking",text:"How to track without becoming consumed by symptoms"},{type:"p",text:"Repeatedly checking every sensation can increase anxiety and make ordinary variation feel threatening. Set fixed check-in times, track only the symptoms relevant to the current care plan, and let the rest of the day be about recovery and normal life. For many people, a morning baseline, activity notes, and an evening summary are enough. A caregiver can help with organization, but the person recovering should describe their own symptoms whenever possible."},{type:"p",text:"Stop or simplify the log if it is increasing distress, disrupting sleep, or encouraging repeated self-testing. Bring that concern to the clinician. The purpose of the record 
26is to support decisions and communication, not to create a perfect dataset or to compete with yesterday's numbers."},{type:"h2",id:"emergency-danger-signs",text:"Concussion danger signs that need emergency care"},{type:"p",text:"In rare cases, a dangerous blood clot can crowd the brain after a head injury. Call emergency services or go to an emergency department for a headache that worsens and does not go away; repeated vomiting; seizure or convulsions; weakness, numbness, or decreased coordination; slurred speech or unusual behavior; one pupil larger than the other; increasing confusion, restlessness, or agitation; loss of consciousness; or marked drowsiness or inability to wake the person. For an infant or young child, inability to console or refusal to nurse or eat are additional danger signs identified by the CDC."},{type:"p",text:"Return-to-play decisions require a healthcare professional and a graded progression. An athlete should not return to sport on the same day as a suspected concussion. Driving also deserves specific guidance when attention, processing speed, vision, or reaction time is affected. A good symptom day is encouraging, but it is not clearance for an activity with a risk of another head injury."},{type:"h3",id:"clinician-summary",text:"What to bring to the follow-up visit"},{type:"p",text:"Summarize the record on one page: injury and evaluation dates, the current three to five main symptoms, activity tolerance, recovery time after exertion, sleep pattern, accommodations, medicines taken, and the overall weekly direction. Include a few representative examples rather than every rating. Ask the clinician which activities to advance, which to hold, what warning signs apply to the person's situation, and when another follow-up is needed."},{type:"h2",id:"how-alumina-fits-in",text:"How Alumina Health fits into a recovery record"},{type:"p",text:"Alumina Health includes an eye-brain vision check and guided reaction and processing speed and walking and movement tasks on iPhone and iPad. When a treating clinician considers these activities appropriate, repeating them under similar conditions can add structured context to the symptom log. Alumina is not a medical device, does not diagnose concussion, and cannot determine recovery or return-to-activity readiness. Stop a task if it conflicts with the care plan or produces concerning symptoms, and share the trend only as supporting information for a qualified clinician."}],faqs:[{q:"How often should concussion symptoms be logged?",a:"A morning baseline, notes around planned activities, and one evening summary are often enough. Follow the treating clinician's instructions and reduce the frequency if tracking is increasing anxiety or symptom focus."},{q:"Does a small symptom increase during activity mean more brain damage?",a:"A symptom increase does not by itself establish new injury, but it can show that the current activity level is not well tolerated. Cut back and follow the individualized guidance from the treating clinician."},{q:"How long does concussion recovery take?",a:"Recovery varies. Many people improve within days or weeks, while some have symptoms longer. Age, prior concussion, and other health factors can affect the course. A healthcare provider should evaluate symptoms that persist or worsen."},{q:"Can symptom tracking clear someone to drive or return to sport?",a:"No. Driving and return-to-sport decisions require clinical guidance. Athletes should follow a healthcare professional's graded return-to-play progression."},{q:"Can Alumina Health diagnose a concussion?",a:"No. Alumina supports structured tracking only. Suspected concussion, worsening symptoms, and all return-to-activity decisions require qualified medical care."}],citations:[{label:"Symptoms of Mild TBI and Concussion",publisher:"Centers for Disease Control and Prevention (CDC)",url:"https://www.cdc.gov/traumatic-brain-injury/signs-symptoms/index.html"},{label:"What to Do After a Mild TBI or Concussion",publisher:"Centers for Disease Control and Prevention (CDC)",url:"https://www.cdc.gov/traumatic-brain-injury/response/index.html"}
26,{label:"Managing Return to Activities",publisher:"CDC HEADS UP",url:"https://www.cdc.gov/heads-up/hcp/clinical-guidance/index.html"}]}];function G1(a){const{body:s,...o}=a;return o}const Ml=[...yv.map(G1),...j1],vv=[{slug:"neurology",name:"Neurology",title:"Neurology Articles & Guides | Alumina Health",description:"Neurology guides on tracking brain and movement change between visits: what clinicians look for, how home data helps, and when to seek care.",intro:"Neurology is a specialty of long arcs and short appointments. Most of what shapes a person's neurologic trajectory, whether it is Parkinson's disease, essential tremor, multiple sclerosis, memory concerns, concussion, or migraine, happens in the weeks and months between clinic visits. The articles collected under Neurology take a cross-condition view of that between-visit layer: what changes are worth noticing, how to structure a home log so it is genuinely useful, how repeated guided assessments turn scattered observations into a trend clinicians can act on, and how patients, families, and care teams can work from the same data. Every article on this page cites authoritative neurology and movement-disorder sources and links out to the specific condition hubs and Alumina Health assessments most relevant to it."},{slug:"parkinsons-disease",name:"Parkinson's Disease",title:"Parkinson's Disease Articles & Guides | Alumina Health",description:"In-depth articles on Parkinson's disease: early signs, tracking tremor and movement, and using at-home data to make clinic visits count.",intro:"Parkinson's disease is a slow-moving condition. Most of what changes between neurology appointments, such as a tremor that is worse this week, a walking pattern that has quietly shifted, or a good day followed by a bad one, is invisible to a clinician 
26who only sees a person for twenty minutes twice a year. This collection is written for people living with Parkinson's and the family members who support them. Each article focuses on something practical: what the early signs actually look like, how to describe them in a way a specialist can act on, and how a simple tracking habit at home can turn scattered observations into a trend line. Every article on this page points back to our Parkinson's disease overview, cites the neurological and movement-disorder sources it draws from, and links to the relevant guided assessments in the Alumina Health app: tremor and hand control, tapping and coordination, walking and movement, and reaction time. Nothing here is diagnostic. Everything here is written to help a person notice, log, and communicate what is changing."},{slug:"essential-tremor",name:"Essential Tremor",title:"Essential Tremor Articles & Guides | Alumina Health",description:"Guides on essential tremor: what makes it different from Parkinson's tremor, how to track it at home, and what a clinician needs from your log.",intro:"Essential tremor is the most common movement disorder in adults, and one of the most commonly misunderstood. It is not Parkinson's disease, it usually appears when the hand is being used rather than at rest, and it has a very different natural history. The articles collected here explain what essential tremor is and is not, what to write down when tracking it week to week, and how the tremor and hand-control assessment in Alumina Health helps build a longitudinal record you can share with a movement disorder specialist. Where an article touches conditions that overlap clinically, such as Parkinson's disease, it links directly to the relevant condition page so you can compare features side by side."},{slug:"multiple-sclerosis",name:"Multiple Sclerosis",title:"Multiple Sclerosis Articles & Guides | Alumina Health",description:"Articles on multiple sclerosis: tracking motor, visual, and cognitive changes between visits and what patterns your MS team wants to see.",intro:"Multiple sclerosis is a condition of episodes and trends: relapses that come and go, gradual changes in walking, coordination, vision, or cognition that only become visible in retrospect. The MS articles collected on this page focus on the between-visit layer: what to notice, how to structure a home log, and how repeated, guided assessments help separate a genuine change from an ordinary bad day. Each article points back to the multiple sclerosis condition page and links to the assessments most commonly relevant to MS symptom tracking."},{slug:"memory-concerns",name:"Memory Concerns",title:"Memory Concerns Articles & Guides | Alumina Health",description:"Guides on tracking memory concerns: what is normal ageing, what is not, and how a simple structured log helps memory clinic visits.",intro:"Memory changes are one of the hardest things to describe accurately. They are usually intermittent, easy to explain away in the moment, and stressful to talk about honestly. This collection is written for people worried about their own memory and for family members starting to notice changes in someone else. Each article covers what is worth writing down, how to distinguish normal ageing from concerning drift, and how a short guided memory and recall assessment used consistently over time turns anxious impressions into evidence you and a clinician can look at together."},{slug:"dementia-related-concerns",name:"Dementia-Related Concerns",title:"Dementia-Related Articles & Guides | Alumina Health",description:"Articles on dementia-related concerns for families and caregivers: what to track, when to escalate, and how to prepare for a memory clinic visit.",intro:"Dementia-related concerns almost always come to a clinician's attention through a family member's eyes. That makes the family log the single most valuable clinical document. The articles on this page walk through what to record, how often to check in, when to escalate, and how structured at-home cognitive assessments help separate a bad day from a real trend. Every article points back to the dementia-related concerns condition page for a wider overview and cites the NIH, CDC, and Alzheimer's Association sources it draws on."}
26,{slug:"cognitive-change",name:"Cognitive Change",title:"Cognitive Change Articles & Guides | Alumina Health",description:"Guides on cognitive change: subtle shifts in attention, processing speed, and recall: how to track them and when to seek care.",intro:"Not every cognitive change is dementia; not every cognitive change is benign. The articles collected here focus on the middle ground: the subtle drifts in attention, processing speed, or word-finding that people notice in themselves or in a family member. Each piece describes what to track, how often, and how a repeatable guided assessment adds a data layer that memory alone cannot provide. Where a topic connects to a specific condition, such as memory concerns, dementia-related concerns, or Parkinson's disease, the article links to the relevant condition page so you can dig deeper."},{slug:"movement-symptoms",name:"Movement Symptoms",title:"Movement Symptom Articles & Guides | Alumina Health",description:"Articles on tracking movement symptoms: gait, balance, tremor, and coordination changes worth logging between clinical visits.",intro:"Movement changes, such as a shorter step, an occasional unsteady moment, or a hand that shakes when reaching for a cup, often arrive so quietly that they are only noticed in hindsight. The articles here focus on how to catch those changes earlier, what to log, and how to use short guided assessments (walking and movement, tapping and coordination, tremor and hand control) to build a trend line worth bringing to a neurologist or physiotherapist."},{slug:"caregiver-support",name:"Caregiver Support",title:"Caregiver Support Articles & Guides | Alumina Health",description:"Practical articles for family caregivers: how to track cognitive and movement change, what clinicians need, and how to keep tracking sustainable.",intro:"Family caregivers do most of the noticing in neurology. This collection is written for the person doing that quiet, exhausting work: how to keep a log that will still exist in six months, how to have hard conversations honestly, what memory clinics and neurology practices actually want to see, and how to use short guided assessments so that the record you bring to an appointment is data, not just worry."},{slug:"concussion",name:"Concussion",title:"Concussion Recovery Articles & Guides | Alumina Health",description:"Articles on tracking concussion recovery at home: what to monitor, when to worry, and how structured check-ins support graded return to activity.",intro:"Concussion is a moving target. Symptoms wax and wane over hours and days, and the same person can feel almost normal one morning and unable to concentrate that afternoon. The articles on this page focus on how to track concussion recovery in a way that is honest, structured, and useful to a clinician overseeing a graded return-to-activity plan. Every article on this page emphasises that concussion evaluation and return-to-play decisions must be made by a qualified clinician."},{slug:"migraine",name:"Migraine",title:"Migraine Articles & Guides | Alumina Health",description:"Articles on migraine: attack logging, spotting triggers, tracking visual and vestibular symptoms, and getting more from a headache-clinic visit.",intro:"Migraine care is almost entirely about pattern-finding: what triggered the last attack, what warning signs preceded it, how long it lasted, what worked and what did not. The articles collected here walk through practical ways of tracking migraine attacks over time, distinguishing episodic patterns from chronic drift, and preparing usefully for a headache-clinic visit."}];async function Y1(a){const s=yv.find(o=>o.slug===a);return s||V1[a]?.()}function bv(a){return`/articles/${a.category}/${a.slug}`}function wv(a){return vv.find(s=>s.slug===a)}function Ed(a,s){return a.datePublished!==s.datePublished?a.datePublished<s.datePublished?1:-1:(a.launchPriority??Number.MAX_SAFE_INTEGER)-(s.launchPriority??Number.MAX_SAFE_INTEGER)}function L2(a){return Ml.filter(s=>s.conditions.includes(a)).sort(Ed)}function kv(a){return Ml.filter(s=>s.category===a||s.conditions.includes(a)).sort(Ed)}function O2(){return vv.filter(a=>kv(a.slug).length>0)}function W1(){return[...Ml].sort(Ed)}function F1(a){let s=a.keyTakeaways.join(" ")+" ";for(const o of a.body)o.type==="p"||o.type==="quote"||o.type==="h2"||o.type==="h3"?s+=o.text+" ":o.type==="ul"||o.type==="ol"?s+=o.items.join(" ")+" ":
26o.type==="table"?s+=o.caption+" "+o.headers.join(" ")+" "+o.rows.flat().join(" ")+" ":o.type==="callout"||o.type==="download"?s+=o.text+" ":o.type==="definition"&&(s+=o.term+" "+o.definition+" ");if(a.faqs)for(const o of a.faqs)s+=o.q+" "+o.a+" ";return s.trim().split(/\s+/).length}function K1(a){return`PT${a.readingTimeMin}M`}function H2(a){return a.body.filter(s=>s.type==="h2").map(s=>({id:s.id,text:s.text}))}const se={name:"Alumina Health",url:"https://aluminahealth.com",twitter:"@aluminahealth",contactEmail:"[email protected]",appStoreUrl:"https://apps.apple.com/us/app/alumina-brain-health/id6764492616",ogImage:"https://aluminahealth.com/og-image.png",description:"Guided iPhone and iPad assessments to track memory, tremor, coordination, gait, and voice changes over time — for patients and caregivers."},Ha={displayPrice:"$9.99/year (Limited Time Launch Promo)",promoLabel:"Limited Time Launch Promo",annualPrice:"9.99",standardDisplayPrice:"$24.99/year",currency:"USD",trialDays:3};function Ma(a){return!a||a==="/"?"/":a.endsWith("/")||(a.split("/").pop()??"").includes(".")?a:`${a}/`}function zt({title:a,description:s,path:o="/",image:r,type:u="website",noindex:d}){const h=`${se.url}${Ma(o)}`,y=r??se.ogImage,g=y.startsWith("http")?y:`${se.url}${y}`;return{meta:[{title:a},{name:"description",content:s},{name:"author",content:se.name},...d?[{name:"robots",content:"noindex,nofollow"}]:[],{property:"og:title",content:a},{property:"og:description",content:s},{property:"og:type",content:u},{property:"og:url",content:h},{property:"og:image",content:g},{property:"og:site_name",content:se.name},{name:"twitter:card",content:"summary_large_image"},{name:"twitter:site",content:se.twitter},{name:"twitter:title",content:a},{name:"twitter:description",content:s},{name:"twitter:image",content:g}],links:[{rel:"canonical",href:h}]}}function Oe(a){return{type:"application/ld+json",children:JSON.stringify(a)}}const Ng=`${se.url}${Ma("/pricing")}`,zg={"@context":"https://schema.org","@type":"Product","@id":`${Ng}#annual-subscription`,url:Ng,name:`${se.name} Annual Subscription`,description:`${se.name} is free to download. Start with a ${Ha.trialDays}-day free trial, then ${Ha.displayPrice} for guided brain and movement assessments on iPhone and iPad.`,image:se.ogImage,brand:{"@type":"Brand",name:se.name},offers:{"@type":"Offer",url:se.appStoreUrl,price:Ha.annualPrice,priceCurrency:Ha.currency,availability:"https://schema.org/OnlineOnly"}},X1={"@context":"https://schema.org","@type":"Organization","@id":`${se.url}/#organization`,name:se.name,url:se.url,logo:`${se.url}/favicon.png`,description:se.description,sameAs:[se.appStoreUrl],publishingPrinciples:`${se.url}/about/our-process/#editorial-standards`,knowsAbout:["Parkinson's disease","Essential tremor","Multiple sclerosis","Dementia","Alzheimer's disease","Migraine","Concussion","Cognitive assessment","Gait analysis"],contactPoint:{"@type":"ContactPoint",email:se.contactEmail,contactType:"customer support"}},Q1={"@context":"https://schema.org","@type":"WebSite",name:se.name,url:se.url},Z1={"@context":"https://schema.org","@type":"MobileApplication",name:se.name,operatingSystem:"iOS 16.0 or later",applicationCategory:"MedicalApplication",description:se.description,url:se.url,installUrl:se.appStoreUrl,downloadUrl:se.appStoreUrl,publisher:{"@type":"Organization",name:se.name,url:se.url},offers:{"@type":"Offer",priceCurrency:"USD",price:"0",availability:"https://schema.org/InStock",url:se.appStoreUrl}};function ra(a){return{"@context":"https://schema.org","@type":"BreadcrumbList",itemListElement:a.map((s,o)=>({"@type":"ListItem",position:o+1,name:s.name,item:`${se.url}${Ma(s.path)}`}))}}function $1(a){const s={"@type":"MedicalCondition",name:a.condition.name};a.condition.alternateName&&(s.alternateName=a.condition.alternateName),a.condition.icd10&&(s.code={"@type":"MedicalCode",codingSystem:"ICD-10",codeValue:a.condition.icd10});const o={"@context":"https://schema.org","@type":"MedicalWebPage",name:a.name,description:a.description,url:`${se.url}${Ma(a.path)}`,inLanguage:"en-US",isPartOf:{"@type":"WebSite",name:se.name,url:se.url},specialty:{"@type":"MedicalSpecialty",name:"Neurology"},...a.lastReviewed?{lastReviewed:a.lastReviewed}:{},audience:{"@type":"MedicalAudience",audienceType:"Patient"},about:s};return a.citations&&a.citations.length>0&&(o.citation=a.citations.map(r=>({"@type":"CreativeWork",name:r.label,publisher:{"@type":"Organization",name:r.publisher},url:r.url}))),o}function J1(a){const s={"@context":"https://schema.org","@type":"MedicalWebPage",name:a.name,description:a.description,url:`${se.url}${Ma(a.path)}`,inLanguage:"en-US",isPartOf:{"@type":"WebSite",name:se.name,url:se.url},specialty:{"@type":"MedicalSpecialty",name:"Neurology"},...a.lastReviewed?{lastReviewed:a.lastReviewed}:{},audience:{"@type":"MedicalAudience",audienceType:"Patient"}}
26;return a.citations&&a.citations.length>0&&(s.citation=a.citations.map(o=>({"@type":"CreativeWork",name:o.label,publisher:{"@type":"Organization",name:o.publisher},url:o.url}))),s}function Oo(a){return{"@context":"https://schema.org","@type":"FAQPage",mainEntity:a.map(s=>({"@type":"Question",name:s.q,acceptedAnswer:{"@type":"Answer",text:s.a}}))}}function eM(a){return{"@context":"https://schema.org","@type":"SoftwareApplication",name:a.name,description:a.description,url:`${se.url}${Ma(a.path)}`,applicationCategory:"MedicalApplication",operatingSystem:"iOS 16.0 or later",installUrl:se.appStoreUrl,downloadUrl:se.appStoreUrl,publisher:{"@type":"Organization",name:se.name,url:se.url},offers:{"@type":"Offer",priceCurrency:"USD",price:"0",availability:"https://schema.org/InStock"}}}function tM(a){const s=`${se.url}${Ma(a.path)}`,o=a.image?a.image.startsWith("http")?a.image:`${se.url}${a.image}`:se.ogImage,r=a.about&&a.about.length>0?a.about.map(h=>{const y={"@type":"MedicalCondition",name:h.name};return h.alternateName&&(y.alternateName=h.alternateName),h.icd10&&(y.code={"@type":"MedicalCode",codingSystem:"ICD-10",codeValue:h.icd10}),y}):void 0,u={"@type":"Organization","@id":`${se.url}/#organization`,name:se.name,url:se.url,logo:{"@type":"ImageObject",url:`${se.url}/favicon.png`},sameAs:[se.appStoreUrl],publishingPrinciples:`${se.url}/about/our-process/#editorial-standards`},d={"@context":"https://schema.org","@type":"Article",headline:a.headline,description:a.description,datePublished:a.datePublished,dateModified:a.dateModified,inLanguage:"en-US",url:s,mainEntityOfPage:s,image:o,author:u,publisher:u,isAccessibleForFree:!0,audience:{"@type":"PeopleAudience",audienceType:"Patients and caregivers"},isPartOf:{"@type":"WebSite",name:se.name,url:se.url},speakable:{"@type":"SpeakableSpecification",cssSelector:["#key-takeaways","h1","h2"]}};return a.lastReviewed&&(d.lastReviewed=a.lastReviewed),a.wordCount&&(d.wordCount=a.wordCount),a.timeRequired&&(d.timeRequired=a.timeRequired),r&&(d.about=r),a.mentions&&a.mentions.length>0&&(d.mentions=a.mentions.map(h=>({"@type":"WebPage",name:h.name,url:`${se.url}${Ma(h.path)}`}))),a.citations&&a.citations.length>0&&(d.citation=a.citations.map(h=>({"@type":"CreativeWork",name:h.label,publisher:{"@type":"Organization",name:h.publisher},url:h.url}))),d}function Sv(a){const s={"@context":"https://schema.org","@type":"CollectionPage",name:a.name,description:a.description,url:`${se.url}${Ma(a.path)}`,inLanguage:"en-US",isPartOf:{"@type":"WebSite",name:se.name,url:se.url}};if(a.about){const o={"@type":"MedicalCondition",name:a.about.name};a.about.alternateName&&(o.alternateName=a.about.alternateName),a.about.icd10&&(o.code={"@type":"MedicalCode",codingSystem:"ICD-10",codeValue:a.about.icd10}),s.about=o}return s}function xv(a){return{"@context":"https://schema.org","@type":"ItemList",itemListElement:a.map((s,o)=>({"@type":"ListItem",position:o+1,name:s.name,url:`${se.url}${Ma(s.path)}`}))}}const aM=["neurological-assessment-at-home","cognitive-assessment-vs-cognitive-screening","memory-test-at-home","reaction-time-test-results","neurological-symptom-tracker","early-signs-of-parkinsons-disease","normal-aging-vs-mild-cognitive-impairment-vs-dementia","why-between-visit-data-matters-for-neurology"];function nM(){const a=aM.map(s=>Ml.find(o=>o.slug===s)).filter(s=>!!s);return E.jsx("footer",{className:"mt-24 border-t border-border bg-surface-muted",children:E.jsxs("div",{className:"container-prose py-14",children:[E.jsxs("div",{className:"grid gap-10 md:grid-cols-2 lg:grid-cols-12",children:[E.jsxs("div",{className:"lg:col-span-3",children:[E.jsx($y,{}),E.jsx("p",{className:"mt-4 max-w-sm text-sm leading-relaxed text-muted-foreground text-pretty",children:"Simple guided brain and movement assessments for iPhone and iPad. Built to help patients and caregivers track changes over time."}),E.jsx("div",{className:"mt-5",children:E.jsx(yl,{size:"sm"})})]}),E.jsxs("div",{className:"lg:col-span-2",children:[E.jsx("h3",{className:"text-sm font-semibold text-foreground",children:"Explore"}),E.jsxs("ul",{className:"mt-4 space-y-2.5 text-sm",children:[E.jsx("li",{children:E.jsx(Je,{to:"/",className:"text-muted-foreground hover:text-foreground",children:"Home"})}),E.jsx("li",{children:E.jsx(Je,{to:"/pricing/",className:"text-muted-foreground hover:text-foreground",children:"Pricing"})}),E.jsx("li",{children:E.jsx(Je,{to:"/assessment-types/",className:"text-muted-foreground hover:text-foreground",children:"Assessment Types"})}),E.jsx("li",{children:E.jsx(Je,{to:"/voice-analysis/",className:"text-muted-foreground hover:text-foreground",children:"Voice Analysis"})}),E.jsx("li",{children:E.jsx(Je,{to:"/conditions/",className:"text-muted-foreground hover:text-foreground",children:"Conditions & Support"})}),E.jsx("li",{children:E.jsx(Je,{to:"/articles/",className:"text-muted-foreground hover:text-foreground",children:"Articles"})}),E.jsx("li",{children:E.jsx(Je,{to:"/who-it-helps/",className:"text-muted-foreground hover:text-foreground",children:"Who It Helps"})}),E.jsx("li",{children:E.jsx(Je,{to:"/about/",className:"text-muted-foreground hover:text-foreground",children:"About"})}),E.jsx("li",{children:E.jsx(Je,{to:"/about/our-process/",className:"text-muted-foreground hover:text-foreground",children:"Our Process"})}),E.jsx("li",{children:E.jsx(Je,{to:"/contact/",className:"text-muted-foreground hover:text-foreground",children:"Contact"})})]})]}),E.jsxs("div",{className:"lg:col-span-2",children:[E.jsx("h3",{className:"text-sm font-semibold text-foreground",children:"Articles"}),E.jsx("ul",{className:"mt-4 space-y-2.5 text-sm",children:a.map(s=>E.jsx("li",{children:E.jsx(Je,{to:"/articles/$category/$slug/",params:{category:s.category,slug:s.slug},className:"text-muted-foreground hover:text-foreground",children:s.title})},s.slug))})]}),E.jsxs("div",{className:"lg:col-span-2",children:[E.jsx("h3",{className:"text-sm font-semibold text-foreground",children:"Assessments"}),E.jsxs("ul",{className:"mt-4 space-y-2.5 text-sm",children:[_d.map(s=>E.jsx("li",{children:E.jsx(Je,{to:"/assessments/$slug/",params:{slug:s.slug},className:"text-muted-foreground hover:text-foreground",children:s.navLabel})},s.slug)),E.jsx("li",{children:E.jsxs(Je,{to:"/voice-analysis/",className:"text-muted-foreground hover:text-foreground",children:["Voice Analysis",E.jsx("span",{className:"ml-2 roun
26ded-full bg-primary-soft px-2 py-0.5 text-[10px] font-semibold uppercase tracking-wide text-primary",children:"Soon"})]})})]})]}),E.jsxs("div",{className:"lg:col-span-3",children:[E.jsx("h3",{className:"text-sm font-semibold text-foreground",children:"Conditions & Support"}),E.jsx("ul",{className:"mt-4 space-y-2.5 text-sm",children:Rd.map(s=>E.jsx("li",{children:E.jsx(Je,{to:"/conditions/$slug/",params:{slug:s.slug},className:"text-muted-foreground hover:text-foreground",children:s.navLabel})},s.slug))})]})]}),E.jsx("div",{className:"mt-12 grid gap-8 border-t border-border pt-10 md:grid-cols-[1fr_auto] md:items-start",children:E.jsxs("div",{children:[E.jsx("h3",{className:"text-sm font-semibold text-foreground",children:"Legal"}),E.jsxs("ul",{className:"mt-3 flex flex-wrap gap-x-5 gap-y-2 text-sm",children:[E.jsx("li",{children:E.jsx(Je,{to:"/privacy/",className:"text-muted-foreground hover:text-foreground",children:"Privacy Policy"})}),E.jsx("li",{children:E.jsx(Je,{to:"/terms/",className:"text-muted-foreground hover:text-foreground",children:"Terms of Use"})}),E.jsx("li",{children:E.jsx(Je,{to:"/medical-disclaimer/",className:"text-muted-foreground hover:text-foreground",children:"Medical Disclaimer"})}),E.jsx("li",{children:E.jsx(Je,{to:"/contact/",className:"text-muted-foreground hover:text-foreground",children:"Contact"})})]})]})}),E.jsxs("div",{className:"mt-10 border-t border-border pt-8",children:[E.jsx("p",{className:"text-xs leading-relaxed text-muted-foreground text-pretty",children:"Alumina Health is designed to support structured assessment and tracking. It is not intended to diagnose, treat, cure, or prevent any disease, and it is not a substitute for clinical judgment, diagnosis, or emergency medical care. Always consult a qualified healthcare professional for medical advice."}),E.jsxs("p",{className:"mt-4 text-xs text-muted-foreground",children:["© ",new Date().getFullYear()," ",se.name,". All rights reserved."]})]})]})})}const iM=ae.memo(nM);function sM(){return E.jsx("div",{className:"fixed bottom-0 left-0 right-0 z-40 border-t border-border bg-surface/95 px-4 py-3 backdrop-blur-xl md:hidden",children:E.jsx(yl,{className:"w-full",size:"md"})})}const oM=ae.memo(sM),rM="/assets/styles-DVlgKIGG.css",lM=["/","/assessment-types/","/conditions/","/who-it-helps/","/contact/"],Pg="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap";function cM(){return E.jsx("div",{className:"flex min-h-[60vh] items-center justify-center px-4",children:E.jsxs("div",{className:"max-w-md text-center",children:[E.jsx("p",{className:"text-sm font-medium uppercase tracking-wide text-primary",children:"404"}),E.jsx("h1",{className:"mt-3 text-3xl font-semibold tracking-tight text-foreground",children:"Page not found"}),E.jsx("p",{className:"mt-3 text-muted-foreground",children:"The page you're looking for doesn't exist or has moved."}),E.jsx("div",{className:"mt-6",children:E.jsx("a",{href:"/",className:"inline-flex items-center justify-center rounded-full bg-primary px-5 py-2.5 text-sm font-medium text-primary-foreground hover:bg-primary/90",children:"Go home"})})]})})}const At=qA({head:()=>({meta:[{charSet:"utf-8"},{name:"viewport",content:"width=device-width, initial-scale=1, viewport-fit=cover"},{name:"theme-color",content:"#1f3b8b"},{name:"format-detection",content:"telephone=no"},{name:"apple-itunes-app",content:"app-id=6764492616"}],links:[{rel:"stylesheet",href:rM},{rel:"icon",type:"image/png",href:"/favicon.png"},{rel:"apple-touch-icon",href:"/apple-touch-icon.png"},{rel:"preconnect",href:"https://fonts.googleapis.com"},{rel:"preconnect",href:"https://fonts.gstatic.com",crossOrigin:""},{rel:"preload",as:"style",href:Pg},{rel:"stylesheet",href:Pg,media:"print",onLoad:"this.media='all'"}],scripts:[{children:A1},Oe(X1),Oe(Q1)]}),shellComponent:uM,component:mM,notFoundComponent:cM});function uM({children:a}){return E.jsxs("html",{lang:"en",children:[E.jsx("head",{children:E.jsx(tT,{})}),E.jsxs("body",{children:[a,E.jsx(aT,{})]})]})}function dM(){const a=dt();return ae.useEffect(()=>{const s=window,r=(s.requestIdleCallback??(u=>setTimeout(u,200)))(()=>{lM.forEach(u=>{a.preloadRoute({to:u}).catch(()=>{})})});return()=>{(s.cancelIdleCallback??(d=>clearTimeout(d)))(r)}},[a]),null}function hM(){const a=dt();return ae.useEffect(()=>{_g(a.state.location.pathname);const s=a.subscribe("onResolved",({toLocation:o})=>{setTimeout(()=>_g(o.pathname),0)});return()=>s()},[a]),null}function mM(){return E.jsxs("div",{className:"flex min-h-screen flex-col bg-background",children:[E.jsx(I1,{}),E.jsx("main",{className:"flex-1 pb-24 md:pb-0",children:E.jsx(Qy,{})}),E.jsx(iM,{}),E.jsx(oM,{}),E.jsx(DT,{position:"top-center",richColors:!0}),E.jsx(dM,{}),E.jsx(hM,{}),E.jsx("span",{className:"sr-only",children:se.name})]})}const fM=[{q:"How does Alumina Health work?",a:"Open the app on iPhone or iPad, choose a guided assessment such as memory, tremor, tapping, walking, sit-to-stand, reaction time, or visual matching, complete it in a few minutes, and review a clear summary. Repeat over time to surface trends."},{q:"Do I need any extra hardware?",a:"No. Alumina Health runs entirely on iPhone or iPad with no additional sensors or accessories."},{q:"Is Alumina Health a diagnostic tool?",a:"No. Alumina Health supports structured asse
26ssment and tracking. It is not intended to diagnose, treat, cure, or prevent any disease, and it is not a substitute for clinical judgment."},{q:"Who is Alumina Health designed for?",a:"Patients monitoring memory, tremor, coordination, gait, or voice changes, the caregivers supporting them, and care teams who want structured patient-reported tracking between visits."},{q:"Can I share results with my care team?",a:"Yes. Sessions produce clear summaries that you can review and bring into conversations with neurologists, primary care providers, and care teams."}],pM=()=>ue(()=>import("./who-it-helps-CGxPKF3H.js"),__vite__mapDeps([0,1,2,3,4,5,6])),gM=Nt("/who-it-helps")({head:()=>{const a=zt({title:"Who Alumina Health Helps & How It Works",description:"See who Alumina Health helps and how its guided iPhone and iPad assessments support patients, caregivers, providers, and care teams.",path:"/who-it-helps"});return{meta:a.meta,links:a.links,scripts:[Oe(ra([{name:"Home",path:"/"},{name:"Who It Helps",path:"/who-it-helps"}])),Oe(Oo(fM))]}},component:Ke(pM,"component")}),yM=()=>ue(()=>import("./voice-analysis-D_maVEW2.js"),__vite__mapDeps([7,1,2,3,8,6,9,10,11])),vM=Nt("/voice-analysis")({head:()=>{const a=zt({title:"Voice & Speech Tracking | Alumina Health",description:"Alumina Health helps patients track voice strength, speech clarity, rhythm, pauses, and voice stability over time to supp
26ort conversations with clinicians.",path:"/voice-analysis"});return{meta:a.meta,links:a.links,scripts:[Oe(ra([{name:"Home",path:"/"},{name:"Voice Analysis",path:"/voice-analysis"}])),Oe(eM({name:"Alumina Health Voice & Speech Tracking",description:"Guided voice and speech check-ins on iPhone and iPad to track changes in vocal strength, speech clarity, rhythm, pauses, and stability over time.",path:"/voice-analysis"}))]}},component:Ke(yM,"component")}),bM=()=>ue(()=>import("./terms-BYA5qqI6.js"),__vite__mapDeps([12,3])),wM=Nt("/terms")({head:()=>{const a=zt({title:"Terms of Use | Alumina Health",description:"Read the Terms of Use for Alumina Health, including acceptable use of the website, the brain and movement assessment app, and important medical disclaimers.",path:"/terms"});return{meta:a.meta,links:a.links}},component:Ke(bM,"component")}),kM=()=>ue(()=>import("./privacy-LdduW_FV.js"),__vite__mapDeps([13,3])),SM=Nt("/privacy")({head:()=>{const a=zt({title:"Privacy Policy | Alumina Health",description:"Learn how Alumina Health handles personal information and respects user privacy across our brain and movement assessment app and website.",path:"/privacy"});return{meta:a.meta,links:a.links}},component:Ke(kM,"component")}),xM=[{q:"Is Alumina Health free to download?",a:`Yes. Alumina Health is free to download from the App Store. You can start with a ${Ha.trialDays}-day free trial before the ${Ha.displayPrice} annual subscription begins.`},{q:"When will I be charged?",a:`If you do not cancel before the ${Ha.trialDays}-day free trial ends, Apple will charge the ${Ha.displayPrice} annual subscription to your Apple ID.`},{q:"Does the subscription renew automatically?",a:"Yes. The subscription renews annually unless you cancel it through your Ap
26ple subscription settings."},{q:"How do I manage or cancel my subscription?",a:"Apple manages billing for Alumina Health. You can view, manage, or cancel the subscription from the Subscriptions section of your Apple ID settings."},{q:"Which devices can I use?",a:"Alumina Health is designed for supported iPhone and iPad devices. Visit the App Store listing for current compatibility details."}],AM=()=>ue(()=>import("./pricing-Bkf0GqhT.js"),__vite__mapDeps([14,3,4,1,5,10,9])),TM=Nt("/pricing")({head:()=>{const a=zt({title:`Alumina Health Pricing | $${Ha.annualPrice}/Year (Limited Time Launch Promo) After ${Ha.trialDays}-Day Trial`,description:zg.description,path:"/pricing"});return{meta:a.meta,links:a.links,scripts:[Oe(ra([{name:"Home",path:"/"},{name:"Pricing",path:"/pricing"}])),Oe(zg),Oe(Oo(xM))]}},component:Ke(AM,"component")}),MM=()=>ue(()=>import("./medical-disclaimer-PqdniaAn.js"),__vite__mapDeps([15,3])),CM=Nt("/medical-disclaimer")({head:()=>{const a=zt({title:"Medical Disclaimer | Alumina Health",description:"Important medical disclaimer for Alumina Health. The app supports structured brain and movement assessment tracking and does not replace clinical care.",path:"/medical-disclaimer"});return{meta:a.meta,links:a.links}},component:Ke(MM,"component")}),_M=()=>ue(()=>import("./contact-DDpnnh8x.js"),__vite__mapDeps([16,3,6])),RM=Nt("/contact")({head:()=>{const a=zt({title:"Contact Alumina Health | Patients, Caregivers, Providers, Partners",description:"Questions about Alumina Health, provider interest, partnerships, or getting started? Send us a message and our team will get back to you.",path:"/contact"});return{meta:a.meta,links:a.links,scripts:[Oe(ra([{name:"Home",path:"/"},{name:"Contact",path:"/contact"}]))]}},component:Ke(_M,"component")}),EM=()=>ue(()=>import("./assessment-types-uvOcuuZ-.js"),__vite__mapDeps([17,1,18,19,6,2,3,8])),DM=Nt("/assessment-types")({head:()=>{const a=zt({title:"Assessment Types | Alumina Health Brain App",description:"Guided cognitive and motor assessments on iPhone and iPad, including memory, tremor, tapping, walking, sit-to-stand, reaction, and vision tasks.",path:"/assessment-types"});return{meta:a.meta,links:a.links,scripts:[Oe(ra([{name:"Home",path:"/"},{name:"Assessment Types",path:"/assessment-types"}]))]}},component:Ke(EM,"component")}),NM=()=>ue(()=>import("./about-BuT7RZjR.js"),__vite__mapDeps([20,3,1,2,21,6])),qg="About Alumina Health — Brain & Movement Tracking for Patients",Lg="Alumina Health builds guided iPhone and iPad assessments that help patients and caregivers track memory, tremor, coordination, gait, and voice changes over time. Learn about our mission, who we serve, and how we approach medical accuracy.",zM=Nt("/about")({head:()=>{const a=zt({title:qg,description:Lg,path:"/about"});return{meta:a.meta,links:a.links,scripts:[Oe(ra([{name:"Home",path:"/"},{name:"About",path:"/about"}])),Oe({"@context":"https://schema.org","@type":"AboutPage",name:qg,description:Lg,url:`${se.url}/about/`,inLanguage:"en-US",isPartOf:{"@type":"WebSite",name:se.name,url:se.url},mainEntity:{"@type":"Organization",name:se.name,url:se.url,description:se.description}})]}},component:Ke(NM,"component")}),PM=()=>ue(()=>import("./index-D1vq1eVv.js"),__vite__mapDeps([22,1,18,19,6,2,8,9])),qM=Nt("/")({head:()=>{const a=zt({title:"Alumina Health | Brain & Movement Tracking for iPhone",description:"Guided iPhone and iPad assessments to track memory, tremor, coordination, gait, and voice changes over time — for patients and caregivers.",path:"/"});return{meta:a.meta,links:a.links,scripts:[Oe(Z1)]}},component:Ke(PM,"component")}),LM=()=>ue(()=>import("./conditions.index-DlXqC8R3.js"),__vite__mapDeps([23,1,2,3,21,6])),OM=Nt("/conditions/")({head:()=>{const a=zt({title:"Conditions & Support | Alumina Health",description:"How Alumina Health helps track Parkinson's, essential tremor, dementia and Alzheimer's, memory concerns, and movement changes — for patients and caregivers.",path:"/conditions"});return{meta:a.meta,links:a.links,scripts:[Oe(ra([{name:"Home",path:"/"},{name:"Conditions & Support",path:"/conditions"}]))]}},component:Ke(LM,"component")}),HM=()=>ue(()=>import("./articles.index-BKgtRseV.js"),__vite__mapDeps([24,1,2,3,25,6])),IM=Nt("/articles/")({head:()=>{const a=zt({title:"Articles & Guides on Brain & Movement Health | Alumina Health",description:"In-depth guides on Parkinson's, essential tremor, MS, memory concerns, dementia, concussion, and migraine: how to track changes at home and get more from clinical visits.",path:"/articles"}),s=W1();return{meta:a.meta,links:a.links,scripts:[Oe(ra([{name:"Home",path:"/"},{name:"Articles",path:"/articles"}])),Oe(Sv({name:"Alumina Health Articles",description:"Long-form articles on brain and movement health, organized by condition.",path:"/articles"})),Oe(xv(s.map(o=>({name:o.title,path:bv(o)}))))]}},component:Ke(HM,"component")}),Og="2026-06-22",jM={"parkinsons-disease":[{label:"Parkinson's Disease: Hope Through Research",publisher:"National Institute of Neurological Disorders and Stroke (NINDS)",url:"https://www.ninds.nih.gov/health-information/disorders/parkinsons-disease"},{label:"Parkinson's Disease — Symptoms and Causes",publisher:"Mayo Clinic",url:"https://www.mayoclinic.org/diseases-conditions/parkinsons-disease/symptoms-causes/syc-20376055"},{label:"MDS-UPDRS: Movement Disorder Society Unified Parkinson's Disease Rating Scale",publisher:"International Parkinson and Movement Disorder Society",url:"https://www.movementdisorders.org/MDS/MDS-Rating-Scales/MDS-Unified-Parkinsons-Disease-Rating-Scale-MDS-UPDRS.htm"}],"essential-tremor":[{label:"Essential Tremor Fact Sheet",publisher:"National Institute of Neurological Disorders and Stroke (NINDS)",url:"https://www.ninds.nih.gov/health-information/disorders/essential-tremor"},{label:"Essential Tremor — Symptoms and Causes",publisher:"Mayo Clinic",url:"https://www.mayoclinic.org/diseases-conditions/essential-tremor/symptoms-causes/syc-20350534"},{label:"Consensus Statement on the Classification of Tremors",publisher:"International Parkinson and Movement Disorder Society (Movement Disorders, 2018)",url:"https://www.movementdisorders.org/MDS/Scientific-Issues-Committee-Reports/Consensus-Statement-on-the-Classification-of-Tremors-from-the-Task-Force-on-Tremor-of-the-International-Parkinson-and-Movement-Disorder-Society.htm"}],"multiple-sclerosis":[{label:"Multiple Sclerosis Information Page",publisher:"National Institute of Neurological Disorders and Stroke (NINDS)",url:"https://www.ninds.nih.gov/health-information/disorders/multiple-sclerosis"},{label:"Multiple Sclerosis — Symptoms and Causes",publisher:"Mayo Clinic",url:"https://www.mayoclinic.org/diseases-conditions/multiple-sclerosis/symptoms-causes/syc-20350269"},{label:"About MS — Symptoms",publisher:"National Multiple Sclerosis Society",url:"https://www.nationalmssociety.org/Symptoms-Diagnosis/MS-Symptoms"}],"memory-concerns":[{label:"Memory, Forgetfulness, and Aging: What's Normal and What's Not?",publisher:"National Institute on Aging (NIA), NIH",url:"https://www.nia.nih.gov/health/memory-loss-and-forgetfulness/memory-forgetfulness-and-aging-whats-normal-and-whats-not"},{label:"Mild Cognitive Impairment — Symptoms and Causes",publisher:"Mayo Clinic",url:"https://www.mayoclinic.org/diseases-conditions/mild-cognitive-impairment/symptoms-causes/syc-20354578"}],"dementia-related-concerns":[{label:"What Is Dementia? Symptoms, Types, and Diagnosis",publisher:"National Institute on Aging (NIA), NIH",url:"https://www.nia.nih.gov/health/what-is-dementia"},{label:"Alzheimer's Disease Fact Sheet",publisher:"National Institute on Aging (NIA), NIH",url:"https://www.nia.nih.gov/health/alzheimers-and-dementia/alzheimers-disease-fact-sheet"},{label:"10 Early Signs and Symptoms of Alzheimer's",publisher:"Alzheimer's Association",url:"https://www.alz.org/alzheimers-dementia/10_signs"}],"cognitive-change":[{label:"Cognitive Health and Older Adults",publisher:"National Institute on Aging (NIA), NIH",url:"https://www.nia.nih.gov/health/cognitive-health-and-older-adults"},{label:"Mild Cognitive Impairment — Symptoms and Causes",publisher:"Mayo Clinic",url:"https://www.mayoclinic.org/diseases-conditions/mild-cognitive-impairment/symptoms-causes/syc-20354578"}],"movement-symptoms":[{label:"Movement Disorders",publisher:"Johns Hopkins Medicine",url:"https://www.hopkinsmedicine.org/health/conditions-and-diseases/movement-disorders"},{label:"Gait and Balance Disorders in Older Adults",publisher:"American Family Physician (AAFP)",url:"https://www.aafp.org/pubs/afp/issues/2010/0701/p61.html"}],"caregiver-support":[{label:"Caregiving for a Person with Alzhe
26imer's or a Related Dementia",publisher:"Centers for Disease Control and Prevention (CDC)",url:"https://www.cdc.gov/aging/caregiving/index.html"},{label:"Caregiving",publisher:"National Institute on Aging (NIA), NIH",url:"https://www.nia.nih.gov/health/caregiving"}],concussion:[{label:"Traumatic Brain Injury & Concussion",publisher:"Centers for Disease Control and Prevention (CDC)",url:"https://www.cdc.gov/traumaticbraininjury/"},{label:"Concussion — Symptoms and Causes",publisher:"Mayo Clinic",url:"https://www.mayoclinic.org/diseases-conditions/concussion/symptoms-causes/syc-20355594"},{label:"Sport Concussion Assessment Tool 5 (SCAT5)",publisher:"British Journal of Sports Medicine, Concussion in Sport Group",url:"https://bjsm.bmj.com/content/51/11/851"}],migraine:[{label:"Migraine Information Page",publisher:"National Institute of Neurological Disorders and Stroke (NINDS)",url:"https://www.ninds.nih.gov/health-information/disorders/migraine"},{label:"Migraine, Symptoms and Causes",publisher:"Mayo Clinic",url:"https://www.mayoclinic.org/diseases-conditions/migraine-headache/symptoms-causes/syc-20360201"},{label:"Understanding Migraine",publisher:"American Migraine Foundation",url:"https://americanmigrainefoundation.org/resource-library/understanding-migraine/"}]};function BM(a){return jM[a]??[]}const UM=()=>ue(()=>import("./conditions._slug-mddmJosp.js"),__vite__mapDeps([26,19,2,3,1,4,25,6,27,28,21,9,11])),VM=()=>ue(()=>import("./conditions._slug-DoTrlUs8.js"),[]),GM=()=>ue(()=>import("./conditions._slug-BCOcXX5G.js"),[]),YM=Nt("/conditions/$slug")({loader:({params:a})=>{const s=Ro(a.slug);if(!s)throw Ts();return{condition:s}},head:({loaderData:a})=>{if(!a)return{};const{condition:s}=a,o=BM(s.slug),r=zt({title:s.title,description:s.description,path:`/conditions/${s.slug}`}),u=[Oe(ra([{name:"Home",path:"/"},{name:"Conditions & Support",path:"/conditions"},{name:s.name,path:`/conditions/${s.slug}`}])),Oe(s.icd10?$1({name:s.title,description:s.description,path:`/conditions/${s.slug}`,condition:{name:s.name,alternateName:s.alternateName,icd10:s.icd10},lastReviewed:Og,citations:o}):J1({name:s.title,description:s.description,path:`/conditions/${s.slug}`,lastReviewed:Og,citations:o}))];return s.faqs&&s.faqs.length>0&&u.push(Oe(Oo(s.faqs))),{meta:r.meta,links:r.links,scripts:u}},notFoundComponent:Ke(GM,"notFoundComponent"),errorComponent:Ke(VM,"errorComponent"),component:Ke(UM,"component")}),WM=()=>ue(()=>import("./assessments._slug-Dw7rNMDy.js"),__vite__mapDeps([29,19,25,6,2,3,1,4,9,21,11])),FM=()=>ue(()=>import("./assessments._slug-DysfLBzw.js"),[]),KM=()=>ue(()=>import("./assessments._slug-CkhNRTPV.js"),[]),XM=Nt("/assessments/$slug")({loader:({params:a})=>{const s=_d.find(o=>o.slug===a.slug);if(!s)throw Ts();return{assessment:s}},head:({loaderData:a})=>{if(!a)return{};const{assessment:s}=a,o=zt({title:s.title,description:s.description,path:`/assessments/${s.slug}`}),r=[Oe(ra([{name:"Home",path:"/"},{name:"Assessment Types",path:"/assessment-types"},{name:s.navLabel,path:`/assessments/${s.slug}`}]))];return s.faqs&&s.faqs.length>0&&r.push(Oe(Oo(s.faqs))),{meta:o.meta,links:o.links,scripts:r}},notFoundComponent:Ke(KM,"notFoundComponent"),errorComponent:Ke(FM,"errorComponent"),component:Ke(WM,"component")}),QM=[{label:"MDS-UPDRS: Movement Disorder Society Unified Parkinson's Disease Rating Scale",publisher:"International Parkinson and Movement Disorder Society",url:"https://www.movementdisorders.org/MDS/MDS-Rating-Scales/MDS-Unified-Parkinsons-Disease-Rating-Scale-MDS-UPDRS.htm"},{label:"Montreal Cognitive Assessment (MoCA)",publisher:"MoCA Cognition",url:"https://mocacognition.com/"},{label:"Sport Concussion Assessment Tool 5 (SCAT5)",publisher:"British Journal of Sports Medicine, Concussion in Sport Group",url:"https://bjsm.bmj.com/content/51/11/851"},{label:"Sloan Low-Contrast Letter Acuity Chart — Background",publisher:"National Multiple Sclerosis Society",url:"https://www.nationalmssociety.org/For-Professionals/Researchers/Resources-for-Researchers/Clinical-Study-Measures/Low-Contrast-Letter-Acuity-Test"},{label:"General Wellness: Policy for Low Risk Devices — Guidance",publisher:"U.S. Food and Drug Administration (FDA)",url:"https://www.fda.gov/regulatory-information/search-fda-guidance-documents/general-wellness-
26policy-low-risk-devices"}],ZM=()=>ue(()=>import("./about_.our-process-B6HY2opI.js"),__vite__mapDeps([30,3,1,2,27,21,9,6])),Hg="Our Process — How Alumina Health Designs Assessments",Ig="How Alumina Health designs its iPhone and iPad assessments, the validated clinical instruments we draw on, and our regulatory framing as a non-diagnostic tracking tool.",$M=Nt("/about_/our-process")({head:()=>{const a=zt({title:Hg,description:Ig,path:"/about/our-process"});return{meta:a.meta,links:a.links,scripts:[Oe(ra([{name:"Home",path:"/"},{name:"About",path:"/about"},{name:"Our Process",path:"/about/our-process"}])),Oe({"@context":"https://schema.org","@type":"WebPage",name:Hg,description:Ig,url:`${se.url}${Ma("/about/our-process")}`,inLanguage:"en-US",isPartOf:{"@type":"WebSite",name:se.name,url:se.url},dateModified:"2026-09-23",citation:QM.map(s=>({"@type":"CreativeWork",name:s.label,publisher:{"@type":"Organization",name:s.publisher},url:s.url}))})]}},component:Ke(ZM,"component")}),JM=()=>ue(()=>import("./articles._category.index-DKoBepIG.js"),__vite__mapDeps([31,3,1,2,25,6,21])),e2=()=>ue(()=>import("./articles._category.index-1CDCtnCr.js"),[]),t2=()=>ue(()=>import("./articles._category.index-Dg5Q71IP.js"),[]),a2=Nt("/articles/$category/")({loader:({params:a})=>{const s=wv(a.category);if(!s)throw Ts();const o=kv(a.category);if(o.length===0)throw Ts();return{hub:s,articles:o}},head:({loaderData:a,params:s})=>{if(!a)return{meta:[{title:"Not found | Alumina Health"},{name:"robots",content:"noindex"}]};const{hub:o,articles:r}=a,u=Ro(o.slug),d=`/articles/${s.category}`,h=zt({title:o.title,description:o.description,path:d});return{meta:h.meta,links:h.links,scripts:[Oe(ra([{name:"Home",path:"/"},{name:"Articles",path:"/articles"},{name:o.name,path:d}])),Oe(Sv({name:o.title,description:o.description,path:d,about:u?{name:u.name,alternateName:u.alternateName,icd10:u.icd10}:void 0})),Oe(xv(r.map(y=>({name:y.title,path:bv(y)}))))]}},notFoundComponent:Ke(t2,"notFoundComponent"),errorComponent:Ke(e2,"errorComponent"),component:Ke(JM,"component")}),n2=()=>ue(()=>import("./articles._category._slug-Dom_vM3k.js"),__vite__mapDeps([32,3,1,2,4,27,19,28,21,9,25,6,11])),i2=()=>ue(()=>import("./articles._category._slug-BbnCCjXx.js"),[]),s2=()=>ue(()=>import("./articles._category._slug-BYWlAX-I.js"),[]),o2=Nt("/articles/$category/$slug")({loader:async({params:a})=>{const s=await Y1(a.slug);if(!s||s.category!==a.category)throw Ts();return{article:s}},head:({loaderData:a,params:s})=>{if(!a)return{meta:[{title:"Not found | Alumina Health"},{name:"robots",content:"noindex"}]};const{article:o}=a,r=`/articles/${s.category}/${s.slug}`,u=zt({title:o.metaTitle??`${o.title} | Alumina Health`,description:o.description,path:r,image:o.heroImage,type:"article"}),d=Ro(o.category),h=o.conditions.map(p=>Ro(p)).filter(p=>!!p).map(p=>({name:p.name,alternateName:p.alternateName,icd10:p.icd10})),y=[...u.meta,{property:"article:published_time",content:o.datePublished},{property:"article:modified_time",content:o.dateModified},...d?[{property:"article:section",content:d.name}]:[],...o.conditions.map(p=>Ro(p)?.name).filter(p=>!!p).map(p=>({property:"article:tag",content:p}))],g=[Oe(ra([{name:"Home",path:"/"},{name:"Articles",path:"/articles"},...d&&wv(d.slug)?[{name:d.name,path:`/articles/${d.slug}`}]:[],{name:o.title,path:r}
26])),Oe(tM({headline:o.title,description:o.description,path:r,datePublished:o.datePublished,dateModified:o.dateModified,image:o.heroImage,wordCount:F1(o),timeRequired:K1(o),about:h,citations:o.citations,lastReviewed:o.lastReviewed??o.dateModified,mentions:(o.assessments??[]).map(p=>({name:_d.find(b=>b.slug===p)?.navLabel??p,path:`/assessments/${p}`}))}))];return o.faqs&&o.faqs.length>0&&g.push(Oe(Oo(o.faqs))),{meta:y,links:u.links,scripts:g}},notFoundComponent:Ke(s2,"notFoundComponent"),errorComponent:Ke(i2,"errorComponent"),component:Ke(n2,"component")}),r2=gM.update({id:"/who-it-helps",path:"/who-it-helps",getParentRoute:()=>At}),l2=vM.update({id:"/voice-analysis",path:"/voice-analysis",getParentRoute:()=>At}),c2=wM.update({id:"/terms",path:"/terms",getParentRoute:()=>At}),u2=SM.update({id:"/privacy",path:"/privacy",getParentRoute:()=>At}),d2=TM.update({id:"/pricing",path:"/pricing",getParentRoute:()=>At}),h2=CM.update({id:"/medical-disclaimer",path:"/medical-disclaimer",getParentRoute:()=>At}),m2=RM.update({id:"/contact",path:"/contact",getParentRoute:()=>At}),f2=DM.update({id:"/assessment-types",path:"/assessment-types",getParentRoute:()=>At}),p2=zM.update({id:"/about",path:"/about",getParentRoute:()=>At}),g2=qM.update({id:"/",path:"/",getParentRoute:()=>At}),y2=OM.update({id:"/conditions/",path:"/conditions/",getParentRoute:()=>At}),v2=IM.update({id:"/articles/",path:"/articles/",getParentRoute:()=>At}),b2=YM.update({id:"/conditions/$slug",path:"/conditions/$slug",getParentRoute:()=>At}),w2=XM.update({id:"/assessments/$slug",path:"/assessments/$slug",getParentRoute:()=>At}),k2=$M.update({id:"/about_/our-process",path:"/about/our-process",getParentRoute:()=>At}),S2=a2.update({id:"/articles/$category/",path:"/articles/$category/",getParentRoute:()=>At}),x2=o2.update({id:"/articles/$category/$slug",path:"/articles/$category/$slug",getParentRoute:()=>At}),A2={IndexRoute:g2,AboutRoute:p2,AssessmentTypesRoute:f2,ContactRoute:m2,MedicalDisclaimerRoute:h2,PricingRoute:d2,PrivacyRoute:u2,TermsRoute:c2,VoiceAnalysisRoute:l2,WhoItHelpsRoute:r2,AboutOurProcessRoute:k2,AssessmentsSlugRoute:w2,ConditionsSlugRoute:b2,ArticlesIndexRoute:v2,ConditionsIndexRoute:y2,ArticlesCategorySlugRoute:x2,ArticlesCategoryIndexRoute:S2},T2=At._addFileChildren(A2);function M2({error:a,reset:s}){const o=dt();return E.jsx("div",{className:"flex min-h-screen items-center justify-center bg-background px-4",children:E.jsxs("div",{className:"max-w-md text-center",children:[E.jsx("div",{className:"mx-auto mb-6 flex h-16 w-16 items-center justify-center rounded-full bg-destructive/10",children:E.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",className:"h-8 w-8 text-destructive",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:E.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126ZM12 15.75h.007v.008H12v-.008Z"})})}),E.jsx("h1",{className:"text-2xl font-bold tracking-tight text-foreground",children:"Something went wrong"}),E.jsx("p",{className:"mt-2 text-sm text-muted-foreground",children:"An unexpected error occurred. Please try again."}),!1,E.jsxs("div",{className:"mt-6 flex items-center justify-center gap-3",children:[E.jsx("button",{onClick:()=>{o.invalidate(),s()},className:"inline-flex items-center justify-center rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground transition-colors hover:bg-primary/90",children:"Try again"}),E.jsx("a",{href:"/",className:"inline-flex items-center justify-center rounded-md border border-input bg-background px-4 py-2 text-sm font-medium text-foreground transition-colors hover:bg-accent",children:"Go home"})]})]})})}const C2=()=>FA({routeTree:T2,context:{},scrollRestoration:!0,trailingSlash:"always",defaultPreload:"intent",defaultPreloadDelay:0,defaultPreloadStaleTime:3e5,defaultPreloadGcTime:6e5,defaultPendingMs:2e3,defaultPendingMinMs:0,defaultErrorComponent:M2});async function _2(){const a=await C2();let s;return s=[],window.__TSS_START_OPTIONS__={serializationAdapters:s},s.push($x),a.options.serializationAdapters&&s.push(...a.options.serializationAdapters),a.update({basepath:"",serializationAdapters:s}),a.stores.matchesId.get().length||await eA(a),a}async function R2(){const a=await _2();return window.$_TSR?.h(),a}var sd;function E2(){return sd||(sd=R2()),E.jsx(iA,{promise:sd,children:a=>E.jsx(QA,{router:a})})}ae.startTransition(()=>{Vw.hydrateRoot(document,E.jsx(ae.StrictMode,{children:E.jsx(E2,{})}))});export{yl as A,Rd as C,fM as F,Je as L,Ha as P,YM as R,xM as a,_d as b,gv as c,O2 as d,BM as e,L2 as f,W1 as g,wv as h,Og as i,E as j,zT as k,Cg as l,XM as m,Ml as n,QM as o,a2 as p,Ro as q,ae as r,bv as s,q2 as t,o2 as u,H2 as v};

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