0&&(a[c]=d,s=!0)}s&&(e.data.morphAttributes=a,e.data.morphTargetsRelative=this.morphTargetsRelative);const o=this.groups;o.length>0&&(e.data.groups=JSON.parse(JSON.stringify(o)));const l=this.boundingSphere;return l!==null&&(e.data.boundingSphere=l.toJSON()),e}clone(){return new this.constructor().copy(this)}copy(e){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;const n={};this.name=e.name;const r=e.index;r!==null&&this.setIndex(r.clone());const a=e.attributes;for(const u in a){const d=a[u];this.setAttribute(u,d.clone(n))}const s=e.morphAttributes;for(const u in s){const d=[],h=s[u];for(let f=0,p=h.length;f0){const a=n[r[0]];if(a!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let s=0,o=a.length;s(e.far-e.near)**2))&&(u8.copy(s).invert(),Tm.copy(e.ray).applyMatrix4(u8),!(r.boundingBox!==null&&Tm.intersectsBox(r.boundingBox)===!1)&&this._computeIntersections(e,n,Tm)))}_computeIntersections(e,n,r){let a;const s=this.geometry,o=this.material,l=s.index,c=s.attributes.position,u=s.attributes.uv,d=s.attributes.uv1,h=s.attributes.normal,f=s.groups,p=s.drawRange;if(l!==null)if(Array.isArray(o))for(let x=0,v=f.length;xn.far?null:{distance:u,point:vS.clone(),object:t}}function wS(t,e,n,r,a,s,o,l,c,u){t.getVertexPosition(l,gS),t.getVertexPosition(c,bS),t.getVertexPosition(u,xS);const d=zbe(t,e,n,r,gS,bS,xS,h8);if(d){const h=new ft;ay.getBarycoord(h8,gS,bS,xS,h),a&&(d.uv=ay.getInterpolatedAttribute(a,l,c,u,h,new Un)),s&&(d.uv1=ay.getInterpolatedAttribute(s,l,c,u,h,new Un)),o&&(d.normal=ay.getInterpolatedAttribute(o,l,c,u,h,new ft),d.normal.dot(r.direction)>0&&d.normal.multiplyScalar(-1));const f={a:l,b:c,c:u,normal:new ft,materialIndex:0};ay.getNormal(gS,bS,xS,f.normal),d.face=f,d.barycoord=h}return d}let GF=class tY extends wl{constructor(e=1,n=1,r=1,a=1,s=1,o=1){super(),this.type="BoxGeometry",this.parameters={width:e,height:n,depth:r,widthSegments:a,heightSegments:s,depthSegments:o};const l=this;a=Math.floor(a),s=Math.floor(s),o=Math.floor(o);const c=[],u=[],d=[],h=[];let f=0,p=0;x("z","y","x",-1,-1,r,n,e,o,s,0),x("z","y","x",1,-1,r,n,-e,o,s,1),x("x","z","y",1,1,e,r,n,a,o,2),x("x","z","y",1,-1,e,r,-n,a,o,3),x("x","y","z",1,-1,e,n,r,a,s,4),x("x","y","z",-1,-1,e,n,-r,a,s,5),this.setIndex(c),this.setAttribute("position",new jo(u,3)),this.setAttribute("normal",new jo(d,3)),this.setAttribute("uv",new jo(h,2));function x(v,g,y,_,N,k,A,M,C,j,P){const E=k/C,U=A/j,L=k/2,B=A/2,D=M/2,$=C+1,G=j+1;let z=0,W=0;const X=new ft;for(let ae=0;ae0?1:-1,d.push(X.x,X.y,X.z),h.push(K/C),h.push(1-ae/j),z+=1}}for(let ae=0;ae to .`)}let f=Vc(),p;if(e){let _=typeof e=="string"?Ob(e):e;ca(d==="/"||_.pathname?.startsWith(d),`When overriding the location using \`\` or \`useRoutes(routes, location)\`, the location pathname must begin with the portion of the URL pathname that was matched by all parent routes. The current pathname base is "${d}" but pathname "${_.pathname}" was given in the \`location\` prop.`),p=_}else p=f;let x=p.pathname||"/",v=x;if(d!=="/"){let _=d.replace(/^\//,"").split("/");v="/"+x.replace(/^\//,"").split("/").slice(_.length).join("/")}let g=SK(t,{pathname:v});xl(h||g!=null,`No routes matched location "${p.pathname}${p.search}${p.hash}" `),xl(g==null||g[g.length-1].route.element!==void 0||g[g.length-1].route.Component!==void 0||g[g.length-1].route.lazy!==void 0,`Matched leaf route at location "${p.pathname}${p.search}${p.hash}" does not have an element or Component. This means it will render an with a null value by default resulting in an "empty" page.`);let y=Yce(g&&g.map(_=>Object.assign({},_,{params:Object.assign({},c,_.params),pathname:$u([d,s.encodeLocation?s.encodeLocation(_.pathname.replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:_.pathname]),pathnameBase:_.pathnameBase==="/"?d:$u([d,s.encodeLocation?s.encodeLocation(_.pathnameBase.replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:_.pathnameBase])})),o,n,r,a);return e&&y?w.createElement(i0.Provider,{value:{location:{pathname:"/",search:"",hash:"",state:null,key:"default",...p},navigationType:"POP"}},y):y}function Gce(){let t=tue(),e=Ece(t)?`${t.status} ${t.statusText}`:t instanceof Error?t.message:JSON.stringify(t),n=t instanceof Error?t.stack:null,r="rgba(200,200,200, 0.5)",a={padding:"0.5rem",backgroundColor:r},s={padding:"2px 4px",backgroundColor:r},o=null;return console.error("Error handled by React Router default ErrorBoundary:",t),o=w.createElement(w.Fragment,null,w.createElement("p",null,"💿 Hey developer 👋"),w.createElement("p",null,"You can provide a way better UX than this when your app throws errors by providing your own ",w.createElement("code",{style:s},"ErrorBoundary")," or"," ",w.createElement("code",{style:s},"errorElement")," prop on your route.")),w.createElement(w.Fragment,null,w.createElement("h2",null,"Unexpected Application Error!"),w.createElement("h3",{style:{fontStyle:"italic"}},e),n?w.createElement("pre",{style:a},n):null,o)}var Wce=w.createElement(Gce,null),DK=class extends w.Component{constructor(t){super(t),this.state={location:t.location,revalidation:t.revalidation,error:t.error}}static getDerivedStateFromError(t){return{error:t}}static getDerivedStateFromProps(t,e){return e.location!==t.location||e.revalidation!=="idle"&&t.revalidation==="idle"?{error:t.error,location:t.location,revalidation:t.revalidation}:{error:t.error!==void 0?t.error:e.error,location:e.location,revalidation:t.revalidation||e.revalidation}}componentDidCatch(t,e){this.props.onError?this.props.onError(t,e):console.error("React Router caught the following error during render",t)}render(){let t=this.state.error;if(this.context&&typeof t=="object"&&t&&"digest"in t&&typeof t.digest=="string"){const n=Uce(t.digest);n&&(t=n)}let e=t!==void 0?w.createElement(kl.Provider,{value:this.props.routeContext},w.createElement(oF.Provider,{value:t,children:this.props.component})):this.props.children;return this.context?w.createElement(Kce,{error:t},e):e}};DK.contextType=Rce;var RM=new WeakMap;function Kce({children:t,error:e}){let{basename:n}=w.useContext(Io);if(typeof e=="object"&&e&&"digest"in e&&typeof e.digest=="string"){let r=zce(e.digest);if(r){let a=RM.get(e);if(a)throw a;let s=kK(r.location,n);if(CK&&!RM.get(e))if(s.isExternal||r.reloadDocument)window.location.href=s.absoluteURL||s.to;else{const o=Promise.resolve().then(()=>window.__reactRouterDataRouter.navigate(s.to,{replace:r.replace}));throw RM.set(e,o),o}return w.createElement("meta",{httpEquiv:"refresh",content:`0;url=${s.absoluteURL||s.to}`})}}return t}function Xce({routeContext:t,match:e,children:n}){let r=w.useContext(Ib);return r&&r.static&&r.staticContext&&(e.route.errorElement||e.route.ErrorBoundary)&&(r.staticContext._deepestRenderedBoundaryId=e.route.id),w.createElement(kl.Provider,{value:t},n)}function Yce(t,e=[],n=null,r=null,a=null){if(t==null){if(!n)return null;if(n.errors)t=n.matches;else if(e.length===0&&!n.initialized&&n.matches.length>0)t=n.matches;else return null}let s=t,o=n?.errors;if(o!=null){let d=s.findIndex(h=>h.route.id&&o?.[h.route.id]!==void 0);ca(d>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(o).join(",")}`),s=s.slice(0,Math.min(s.length,d+1))}let l=!1,c=-1;if(n)for(let d=0;d=0?s=s.slice(0,c+1):s=[s[0]];break}}}let u=n&&r?(d,h)=>{r(d,{location:n.location,params:n.matches?.[0]?.params??{},unstable_pattern:jce(n.matches),errorInfo:h})}:void 0;return s.reduceRight((d,h,f)=>{let p,x=!1,v=null,g=null;n&&(p=o&&h.route.id?o[h.route.id]:void 0,v=h.route.errorElement||Wce,l&&(c<0&&f===0?(RK("route-fallback",!1,"No `HydrateFallback` element provided to render during initial hydration"),x=!0,g=null):c===f&&(x=!0,g=h.route.hydrateFallbackElement||null)));let y=e.concat(s.slice(0,f+1)),_=()=>{let N;return p?N=v:x?N=g:h.route.Component?N=w.createElement(h.route.Component,null):h.route.element?N=h.route.element:N=d,w.createElement(Xce,{match:h,routeContext:{outlet:d,matches:y,isDataRoute:n!=null},children:N})};return n&&(h.route.ErrorBoundary||h.route.errorElement||f===0)?w.createElement(DK,{location:n.location,revalidation:n.revalidation,component:v,error:p,children:_(),routeContext:{outlet:null,matches:y,isDataRoute:!0},onError:u}):_()},null)}function lF(t){return`${t} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function Qce(t){let e=w.useContext(Ib);return ca(e,lF(t)),e}function Zce(t){let e=w.useContext(LC);return ca(e,lF(t)),e}function Jce(t){let e=w.useContext(kl);return ca(e,lF(t)),e}function cF(t){let e=Jce(t),n=e.matches[e.matches.length-1];return ca(n.route.id,`${t} can only be used on routes that contain a unique "id"`),n.route.id}function eue(){return cF("useRouteId")}function tue(){let t=w.useContext(oF),e=Zce("useRouteError"),n=cF("useRouteError");return t!==void 0?t:e.errors?.[n]}function nue(){let{router:t}=Qce("useNavigate"),e=cF("useNavigate"),n=w.useRef(!1);return EK(()=>{n.current=!0}),w.useCallback(async(a,s={})=>{xl(n.current,PK),n.current&&(typeof a=="number"?await t.navigate(a):await t.navigate(a,{fromRouteId:e,...s}))},[t,e])}var yB={};function RK(t,e,n){!e&&!yB[t]&&(yB[t]=!0,xl(!1,n))}w.memo(rue);function rue({routes:t,future:e,state:n,onError:r}){return jK(t,void 0,n,r,e)}function ib({to:t,replace:e,state:n,relative:r}){ca(zb()," may be used only in the context of a component.");let{static:a}=w.useContext(Io);xl(!a," must not be used on the initial render in a . This is a no-op, but you should modify your code so the is only ever rendered in response to some user interaction or state change.");let{matches:s}=w.useContext(kl),{pathname:o}=Vc(),l=rc(),c=sF(t,iF(s),o,r==="path"),u=JSON.stringify(c);return w.useEffect(()=>{l(JSON.parse(u),{replace:e,state:n,relative:r})},[l,u,r,e,n]),null}function aue(t){return Vce(t.context)}function fa(t){ca(!1,"A is only ever to be used as the child of element, never rendered directly. Please wrap your in a .")}function iue({basename:t="/",children:e=null,location:n,navigationType:r="POP",navigator:a,static:s=!1,unstable_useTransitions:o}){ca(!zb(),"You cannot render a inside another . You should never have more than one in your app.");let l=t.replace(/^\/*/,"/"),c=w.useMemo(()=>({basename:l,navigator:a,static:s,unstable_useTransitions:o,future:{}}),[l,a,s,o]);typeof n=="string"&&(n=Ob(n));let{pathname:u="/",search:d="",hash:h="",state:f=null,key:p="default"}=n,x=w.useMemo(()=>{let v=Zu(u,l);return v==null?null:{location:{pathname:v,search:d,hash:h,state:f,key:p},navigationType:r}},[l,u,d,h,f,p,r]);return xl(x!=null,` is not able to match the URL "${u}${d}${h}" because it does not start with the basename, so the won't render anything.`),x==null?null:w.createElement(Io.Provider,{value:c},w.createElement(i0.Provider,{children:e,value:x}))}function sue({children:t,location:e}){return qce(Hj(t),e)}function Hj(t,e=[]){let n=[];return w.Children.forEach(t,(r,a)=>{if(!w.isValidElement(r))return;let s=[...e,a];if(r.type===w.Fragment){n.push.apply(n,Hj(r.props.children,s));return}ca(r.type===fa,`[${typeof r.type=="string"?r.type:r.type.name}] is not a component. All component children of must be a or `),ca(!r.props.index||!r.props.children,"An index route cannot have child routes.");let o={id:r.props.id||s.join("-"),caseSensitive:r.props.caseSensitive,element:r.props.element,Component:r.props.Component,index:r.props.index,path:r.props.path,middleware:r.props.middleware,loader:r.props.loader,action:r.props.action,hydrateFallbackElement:r.props.hydrateFallbackElement,HydrateFallback:r.props.HydrateFallback,errorElement:r.props.errorElement,ErrorBoundary:r.props.ErrorBoundary,hasErrorBoundary:r.props.hasErrorBoundary===!0||r.props.ErrorBoundary!=null||r.props.errorElement!=null,shouldRevalidate:r.props.shouldRevalidate,handle:r.props.handle,lazy:r.props.lazy};r.props.children&&(o.children=Hj(r.props.children,s)),n.push(o)}),n}var O_="get",I_="application/x-www-form-urlencoded";function OC(t){return typeof HTMLElement<"u"&&t instanceof HTMLElement}function oue(t){return OC(t)&&t.tagName.toLowerCase()==="button"}function lue(t){return OC(t)&&t.tagName.toLowerCase()==="form"}function cue(t){return OC(t)&&t.tagName.toLowerCase()==="input"}function uue(t){return!!(t.metaKey||t.altKey||t.ctrlKey||t.shiftKey)}function due(t,e){return t.button===0&&(!e||e==="_self")&&!uue(t)}function $j(t=""){return new URLSearchParams(typeof t=="string"||Array.isArray(t)||t instanceof URLSearchParams?t:Object.keys(t).reduce((e,n)=>{let r=t[n];return e.concat(Array.isArray(r)?r.map(a=>[n,a]):[[n,r]])},[]))}function hue(t,e){let n=$j(t);return e&&e.forEach((r,a)=>{n.has(a)||e.getAll(a).forEach(s=>{n.append(a,s)})}),n}var Zw=null;function mue(){if(Zw===null)try{new FormData(document.createElement("form"),0),Zw=!1}catch{Zw=!0}return Zw}var fue=new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);function FM(t){return t!=null&&!fue.has(t)?(xl(!1,`"${t}" is not a valid \`encType\` for \`