vendor: 5,052 bytes, line 1
1function gd(e,t){for(var r=0;r<t.length;r++){const s=t[r];if(typeof s!="string"&&!Array.isArray(s)){for(const c in s)if(c!=="default"&&!(c in e)){const d=Object.getOwnPropertyDescriptor(s,c);d&&Object.defineProperty(e,c,d.get?d:{enumerable:!0,get:()=>s[c]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const c of document.querySelectorAll('link[rel="modulepreload"]'))s(c);new MutationObserver(c=>{for(const d of c)if(d.type==="childList")for(const m of d.addedNodes)m.tagName==="LINK"&&m.rel==="modulepreload"&&s(m)}).observe(document,{childList:!0,subtree:!0});function r(c){const d={};return c.integrity&&(d.integrity=c.integrity),c.referrerPolicy&&(d.referrerPolicy=c.referrerPolicy),c.crossOrigin==="use-credentials"?d.credentials="include":c.crossOrigin==="anonymous"?d.credentials="omit":d.credentials="same-origin",d}function s(c){if(c.ep)return;c.ep=!0;const d=r(c);fetch(c.href,d)}})();function yd(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var op={exports:{}},fo={};var r0;function Uj(){if(r0)return fo;r0=1;var e=Symbol.for("react.transitional.element"),t=Symbol.for("react.fragment");function r(s,c,d){var m=null;if(d!==void 0&&(m=""+d),c.key!==void 0&&(m=""+c.key),"key"in c){d={};for(var h in c)h!=="key"&&(d[h]=c[h])}else d=c;return c=d.ref,{$$typeof:e,type:s,key:m,ref:c!==void 0?c:null,props:d}}return fo.Fragment=t,fo.jsx=r,fo.jsxs=r,fo}var s0;function Dj(){return s0||(s0=1,op.exports=Uj()),op.exports}var o=Dj();const Oj=yd(o),Lj=gd({__proto__:null,default:Oj},[o]);var lp={exports:{}},go={},cp={exports:{}},dp={};var i0;function zj(){return i0||(i0=1,(function(e){function t(V,Y){var ce=V.length;V.push(Y);e:for(;0<ce;){var de=ce-1>>>1,T=V[de];if(0<c(T,Y))V[de]=Y,V[ce]=T,ce=de;else break e}}function r(V){return V.length===0?null:V[0]}function s(V){if(V.length===0)return null;var Y=V[0],ce=V.pop();if(ce!==Y){V[0]=ce;e:for(var de=0,T=V.length,W=T>>>1;de<W;){var ie=2*(de+1)-1,oe=V[ie],we=ie+1,fe=V[we];if(0>c(oe,ce))we<T&&0>c(fe,oe)?(V[de]=fe,V[we]=ce,de=we):(V[de]=oe,V[ie]=ce,de=ie);else if(we<T&&0>c(fe,ce))V[de]=fe,V[we]=ce,de=we;else break e}}return Y}function c(V,Y){var ce=V.sortIndex-Y.sortIndex;return ce!==0?ce:V.id-Y.id}if(e.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var d=performance;e.unstable_now=function(){return d.now()}}else{var m=Date,h=m.now();e.unstable_now=function(){return m.now()-h}}var f=[],y=[],b=1,v=null,x=3,k=!1,E=!1,C=!1,N=!1,q=typeof setTimeout=="function"?setTimeout:null,R=typeof clearTimeout=="function"?clearTimeout:null,I=typeof setImmediate<"u"?setImmediate:null;function $(V){for(var Y=r(y);Y!==null;){if(Y.callback===null)s(y);else if(Y.startTime<=V)s(y),Y.sortIndex=Y.expirationTime,t(f,Y);else break;Y=r(y)}}function z(V){if(C=!1,$(V),!E)if(r(f)!==null)E=!0,G||(G=!0,pe());else{var Y=r(y);Y!==null&&Ae(z,Y.startTime-V)}}var G=!1,L=-1,D=5,ee=-1;function ne(){return N?!0:!(e.unstable_now()-ee<D)}function me(){if(N=!1,G){var V=e.unstable_now();ee=V;var Y=!0;try{e:{E=!1,C&&(C=!1,R(L),L=-1),k=!0;var ce=x;try{t:{for($(V),v=r(f);v!==null&&!(v.expirationTime>V&&ne());){var de=v.callback;if(typeof de=="function"){v.callback=null,x=v.priorityLevel;var T=de(v.expirationTime<=V);if(V=e.unstable_now(),typeof T=="function"){v.callback=T,$(V),Y=!0;break t}v===r(f)&&s(f),$(V)}else s(f);v=r(f)}if(v!==null)Y=!0;else{var W=r(y);W!==null&&Ae(z,W.startTime-V),Y=!1}}break e}finally{v=null,x=ce,k=!1}Y=void 0}}finally{Y?pe():G=!1}}}var pe;if(typeof I=="function")pe=function(){I(me)};else if(typeof MessageChannel<"u"){var Re=new MessageChannel,Ee=Re.port2;Re.port1.onmessage=me,pe=function(){Ee.postMessage(null)}}else pe=function(){q(me,0)};function Ae(V,Y){L=q(function(){V(e.unstable_now())},Y)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(V){V.callback=null},e.unstable_forceFrameRate=function(V){0>V||125<V?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):D=0<V?Math.floor(1e3/V):5},e.unstable_getCurrentPriorityLevel=function(){return x},e.unstable_next=function(V){switch(x){case 1:case 2:case 3:var Y=3;break;default:Y=x}var ce=x;x=Y;try{return V()}finally{x=ce}},e.unstable_requestPaint=function(){N=!0},e.unstable_runWithPriority=function(V,Y){switch(V){case 1:case 2:case 3:case 4:case 5:break;default:V=3}var ce=x;x=V;try{return Y()}finally{x=ce}},e.unstable_scheduleCallback=function(V,Y,ce){var de=e.unstable_now();switch(typeof ce=="object"&&ce!==null?(ce=ce.delay,ce=typeof ce=="number"&&0<ce?de+ce:de):ce=de,V){case 1:var T=-1;break;case 2:T=250;break;case 5:T=1073741823;break;case 4:T=1e4;break;default:T=5e3}return T=ce+T,V={id:b++,callback:Y,priorityLevel:V,startTime:ce,expirationTime:T,s
vendor: 9,042 bytes, line 1
1ortIndex:-1},ce>de?(V.sortIndex=ce,t(y,V),r(f)===null&&V===r(y)&&(C?(R(L),L=-1):C=!0,Ae(z,ce-de))):(V.sortIndex=T,t(f,V),E||k||(E=!0,G||(G=!0,pe()))),V},e.unstable_shouldYield=ne,e.unstable_wrapCallback=function(V){var Y=x;return function(){var ce=x;x=Y;try{return V.apply(this,arguments)}finally{x=ce}}}})(dp)),dp}var o0;function Fj(){return o0||(o0=1,cp.exports=zj()),cp.exports}var up={exports:{}},De={};var l0;function $j(){if(l0)return De;l0=1;var e=Symbol.for("react.transitional.element"),t=Symbol.for("react.portal"),r=Symbol.for("react.fragment"),s=Symbol.for("react.strict_mode"),c=Symbol.for("react.profiler"),d=Symbol.for("react.consumer"),m=Symbol.for("react.context"),h=Symbol.for("react.forward_ref"),f=Symbol.for("react.suspense"),y=Symbol.for("react.memo"),b=Symbol.for("react.lazy"),v=Symbol.iterator;function x(T){return T===null||typeof T!="object"?null:(T=v&&T[v]||T["@@iterator"],typeof T=="function"?T:null)}var k={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},E=Object.assign,C={};function N(T,W,ie){this.props=T,this.context=W,this.refs=C,this.updater=ie||k}N.prototype.isReactComponent={},N.prototype.setState=function(T,W){if(typeof T!="object"&&typeof T!="function"&&T!=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,T,W,"setState")},N.prototype.forceUpdate=function(T){this.updater.enqueueForceUpdate(this,T,"forceUpdate")};function q(){}q.prototype=N.prototype;function R(T,W,ie){this.props=T,this.context=W,this.refs=C,this.updater=ie||k}var I=R.prototype=new q;I.constructor=R,E(I,N.prototype),I.isPureReactComponent=!0;var $=Array.isArray,z={H:null,A:null,T:null,S:null,V:null},G=Object.prototype.hasOwnProperty;function L(T,W,ie,oe,we,fe){return ie=fe.ref,{$$typeof:e,type:T,key:W,ref:ie!==void 0?ie:null,props:fe}}function D(T,W){return L(T.type,W,void 0,void 0,void 0,T.props)}function ee(T){return typeof T=="object"&&T!==null&&T.$$typeof===e}function ne(T){var W={"=":"=0",":":"=2"};return"$"+T.replace(/[=:]/g,function(ie){return W[ie]})}var me=/\/+/g;function pe(T,W){return typeof T=="object"&&T!==null&&T.key!=null?ne(""+T.key):W.toString(36)}function Re(){}function Ee(T){switch(T.status){case"fulfilled":return T.value;case"rejected":throw T.reason;default:switch(typeof T.status=="string"?T.then(Re,Re):(T.status="pending",T.then(function(W){T.status==="pending"&&(T.status="fulfilled",T.value=W)},function(W){T.status==="pending"&&(T.status="rejected",T.reason=W)})),T.status){case"fulfilled":return T.value;case"rejected":throw T.reason}}throw T}function Ae(T,W,ie,oe,we){var fe=typeof T;(fe==="undefined"||fe==="boolean")&&(T=null);var he=!1;if(T===null)he=!0;else switch(fe){case"bigint":case"string":case"number":he=!0;break;case"object":switch(T.$$typeof){case e:case t:he=!0;break;case b:return he=T._init,Ae(he(T._payload),W,ie,oe,we)}}if(he)return we=we(T),he=oe===""?"."+pe(T,0):oe,$(we)?(ie="",he!=null&&(ie=he.replace(me,"$&/")+"/"),Ae(we,W,ie,"",function(et){return et})):we!=null&&(ee(we)&&(we=D(we,ie+(we.key==null||T&&T.key===we.key?"":(""+we.key).replace(me,"$&/")+"/")+he)),W.push(we)),1;he=0;var ze=oe===""?".":oe+":";if($(T))for(var Ie=0;Ie<T.length;Ie++)oe=T[Ie],fe=ze+pe(oe,Ie),he+=Ae(oe,W,ie,fe,we);else if(Ie=x(T),typeof Ie=="function")for(T=Ie.call(T),Ie=0;!(oe=T.next()).done;)oe=oe.value,fe=ze+pe(oe,Ie++),he+=Ae(oe,W,ie,fe,we);else if(fe==="object"){if(typeof T.then=="function")return Ae(Ee(T),W,ie,oe,we);throw W=String(T),Error("Objects are not valid as a React child (found: "+(W==="[object Object]"?"object with keys {"+Object.keys(T).join(", ")+"}":W)+"). If you meant to render a collection of children, use an array instead.")}return he}function V(T,W,ie){if(T==null)return T;var oe=[],we=0;return Ae(T,oe,"","",function(fe){return W.call(ie,fe,we++)}),oe}function Y(T){if(T._status===-1){var W=T._result;W=W(),W.then(function(ie){(T._status===0||T._status===-1)&&(T._status=1,T._result=ie)},function(ie){(T._status===0||T._status===-1)&&(T._status=2,T._result=ie)}),T._status===-1&&(T._status=0,T._result=W)}if(T._status===1)return T._result.default;throw T._result}var ce=typeof reportError=="function"?reportError:function(T){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var W=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof T=="object"&&T!==null&&typeof T.message=="string"?String(T.message):String(T),error:T});if(!window.dispatchEvent(W))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",T);return}console.error(T)};function de(){}return De.Children={map:V,forEach:function(T,W,ie){V(T,function(){W.apply(this,arguments)},ie)},count:function(T){var W=0;return V(T,function(){W++}),W},toArray:function(T){return V(T,function(W){return W})||[]},only:function(T){if(!ee(T))throw Error("React.Children.only expected to receive a single React element child.");return T}},De.Component=N,De.Fragment=r,De.Profiler=c,De.PureComponent=R,De.StrictMode=s,De.Suspense=f,De.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=z,De.__COMPILER_RUNTIME={__proto__:null,c:function(T){return z.H.useMemoCache(T)}},De.cache=function(T){return function(){return T.apply(null,arguments)}},De.cloneElement=function(T,W,ie){if(T==null)throw Error("The argument must be a React element, but you passed "+T+".");var oe=E({},T.props),we=T.key,fe=void 0;if(W!=null)for(he in W.ref!==void 0&&(fe=void 0),W.key!==void 0&&(we=""+W.key),W)!G.call(W,he)||he==="key"||he==="__self"||he==="__source"||he==="ref"&&W.ref===void 0||(oe[he]=W[he]);var he=arguments.length-2;if(he===1)oe.children=ie;else if(1<he){for(var ze=Array(he),Ie=0;Ie<he;Ie++)ze[Ie]=arguments[Ie+2];oe.children=ze}return L(T.type,we,void 0,void 0,fe,oe)},De.createContext=function(T){return T={$$typeof:m,_currentValue:T,_currentValue2:T,_threadCount:0,Provider:null,Consumer:null},T.Provider=T,T.Consumer={$$typeof:d,_context:T},T},De.createElement=function(T,W,ie){var oe,we={},fe=null;if(W!=null)for(oe in W.key!==void 0&&(fe=""+W.key),W)G.call(W,oe)&&oe!=="key"&&oe!=="__self"&&oe!=="__source"&&(we[oe]=W[oe]);var he=arguments.length-2;if(he===1)we.children=ie;else if(1<he){for(var ze=Array(he),Ie=0;Ie<he;Ie++)ze[Ie]=arguments[Ie+2];we.children=ze}if(T&&T.defaultProps)for(oe in he=T.defaultProps,he)we[oe]===void 0&&(we[oe]=he[oe]);return L(T,fe,void 0,void 0,null,we)},De.createRef=function(){return{current:null}},De.forwardRef=function(T){return{$$typeof:h,render:T}},De.isValidElement=ee,De.lazy=function(T){return{$$typeof:b,_payload:{_status:-1,_result:T},_init:Y}},De.memo=function(T,W){return{$$typeof:y,type:T,compare:W===void 0?null:W}},De.startTransition=function(T){var W=z.T,ie={};z.T=ie;try{var oe=T(),we=z.S;we!==null&&we(ie,oe),typeof oe=="object"&&oe!==null&&typeof oe.then=="function"&&oe.then(de,ce)}catch(fe){ce(fe)}finally{z.T=W}},De.unstable_useCacheRefresh=function(){return z.H.useCacheRefresh()},De.use=function(T){return z.H.use(T)},De.useActionState=function(T,W,ie){return z.H.useActionState(T,W,ie)},De.useCallback=function(T,W){return z.H.useCallback(T,W)},De.useContext=function(T){return z.H.useContext(T)},De.useDebugValue=function(){},De.useDeferredValue=function(T,W){return z.H.useDeferredValue(T,W)},De.useEffect=function(T,W,ie){var oe=z.H;if(typeof ie=="function")throw Error("useEffect CRUD overload is not enabled in this build of React.");return oe.useEffect(T,W)},De.useId=function(){return z.H.useId()},De.useImperativeHandle=function(T,W,ie){return z.H.useImperativeHandle(T,W,ie)},De.useInsertionEffect=function(T,W){return z.H.useInsertionEffect(T,W)},De.useLayoutEffect=function(T,W){return z.H.useLayoutEffect(T,W)},De.useMemo=function(T,W){return z.H.useMemo(T,W)},De.useOptimistic=function(T,W){return z.H.useOptimistic(T,W)},De.useReducer=function(T,W,ie){return z.H.useReducer(T,W,ie)},De.useRef=function(T){return z.H.useRef(T)},De.useState=function(T){return z.H.useState(T)},De.useSyncExternalStore=function(T,W,ie){return z.H.useSyncExternalStore(T,W,ie)},De.useTransition=function(){return z.H.useTransition()},De.version="19.1.0",De}var c0;function bd(){return c0||(c0=1,up.exports=$j()),up.exports}var mp={exports:{}},Xt={};var d0;function Bj(){if(d0)return Xt;d0=1;var e=bd();function t(f){var y="https://react.dev/errors/"+f;if(1<arguments.length){y+="?args[]="+encodeURIComponent(arguments[1]);for(var b=2;b<arguments.length;b++)y+="&args[]="+encodeURIComponent(arguments[b])}return"Minified React error #"+f+"; visit "+y+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function r(){}var s={d:{f:r,r:function(){throw Error(t(522))},D:r,C:r,L:r,m:r,X:r,S:r,M:r},p:0,findDOMNode:null},c=Symbol.for("react.portal");function d(f,y,b){var v=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:c,key:v==null?null:""+v,children:f,containerInfo:y,implementation:b}}
vendor: 5,422 bytes, line 1
1var m=e.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;function h(f,y){if(f==="font")return"";if(typeof y=="string")return y==="use-credentials"?y:""}return Xt.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=s,Xt.createPortal=function(f,y){var b=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!y||y.nodeType!==1&&y.nodeType!==9&&y.nodeType!==11)throw Error(t(299));return d(f,y,null,b)},Xt.flushSync=function(f){var y=m.T,b=s.p;try{if(m.T=null,s.p=2,f)return f()}finally{m.T=y,s.p=b,s.d.f()}},Xt.preconnect=function(f,y){typeof f=="string"&&(y?(y=y.crossOrigin,y=typeof y=="string"?y==="use-credentials"?y:"":void 0):y=null,s.d.C(f,y))},Xt.prefetchDNS=function(f){typeof f=="string"&&s.d.D(f)},Xt.preinit=function(f,y){if(typeof f=="string"&&y&&typeof y.as=="string"){var b=y.as,v=h(b,y.crossOrigin),x=typeof y.integrity=="string"?y.integrity:void 0,k=typeof y.fetchPriority=="string"?y.fetchPriority:void 0;b==="style"?s.d.S(f,typeof y.precedence=="string"?y.precedence:void 0,{crossOrigin:v,integrity:x,fetchPriority:k}):b==="script"&&s.d.X(f,{crossOrigin:v,integrity:x,fetchPriority:k,nonce:typeof y.nonce=="string"?y.nonce:void 0})}},Xt.preinitModule=function(f,y){if(typeof f=="string")if(typeof y=="object"&&y!==null){if(y.as==null||y.as==="script"){var b=h(y.as,y.crossOrigin);s.d.M(f,{crossOrigin:b,integrity:typeof y.integrity=="string"?y.integrity:void 0,nonce:typeof y.nonce=="string"?y.nonce:void 0})}}else y==null&&s.d.M(f)},Xt.preload=function(f,y){if(typeof f=="string"&&typeof y=="object"&&y!==null&&typeof y.as=="string"){var b=y.as,v=h(b,y.crossOrigin);s.d.L(f,b,{crossOrigin:v,integrity:typeof y.integrity=="string"?y.integrity:void 0,nonce:typeof y.nonce=="string"?y.nonce:void 0,type:typeof y.type=="string"?y.type:void 0,fetchPriority:typeof y.fetchPriority=="string"?y.fetchPriority:void 0,referrerPolicy:typeof y.referrerPolicy=="string"?y.referrerPolicy:void 0,imageSrcSet:typeof y.imageSrcSet=="string"?y.imageSrcSet:void 0,imageSizes:typeof y.imageSizes=="string"?y.imageSizes:void 0,media:typeof y.media=="string"?y.media:void 0})}},Xt.preloadModule=function(f,y){if(typeof f=="string")if(y){var b=h(y.as,y.crossOrigin);s.d.m(f,{as:typeof y.as=="string"&&y.as!=="script"?y.as:void 0,crossOrigin:b,integrity:typeof y.integrity=="string"?y.integrity:void 0})}else s.d.m(f)},Xt.requestFormReset=function(f){s.d.r(f)},Xt.unstable_batchedUpdates=function(f,y){return f(y)},Xt.useFormState=function(f,y,b){return m.H.useFormState(f,y,b)},Xt.useFormStatus=function(){return m.H.useHostTransitionStatus()},Xt.version="19.1.0",Xt}var u0;function tw(){if(u0)return mp.exports;u0=1;function e(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}return e(),mp.exports=Bj(),mp.exports}var m0;function Vj(){if(m0)return go;m0=1;var e=Fj(),t=bd(),r=tw();function s(a){var n="https://react.dev/errors/"+a;if(1<arguments.length){n+="?args[]="+encodeURIComponent(arguments[1]);for(var i=2;i<arguments.length;i++)n+="&args[]="+encodeURIComponent(arguments[i])}return"Minified React error #"+a+"; visit "+n+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function c(a){return!(!a||a.nodeType!==1&&a.nodeType!==9&&a.nodeType!==11)}function d(a){var n=a,i=a;if(a.alternate)for(;n.return;)n=n.return;else{a=n;do n=a,(n.flags&4098)!==0&&(i=n.return),a=n.return;while(a)}return n.tag===3?i:null}function m(a){if(a.tag===13){var n=a.memoizedState;if(n===null&&(a=a.alternate,a!==null&&(n=a.memoizedState)),n!==null)return n.dehydrated}return null}function h(a){if(d(a)!==a)throw Error(s(188))}function f(a){var n=a.alternate;if(!n){if(n=d(a),n===null)throw Error(s(188));return n!==a?null:a}for(var i=a,u=n;;){var p=i.return;if(p===null)break;var g=p.alternate;if(g===null){if(u=p.return,u!==null){i=u;continue}break}if(p.child===g.child){for(g=p.child;g;){if(g===i)return h(p),a;if(g===u)return h(p),n;g=g.sibling}throw Error(s(188))}if(i.return!==u.return)i=p,u=g;else{for(var w=!1,j=p.child;j;){if(j===i){w=!0,i=p,u=g;break}if(j===u){w=!0,u=p,i=g;break}j=j.sibling}if(!w){for(j=g.child;j;){if(j===i){w=!0,i=g,u=p;break}if(j===u){w=!0,u=g,i=p;break}j=j.sibling}if(!w)throw Error(s(189))}}if(i.alternate!==u)throw Error(s(190))}if(i.tag!==3)throw Error(s(188));return i.stateNode.current===i?a:n}function y(a){var n=a.tag;if(n===5||n===26||n===27||n===6)return a;for(a=a.child;a!==null;){if(n=y(a),n!==null)return n;a=a.sibling}return null}var b=Object.assign,v=Symbol.for("react.element"),x=Symbol.for("react.transitional.element"),k=Symbol.for("react.portal"),E=Symbol.for("react.fragment"),C=Symbol.for("react.strict_mode"),N=Symbol.for("react.profiler"),q=Symbol.for("react.provider"),R=Symbol.for("react.consumer"),I=Symbol.for("react.context"),$=Symbol.for("react.forward_ref"),z=Symbol.for("react.suspense"),G=Symbol.for("react.suspense_list"),L=Symbol.for("react.memo"),D=Symbol.for("react.lazy"),ee=Symbol.for("react.activity"),ne=Symbol.for("react.memo_cache_sentinel"),me=Symbol.iterator;function pe(a){return a===null||typeof a!="object"?null:(a=me&&a[me]||a["@@iterator"],typeof a=="function"?a:null)}var Re=Symbol.for("react.client.reference");function Ee(a){if(a==null)return null;if(typeof a=="function")return a.$$typeof===Re?null:a.displayName||a.name||null;
vendor: 15,423 bytes, lines 1-8
1if(typeof a=="string")return a;switch(a){case E:return"Fragment";case N:return"Profiler";case C:return"StrictMode";case z:return"Suspense";case G:return"SuspenseList";case ee:return"Activity"}if(typeof a=="object")switch(a.$$typeof){case k:return"Portal";case I:return(a.displayName||"Context")+".Provider";case R:return(a._context.displayName||"Context")+".Consumer";case $:var n=a.render;return a=a.displayName,a||(a=n.displayName||n.name||"",a=a!==""?"ForwardRef("+a+")":"ForwardRef"),a;case L:return n=a.displayName||null,n!==null?n:Ee(a.type)||"Memo";case D:n=a._payload,a=a._init;try{return Ee(a(n))}catch{}}return null}var Ae=Array.isArray,V=t.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,Y=r.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,ce={pending:!1,data:null,method:null,action:null},de=[],T=-1;function W(a){return{current:a}}function ie(a){0>T||(a.current=de[T],de[T]=null,T--)}function oe(a,n){T++,de[T]=a.current,a.current=n}var we=W(null),fe=W(null),he=W(null),ze=W(null);function Ie(a,n){switch(oe(he,n),oe(fe,a),oe(we,null),n.nodeType){case 9:case 11:a=(a=n.documentElement)&&(a=a.namespaceURI)?Pv(a):0;break;default:if(a=n.tagName,n=n.namespaceURI)n=Pv(n),a=_v(n,a);else switch(a){case"svg":a=1;break;case"math":a=2;break;default:a=0}}ie(we),oe(we,a)}function et(){ie(we),ie(fe),ie(he)}function ia(a){a.memoizedState!==null&&oe(ze,a);var n=we.current,i=_v(n,a.type);n!==i&&(oe(fe,a),oe(we,i))}function oa(a){fe.current===a&&(ie(we),ie(fe)),ze.current===a&&(ie(ze),co._currentValue=ce)}var Ea=Object.prototype.hasOwnProperty,za=e.unstable_scheduleCallback,Xa=e.unstable_cancelCallback,le=e.unstable_shouldYield,Ue=e.unstable_requestPaint,Ce=e.unstable_now,Ze=e.unstable_getCurrentPriorityLevel,Pe=e.unstable_ImmediatePriority,Qe=e.unstable_UserBlockingPriority,pt=e.unstable_NormalPriority,Za=e.unstable_LowPriority,Ja=e.unstable_IdlePriority,tl=e.log,Qd=e.unstable_setDisableYieldValue,yi=null,ga=null;function Un(a){if(typeof tl=="function"&&Qd(a),ga&&typeof ga.setStrictMode=="function")try{ga.setStrictMode(yi,a)}catch{}}var ya=Math.clz32?Math.clz32:kC,xC=Math.log,wC=Math.LN2;function kC(a){return a>>>=0,a===0?32:31-(xC(a)/wC|0)|0}var al=256,nl=4194304;function Cr(a){var n=a&42;if(n!==0)return n;switch(a&-a){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:case 262144:case 524288:case 1048576:case 2097152:return a&4194048;case 4194304:case 8388608:case 16777216:case 33554432:return a&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return a}}function rl(a,n,i){var u=a.pendingLanes;if(u===0)return 0;var p=0,g=a.suspendedLanes,w=a.pingedLanes;a=a.warmLanes;var j=u&134217727;return j!==0?(u=j&~g,u!==0?p=Cr(u):(w&=j,w!==0?p=Cr(w):i||(i=j&~a,i!==0&&(p=Cr(i))))):(j=u&~g,j!==0?p=Cr(j):w!==0?p=Cr(w):i||(i=u&~a,i!==0&&(p=Cr(i)))),p===0?0:n!==0&&n!==p&&(n&g)===0&&(g=p&-p,i=n&-n,g>=i||g===32&&(i&4194048)!==0)?n:p}function bi(a,n){return(a.pendingLanes&~(a.suspendedLanes&~a.pingedLanes)&n)===0}function SC(a,n){switch(a){case 1:case 2:case 4:case 8:case 64:return n+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 n+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 fg(){var a=al;return al<<=1,(al&4194048)===0&&(al=256),a}function gg(){var a=nl;return nl<<=1,(nl&62914560)===0&&(nl=4194304),a}function Yd(a){for(var n=[],i=0;31>i;i++)n.push(a);return n}function vi(a,n){a.pendingLanes|=n,n!==268435456&&(a.suspendedLanes=0,a.pingedLanes=0,a.warmLanes=0)}function CC(a,n,i,u,p,g){var w=a.pendingLanes;a.pendingLanes=i,a.suspendedLanes=0,a.pingedLanes=0,a.warmLanes=0,a.expiredLanes&=i,a.entangledLanes&=i,a.errorRecoveryDisabledLanes&=i,a.shellSuspendCounter=0;var j=a.entanglements,U=a.expirationTimes,H=a.hiddenUpdates;for(i=w&~i;0<i;){var te=31-ya(i),re=1<<te;j[te]=0,U[te]=-1;var Q=H[te];if(Q!==null)for(H[te]=null,te=0;te<Q.length;te++){var X=Q[te];X!==null&&(X.lane&=-536870913)}i&=~re}u!==0&&yg(a,u,0),g!==0&&p===0&&a.tag!==0&&(a.suspendedLanes|=g&~(w&~n))}function yg(a,n,i){a.pendingLanes|=n,a.suspendedLanes&=~n;var u=31-ya(n);a.entangledLanes|=n,a.entanglements[u]=a.entanglements[u]|1073741824|i&4194090}function bg(a,n){var i=a.entangledLanes|=n;for(a=a.entanglements;i;){var u=31-ya(i),p=1<<u;p&n|a[u]&n&&(a[u]|=n),i&=~p}}function Xd(a){switch(a){case 2:a=1;break;case 8:a=4;break;case 32:a=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:a=128;break;case 268435456:a=134217728;break;default:a=0}return a}function Zd(a){return a&=-a,2<a?8<a?(a&134217727)!==0?32:268435456:8:2}function vg(){var a=Y.p;return a!==0?a:(a=window.event,a===void 0?32:Zv(a.type))}function jC(a,n){var i=Y.p;try{return Y.p=a,n()}finally{Y.p=i}}var Dn=Math.random().toString(36).slice(2),Qt="__reactFiber$"+Dn,la="__reactProps$"+Dn,cs="__reactContainer$"+Dn,Jd="__reactEvents$"+Dn,AC="__reactListeners$"+Dn,qC="__reactHandles$"+Dn,xg="__reactResources$"+Dn,xi="__reactMarker$"+Dn;function eu(a){delete a[Qt],delete a[la],delete a[Jd],delete a[AC],delete a[qC]}function ds(a){var n=a[Qt];if(n)return n;for(var i=a.parentNode;i;){if(n=i[cs]||i[Qt]){if(i=n.alternate,n.child!==null||i!==null&&i.child!==null)for(a=Dv(a);a!==null;){if(i=a[Qt])return i;a=Dv(a)}return n}a=i,i=a.parentNode}return null}function us(a){if(a=a[Qt]||a[cs]){var n=a.tag;if(n===5||n===6||n===13||n===26||n===27||n===3)return a}return null}function wi(a){var n=a.tag;if(n===5||n===26||n===27||n===6)return a.stateNode;throw Error(s(33))}function ms(a){var n=a[xg];return n||(n=a[xg]={hoistableStyles:new Map,hoistableScripts:new Map}),n}function Dt(a){a[xi]=!0}var wg=new Set,kg={};function jr(a,n){ps(a,n),ps(a+"Capture",n)}function ps(a,n){for(kg[a]=n,a=0;a<n.length;a++)wg.add(n[a])}var EC=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]*$"),Sg={},Cg={};function NC(a){return Ea.call(Cg,a)?!0:Ea.call(Sg,a)?!1:EC.test(a)?Cg[a]=!0:(Sg[a]=!0,!1)}function sl(a,n,i){if(NC(n))if(i===null)a.removeAttribute(n);else{switch(typeof i){case"undefined":case"function":case"symbol":a.removeAttribute(n);return;case"boolean":var u=n.toLowerCase().slice(0,5);if(u!=="data-"&&u!=="aria-"){a.removeAttribute(n);return}}a.setAttribute(n,""+i)}}function il(a,n,i){if(i===null)a.removeAttribute(n);else{switch(typeof i){case"undefined":case"function":case"symbol":case"boolean":a.removeAttribute(n);return}a.setAttribute(n,""+i)}}function pn(a,n,i,u){if(u===null)a.removeAttribute(i);else{switch(typeof u){case"undefined":case"function":case"symbol":case"boolean":a.removeAttribute(i);return}a.setAttributeNS(n,i,""+u)}}var tu,jg;function hs(a){if(tu===void 0)try{throw Error()}catch(i){var n=i.stack.trim().match(/\n( *(at )?)/);tu=n&&n[1]||"",jg=-1<i.stack.indexOf(` 2 at`)?" (<anonymous>)":-1<i.stack.indexOf("@")?"@unknown:0:0":""}return` 3`+tu+a+jg}var au=!1;function nu(a,n){if(!a||au)return"";au=!0;var i=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var u={DetermineComponentFrameRoot:function(){try{if(n){var re=function(){throw Error()};if(Object.defineProperty(re.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(re,[])}catch(X){var Q=X}Reflect.construct(a,[],re)}else{try{re.call()}catch(X){Q=X}a.call(re.prototype)}}else{try{throw Error()}catch(X){Q=X}(re=a())&&typeof re.catch=="function"&&re.catch(function(){})}}catch(X){if(X&&Q&&typeof X.stack=="string")return[X.stack,Q.stack]}return[null,null]}};u.DetermineComponentFrameRoot.displayName="DetermineComponentFrameRoot";var p=Object.getOwnPropertyDescriptor(u.DetermineComponentFrameRoot,"name");p&&p.configurable&&Object.defineProperty(u.DetermineComponentFrameRoot,"name",{value:"DetermineComponentFrameRoot"});var g=u.DetermineComponentFrameRoot(),w=g[0],j=g[1];if(w&&j){var U=w.split(` 4`),H=j.split(` 5`);for(p=u=0;u<U.length&&!U[u].includes("DetermineComponentFrameRoot");)u++;for(;p<H.length&&!H[p].includes("DetermineComponentFrameRoot");)p++;if(u===U.length||p===H.length)for(u=U.length-1,p=H.length-1;1<=u&&0<=p&&U[u]!==H[p];)p--;for(;1<=u&&0<=p;u--,p--)if(U[u]!==H[p]){if(u!==1||p!==1)do if(u--,p--,0>p||U[u]!==H[p]){var te=` 6`+U[u].replace(" at new "," at ");return a.displayName&&te.includes("<anonymous>")&&(te=te.replace("<anonymous>",a.displayName)),te}while(1<=u&&0<=p);break}}}finally{au=!1,Error.prepareStackTrace=i}return(i=a?a.displayName||a.name:"")?hs(i):""}function TC(a){switch(a.tag){case 26:case 27:case 5:return hs(a.type);case 16:return hs("Lazy");case 13:return hs("Suspense");case 19:return hs("SuspenseList");case 0:case 15:return nu(a.type,!1);case 11:return nu(a.type.render,!1);case 1:return nu(a.type,!0);case 31:return hs("Activity");default:return""}}function Ag(a){try{var n="";do n+=TC(a),a=a.return;while(a);return n}catch(i){return` 7Error generating stack: `+i.message+` 8`+i.stack}}function Na(a){switch(typeof a){case"bigint":case"boolean":case"number":case"string":case"undefined":return a;case"object":return a;default:return""}}function qg(a){var n=a.type;return(a=a.nodeName)&&a.toLowerCase()==="input"&&(n==="checkbox"||n==="radio")}function MC(a){var n=qg(a)?"checked":"value",i=Object.getOwnPropertyDescriptor(a.constructor.prototype,n),u=""+a[n];if(!a.hasOwnProperty(n)&&typeof i<"u"&&typeof i.get=="function"&&typeof i.set=="function"){var p=i.get,g=i.set;return Object.defineProperty(a,n,{configurable:!0,get:function(){return p.call(this)},set:function(w){u=""+w,g.call(this,w)}}),Object.defineProperty(a,n,{enumerable:i.enumerable}),{getValue:function(){return u},setValue:function(w){u=""+w},stopTracking:function(){a._valueTracker=null,delete a[n]}}}}function ol(a){a._valueTracker||(a._valueTracker=MC(a))}function Eg(a){if(!a)return!1;var n=a._valueTracker;if(!n)return!0;var i=n.getValue(),u="";return a&&(u=qg(a)?a.checked?"true":"false":a.value),a=u,a!==i?(n.setValue(a),!0):!1}function ll(a){if(a=a||(typeof document<"u"?document:void 0),typeof a>"u")return null;try{return a.activeElement||a.body}catch{return a.body}}var PC=/[\n"\\]/g;function Ta(a){return a.replace(PC,function(n){return"\\"+n.charCodeAt(0).toString(16)+" "})}function ru(a,n,i,u,p,g,w,j){a.name="",w!=null&&typeof w!="function"&&typeof w!="symbol"&&typeof w!="boolean"?a.type=w:a.removeAttribute("type"),n!=null?w==="number"?(n===0&&a.value===""||a.value!=n)&&(a.value=""+Na(n)):a.value!==""+Na(n)&&(a.value=""+Na(n)):w!=="submit"&&w!=="reset"||a.removeAttribute("value"),n!=null?su(a,w,Na(n)):i!=null?su(a,w,Na(i)):u!=null&&a.removeAttribute("value"),p==null&&g!=null&&(a.defaultChecked=!!g),p!=null&&(a.checked=p&&typeof p!="function"&&typeof p!="symbol"),j!=null&&typeof j!="function"&&typeof j!="symbol"&&typeof j!="boolean"?a.name=""+Na(j):a.removeAttribute("name")}function Ng(a,n,i,u,p,g,w,j){if(g!=null&&typeof g!="function"&&typeof g!="symbol"&&typeof g!="boolean"&&(a.type=g),n!=null||i!=null){if(!(g!=="submit"&&g!=="reset"||n!=null))return;i=i!=null?""+Na(i):"",n=n!=null?""+Na(n):i,j||n===a.value||(a.value=n),a.defaultValue=n}u=u??p,u=typeof u!="function"&&typeof u!="symbol"&&!!u,a.checked=j?a.checked:!!u,a.defaultChecked=!!u,w!=null&&typeof w!="function"&&typeof w!="symbol"&&typeof w!="boolean"&&(a.name=w)}function su(a,n,i){n==="number"&&ll(a.ownerDocument)===a||a.defaultValue===""+i||(a.defaultValue=""+i)}function fs(a,n,i,u){if(a=a.options,n){n={};for(var p=0;p<i.length;p++)n["$"+i[p]]=!0;for(i=0;i<a.length;i++)p=n.hasOwnProperty("$"+a[i].value),a[i].selected!==p&&(a[i].selected=p),p&&u&&(a[i].defaultSelected=!0)}else{for(i=""+Na(i),n=null,p=0;p<a.length;p++){if(a[p].value===i){a[p].selected=!0,u&&(a[p].defaultSelected=!0);return}n!==null||a[p].disabled||(n=a[p])}n!==null&&(n.selected=!0)}}function Tg(a,n,i){if(n!=null&&(n=""+Na(n),n!==a.value&&(a.value=n),i==null)){a.defaultValue!==n&&(a.defaultValue=n);return}a.defaultValue=i!=null?""+Na(i):""}function Mg(a,n,i,u){if(n==null){if(u!=null){if(i!=null)throw Error(s(92));if(Ae(u)){if(1<u.length)throw Error(s(93));u=u[0]}i=u}i==null&&(i=""),n=i}i=Na(n),a.defaultValue=i,u=a.textContent,u===i&&u!==""&&u!==null&&(a.value=u)}function gs(a,n){if(n){var i=a.firstChild;if(i&&i===a.lastChild&&i.nodeType===3){i.nodeValue=n;return}}a.textContent=n}var _C=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 Pg(a,n,i){var u=n.indexOf("--")===0;i==null||typeof i=="boolean"||i===""?u?a.setProperty(n,""):n==="float"?a.cssFloat="":a[n]="":u?a.setProperty(n,i):typeof i!="number"||i===0||_C.has(n)?n==="float"?a.cssFloat=i:a[n]=(""+i).trim():a[n]=i+"px"}function _g(a,n,i){if(n!=null&&typeof n!="object")throw Error(s(62));if(a=a.style,i!=null){for(var u in i)!i.hasOwnProperty(u)||n!=null&&n.hasOwnProperty(u)||(u.indexOf("--")===0?a.setProperty(u,""):u==="float"?a.cssFloat="":a[u]="");for(var p in n)u=n[p],n.hasOwnProperty(p)&&i[p]!==u&&Pg(a,p,u)}else for(var g in n)n.hasOwnProperty(g)&&Pg(a,g,n[g])}function iu(a){if(a.indexOf("-")===-1)return!1;switch(a){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 RC=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"],["colorRen
8dering","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-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"]]),IC=/^[\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 cl(a){return IC.test(""+a)?"javascript:throw new Error('React has blocked a javascript: URL as a security precaution.')":a}var ou=null;function lu(a){return a=a.target||a.srcElement||window,a.correspondingUseElement&&(a=a.correspondingUseElement),a.nodeType===3?a.parentNode:a}var ys=null,bs=null;function Rg(a){var n=us(a);if(n&&(a=n.stateNode)){var i=a[la]||null;e:switch(a=n.stateNode,n.type){case"input":if(ru(a,i.value,i.defaultValue,i.defaultValue,i.checked,i.defaultChecked,i.type,i.name),n=i.name,i.type==="radio"&&n!=null){for(i=a;i.parentNode;)i=i.parentNode;for(i=i.querySelectorAll('input[name="'+Ta(""+n)+'"][type="radio"]'),n=0;n<i.length;n++){var u=i[n];if(u!==a&&u.form===a.form){var p=u[la]||null;if(!p)throw Error(s(90));ru(u,p.value,p.defaultValue,p.defaultValue,p.checked,p.defaultChecked,p.type,p.name)}}for(n=0;n<i.length;n++)u=i[n],u.form===a.form&&Eg(u)}break e;case"textarea":Tg(a,i.value,i.defaultValue);break e;case"select":n=i.value,n!=null&&fs(a,!!i.multiple,n,!1)}}}var cu=!1;function Ig(a,n,i){if(cu)return a(n,i);cu=!0;try{var u=a(n);return u}finally{if(cu=!1,(ys!==null||bs!==null)&&(Hl(),ys&&(n=ys,a=bs,bs=ys=null,Rg(n),a)))for(n=0;n<a.length;n++)Rg(a[n])}}function ki(a,n){var i=a.stateNode;if(i===null)return null;var u=i[la]||null;if(u===null)return null;i=u[n];e:switch(n){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(u=!u.disabled)||(a=a.type,u=!(a==="button"||a==="input"||a==="select"||a==="textarea")),a=!u;break e;default:a=!1}if(a)return null;if(i&&typeof i!="function")throw Error(s(231,n,typeof i));return i}var hn=!(typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),du=!1;if(hn)try{var Si={};Object.defineProperty(Si,"passive",{get:function(){du=!0}}),window.addEventListener("test",Si,Si),window.removeEventListener("test",Si,Si)}catch{du=!1}var On=null,uu=null,dl=null;function Ug(){if(dl)return dl;var a,n=uu,i=n.length,u,p="value"in On?On.value:On.textContent,g=p.length;for(a=0;a<i&&n[a]===p[a];a++);var w=i-a;for(u=1;u<=w&&n[i-u]===p[g-u];u++);return dl=p.slice(a,1<u?1-u:void 0)}function ul(a){var n=a.keyCode;
vendor: 2,821 bytes, line 8
8return"charCode"in a?(a=a.charCode,a===0&&n===13&&(a=13)):a=n,a===10&&(a=13),32<=a||a===13?a:0}function ml(){return!0}function Dg(){return!1}function ca(a){function n(i,u,p,g,w){this._reactName=i,this._targetInst=p,this.type=u,this.nativeEvent=g,this.target=w,this.currentTarget=null;for(var j in a)a.hasOwnProperty(j)&&(i=a[j],this[j]=i?i(g):g[j]);return this.isDefaultPrevented=(g.defaultPrevented!=null?g.defaultPrevented:g.returnValue===!1)?ml:Dg,this.isPropagationStopped=Dg,this}return b(n.prototype,{preventDefault:function(){this.defaultPrevented=!0;var i=this.nativeEvent;i&&(i.preventDefault?i.preventDefault():typeof i.returnValue!="unknown"&&(i.returnValue=!1),this.isDefaultPrevented=ml)},stopPropagation:function(){var i=this.nativeEvent;i&&(i.stopPropagation?i.stopPropagation():typeof i.cancelBubble!="unknown"&&(i.cancelBubble=!0),this.isPropagationStopped=ml)},persist:function(){},isPersistent:ml}),n}var Ar={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(a){return a.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},pl=ca(Ar),Ci=b({},Ar,{view:0,detail:0}),UC=ca(Ci),mu,pu,ji,hl=b({},Ci,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:fu,button:0,buttons:0,relatedTarget:function(a){return a.relatedTarget===void 0?a.fromElement===a.srcElement?a.toElement:a.fromElement:a.relatedTarget},movementX:function(a){return"movementX"in a?a.movementX:(a!==ji&&(ji&&a.type==="mousemove"?(mu=a.screenX-ji.screenX,pu=a.screenY-ji.screenY):pu=mu=0,ji=a),mu)},movementY:function(a){return"movementY"in a?a.movementY:pu}}),Og=ca(hl),DC=b({},hl,{dataTransfer:0}),OC=ca(DC),LC=b({},Ci,{relatedTarget:0}),hu=ca(LC),zC=b({},Ar,{animationName:0,elapsedTime:0,pseudoElement:0}),FC=ca(zC),$C=b({},Ar,{clipboardData:function(a){return"clipboardData"in a?a.clipboardData:window.clipboardData}}),BC=ca($C),VC=b({},Ar,{data:0}),Lg=ca(VC),WC={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},GC={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"},KC={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function HC(a){var n=this.nativeEvent;return n.getModifierState?n.getModifierState(a):(a=KC[a])?!!n[a]:!1}function fu(){return HC}var QC=b({},Ci,{key:function(a){if(a.key){var n=WC[a.key]||a.key;if(n!=="Unidentified")return n}
vendor: 5,186 bytes, line 8
8return a.type==="keypress"?(a=ul(a),a===13?"Enter":String.fromCharCode(a)):a.type==="keydown"||a.type==="keyup"?GC[a.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:fu,charCode:function(a){return a.type==="keypress"?ul(a):0},keyCode:function(a){return a.type==="keydown"||a.type==="keyup"?a.keyCode:0},which:function(a){return a.type==="keypress"?ul(a):a.type==="keydown"||a.type==="keyup"?a.keyCode:0}}),YC=ca(QC),XC=b({},hl,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),zg=ca(XC),ZC=b({},Ci,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:fu}),JC=ca(ZC),e3=b({},Ar,{propertyName:0,elapsedTime:0,pseudoElement:0}),t3=ca(e3),a3=b({},hl,{deltaX:function(a){return"deltaX"in a?a.deltaX:"wheelDeltaX"in a?-a.wheelDeltaX:0},deltaY:function(a){return"deltaY"in a?a.deltaY:"wheelDeltaY"in a?-a.wheelDeltaY:"wheelDelta"in a?-a.wheelDelta:0},deltaZ:0,deltaMode:0}),n3=ca(a3),r3=b({},Ar,{newState:0,oldState:0}),s3=ca(r3),i3=[9,13,27,32],gu=hn&&"CompositionEvent"in window,Ai=null;hn&&"documentMode"in document&&(Ai=document.documentMode);var o3=hn&&"TextEvent"in window&&!Ai,Fg=hn&&(!gu||Ai&&8<Ai&&11>=Ai),$g=" ",Bg=!1;function Vg(a,n){switch(a){case"keyup":return i3.indexOf(n.keyCode)!==-1;case"keydown":return n.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Wg(a){return a=a.detail,typeof a=="object"&&"data"in a?a.data:null}var vs=!1;function l3(a,n){switch(a){case"compositionend":return Wg(n);case"keypress":return n.which!==32?null:(Bg=!0,$g);case"textInput":return a=n.data,a===$g&&Bg?null:a;default:return null}}function c3(a,n){if(vs)return a==="compositionend"||!gu&&Vg(a,n)?(a=Ug(),dl=uu=On=null,vs=!1,a):null;switch(a){case"paste":return null;case"keypress":if(!(n.ctrlKey||n.altKey||n.metaKey)||n.ctrlKey&&n.altKey){if(n.char&&1<n.char.length)return n.char;if(n.which)return String.fromCharCode(n.which)}return null;case"compositionend":return Fg&&n.locale!=="ko"?null:n.data;default:return null}}var d3={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 Gg(a){var n=a&&a.nodeName&&a.nodeName.toLowerCase();return n==="input"?!!d3[a.type]:n==="textarea"}function Kg(a,n,i,u){ys?bs?bs.push(u):bs=[u]:ys=u,n=ec(n,"onChange"),0<n.length&&(i=new pl("onChange","change",null,i,u),a.push({event:i,listeners:n}))}var qi=null,Ei=null;function u3(a){qv(a,0)}function fl(a){var n=wi(a);if(Eg(n))return a}function Hg(a,n){if(a==="change")return n}var Qg=!1;if(hn){var yu;if(hn){var bu="oninput"in document;if(!bu){var Yg=document.createElement("div");Yg.setAttribute("oninput","return;"),bu=typeof Yg.oninput=="function"}yu=bu}else yu=!1;Qg=yu&&(!document.documentMode||9<document.documentMode)}function Xg(){qi&&(qi.detachEvent("onpropertychange",Zg),Ei=qi=null)}function Zg(a){if(a.propertyName==="value"&&fl(Ei)){var n=[];Kg(n,Ei,a,lu(a)),Ig(u3,n)}}function m3(a,n,i){a==="focusin"?(Xg(),qi=n,Ei=i,qi.attachEvent("onpropertychange",Zg)):a==="focusout"&&Xg()}function p3(a){if(a==="selectionchange"||a==="keyup"||a==="keydown")return fl(Ei)}function h3(a,n){if(a==="click")return fl(n)}function f3(a,n){if(a==="input"||a==="change")return fl(n)}function g3(a,n){return a===n&&(a!==0||1/a===1/n)||a!==a&&n!==n}var ba=typeof Object.is=="function"?Object.is:g3;function Ni(a,n){if(ba(a,n))return!0;if(typeof a!="object"||a===null||typeof n!="object"||n===null)return!1;var i=Object.keys(a),u=Object.keys(n);if(i.length!==u.length)return!1;for(u=0;u<i.length;u++){var p=i[u];if(!Ea.call(n,p)||!ba(a[p],n[p]))return!1}return!0}function Jg(a){for(;a&&a.firstChild;)a=a.firstChild;return a}function ey(a,n){var i=Jg(a);a=0;for(var u;i;){if(i.nodeType===3){if(u=a+i.textContent.length,a<=n&&u>=n)return{node:i,offset:n-a};a=u}e:{for(;i;){if(i.nextSibling){i=i.nextSibling;break e}i=i.parentNode}i=void 0}i=Jg(i)}}function ty(a,n){return a&&n?a===n?!0:a&&a.nodeType===3?!1:n&&n.nodeType===3?ty(a,n.parentNode):"contains"in a?a.contains(n):a.compareDocumentPosition?!!(a.compareDocumentPosition(n)&16):!1:!1}function ay(a){a=a!=null&&a.ownerDocument!=null&&a.ownerDocument.defaultView!=null?a.ownerDocument.defaultView:window;for(var n=ll(a.document);n instanceof a.HTMLIFrameElement;){try{var i=typeof n.contentWindow.location.href=="string"}catch{i=!1}if(i)a=n.contentWindow;else break;n=ll(a.document)}return n}function vu(a){var n=a&&a.nodeName&&a.nodeName.toLowerCase();return n&&(n==="input"&&(a.type==="text"||a.type==="search"||a.type==="tel"||a.type==="url"||a.type==="password")||n==="textarea"||a.contentEditable==="true")}var y3=hn&&"documentMode"in document&&11>=document.documentMode,xs=null,xu=null,Ti=null,wu=!1;function ny(a,n,i){var u=i.window===i?i.document:i.nodeType===9?i:i.ownerDocument;wu||xs==null||xs!==ll(u)||(u=xs,"selectionStart"in u&&vu(u)?u={start:u.selectionStart,end:u.selectionEnd}:(u=(u.ownerDocument&&u.ownerDocument.defaultView||window).getSelection(),u={anchorNode:u.anchorNode,anchorOffset:u.anchorOffset,focu
vendor: 53,809 bytes, line 8
8sNode:u.focusNode,focusOffset:u.focusOffset}),Ti&&Ni(Ti,u)||(Ti=u,u=ec(xu,"onSelect"),0<u.length&&(n=new pl("onSelect","select",null,n,i),a.push({event:n,listeners:u}),n.target=xs)))}function qr(a,n){var i={};return i[a.toLowerCase()]=n.toLowerCase(),i["Webkit"+a]="webkit"+n,i["Moz"+a]="moz"+n,i}var ws={animationend:qr("Animation","AnimationEnd"),animationiteration:qr("Animation","AnimationIteration"),animationstart:qr("Animation","AnimationStart"),transitionrun:qr("Transition","TransitionRun"),transitionstart:qr("Transition","TransitionStart"),transitioncancel:qr("Transition","TransitionCancel"),transitionend:qr("Transition","TransitionEnd")},ku={},ry={};hn&&(ry=document.createElement("div").style,"AnimationEvent"in window||(delete ws.animationend.animation,delete ws.animationiteration.animation,delete ws.animationstart.animation),"TransitionEvent"in window||delete ws.transitionend.transition);function Er(a){if(ku[a])return ku[a];if(!ws[a])return a;var n=ws[a],i;for(i in n)if(n.hasOwnProperty(i)&&i in ry)return ku[a]=n[i];return a}var sy=Er("animationend"),iy=Er("animationiteration"),oy=Er("animationstart"),b3=Er("transitionrun"),v3=Er("transitionstart"),x3=Er("transitioncancel"),ly=Er("transitionend"),cy=new Map,Su="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(" ");Su.push("scrollEnd");function Fa(a,n){cy.set(a,n),jr(n,[a])}var dy=new WeakMap;function Ma(a,n){if(typeof a=="object"&&a!==null){var i=dy.get(a);return i!==void 0?i:(n={value:a,source:n,stack:Ag(n)},dy.set(a,n),n)}return{value:a,source:n,stack:Ag(n)}}var Pa=[],ks=0,Cu=0;function gl(){for(var a=ks,n=Cu=ks=0;n<a;){var i=Pa[n];Pa[n++]=null;var u=Pa[n];Pa[n++]=null;var p=Pa[n];Pa[n++]=null;var g=Pa[n];if(Pa[n++]=null,u!==null&&p!==null){var w=u.pending;w===null?p.next=p:(p.next=w.next,w.next=p),u.pending=p}g!==0&&uy(i,p,g)}}function yl(a,n,i,u){Pa[ks++]=a,Pa[ks++]=n,Pa[ks++]=i,Pa[ks++]=u,Cu|=u,a.lanes|=u,a=a.alternate,a!==null&&(a.lanes|=u)}function ju(a,n,i,u){return yl(a,n,i,u),bl(a)}function Ss(a,n){return yl(a,null,null,n),bl(a)}function uy(a,n,i){a.lanes|=i;var u=a.alternate;u!==null&&(u.lanes|=i);for(var p=!1,g=a.return;g!==null;)g.childLanes|=i,u=g.alternate,u!==null&&(u.childLanes|=i),g.tag===22&&(a=g.stateNode,a===null||a._visibility&1||(p=!0)),a=g,g=g.return;return a.tag===3?(g=a.stateNode,p&&n!==null&&(p=31-ya(i),a=g.hiddenUpdates,u=a[p],u===null?a[p]=[n]:u.push(n),n.lane=i|536870912),g):null}function bl(a){if(50<to)throw to=0,Mm=null,Error(s(185));for(var n=a.return;n!==null;)a=n,n=a.return;return a.tag===3?a.stateNode:null}var Cs={};function w3(a,n,i,u){this.tag=a,this.key=i,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.refCleanup=this.ref=null,this.pendingProps=n,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=u,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function va(a,n,i,u){return new w3(a,n,i,u)}function Au(a){return a=a.prototype,!(!a||!a.isReactComponent)}function fn(a,n){var i=a.alternate;return i===null?(i=va(a.tag,n,a.key,a.mode),i.elementType=a.elementType,i.type=a.type,i.stateNode=a.stateNode,i.alternate=a,a.alternate=i):(i.pendingProps=n,i.type=a.type,i.flags=0,i.subtreeFlags=0,i.deletions=null),i.flags=a.flags&65011712,i.childLanes=a.childLanes,i.lanes=a.lanes,i.child=a.child,i.memoizedProps=a.memoizedProps,i.memoizedState=a.memoizedState,i.updateQueue=a.updateQueue,n=a.dependencies,i.dependencies=n===null?null:{lanes:n.lanes,firstContext:n.firstContext},i.sibling=a.sibling,i.index=a.index,i.ref=a.ref,i.refCleanup=a.refCleanup,i}function my(a,n){a.flags&=65011714;var i=a.alternate;return i===null?(a.childLanes=0,a.lanes=n,a.child=null,a.subtreeFlags=0,a.memoizedProps=null,a.memoizedState=null,a.updateQueue=null,a.dependencies=null,a.stateNode=null):(a.childLanes=i.childLanes,a.lanes=i.lanes,a.child=i.child,a.subtreeFlags=0,a.deletions=null,a.memoizedProps=i.memoizedProps,a.memoizedState=i.memoizedState,a.updateQueue=i.updateQueue,a.type=i.type,n=i.dependencies,a.dependencies=n===null?null:{lanes:n.lanes,firstContext:n.firstContext}),a}function vl(a,n,i,u,p,g){var w=0;if(u=a,typeof a=="function")Au(a)&&(w=1);else if(typeof a=="string")w=Sj(a,i,we.current)?26:a==="html"||a==="head"||a==="body"?27:5;else e:switch(a){case ee:return a=va(31,i,n,p),a.elementType=ee,a.lanes=g,a;case E:return Nr(i.children,p,g,n);case C:w=8,p|=24;break;case N:return a=va(12,i,n,p|2),a.elementType=N,a.lanes=g,a;case z:return a=va(13,i,n,p),a.elementType=z,a.lanes=g,a;case G:return a=va(19,i,n,p),a.elementType=G,a.lanes=g,a;default:if(typeof a=="object"&&a!==null)switch(a.$$typeof){case q:case I:w=10;break e;case R:w=9;break e;case $:w=11;break e;case L:w=14;break e;case D:w=16,u=null;break e}w=29,i=Error(s(130,a===null?"null":typeof a,"")),u=null}return n=va(w,i,n,p),n.elementType=a,n.type=u,n.lanes=g,n}function Nr(a,n,i,u){return a=va(7,a,u,n),a.lanes=i,a}function qu(a,n,i){return a=va(6,a,null,n),a.lanes=i,a}function Eu(a,n,i){return n=va(4,a.children!==null?a.children:[],a.key,n),n.lanes=i,n.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation},n}var js=[],As=0,xl=null,wl=0,_a=[],Ra=0,Tr=null,gn=1,yn="";function Mr(a,n){js[As++]=wl,js[As++]=xl,xl=a,wl=n}function py(a,n,i){_a[Ra++]=gn,_a[Ra++]=yn,_a[Ra++]=Tr,Tr=a;var u=gn;a=yn;var p=32-ya(u)-1;u&=~(1<<p),i+=1;var g=32-ya(n)+p;if(30<g){var w=p-p%5;g=(u&(1<<w)-1).toString(32),u>>=w,p-=w,gn=1<<32-ya(n)+p|i<<p|u,yn=g+a}else gn=1<<g|i<<p|u,yn=a}function Nu(a){a.return!==null&&(Mr(a,1),py(a,1,0))}function Tu(a){for(;a===xl;)xl=js[--As],js[As]=null,wl=js[--As],js[As]=null;for(;a===Tr;)Tr=_a[--Ra],_a[Ra]=null,yn=_a[--Ra],_a[Ra]=null,gn=_a[--Ra],_a[Ra]=null}var Zt=null,vt=null,tt=!1,Pr=null,en=!1,Mu=Error(s(519));function _r(a){var n=Error(s(418,""));throw _i(Ma(n,a)),Mu}function hy(a){var n=a.stateNode,i=a.type,u=a.memoizedProps;switch(n[Qt]=a,n[la]=u,i){case"dialog":Be("cancel",n),Be("close",n);break;case"iframe":case"object":case"embed":Be("load",n);break;case"video":case"audio":for(i=0;i<no.length;i++)Be(no[i],n);break;case"source":Be("error",n);break;case"img":case"image":case"link":Be("error",n),Be("load",n);break;case"details":Be("toggle",n);break;case"input":Be("invalid",n),Ng(n,u.value,u.defaultValue,u.checked,u.defaultChecked,u.type,u.name,!0),ol(n);break;case"select":Be("invalid",n);break;case"textarea":Be("invalid",n),Mg(n,u.value,u.defaultValue,u.children),ol(n)}i=u.children,typeof i!="string"&&typeof i!="number"&&typeof i!="bigint"||n.textContent===""+i||u.suppressHydrationWarning===!0||Mv(n.textContent,i)?(u.popover!=null&&(Be("beforetoggle",n),Be("toggle",n)),u.onScroll!=null&&Be("scroll",n),u.onScrollEnd!=null&&Be("scrollend",n),u.onClick!=null&&(n.onclick=tc),n=!0):n=!1,n||_r(a)}function fy(a){for(Zt=a.return;Zt;)switch(Zt.tag){case 5:case 13:en=!1;return;case 27:case 3:en=!0;return;default:Zt=Zt.return}}function Mi(a){if(a!==Zt)return!1;if(!tt)return fy(a),tt=!0,!1;var n=a.tag,i;if((i=n!==3&&n!==27)&&((i=n===5)&&(i=a.type,i=!(i!=="form"&&i!=="button")||Km(a.type,a.memoizedProps)),i=!i),i&&vt&&_r(a),fy(a),n===13){if(a=a.memoizedState,a=a!==null?a.dehydrated:null,!a)throw Error(s(317));e:{for(a=a.nextSibling,n=0;a;){if(a.nodeType===8)if(i=a.data,i==="/$"){if(n===0){vt=Ba(a.nextSibling);break e}n--}else i!=="$"&&i!=="$!"&&i!=="$?"||n++;a=a.nextSibling}vt=null}}else n===27?(n=vt,er(a.type)?(a=Xm,Xm=null,vt=a):vt=n):vt=Zt?Ba(a.stateNode.nextSibling):null;return!0}function Pi(){vt=Zt=null,tt=!1}function gy(){var a=Pr;return a!==null&&(ma===null?ma=a:ma.push.apply(ma,a),Pr=null),a}function _i(a){Pr===null?Pr=[a]:Pr.push(a)}var Pu=W(null),Rr=null,bn=null;function Ln(a,n,i){oe(Pu,n._currentValue),n._currentValue=i}function vn(a){a._currentValue=Pu.current,ie(Pu)}function _u(a,n,i){for(;a!==null;){var u=a.alternate;if((a.childLanes&n)!==n?(a.childLanes|=n,u!==null&&(u.childLanes|=n)):u!==null&&(u.childLanes&n)!==n&&(u.childLanes|=n),a===i)break;a=a.return}}function Ru(a,n,i,u){var p=a.child;for(p!==null&&(p.return=a);p!==null;){var g=p.dependencies;if(g!==null){var w=p.child;g=g.firstContext;e:for(;g!==null;){var j=g;g=p;for(var U=0;U<n.length;U++)if(j.context===n[U]){g.lanes|=i,j=g.alternate,j!==null&&(j.lanes|=i),_u(g.return,i,a),u||(w=null);break e}g=j.next}}else if(p.tag===18){if(w=p.return,w===null)throw Error(s(341));w.lanes|=i,g=w.alternate,g!==null&&(g.lanes|=i),_u(w,i,a),w=null}else w=p.child;if(w!==null)w.return=p;else for(w=p;w!==null;){if(w===a){w=null;break}if(p=w.sibling,p!==null){p.return=w.return,w=p;break}w=w.return}p=w}}function Ri(a,n,i,u){a=null;for(var p=n,g=!1;p!==null;){if(!g){if((p.flags&524288)!==0)g=!0;else if((p.flags&262144)!==0)break}if(p.tag===10){var w=p.alternate;if(w===null)throw Error(s(387));if(w=w.memoizedProps,w!==null){var j=p.type;ba(p.pendingProps.value,w.value)||(a!==null?a.push(j):a=[j])}}else if(p===ze.current){if(w=p.alternate,w===null)throw Error(s(387));w.memoizedState.memoizedState!==p.memoizedState.memoizedState&&(a!==null?a.push(co):a=[co])}p=p.return}a!==null&&Ru(n,a,i,u),n.flags|=262144}function kl(a){for(a=a.firstContext;a!==null;){if(!ba(a.context._currentValue,a.memoizedValue))return!0;a=a.next}return!1}function Ir(a){Rr=a,bn=null,a=a.dependencies,a!==null&&(a.firstContext=null)}function Yt(a){return yy(Rr,a)}function Sl(a,n){return Rr===null&&Ir(a),yy(a,n)}function yy(a,n){var i=n._currentValue;if(n={context:n,memoizedValue:i,next:null},bn===null){if(a===null)throw Error(s(308));bn=n,a.dependencies={lanes:0,firstContext:n},a.flags|=524288}else bn=bn.next=n;return i}var k3=typeof AbortController<"u"?AbortController:function(){var a=[],n=this.signal={aborted:!1,addEventListener:function(i,u){a.push(u)}};this.abort=function(){n.aborted=!0,a.forEach(function(i){return i()})}},S3=e.unstable_scheduleCallback,C3=e.unstable_NormalPriority,Mt={$$typeof:I,Consumer:null,Provider:null,_currentValue:null,_currentValue2:null,_threadCount:0};function Iu(){return{controller:new k3,data:new Map,refCount:0}}function Ii(a){a.refCount--,a.refCount===0&&S3(C3,function(){a.controller.abort()})}var Ui=null,Uu=0,qs=0,Es=null;function j3(a,n){if(Ui===null){var i=Ui=[];Uu=0,qs=Om(),Es={status:"pending",value:void 0,then:function(u){i.push(u)}}}return Uu++,n.then(by,by),n}function by(){if(--Uu===0&&Ui!==null){Es!==null&&(Es.status="fulfilled");var a=Ui;Ui=null,qs=0,Es=null;for(var n=0;n<a.length;n++)(0,a[n])()}}function A3(a,n){var i=[],u={status:"pending",value:null,reason:null,then:function(p){i.push(p)}};return a.then(function(){u.status="fulfilled",u.value=n;for(var p=0;p<i.length;p++)(0,i[p])(n)},function(p){for(u.status="rejected",u.reason=p,p=0;p<i.length;p++)(0,i[p])(void 0)}),u}var vy=V.S;V.S=function(a,n){typeof n=="object"&&n!==null&&typeof n.then=="function"&&j3(a,n),vy!==null&&vy(a,n)};var Ur=W(null);function Du(){var a=Ur.current;return a!==null?a:mt.pooledCache}function Cl(a,n){n===null?oe(Ur,Ur.current):oe(Ur,n.pool)}function xy(){var a=Du();return a===null?null:{parent:Mt._currentValue,pool:a}}var Di=Error(s(460)),wy=Error(s(474)),jl=Error(s(542)),Ou={then:function(){}};function ky(a){return a=a.status,a==="fulfilled"||a==="rejected"}function Al(){}function Sy(a,n,i){switch(i=a[i],i===void 0?a.push(n):i!==n&&(n.then(Al,Al),n=i),n.status){case"fulfilled":return n.value;case"rejected":throw a=n.reason,jy(a),a;default:if(typeof n.status=="string")n.then(Al,Al);else{if(a=mt,a!==null&&100<a.shellSuspendCounter)throw Error(s(482));a=n,a.status="pending",a.then(function(u){if(n.status==="pending"){var p=n;p.status="fulfilled",p.value=u}},function(u){if(n.status==="pending"){var p=n;p.status="rejected",p.reason=u}})}switch(n.status){case"fulfilled":return n.value;case"rejected":throw a=n.reason,jy(a),a}throw Oi=n,Di}}var Oi=null;function Cy(){if(Oi===null)throw Error(s(459));var a=Oi;return Oi=null,a}function jy(a){if(a===Di||a===jl)throw Error(s(483))}var zn=!1;function Lu(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function zu(a,n){a=a.updateQueue,n.updateQueue===a&&(n.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,callbacks:null})}function Fn(a){return{lane:a,tag:0,payload:null,callback:null,next:null}}function $n(a,n,i){var u=a.updateQueue;if(u===null)return null;if(u=u.shared,(nt&2)!==0){var p=u.pending;return p===null?n.next=n:(n.next=p.next,p.next=n),u.pending=n,n=bl(a),uy(a,null,i),n}return yl(a,u,n,i),bl(a)}function Li(a,n,i){if(n=n.updateQueue,n!==null&&(n=n.shared,(i&4194048)!==0)){var u=n.lanes;u&=a.pendingLanes,i|=u,n.lanes=i,bg(a,i)}}function Fu(a,n){var i=a.updateQueue,u=a.alternate;if(u!==null&&(u=u.updateQueue,i===u)){var p=null,g=null;if(i=i.firstBaseUpdate,i!==null){do{var w={lane:i.lane,tag:i.tag,payload:i.payload,callback:null,next:null};g===null?p=g=w:g=g.next=w,i=i.next}while(i!==null);g===null?p=g=n:g=g.next=n}else p=g=n;i={baseState:u.baseState,firstBaseUpdate:p,lastBaseUpdate:g,shared:u.shared,callbacks:u.callbacks},a.updateQueue=i;return}a=i.lastBaseUpdate,a===null?i.firstBaseUpdate=n:a.next=n,i.lastBaseUpdate=n}var $u=!1;function zi(){if($u){var a=Es;if(a!==null)throw a}}function Fi(a,n,i,u){$u=!1;var p=a.updateQueue;zn=!1;var g=p.firstBaseUpdate,w=p.lastBaseUpdate,j=p.shared.pending;if(j!==null){p.shared.pending=null;var U=j,H=U.next;U.next=null,w===null?g=H:w.next=H,w=U;var te=a.alternate;te!==null&&(te=te.updateQueue,j=te.lastBaseUpdate,j!==w&&(j===null?te.firstBaseUpdate=H:j.next=H,te.lastBaseUpdate=U))}if(g!==null){var re=p.baseState;w=0,te=H=U=null,j=g;do{var Q=j.lane&-536870913,X=Q!==j.lane;if(X?(Xe&Q)===Q:(u&Q)===Q){Q!==0&&Q===qs&&($u=!0),te!==null&&(te=te.next={lane:0,tag:j.tag,payload:j.payload,callback:null,next:null});e:{var Me=a,qe=j;Q=n;var ct=i;switch(qe.tag){case 1:if(Me=qe.payload,typeof Me=="function"){re=Me.call(ct,re,Q);break e}re=Me;break e;case 3:Me.flags=Me.flags&-65537|128;case 0:if(Me=qe.payload,Q=typeof Me=="function"?Me.call(ct,re,Q):Me,Q==null)break e;re=b({},re,Q);break e;case 2:zn=!0}}Q=j.callback,Q!==null&&(a.flags|=64,X&&(a.flags|=8192),X=p.callbacks,X===null?p.callbacks=[Q]:X.push(Q))}else X={lane:Q,tag:j.tag,payload:j.payload,callback:j.callback,next:null},te===null?(H=te=X,U=re):te=te.next=X,w|=Q;if(j=j.next,j===null){if(j=p.shared.pending,j===null)break;X=j,j=X.next,X.next=null,p.lastBaseUpdate=X,p.shared.pending=null}}while(!0);te===null&&(U=re),p.baseState=U,p.firstBaseUpdate=H,p.lastBaseUpdate=te,g===null&&(p.shared.lanes=0),Yn|=w,a.lanes=w,a.memoizedState=re}}function Ay(a,n){if(typeof a!="function")throw Error(s(191,a));a.call(n)}function qy(a,n){var i=a.callbacks;if(i!==null)for(a.callbacks=null,a=0;a<i.length;a++)Ay(i[a],n)}var Ns=W(null),ql=W(0);function Ey(a,n){a=An,oe(ql,a),oe(Ns,n),An=a|n.baseLanes}function Bu(){oe(ql,An),oe(Ns,Ns.current)}function Vu(){An=ql.current,ie(Ns),ie(ql)}var Bn=0,Oe=null,ot=null,qt=null,El=!1,Ts=!1,Dr=!1,Nl=0,$i=0,Ms=null,q3=0;function St(){throw Error(s(321))}function Wu(a,n){if(n===null)return!1;for(var i=0;i<n.length&&i<a.length;i++)if(!ba(a[i],n[i]))return!1;return!0}function Gu(a,n,i,u,p,g){return Bn=g,Oe=n,n.memoizedState=null,n.updateQueue=null,n.lanes=0,V.H=a===null||a.memoizedState===null?ub:mb,Dr=!1,g=i(u,p),Dr=!1,Ts&&(g=Ty(n,i,u,p)),Ny(a),g}function Ny(a){V.H=Il;var n=ot!==null&&ot.next!==null;if(Bn=0,qt=ot=Oe=null,El=!1,$i=0,Ms=null,n)throw Error(s(300));a===null||Ot||(a=a.dependencies,a!==null&&kl(a)&&(Ot=!0))}function Ty(a,n,i,u){Oe=a;var p=0;do{if(Ts&&(Ms=null),$i=0,Ts=!1,25<=p)throw Error(s(301));if(p+=1,qt=ot=null,a.updateQueue!=null){var g=a.updateQueue;g.lastEffect=null,g.events=null,g.stores=null,g.memoCache!=null&&(g.memoCache.index=0)}V.H=R3,g=n(i,u)}while(Ts);return g}function E3(){var a=V.H,n=a.useState()[0];return n=typeof n.then=="function"?Bi(n):n,a=a.useState()[0],(ot!==null?ot.memoizedState:null)!==a&&(Oe.flags|=1024),n}function Ku(){var a=Nl!==0;return Nl=0,a}function Hu(a,n,i){n.updateQueue=a.updateQueue,n.flags&=-2053,a.lanes&=~i}function Qu(a){if(El){for(a=a.memoizedState;a!==null;){var n=a.queue;n!==null&&(n.pending=null),a=a.next}El=!1}Bn=0,qt=ot=Oe=null,Ts=!1,$i=Nl=0,Ms=null}function da(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return qt===null?Oe.memoizedState=qt=a:qt=qt.next=a,qt}function Et(){if(ot===null){var a=Oe.alternate;a=a!==null?a.memoizedState:null}else a=ot.next;var n=qt===null?Oe.memoizedState:qt.next;if(n!==null)qt=n,ot=a;else{if(a===null)throw Oe.alternate===null?Error(s(467)):Error(s(310));ot=a,a={memoizedState:ot.memoizedState,baseState:ot.baseState,baseQueue:ot.baseQueue,queue:ot.queue,next:null},qt===null?Oe.memoizedState=qt=a:qt=qt.next=a}return qt}function Yu(){return{lastEffect:null,events:null,stores:null,memoCache:null}}function Bi(a){var n=$i;return $i+=1,Ms===null&&(Ms=[]),a=Sy(Ms,a,n),n=Oe,(qt===null?n.memoizedState:qt.next)===null&&(n=n.alternate,V.H=n===null||n.memoizedState===null?ub:mb),a}function Tl(a){if(a!==null&&typeof a=="object"){if(typeof a.then=="function")return Bi(a);if(a.$$typeof===I)return Yt(a)}throw Error(s(438,String(a)))}function Xu(a){var n=null,i=Oe.updateQueue;if(i!==null&&(n=i.memoCache),n==null){var u=Oe.alternate;u!==null&&(u=u.updateQueue,u!==null&&(u=u.memoCache,u!=null&&(n={data:u.data.map(function(p){return p.slice()}),index:0})))}if(n==null&&(n={data:[],index:0}),i===null&&(i=Yu(),Oe.updateQueue=i),i.memoCache=n,i=n.data[n.index],i===void 0)for(i=n.data[n.index]=Array(a),u=0;u<a;u++)i[u]=ne;return n.index++,i}function xn(a,n){return typeof n=="function"?n(a):n}function Ml(a){var n=Et();return Zu(n,ot,a)}function Zu(a,n,i){var u=a.queue;if(u===null)throw Error(s(311));u.lastRenderedReducer=i;var p=a.baseQueue,g=u.pending;if(g!==null){if(p!==null){var w=p.next;p.next=g.next,g.next=w}n.baseQueue=p=g,u.pending=null}if(g=a.baseState,p===null)a.memoizedState=g;else{n=p.next;var j=w=null,U=null,H=n,te=!1;do{var re=H.lane&-536870913;if(re!==H.lane?(Xe&re)===re:(Bn&re)===re){var Q=H.revertLane;if(Q===0)U!==null&&(U=U.next={lane:0,revertLane:0,action:H.action,hasEagerState:H.hasEagerState,eagerState:H.eagerState,next:null}),re===qs&&(te=!0);else if((Bn&Q)===Q){H=H.next,Q===qs&&(te=!0);continue}else re={lane:0,revertLane:H.revertLane,action:H.action,hasEagerState:H.hasEagerState,eagerState:H.eagerState,next:null},U===null?(j=U=re,w=g):U=U.next=re,Oe.lanes|=Q,Yn|=Q;re=H.action,Dr&&i(g,re),g=H.hasEagerState?H.eagerState:i(g,re)}else Q={lane:re,revertLane:H.revertLane,action:H.action,hasEagerState:H.hasEagerState,eagerState:H.eagerState,next:null},U===null?(j=U=Q,w=g):U=U.next=Q,Oe.lanes|=re,Yn|=re;H=H.next}while(H!==null&&H!==n);if(U===null?w=g:U.next=j,!ba(g,a.memoizedState)&&(Ot=!0,te&&(i=Es,i!==null)))throw i;a.memoizedState=g,a.baseState=w,a.baseQueue=U,u.lastRenderedState=g}return p===null&&(u.lanes=0),[a.memoizedState,u.dispatch]}function Ju(a){var n=Et(),i=n.queue;if(i===null)throw Error(s(311));i.lastRenderedReducer=a;var u=i.dispatch,p=i.pending,g=n.memoizedState;if(p!==null){i.pending=null;var w=p=p.next;do g=a(g,w.action),w=w.next;while(w!==p);ba(g,n.memoizedState)||(Ot=!0),n.memoizedState=g,n.baseQueue===null&&(n.baseState=g),i.lastRenderedState=g}return[g,u]}function My(a,n,i){var u=Oe,p=Et(),g=tt;if(g){if(i===void 0)throw Error(s(407));i=i()}else i=n();var w=!ba((ot||p).memoizedState,i);w&&(p.memoizedState=i,Ot=!0),p=p.queue;var j=Ry.bind(null,u,p,a);if(Vi(2048,8,j,[a]),p.getSnapshot!==n||w||qt!==null&&qt.memoizedState.tag&1){if(u.flags|=2048,Ps(9,Pl(),_y.bind(null,u,p,i,n),null),mt===null)throw Error(s(349));g||(Bn&124)!==0||Py(u,n,i)}return i}function Py(a,n,i){a.flags|=16384,a={getSnapshot:n,value:i},n=Oe.updateQueue,n===null?(n=Yu(),Oe.updateQueue=n,n.stores=[a]):(i=n.stores,i===null?n.stores=[a]:i.push(a))}function _y(a,n,i,u){n.value=i,n.getSnapshot=u,Iy(n)&&Uy(a)}function Ry(a,n,i){return i(function(){Iy(n)&&Uy(a)})}function Iy(a){var n=a.getSnapshot;a=a.value;try{var i=n();return!ba(a,i)}catch{return!0}}function Uy(a){var n=Ss(a,2);n!==null&&Ca(n,a,2)}function em(a){var n=da();if(typeof a=="function"){var i=a;if(a=i(),Dr){Un(!0);try{i()}finally{Un(!1)}}}return n.memoizedState=n.baseState=a,n.queue={pending:null,lanes:0,dispatch:null,lastRenderedReducer:xn,lastRenderedState:a},n}function Dy(a,n,i,u){return a.baseState=i,Zu(a,ot,typeof u=="function"?u:xn)}function N3(a,n,i,u,p){if(Rl(a))throw Error(s(485));if(a=n.action,a!==null){var g={payload:p,action:a,next:null,isTransition:!0,status:"pending",value:null,reason:null,listeners:[],then:function(w){g.listeners.push(w)}};V.T!==null?i(!0):g.isTransition=!1,u(g),i=n.pending,i===null?(g.next=n.pending=g,Oy(n,g)):(g.next=i.next,n.pending=i.next=g)}}function Oy(a,n){var i=n.action,u=n.payload,p=a.state;if(n.isTransition){var g=V.T,w={};V.T=w;try{var j=i(p,u),U=V.S;U!==null&&U(w,j),Ly(a,n,j)}catch(H){tm(a,n,H)}finally{V.T=g}}else try{g=i(p,u),Ly(a,n,g)}catch(H){tm(a,n,H)}}function Ly(a,n,i){i!==null&&typeof i=="object"&&typeof i.then=="function"?i.then(function(u){zy(a,n,u)},function(u){return tm(a,n,u)}):zy(a,n,i)}function zy(a,n,i){n.status="fulfilled",n.value=i,Fy(n),a.state=i,n=a.pending,n!==null&&(i=n.next,i===n?a.pending=null:(i=i.next,n.next=i,Oy(a,i)))}function tm(a,n,i){var u=a.pending;if(a.pending=null,u!==null){u=u.next;do n.status="rejected",n.reason=i,Fy(n),n=n.next;while(n!==u)}a.action=null}function Fy(a){a=a.listeners;for(var n=0;n<a.length;n++)(0,a[n])()}function $y(a,n){return n}function By(a,n){if(tt){var i=mt.formState;if(i!==null){e:{var u=Oe;if(tt){if(vt){t:{for(var p=vt,g=en;p.nodeType!==8;){if(!g){p=null;break t}if(p=Ba(p.nextSibling),p===null){p=null;break t}}g=p.data,p=g==="F!"||g==="F"?p:null}if(p){vt=Ba(p.nextSibling),u=p.data==="F!";break e}}_r(u)}u=!1}u&&(n=i[0])}}return i=da(),i.memoizedState=i.baseState=n,u={pending:null,lanes:0,dispatch:null,lastRenderedReducer:$y,lastRenderedState:n},i.queue=u,i=lb.bind(null,Oe,u),u.dispatch=i,u=em(!1),g=im.bind(null,Oe,!1,u.queue),u=da(),p={state:n,dispatch:null,action:a,pending:null},u.queue=p,i=N3.bind(null,Oe,p,g,i),p.dispatch=i,u.memoizedState=a,[n,i,!1]}function Vy(a){var n=Et();return Wy(n,ot,a)}function Wy(a,n,i){if(n=Zu(a,n,$y)[0],a=Ml(xn)[0],typeof n=="object"&&n!==null&&typeof n.then=="function")try{var u=Bi(n)}catch(w){throw w===Di?jl:w}else u=n;n=Et();var p=n.queue,g=p.dispatch;return i!==n.memoizedState&&(Oe.flags|=2048,Ps(9,Pl(),T3.bind(null,p,i),null)),[u,g,a]}function T3(a,n){a.action=n}function Gy(a){var n=Et(),i=ot;if(i!==null)return Wy(n,i,a);Et(),n=n.memoizedState,i=Et();var u=i.queue.dispatch;return i.memoizedState=a,[n,u,!1]}function Ps(a,n,i,u){return a={tag:a,create:i,deps:u,inst:n,next:null},n=Oe.updateQueue,n===null&&(n=Yu(),Oe.updateQueue=n),i=n.lastEffect,i===null?n.lastEffect=a.next=a:(u=i.next,i.next=a,a.next=u,n.lastEffect=a),a}function Pl(){return{destroy:void 0,resource:void 0}}function Ky(){return Et().memoizedState}function _l(a,n,i,u){var p=da();u=u===void 0?null:u,Oe.flags|=a,p.memoizedState=Ps(1|n,Pl(),i,u)}function Vi(a,n,i,u){var p=Et();u=u===void 0?null:u;var g=p.memoizedState.inst;ot!==null&&u!==null&&Wu(u,ot.memoizedState.deps)?p.memoizedState=Ps(n,g,i,u):(Oe.flags|=a,p.memoizedState=Ps(1|n,g,i,u))}function Hy(a,n){_l(8390656,8,a,n)}function Qy(a,n){Vi(2048,8,a,n)}function Yy(a,n){return Vi(4,2,a,n)}function Xy(a,n){return Vi(4,4,a,n)}function Zy(a,n){if(typeof n=="function"){a=a();var i=n(a);return function(){typeof i=="function"?i():n(null)}}if(n!=null)return a=a(),n.current=a,function(){n.current=null}}function Jy(a,n,i){i=i!=null?i.concat([a]):null,Vi(4,4,Zy.bind(null,n,a),i)}function am(){}function eb(a,n){var i=Et();n=n===void 0?null:n;var u=i.memoizedState;return n!==null&&Wu(n,u[1])?u[0]:(i.memoizedState=[a,n],a)}function tb(a,n){var i=Et();n=n===void 0?null:n;var u=i.memoizedState;if(n!==null&&Wu(n,u[1]))return u[0];if(u=a(),Dr){Un(!0);try{a()}finally{Un(!1)}}return i.memoizedState=[u,n],u}function nm(a,n,i){return i===void 0||(Bn&1073741824)!==0?a.memoizedState=n:(a.memoizedState=i,a=rv(),Oe.lanes|=a,Yn|=a,i)}function ab(a,n,i,u){return ba(i,n)?i:Ns.current!==null?(a=nm(a,i,u),ba(a,n)||(Ot=!0),a):(Bn&42)===0?(Ot=!0,a.memoizedState=i):(a=rv(),Oe.lanes|=a,Yn|=a,n)}function nb(a,n,i,u,p){var g=Y.p;Y.p=g!==0&&8>g?g:8;var w=V.T,j={};V.T=j,im(a,!1,n,i);try{var U=p(),H=V.S;if(H!==null&&H(j,U),U!==null&&typeof U=="object"&&typeof U.then=="function"){var te=A3(U,u);Wi(a,n,te,Sa(a))}else Wi(a,n,u,Sa(a))}catch(re){Wi(a,n,{then:function(){},status:"rejected",reason:re},Sa())}finally{Y.p=g,V.T=w}}function M3(){}function rm(a,n,i,u){if(a.tag!==5)throw Error(s(476));var p=rb(a).queue;nb(a,p,n,ce,i===null?M3:function(){return sb(a),i(u)})}function rb(a){var n=a.memoizedState;if(n!==null)return n;n={memoizedState:ce,baseState:ce,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:xn,lastRenderedState:ce},next:null};var i={};return n.next={memoizedState:i,baseState:i,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:xn,lastRenderedState:i},next:null},a.memoizedState=n,a=a.alternate,a!==null&&(a.memoizedState=n),n}function sb(a){var n=rb(a).next.queue;Wi(a,n,{},Sa())}function sm(){return Yt(co)}function ib(){return Et().memoizedState}function ob(){return Et().memoizedState}function P3(a){for(var n=a.return;n!==null;){switch(n.tag){case 24:case 3:var i=Sa();a=Fn(i);var u=$n(n,a,i);u!==null&&(Ca(u,n,i),Li(u,n,i)),n={cache:Iu()},a.payload=n;return}n=n.return}}function _3(a,n,i){var u=Sa();i={lane:u,revertLane:0,action:i,hasEagerState:!1,eagerState:null,next:null},Rl(a)?cb(n,i):(i=ju(a,n,i,u),i!==null&&(Ca(i,a,u),db(i,n,u)))}function lb(a,n,i){var u=Sa();Wi(a,n,i,u)}function Wi(a,n,i,u){var p={lane:u,revertLane:0,action:i,hasEagerState:!1,eagerState:null,next:null};if(Rl(a))cb(n,p);else{var g=a.alternate;if(a.lanes===0&&(g===null||g.lanes===0)&&(g=n.lastRenderedReducer,g!==null))try{var w=n.lastRenderedState,j=g(w,i);if(p.hasEagerState=!0,p.eagerState=j,ba(j,w))return yl(a,n,p,0),mt===null&&gl(),!1}catch{}if(i=ju(a,n,p,u),i!==null)return Ca(i,a,u),db(i,n,u),!0}return!1}function im(a,n,i,u){if(u={lane:2,revertLane:Om(),action:u,hasEagerState:!1,eagerState:null,next:null},Rl(a)){if(n)throw Error(s(479))}else n=ju(a,i,u,2),n!==null&&Ca(n,a,2)}function Rl(a){var n=a.alternate;return a===Oe||n!==null&&n===Oe}function cb(a,n){Ts=El=!0;var i=a.pending;i===null?n.next=n:(n.next=i.next,i.next=n),a.pending=n}function db(a,n,i){if((i&4194048)!==0){var u=n.lanes;u&=a.pendingLanes,i|=u,n.lanes=i,bg(a,i)}}var Il={readContext:Yt,use:Tl,useCallback:St,useContext:St,useEffect:St,useImperativeHandle:St,useLayoutEffect:St,useInsertionEffect:St,useMemo:St,useReducer:St,useRef:St,useState:St,useDebugValue:St,useDeferredValue:St,useTransition:St,useSyncExternalStore:St,useId:St,useHostTransitionStatus:St,useFormState:St,useActionState:St,useOptimistic:St,useMemoCache:St,useCacheRefresh:St},ub={readContext:Yt,use:Tl,useCallback:function(a,n){return da().memoizedState=[a,n===void 0?null:n],a},useContext:Yt,useEffect:Hy,useImperativeHandle:function(a,n,i){i=i!=null?i.concat([a]):null,_l(4194308,4,Zy.bind(null,n,a),i)},useLayoutEffect:function(a,n){return _l(4194308,4,a,n)},useInsertionEffect:function(a,n){_l(4,2,a,n)},useMemo:function(a,n){var i=da();n=n===void 0?null:n;var u=a();if(Dr){Un(!0);try{a()}finally{Un(!1)}}return i.memoizedState=[u,n],u},useReducer:function(a,n,i){var u=da();if(i!==void 0){var p=i(n);if(Dr){Un(!0);try{i(n)}finally{Un(!1)}}}else p=n;return u.memoizedState=u.baseState=p,a={pending:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:p},u.queue=a,a=a.dispatch=_3.bind(null,Oe,a),[u.memoizedState,a]},useRef:function(a){var n=da();return a={current:a},n.memoizedState=a},useState:function(a){a=em(a);var n=a.queue,i=lb.bind(null,Oe,n);return n.dispatch=i,[a.memoizedState,i]},useDebugValue:am,useDeferredValue:function(a,n){var i=da();return nm(i,a,n)},useTransition:function(){var a=em(!1);return a=nb.bind(null,Oe,a.queue,!0,!1),da().memoizedState=a,[!1,a]},useSyncExternalStore:function(a,n,i){var u=Oe,p=da();if(tt){if(i===void 0)throw Error(s(407));i=i()}else{if(i=n(),mt===null)throw Error(s(349));(Xe&124)!==0||Py(u,n,i)}p.memoizedState=i;var g={value:i,getSnapshot:n};return p.queue=g,Hy(Ry.bind(null,u,g,a),[a]),u.flags|=2048,Ps(9,Pl(),_y.bind(null,u,g,i,n),null),i},useId:function(){var a=da(),n=mt.identifierPrefix;if(tt){var i=yn,u=gn;i=(u&~(1<<32-ya(u)-1)).toString(32)+i,n="«"+n+"R"+i,i=Nl++,0<i&&(n+="H"+i.toString(32)),n+="»"}else i=q3++,n="«"+n+"r"+i.toString(32)+"»";return a.memoizedState=n},useHostTransitionStatus:sm,useFormState:By,useActionState:By,useOptimistic:function(a){var n=da();n.memoizedState=n.baseState=a;var i={pending:null,lanes:0,dispatch:null,lastRenderedReducer:null,lastRenderedState:null};return n.queue=i,n=im.bind(null,Oe,!0,i),i.dispatch=n,[a,n]},useMemoCache:Xu,useCacheRefresh:function(){return da().memoizedState=P3.bind(null,Oe)}},mb={readContext:Yt,use:Tl,useCallback:eb,useContext:Yt,useEffect:Qy,useImperativeHandle:Jy,useInsertionEffect:Yy,useLayoutEffect:Xy,useMemo:tb,useReducer:Ml,useRef:Ky,useState:function(){return Ml(xn)},useDebugValue:am,useDeferredValue:function(a,n){var i=Et();return ab(i,ot.memoizedState,a,n)},useTransition:function(){var a=Ml(xn)[0],n=Et().memoizedState;return[typeof a=="boolean"?a:Bi(a),n]},useSyncExternalStore:My,useId:ib,useHostTransitionStatus:sm,useFormState:Vy,useActionState:Vy,useOptimistic:function(a,n){var i=Et();return Dy(i,ot,a,n)},useMemoCache:Xu,useCacheRefresh:ob},R3={readContext:Yt,use:Tl,useCallback:eb,useContext:Yt,useEffect:Qy,useImperativeHandle:Jy,useInsertionEffect:Yy,useLayoutEffect:Xy,useMemo:tb,useReducer:Ju,useRef:Ky,useState:function(){return Ju(xn)},useDebugValue:am,useDeferredValue:function(a,n){var i=Et();return ot===null?nm(i,a,n):ab(i,ot.memoizedState,a,n)},useTransition:function(){var a=Ju(xn)[0],n=Et().memoizedState;return[typeof a=="boolean"?a:Bi(a),n]},useSyncExternalStore:My,useId:ib,useHostTransitionStatus:sm,useFormState:Gy,useActionState:Gy,useOptimistic:function(a,n){var i=Et();return ot!==null?Dy(i,ot,a,n):(i.baseState=a,[a,i.queue.dispatch])},useMemoCache:Xu,useCacheRefresh:ob},_s=null,Gi=0;function Ul(a){var n=Gi;return Gi+=1,_s===null&&(_s=[]),Sy(_s,a,n)}function Ki(a,n){n=n.props.ref,a.ref=n!==void 0?n:null}function Dl(a,n){throw n.$$typeof===v?Error(s(525)):(a=Object.prototype.toString.call(n),Error(s(31,a==="[object Object]"?"object with keys {"+Object.keys(n).join(", ")+"}":a)))}function pb(a){var n=a._init;return n(a._payload)}function hb(a){function n(B,F){if(a){var K=B.deletions;K===null?(B.deletions=[F],B.flags|=16):K.push(F)}}function i(B,F){if(!a)return null;for(;F!==null;)n(B,F),F=F.sibling;return null}function u(B){for(var F=new Map;B!==null;)B.key!==null?F.set(B.key,B):F.set(B.index,B),B=B.sibling;return F}function p(B,F){return B=fn(B,F),B.index=0,B.sibling=null,B}function g(B,F,K){return B.index=K,a?(K=B.alternate,K!==null?(K=K.index,K<F?(B.flags|=67108866,F):K):(B.flags|=67108866,F)):(B.flags|=1048576,F)}function w(B){return a&&B.alternate===null&&(B.flags|=67108866),B}function j(B,F,K,ae){return F===null||F.tag!==6?(F=qu(K,B.mode,ae),F.return=B,F):(F=p(F,K),F.return=B,F)}function U(B,F,K,ae){var ye=K.type;return ye===E?te(B,F,K.props.children,ae,K.key):F!==null&&(F.elementType===ye||typeof ye=="object"&&ye!==null&&ye.$$typeof===D&&pb(ye)===F.type)?(F=p(F,K.props),Ki(F,K),F.return=B,F):(F=vl(K.type,K.key,K.props,null,B.mode,ae),Ki(F,K),F.return=B,F)}function H(B,F,K,ae){return F===null||F.tag!==4||F.stateNode.containerInfo!==K.containerInfo||F.stateNode.implementation!==K.implementation?(F=Eu(K,B.mode,ae),F.return=B,F):(F=p(F,K.children||[]),F.return=B,F)}function te(B,F,K,ae,ye){return F===null||F.tag!==7?(F=Nr(K,B.mode,ae,ye),F.return=B,F):(F=p(F,K),F.return=B,F)}function re(B,F,K){if(typeof F=="string"&&F!==""||typeof F=="number"||typeof F=="bigint")return F=qu(""+F,B.mode,K),F.return=B,F;if(typeof F=="object"&&F!==null){switch(F.$$typeof){case x:return K=vl(F.type,F.key,F.props,null,B.mode,K),Ki(K,F),K.return=B,K;case k:return F=Eu(F,B.mode,K),F.return=B,F;case D:var ae=F._init;return F=ae(F._payload),re(B,F,K)}if(Ae(F)||pe(F))return F=Nr(F,B.mode,K,null),F.return=B,F;if(typeof F.then=="function")return re(B,Ul(F),K);if(F.$$typeof===I)return re(B,Sl(B,F),K);Dl(B,F)}return null}function Q(B,F,K,ae){var ye=F!==null?F.key:null;if(typeof K=="string"&&K!==""||typeof K=="number"||typeof K=="bigint")return ye!==null?null:j(B,F,""+K,ae);if(typeof K=="object"&&K!==null){switch(K.$$typeof){case x:return K.key===ye?U(B,F,K,ae):null;case k:return K.key===ye?H(B,F,K,ae):null;case D:return ye=K._init,K=ye(K._payload),Q(B,F,K,ae)}if(Ae(K)||pe(K))return ye!==null?null:te(B,F,K,ae,null);if(typeof K.then=="function")return Q(B,F,Ul(K),ae);if(K.$$typeof===I)return Q(B,F,Sl(B,K),ae);Dl(B,K)}return null}function X(B,F,K,ae,ye){if(typeof ae=="string"&&ae!==""||typeof ae=="number"||typeof ae=="bigint")return B=B.get(K)||null,j(F,B,""+ae,ye);if(typeof ae=="object"&&ae!==null){switch(ae.$$typeof){case x:return B=B.get(ae.key===null?K:ae.key)||null,U(F,B,ae,ye);case k:return B=B.get(ae.key===null?K:ae.key)||null,H(F,B,ae,ye);case D:var Fe=ae._init;return ae=Fe(ae._payload),X(B,F,K,ae,ye)}if(Ae(ae)||pe(ae))return B=B.get(K)||null,te(F,B,ae,ye,null);if(typeof ae.then=="function")return X(B,F,K,Ul(ae),ye);if(ae.$$typeof===I)return X(B,F,K,Sl(F,ae),ye);Dl(F,ae)}return null}function Me(B,F,K,ae){for(var ye=null,Fe=null,ke=F,Ne=F=0,zt=null;ke!==null&&Ne<K.length;Ne++){ke.index>Ne?(zt=ke,ke=null):zt=ke.sibling;var Je=Q(B,ke,K[Ne],ae);if(Je===null){ke===null&&(ke=zt);break}a&&ke&&Je.alternate===null&&n(B,ke),F=g(Je,F,Ne),Fe===null?ye=Je:Fe.sibling=Je,Fe=Je,ke=zt}if(Ne===K.length)return i(B,ke),tt&&Mr(B,Ne),ye;if(ke===null){for(;Ne<K.length;Ne++)ke=re(B,K[Ne],ae),ke!==null&&(F=g(ke,F,Ne),Fe===null?ye=ke:Fe.sibling=ke,Fe=ke);return tt&&Mr(B,Ne),ye}for(ke=u(ke);Ne<K.length;Ne++)zt=X(ke,B,Ne,K[Ne],ae),zt!==null&&(a&&zt.alternate!==null&&ke.delete(zt.key===null?Ne:zt.key),F=g(zt,F,Ne),Fe===null?ye=zt:Fe.sibling=zt,Fe=zt);return a&&ke.forEach(function(sr){return n(B,sr)}),tt&&Mr(B,Ne),ye}function qe(B,F,K,ae){if(K==null)throw Error(s(151));for(var ye=null,Fe=null,ke=F,Ne=F=0,zt=null,Je=K.next();ke!==null&&!Je.done;Ne++,Je=K.next()){ke.index>Ne?(zt=ke,ke=null):zt=ke.sibling;var sr=Q(B,ke,Je.value,ae);if(sr===null){ke===null&&(ke=zt);break}a&&ke&&sr.alternate===null&&n(B,ke),F=g(sr,F,Ne),Fe===null?ye=sr:Fe.sibling=sr,Fe=sr,ke=zt}if(Je.done)return i(B,ke),tt&&Mr(B,Ne),ye;if(ke===null){for(;!Je.done;Ne++,Je=K.next())Je=re(B,Je.value,ae),Je!==null&&(F=g(Je,F,Ne),Fe===null?ye=Je:Fe.sibling=Je,Fe=Je);return tt&&Mr(B,Ne),ye}for(ke=u(ke);!Je.done;Ne++,Je=K.next())Je=X(ke,B,Ne,Je.value,ae),Je!==null&&(a&&Je.alternate!==null&&ke.delete(Je.key===null?Ne:Je.key),F=g(Je,F,Ne),Fe===null?ye=Je:Fe.sibling=Je,Fe=Je);return a&&ke.forEach(function(Ij){return n(B,Ij)}),tt&&Mr(B,Ne),ye}function ct(B,F,K,ae){if(typeof K=="object"&&K!==null&&K.type===E&&K.key===null&&(K=K.props.children),typeof K=="object"&&K!==null){switch(K.$$typeof){case x:e:{for(var ye=K.key;F!==null;){if(F.key===ye){if(ye=K.type,ye===E){if(F.tag===7){i(B,F.sibling),ae=p(F,K.props.children),ae.return=B,B=ae;break e}}else if(F.elementType===ye||typeof ye=="object"&&ye!==null&&ye.$$typeof===D&&pb(ye)===F.type){i(B,F.sibling),ae=p(F,K.props),Ki(ae,K),ae.return=B,B=ae;break e}i(B,F);break}else n(B,F);F=F.sibling}K.type===E?(ae=Nr(K.props.children,B.mode,ae,K.key),ae.return=B,B=ae):(ae=vl(K.type,K.key,K.props,null,B.mode,ae),Ki(ae,K),ae.return=B,B=ae)}return w(B);case k:e:{for(ye=K.key;F!==null;){if(F.key===ye)if(F.tag===4&&F.stateNode.containerInfo===K.containerInfo&&F.stateNode.implementation===K.implementation){i(B,F.sibling),ae=p(F,K.children||[]),ae.return=B,B=ae;break e}else{i(B,F);break}else n(B,F);F=F.sibling}ae=Eu(K,B.mode,ae),ae.return=B,B=ae}return w(B);case D:return ye=K._init,K=ye(K._payload),ct(B,F,K,ae)}if(Ae(K))return Me(B,F,K,ae);if(pe(K)){if(ye=pe(K),typeof ye!="function")throw Error(s(150));return K=ye.call(K),qe(B,F,K,ae)}if(typeof K.then=="function")return ct(B,F,Ul(K),ae);if(K.$$typeof===I)return ct(B,F,Sl(B,K),ae);Dl(B,K)}return typeof K=="string"&&K!==""||typeof K=="number"||typeof K=="bigint"?(K=""+K,F!==null&&F.tag===6?(i(B,F.sibling),ae=p(F,K),ae.return=B,B=ae):(i(B,F),ae=qu(K,B.mode,ae),ae.return=B,B=ae),w(B)):i(B,F)}return function(B,F,K,ae){try{Gi=0;var ye=ct(B,F,K,ae);return _s=null,ye}catch(ke){if(ke===Di||ke===jl)throw ke;var Fe=va(29,ke,null,B.mode);return Fe.lanes=ae,Fe.return=B,Fe}}}var Rs=hb(!0),fb=hb(!1),Ia=W(null),tn=null;function Vn(a){var n=a.alternate;oe(Pt,Pt.current&1),oe(Ia,a),tn===null&&(n===null||Ns.current!==null||n.memoizedState!==null)&&(tn=a)}function gb(a){if(a.tag===22){if(oe(Pt,Pt.current),oe(Ia,a),tn===null){var n=a.alternate;n!==null&&n.memoizedState!==null&&(tn=a)}}else Wn()}function Wn(){oe(Pt,Pt.current),oe(Ia,Ia.current)}function wn(a){ie(Ia),tn===a&&(tn=null),ie(Pt)}var Pt=W(0);function Ol(a){for(var n=a;n!==null;){if(n.tag===13){var i=n.memoizedState;if(i!==null&&(i=i.dehydrated,i===null||i.data==="$?"||Ym(i)))return n}else if(n.tag===19&&n.memoizedProps.revealOrder!==void 0){if((n.flags&128)!==0)return n}else if(n.child!==null){n.child.return=n,n=n.child;continue}if(n===a)break;for(;n.sibling===null;){if(n.return===null||n.return===a)return null;n=n.return}n.sibling.return=n.return,n=n.sibling}return null}function om(a,n,i,u){n=a.memoizedState,i=i(u,n),i=i==null?n:b({},n,i),a.memoizedState=i,a.lanes===0&&(a.updateQueue.baseState=i)}var lm={enqueueSetState:function(a,n,i){a=a._reactInternals;var u=Sa(),p=Fn(u);p.payload=n,i!=null&&(p.callback=i),n=$n(a,p,u),n!==null&&(Ca(n,a,u),Li(n,a,u))},enqueueReplaceState:function(a,n,i){a=a._reactInternals;var u=Sa(),p=Fn(u);p.tag=1,p.payload=n,i!=null&&(p.callback=i),n=$n(a,p,u),n!==null&&(Ca(n,a,u),Li(n,a,u))},enqueueForceUpdate:function(a,n){a=a._reactInternals;var i=Sa(),u=Fn(i);u.tag=2,n!=null&&(u.callback=n),n=$n(a,u,i),n!==null&&(Ca(n,a,i),Li(n,a,i))}};function yb(a,n,i,u,p,g,w){return a=a.stateNode,typeof a.shouldComponentUpdate=="function"?a.shouldComponentUpdate(u,g,w):n.prototype&&n.prototype.isPureReactComponent?!Ni(i,u)||!Ni(p,g):!0}function bb(a,n,i,u){a=n.state,typeof n.componentWillReceiveProps=="function"&&n.componentWillReceiveProps(i,u),typeof n.UNSAFE_componentWillReceiveProps=="function"&&n.UNSAFE_componentWillReceiveProps(i,u),n.state!==a&&lm.enqueueReplaceState(n,n.state,null)}function Or(a,n){var i=n;if("ref"in n){i={};for(var u in n)u!=="ref"&&(i[u]=n[u])}if(a=a.defaultProps){i===n&&(i=b({},i));for(var p in a)i[p]===void 0&&(i[p]=a[p])}return i}var Ll=typeof reportError=="function"?reportError:function(a){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var n=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof a=="object"&&a!==null&&typeof a.message=="string"?String(a.message):String(a),error:a});if(!window.dispatchEvent(n))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",a);return}console.error(a)};function vb(a){Ll(a)}function xb(a){console.error(a)}function wb(a){Ll(a)}function zl(a,n){try{var i=a.onUncaughtError;i(n.value,{componentStack:n.stack})}catch(u){setTimeout(function(){throw u})}}function kb(a,n,i){try{var u=a.onCaughtError;u(i.value,{componentStack:i.stack,errorBoundary:n.tag===1?n.stateNode:null})}catch(p){setTimeout(function(){throw p})}}function cm(a,n,i){return i=Fn(i),i.tag=3,i.payload={element:null},i.callback=function(){zl(a,n)},i}function Sb(a){return a=Fn(a),a.tag=3,a}function Cb(a,n,i,u){var p=i.type.getDerivedStateFromError;if(typeof p=="function"){var g=u.value;a.payload=function(){return p(g)},a.callback=function(){kb(n,i,u)}}var w=i.stateNode;w!==null&&typeof w.componentDidCatch=="function"&&(a.callback=function(){kb(n,i,u),typeof p!="function"&&(Xn===null?Xn=new Set([this]):Xn.add(this));var j=u.stack;this.componentDidCatch(u.value,{componentStack:j!==null?j:""})})}function I3(a,n,i,u,p){if(i.flags|=32768,u!==null&&typeof u=="object"&&typeof u.then=="function"){if(n=i.alternate,n!==null&&Ri(n,i,p,!0),i=Ia.current,i!==null){switch(i.tag){case 13:return tn===null?_m():i.alternate===null&&xt===0&&(xt=3),i.flags&=-257,i.flags|=65536,i.lanes=p,u===Ou?i.flags|=16384:(n=i.updateQueue,n===null?i.updateQueue=new Set([u]):n.add(u),Im(a,u,p)),!1;case 22:return i.flags|=65536,u===Ou?i.flags|=16384:(n=i.updateQueue,n===null?(n={transitions:null,markerInstances:null,retryQueue:new Set([u])},i.updateQueue=n):(i=n.retryQueue,i===null?n.retryQueue=new Set([u]):i.add(u)),Im(a,u,p)),!1}throw Error(s(435,i.tag))}return Im(a,u,p),_m(),!1}if(tt)return n=Ia.current,n!==null?((n.flags&65536)===0&&(n.flags|=256),n.flags|=65536,n.lanes=p,u!==Mu&&(a=Error(s(422),{cause:u}),_i(Ma(a,i)))):(u!==Mu&&(n=Error(s(423),{cause:u}),_i(Ma(n,i))),a=a.current.alternate,a.flags|=65536,p&=-p,a.lanes|=p,u=Ma(u,i),p=cm(a.stateNode,u,p),Fu(a,p),xt!==4&&(xt=2)),!1;var g=Error(s(520),{cause:u});if(g=Ma(g,i),eo===null?eo=[g]:eo.push(g),xt!==4&&(xt=2),n===null)return!0;u=Ma(u,i),i=n;do{switch(i.tag){case 3:return i.flags|=65536,a=p&-p,i.lanes|=a,a=cm(i.stateNode,u,a),Fu(i,a),!1;case 1:if(n=i.type,g=i.stateNode,(i.flags&128)===0&&(typeof n.getDerivedStateFromError=="function"||g!==null&&typeof g.componentDidCatch=="function"&&(Xn===null||!Xn.has(g))))return i.flags|=65536,p&=-p,i.lanes|=p,p=Sb(p),Cb(p,a,i,u),Fu(i,p),!1}i=i.return}while(i!==null);return!1}var jb=Error(s(461)),Ot=!1;function Bt(a,n,i,u){n.child=a===null?fb(n,null,i,u):Rs(n,a.child,i,u)}function Ab(a,n,i,u,p){i=i.render;var g=n.ref;if("ref"in u){var w={};for(var j in u)j!=="ref"&&(w[j]=u[j])}else w=u;return Ir(n),u=Gu(a,n,i,w,g,p),j=Ku(),a!==null&&!Ot?(Hu(a,n,p),kn(a,n,p)):(tt&&j&&Nu(n),n.flags|=1,Bt(a,n,u,p),n.child)}function qb(a,n,i,u,p){if(a===null){var g=i.type;return typeof g=="function"&&!Au(g)&&g.defaultProps===void 0&&i.compare===null?(n.tag=15,n.type=g,Eb(a,n,g,u,p)):(a=vl(i.type,null,u,n,n.mode,p),a.ref=n.ref,a.return=n,n.child=a)}if(g=a.child,!ym(a,p)){var w=g.memoizedProps;if(i=i.compare,i=i!==null?i:Ni,i(w,u)&&a.ref===n.ref)return kn(a,n,p)}return n.flags|=1,a=fn(g,u),a.ref=n.ref,a.return=n,n.child=a}function Eb(a,n,i,u,p){if(a!==null){var g=a.memoizedProps;if(Ni(g,u)&&a.ref===n.ref)if(Ot=!1,n.pendingProps=u=g,ym(a,p))(a.flags&131072)!==0&&(Ot=!0);else return n.lanes=a.lanes,kn(a,n,p)}return dm(a,n,i,u,p)}function Nb(a,n,i){var u=n.pendingProps,p=u.children,g=a!==null?a.memoizedState:null;if(u.mode==="hidden"){if((n.flags&128)!==0){if(u=g!==null?g.baseLanes|i:i,a!==null){for(p=n.child=a.child,g=0;p!==null;)g=g|p.lanes|p.childLanes,p=p.sibling;n.childLanes=g&~u}else n.childLanes=0,n.child=null;return Tb(a,n,u,i)}if((i&536870912)!==0)n.memoizedState={baseLanes:0,cachePool:null},a!==null&&Cl(n,g!==null?g.cachePool:null),g!==null?Ey(n,g):Bu(),gb(n);else return n.lanes=n.childLanes=536870912,Tb(a,n,g!==null?g.baseLanes|i:i,i)}else g!==null?(Cl(n,g.cachePool),Ey(n,g),Wn(),n.memoizedState=null):(a!==null&&Cl(n,null),Bu(),Wn());return Bt(a,n,p,i),n.child}function Tb(a,n,i,u){var p=Du();return p=p===null?null:{parent:Mt._currentValue,pool:p},n.memoizedState={baseLanes:i,cachePool:p},a!==null&&Cl(n,null),Bu(),gb(n),a!==null&&Ri(a,n,u,!0),null}function Fl(a,n){var i=n.ref;if(i===null)a!==null&&a.ref!==null&&(n.flags|=4194816);else{if(typeof i!="function"&&typeof i!="object")throw Error(s(284));(a===null||a.ref!==i)&&(n.flags|=4194816)}}function dm(a,n,i,u,p){return Ir(n),i=Gu(a,n,i,u,void 0,p),u=Ku(),a!==null&&!Ot?(Hu(a,n,p),kn(a,n,p)):(tt&&u&&Nu(n),n.flags|=1,Bt(a,n,i,p),n.child)}function Mb(a,n,i,u,p,g){return Ir(n),n.updateQueue=null,i=Ty(n,u,i,p),Ny(a),u=Ku(),a!==null&&!Ot?(Hu(a,n,g),kn(a,n,g)):(tt&&u&&Nu(n),n.flags|=1,Bt(a,n,i,g),n.child)}function Pb(a,n,i,u,p){if(Ir(n),n.stateNode===null){var g=Cs,w=i.contextType;typeof w=="object"&&w!==null&&(g=Yt(w)),g=new i(u,g),n.memoizedState=g.state!==null&&g.state!==void 0?g.state:null,g.updater=lm,n.stateNode=g,g._reactInternals=n,g=n.stateNode,g.props=u,g.state=n.memoizedState,g.refs={},Lu(n),w=i.contextType,g.context=typeof w=="object"&&w!==null?Yt(w):Cs,g.state=n.memoizedState,w=i.getDerivedStateFromProps,typeof w=="function"&&(om(n,i,w,u),g.state=n.memoizedState),typeof i.getDerivedStateFromProps=="function"||typeof g.getSnapshotBeforeUpdate=="function"||typeof g.UNSAFE_componentWillMount!="function"&&typeof g.componentWillMount!="function"||(w=g.state,typeof g.componentWillMount=="function"&&g.componentWillMount(),typeof g.UNSAFE_componentWillMount=="function"&&g.UNSAFE_componentWillMount(),w!==g.state&&lm.enqueueReplaceState(g,g.state,null),Fi(n,u,g,p),zi(),g.state=n.memoizedState),typeof g.componentDidMount=="function"&&(n.flags|=4194308),u=!0}else if(a===null){g=n.stateNode;var j=n.memoizedProps,U=Or(i,j);g.props=U;var H=g.context,te=i.contextType;w=Cs,typeof te=="object"&&te!==null&&(w=Yt(te));var re=i.getDerivedStateFromProps;te=typeof re=="function"||typeof g.getSnapshotBeforeUpdate=="function",j=n.pendingProps!==j,te||typeof g.UNSAFE_componentWillReceiveProps!="function"&&typeof g.componentWillReceiveProps!="function"||(j||H!==w)&&bb(n,g,u,w),zn=!1;var Q=n.memoizedState;g.state=Q,Fi(n,u,g,p),zi(),H=n.memoizedState,j||Q!==H||zn?(typeof re=="function"&&(om(n,i,re,u),H=n.memoizedState),(U=zn||yb(n,i,U,u,Q,H,w))?(te||typeof g.UNSAFE_componentWillMount!="function"&&typeof g.componentWillMount!="function"||(typeof g.componentWillMount=="function"&&g.componentWillMount(),typeof g.UNSAFE_componentWillMount=="function"&&g.UNSAFE_componentWillMount()),typeof g.componentDidMount=="function"&&(n.flags|=4194308)):(typeof g.componentDidMount=="function"&&(n.flags|=4194308),n.memoizedProps=u,n.memoizedState=H),g.props=u,g.state=H,g.context=w,u=U):(typeof g.componentDidMount=="function"&&(n.flags|=4194308),u=!1)}else{g=n.stateNode,zu(a,n),w=n.memoizedProps,te=Or(i,w),g.props=te,re=n.pendingProps,Q=g.context,H=i.contextType,U=Cs,typeof H=="object"&&H!==null&&(U=Yt(H)),j=i.getDerivedStateFromProps,(H=typeof j=="function"||typeof g.getSnapshotBeforeUpdate=="function")||typeof g.UNSAFE_componentWillReceiveProps!="function"&&typeof g.componentWillReceiveProps!="function"||(w!==re||Q!==U)&&bb(n,g,u,U),zn=!1,Q=n.memoizedState,g.state=Q,Fi(n,u,g,p),zi();var X=n.memoizedState;w!==re||Q!==X||zn||a!==null&&a.dependencies!==null&&kl(a.dependencies)?(typeof j=="function"&&(om(n,i,j,u),X=n.memoizedState),(te=zn||yb(n,i,te,u,Q,X,U)||a!==null&&a.dependencies!==null&&kl(a.dependencies))?(H||typeof g.UNSAFE_componentWillUpdate!="function"&&typeof g.componentWillUpdate!="function"||(typeof g.componentWillUpdate=="function"&&g.componentWillUpdate(u,X,U),typeof g.UNSAFE_componentWillUpdate=="function"&&g.UNSAFE_componentWillUpdate(u,X,U)),typeof g.componentDidUpdate=="function"&&(n.flags|=4),typeof g.getSnapshotBeforeUpdate=="function"&&(n.flags|=1024)):(typeof g.componentDidUpdate!="function"||w===a.memoizedProps&&Q===a.memoizedState||(n.flags|=4),typeof g.getSnapshotBeforeUpdate!="function"||w===a.memoizedProps&&Q===a.memoizedState||(n.flags|=1024),n.memoizedProps=u,n.memoizedState=X),g.props=u,g.state=X,g.context=U,u=te):(typeof g.componentDidUpdate!="function"||w===a.memoizedProps&&Q===a.memoizedState||(n.flags|=4),typeof g.getSnapshotBeforeUpdate!="function"||w===a.memoizedProps&&Q===a.memoizedState||(n.flags|=1024),u=!1)}return g=u,Fl(a,n),u=(n.flags&128)!==0,g||u?(g=n.stateNode,i=u&&typeof i.getDerivedStateFromError!="function"?null:g.render(),n.flags|=1,a!==null&&u?(n.child=Rs(n,a.child,null,p),n.child=Rs(n,null,i,p)):Bt(a,n,i,p),n.memoizedState=g.state,a=n.child):a=kn(a,n,p),a}function _b(a,n,i,u){return Pi(),n.flags|=256,Bt(a,n,i,u),n.child}var um={dehydrated:null,treeContext:null,retryLane:0,hydrationErrors:null};function mm(a){return{baseLanes:a,cachePool:xy()}}function pm(a,n,i){return a=a!==null?a.childLanes&~i:0,n&&(a|=Ua),a}function Rb(a,n,i){var u=n.pendingProps,p=!1,g=(n.flags&128)!==0,w;if((w=g)||(w=a!==null&&a.memoizedState===null?!1:(Pt.current&2)!==0),w&&(p=!0,n.flags&=-129),w=(n.flags&32)!==0,n.flags&=-33,a===null){if(tt){if(p?Vn(n):Wn(),tt){var j=vt,U;if(U=j){e:{for(U=j,j=en;U.nodeType!==8;){if(!j){j=null;break e}if(U=Ba(U.nextSibling),U===null){j=null;break e}}j=U}j!==null?(n.memoizedState={dehydrated:j,treeContext:Tr!==null?{id:gn,overflow:yn}:null,retryLane:536870912,hydrationErrors:null},U=va(18,null,null,0),U.stateNode=j,U.return=n,n.child=U,Zt=n,vt=null,U=!0):U=!1}U||_r(n)}if(j=n.memoizedState,j!==null&&(j=j.dehydrated,j!==null))return Ym(j)?n.lanes=32:n.lanes=536870912,null;wn(n)}return j=u.children,u=u.fallback,p?(Wn(),p=n.mode,j=$l({mode:"hidden",children:j},p),u=Nr(u,p,i,null),j.return=n,u.return=n,j.sibling=u,n.child=j,p=n.child,p.memoizedState=mm(i),p.childLanes=pm(a,w,i),n.memoizedState=um,u):(Vn(n),hm(n,j))}if(U=a.memoizedState,U!==null&&(j=U.dehydrated,j!==null)){if(g)n.flags&256?(Vn(n),n.flags&=-257,n=fm(a,n,i)):n.memoizedState!==null?(Wn(),n.child=a.child,n.flags|=128,n=null):(Wn(),p=u.fallback,j=n.mode,u=$l({mode:"visible",children:u.children},j),p=Nr(p,j,i,null),p.flags|=2,u.return=n,p.return=n,u.sibling=p,n.child=u,Rs(n,a.child,null,i),u=n.child,u.memoizedState=mm(i),u.childLanes=pm(a,w,i),n.memoizedState=um,n=p);else if(Vn(n),Ym(j)){if(w=j.nextSibling&&j.nextSibling.dataset,w)var H=w.dgst;w=H,u=Error(s(419)),u.stack="",u.digest=w,_i({value:u,source:null,stack:null}),n=fm(a,n,i)}else if(Ot||Ri(a,n,i,!1),w=(i&a.childLanes)!==0,Ot||w){if(w=mt,w!==null&&(u=i&-i,u=(u&42)!==0?1:Xd(u),u=(u&(w.suspendedLanes|i))!==0?0:u,u!==0&&u!==U.retryLane))throw U.retryLane=u,Ss(a,u),Ca(w,a,u),jb;j.data==="$?"||_m(),n=fm(a,n,i)}else j.data==="$?"?(n.flags|=192,n.child=a.child,n=null):(a=U.treeContext,vt=Ba(j.nextSibling),Zt=n,tt=!0,Pr=null,en=!1,a!==null&&(_a[Ra++]=gn,_a[Ra++]=yn,_a[Ra++]=Tr,gn=a.id,yn=a.overflow,Tr=n),n=hm(n,u.children),n.flags|=4096);return n}return p?(Wn(),p=u.fallback,j=n.mode,U=a.child,H=U.sibling,u=fn(U,{mode:"hidden",children:u.children}),u.subtreeFlags=U.subtreeFlags&65011712,H!==null?p=fn(H,p):(p=Nr(p,j,i,null),p.flags|=2),p.return=n,u.return=n,u.sibling=p,n.child=u,u=p,p=n.child,j=a.child.memoizedState,j===null?j=mm(i):(U=j.cachePool,U!==null?(H=Mt._currentValue,U=U.parent!==H?{parent:H,pool:H}:U):U=xy(),j={baseLanes:j.baseLanes|i,cachePool:U}),p.memoizedState=j,p.childLanes=pm(a,w,i),n.memoizedState=um,u):(Vn(n),i=a.child,a=i.sibling,i=fn(i,{mode:"visible",children:u.children}),i.return=n,i.sibling=null,a!==null&&(w=n.deletions,w===null?(n.deletions=[a],n.flags|=16):w.push(a)),n.child=i,n.memoizedState=null,i)}function hm(a,n){return n=$l({mode:"visible",children:n},a.mode),n.return=a,a.child=n}function $l(a,n){return a=va(22,a,null,n),a.lanes=0,a.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null},a}function fm(a,n,i){return Rs(n,a.child,null,i),a=hm(n,n.pendingProps.children),a.flags|=2,n.memoizedState=null,a}function Ib(a,n,i){a.lanes|=n;var u=a.alternate;u!==null&&(u.lanes|=n),_u(a.return,n,i)}function gm(a,n,i,u,p){var g=a.memoizedState;g===null?a.memoizedState={isBackwards:n,rendering:null,renderingStartTime:0,last:u,tail:i,tailMode:p}:(g.isBackwards=n,g.rendering=null,g.renderingStartTime=0,g.last=u,g.tail=i,g.tailMode=p)}function Ub(a,n,i){var u=n.pendingProps,p=u.revealOrder,g=u.tail;if(Bt(a,n,u.children,i),u=Pt.current,(u&2)!==0)u=u&1|2,n.flags|=128;else{if(a!==null&&(a.flags&128)!==0)e:for(a=n.child;a!==null;){if(a.tag===13)a.memoizedState!==null&&Ib(a,i,n);else if(a.tag===19)Ib(a,i,n);else if(a.child!==null){a.child.return=a,a=a.child;continue}if(a===n)break e;for(;a.sibling===null;){if(a.return===null||a.return===n)break e;a=a.return}a.sibling.return=a.return,a=a.sibling}u&=1}switch(oe(Pt,u),p){case"forwards":for(i=n.child,p=null;i!==null;)a=i.alternate,a!==null&&Ol(a)===null&&(p=i),i=i.sibling;i=p,i===null?(p=n.child,n.child=null):(p=i.sibling,i.sibling=null),gm(n,!1,p,i,g);break;case"backwards":for(i=null,p=n.child,n.child=null;p!==null;){if(a=p.alternate,a!==null&&Ol(a)===null){n.child=p;break}a=p.sibling,p.sibling=i,i=p,p=a}gm(n,!0,i,null,g);break;case"together":gm(n,!1,null,null,void 0);break;default:n.memoizedState=null}return n.child}function kn(a,n,i){if(a!==null&&(n.dependencies=a.dependencies),Yn|=n.lanes,(i&n.childLanes)===0)if(a!==null){if(Ri(a,n,i,!1),(i&n.childLanes)===0)return null}else return null;if(a!==null&&n.child!==a.child)throw Error(s(153));if(n.child!==null){for(a=n.child,i=fn(a,a.pendingProps),n.child=i,i.return=n;a.sibling!==null;)a=a.sibling,i=i.sibling=fn(a,a.pendingProps),i.return=n;i.sibling=null}return n.child}function ym(a,n){return(a.lanes&n)!==0?!0:(a=a.dependencies,!!(a!==null&&kl(a)))}function U3(a,n,i){switch(n.tag){case 3:Ie(n,n.stateNode.containerInfo),Ln(n,Mt,a.memoizedState.cache),Pi();break;case 27:case 5:ia(n);break;case 4:Ie(n,n.stateNode.containerInfo);break;case 10:Ln(n,n.type,n.memoizedProps.value);break;case 13:var u=n.memoizedState;if(u!==null)return u.dehydrated!==null?(Vn(n),n.flags|=128,null):(i&n.child.childLanes)!==0?Rb(a,n,i):(Vn(n),a=kn(a,n,i),a!==null?a.sibling:null);Vn(n);break;case 19:var p=(a.flags&128)!==0;if(u=(i&n.childLanes)!==0,u||(Ri(a,n,i,!1),u=(i&n.childLanes)!==0),p){
vendor: 4,229 bytes, line 8
8if(u)return Ub(a,n,i);n.flags|=128}if(p=n.memoizedState,p!==null&&(p.rendering=null,p.tail=null,p.lastEffect=null),oe(Pt,Pt.current),u)break;return null;case 22:case 23:return n.lanes=0,Nb(a,n,i);case 24:Ln(n,Mt,a.memoizedState.cache)}return kn(a,n,i)}function Db(a,n,i){if(a!==null)if(a.memoizedProps!==n.pendingProps)Ot=!0;else{if(!ym(a,i)&&(n.flags&128)===0)return Ot=!1,U3(a,n,i);Ot=(a.flags&131072)!==0}else Ot=!1,tt&&(n.flags&1048576)!==0&&py(n,wl,n.index);switch(n.lanes=0,n.tag){case 16:e:{a=n.pendingProps;var u=n.elementType,p=u._init;if(u=p(u._payload),n.type=u,typeof u=="function")Au(u)?(a=Or(u,a),n.tag=1,n=Pb(null,n,u,a,i)):(n.tag=0,n=dm(null,n,u,a,i));else{if(u!=null){if(p=u.$$typeof,p===$){n.tag=11,n=Ab(null,n,u,a,i);break e}else if(p===L){n.tag=14,n=qb(null,n,u,a,i);break e}}throw n=Ee(u)||u,Error(s(306,n,""))}}return n;case 0:return dm(a,n,n.type,n.pendingProps,i);case 1:return u=n.type,p=Or(u,n.pendingProps),Pb(a,n,u,p,i);case 3:e:{if(Ie(n,n.stateNode.containerInfo),a===null)throw Error(s(387));u=n.pendingProps;var g=n.memoizedState;p=g.element,zu(a,n),Fi(n,u,null,i);var w=n.memoizedState;if(u=w.cache,Ln(n,Mt,u),u!==g.cache&&Ru(n,[Mt],i,!0),zi(),u=w.element,g.isDehydrated)if(g={element:u,isDehydrated:!1,cache:w.cache},n.updateQueue.baseState=g,n.memoizedState=g,n.flags&256){n=_b(a,n,u,i);break e}else if(u!==p){p=Ma(Error(s(424)),n),_i(p),n=_b(a,n,u,i);break e}else for(a=n.stateNode.containerInfo,a.nodeType===9?a=a.body:a=a.nodeName==="HTML"?a.ownerDocument.body:a,vt=Ba(a.firstChild),Zt=n,tt=!0,Pr=null,en=!0,i=fb(n,null,u,i),n.child=i;i;)i.flags=i.flags&-3|4096,i=i.sibling;else{if(Pi(),u===p){n=kn(a,n,i);break e}Bt(a,n,u,i)}n=n.child}return n;case 26:return Fl(a,n),a===null?(i=Fv(n.type,null,n.pendingProps,null))?n.memoizedState=i:tt||(i=n.type,a=n.pendingProps,u=ac(he.current).createElement(i),u[Qt]=n,u[la]=a,Wt(u,i,a),Dt(u),n.stateNode=u):n.memoizedState=Fv(n.type,a.memoizedProps,n.pendingProps,a.memoizedState),null;case 27:return ia(n),a===null&&tt&&(u=n.stateNode=Ov(n.type,n.pendingProps,he.current),Zt=n,en=!0,p=vt,er(n.type)?(Xm=p,vt=Ba(u.firstChild)):vt=p),Bt(a,n,n.pendingProps.children,i),Fl(a,n),a===null&&(n.flags|=4194304),n.child;case 5:return a===null&&tt&&((p=u=vt)&&(u=dj(u,n.type,n.pendingProps,en),u!==null?(n.stateNode=u,Zt=n,vt=Ba(u.firstChild),en=!1,p=!0):p=!1),p||_r(n)),ia(n),p=n.type,g=n.pendingProps,w=a!==null?a.memoizedProps:null,u=g.children,Km(p,g)?u=null:w!==null&&Km(p,w)&&(n.flags|=32),n.memoizedState!==null&&(p=Gu(a,n,E3,null,null,i),co._currentValue=p),Fl(a,n),Bt(a,n,u,i),n.child;case 6:return a===null&&tt&&((a=i=vt)&&(i=uj(i,n.pendingProps,en),i!==null?(n.stateNode=i,Zt=n,vt=null,a=!0):a=!1),a||_r(n)),null;case 13:return Rb(a,n,i);case 4:return Ie(n,n.stateNode.containerInfo),u=n.pendingProps,a===null?n.child=Rs(n,null,u,i):Bt(a,n,u,i),n.child;case 11:return Ab(a,n,n.type,n.pendingProps,i);case 7:return Bt(a,n,n.pendingProps,i),n.child;case 8:return Bt(a,n,n.pendingProps.children,i),n.child;case 12:return Bt(a,n,n.pendingProps.children,i),n.child;case 10:return u=n.pendingProps,Ln(n,n.type,u.value),Bt(a,n,u.children,i),n.child;case 9:return p=n.type._context,u=n.pendingProps.children,Ir(n),p=Yt(p),u=u(p),n.flags|=1,Bt(a,n,u,i),n.child;case 14:return qb(a,n,n.type,n.pendingProps,i);case 15:return Eb(a,n,n.type,n.pendingProps,i);case 19:return Ub(a,n,i);case 31:return u=n.pendingProps,i=n.mode,u={mode:u.mode,children:u.children},a===null?(i=$l(u,i),i.ref=n.ref,n.child=i,i.return=n,n=i):(i=fn(a.child,u),i.ref=n.ref,n.child=i,i.return=n,n=i),n;case 22:return Nb(a,n,i);case 24:return Ir(n),u=Yt(Mt),a===null?(p=Du(),p===null&&(p=mt,g=Iu(),p.pooledCache=g,g.refCount++,g!==null&&(p.pooledCacheLanes|=i),p=g),n.memoizedState={parent:u,cache:p},Lu(n),Ln(n,Mt,p)):((a.lanes&i)!==0&&(zu(a,n),Fi(n,null,null,i),zi()),p=a.memoizedState,g=n.memoizedState,p.parent!==u?(p={parent:u,cache:u},n.memoizedState=p,n.lanes===0&&(n.memoizedState=n.updateQueue.baseState=p),Ln(n,Mt,u)):(u=g.cache,Ln(n,Mt,u),u!==p.cache&&Ru(n,[Mt],i,!0))),Bt(a,n,n.pendingProps.children,i),n.child;case 29:throw n.pendingProps}throw Error(s(156,n.tag))}function Sn(a){a.flags|=4}function Ob(a,n){if(n.type!=="stylesheet"||(n.state.loading&4)!==0)a.flags&=-16777217;
vendor: 46,688 bytes, line 8
8else if(a.flags|=16777216,!Gv(n)){if(n=Ia.current,n!==null&&((Xe&4194048)===Xe?tn!==null:(Xe&62914560)!==Xe&&(Xe&536870912)===0||n!==tn))throw Oi=Ou,wy;a.flags|=8192}}function Bl(a,n){n!==null&&(a.flags|=4),a.flags&16384&&(n=a.tag!==22?gg():536870912,a.lanes|=n,Os|=n)}function Hi(a,n){if(!tt)switch(a.tailMode){case"hidden":n=a.tail;for(var i=null;n!==null;)n.alternate!==null&&(i=n),n=n.sibling;i===null?a.tail=null:i.sibling=null;break;case"collapsed":i=a.tail;for(var u=null;i!==null;)i.alternate!==null&&(u=i),i=i.sibling;u===null?n||a.tail===null?a.tail=null:a.tail.sibling=null:u.sibling=null}}function gt(a){var n=a.alternate!==null&&a.alternate.child===a.child,i=0,u=0;if(n)for(var p=a.child;p!==null;)i|=p.lanes|p.childLanes,u|=p.subtreeFlags&65011712,u|=p.flags&65011712,p.return=a,p=p.sibling;else for(p=a.child;p!==null;)i|=p.lanes|p.childLanes,u|=p.subtreeFlags,u|=p.flags,p.return=a,p=p.sibling;return a.subtreeFlags|=u,a.childLanes=i,n}function D3(a,n,i){var u=n.pendingProps;switch(Tu(n),n.tag){case 31:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return gt(n),null;case 1:return gt(n),null;case 3:return i=n.stateNode,u=null,a!==null&&(u=a.memoizedState.cache),n.memoizedState.cache!==u&&(n.flags|=2048),vn(Mt),et(),i.pendingContext&&(i.context=i.pendingContext,i.pendingContext=null),(a===null||a.child===null)&&(Mi(n)?Sn(n):a===null||a.memoizedState.isDehydrated&&(n.flags&256)===0||(n.flags|=1024,gy())),gt(n),null;case 26:return i=n.memoizedState,a===null?(Sn(n),i!==null?(gt(n),Ob(n,i)):(gt(n),n.flags&=-16777217)):i?i!==a.memoizedState?(Sn(n),gt(n),Ob(n,i)):(gt(n),n.flags&=-16777217):(a.memoizedProps!==u&&Sn(n),gt(n),n.flags&=-16777217),null;case 27:oa(n),i=he.current;var p=n.type;if(a!==null&&n.stateNode!=null)a.memoizedProps!==u&&Sn(n);else{if(!u){if(n.stateNode===null)throw Error(s(166));return gt(n),null}a=we.current,Mi(n)?hy(n):(a=Ov(p,u,i),n.stateNode=a,Sn(n))}return gt(n),null;case 5:if(oa(n),i=n.type,a!==null&&n.stateNode!=null)a.memoizedProps!==u&&Sn(n);else{if(!u){if(n.stateNode===null)throw Error(s(166));return gt(n),null}if(a=we.current,Mi(n))hy(n);else{switch(p=ac(he.current),a){case 1:a=p.createElementNS("http://www.w3.org/2000/svg",i);break;case 2:a=p.createElementNS("http://www.w3.org/1998/Math/MathML",i);break;default:switch(i){case"svg":a=p.createElementNS("http://www.w3.org/2000/svg",i);break;case"math":a=p.createElementNS("http://www.w3.org/1998/Math/MathML",i);break;case"script":a=p.createElement("div"),a.innerHTML="<script><\/script>",a=a.removeChild(a.firstChild);break;case"select":a=typeof u.is=="string"?p.createElement("select",{is:u.is}):p.createElement("select"),u.multiple?a.multiple=!0:u.size&&(a.size=u.size);break;default:a=typeof u.is=="string"?p.createElement(i,{is:u.is}):p.createElement(i)}}a[Qt]=n,a[la]=u;e:for(p=n.child;p!==null;){if(p.tag===5||p.tag===6)a.appendChild(p.stateNode);else if(p.tag!==4&&p.tag!==27&&p.child!==null){p.child.return=p,p=p.child;continue}if(p===n)break e;for(;p.sibling===null;){if(p.return===null||p.return===n)break e;p=p.return}p.sibling.return=p.return,p=p.sibling}n.stateNode=a;e:switch(Wt(a,i,u),i){case"button":case"input":case"select":case"textarea":a=!!u.autoFocus;break e;case"img":a=!0;break e;default:a=!1}a&&Sn(n)}}return gt(n),n.flags&=-16777217,null;case 6:if(a&&n.stateNode!=null)a.memoizedProps!==u&&Sn(n);else{if(typeof u!="string"&&n.stateNode===null)throw Error(s(166));if(a=he.current,Mi(n)){if(a=n.stateNode,i=n.memoizedProps,u=null,p=Zt,p!==null)switch(p.tag){case 27:case 5:u=p.memoizedProps}a[Qt]=n,a=!!(a.nodeValue===i||u!==null&&u.suppressHydrationWarning===!0||Mv(a.nodeValue,i)),a||_r(n)}else a=ac(a).createTextNode(u),a[Qt]=n,n.stateNode=a}return gt(n),null;case 13:if(u=n.memoizedState,a===null||a.memoizedState!==null&&a.memoizedState.dehydrated!==null){if(p=Mi(n),u!==null&&u.dehydrated!==null){if(a===null){if(!p)throw Error(s(318));if(p=n.memoizedState,p=p!==null?p.dehydrated:null,!p)throw Error(s(317));p[Qt]=n}else Pi(),(n.flags&128)===0&&(n.memoizedState=null),n.flags|=4;gt(n),p=!1}else p=gy(),a!==null&&a.memoizedState!==null&&(a.memoizedState.hydrationErrors=p),p=!0;if(!p)return n.flags&256?(wn(n),n):(wn(n),null)}if(wn(n),(n.flags&128)!==0)return n.lanes=i,n;if(i=u!==null,a=a!==null&&a.memoizedState!==null,i){u=n.child,p=null,u.alternate!==null&&u.alternate.memoizedState!==null&&u.alternate.memoizedState.cachePool!==null&&(p=u.alternate.memoizedState.cachePool.pool);var g=null;u.memoizedState!==null&&u.memoizedState.cachePool!==null&&(g=u.memoizedState.cachePool.pool),g!==p&&(u.flags|=2048)}return i!==a&&i&&(n.child.flags|=8192),Bl(n,n.updateQueue),gt(n),null;case 4:return et(),a===null&&$m(n.stateNode.containerInfo),gt(n),null;case 10:return vn(n.type),gt(n),null;case 19:if(ie(Pt),p=n.memoizedState,p===null)return gt(n),null;if(u=(n.flags&128)!==0,g=p.rendering,g===null)if(u)Hi(p,!1);else{if(xt!==0||a!==null&&(a.flags&128)!==0)for(a=n.child;a!==null;){if(g=Ol(a),g!==null){for(n.flags|=128,Hi(p,!1),a=g.updateQueue,n.updateQueue=a,Bl(n,a),n.subtreeFlags=0,a=i,i=n.child;i!==null;)my(i,a),i=i.sibling;return oe(Pt,Pt.current&1|2),n.child}a=a.sibling}p.tail!==null&&Ce()>Gl&&(n.flags|=128,u=!0,Hi(p,!1),n.lanes=4194304)}else{if(!u)if(a=Ol(g),a!==null){if(n.flags|=128,u=!0,a=a.updateQueue,n.updateQueue=a,Bl(n,a),Hi(p,!0),p.tail===null&&p.tailMode==="hidden"&&!g.alternate&&!tt)return gt(n),null}else 2*Ce()-p.renderingStartTime>Gl&&i!==536870912&&(n.flags|=128,u=!0,Hi(p,!1),n.lanes=4194304);p.isBackwards?(g.sibling=n.child,n.child=g):(a=p.last,a!==null?a.sibling=g:n.child=g,p.last=g)}return p.tail!==null?(n=p.tail,p.rendering=n,p.tail=n.sibling,p.renderingStartTime=Ce(),n.sibling=null,a=Pt.current,oe(Pt,u?a&1|2:a&1),n):(gt(n),null);case 22:case 23:return wn(n),Vu(),u=n.memoizedState!==null,a!==null?a.memoizedState!==null!==u&&(n.flags|=8192):u&&(n.flags|=8192),u?(i&536870912)!==0&&(n.flags&128)===0&&(gt(n),n.subtreeFlags&6&&(n.flags|=8192)):gt(n),i=n.updateQueue,i!==null&&Bl(n,i.retryQueue),i=null,a!==null&&a.memoizedState!==null&&a.memoizedState.cachePool!==null&&(i=a.memoizedState.cachePool.pool),u=null,n.memoizedState!==null&&n.memoizedState.cachePool!==null&&(u=n.memoizedState.cachePool.pool),u!==i&&(n.flags|=2048),a!==null&&ie(Ur),null;case 24:return i=null,a!==null&&(i=a.memoizedState.cache),n.memoizedState.cache!==i&&(n.flags|=2048),vn(Mt),gt(n),null;case 25:return null;case 30:return null}throw Error(s(156,n.tag))}function O3(a,n){switch(Tu(n),n.tag){case 1:return a=n.flags,a&65536?(n.flags=a&-65537|128,n):null;case 3:return vn(Mt),et(),a=n.flags,(a&65536)!==0&&(a&128)===0?(n.flags=a&-65537|128,n):null;case 26:case 27:case 5:return oa(n),null;case 13:if(wn(n),a=n.memoizedState,a!==null&&a.dehydrated!==null){if(n.alternate===null)throw Error(s(340));Pi()}return a=n.flags,a&65536?(n.flags=a&-65537|128,n):null;case 19:return ie(Pt),null;case 4:return et(),null;case 10:return vn(n.type),null;case 22:case 23:return wn(n),Vu(),a!==null&&ie(Ur),a=n.flags,a&65536?(n.flags=a&-65537|128,n):null;case 24:return vn(Mt),null;case 25:return null;default:return null}}function Lb(a,n){switch(Tu(n),n.tag){case 3:vn(Mt),et();break;case 26:case 27:case 5:oa(n);break;case 4:et();break;case 13:wn(n);break;case 19:ie(Pt);break;case 10:vn(n.type);break;case 22:case 23:wn(n),Vu(),a!==null&&ie(Ur);break;case 24:vn(Mt)}}function Qi(a,n){try{var i=n.updateQueue,u=i!==null?i.lastEffect:null;if(u!==null){var p=u.next;i=p;do{if((i.tag&a)===a){u=void 0;var g=i.create,w=i.inst;u=g(),w.destroy=u}i=i.next}while(i!==p)}}catch(j){dt(n,n.return,j)}}function Gn(a,n,i){try{var u=n.updateQueue,p=u!==null?u.lastEffect:null;if(p!==null){var g=p.next;u=g;do{if((u.tag&a)===a){var w=u.inst,j=w.destroy;if(j!==void 0){w.destroy=void 0,p=n;var U=i,H=j;try{H()}catch(te){dt(p,U,te)}}}u=u.next}while(u!==g)}}catch(te){dt(n,n.return,te)}}function zb(a){var n=a.updateQueue;if(n!==null){var i=a.stateNode;try{qy(n,i)}catch(u){dt(a,a.return,u)}}}function Fb(a,n,i){i.props=Or(a.type,a.memoizedProps),i.state=a.memoizedState;try{i.componentWillUnmount()}catch(u){dt(a,n,u)}}function Yi(a,n){try{var i=a.ref;if(i!==null){switch(a.tag){case 26:case 27:case 5:var u=a.stateNode;break;case 30:u=a.stateNode;break;default:u=a.stateNode}typeof i=="function"?a.refCleanup=i(u):i.current=u}}catch(p){dt(a,n,p)}}function an(a,n){var i=a.ref,u=a.refCleanup;if(i!==null)if(typeof u=="function")try{u()}catch(p){dt(a,n,p)}finally{a.refCleanup=null,a=a.alternate,a!=null&&(a.refCleanup=null)}else if(typeof i=="function")try{i(null)}catch(p){dt(a,n,p)}else i.current=null}function $b(a){var n=a.type,i=a.memoizedProps,u=a.stateNode;try{e:switch(n){case"button":case"input":case"select":case"textarea":i.autoFocus&&u.focus();break e;case"img":i.src?u.src=i.src:i.srcSet&&(u.srcset=i.srcSet)}}catch(p){dt(a,a.return,p)}}function bm(a,n,i){try{var u=a.stateNode;sj(u,a.type,i,n),u[la]=n}catch(p){dt(a,a.return,p)}}function Bb(a){return a.tag===5||a.tag===3||a.tag===26||a.tag===27&&er(a.type)||a.tag===4}function vm(a){e:for(;;){for(;a.sibling===null;){if(a.return===null||Bb(a.return))return null;a=a.return}for(a.sibling.return=a.return,a=a.sibling;a.tag!==5&&a.tag!==6&&a.tag!==18;){if(a.tag===27&&er(a.type)||a.flags&2||a.child===null||a.tag===4)continue e;a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}function xm(a,n,i){var u=a.tag;if(u===5||u===6)a=a.stateNode,n?(i.nodeType===9?i.body:i.nodeName==="HTML"?i.ownerDocument.body:i).insertBefore(a,n):(n=i.nodeType===9?i.body:i.nodeName==="HTML"?i.ownerDocument.body:i,n.appendChild(a),i=i._reactRootContainer,i!=null||n.onclick!==null||(n.onclick=tc));else if(u!==4&&(u===27&&er(a.type)&&(i=a.stateNode,n=null),a=a.child,a!==null))for(xm(a,n,i),a=a.sibling;a!==null;)xm(a,n,i),a=a.sibling}function Vl(a,n,i){var u=a.tag;if(u===5||u===6)a=a.stateNode,n?i.insertBefore(a,n):i.appendChild(a);else if(u!==4&&(u===27&&er(a.type)&&(i=a.stateNode),a=a.child,a!==null))for(Vl(a,n,i),a=a.sibling;a!==null;)Vl(a,n,i),a=a.sibling}function Vb(a){var n=a.stateNode,i=a.memoizedProps;try{for(var u=a.type,p=n.attributes;p.length;)n.removeAttributeNode(p[0]);Wt(n,u,i),n[Qt]=a,n[la]=i}catch(g){dt(a,a.return,g)}}var Cn=!1,Ct=!1,wm=!1,Wb=typeof WeakSet=="function"?WeakSet:Set,Lt=null;function L3(a,n){if(a=a.containerInfo,Wm=lc,a=ay(a),vu(a)){if("selectionStart"in a)var i={start:a.selectionStart,end:a.selectionEnd};else e:{i=(i=a.ownerDocument)&&i.defaultView||window;var u=i.getSelection&&i.getSelection();if(u&&u.rangeCount!==0){i=u.anchorNode;var p=u.anchorOffset,g=u.focusNode;u=u.focusOffset;try{i.nodeType,g.nodeType}catch{i=null;break e}var w=0,j=-1,U=-1,H=0,te=0,re=a,Q=null;t:for(;;){for(var X;re!==i||p!==0&&re.nodeType!==3||(j=w+p),re!==g||u!==0&&re.nodeType!==3||(U=w+u),re.nodeType===3&&(w+=re.nodeValue.length),(X=re.firstChild)!==null;)Q=re,re=X;for(;;){if(re===a)break t;if(Q===i&&++H===p&&(j=w),Q===g&&++te===u&&(U=w),(X=re.nextSibling)!==null)break;re=Q,Q=re.parentNode}re=X}i=j===-1||U===-1?null:{start:j,end:U}}else i=null}i=i||{start:0,end:0}}else i=null;for(Gm={focusedElem:a,selectionRange:i},lc=!1,Lt=n;Lt!==null;)if(n=Lt,a=n.child,(n.subtreeFlags&1024)!==0&&a!==null)a.return=n,Lt=a;else for(;Lt!==null;){switch(n=Lt,g=n.alternate,a=n.flags,n.tag){case 0:break;case 11:case 15:break;case 1:if((a&1024)!==0&&g!==null){a=void 0,i=n,p=g.memoizedProps,g=g.memoizedState,u=i.stateNode;try{var Me=Or(i.type,p,i.elementType===i.type);a=u.getSnapshotBeforeUpdate(Me,g),u.__reactInternalSnapshotBeforeUpdate=a}catch(qe){dt(i,i.return,qe)}}break;case 3:if((a&1024)!==0){if(a=n.stateNode.containerInfo,i=a.nodeType,i===9)Qm(a);else if(i===1)switch(a.nodeName){case"HEAD":case"HTML":case"BODY":Qm(a);break;default:a.textContent=""}}break;case 5:case 26:case 27:case 6:case 4:case 17:break;default:if((a&1024)!==0)throw Error(s(163))}if(a=n.sibling,a!==null){a.return=n.return,Lt=a;break}Lt=n.return}}function Gb(a,n,i){var u=i.flags;switch(i.tag){case 0:case 11:case 15:Kn(a,i),u&4&&Qi(5,i);break;case 1:if(Kn(a,i),u&4)if(a=i.stateNode,n===null)try{a.componentDidMount()}catch(w){dt(i,i.return,w)}else{var p=Or(i.type,n.memoizedProps);n=n.memoizedState;try{a.componentDidUpdate(p,n,a.__reactInternalSnapshotBeforeUpdate)}catch(w){dt(i,i.return,w)}}u&64&&zb(i),u&512&&Yi(i,i.return);break;case 3:if(Kn(a,i),u&64&&(a=i.updateQueue,a!==null)){if(n=null,i.child!==null)switch(i.child.tag){case 27:case 5:n=i.child.stateNode;break;case 1:n=i.child.stateNode}try{qy(a,n)}catch(w){dt(i,i.return,w)}}break;case 27:n===null&&u&4&&Vb(i);case 26:case 5:Kn(a,i),n===null&&u&4&&$b(i),u&512&&Yi(i,i.return);break;case 12:Kn(a,i);break;case 13:Kn(a,i),u&4&&Qb(a,i),u&64&&(a=i.memoizedState,a!==null&&(a=a.dehydrated,a!==null&&(i=H3.bind(null,i),mj(a,i))));break;case 22:if(u=i.memoizedState!==null||Cn,!u){n=n!==null&&n.memoizedState!==null||Ct,p=Cn;var g=Ct;Cn=u,(Ct=n)&&!g?Hn(a,i,(i.subtreeFlags&8772)!==0):Kn(a,i),Cn=p,Ct=g}break;case 30:break;default:Kn(a,i)}}function Kb(a){var n=a.alternate;n!==null&&(a.alternate=null,Kb(n)),a.child=null,a.deletions=null,a.sibling=null,a.tag===5&&(n=a.stateNode,n!==null&&eu(n)),a.stateNode=null,a.return=null,a.dependencies=null,a.memoizedProps=null,a.memoizedState=null,a.pendingProps=null,a.stateNode=null,a.updateQueue=null}var ft=null,ua=!1;function jn(a,n,i){for(i=i.child;i!==null;)Hb(a,n,i),i=i.sibling}function Hb(a,n,i){if(ga&&typeof ga.onCommitFiberUnmount=="function")try{ga.onCommitFiberUnmount(yi,i)}catch{}switch(i.tag){case 26:Ct||an(i,n),jn(a,n,i),i.memoizedState?i.memoizedState.count--:i.stateNode&&(i=i.stateNode,i.parentNode.removeChild(i));break;case 27:Ct||an(i,n);var u=ft,p=ua;er(i.type)&&(ft=i.stateNode,ua=!1),jn(a,n,i),so(i.stateNode),ft=u,ua=p;break;case 5:Ct||an(i,n);case 6:if(u=ft,p=ua,ft=null,jn(a,n,i),ft=u,ua=p,ft!==null)if(ua)try{(ft.nodeType===9?ft.body:ft.nodeName==="HTML"?ft.ownerDocument.body:ft).removeChild(i.stateNode)}catch(g){dt(i,n,g)}else try{ft.removeChild(i.stateNode)}catch(g){dt(i,n,g)}break;case 18:ft!==null&&(ua?(a=ft,Uv(a.nodeType===9?a.body:a.nodeName==="HTML"?a.ownerDocument.body:a,i.stateNode),ho(a)):Uv(ft,i.stateNode));break;case 4:u=ft,p=ua,ft=i.stateNode.containerInfo,ua=!0,jn(a,n,i),ft=u,ua=p;break;case 0:case 11:case 14:case 15:Ct||Gn(2,i,n),Ct||Gn(4,i,n),jn(a,n,i);break;case 1:Ct||(an(i,n),u=i.stateNode,typeof u.componentWillUnmount=="function"&&Fb(i,n,u)),jn(a,n,i);break;case 21:jn(a,n,i);break;case 22:Ct=(u=Ct)||i.memoizedState!==null,jn(a,n,i),Ct=u;break;default:jn(a,n,i)}}function Qb(a,n){if(n.memoizedState===null&&(a=n.alternate,a!==null&&(a=a.memoizedState,a!==null&&(a=a.dehydrated,a!==null))))try{ho(a)}catch(i){dt(n,n.return,i)}}function z3(a){switch(a.tag){case 13:case 19:var n=a.stateNode;return n===null&&(n=a.stateNode=new Wb),n;case 22:return a=a.stateNode,n=a._retryCache,n===null&&(n=a._retryCache=new Wb),n;default:throw Error(s(435,a.tag))}}function km(a,n){var i=z3(a);n.forEach(function(u){var p=Q3.bind(null,a,u);i.has(u)||(i.add(u),u.then(p,p))})}function xa(a,n){var i=n.deletions;if(i!==null)for(var u=0;u<i.length;u++){var p=i[u],g=a,w=n,j=w;e:for(;j!==null;){switch(j.tag){case 27:if(er(j.type)){ft=j.stateNode,ua=!1;break e}break;case 5:ft=j.stateNode,ua=!1;break e;case 3:case 4:ft=j.stateNode.containerInfo,ua=!0;break e}j=j.return}if(ft===null)throw Error(s(160));Hb(g,w,p),ft=null,ua=!1,g=p.alternate,g!==null&&(g.return=null),p.return=null}if(n.subtreeFlags&13878)for(n=n.child;n!==null;)Yb(n,a),n=n.sibling}var $a=null;function Yb(a,n){var i=a.alternate,u=a.flags;switch(a.tag){case 0:case 11:case 14:case 15:xa(n,a),wa(a),u&4&&(Gn(3,a,a.return),Qi(3,a),Gn(5,a,a.return));break;case 1:xa(n,a),wa(a),u&512&&(Ct||i===null||an(i,i.return)),u&64&&Cn&&(a=a.updateQueue,a!==null&&(u=a.callbacks,u!==null&&(i=a.shared.hiddenCallbacks,a.shared.hiddenCallbacks=i===null?u:i.concat(u))));break;case 26:var p=$a;if(xa(n,a),wa(a),u&512&&(Ct||i===null||an(i,i.return)),u&4){var g=i!==null?i.memoizedState:null;if(u=a.memoizedState,i===null)if(u===null)if(a.stateNode===null){e:{u=a.type,i=a.memoizedProps,p=p.ownerDocument||p;t:switch(u){case"title":g=p.getElementsByTagName("title")[0],(!g||g[xi]||g[Qt]||g.namespaceURI==="http://www.w3.org/2000/svg"||g.hasAttribute("itemprop"))&&(g=p.createElement(u),p.head.insertBefore(g,p.querySelector("head > title"))),Wt(g,u,i),g[Qt]=a,Dt(g),u=g;break e;case"link":var w=Vv("link","href",p).get(u+(i.href||""));if(w){for(var j=0;j<w.length;j++)if(g=w[j],g.getAttribute("href")===(i.href==null||i.href===""?null:i.href)&&g.getAttribute("rel")===(i.rel==null?null:i.rel)&&g.getAttribute("title")===(i.title==null?null:i.title)&&g.getAttribute("crossorigin")===(i.crossOrigin==null?null:i.crossOrigin)){w.splice(j,1);break t}}g=p.createElement(u),Wt(g,u,i),p.head.appendChild(g);break;case"meta":if(w=Vv("meta","content",p).get(u+(i.content||""))){for(j=0;j<w.length;j++)if(g=w[j],g.getAttribute("content")===(i.content==null?null:""+i.content)&&g.getAttribute("name")===(i.name==null?null:i.name)&&g.getAttribute("property")===(i.property==null?null:i.property)&&g.getAttribute("http-equiv")===(i.httpEquiv==null?null:i.httpEquiv)&&g.getAttribute("charset")===(i.charSet==null?null:i.charSet)){w.splice(j,1);break t}}g=p.createElement(u),Wt(g,u,i),p.head.appendChild(g);break;default:throw Error(s(468,u))}g[Qt]=a,Dt(g),u=g}a.stateNode=u}else Wv(p,a.type,a.stateNode);else a.stateNode=Bv(p,u,a.memoizedProps);else g!==u?(g===null?i.stateNode!==null&&(i=i.stateNode,i.parentNode.removeChild(i)):g.count--,u===null?Wv(p,a.type,a.stateNode):Bv(p,u,a.memoizedProps)):u===null&&a.stateNode!==null&&bm(a,a.memoizedProps,i.memoizedProps)}break;case 27:xa(n,a),wa(a),u&512&&(Ct||i===null||an(i,i.return)),i!==null&&u&4&&bm(a,a.memoizedProps,i.memoizedProps);break;case 5:if(xa(n,a),wa(a),u&512&&(Ct||i===null||an(i,i.return)),a.flags&32){p=a.stateNode;try{gs(p,"")}catch(X){dt(a,a.return,X)}}u&4&&a.stateNode!=null&&(p=a.memoizedProps,bm(a,p,i!==null?i.memoizedProps:p)),u&1024&&(wm=!0);break;case 6:if(xa(n,a),wa(a),u&4){if(a.stateNode===null)throw Error(s(162));u=a.memoizedProps,i=a.stateNode;try{i.nodeValue=u}catch(X){dt(a,a.return,X)}}break;case 3:if(sc=null,p=$a,$a=nc(n.containerInfo),xa(n,a),$a=p,wa(a),u&4&&i!==null&&i.memoizedState.isDehydrated)try{ho(n.containerInfo)}catch(X){dt(a,a.return,X)}wm&&(wm=!1,Xb(a));break;case 4:u=$a,$a=nc(a.stateNode.containerInfo),xa(n,a),wa(a),$a=u;break;case 12:xa(n,a),wa(a);break;case 13:xa(n,a),wa(a),a.child.flags&8192&&a.memoizedState!==null!=(i!==null&&i.memoizedState!==null)&&(Em=Ce()),u&4&&(u=a.updateQueue,u!==null&&(a.updateQueue=null,km(a,u)));break;case 22:p=a.memoizedState!==null;var U=i!==null&&i.memoizedState!==null,H=Cn,te=Ct;if(Cn=H||p,Ct=te||U,xa(n,a),Ct=te,Cn=H,wa(a),u&8192)e:for(n=a.stateNode,n._visibility=p?n._visibility&-2:n._visibility|1,p&&(i===null||U||Cn||Ct||Lr(a)),i=null,n=a;;){if(n.tag===5||n.tag===26){if(i===null){U=i=n;try{if(g=U.stateNode,p)w=g.style,typeof w.setProperty=="function"?w.setProperty("display","none","important"):w.display="none";else{j=U.stateNode;var re=U.memoizedProps.style,Q=re!=null&&re.hasOwnProperty("display")?re.display:null;j.style.display=Q==null||typeof Q=="boolean"?"":(""+Q).trim()}}catch(X){dt(U,U.return,X)}}}else if(n.tag===6){if(i===null){U=n;try{U.stateNode.nodeValue=p?"":U.memoizedProps}catch(X){dt(U,U.return,X)}}}else if((n.tag!==22&&n.tag!==23||n.memoizedState===null||n===a)&&n.child!==null){n.child.return=n,n=n.child;continue}if(n===a)break e;for(;n.sibling===null;){if(n.return===null||n.return===a)break e;i===n&&(i=null),n=n.return}i===n&&(i=null),n.sibling.return=n.return,n=n.sibling}u&4&&(u=a.updateQueue,u!==null&&(i=u.retryQueue,i!==null&&(u.retryQueue=null,km(a,i))));break;case 19:xa(n,a),wa(a),u&4&&(u=a.updateQueue,u!==null&&(a.updateQueue=null,km(a,u)));break;case 30:break;case 21:break;default:xa(n,a),wa(a)}}function wa(a){var n=a.flags;if(n&2){try{for(var i,u=a.return;u!==null;){if(Bb(u)){i=u;break}u=u.return}if(i==null)throw Error(s(160));switch(i.tag){case 27:var p=i.stateNode,g=vm(a);Vl(a,g,p);break;case 5:var w=i.stateNode;i.flags&32&&(gs(w,""),i.flags&=-33);var j=vm(a);Vl(a,j,w);break;case 3:case 4:var U=i.stateNode.containerInfo,H=vm(a);xm(a,H,U);break;default:throw Error(s(161))}}catch(te){dt(a,a.return,te)}a.flags&=-3}n&4096&&(a.flags&=-4097)}function Xb(a){if(a.subtreeFlags&1024)for(a=a.child;a!==null;){var n=a;Xb(n),n.tag===5&&n.flags&1024&&n.stateNode.reset(),a=a.sibling}}function Kn(a,n){if(n.subtreeFlags&8772)for(n=n.child;n!==null;)Gb(a,n.alternate,n),n=n.sibling}function Lr(a){for(a=a.child;a!==null;){var n=a;switch(n.tag){case 0:case 11:case 14:case 15:Gn(4,n,n.return),Lr(n);break;case 1:an(n,n.return);var i=n.stateNode;typeof i.componentWillUnmount=="function"&&Fb(n,n.return,i),Lr(n);break;case 27:so(n.stateNode);case 26:case 5:an(n,n.return),Lr(n);break;case 22:n.memoizedState===null&&Lr(n);break;case 30:Lr(n);break;default:Lr(n)}a=a.sibling}}function Hn(a,n,i){for(i=i&&(n.subtreeFlags&8772)!==0,n=n.child;n!==null;){var u=n.alternate,p=a,g=n,w=g.flags;switch(g.tag){case 0:case 11:case 15:Hn(p,g,i),Qi(4,g);break;case 1:if(Hn(p,g,i),u=g,p=u.stateNode,typeof p.componentDidMount=="function")try{p.componentDidMount()}catch(H){dt(u,u.return,H)}if(u=g,p=u.updateQueue,p!==null){var j=u.stateNode;try{var U=p.shared.hiddenCallbacks;if(U!==null)for(p.shared.hiddenCallbacks=null,p=0;p<U.length;p++)Ay(U[p],j)}catch(H){dt(u,u.return,H)}}i&&w&64&&zb(g),Yi(g,g.return);break;case 27:Vb(g);case 26:case 5:Hn(p,g,i),i&&u===null&&w&4&&$b(g),Yi(g,g.return);break;case 12:Hn(p,g,i);break;case 13:Hn(p,g,i),i&&w&4&&Qb(p,g);break;case 22:g.memoizedState===null&&Hn(p,g,i),Yi(g,g.return);break;case 30:break;default:Hn(p,g,i)}n=n.sibling}}function Sm(a,n){var i=null;a!==null&&a.memoizedState!==null&&a.memoizedState.cachePool!==null&&(i=a.memoizedState.cachePool.pool),a=null,n.memoizedState!==null&&n.memoizedState.cachePool!==null&&(a=n.memoizedState.cachePool.pool),a!==i&&(a!=null&&a.refCount++,i!=null&&Ii(i))}function Cm(a,n){a=null,n.alternate!==null&&(a=n.alternate.memoizedState.cache),n=n.memoizedState.cache,n!==a&&(n.refCount++,a!=null&&Ii(a))}function nn(a,n,i,u){if(n.subtreeFlags&10256)for(n=n.child;n!==null;)Zb(a,n,i,u),n=n.sibling}function Zb(a,n,i,u){var p=n.flags;switch(n.tag){case 0:case 11:case 15:nn(a,n,i,u),p&2048&&Qi(9,n);break;case 1:nn(a,n,i,u);break;case 3:nn(a,n,i,u),p&2048&&(a=null,n.alternate!==null&&(a=n.alternate.memoizedState.cache),n=n.memoizedState.cache,n!==a&&(n.refCount++,a!=null&&Ii(a)));break;case 12:if(p&2048){nn(a,n,i,u),a=n.stateNode;try{var g=n.memoizedProps,w=g.id,j=g.onPostCommit;typeof j=="function"&&j(w,n.alternate===null?"mount":"update",a.passiveEffectDuration,-0)}catch(U){dt(n,n.return,U)}}else nn(a,n,i,u);break;case 13:nn(a,n,i,u);break;case 23:break;case 22:g=n.stateNode,w=n.alternate,n.memoizedState!==null?g._visibility&2?nn(a,n,i,u):Xi(a,n):g._visibility&2?nn(a,n,i,u):(g._visibility|=2,Is(a,n,i,u,(n.subtreeFlags&10256)!==0)),p&2048&&Sm(w,n);break;case 24:nn(a,n,i,u),p&2048&&Cm(n.alternate,n);break;default:nn(a,n,i,u)}}function Is(a,n,i,u,p){for(p=p&&(n.subtreeFlags&10256)!==0,n=n.child;n!==null;){var g=a,w=n,j=i,U=u,H=w.flags;switch(w.tag){case 0:case 11:case 15:Is(g,w,j,U,p),Qi(8,w);break;case 23:break;case 22:var te=w.stateNode;w.memoizedState!==null?te._visibility&2?Is(g,w,j,U,p):Xi(g,w):(te._visibility|=2,Is(g,w,j,U,p)),p&&H&2048&&Sm(w.alternate,w);break;case 24:Is(g,w,j,U,p),p&&H&2048&&Cm(w.alternate,w);break;default:Is(g,w,j,U,p)}n=n.sibling}}function Xi(a,n){if(n.subtreeFlags&10256)for(n=n.child;n!==null;){var i=a,u=n,p=u.flags;switch(u.tag){case 22:Xi(i,u),p&2048&&Sm(u.alternate,u);break;case 24:Xi(i,u),p&2048&&Cm(u.alternate,u);break;default:Xi(i,u)}n=n.sibling}}var Zi=8192;function Us(a){if(a.subtreeFlags&Zi)for(a=a.child;a!==null;)Jb(a),a=a.sibling}function Jb(a){switch(a.tag){case 26:Us(a),a.flags&Zi&&a.memoizedState!==null&&jj($a,a.memoizedState,a.memoizedProps);break;case 5:Us(a);break;case 3:case 4:var n=$a;$a=nc(a.stateNode.containerInfo),Us(a),$a=n;break;case 22:a.memoizedState===null&&(n=a.alternate,n!==null&&n.memoizedState!==null?(n=Zi,Zi=16777216,Us(a),Zi=n):Us(a));break;default:Us(a)}}function ev(a){var n=a.alternate;if(n!==null&&(a=n.child,a!==null)){n.child=null;do n=a.sibling,a.sibling=null,a=n;while(a!==null)}}function Ji(a){var n=a.deletions;if((a.flags&16)!==0){if(n!==null)for(var i=0;i<n.length;i++){var u=n[i];Lt=u,av(u,a)}ev(a)}if(a.subtreeFlags&10256)for(a=a.child;a!==null;)tv(a),a=a.sibling}function tv(a){switch(a.tag){case 0:case 11:case 15:Ji(a),a.flags&2048&&Gn(9,a,a.return);break;case 3:Ji(a);break;case 12:Ji(a);break;case 22:var n=a.stateNode;a.memoizedState!==null&&n._visibility&2&&(a.return===null||a.return.tag!==13)?(n._visibility&=-3,Wl(a)):Ji(a);break;default:Ji(a)}}function Wl(a){var n=a.deletions;if((a.flags&16)!==0){if(n!==null)for(var i=0;i<n.length;i++){var u=n[i];Lt=u,av(u,a)}ev(a)}for(a=a.child;a!==null;){switch(n=a,n.tag){case 0:case 11:case 15:Gn(8,n,n.return),Wl(n);break;case 22:i=n.stateNode,i._visibility&2&&(i._visibility&=-3,Wl(n));break;default:Wl(n)}a=a.sibling}}function av(a,n){for(;Lt!==null;){var i=Lt;switch(i.tag){case 0:case 11:case 15:Gn(8,i,n);break;case 23:case 22:if(i.memoizedState!==null&&i.memoizedState.cachePool!==null){var u=i.memoizedState.cachePool.pool;u!=null&&u.refCount++}break;case 24:Ii(i.memoizedState.cache)}if(u=i.child,u!==null)u.return=i,Lt=u;else e:for(i=a;Lt!==null;){u=Lt;var p=u.sibling,g=u.return;if(Kb(u),u===i){Lt=null;break e}if(p!==null){p.return=g,Lt=p;break e}Lt=g}}}var F3={getCacheForType:function(a){var n=Yt(Mt),i=n.data.get(a);return i===void 0&&(i=a(),n.data.set(a,i)),i}},$3=typeof WeakMap=="function"?WeakMap:Map,nt=0,mt=null,$e=null,Xe=0,rt=0,ka=null,Qn=!1,Ds=!1,jm=!1,An=0,xt=0,Yn=0,zr=0,Am=0,Ua=0,Os=0,eo=null,ma=null,qm=!1,Em=0,Gl=1/0,Kl=null,Xn=null,Vt=0,Zn=null,Ls=null,zs=0,Nm=0,Tm=null,nv=null,to=0,Mm=null;function Sa(){if((nt&2)!==0&&Xe!==0)return Xe&-Xe;if(V.T!==null){var a=qs;return a!==0?a:Om()}return vg()}function rv(){Ua===0&&(Ua=(Xe&536870912)===0||tt?fg():536870912);var a=Ia.current;return a!==null&&(a.flags|=32),Ua}function Ca(a,n,i){(a===mt&&(rt===2||rt===9)||a.cancelPendingCommit!==null)&&(Fs(a,0),Jn(a,Xe,Ua,!1)),vi(a,i),((nt&2)===0||a!==mt)&&(a===mt&&((nt&2)===0&&(zr|=i),xt===4&&Jn(a,Xe,Ua,!1)),rn(a))}function sv(a,n,i){if((nt&6)!==0)throw Error(s(327));var u=!i&&(n&124)===0&&(n&a.expiredLanes)===0||bi(a,n),p=u?W3(a,n):Rm(a,n,!0),g=u;do{if(p===0){Ds&&!u&&Jn(a,n,0,!1);break}else{if(i=a.current.alternate,g&&!B3(i)){p=Rm(a,n,!1),g=!1;continue}if(p===2){if(g=n,a.errorRecoveryDisabledLanes&g)var w=0;else w=a.pendingLanes&-536870913,w=w!==0?w:w&536870912?536870912:0;if(w!==0){n=w;e:{var j=a;p=eo;var U=j.current.memoizedState.isDehydrated;if(U&&(Fs(j,w).flags|=256),w=Rm(j,w,!1),w!==2){if(jm&&!U){j.errorRecoveryDisabledLanes|=g,zr|=g,p=4;break e}g=ma,ma=p,g!==null&&(ma===null?ma=g:ma.push.apply(ma,g))}p=w}if(g=!1,p!==2)continue}}if(p===1){Fs(a,0),Jn(a,n,0,!0);break}e:{switch(u=a,g=p,g){case 0:case 1:throw Error(s(345));case 4:if((n&4194048)!==n)break;case 6:Jn(u,n,Ua,!Qn);break e;case 2:ma=null;break;case 3:case 5:break;default:throw Error(s(329))}if((n&62914560)===n&&(p=Em+300-Ce(),10<p)){if(Jn(u,n,Ua,!Qn),rl(u,0,!0)!==0)break e;u.timeoutHandle=Rv(iv.bind(null,u,i,ma,Kl,qm,n,Ua,zr,Os,Qn,g,2,-0,0),p);break e}iv(u,i,ma,Kl,qm,n,Ua,zr,Os,Qn,g,0,-0,0)}}break}while(!0);rn(a)}function iv(a,n,i,u,p,g,w,j,U,H,te,re,Q,X){if(a.timeoutHandle=-1,re=n.subtreeFlags,(re&8192||(re&16785408)===16785408)&&(lo={stylesheets:null,count:0,unsuspend:Cj},Jb(n),re=Aj(),re!==null)){a.cancelPendingCommit=re(pv.bind(null,a,n,g,i,u,p,w,j,U,te,1,Q,X)),Jn(a,g,w,!H);return}pv(a,n,g,i,u,p,w,j,U)}function B3(a){for(var n=a;;){var i=n.tag;if((i===0||i===11||i===15)&&n.flags&16384&&(i=n.updateQueue,i!==null&&(i=i.stores,i!==null)))for(var u=0;u<i.length;u++){var p=i[u],g=p.getSnapshot;p=p.value;try{if(!ba(g(),p))return!1}catch{return!1}}if(i=n.child,n.subtreeFlags&16384&&i!==null)i.return=n,n=i;else{if(n===a)break;for(;n.sibling===null;){if(n.return===null||n.return===a)return!0;n=n.return}n.sibling.return=n.return,n=n.sibling}}return!0}function Jn(a,n,i,u){n&=~Am,n&=~zr,a.suspendedLanes|=n,a.pingedLanes&=~n,u&&(a.warmLanes|=n),u=a.expirationTimes;for(var p=n;0<p;){var g=31-ya(p),w=1<<g;u[g]=-1,p&=~w}i!==0&&yg(a,i,n)}function Hl(){return(nt&6)===0?(ao(0),!1):!0}function Pm(){if($e!==null){if(rt===0)var a=$e.return;else a=$e,bn=Rr=null,Qu(a),_s=null,Gi=0,a=$e;for(;a!==null;)Lb(a.alternate,a),a=a.return;$e=null}}function Fs(a,n){var i=a.timeoutHandle;i!==-1&&(a.timeoutHandle=-1,oj(i)),i=a.cancelPendingCommit,i!==null&&(a.cancelPendingCommit=null,i()),Pm(),mt=a,$e=i=fn(a.current,null),Xe=n,rt=0,ka=null,Qn=!1,Ds=bi(a,n),jm=!1,Os=Ua=Am=zr=Yn=xt=0,ma=eo=null,qm=!1,(n&8)!==0&&(n|=n&32);var u=a.entangledLanes;if(u!==0)for(a=a.entanglements,u&=n;0<u;){var p=31-ya(u),g=1<<p;n|=a[p],u&=~g}return An=n,gl(),i}function ov(a,n){Oe=null,V.H=Il,n===Di||n===jl?(n=Cy(),rt=3):n===wy?(n=Cy(),rt=4):rt=n===jb?8:n!==null&&typeof n=="object"&&typeof n.then=="function"?6:1,ka=n,$e===null&&(xt=1,zl(a,Ma(n,a.current)))}function lv(){var a=V.H;return V.H=Il,a===null?Il:a}function cv(){var a=V.A;return V.A=F3,a}function _m(){xt=4,Qn||(Xe&4194048)!==Xe&&Ia.current!==null||(Ds=!0),(Yn&134217727)===0&&(zr&134217727)===0||mt===null||Jn(mt,Xe,Ua,!1)}function Rm(a,n,i){var u=nt;nt|=2;var p=lv(),g=cv();(mt!==a||Xe!==n)&&(Kl=null,Fs(a,n)),n=!1;var w=xt;e:do try{if(rt!==0&&$e!==null){var j=$e,U=ka;switch(rt){case 8:Pm(),w=6;break e;case 3:case 2:case 9:case 6:Ia.current===null&&(n=!0);var H=rt;if(rt=0,ka=null,$s(a,j,U,H),i&&Ds){w=0;break e}break;default:H=rt,rt=0,ka=null,$s(a,j,U,H)}}V3(),w=xt;break}catch(te){ov(a,te)}while(!0);return n&&a.shellSuspendCounter++,bn=Rr=null,nt=u,V.H=p,V.A=g,$e===null&&(mt=null,Xe=0,gl()),w}function V3(){for(;$e!==null;)dv($e)}function W3(a,n){var i=nt;nt|=2;var u=lv(),p=cv();mt!==a||Xe!==n?(Kl=null,Gl=Ce()+500,Fs(a,n)):Ds=bi(a,n);e:do try{if(rt!==0&&$e!==null){n=$e;var g=ka;t:switch(rt){case 1:rt=0,ka=null,$s(a,n,g,1);break;case 2:case 9:if(ky(g)){rt=0,ka=null,uv(n);break}n=function(){rt!==2&&rt!==9||mt!==a||(rt=7),rn(a)},g.then(n,n);break e;case 3:rt=7;break e;case 4:rt=5;break e;case 7:ky(g)?(rt=0,ka=null,uv(n)):(rt=0,ka=null,$s(a,n,g,7));break;case 5:var w=null;switch($e.tag){case 26:w=$e.memoizedState;case 5:case 27:var j=$e;if(!w||Gv(w)){rt=0,ka=null;var U=j.sibling;if(U!==null)$e=U;else{var H=j.return;H!==null?($e=H,Ql(H)):$e=null}break t}}rt=0,ka=null,$s(a,n,g,5);break;case 6:rt=0,ka=null,$s(a,n,g,6);break;case 8:Pm(),xt=6;break e;default:throw Error(s(462))}}G3();break}catch(te){ov(a,te)}while(!0);return bn=Rr=null,V.H=u,V.A=p,nt=i,$e!==null?0:(mt=null,Xe=0,gl(),xt)}function G3(){for(;$e!==null&&!le();)dv($e)}function dv(a){var n=Db(a.alternate,a,An);a.memoizedProps=a.pendingProps,n===null?Ql(a):$e=n}function uv(a){var n=a,i=n.alternate;switch(n.tag){case 15:case 0:n=Mb(i,n,n.pendingProps,n.type,void 0,Xe);break;case 11:n=Mb(i,n,n.pendingProps,n.type.render,n.ref,Xe);break;case 5:Qu(n);default:Lb(i,n),n=$e=my(n,An),n=Db(i,n,An)}a.memoizedProps=a.pendingProps,n===null?Ql(a):$e=n}function $s(a,n,i,u){bn=Rr=null,Qu(n),_s=null,Gi=0;var p=n.return;try{if(I3(a,p,n,i,Xe)){xt=1,zl(a,Ma(i,a.current)),$e=null;return}}catch(g){if(p!==null)throw $e=p,g;xt=1,zl(a,Ma(i,a.current)),$e=null;return}n.flags&32768?(tt||u===1?a=!0:Ds||(Xe&536870912)!==0?a=!1:(Qn=a=!0,(u===2||u===9||u===3||u===6)&&(u=Ia.current,u!==null&&u.tag===13&&(u.flags|=16384))),mv(n,a)):Ql(n)}function Ql(a){var n=a;do{if((n.flags&32768)!==0){mv(n,Qn);return}a=n.return;var i=D3(n.alternate,n,An);if(i!==null){$e=i;return}if(n=n.sibling,n!==null){$e=n;return}$e=n=a}while(n!==null);xt===0&&(xt=5)}function mv(a,n){do{var i=O3(a.alternate,a);if(i!==null){i.flags&=32767,$e=i;return}if(i=a.return,i!==null&&(i.flags|=32768,i.subtreeFlags=0,i.deletions=null),!n&&(a=a.sibling,a!==null)){$e=a;return}$e=a=i}while(a!==null);xt=6,$e=null}function pv(a,n,i,u,p,g,w,j,U){a.cancelPendingCommit=null;do Yl();while(Vt!==0);if((nt&6)!==0)throw Error(s(327));if(n!==null){if(n===a.current)throw Error(s(177));if(g=n.lanes|n.childLanes,g|=Cu,CC(a,i,g,w,j,U),a===mt&&($e=mt=null,Xe=0),Ls=n,Zn=a,zs=i,Nm=g,Tm=p,nv=u,(n.subtreeFlags&10256)!==0||(n.flags&10256)!==0?(a.callbackNode=null,a.callbackPriority=0,Y3(pt,function(){return bv(),null})):(a.callbackNode=null,a.callbackPriority=0),u=(n.flags&13878)!==0,(n.subtreeFlags&13878)!==0||u){u=V.T,V.T=null,p=Y.p,Y.p=2,w=nt,nt|=4;try{L3(a,n,i)}finally{nt=w,Y.p=p,V.T=u}}Vt=1,hv(),fv(),gv()}}function hv(){if(Vt===1){Vt=0;var a=Zn,n=Ls,i=(n.flags&13878)!==0;if((n.subtreeFlags&13878)!==0||i){i=V.T,V.T=null;var u=Y.p;Y.p=2;var p=nt;nt|=4;try{Yb(n,a);var g=Gm,w=ay(a.containerInfo),j=g.focusedElem,U=g.selectionRange;if(w!==j&&j&&j.ownerDocument&&ty(j.ownerDocument.documentElement,j)){if(U!==null&&vu(j)){var H=U.start,te=U.end;if(te===void 0&&(te=H),"selectionStart"in j)j.selectionStart=H,j.selectionEnd=Math.min(te,j.value.length);else{var re=j.ownerDocument||document,Q=re&&re.defaultView||window;if(Q.getSelection){var X=Q.getSelection(),Me=j.textContent.length,qe=Math.min(U.start,Me),ct=U.end===void 0?qe:Math.min(U.end,Me);!X.extend&&qe>ct&&(w=ct,ct=qe,qe=w);var B=ey(j,qe),F=ey(j,ct);if(B&&F&&(X.rangeCount!==1||X.anchorNode!==B.node||X.anchorOffset!==B.offset||X.focusNode!==F.node||X.focusOffset!==F.offset)){var K=re.createRange();K.setStart(B.node,B.offset),X.removeAllRanges(),qe>ct?(X.addRange(K),X.extend(F.node,F.offset)):(K.setEnd(F.node,F.offset),X.addRange(K))}}}}for(re=[],X=j;X=X.parentNode;)X.nodeType===1&&re.push({element:X,left:X.scrollLeft,top:X.scrollTop});for(typeof j.focus=="function"&&j.focus(),j=0;j<re.length;j++){var ae=re[j];ae.element.scrollLeft=ae.left,ae.element.scrollTop=ae.top}}lc=!!Wm,Gm=Wm=null}finally{nt=p,Y.p=u,V.T=i}}a.current=n,Vt=2}}function fv(){if(Vt===2){Vt=0;var a=Zn,n=Ls,i=(n.flags&8772)!==0;if((n.subtreeFlags&8772)!==0||i){i=V.T,V.T=null;var u=Y.p;Y.p=2;var p=nt;nt|=4;try{Gb(a,n.alternate,n)}finally{nt=p,Y.p=u,V.T=i}}Vt=3}}function gv(){if(Vt===4||Vt===3){Vt=0,Ue();var a=Zn,n=Ls,i=zs,u=nv;(n.subtreeFlags&10256)!==0||(n.flags&10256)!==0?Vt=5:(Vt=0,Ls=Zn=null,yv(a,a.pendingLanes));var p=a.pendingLanes;if(p===0&&(Xn=null),Zd(i),n=n.stateNode,ga&&typeof ga.onCommitFiberRoot=="function")try{ga.onCommitFiberRoot(yi,n,void 0,(n.current.flags&128)===128)}catch{}if(u!==null){n=V.T,p=Y.p,Y.p=2,V.T=null;try{for(var g=a.onRecoverableError,w=0;w<u.length;w++){var j=u[w];g(j.value,{componentStack:j.stack})}}finally{V.T=n,Y.p=p}}(zs&3)!==0&&Yl(),rn(a),p=a.pendingLanes,(i&4194090)!==0&&(p&42)!==0?a===Mm?to++:(to=0,Mm=a):to=0,ao(0)}}function yv(a,n){(a.pooledCacheLanes&=n)===0&&(n=a.pooledCache,n!=null&&(a.pooledCache=null,Ii(n)))}function Yl(a){return hv(),fv(),gv(),bv()}function bv(){if(Vt!==5)return!1;var a=Zn,n=Nm;Nm=0;var i=Zd(zs),u=V.T,p=Y.p;try{Y.p=32>i?32:i,V.T=null,i=Tm,Tm=null;var g=Zn,w=zs;if(Vt=0,Ls=Zn=null,zs=0,(nt&6)!==0)throw Error(s(331));var j=nt;if(nt|=4,tv(g.current),Zb(g,g.current,w,i),nt=j,ao(0,!1),ga&&typeof ga.onPostCommitFiberRoot=="function")try{ga.onPostCommitFiberRoot(yi,g)}catch{}return!0}finally{Y.p=p,V.T=u,yv(a,n)}}function vv(a,n,i){n=Ma(i,n),n=cm(a.stateNode,n,2),a=$n(a,n,2),a!==null&&(vi(a,2),rn(a))}function dt(a,n,i){if(a.tag===3)vv(a,a,i);else for(;n!==null;){if(n.tag===3){vv(n,a,i);break}else if(n.tag===1){var u=n.stateNode;if(typeof n.type.getDerivedStateFromError=="function"||typeof u.componentDidCatch=="function"&&(Xn===null||!Xn.has(u))){a=Ma(i,a),i=Sb(2),u=$n(n,i,2),u!==null&&(Cb(i,u,n,a),vi(u,2),rn(u));break}}n=n.return}}function Im(a,n,i){var u=a.pingCache;if(u===null){u=a.pingCache=new $3;var p=new Set;u.set(n,p)}else p=u.get(n),p===void 0&&(p=new Set,u.set(n,p));p.has(i)||(jm=!0,p.add(i),a=K3.bind(null,a,n,i),n.then(a,a))}function K3(a,n,i){var u=a.pingCache;u!==null&&u.delete(n),a.pingedLanes|=a.suspendedLanes&i,a.warmLanes&=~i,mt===a&&(Xe&i)===i&&(xt===4||xt===3&&(Xe&62914560)===Xe&&300>Ce()-Em?(nt&2)===0&&Fs(a,0):Am|=i,Os===Xe&&(Os=0)),rn(a)}function xv(a,n){n===0&&(n=gg()),a=Ss(a,n),a!==null&&(vi(a,n),rn(a))}function H3(a){var n=a.memoizedState,i=0;n!==null&&(i=n.retryLane),xv(a,i)}function Q3(a,n){var i=0;switch(a.tag){case 13:var u=a.stateNode,p=a.memoizedState;p!==null&&(i=p.retryLane);break;case 19:u=a.stateNode;break;case 22:u=a.stateNode._retryCache;break;default:throw Error(s(314))}u!==null&&u.delete(n),xv(a,i)}function Y3(a,n){return za(a,n)}var Xl=null,Bs=null,Um=!1,Zl=!1,Dm=!1,Fr=0;function rn(a){a!==Bs&&a.next===null&&(Bs===null?Xl=Bs=a:Bs=Bs.next=a),Zl=!0,Um||(Um=!0,Z3())}function ao(a,n){if(!Dm&&Zl){Dm=!0;do for(var i=!1,u=Xl;u!==null;){if(a!==0){var p=u.pendingLanes;if(p===0)var g=0;else{var w=u.suspendedLanes,j=u.pingedLanes;g=(1<<31-ya(42|a)+1)-1,g&=p&~(w&~j),g=g&201326741?g&201326741|1:g?g|2:0}g!==0&&(i=!0,Cv(u,g))}else g=Xe,g=rl(u,u===mt?g:0,u.cancelPendingCommit!==null||u.timeoutHandle!==-1),(g&3)===0||bi(u,g)||(i=!0,Cv(u,g));u=u.next}while(i);Dm=!1}}function X3(){wv()}function wv(){Zl=Um=!1;var a=0;Fr!==0&&(ij()&&(a=Fr),Fr=0);for(var n=Ce(),i=null,u=Xl;u!==null;){var p=u.next,g=kv(u,n);g===0?(u.next=null,i===null?Xl=p:i.next=p,p===null&&(Bs=i)):(i=u,(a!==0||(g&3)!==0)&&(Zl=!0)),u=p}ao(a)}function kv(a,n){for(var i=a.suspendedLanes,u=a.pingedLanes,p=a.expirationTimes,g=a.pendingLanes&-62914561;0<g;){var w=31-ya(g),j=1<<w,U=p[w];U===-1?((j&i)===0||(j&u)!==0)&&(p[w]=SC(j,n)):U<=n&&(a.expiredLanes|=j),g&=~j}if(n=mt,i=Xe,i=rl(a,a===n?i:0,a.cancelPendingCommit!==null||a.timeoutHandle!==-1),u=a.callbackNode,i===0||a===n&&(rt===2||rt===9)||a.cancelPendingCommit!==null)return u!==null&&u!==null&&Xa(u),a.callbackNode=null,a.callbackPriority=0;if((i&3)===0||bi(a,i)){if(n=i&-i,n===a.callbackPriority)return n;switch(u!==null&&Xa(u),Zd(i)){case 2:case 8:i=Qe;break;case 32:i=pt;break;case 268435456:i=Ja;break;default:i=pt}return u=Sv.bind(null,a),i=za(i,u),a.callbackPriority=n,a.callbackNode=i,n}return u!==null&&u!==null&&Xa(u),a.callbackPriority=2,a.callbackNode=null,2}function Sv(a,n){if(Vt!==0&&Vt!==5)return a.callbackNode=null,a.callbackPriority=0,null;var i=a.callbackNode;if(Yl()&&a.callbackNode!==i)return null;var u=Xe;return u=rl(a,a===mt?u:0,a.cancelPendingCommit!==null||a.timeoutHandle!==-1),u===0?null:(sv(a,u,n),kv(a,Ce()),a.callbackNode!=null&&a.callbackNode===i?Sv.bind(null,a):null)}function Cv(a,n){if(Yl())return null;sv(a,n,!0)}function Z3(){lj(function(){(nt&6)!==0?za(Pe,X3):wv()})}function Om(){return Fr===0&&(Fr=fg()),Fr}function jv(a){return a==null||typeof a=="symbol"||typeof a=="boolean"?null:typeof a=="function"?a:cl(""+a)}function Av(a,n){var i=n.ownerDocument.createElement("input");return i.name=n.name,i.value=n.value,a.id&&i.setAttribute("form",a.id),n.parentNode.insertBefore(i,n),a=new FormData(a),i.parentNode.removeChild(i),a}function J3(a,n,i,u,p){if(n==="submit"&&i&&i.stateNode===p){var g=jv((p[la]||null).action),w=u.submitter;w&&(n=(n=w[la]||null)?jv(n.formAction):w.getAttribute("formAction"),n!==null&&(g=n,w=null));var j=new pl("action","action",null,u,p);a.push({event:j,listeners:[{instance:null,listener:function(){if(u.defaultPrevented){if(Fr!==0){var U=w?Av(p,w):new FormData(p);rm(i,{pending:!0,data:U,method:p.method,action:g},null,U)}}else typeof g=="function"&&(j.preventDefault(),U=w?Av(p,w):new FormData(p),rm(i,{pending:!0,data:U,method:p.method,action:g},g,U))},currentTarget:p}]})}}for(var Lm=0;Lm<Su.length;Lm++){var zm=Su[Lm],ej=zm.toLowerCase(),tj=zm[0].toUpperCase()+zm.slice(1);Fa(ej,"on"+tj)}Fa(sy,"onAnimationEnd"),Fa(iy,"onAnimationIteration"),Fa(oy,"onAnimationStart"),Fa("dblclick","onDoubleClick"),Fa("focusin","onFocus"),Fa("focusout","onBlur"),Fa(b3,"onTransitionRun"),Fa(v3,"onTransitionStart"),Fa(x3,"onTransitionCancel"),Fa(ly,"onTransitionEnd"),ps("onMouseEnter",["mouseout","mouseover"]),ps("onMouseLeave",["mouseout","mouseover"]),ps("onPointerEnter",["pointerout","pointerover"]),ps("onPointerLeave",["pointerout","pointerover"]),jr("onChange","change click focusin focusout input keydown keyup selectionchange".split(" ")),jr("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")),jr("onBeforeInput",["compositionend","keypress","textInput","paste"]),jr("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" ")),jr("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" ")),jr("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var no="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(" "),aj=new Set("beforetoggle cancel close invalid load scroll scrollend toggle".split(" ").concat(no));function qv(a,n){n=(n&4)!==0;for(var i=0;i<a.length;i++){var u=a[i],p=u.event;u=u.listeners;e:{var g=void 0;if(n)for(var w=u.length-1;0<=w;w--){var j=u[w],U=j.instance,H=j.currentTarget;if(j=j.listener,U!==g&&p.isPropagationStopped())break e;g=j,p.currentTarget=H;try{g(p)}catch(te){Ll(te)}p.currentTarget=null,g=U}else for(w=0;w<u.length;w++){if(j=u[w],U=j.instance,H=j.currentTarget,j=j.listener,U!==g&&p.isPropagationStopped())break e;g=j,p.currentTarget=H;try{g(p)}catch(te){Ll(te)}p.currentTarget=null,g=U}}}}function Be(a,n){var i=n[Jd];i===void 0&&(i=n[Jd]=new Set);var u=a+"__bubble";i.has(u)||(Ev(n,a,2,!1),i.add(u))}function Fm(a,n,i){var u=0;n&&(u|=4),Ev(i,a,u,n)}var Jl="_reactListening"+Math.random().toString(36).slice(2);function $m(a){if(!a[Jl]){a[Jl]=!0,wg.forEach(function(i){i!=="selectionchange"&&(aj.has(i)||Fm(i,!1,a),Fm(i,!0,a))});var n=a.nodeType===9?a:a.ownerDocument;n===null||n[Jl]||(n[Jl]=!0,Fm("selectionchange",!1,n))}}function Ev(a,n,i,u){switch(Zv(n)){case 2:var p=Nj;break;case 8:p=Tj;break;default:p=ap}i=p.bind(null,n,i,a),p=void 0,!du||n!=="touchstart"&&n!=="touchmove"&&n!=="wheel"||(p=!0),u?p!==void 0?a.addEventListener(n,i,{capture:!0,passive:p}):a.addEventListener(n,i,!0):p!==void 0?a.addEventListener(n,i,{passive:p}):a.addEventListener(n,i,!1)}function Bm(a,n,i,u,p){var g=u;if((n&1)===0&&(n&2)===0&&u!==null)e:for(;;){if(u===null)return;var w=u.tag;if(w===3||w===4){var j=u.stateNode.containerInfo;if(j===p)break;if(w===4)for(w=u.return;w!==null;){var U=w.tag;if((U===3||U===4)&&w.stateNode.containerInfo===p)return;w=w.return}for(;j!==null;){if(w=ds(j),w===null)return;if(U=w.tag,U===5||U===6||U===26||U===27){u=g=w;continue e}j=j.parentNode}}u=u.return}Ig(function(){var H=g,te=lu(i),re=[];e:{var Q=cy.get(a);if(Q!==void 0){var X=pl,Me=a;switch(a){case"keypress":if(ul(i)===0)break e;case"keydown":case"keyup":X=YC;break;case"focusin":Me="focus",X=hu;break;case"focusout":Me="blur",X=hu;break;case"beforeblur":case"afterblur":X=hu;break;case"click":if(i.button===2)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":X=Og;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":X=OC;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":X=JC;break;case sy:case iy:case oy:X=FC;break;case ly:X=t3;break;case"scroll":case"scrollend":X=UC;break;case"wheel":X=n3;break;case"copy":case"cut":case"paste":X=BC;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":X=zg;break;case"toggle":case"beforetoggle":X=s3}var qe=(n&4)!==0,ct=!qe&&(a==="scroll"||a==="scrollend"),B=qe?Q!==null?Q+"Capture":null:Q;qe=[];for(var F=H,K;F!==null;){var ae=F;if(K=ae.stateNode,ae=ae.tag,ae!==5&&ae!==26&&ae!==27||K===null||B===null||(ae=ki(F,B),ae!=null&&qe.push(ro(F,ae,K))),ct)break;F=F.return}0<qe.length&&(Q=new X(Q,Me,null,i,te),re.push({event:Q,listeners:qe}))}}if((n&7)===0){e:{if(Q=a==="mouseover"||a==="pointerover",X=a==="mouseout"||a==="pointerout",Q&&i!==ou&&(Me=i.relatedTarget||i.fromElement)&&(ds(Me)||Me[cs]))break e;if((X||Q)&&(Q=te.window===te?te:(Q=te.ownerDocument)?Q.defaultView||Q.parentWindow:window,X?(Me=i.relatedTarget||i.toElement,X=H,Me=Me?ds(Me):null,Me!==null&&(ct=d(Me),qe=Me.tag,Me!==ct||qe!==5&&qe!==27&&qe!==6)&&(Me=null)):(X=null,Me=H),X!==Me)){if(qe=Og,ae="onMouseLeave",B="onMouseEnter",F="mouse",(a==="pointerout"||a==="pointerover")&&(qe=zg,ae="onPointerLeave",B="onPointerEnter",F="pointer"),ct=X==null?Q:wi(X),K=Me==null?Q:wi(Me),Q=new qe(ae,F+"leave",X,i,te),Q.target=ct,Q.relatedTarget=K,ae=null,ds(te)===H&&(qe=new qe(B,F+"enter",Me,i,te),qe.target=K,qe.relatedTarget=ct,ae=qe),ct=ae,X&&Me)t:{for(qe=X,B=Me,F=0,K=qe;K;K=Vs(K))F++;for(K=0,ae=B;ae;ae=Vs(ae))K++;for(;0<F-K;)qe=Vs(qe),F--;for(;0<K-F;)B=Vs(B),K--;for(;F--;){if(qe===B||B!==null&&qe===B.alternate)break t;qe=Vs(qe),B=Vs(B)}qe=null}else qe=null;X!==null&&Nv(re,Q,X,qe,!1),Me!==null&&ct!==null&&Nv(re,ct,Me,qe,!0)}}e:{if(Q=H?wi(H):window,X=Q.nodeName&&Q.nodeName.toLowerCase(),X==="select"||X==="input"&&Q.type==="file")var ye=Hg;else if(Gg(Q))if(Qg)ye=f3;else{ye=p3;var Fe=m3}else X=Q.nodeName,!X||X.toLowerCase()!=="input"||Q.type!=="checkbox"&&Q.type!=="radio"?H&&iu(H.elementType)&&(ye=Hg):ye=h3;if(ye&&(ye=ye(a,H))){Kg(re,ye,i,te);break e}Fe&&Fe(a,Q,H),a==="focusout"&&H&&Q.type==="number"&&H.memoizedProps.value!=null&&su(Q,"number",Q.value)}switch(Fe=H?wi(H):window,a){case"focusin":(Gg(Fe)||Fe.contentEditable==="true")&&(xs=Fe,xu=H,Ti=null);break;case"focusout":Ti=xu=xs=null;break;case"mousedown":wu=!0;break;case"contextmenu":case"mouseup":case"dragend":wu=!1,ny(re,i,te);break;case"selectionchange":if(y3)break;case"keydown":case"keyup":ny(re,i,te)}var ke;if(gu)e:{switch(a){case"compositionstart":var Ne="onCompositionStart";break e;case"compositionend":Ne="onCompositionEnd";break e;case"compositionupdate":Ne="onCompositionUpdate";break e}Ne=void 0}else vs?Vg(a,i)&&(Ne="onCompositionEnd"):a==="keydown"&&i.keyCode===229&&(Ne="onCompositionStart");Ne&&(Fg&&i.locale!=="ko"&&(vs||Ne!=="onCompositionStart"?Ne==="onCompositionEnd"&&vs&&(ke=Ug()):(On=te,uu="value"in On?On.value:On.textContent,vs=!0)),Fe=ec(H,Ne),0<Fe.length&&(Ne=new Lg(Ne,a,null,i,te),re.push({event:Ne,listeners:Fe}),ke?Ne.data=ke:(ke=Wg(i),ke!==null&&(Ne.data=ke)))),(ke=o3?l3(a,i):c3(a,i))&&(Ne=ec(H,"onBeforeInput"),0<Ne.length&&(Fe=new Lg("onBeforeInput","beforeinput",null,i,te),re.push({event:Fe,listeners:Ne}),Fe.data=ke)),J3(re,a,H,i,te)}qv(re,n)})}function ro(a,n,i){return{instance:a,listener:n,currentTarget:i}}function ec(a,n){for(var i=n+"Capture",u=[];a!==null;){var p=a,g=p.stateNode;if(p=p.tag,p!==5&&p!==26&&p!==27||g===null||(p=ki(a,i),p!=null&&u.unshift(ro(a,p,g)),p=ki(a,n),p!=null&&u.push(ro(a,p,g))),a.tag===3)return u;a=a.return}return[]}
vendor: 7,770 bytes, lines 8-9
8function Vs(a){if(a===null)return null;do a=a.return;while(a&&a.tag!==5&&a.tag!==27);return a||null}function Nv(a,n,i,u,p){for(var g=n._reactName,w=[];i!==null&&i!==u;){var j=i,U=j.alternate,H=j.stateNode;if(j=j.tag,U!==null&&U===u)break;j!==5&&j!==26&&j!==27||H===null||(U=H,p?(H=ki(i,g),H!=null&&w.unshift(ro(i,H,U))):p||(H=ki(i,g),H!=null&&w.push(ro(i,H,U)))),i=i.return}w.length!==0&&a.push({event:n,listeners:w})}var nj=/\r\n?/g,rj=/\u0000|\uFFFD/g;function Tv(a){return(typeof a=="string"?a:""+a).replace(nj,` 9`).replace(rj,"")}function Mv(a,n){return n=Tv(n),Tv(a)===n}function tc(){}function lt(a,n,i,u,p,g){switch(i){case"children":typeof u=="string"?n==="body"||n==="textarea"&&u===""||gs(a,u):(typeof u=="number"||typeof u=="bigint")&&n!=="body"&&gs(a,""+u);break;case"className":il(a,"class",u);break;case"tabIndex":il(a,"tabindex",u);break;case"dir":case"role":case"viewBox":case"width":case"height":il(a,i,u);break;case"style":_g(a,u,g);break;case"data":if(n!=="object"){il(a,"data",u);break}case"src":case"href":if(u===""&&(n!=="a"||i!=="href")){a.removeAttribute(i);break}if(u==null||typeof u=="function"||typeof u=="symbol"||typeof u=="boolean"){a.removeAttribute(i);break}u=cl(""+u),a.setAttribute(i,u);break;case"action":case"formAction":if(typeof u=="function"){a.setAttribute(i,"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 g=="function"&&(i==="formAction"?(n!=="input"&<(a,n,"name",p.name,p,null),lt(a,n,"formEncType",p.formEncType,p,null),lt(a,n,"formMethod",p.formMethod,p,null),lt(a,n,"formTarget",p.formTarget,p,null)):(lt(a,n,"encType",p.encType,p,null),lt(a,n,"method",p.method,p,null),lt(a,n,"target",p.target,p,null)));if(u==null||typeof u=="symbol"||typeof u=="boolean"){a.removeAttribute(i);break}u=cl(""+u),a.setAttribute(i,u);break;case"onClick":u!=null&&(a.onclick=tc);break;case"onScroll":u!=null&&Be("scroll",a);break;case"onScrollEnd":u!=null&&Be("scrollend",a);break;case"dangerouslySetInnerHTML":if(u!=null){if(typeof u!="object"||!("__html"in u))throw Error(s(61));if(i=u.__html,i!=null){if(p.children!=null)throw Error(s(60));a.innerHTML=i}}break;case"multiple":a.multiple=u&&typeof u!="function"&&typeof u!="symbol";break;case"muted":a.muted=u&&typeof u!="function"&&typeof u!="symbol";break;case"suppressContentEditableWarning":case"suppressHydrationWarning":case"defaultValue":case"defaultChecked":case"innerHTML":case"ref":break;case"autoFocus":break;case"xlinkHref":if(u==null||typeof u=="function"||typeof u=="boolean"||typeof u=="symbol"){a.removeAttribute("xlink:href");break}i=cl(""+u),a.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",i);break;case"contentEditable":case"spellCheck":case"draggable":case"value":case"autoReverse":case"externalResourcesRequired":case"focusable":case"preserveAlpha":u!=null&&typeof u!="function"&&typeof u!="symbol"?a.setAttribute(i,""+u):a.removeAttribute(i);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"playsInline":case"readOnly":case"required":case"reversed":case"scoped":case"seamless":case"itemScope":u&&typeof u!="function"&&typeof u!="symbol"?a.setAttribute(i,""):a.removeAttribute(i);break;case"capture":case"download":u===!0?a.setAttribute(i,""):u!==!1&&u!=null&&typeof u!="function"&&typeof u!="symbol"?a.setAttribute(i,u):a.removeAttribute(i);break;case"cols":case"rows":case"size":case"span":u!=null&&typeof u!="function"&&typeof u!="symbol"&&!isNaN(u)&&1<=u?a.setAttribute(i,u):a.removeAttribute(i);break;case"rowSpan":case"start":u==null||typeof u=="function"||typeof u=="symbol"||isNaN(u)?a.removeAttribute(i):a.setAttribute(i,u);break;case"popover":Be("beforetoggle",a),Be("toggle",a),sl(a,"popover",u);break;case"xlinkActuate":pn(a,"http://www.w3.org/1999/xlink","xlink:actuate",u);break;case"xlinkArcrole":pn(a,"http://www.w3.org/1999/xlink","xlink:arcrole",u);break;case"xlinkRole":pn(a,"http://www.w3.org/1999/xlink","xlink:role",u);break;case"xlinkShow":pn(a,"http://www.w3.org/1999/xlink","xlink:show",u);break;case"xlinkTitle":pn(a,"http://www.w3.org/1999/xlink","xlink:title",u);break;case"xlinkType":pn(a,"http://www.w3.org/1999/xlink","xlink:type",u);break;case"xmlBase":pn(a,"http://www.w3.org/XML/1998/namespace","xml:base",u);break;case"xmlLang":pn(a,"http://www.w3.org/XML/1998/namespace","xml:lang",u);break;case"xmlSpace":pn(a,"http://www.w3.org/XML/1998/namespace","xml:space",u);break;case"is":sl(a,"is",u);break;case"innerText":case"textContent":break;default:(!(2<i.length)||i[0]!=="o"&&i[0]!=="O"||i[1]!=="n"&&i[1]!=="N")&&(i=RC.get(i)||i,sl(a,i,u))}}function Vm(a,n,i,u,p,g){switch(i){case"style":_g(a,u,g);break;case"dangerouslySetInnerHTML":if(u!=null){if(typeof u!="object"||!("__html"in u))throw Error(s(61));if(i=u.__html,i!=null){if(p.children!=null)throw Error(s(60));a.innerHTML=i}}break;case"children":typeof u=="string"?gs(a,u):(typeof u=="number"||typeof u=="bigint")&&gs(a,""+u);break;case"onScroll":u!=null&&Be("scroll",a);break;case"onScrollEnd":u!=null&&Be("scrollend",a);break;case"onClick":u!=null&&(a.onclick=tc);break;case"suppressContentEditableWarning":case"suppressHydrationWarning":case"innerHTML":case"ref":break;case"innerText":case"textContent":break;default:if(!kg.hasOwnProperty(i))e:{if(i[0]==="o"&&i[1]==="n"&&(p=i.endsWith("Capture"),n=i.slice(2,p?i.length-7:void 0),g=a[la]||null,g=g!=null?g[i]:null,typeof g=="function"&&a.removeEventListener(n,g,p),typeof u=="function")){typeof g!="function"&&g!==null&&(i in a?a[i]=null:a.hasAttribute(i)&&a.removeAttribute(i)),a.addEventListener(n,u,p);break e}i in a?a[i]=u:u===!0?a.setAttribute(i,""):sl(a,i,u)}}}function Wt(a,n,i){switch(n){case"div":case"span":case"svg":case"path":case"a":case"g":case"p":case"li":break;case"img":Be("error",a),Be("load",a);var u=!1,p=!1,g;for(g in i)if(i.hasOwnProperty(g)){var w=i[g];if(w!=null)switch(g){case"src":u=!0;break;case"srcSet":p=!0;break;case"children":case"dangerouslySetInnerHTML":throw Error(s(137,n));default:lt(a,n,g,w,i,null)}}p&<(a,n,"srcSet",i.srcSet,i,null),u&<(a,n,"src",i.src,i,null);return;case"input":Be("invalid",a);var j=g=w=p=null,U=null,H=null;for(u in i)if(i.hasOwnProperty(u)){var te=i[u];if(te!=null)switch(u){case"name":p=te;break;case"type":w=te;break;case"checked":U=te;break;case"defaultChecked":H=te;break;case"value":g=te;break;case"defaultValue":j=te;break;case"children":case"dangerouslySetInnerHTML":if(te!=null)throw Error(s(137,n));break;default:lt(a,n,u,te,i,null)}}Ng(a,g,j,U,H,w,p,!1),ol(a);return;case"select":Be("invalid",a),u=w=g=null;for(p in i)if(i.hasOwnProperty(p)&&(j=i[p],j!=null))switch(p){case"value":g=j;break;case"defaultValue":w=j;break;case"multiple":u=j;default:lt(a,n,p,j,i,null)}n=g,i=w,a.multiple=!!u,n!=null?fs(a,!!u,n,!1):i!=null&&fs(a,!!u,i,!0);return;case"textarea":Be("invalid",a),g=p=u=null;for(w in i)if(i.hasOwnProperty(w)&&(j=i[w],j!=null))switch(w){case"value":u=j;break;case"defaultValue":p=j;break;case"children":g=j;break;case"dangerouslySetInnerHTML":if(j!=null)throw Error(s(91));break;default:lt(a,n,w,j,i,null)}Mg(a,u,p,g),ol(a);return;case"option":for(U in i)i.hasOwnProperty(U)&&(u=i[U],u!=null)&&(U==="selected"?a.selected=u&&typeof u!="function"&&typeof u!="symbol":lt(a,n,U,u,i,null));return;case"dialog":Be("beforetoggle",a),Be("toggle",a),Be("cancel",a),Be("close",a);break;case"iframe":case"object":Be("load",a);break;case"video":case"audio":for(u=0;
vendor: 27,589 bytes, line 9
9u<no.length;u++)Be(no[u],a);break;case"image":Be("error",a),Be("load",a);break;case"details":Be("toggle",a);break;case"embed":case"source":case"link":Be("error",a),Be("load",a);case"area":case"base":case"br":case"col":case"hr":case"keygen":case"meta":case"param":case"track":case"wbr":case"menuitem":for(H in i)if(i.hasOwnProperty(H)&&(u=i[H],u!=null))switch(H){case"children":case"dangerouslySetInnerHTML":throw Error(s(137,n));default:lt(a,n,H,u,i,null)}return;default:if(iu(n)){for(te in i)i.hasOwnProperty(te)&&(u=i[te],u!==void 0&&Vm(a,n,te,u,i,void 0));return}}for(j in i)i.hasOwnProperty(j)&&(u=i[j],u!=null&<(a,n,j,u,i,null))}function sj(a,n,i,u){switch(n){case"div":case"span":case"svg":case"path":case"a":case"g":case"p":case"li":break;case"input":var p=null,g=null,w=null,j=null,U=null,H=null,te=null;for(X in i){var re=i[X];if(i.hasOwnProperty(X)&&re!=null)switch(X){case"checked":break;case"value":break;case"defaultValue":U=re;default:u.hasOwnProperty(X)||lt(a,n,X,null,u,re)}}for(var Q in u){var X=u[Q];if(re=i[Q],u.hasOwnProperty(Q)&&(X!=null||re!=null))switch(Q){case"type":g=X;break;case"name":p=X;break;case"checked":H=X;break;case"defaultChecked":te=X;break;case"value":w=X;break;case"defaultValue":j=X;break;case"children":case"dangerouslySetInnerHTML":if(X!=null)throw Error(s(137,n));break;default:X!==re&<(a,n,Q,X,u,re)}}ru(a,w,j,U,H,te,g,p);return;case"select":X=w=j=Q=null;for(g in i)if(U=i[g],i.hasOwnProperty(g)&&U!=null)switch(g){case"value":break;case"multiple":X=U;default:u.hasOwnProperty(g)||lt(a,n,g,null,u,U)}for(p in u)if(g=u[p],U=i[p],u.hasOwnProperty(p)&&(g!=null||U!=null))switch(p){case"value":Q=g;break;case"defaultValue":j=g;break;case"multiple":w=g;default:g!==U&<(a,n,p,g,u,U)}n=j,i=w,u=X,Q!=null?fs(a,!!i,Q,!1):!!u!=!!i&&(n!=null?fs(a,!!i,n,!0):fs(a,!!i,i?[]:"",!1));return;case"textarea":X=Q=null;for(j in i)if(p=i[j],i.hasOwnProperty(j)&&p!=null&&!u.hasOwnProperty(j))switch(j){case"value":break;case"children":break;default:lt(a,n,j,null,u,p)}for(w in u)if(p=u[w],g=i[w],u.hasOwnProperty(w)&&(p!=null||g!=null))switch(w){case"value":Q=p;break;case"defaultValue":X=p;break;case"children":break;case"dangerouslySetInnerHTML":if(p!=null)throw Error(s(91));break;default:p!==g&<(a,n,w,p,u,g)}Tg(a,Q,X);return;case"option":for(var Me in i)Q=i[Me],i.hasOwnProperty(Me)&&Q!=null&&!u.hasOwnProperty(Me)&&(Me==="selected"?a.selected=!1:lt(a,n,Me,null,u,Q));for(U in u)Q=u[U],X=i[U],u.hasOwnProperty(U)&&Q!==X&&(Q!=null||X!=null)&&(U==="selected"?a.selected=Q&&typeof Q!="function"&&typeof Q!="symbol":lt(a,n,U,Q,u,X));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 qe in i)Q=i[qe],i.hasOwnProperty(qe)&&Q!=null&&!u.hasOwnProperty(qe)&<(a,n,qe,null,u,Q);for(H in u)if(Q=u[H],X=i[H],u.hasOwnProperty(H)&&Q!==X&&(Q!=null||X!=null))switch(H){case"children":case"dangerouslySetInnerHTML":if(Q!=null)throw Error(s(137,n));break;default:lt(a,n,H,Q,u,X)}return;default:if(iu(n)){for(var ct in i)Q=i[ct],i.hasOwnProperty(ct)&&Q!==void 0&&!u.hasOwnProperty(ct)&&Vm(a,n,ct,void 0,u,Q);for(te in u)Q=u[te],X=i[te],!u.hasOwnProperty(te)||Q===X||Q===void 0&&X===void 0||Vm(a,n,te,Q,u,X);return}}for(var B in i)Q=i[B],i.hasOwnProperty(B)&&Q!=null&&!u.hasOwnProperty(B)&<(a,n,B,null,u,Q);for(re in u)Q=u[re],X=i[re],!u.hasOwnProperty(re)||Q===X||Q==null&&X==null||lt(a,n,re,Q,u,X)}var Wm=null,Gm=null;function ac(a){return a.nodeType===9?a:a.ownerDocument}function Pv(a){switch(a){case"http://www.w3.org/2000/svg":return 1;case"http://www.w3.org/1998/Math/MathML":return 2;default:return 0}}function _v(a,n){if(a===0)switch(n){case"svg":return 1;case"math":return 2;default:return 0}return a===1&&n==="foreignObject"?0:a}function Km(a,n){return a==="textarea"||a==="noscript"||typeof n.children=="string"||typeof n.children=="number"||typeof n.children=="bigint"||typeof n.dangerouslySetInnerHTML=="object"&&n.dangerouslySetInnerHTML!==null&&n.dangerouslySetInnerHTML.__html!=null}var Hm=null;function ij(){var a=window.event;return a&&a.type==="popstate"?a===Hm?!1:(Hm=a,!0):(Hm=null,!1)}var Rv=typeof setTimeout=="function"?setTimeout:void 0,oj=typeof clearTimeout=="function"?clearTimeout:void 0,Iv=typeof Promise=="function"?Promise:void 0,lj=typeof queueMicrotask=="function"?queueMicrotask:typeof Iv<"u"?function(a){return Iv.resolve(null).then(a).catch(cj)}:Rv;function cj(a){setTimeout(function(){throw a})}function er(a){return a==="head"}function Uv(a,n){var i=n,u=0,p=0;do{var g=i.nextSibling;if(a.removeChild(i),g&&g.nodeType===8)if(i=g.data,i==="/$"){if(0<u&&8>u){i=u;var w=a.ownerDocument;if(i&1&&so(w.documentElement),i&2&&so(w.body),i&4)for(i=w.head,so(i),w=i.firstChild;w;){var j=w.nextSibling,U=w.nodeName;w[xi]||U==="SCRIPT"||U==="STYLE"||U==="LINK"&&w.rel.toLowerCase()==="stylesheet"||i.removeChild(w),w=j}}if(p===0){a.removeChild(g),ho(n);return}p--}else i==="$"||i==="$?"||i==="$!"?p++:u=i.charCodeAt(0)-48;else u=0;i=g}while(i);ho(n)}function Qm(a){var n=a.firstChild;for(n&&n.nodeType===10&&(n=n.nextSibling);n;){var i=n;switch(n=n.nextSibling,i.nodeName){case"HTML":case"HEAD":case"BODY":Qm(i),eu(i);continue;case"SCRIPT":case"STYLE":continue;case"LINK":if(i.rel.toLowerCase()==="stylesheet")continue}a.removeChild(i)}}function dj(a,n,i,u){for(;a.nodeType===1;){var p=i;if(a.nodeName.toLowerCase()!==n.toLowerCase()){if(!u&&(a.nodeName!=="INPUT"||a.type!=="hidden"))break}else if(u){if(!a[xi])switch(n){case"meta":if(!a.hasAttribute("itemprop"))break;return a;case"link":if(g=a.getAttribute("rel"),g==="stylesheet"&&a.hasAttribute("data-precedence"))break;if(g!==p.rel||a.getAttribute("href")!==(p.href==null||p.href===""?null:p.href)||a.getAttribute("crossorigin")!==(p.crossOrigin==null?null:p.crossOrigin)||a.getAttribute("title")!==(p.title==null?null:p.title))break;return a;case"style":if(a.hasAttribute("data-precedence"))break;return a;case"script":if(g=a.getAttribute("src"),(g!==(p.src==null?null:p.src)||a.getAttribute("type")!==(p.type==null?null:p.type)||a.getAttribute("crossorigin")!==(p.crossOrigin==null?null:p.crossOrigin))&&g&&a.hasAttribute("async")&&!a.hasAttribute("itemprop"))break;return a;default:return a}}else if(n==="input"&&a.type==="hidden"){var g=p.name==null?null:""+p.name;if(p.type==="hidden"&&a.getAttribute("name")===g)return a}else return a;if(a=Ba(a.nextSibling),a===null)break}return null}function uj(a,n,i){if(n==="")return null;for(;a.nodeType!==3;)if((a.nodeType!==1||a.nodeName!=="INPUT"||a.type!=="hidden")&&!i||(a=Ba(a.nextSibling),a===null))return null;return a}function Ym(a){return a.data==="$!"||a.data==="$?"&&a.ownerDocument.readyState==="complete"}function mj(a,n){var i=a.ownerDocument;if(a.data!=="$?"||i.readyState==="complete")n();else{var u=function(){n(),i.removeEventListener("DOMContentLoaded",u)};i.addEventListener("DOMContentLoaded",u),a._reactRetry=u}}function Ba(a){for(;a!=null;a=a.nextSibling){var n=a.nodeType;if(n===1||n===3)break;if(n===8){if(n=a.data,n==="$"||n==="$!"||n==="$?"||n==="F!"||n==="F")break;if(n==="/$")return null}}return a}var Xm=null;function Dv(a){a=a.previousSibling;for(var n=0;a;){if(a.nodeType===8){var i=a.data;if(i==="$"||i==="$!"||i==="$?"){if(n===0)return a;n--}else i==="/$"&&n++}a=a.previousSibling}return null}function Ov(a,n,i){switch(n=ac(i),a){case"html":if(a=n.documentElement,!a)throw Error(s(452));return a;case"head":if(a=n.head,!a)throw Error(s(453));return a;case"body":if(a=n.body,!a)throw Error(s(454));return a;default:throw Error(s(451))}}function so(a){for(var n=a.attributes;n.length;)a.removeAttributeNode(n[0]);eu(a)}var Da=new Map,Lv=new Set;function nc(a){return typeof a.getRootNode=="function"?a.getRootNode():a.nodeType===9?a:a.ownerDocument}var qn=Y.d;Y.d={f:pj,r:hj,D:fj,C:gj,L:yj,m:bj,X:xj,S:vj,M:wj};function pj(){var a=qn.f(),n=Hl();return a||n}function hj(a){var n=us(a);n!==null&&n.tag===5&&n.type==="form"?sb(n):qn.r(a)}var Ws=typeof document>"u"?null:document;function zv(a,n,i){var u=Ws;if(u&&typeof n=="string"&&n){var p=Ta(n);p='link[rel="'+a+'"][href="'+p+'"]',typeof i=="string"&&(p+='[crossorigin="'+i+'"]'),Lv.has(p)||(Lv.add(p),a={rel:a,crossOrigin:i,href:n},u.querySelector(p)===null&&(n=u.createElement("link"),Wt(n,"link",a),Dt(n),u.head.appendChild(n)))}}function fj(a){qn.D(a),zv("dns-prefetch",a,null)}function gj(a,n){qn.C(a,n),zv("preconnect",a,n)}function yj(a,n,i){qn.L(a,n,i);var u=Ws;if(u&&a&&n){var p='link[rel="preload"][as="'+Ta(n)+'"]';n==="image"&&i&&i.imageSrcSet?(p+='[imagesrcset="'+Ta(i.imageSrcSet)+'"]',typeof i.imageSizes=="string"&&(p+='[imagesizes="'+Ta(i.imageSizes)+'"]')):p+='[href="'+Ta(a)+'"]';var g=p;switch(n){case"style":g=Gs(a);break;case"script":g=Ks(a)}Da.has(g)||(a=b({rel:"preload",href:n==="image"&&i&&i.imageSrcSet?void 0:a,as:n},i),Da.set(g,a),u.querySelector(p)!==null||n==="style"&&u.querySelector(io(g))||n==="script"&&u.querySelector(oo(g))||(n=u.createElement("link"),Wt(n,"link",a),Dt(n),u.head.appendChild(n)))}}function bj(a,n){qn.m(a,n);var i=Ws;if(i&&a){var u=n&&typeof n.as=="string"?n.as:"script",p='link[rel="modulepreload"][as="'+Ta(u)+'"][href="'+Ta(a)+'"]',g=p;switch(u){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":g=Ks(a)}if(!Da.has(g)&&(a=b({rel:"modulepreload",href:a},n),Da.set(g,a),i.querySelector(p)===null)){switch(u){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(i.querySelector(oo(g)))return}u=i.createElement("link"),Wt(u,"link",a),Dt(u),i.head.appendChild(u)}}}function vj(a,n,i){qn.S(a,n,i);var u=Ws;if(u&&a){var p=ms(u).hoistableStyles,g=Gs(a);n=n||"default";var w=p.get(g);if(!w){var j={loading:0,preload:null};if(w=u.querySelector(io(g)))j.loading=5;else{a=b({rel:"stylesheet",href:a,"data-precedence":n},i),(i=Da.get(g))&&Zm(a,i);var U=w=u.createElement("link");Dt(U),Wt(U,"link",a),U._p=new Promise(function(H,te){U.onload=H,U.onerror=te}),U.addEventListener("load",function(){j.loading|=1}),U.addEventListener("error",function(){j.loading|=2}),j.loading|=4,rc(w,n,u)}w={type:"stylesheet",instance:w,count:1,state:j},p.set(g,w)}}}function xj(a,n){qn.X(a,n);var i=Ws;if(i&&a){var u=ms(i).hoistableScripts,p=Ks(a),g=u.get(p);g||(g=i.querySelector(oo(p)),g||(a=b({src:a,async:!0},n),(n=Da.get(p))&&Jm(a,n),g=i.createElement("script"),Dt(g),Wt(g,"link",a),i.head.appendChild(g)),g={type:"script",instance:g,count:1,state:null},u.set(p,g))}}function wj(a,n){qn.M(a,n);var i=Ws;if(i&&a){var u=ms(i).hoistableScripts,p=Ks(a),g=u.get(p);g||(g=i.querySelector(oo(p)),g||(a=b({src:a,async:!0,type:"module"},n),(n=Da.get(p))&&Jm(a,n),g=i.createElement("script"),Dt(g),Wt(g,"link",a),i.head.appendChild(g)),g={type:"script",instance:g,count:1,state:null},u.set(p,g))}}function Fv(a,n,i,u){var p=(p=he.current)?nc(p):null;if(!p)throw Error(s(446));switch(a){case"meta":case"title":return null;case"style":return typeof i.precedence=="string"&&typeof i.href=="string"?(n=Gs(i.href),i=ms(p).hoistableStyles,u=i.get(n),u||(u={type:"style",instance:null,count:0,state:null},i.set(n,u)),u):{type:"void",instance:null,count:0,state:null};case"link":if(i.rel==="stylesheet"&&typeof i.href=="string"&&typeof i.precedence=="string"){a=Gs(i.href);var g=ms(p).hoistableStyles,w=g.get(a);if(w||(p=p.ownerDocument||p,w={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},g.set(a,w),(g=p.querySelector(io(a)))&&!g._p&&(w.instance=g,w.state.loading=5),Da.has(a)||(i={rel:"preload",as:"style",href:i.href,crossOrigin:i.crossOrigin,integrity:i.integrity,media:i.media,hrefLang:i.hrefLang,referrerPolicy:i.referrerPolicy},Da.set(a,i),g||kj(p,a,i,w.state))),n&&u===null)throw Error(s(528,""));return w}if(n&&u!==null)throw Error(s(529,""));return null;case"script":return n=i.async,i=i.src,typeof i=="string"&&n&&typeof n!="function"&&typeof n!="symbol"?(n=Ks(i),i=ms(p).hoistableScripts,u=i.get(n),u||(u={type:"script",instance:null,count:0,state:null},i.set(n,u)),u):{type:"void",instance:null,count:0,state:null};default:throw Error(s(444,a))}}function Gs(a){return'href="'+Ta(a)+'"'}function io(a){return'link[rel="stylesheet"]['+a+"]"}function $v(a){return b({},a,{"data-precedence":a.precedence,precedence:null})}function kj(a,n,i,u){a.querySelector('link[rel="preload"][as="style"]['+n+"]")?u.loading=1:(n=a.createElement("link"),u.preload=n,n.addEventListener("load",function(){return u.loading|=1}),n.addEventListener("error",function(){return u.loading|=2}),Wt(n,"link",i),Dt(n),a.head.appendChild(n))}function Ks(a){return'[src="'+Ta(a)+'"]'}function oo(a){return"script[async]"+a}function Bv(a,n,i){if(n.count++,n.instance===null)switch(n.type){case"style":var u=a.querySelector('style[data-href~="'+Ta(i.href)+'"]');if(u)return n.instance=u,Dt(u),u;var p=b({},i,{"data-href":i.href,"data-precedence":i.precedence,href:null,precedence:null});return u=(a.ownerDocument||a).createElement("style"),Dt(u),Wt(u,"style",p),rc(u,i.precedence,a),n.instance=u;case"stylesheet":p=Gs(i.href);var g=a.querySelector(io(p));if(g)return n.state.loading|=4,n.instance=g,Dt(g),g;u=$v(i),(p=Da.get(p))&&Zm(u,p),g=(a.ownerDocument||a).createElement("link"),Dt(g);var w=g;return w._p=new Promise(function(j,U){w.onload=j,w.onerror=U}),Wt(g,"link",u),n.state.loading|=4,rc(g,i.precedence,a),n.instance=g;case"script":return g=Ks(i.src),(p=a.querySelector(oo(g)))?(n.instance=p,Dt(p),p):(u=i,(p=Da.get(g))&&(u=b({},i),Jm(u,p)),a=a.ownerDocument||a,p=a.createElement("script"),Dt(p),Wt(p,"link",u),a.head.appendChild(p),n.instance=p);case"void":return null;default:throw Error(s(443,n.type))}else n.type==="stylesheet"&&(n.state.loading&4)===0&&(u=n.instance,n.state.loading|=4,rc(u,i.precedence,a));return n.instance}function rc(a,n,i){for(var u=i.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),p=u.length?u[u.length-1]:null,g=p,w=0;w<u.length;w++){var j=u[w];if(j.dataset.precedence===n)g=j;else if(g!==p)break}g?g.parentNode.insertBefore(a,g.nextSibling):(n=i.nodeType===9?i.head:i,n.insertBefore(a,n.firstChild))}function Zm(a,n){a.crossOrigin==null&&(a.crossOrigin=n.crossOrigin),a.referrerPolicy==null&&(a.referrerPolicy=n.referrerPolicy),a.title==null&&(a.title=n.title)}function Jm(a,n){a.crossOrigin==null&&(a.crossOrigin=n.crossOrigin),a.referrerPolicy==null&&(a.referrerPolicy=n.referrerPolicy),a.integrity==null&&(a.integrity=n.integrity)}var sc=null;function Vv(a,n,i){if(sc===null){var u=new Map,p=sc=new Map;p.set(i,u)}else p=sc,u=p.get(i),u||(u=new Map,p.set(i,u));if(u.has(a))return u;for(u.set(a,null),i=i.getElementsByTagName(a),p=0;p<i.length;p++){var g=i[p];if(!(g[xi]||g[Qt]||a==="link"&&g.getAttribute("rel")==="stylesheet")&&g.namespaceURI!=="http://www.w3.org/2000/svg"){var w=g.getAttribute(n)||"";w=a+w;var j=u.get(w);j?j.push(g):u.set(w,[g])}}return u}function Wv(a,n,i){a=a.ownerDocument||a,a.head.insertBefore(i,n==="title"?a.querySelector("head > title"):null)}function Sj(a,n,i){if(i===1||n.itemProp!=null)return!1;switch(a){case"meta":case"title":return!0;case"style":if(typeof n.precedence!="string"||typeof n.href!="string"||n.href==="")break;return!0;case"link":if(typeof n.rel!="string"||typeof n.href!="string"||n.href===""||n.onLoad||n.onError)break;return n.rel==="stylesheet"?(a=n.disabled,typeof n.precedence=="string"&&a==null):!0;case"script":if(n.async&&typeof n.async!="function"&&typeof n.async!="symbol"&&!n.onLoad&&!n.onError&&n.src&&typeof n.src=="string")return!0}return!1}function Gv(a){return!(a.type==="stylesheet"&&(a.state.loading&3)===0)}var lo=null;function Cj(){}function jj(a,n,i){if(lo===null)throw Error(s(475));var u=lo;if(n.type==="stylesheet"&&(typeof i.media!="string"||matchMedia(i.media).matches!==!1)&&(n.state.loading&4)===0){if(n.instance===null){var p=Gs(i.href),g=a.querySelector(io(p));if(g){a=g._p,a!==null&&typeof a=="object"&&typeof a.then=="function"&&(u.count++,u=ic.bind(u),a.then(u,u)),n.state.loading|=4,n.instance=g,Dt(g);return}g=a.ownerDocument||a,i=$v(i),(p=Da.get(p))&&Zm(i,p),g=g.createElement("link"),Dt(g);var w=g;w._p=new Promise(function(j,U){w.onload=j,w.onerror=U}),Wt(g,"link",i),n.instance=g}u.stylesheets===null&&(u.stylesheets=new Map),u.stylesheets.set(n,a),(a=n.state.preload)&&(n.state.loading&3)===0&&(u.count++,n=ic.bind(u),a.addEventListener("load",n),a.addEventListener("error",n))}}function Aj(){if(lo===null)throw Error(s(475));var a=lo;return a.stylesheets&&a.count===0&&ep(a,a.stylesheets),0<a.count?function(n){var i=setTimeout(function(){if(a.stylesheets&&ep(a,a.stylesheets),a.unsuspend){var u=a.unsuspend;a.unsuspend=null,u()}},6e4);return a.unsuspend=n,function(){a.unsuspend=null,clearTimeout(i)}}:null}function ic(){if(this.count--,this.count===0){if(this.stylesheets)ep(this,this.stylesheets);else if(this.unsuspend){var a=this.unsuspend;this.unsuspend=null,a()}}}var oc=null;function ep(a,n){a.stylesheets=null,a.unsuspend!==null&&(a.count++,oc=new Map,n.forEach(qj,a),oc=null,ic.call(a))}function qj(a,n){if(!(n.state.loading&4)){var i=oc.get(a);if(i)var u=i.get(null);else{i=new Map,oc.set(a,i);for(var p=a.querySelectorAll("link[data-precedence],style[data-precedence]"),g=0;g<p.length;g++){var w=p[g];(w.nodeName==="LINK"||w.getAttribute("media")!=="not all")&&(i.set(w.dataset.precedence,w),u=w)}u&&i.set(null,u)}p=n.instance,w=p.getAttribute("data-precedence"),g=i.get(w)||u,g===u&&i.set(null,p),i.set(w,p),this.count++,u=ic.bind(this),p.addEventListener("load",u),p.addEventListener("error",u),g?g.parentNode.insertBefore(p,g.nextSibling):(a=a.nodeType===9?a.head:a,a.insertBefore(p,a.firstChild)),n.state.loading|=4}}var co={$$typeof:I,Provider:null,Consumer:null,_currentValue:ce,_currentValue2:ce,_threadCount:0};function Ej(a,n,i,u,p,g,w,j){this.tag=1,this.containerInfo=a,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=Yd(-1),this.entangledLanes=this.shellSuspendCounter=this.errorRecoveryDisabledLanes=this.expiredLanes=this.warmLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Yd(0),this.hiddenUpdates=Yd(null),this.identifierPrefix=u,this.onUncaughtError=p,this.onCaughtError=g,this.onRecoverableError=w,this.pooledCache=null,this.pooledCacheLanes=0,this.formState=j,this.incompleteTransitions=new Map}function Kv(a,n,i,u,p,g,w,j,U,H,te,re){return a=new Ej(a,n,i,w,j,U,H,re),n=1,g===!0&&(n|=24),g=va(3,null,null,n),a.current=g,g.stateNode=a,n=Iu(),n.refCount++,a.pooledCache=n,n.refCount++,g.memoizedState={element:u,isDehydrated:i,cache:n},Lu(g),a}function Hv(a){return a?(a=Cs,a):Cs}function Qv(a,n,i,u,p,g){p=Hv(p),u.context===null?u.context=p:u.pendingContext=p,u=Fn(n),u.payload={element:i},g=g===void 0?null:g,g!==null&&(u.callback=g),i=$n(a,u,n),i!==null&&(Ca(i,a,n),Li(i,a,n))}function Yv(a,n){if(a=a.memoizedState,a!==null&&a.dehydrated!==null){var i=a.retryLane;a.retryLane=i!==0&&i<n?i:n}}function tp(a,n){Yv(a,n),(a=a.alternate)&&Yv(a,n)}function Xv(a){if(a.tag===13){var n=Ss(a,67108864);n!==null&&Ca(n,a,67108864),tp(a,67108864)}}var lc=!0;function Nj(a,n,i,u){var p=V.T;V.T=null;var g=Y.p;try{Y.p=2,ap(a,n,i,u)}finally{Y.p=g,V.T=p}}function Tj(a,n,i,u){var p=V.T;V.T=null;var g=Y.p;try{Y.p=8,ap(a,n,i,u)}finally{Y.p=g,V.T=p}}function ap(a,n,i,u){if(lc){var p=np(u);if(p===null)Bm(a,n,u,cc,i),Jv(a,u);else if(Pj(p,a,n,i,u))u.stopPropagation();else if(Jv(a,u),n&4&&-1<Mj.indexOf(a)){for(;p!==null;){var g=us(p);if(g!==null)switch(g.tag){case 3:if(g=g.stateNode,g.current.memoizedState.isDehydrated){var w=Cr(g.pendingLanes);if(w!==0){var j=g;for(j.pendingLanes|=2,j.entangledLanes|=2;w;){var U=1<<31-ya(w);j.entanglements[1]|=U,w&=~U}rn(g),(nt&6)===0&&(Gl=Ce()+500,ao(0))}}break;case 13:j=Ss(g,2),j!==null&&Ca(j,g,2),Hl(),tp(g,2)}if(g=np(u),g===null&&Bm(a,n,u,cc,i),g===p)break;p=g}p!==null&&u.stopPropagation()}else Bm(a,n,u,null,i)}}function np(a){return a=lu(a),rp(a)}var cc=null;function rp(a){if(cc=null,a=ds(a),a!==null){var n=d(a);if(n===null)a=null;else{var i=n.tag;if(i===13){if(a=m(n),a!==null)return a;a=null}else if(i===3){if(n.stateNode.current.memoizedState.isDehydrated)return n.tag===3?n.stateNode.containerInfo:null;a=null}else n!==a&&(a=null)}}return cc=a,null}function Zv(a){switch(a){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(Ze()){case Pe:return 2;case Qe:return 8;case pt:case Za:return 32;case Ja:return 268435456;default:return 32}default:return 32}}var sp=!1,tr=null,ar=null,nr=null,uo=new Map,mo=new Map,rr=[],Mj="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 Jv(a,n){switch(a){case"focusin":case"focusout":tr=null;break;case"dragenter":case"dragleave":ar=null;break;case"mouseover":case"mouseout":nr=null;break;case"pointerover":case"pointerout":uo.delete(n.pointerId);break;case"gotpointercapture":case"lostpointercapture":mo.delete(n.pointerId)}}function po(a,n,i,u,p,g){return a===null||a.nativeEvent!==g?(a={blockedOn:n,domEventName:i,eventSystemFlags:u,nativeEvent:g,targetContainers:[p]},n!==null&&(n=us(n),n!==null&&Xv(n)),a):(a.eventSystemFlags|=u,n=a.targetContainers,p!==null&&n.indexOf(p)===-1&&n.push(p),a)}function Pj(a,n,i,u,p){switch(n){case"focusin":return tr=po(tr,a,n,i,u,p),!0;case"dragenter":return ar=po(ar,a,n,i,u,p),!0;case"mouseover":return nr=po(nr,a,n,i,u,p),!0;case"pointerover":var g=p.pointerId;return uo.set(g,po(uo.get(g)||null,a,n,i,u,p)),!0;case"gotpointercapture":return g=p.pointerId,mo.set(g,po(mo.get(g)||null,a,n,i,u,p)),!0}return!1}function e0(a){var n=ds(a.target);if(n!==null){var i=d(n);if(i!==null){if(n=i.tag,n===13){if(n=m(i),n!==null){a.blockedOn=n,jC(a.priority,function(){if(i.tag===13){var u=Sa();u=Xd(u);var p=Ss(i,u);p!==null&&Ca(p,i,u),tp(i,u)}});return}}else if(n===3&&i.stateNode.current.memoizedState.isDehydrated){a.blockedOn=i.tag===3?i.stateNode.containerInfo:null;return}}}a.blockedOn=null}function dc(a){if(a.blockedOn!==null)return!1;for(var n=a.targetContainers;0<n.length;){var i=np(a.nativeEvent);if(i===null){i=a.nativeEvent;var u=new i.constructor(i.type,i);ou=u,i.target.dispatchEvent(u),ou=null}else return n=us(i),n!==null&&Xv(n),a.blockedOn=i,!1;n.shift()}return!0}function t0(a,n,i){dc(a)&&i.delete(n)}function _j(){sp=!1,tr!==null&&dc(tr)&&(tr=null),ar!==null&&dc(ar)&&(ar=null),nr!==null&&dc(nr)&&(nr=null),uo.forEach(t0),mo.forEach(t0)}function uc(a,n){a.blockedOn===n&&(a.blockedOn=null,sp||(sp=!0,e.unstable_scheduleCallback(e.unstable_NormalPriority,_j)))}var mc=null;function a0(a){mc!==a&&(mc=a,e.unstable_scheduleCallback(e.unstable_NormalPriority,function(){mc===a&&(mc=null);for(var n=0;n<a.length;n+=3){var i=a[n],u=a[n+1],p=a[n+2];if(typeof u!="function"){if(rp(u||i)===null)continue;break}var g=us(i);g!==null&&(a.splice(n,3),n-=3,rm(g,{pending:!0,data:p,method:i.method,action:u},u,p))}}))}function ho(a){function n(U){return uc(U,a)}tr!==null&&uc(tr,a),ar!==null&&uc(ar,a),nr!==null&&uc(nr,a),uo.forEach(n),mo.forEach(n);for(var i=0;i<rr.length;i++){var u=rr[i];u.blockedOn===a&&(u.blockedOn=null)}for(;0<rr.length&&(i=rr[0],i.blockedOn===null);)e0(i),i.blockedOn===null&&rr.shift();if(i=(a.ownerDocument||a).$$reactFormReplay,i!=null)for(u=0;u<i.length;u+=3){var p=i[u],g=i[u+1],w=p[la]||null;if(typeof g=="function")w||a0(i);else if(w){var j=null;if(g&&g.hasAttribute("formAction")){if(p=g,w=g[la]||null)j=w.formAction;else if(rp(p)!==null)continue}else j=w.action;typeof j=="function"?i[u+1]=j:(i.splice(u,3),u-=3),a0(i)}}}function ip(a){this._internalRoot=a}pc.prototype.render=ip.prototype.render=function(a){var n=this._internalRoot;if(n===null)throw Error(s(409));var i=n.current,u=Sa();Qv(i,u,a,n,null,null)},pc.prototype.unmount=ip.prototype.unmount=function(){var a=this._internalRoot;if(a!==null){this._internalRoot=null;var n=a.containerInfo;Qv(a.current,2,null,a,null,null),Hl(),n[cs]=null}};function pc(a){this._internalRoot=a}pc.prototype.unstable_scheduleHydration=function(a){if(a){var n=vg();a={blockedOn:null,target:a,priority:n};for(var i=0;i<rr.length&&n!==0&&n<rr[i].priority;i++);rr.splice(i,0,a),i===0&&e0(a)}};var n0=t.version;if(n0!=="19.1.0")throw Error(s(527,n0,"19.1.0"));Y.findDOMNode=function(a){var n=a._reactInternals;if(n===void 0)throw typeof a.render=="function"?Error(s(188)):(a=Object.keys(a).join(","),Error(s(268,a)));return a=f(n),a=a!==null?y(a):null,a=a===null?null:a.stateNode,a};var Rj={bundleType:0,version:"19.1.0",rendererPackageName:"react-dom",currentDispatcherRef:V,reconcilerVersion:"19.1.0"};if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"){var hc=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!hc.isDisabled&&hc.supportsFiber)try{yi=hc.inject(Rj),ga=hc}catch{}}return go.createRoot=function(a,n){if(!c(a))throw Error(s(299));var i=!1,u="",p=vb,g=xb,w=wb,j=null;return n!=null&&(n.unstable_strictMode===!0&&(i=!0),n.identifierPrefix!==void 0&&(u=n.identifierPrefix),n.onUncaughtError!==void 0&&(p=n.onUncaughtError),n.onCaughtError!==void 0&&(g=n.onCaughtError),n.onRecoverableError!==void 0&&(w=n.onRecoverableError),n.unstable_transitionCallbacks!==void 0&&(j=n.unstable_transitionCallbacks)),n=Kv(a,1,!1,null,null,i,u,p,g,w,j,null),a[cs]=n.current,$m(a),new ip(n)},go.hydrateRoot=function(a,n,i){if(!c(a))throw Error(s(299));var u=!1,p="",g=vb,w=xb,j=wb,U=null,H=null;return i!=null&&(i.unstable_strictMode===!0&&(u=!0),i.identifierPrefix!==void 0&&(p=i.identifierPrefix),i.onUncaughtError!==void 0&&(g=i.onUncaughtError),i.onCaughtError!==void 0&&(w=i.onCaughtError),i.onRecoverableError!==void 0&&(j=i.onRecoverableError),i.unstable_transitionCallbacks!==void 0&&(U=i.unstable_transitionCallbacks),i.formState!==void 0&&(H=i.formState)),n=Kv(a,1,!0,n,i??null,u,p,g,w,j,U,H),n.context=Hv(null),i=n.current,u=Sa(),u=Xd(u),p=Fn(u),p.callback=null,$n(i,p,u),i=u,n.current.lanes=i,vi(n,i),rn(n),a[cs]=n.current,$m(a),new pc(n)},go.version="19.1.0",go}var p0;function Wj(){if(p0)return lp.exports;p0=1;function e(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}return e(),lp.exports=Vj(),lp.exports}var Qh=Wj();const Gj=yd(Qh),Kj=gd({__proto__:null,default:Gj},[Qh]);function Hj(e,t){if(e instanceof RegExp)return{keys:!1,pattern:e};var r,s,c,d,m=[],h="",f=e.split("/");for(f[0]||f.shift();c=f.shift();
9)r=c[0],r==="*"?(m.push(r),h+=c[1]==="?"?"(?:/(.*))?":"/(.*)"):r===":"?(s=c.indexOf("?",1),d=c.indexOf(".",1),m.push(c.substring(1,~s?s:~d?d:c.length)),h+=~s&&!~d?"(?:/([^/]+?))?":"/([^/]+?)",~d&&(h+=(~s?"?":"")+"\\"+c.substring(d))):h+="/"+c;return{keys:m,pattern:new RegExp("^"+h+(t?"(?=$|/)":"/?$"),"i")}}var S=bd();const _=yd(S),Bo=gd({__proto__:null,default:_},[S]);var pp={exports:{}},hp={};var h0;function Qj(){if(h0)return hp;h0=1;var e=bd();function t(v,x){return v===x&&(v!==0||1/v===1/x)||v!==v&&x!==x}var r=typeof Object.is=="function"?Object.is:t,s=e.useState,c=e.useEffect,d=e.useLayoutEffect,m=e.useDebugValue;function h(v,x){var k=x(),E=s({inst:{value:k,getSnapshot:x}}),C=E[0].inst,N=E[1];return d(function(){C.value=k,C.getSnapshot=x,f(C)&&N({inst:C})},[v,k,x]),c(function(){return f(C)&&N({inst:C}),v(function(){f(C)&&N({inst:C})})},[v]),m(k),k}function f(v){var x=v.getSnapshot;v=v.value;try{var k=x();return!r(v,k)}catch{return!0}}function y(v,x){return x()}var b=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?y:h;return hp.useSyncExternalStore=e.useSyncExternalStore!==void 0?e.useSyncExternalStore:b,hp}var f0;function Yj(){return f0||(f0=1,pp.exports=Qj()),pp.exports}var Xj=Yj();const Zj=Bo.useInsertionEffect,Jj=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",eA=Jj?S.useLayoutEffect:S.useEffect,tA=Zj||eA,aw=e=>{const t=S.useRef([e,(...r)=>t[0](...r)]).current;return tA(()=>{t[0]=e}),t[1]},aA="popstate",Yh="pushState",Xh="replaceState",nA="hashchange",g0=[aA,Yh,Xh,nA],rA=e=>{for(const t of g0)addEventListener(t,e);return()=>{for(const t of g0)removeEventListener(t,e)}},nw=(e,t)=>Xj.useSyncExternalStore(rA,e,t),y0=()=>location.search,sA=({ssrSearch:e}={})=>nw(y0,e!=null?()=>e:y0),b0=()=>location.pathname,iA=({ssrPath:e}={})=>nw(b0,e!=null?()=>e:b0),oA=(e,{replace:t=!1,state:r=null}={})=>history[t?Xh:Yh](r,"",e),lA=(e={})=>[iA(e),oA],v0=Symbol.for("wouter_v3");if(typeof history<"u"&&typeof window[v0]>"u"){for(const e of[Yh,Xh]){const t=history[e];history[e]=function(){const r=t.apply(this,arguments),s=new Event(e);return s.arguments=arguments,dispatchEvent(s),r}}Object.defineProperty(window,v0,{value:!0})}const cA=(e,t)=>t.toLowerCase().indexOf(e.toLowerCase())?"~"+t:t.slice(e.length)||"/",rw=(e="")=>e==="/"?"":e,dA=(e,t)=>e[0]==="~"?e.slice(1):rw(t)+e,uA=(e="",t)=>cA(rh(rw(e)),rh(t)),mA=e=>e[0]==="?"?e.slice(1):e,rh=e=>{try{return decodeURI(e)}catch{return e}},pA=e=>rh(mA(e)),sw={hook:lA,searchHook:sA,parser:Hj,base:"",ssrPath:void 0,ssrSearch:void 0,ssrContext:void 0,hrefs:e=>e,aroundNav:(e,t,r)=>e(t,r)},iw=S.createContext(sw),ns=()=>S.useContext(iw),ow={},lw=S.createContext(ow),hA=()=>S.useContext(lw),vd=e=>{const[t,r]=e.hook(e);return[uA(e.base,t),aw((s,c)=>e.aroundNav(r,dA(s,e.base),c))]},wr=()=>vd(ns()),Zh=()=>{const e=ns();return pA(e.searchHook(e))},Jh=(e,t,r,s)=>{const{pattern:c,keys:d}=t instanceof RegExp?{keys:!1,pattern:t}:e(t||"*",s),m=c.exec(r)||[],[h,...f]=m;return h!==void 0?[!0,(()=>{const y=d!==!1?Object.fromEntries(d.map((v,x)=>[v,f[x]])):m.groups;let b={...f};return y&&Object.assign(b,y),b})(),...s?[h]:[]]:[!1,null]},cw=e=>Jh(ns().parser,e,wr()[0]),dw=({children:e,...t})=>{const r=ns(),s=t.hook?sw:r;let c=s;const[d,m=t.ssrSearch??""]=t.ssrPath?.split("?")??[];d&&(t.ssrSearch=m,t.ssrPath=d),t.hrefs=t.hrefs??t.hook?.hrefs,t.searchHook=t.searchHook??t.hook?.searchHook;let h=S.useRef({}),f=h.current,y=f;for(let b in s){const v=b==="base"?s[b]+(t[b]??""):t[b]??s[b];f===y&&v!==y[b]&&(h.current=y={...y}),y[b]=v,(v!==s[b]||v!==c[b])&&(c=y)}return S.createElement(iw.Provider,{value:c,children:e})},x0=({children:e,component:t},r)=>t?S.createElement(t,{params:r}):typeof e=="function"?e(r):e,fA=e=>{let t=S.useRef(ow);const r=t.current;return t.current=Object.keys(e).length!==Object.keys(r).length||Object.entries(e).some(([s,c])=>c!==r[s])?e:r},Ft=({path:e,nest:t,match:r,...s})=>{const c=ns(),[d]=vd(c),[m,h,f]=r??Jh(c.parser,e,d,t),y=fA({...hA(),...h});if(!m)return null;const b=f?S.createElement(dw,{base:f},x0(s,y)):x0(s,y);return S.createElement(lw.Provider,{value:y,children:b})},Te=S.forwardRef((e,t)=>
9{const r=ns(),[s,c]=vd(r),{to:d="",href:m=d,onClick:h,asChild:f,children:y,className:b,replace:v,state:x,transition:k,...E}=e,C=aw(q=>{q.ctrlKey||q.metaKey||q.altKey||q.shiftKey||q.button!==0||(h?.(q),q.defaultPrevented||(q.preventDefault(),c(m,e)))}),N=r.hrefs(m[0]==="~"?m.slice(1):r.base+m,r);return f&&S.isValidElement(y)?S.cloneElement(y,{onClick:C,href:N}):S.createElement("a",{...E,onClick:C,href:N,className:b?.call?b(s===m):b,children:y,ref:t})}),uw=e=>Array.isArray(e)?e.flatMap(t=>uw(t&&t.type===S.Fragment?t.props.children:t)):[e],gA=({children:e,location:t})=>{const r=ns(),[s]=vd(r);for(const c of uw(e)){let d=0;if(S.isValidElement(c)&&(d=Jh(r.parser,c.props.path,t||s,c.props.nest))[0])return S.cloneElement(c,{match:d})}return null};var yA=class mw extends Error{static kind="ClerkError";clerkError=!0;code;longMessage;docsUrl;cause;get name(){return this.constructor.name}constructor(t){super(new.target.formatMessage(new.target.kind,t.message,t.code,t.docsUrl),{cause:t.cause}),Object.setPrototypeOf(this,mw.prototype),this.code=t.code,this.docsUrl=t.docsUrl,this.longMessage=t.longMessage,this.cause=t.cause}toString(){return`[${this.name}] 10Message:${this.message}`}static formatMessage(t,r,s,c){const d="Clerk:",m=new RegExp(d.replace(" ","\\s*"),"i");return r=r.replace(m,""),r=`${d} ${r.trim()} 11 12(code="${s}") 13 14`,c&&(r+=` 15 16Docs: ${c}`),r}},ef=class pw extends yA{static kind="ClerkRuntimeError";clerkRuntimeError=!0;constructor(t,r){super({...r,message:t}),Object.setPrototypeOf(this,pw.prototype)}};const bA=Object.freeze({InvalidProxyUrlErrorMessage:"The proxyUrl passed to Clerk is invali
16d. The expected value for proxyUrl is an absolute URL or a relative path with a leading '/'. (key={{url}})",InvalidPublishableKeyErrorMessage:"The publishableKey passed to Clerk is invalid. You can get your Publishable key at https://dashboard.clerk.com/last-active?path=api-keys. (key={{key}})",MissingPublishableKeyErrorMessage:"Missing publishableKey. You can get your key at https://dashboard.clerk.com/last-active?path=api-keys.",MissingSecretKeyErrorMessage:"Missing secretKey. You can get your key at https://dashboard.clerk.com/last-active?path=api-keys.",MissingClerkProvider:"{{source}} can only be used within the <ClerkProvider /> component. Learn more: https://clerk.com/docs/components/clerk-provider"});function hw({packageName:e,customMessages:t}){let r=e;function s(d,m){if(!m)return`${r}: ${d}`;let h=d;const f=d.matchAll(/{{([a-zA-Z0-9-_]+)}}/g);for(const y of f){const b=(m[y[1]]||"").toString();h=h.replace(`{{${y[1]}}}`,b)}return`${r}: ${h}`}const c={...bA,...t};return{setPackageName({packageName:d}){return typeof d=="string"&&(r=d),this},setMessages({customMessages:d}){return Object.assign(c,d||{}),this},throwInvalidPublishableKeyError(d){throw new Error(s(c.InvalidPublishableKeyErrorMessage,d))},throwInvalidProxyUrl(d){throw new Error(s(c.InvalidProxyUrlErrorMessage,d))},throwMissingPublishableKeyError(){throw new Error(s(c.MissingPublishableKeyErrorMessage))},throwMissingSecretKeyError(){throw new Error(s(c.MissingSecretKeyErrorMessage))},throwMissingClerkProviderError(d){throw new Error(s(c.MissingClerkProvider,d))},throw(d){throw new Error(s(d))}}}const vA=[".lcl.dev",".lclstage.dev",".lclclerk.com"],xA=[".lcl.dev",".stg.dev",".lclstage.dev",".stgstage.dev",".dev.lclclerk.com",".stg.lclclerk.com",".accounts.lclclerk.com","accountsstage.dev","accounts.dev"],fw=e=>typeof atob<"u"&&typeof atob=="function"?atob(e):typeof globalThis.Buffer<"u"?globalThis.Buffer.from(e,"base64").toString():e,wA=e=>typeof btoa<"u"&&typeof btoa=="function"?btoa(e):typeof globalThis.Buffer<"u"?globalThis.Buffer.from(e).toString("base64"):e,tf="pk_live_",gw="pk_test_",kA=/^(([a-z]+)-){2}([0-9]{1,2})\.clerk\.accounts([a-z.]*)(dev|com)$/i;function SA(e){return`${kA.test(e)||e.startsWith("clerk.")&&vA.some(t=>e.endsWith(t))?gw:tf}${wA(`${e}$`).replace(/=+$/,"")}`}function CA(e,t){if(AA(t))return t;const r=e.toLowerCase().replace(/:\d+$/,"");if(!r)throw new Error("Host must not be empty.");return SA(`clerk.${r}`)}function yw(e){if(!e.endsWith("$"))return!1;const t=e.slice(0,-1);return t.includes("$")?!1:t.includes(".")}function fp(e,t={}){if(e=e||"",!e||!w0(e)){if(t.fatal&&!e)throw new Error("Publishable key is missing. Ensure that your publishable key is correctly configured. Double-check your environment configuration for your keys, or access them here: https://dashboard.clerk.com/last-active?path=api-keys");if(t.fatal&&!w0(e))throw new Error("Publishable key not valid.");return null}const r=e.startsWith(tf)?"production":"development";let s;try{s=fw(e.split("_")[2])}catch{if(t.fatal)throw new Error("Publishable key not valid: Failed to decode key.");return null}if(!yw(s)){if(t.fatal)throw new Error("Publishable key not valid: Decoded key has invalid format.");return null}let c=s.slice(0,-1);return t.proxyUrl?c=t.proxyUrl:r!=="development"&&t.domain&&t.isSatellite&&(c=`clerk.${t.domain}`),{instanceType:r,frontendApi:c}}function w0(e=""){try{if(!(e.startsWith(tf)||e.startsWith(gw)))return!1;const t=e.split("_");if(t.length!==3)return!1;const r=t[2];return r?yw(fw(r)):!1}catch{return!1}}function jA(){const e=new Map;return{isDevOrStagingUrl:t=>{if(!t)return!1;const r=typeof t=="string"?t:t.hostname;let s=e.get(r);return s===void 0&&(s=xA.some(c=>r.endsWith(c)),e.set(r,s)),s}}}function AA(e){return e.startsWith("test_")||e.startsWith("pk_test_")}const qA={strict_mfa:{afterMinutes:10,level:"multi_factor"},strict:{afterMinutes:10,level:"second_factor"},moderate:{afterMinutes:60,level:"second_factor"},lax:{afterMinutes:1440,level:"second_factor"}},EA=new Set(["first_factor","second_factor","multi_factor"]),NA=new Set(["strict_mfa","strict","moderate","lax"]),k0=new Set(["o","org","organization"]),S0=new Set(["u","user"]),TA=e=>typeof e=="number"&&e>0,MA=e=>EA.has(e),PA=e=>
16NA.has(e),C0=e=>typeof e=="number"&&Number.isFinite(e)&&(e===-1||e>=0),gp=e=>e.replace(/^(org:)*/,"org:"),_A=(e,t)=>{const{orgId:r,orgRole:s,orgPermissions:c}=t,d=e.role!==void 0,m=e.permission!==void 0;return!d&&!m?"skip":d&&typeof e.role!="string"||m&&typeof e.permission!="string"||!r||d&&(typeof s!="string"||!s||gp(s)!==gp(e.role))||m&&(!Array.isArray(c)||!c.includes(gp(e.permission)))?"fail":"pass"},j0=(e,t)=>{const{org:r,user:s}=IA(e),[c,d]=t.split(":"),m=d!==void 0,h=c,f=d||c;if(m&&!k0.has(h)&&!S0.has(h))throw new Error(`Invalid scope: ${h}`);if(m){if(k0.has(h))return r.includes(f);if(S0.has(h))return s.includes(f)}return[...r,...s].includes(f)},RA=(e,t)=>{const{features:r,plans:s}=t,c=e.feature!==void 0,d=e.plan!==void 0;if(!c&&!d)return"skip";if(c&&typeof e.feature!="string"||d&&typeof e.plan!="string")return"fail";if(c){if(typeof r!="string"||!r)return"fail";try{if(!j0(r,e.feature))return"fail"}catch{return"fail"}}if(d){if(typeof s!="string"||!s)return"fail";try{if(!j0(s,e.plan))return"fail"}catch{return"fail"}}return"pass"},IA=e=>{const t=[],r=[];if(!e)return{org:t,user:r};const s=e.split(",");for(let c=0;c<s.length;c++){const d=s[c].trim(),m=d.indexOf(":");if(m===-1)throw new Error(`Invalid claim element (missing colon): ${d}`);const h=d.slice(0,m),f=d.slice(m+1);h==="o"?t.push(f):h==="u"?r.push(f):(h==="ou"||h==="uo")&&(t.push(f),r.push(f))}return{org:t,user:r}},UA=e=>{if(!e)return!1;const t=c=>typeof c=="string"?qA[c]:c,r=typeof e=="string"&&PA(e),s=typeof e=="object"&&MA(e.level)&&TA(e.afterMinutes);return r||s?t.bind(null,e):!1},DA=(e,{factorVerificationAge:t})=>{if(e.reverification===void 0)return"skip";if(!t||!Array.isArray(t)||t.length!==2||!C0(t[0])||!C0(t[1]))return"fail";const r=UA(e.reverification);if(!r)return"fail";const{level:s,afterMinutes:c}=r(),[d,m]=t;if(d===-1&&m===-1)return"fail";const h=d!==-1&&c>d,f=m!==-1&&c>m;switch(s){case"first_factor":return h?"pass":"fail";case"second_factor":return m===-1?h?"pass":"fail":f?"pass":"fail";case"multi_factor":return m===-1?h?"pass":"fail":d===-1?"fail":h&&f?"pass":"fail"}},OA=e=>e.some(t=>t==="pass")&&e.every(t=>t==="pass"||t==="skip"),LA=e=>t=>e.userId?OA([_A(t,e),RA(t,e),DA(t,e)]):!1,zA=({authObject:{sessionId:e,sessionStatus:t,userId:r,actor:s,orgId:c,orgRole:d,orgSlug:m,signOut:h,getToken:f,has:y,sessionClaims:b},options:{treatPendingAsSignedOut:v=!0}})=>{if(e===void 0&&r===void 0)return{actor:void 0,getToken:f,has:()=>!1,isLoaded:!1,isSignedIn:void 0,orgId:void 0,orgRole:void 0,orgSlug:void 0,sessionClaims:void 0,sessionId:e,signOut:h,userId:r};if(e===null&&r===null)return{actor:null,getToken:f,has:()=>!1,isLoaded:!0,isSignedIn:!1,orgId:null,orgRole:null,orgSlug:null,sessionClaims:null,sessionId:e,signOut:h,userId:r};if(v&&t==="pending")return{actor:null,getToken:f,has:()=>!1,isLoaded:!0,isSignedIn:!1,orgId:null,orgRole:null,orgSlug:null,sessionClaims:null,sessionId:null,
16signOut:h,userId:null};if(e&&b&&r&&c&&d)return{actor:s||null,getToken:f,has:y,isLoaded:!0,isSignedIn:!0,orgId:c,orgRole:d,orgSlug:m||null,sessionClaims:b,sessionId:e,signOut:h,userId:r};if(e&&b&&r&&!c)return{actor:s||null,getToken:f,has:y,isLoaded:!0,isSignedIn:!0,orgId:null,orgRole:null,orgSlug:null,sessionClaims:b,sessionId:e,signOut:h,userId:r}},A0=(e,t,r)=>!e&&r?FA(r):$A(t),FA=e=>{const t=e.userId,r=e.user,s=e.sessionId,c=e.sessionStatus,d=e.sessionClaims;return{userId:t,user:r,sessionId:s,session:e.session,sessionStatus:c,sessionClaims:d,organization:e.organization,orgId:e.orgId,orgRole:e.orgRole,orgPermissions:e.orgPermissions,orgSlug:e.orgSlug,actor:e.actor,factorVerificationAge:e.factorVerificationAge}},$A=e=>{const t=e.user?e.user.id:e.user,r=e.user,s=e.session?e.session.id:e.session,c=e.session,d=e.session?.status,m=e.session?e.session.lastActiveToken?.jwt?.claims:null,h=e.session?e.session.factorVerificationAge:null,f=c?.actor,y=e.organization,b=e.organization?e.organization.id:e.organization,v=y?.slug,x=y&&r?.organizationMemberships?.find(E=>E.organization.id===b),k=x&&x.permissions;return{userId:t,user:r,sessionId:s,session:c,sessionStatus:d,sessionClaims:m,organization:y,orgId:b,orgRole:x&&x.role,orgSlug:v,orgPermissions:k,actor:f,factorVerificationAge:h}},BA="METHOD_CALLED",VA=.1;function So(e,t){return{event:BA,eventSamplingRate:VA,payload:{method:e,...t}}}const WA="ClerkJS:";function GA(){throw new Error(`${WA} Clerk instance not found. Make sure Clerk is initialized before using any Clerk components.`)}var di=class{constructor(){this.listeners=new Set,this.subscribe=this.subscribe.bind(this)}subscribe(e){return this.listeners.add(e),this.onSubscribe(),()=>{this.listeners.delete(e),this.onUnsubscribe()}}hasListeners(){return this.listeners.size>0}onSubscribe(){}onUnsubscribe(){}},KA=class extends di{#e;#t;#a;constructor(){super(),this.#a=e=>{if(typeof window<"u"&&window.addEventListener){const t=()=>e();return window.addEventListener("visibilitychange",t,!1),()=>{window.removeEventListener("visibilitychange",t)}}}}onSubscribe(){this.#t||this.setEventListener(this.#a)}onUnsubscribe(){this.hasListeners()||(this.#t?.(),this.#t=void 0)}setEventListener(e){this.#a=e,this.#t?.(),this.#t=e(t=>{typeof t=="boolean"?this.setFocused(t):this.onFocus()})}setFocused(e){this.#e!==e&&(this.#e=e,this.onFocus())}onFocus(){const e=this.isFocused();this.listeners.forEach(t=>{t(e)})}isFocused(){return typeof this.#e=="boolean"?this.#e:globalThis.document?.visibilityState!=="hidden"}},af=new KA,HA={setTimeout:(e,t)=>setTimeout(e,t),clearTimeout:e=>clearTimeout(e),setInterval:(e,t)=>setInterval(e,t),clearInterval:e=>clearInterval(e)},QA=class{#e=HA;#t=!1;setTimeoutProvider(e){this.#e=e}setTimeout(e,t){return this.#e.setTimeout(e,t)}clearTimeout(e){this.#e.clearTimeout(e)}setInterval(e,t){return this.#e.setInterval(e,t)}clearInterval(e){this.#e.clearInterval(e)}},Kr=new QA;function YA(e){setTimeout(e,0)}var XA=typeof window>"u"||"Deno"in globalThis;function ea(){}function ZA(e,t){return typeof e=="function"?e(t):e}function sh(e){return typeof e=="number"&&e>=0&&e!==1/0}function bw(e,t){return Math.max(e+(t||0)-Date.now(),0)}function fr(e,t){return typeof e=="function"?e(t):e}function Aa(e,t){return typeof e=="function"?e(t):e}function q0(e,t){const{type:r="all",exact:s,fetchStatus:c,predicate:d,queryKey:m,stale:h}=e;if(m){if(s){if(t.queryHash!==nf(m,t.options))return!1}else if(!Mo(t.queryKey,m))return!1}if(r!=="all"){const f=t.isActive();if(r==="active"&&!f||r==="inactive"&&f)return!1}return!(typeof h=="boolean"&&t.isStale()!==h||c&&c!==t.state.fetchStatus||d&&!d(t))}function E0(e,t){const{exact:r,status:s,predicate:c,mutationKey:d}=e;if(d){if(!t.options.mutationKey)return!1;if(r){if(es(t.options.mutationKey)!==es(d))return!1}else if(!Mo(t.options.mutationKey,d))return!1}return!(s&&t.state.status!==s||c&&!c(t))}function nf(e,t){return(t?.queryKeyHashFn||es)(e)}function es(e){return JSON.stringify(e,(t,r)=>ih(r)?Object.keys(r).sort().reduce((s,c)=>(s[c]=r[c],s),{}):r)}function Mo(e,t){return e===t?!0:typeof e!=typeof t?!1:e&&t&&typeof e=="object"&&typeof t=="object"?Object.keys(t).every(r=>Mo(e[r],t[r])):!1}var JA=Object.prototype.hasOwnProperty;function vw(e,t,r=0){if(e===t)return e;if(r>500)return t;const s=N0(e)&&N0(t);if(!s&&!(ih(e)&&ih(t)))return t;const d=(s?e:Object.keys(e)).length,m=s?t:Object.keys(t),h=m.length,f=s?new Array(h):{};let y=0;for(let b=0;b<h;b++){const v=s?b:m[b],x=e[v],k=t[v];if(x===k){f[v]=x,(s?b<d:JA.call(e,v))&&y++;continue}if(x===null||k===null||typeof x!="object"||typeof k!="object"){f[v]=k;continue}const E=vw(x,k,r+1);f[v]=E,E===x&&y++}return d===h&&y===d?e:f}function Qc(e,t){if(!t||Object.keys(e).length!==Object.keys(t).length)return!1;for(const r in e)if(e[r]!==t[r])return!1;return!0}function N0(e){return Array.isArray(e)&&e.length===Object.keys(e).length}function ih(e){if(!T0(e))return!1;const t=e.constructor;if(t===void 0)return!0;const r=t.prototype;return!(!T0(r)||!r.hasOwnProperty("isPrototypeOf")||Object.getPrototypeOf(e)!==Object.prototype)}function T0(e){return Object.prototype.toString.call(e)==="[object Object]"}function eq(e){return new Promise(t=>{Kr.setTimeout(t,e)})}function oh(e,t,r){return typeof r.structuralSharing=="function"?r.structuralSharing(e,t):r.structuralSharing!==!1?vw(e,t):t}function tq(e,t,r=0){const s=[...e,t];return r&&s.length>r?s.slice(1):s}function aq(e,t,r=0){const s=[t,...e];return r&&s.length>r?s.slice(0,-1):s}var rf=Symbol();function xw(e,t){return!e.queryFn&&t?.initialPromise?()=>t.initialPromise:!e.queryFn||e.queryFn===rf?()=>Promise.reject(new Error(`Missing queryFn: '${e.queryHash}'`)):e.queryFn}function sf(e,t){return typeof e=="function"?e(...t):!!e}function nq(e,t,r){let s=!1,c;return Object.defineProperty(e,"signal",{enumerable:!0,get:()=>(c??=t(),s||(s=!0,c.aborted?r():c.addEventListener("abort",r,{once:!0})),c)}),e}var Po=(()=>{let e=()=>XA;return{isServer(){return e()},setIsServer(t){e=t}}})();function lh(){let e,t;const r=new Promise((c,d)=>{e=c,t=d});r.status="pending",r.catch(()=>{});function s(c){Object.assign(r,c),delete r.resolve,delete r.reject}return r.resolve=c=>{s({status:"fulfilled",value:c}),e(c)},r.reject=c=>{s({status:"rejected",reason:c}),t(c)},r}var rq=YA;function sq(){let e=[],t=0,r=h=>{h()},s=h=>{h()},c=rq;const d=h=>{t?e.push(h):c(()=>{r(h)})},m=()=>{const h=e;e=[],h.length&&c(()=>{s(()=>{h.forEach(f=>{r(f)})})})};return{batch:h=>{let f;t++;try{f=h()}
vendor: 1,460 bytes, line 16
16finally{t--,t||m()}return f},batchCalls:h=>(...f)=>{d(()=>{h(...f)})},schedule:d,setNotifyFunction:h=>{r=h},setBatchNotifyFunction:h=>{s=h},setScheduler:h=>{c=h}}}var It=sq(),iq=class extends di{#e=!0;#t;#a;constructor(){super(),this.#a=e=>{if(typeof window<"u"&&window.addEventListener){const t=()=>e(!0),r=()=>e(!1);return window.addEventListener("online",t,!1),window.addEventListener("offline",r,!1),()=>{window.removeEventListener("online",t),window.removeEventListener("offline",r)}}}}onSubscribe(){this.#t||this.setEventListener(this.#a)}onUnsubscribe(){this.hasListeners()||(this.#t?.(),this.#t=void 0)}setEventListener(e){this.#a=e,this.#t?.(),this.#t=e(this.setOnline.bind(this))}setOnline(e){this.#e!==e&&(this.#e=e,this.listeners.forEach(r=>{r(e)}))}isOnline(){return this.#e}},Yc=new iq;function oq(e){return Math.min(1e3*2**e,3e4)}function ww(e){return(e??"online")==="online"?Yc.isOnline():!0}var ch=class extends Error{constructor(e){super("CancelledError"),this.revert=e?.revert,this.silent=e?.silent}};function kw(e){let t=!1,r=0,s;const c=lh(),d=()=>c.status!=="pending",m=C=>{if(!d()){const N=new ch(C);x(N),e.onCancel?.(N)}},h=()=>{t=!0},f=()=>{t=!1},y=()=>af.isFocused()&&(e.networkMode==="always"||Yc.isOnline())&&e.canRun(),b=()=>ww(e.networkMode)&&e.canRun(),v=C=>{d()||(s?.(),c.resolve(C))},x=C=>{d()||(s?.(),c.reject(C))},k=()=>new Promise(C=>{s=N=>{(d()||y())&&C(N)},e.onPause?.()}).then(()=>{s=void 0,d()||e.onContinue?.()}),E=()=>
16{if(d())return;let C;const N=r===0?e.initialPromise:void 0;try{C=N??e.fn()}catch(q){C=Promise.reject(q)}Promise.resolve(C).then(v).catch(q=>{if(d())return;const R=e.retry??(Po.isServer()?0:3),I=e.retryDelay??oq,$=typeof I=="function"?I(r,q):I,z=R===!0||typeof R=="number"&&r<R||typeof R=="function"&&R(r,q);if(t||!z){x(q);return}r++,e.onFail?.(r,q),eq($).then(()=>y()?void 0:k()).then(()=>{t?x(q):E()})})};return{promise:c,status:()=>c.status,cancel:m,continue:()=>(s?.(),c),cancelRetry:h,continueRetry:f,canStart:b,start:()=>(b()?E():k().then(E),c)}}var Sw=class{#e;destroy(){this.clearGcTimeout()}scheduleGc(){this.clearGcTimeout(),sh(this.gcTime)&&(this.#e=Kr.setTimeout(()=>{this.optionalRemove()},this.gcTime))}updateGcTime(e){this.gcTime=Math.max(this.gcTime||0,e??(Po.isServer()?1/0:300*1e3))}clearGcTimeout(){this.#e!==void 0&&(Kr.clearTimeout(this.#e),this.#e=void 0)}};function lq(e){return{onFetch:(t,r)=>{const s=t.options,c=t.fetchOptions?.meta?.fetchMore?.direction,d=t.state.data?.pages||[],m=t.state.data?.pageParams||[];let h={pages:[],pageParams:[]},f=0;const y=async()=>{let b=!1;const v=E=>{nq(E,()=>t.signal,()=>b=!0)},x=xw(t.options,t.fetchOptions),k=async(E,C,N)=>{if(b)return Promise.reject(t.signal.reason);if(C==null&&E.pages.length)return Promise.resolve(E);const R=(()=>{const G={client:t.client,queryKey:t.queryKey,pageParam:C,direction:N?"backward":"forward",meta:t.options.meta};return v(G),G})(),I=await x(R),{maxPages:$}=t.options,z=N?aq:tq;return{pages:z(E.pages,I,$),pageParams:z(E.pageParams,C,$)}};if(c&&d.length){const E=c==="backward",C=E?cq:M0,N={pages:d,pageParams:m},q=C(s,N);h=await k(N,q,E)}else{const E=e??d.length;do{const C=f===0?m[0]??s.initialPageParam:M0(s,h);if(f>0&&C==null)break;h=await k(h,C),f++}while(f<E)}return h};t.options.persister?t.fetchFn=()=>t.options.persister?.(y,{client:t.client,queryKey:t.queryKey,meta:t.options.meta,signal:t.signal},r):t.fetchFn=y}}}function M0(e,{pages:t,pageParams:r}){const s=t.length-1;return t.length>0?e.getNextPageParam(t[s],t,r[s],r):void 0}function cq(e,{pages:t,pageParams:r}){return t.length>0?e.getPreviousPageParam?.(t[0],t,r[0],r):void 0}var dq=class extends Sw{#e;#t;#a;#n;#s;#r;#o;#i;constructor(e){super(),this.#i=!1,this.#o=e.defaultOptions,this.setOptions(e.options),this.observers=[],this.#s=e.client,this.#n=this.#s.getQueryCache(),this.queryKey=e.queryKey,this.queryHash=e.queryHash,this.#t=_0(this.options),this.state=e.state??this.#t,this.scheduleGc()}get meta(){return this.options.meta}get queryType(){return this.#e}get promise(){return this.#r?.promise}setOptions(e){if(this.options={...this.#o,...e},e?._type&&(this.#e=e._type),this.updateGcTime(this.options.gcTime),this.state&&this.state.data===void 0){const t=_0(this.options);t.data!==void 0&&(this.setState(P0(t.data,t.dataUpdatedAt)),this.#t=t)}}optionalRemove(){!this.observers.length&&this.state.fetchStatus==="idle"&&this.#n.remove(this)}setData(e,t){const r=oh(this.state.data,e,this.options);return this.#l({data:r,type:"success",dataUpdatedAt:t?.updatedAt,manual:t?.manual}),r}setState(e){this.#l({type:"setState",state:e})}cancel(e){const t=this.#r?.promise;return this.#r?.cancel(e),t?t.then(ea).catch(ea):Promise.resolve()}destroy(){super.destroy(),this.cancel({silent:!0})}get resetState(){return this.#t}reset(){this.destroy(),this.setState(this.resetState)}isActive(){return this.observers.some(e=>Aa(e.options.enabled,this)!==!1)}isDisabled(){return this.getObserversCount()>0?!this.isActive():this.options.queryFn===rf||!this.isFetched()}isFetched(){return this.state.dataUpdateCount+this.state.errorUpdateCount>0}isStatic(){return this.getObserversCount()>0?this.observers.some(e=>fr(e.options.staleTime,this)==="static"):!1}isStale(){return this.getObserversCount()>0?this.observers.some(e=>e.getCurrentResult().isStale):this.state.data===void 0||this.state.isInvalidated}isStaleByTime(e=0){return this.state.data===void 0?!0:e==="static"?!1:this.state.isInvalidated?!0:!bw(this.state.dataUpdatedAt,e)}onFocus(){this.observers.find(t=>t.shouldFetchOnWindowFocus())?.refetch({cancelRefetch:!1}),this.#r?.continue()}onOnline(){this.observers.find(t=>t.shouldFetchOnReconnect())?.refetch({cancelRefetch:!1}),this.#r?.continue()}addObserver(e){this.observers.includes(e)||(this.observers.push(e),this.clearGcTimeout(),this.#n.notify({type:"observerAdded",query:this,observer:e}))}removeObserver(e){this.observers.includes(e)&&(this.observers=this.observers.filter(t=>t!==e),this.observers.length||(this.#r&&(this.#i||this.#d()?this.#r.cancel({revert:!0}):this.#r.cancelRetry()),this.scheduleGc()),this.#n.notify({type:"observerRemoved",query:this,observer:e}))}getObserversCount(){return this.observers.length}#d(){return this.state.fetchStatus==="paused"&&this.state.status==="pending"}invalidate(){this.state.isInvalidated||this.#l({type:"invalidate"})}async fetch(e,t){if(this.state.fetchStatus!=="idle"&&this.#r?.status()!=="rejected"){if(this.state.data!==void 0&&t?.cancelRefetch)this.cancel({silent:!0});else if(this.#r)return this.#r.continueRetry(),this.#r.promise}if(e&&this.setOptions(e),!this.options.queryFn){const f=this.observers.find(y=>y.options.queryFn);f&&this.setOptions(f.options)}const r=new AbortController,s=f=>{Object.defineProperty(f,"signal",{enumerable:!0,get:()=>(this.#i=!0,r.signal)}
vendor: 14,581 bytes, line 16
16)},c=()=>{const f=xw(this.options,t),b=(()=>{const v={client:this.#s,queryKey:this.queryKey,meta:this.meta};return s(v),v})();return this.#i=!1,this.options.persister?this.options.persister(f,b,this):f(b)},m=(()=>{const f={fetchOptions:t,options:this.options,queryKey:this.queryKey,client:this.#s,state:this.state,fetchFn:c};return s(f),f})();(this.#e==="infinite"?lq(this.options.pages):this.options.behavior)?.onFetch(m,this),this.#a=this.state,(this.state.fetchStatus==="idle"||this.state.fetchMeta!==m.fetchOptions?.meta)&&this.#l({type:"fetch",meta:m.fetchOptions?.meta}),this.#r=kw({initialPromise:t?.initialPromise,fn:m.fetchFn,onCancel:f=>{f instanceof ch&&f.revert&&this.setState({...this.#a,fetchStatus:"idle"}),r.abort()},onFail:(f,y)=>{this.#l({type:"failed",failureCount:f,error:y})},onPause:()=>{this.#l({type:"pause"})},onContinue:()=>{this.#l({type:"continue"})},retry:m.options.retry,retryDelay:m.options.retryDelay,networkMode:m.options.networkMode,canRun:()=>!0});try{const f=await this.#r.start();if(f===void 0)throw new Error(`${this.queryHash} data is undefined`);return this.setData(f),this.#n.config.onSuccess?.(f,this),this.#n.config.onSettled?.(f,this.state.error,this),f}catch(f){if(f instanceof ch){if(f.silent)return this.#r.promise;if(f.revert){if(this.state.data===void 0)throw f;return this.state.data}}throw this.#l({type:"error",error:f}),this.#n.config.onError?.(f,this),this.#n.config.onSettled?.(this.state.data,f,this),f}finally{this.scheduleGc()}}#l(e){const t=r=>{switch(e.type){case"failed":return{...r,fetchFailureCount:e.failureCount,fetchFailureReason:e.error};case"pause":return{...r,fetchStatus:"paused"};case"continue":return{...r,fetchStatus:"fetching"};case"fetch":return{...r,...Cw(r.data,this.options),fetchMeta:e.meta??null};case"success":const s={...r,...P0(e.data,e.dataUpdatedAt),dataUpdateCount:r.dataUpdateCount+1,...!e.manual&&{fetchStatus:"idle",fetchFailureCount:0,fetchFailureReason:null}};return this.#a=e.manual?s:void 0,s;case"error":const c=e.error;return{...r,error:c,errorUpdateCount:r.errorUpdateCount+1,errorUpdatedAt:Date.now(),fetchFailureCount:r.fetchFailureCount+1,fetchFailureReason:c,fetchStatus:"idle",status:"error",isInvalidated:!0};case"invalidate":return{...r,isInvalidated:!0};case"setState":return{...r,...e.state}}};this.state=t(this.state),It.batch(()=>{this.observers.forEach(r=>{r.onQueryUpdate()}),this.#n.notify({query:this,type:"updated",action:e})})}};function Cw(e,t){return{fetchFailureCount:0,fetchFailureReason:null,fetchStatus:ww(t.networkMode)?"fetching":"paused",...e===void 0&&{error:null,status:"pending"}}}function P0(e,t){return{data:e,dataUpdatedAt:t??Date.now(),error:null,isInvalidated:!1,status:"success"}}function _0(e){const t=typeof e.initialData=="function"?e.initialData():e.initialData,r=t!==void 0,s=r?typeof e.initialDataUpdatedAt=="function"?e.initialDataUpdatedAt():e.initialDataUpdatedAt:0;return{data:t,dataUpdateCount:0,dataUpdatedAt:r?s??Date.now():0,error:null,errorUpdateCount:0,errorUpdatedAt:0,fetchFailureCount:0,fetchFailureReason:null,fetchMeta:null,isInvalidated:!1,status:r?"success":"pending",fetchStatus:"idle"}}var uq=class extends di{constructor(e,t){super(),this.options=t,this.#e=e,this.#i=null,this.#o=lh(),this.bindMethods(),this.setOptions(t)}#e;#t=void 0;#a=void 0;#n=void 0;#s;#r;#o;#i;#d;#l;#h;#u;#m;#c;#f=new Set;bindMethods(){this.refetch=this.refetch.bind(this)}onSubscribe(){this.listeners.size===1&&(this.#t.addObserver(this),R0(this.#t,this.options)?this.#p():this.updateResult(),this.#v())}onUnsubscribe(){this.hasListeners()||this.destroy()}shouldFetchOnReconnect(){return dh(this.#t,this.options,this.options.refetchOnReconnect)}shouldFetchOnWindowFocus(){return dh(this.#t,this.options,this.options.refetchOnWindowFocus)}destroy(){this.listeners=new Set,this.#x(),this.#w(),this.#t.removeObserver(this)}setOptions(e){const t=this.options,r=this.#t;if(this.options=this.#e.defaultQueryOptions(e),this.options.enabled!==void 0&&typeof this.options.enabled!="boolean"&&typeof this.options.enabled!="function"&&typeof Aa(this.options.enabled,this.#t)!="boolean")throw new Error("Expected enabled to be a boolean or a callback that returns a boolean");this.#k(),this.#t.setOptions(this.options),t._defaulted&&!Qc(this.options,t)&&this.#e.getQueryCache().notify({type:"observerOptionsUpdated",query:this.#t,observer:this});const s=this.hasListeners();s&&I0(this.#t,r,this.options,t)&&this.#p(),this.updateResult(),s&&(this.#t!==r||Aa(this.options.enabled,this.#t)!==Aa(t.enabled,this.#t)||fr(this.options.staleTime,this.#t)!==fr(t.staleTime,this.#t))&&this.#g();const c=this.#y();s&&(this.#t!==r||Aa(this.options.enabled,this.#t)!==Aa(t.enabled,this.#t)||c!==this.#c)&&this.#b(c)}getOptimisticResult(e){const t=this.#e.getQueryCache().build(this.#e,e),r=this.createResult(t,e);return pq(this,r)&&(this.#n=r,this.#r=this.options,this.#s=this.#t.state),r}getCurrentResult(){return this.#n}trackResult(e,t){return new Proxy(e,{get:(r,s)=>(this.trackProp(s),t?.(s),s==="promise"&&(this.trackProp("data"),!this.options.experimental_prefetchInRender&&this.#o.status==="pending"&&this.#o.reject(new Error("experimental_prefetchInRender feature flag is not enabled"))),Reflect.get(r,s))})}trackProp(e){this.#f.add(e)}getCurrentQuery(){return this.#t}refetch({...e}={}){return this.fetch({...e})}fetchOptimistic(e){const t=this.#e.defaultQueryOptions(e),r=this.#e.getQueryCache().build(this.#e,t);return r.fetch().then(()=>this.createResult(r,t))}fetch(e){return this.#p({...e,cancelRefetch:e.cancelRefetch??!0}).then(()=>(this.updateResult(),this.#n))}#p(e){this.#k();let t=this.#t.fetch(this.options,e);return e?.throwOnError||(t=t.catch(ea)),t}#g(){this.#x();const e=fr(this.options.staleTime,this.#t);if(Po.isServer()||this.#n.isStale||!sh(e))return;const r=bw(this.#n.dataUpdatedAt,e)+1;this.#u=Kr.setTimeout(()=>{this.#n.isStale||this.updateResult()},r)}#y(){return(typeof this.options.refetchInterval=="function"?this.options.refetchInterval(this.#t):this.options.refetchInterval)??!1}#b(e){this.#w(),this.#c=e,!(Po.isServer()||Aa(this.options.enabled,this.#t)===!1||!sh(this.#c)||this.#c===0)&&(this.#m=Kr.setInterval(()=>{(this.options.refetchIntervalInBackground||af.isFocused())&&this.#p()},this.#c))}#v(){this.#g(),this.#b(this.#y())}#x(){this.#u!==void 0&&(Kr.clearTimeout(this.#u),this.#u=void 0)}#w(){this.#m!==void 0&&(Kr.clearInterval(this.#m),this.#m=void 0)}createResult(e,t){const r=this.#t,s=this.options,c=this.#n,d=this.#s,m=this.#r,f=e!==r?e.state:this.#a,{state:y}=e;let b={...y},v=!1,x;if(t._optimisticResults){const D=this.hasListeners(),ee=!D&&R0(e,t),ne=D&&I0(e,r,t,s);(ee||ne)&&(b={...b,...Cw(y.data,e.options)}),t._optimisticResults==="isRestoring"&&(b.fetchStatus="idle")}let{error:k,errorUpdatedAt:E,status:C}=b;x=b.data;let N=!1;if(t.placeholderData!==void 0&&x===void 0&&C==="pending"){let D;c?.isPlaceholderData&&t.placeholderData===m?.placeholderData?(D=c.data,N=!0):D=typeof t.placeholderData=="function"?t.placeholderData(this.#h?.state.data,this.#h):t.placeholderData,D!==void 0&&(C="success",x=oh(c?.data,D,t),v=!0)}if(t.select&&x!==void 0&&!N)if(c&&x===d?.data&&t.select===this.#d)x=this.#l;else try{this.#d=t.select,x=t.select(x),x=oh(c?.data,x,t),this.#l=x,this.#i=null}catch(D){this.#i=D}this.#i&&(k=this.#i,x=this.#l,E=Date.now(),C="error");const q=b.fetchStatus==="fetching",R=C==="pending",I=C==="error",$=R&&q,z=x!==void 0,L={status:C,fetchStatus:b.fetchStatus,isPending:R,isSuccess:C==="success",isError:I,isInitialLoading:$,isLoading:$,data:x,dataUpdatedAt:b.dataUpdatedAt,error:k,errorUpdatedAt:E,failureCount:b.fetchFailureCount,failureReason:b.fetchFailureReason,errorUpdateCount:b.errorUpdateCount,isFetched:e.isFetched(),isFetchedAfterMount:b.dataUpdateCount>f.dataUpdateCount||b.errorUpdateCount>f.errorUpdateCount,isFetching:q,isRefetching:q&&!R,isLoadingError:I&&!z,isPaused:b.fetchStatus==="paused",isPlaceholderData:v,isRefetchError:I&&z,isStale:of(e,t),refetch:this.refetch,promise:this.#o,isEnabled:Aa(t.enabled,e)!==!1};if(this.options.experimental_prefetchInRender){const D=L.data!==void 0,ee=L.status==="error"&&!D,ne=Re=>{ee?Re.reject(L.error):D&&Re.resolve(L.data)},me=()=>{const Re=this.#o=L.promise=lh();ne(Re)},pe=this.#o;switch(pe.status){case"pending":e.queryHash===r.queryHash&&ne(pe);break;case"fulfilled":(ee||L.data!==pe.value)&&me();break;case"rejected":(!ee||L.error!==pe.reason)&&me();break}}return L}updateResult(){const e=this.#n,t=this.createResult(this.#t,this.options);if(this.#s=this.#t.state,this.#r=this.options,this.#s.data!==void 0&&(this.#h=this.#t),Qc(t,e))return;this.#n=t;const r=()=>{if(!e)return!0;const{notifyOnChangeProps:s}=this.options,c=typeof s=="function"?s():s;if(c==="all"||!c&&!this.#f.size)return!0;const d=new Set(c??this.#f);return this.options.throwOnError&&d.add("error"),Object.keys(this.#n).some(m=>{const h=m;return this.#n[h]!==e[h]&&d.has(h)})};this.#S({listeners:r()})}#k(){const e=this.#e.getQueryCache().build(this.#e,this.options);if(e===this.#t)return;const t=this.#t;this.#t=e,this.#a=e.state,this.hasListeners()&&(t?.removeObserver(this),e.addObserver(this))}onQueryUpdate(){this.updateResult(),this.hasListeners()&&this.#v()}#S(e){It.batch(()=>{e.listeners&&this.listeners.forEach(t=>{t(this.#n)}),this.#e.getQueryCache().notify({query:this.#t,type:"observerResultsUpdated"})})}};function mq(e,t){return Aa(t.enabled,e)!==!1&&e.state.data===void 0&&!(e.state.status==="error"&&Aa(t.retryOnMount,e)===!1)}function R0(e,t){return mq(e,t)||e.state.data!==void 0&&dh(e,t,t.refetchOnMount)}function dh(e,t,r){if(Aa(t.enabled,e)!==!1&&fr(t.staleTime,e)!=="static"){const s=typeof r=="function"?r(e):r;return s==="always"||s!==!1&&of(e,t)}return!1}function I0(e,t,r,s){return(e!==t||Aa(s.enabled,e)===!1)&&(!r.suspense||e.state.status!=="error")&&of(e,r)}function of(e,t){return Aa(t.enabled,e)!==!1&&e.isStaleByTime(fr(t.staleTime,e))}function pq(e,t){return!Qc(e.getCurrentResult(),t)}var hq=class extends Sw{#e;#t;#a;#n;constructor(e){super(),this.#e=e.client,this.mutationId=e.mutationId,this.#a=e.mutationCache,this.#t=[],this.state=e.state||jw(),this.setOptions(e.options),this.scheduleGc()}setOptions(e){this.options=e,this.updateGcTime(this.options.gcTime)}get meta(){return this.options.meta}addObserver(e){this.#t.includes(e)||(this.#t.push(e),this.clearGcTimeout(),this.#a.notify({type:"observerAdded",mutation:this,observer:e}))}removeObserver(e){this.#t=this.#t.filter(t=>t!==e),this.scheduleGc(),this.#a.notify({type:"observerRemoved",mutation:this,observer:e})}optionalRemove(){this.#t.length||(this.state.status==="pending"?this.scheduleGc():this.#a.remove(this))}continue(){return this.#n?.continue()??this.execute(this.state.variables)}async execute(e){const t=()=>{this.#s({type:"continue"})},r={client:this.#e,meta:this.options.meta,mutationKey:this.options.mutationKey};this.#n=kw({fn:()=>this.options.mutationFn?this.options.mutationFn(e,r):Promise.reject(new Error("No mutationFn found")),onFail:(d,m)=>{this.#s({type:"failed",failureCount:d,error:m})},onPause:()=>{this.#s({type:"pause"})},onContinue:t,retry:this.options.retry??0,retryDelay:this.options.retryDelay,networkMode:this.options.networkMode,canRun:()=>this.#a.canRun(this)});const s=this.state.status==="pending",c=!this.#n.canStart();try{if(s)t();else{this.#s({type:"pending",variables:e,isPaused:c}),this.#a.config.onMutate&&await this.#a.config.onMutate(e,this,r);const m=await this.options.onMutate?.(e,r);m!==this.state.context&&this.#s({type:"pending",context:m,variables:e,isPaused:c})}const d=await this.#n.start();return await this.#a.config.onSuccess?.(d,e,this.state.context,this,r),await this.options.onSuccess?.(d,e,this.state.context,r),await this.#a.config.onSettled?.(d,null,this.state.variables,this.state.context,this,r),await this.options.onSettled?.(d,null,e,this.state.context,r),this.#s({type:"success",data:d}),d}catch(d){try{await this.#a.config.onError?.(d,e,this.state.context,this,r)}catch(m){Promise.reject(m)}try{await this.options.onError?.(d,e,this.state.context,r)}catch(m){Promise.reject(m)}try{await this.#a.config.onSettled?.(void 0,d,this.state.variables,this.state.context,this,r)}catch(m){Promise.reject(m)}try{await this.options.onSettled?.(void 0,d,e,this.state.context,r)}catch(m){Promise.reject(m)}throw this.#s({type:"error",error:d}),d}finally{this.#a.runNext(this)}}#s(e){const t=r=>{switch(e.type){case"failed":return{...r,failureCount:e.failureCount,failureReason:e.error};case"pause":return{...r,isPaused:!0};case"continue":return{...r,isPaused:!1};case"pending":return{...r,context:e.context,data:void 0,failureCount:0,failureReason:null,error:null,isPaused:e.isPaused,status:"pending",variables:e.variables,submittedAt:Date.now()};case"success":return{...r,data:e.data,failureCount:0,failureReason:null,error:null,status:"success",isPaused:!1};case"error":return{...r,data:void 0,error:e.error,failureCount:r.failureCount+1,failureReason:e.error,isPaused:!1,status:"error"}}};this.state=t(this.state),It.batch(()=>{this.#t.forEach(r=>{r.onMutationUpdate(e)}),this.#a.notify({mutation:this,type:"updated",action:e})})}};function jw(){return{context:void 0,data:void 0,error:null,failureCount:0,failureReason:null,isPaused:!1,status:"idle",variables:void 0,submittedAt:0}}var fq=class extends di{constructor(e={}){super(),this.config=e,this.#e=new Set,this.#t=new Map,this.#a=0}#e;#t;#a;build(e,t,r){const s=new hq({client:e,mutationCache:this,mutationId:++this.#a,options:e.defaultMutationOptions(t),state:r});return this.add(s),s}add(e){this.#e.add(e);const t=fc(e);if(typeof t=="string"){const r=this.#t.get(t);r?r.push(e):this.#t.set(t,[e])}this.notify({type:"added",mutation:e})}remove(e){if(this.#e.delete(e)){const t=fc(e);if(typeof t=="string"){const r=this.#t.get(t);if(r)if(r.length>1){const s=r.indexOf(e);s!==-1&&r.splice(s,1)}else r[0]===e&&this.#t.delete(t)}}this.notify({type:"removed",mutation:e})}canRun(e){const t=fc(e);if(typeof t=="string"){const s=this.#t.get(t)?.find(c=>c.state.status==="pending");return!s||s===e}else return!0}runNext(e){const t=fc(e);return typeof t=="string"?this.#t.get(t)?.find(s=>s!==e&&s.state.isPaused)?.continue()??Promise.resolve():Promise.resolve()}clear(){It.batch(()=>{this.#e.forEach(e=>{this.notify({type:"removed",mutation:e})}),this.#e.clear(),this.#t.clear()})}getAll(){return Array.from(this.#e)}find(e){const t={exact:!0,...e};return this.getAll().find(r=>E0(t,r))}findAll(e={}){return this.getAll().filter(t=>E0(e,t))}notify(e){It.batch(()=>{this.listeners.forEach(t=>{t(e)})})}resumePausedMutations(){const e=this.getAll().filter(t=>
16t.state.isPaused);return It.batch(()=>Promise.all(e.map(t=>t.continue().catch(ea))))}};function fc(e){return e.options.scope?.id}var gq=class extends di{#e;#t=void 0;#a;#n;constructor(t,r){super(),this.#e=t,this.setOptions(r),this.bindMethods(),this.#s()}bindMethods(){this.mutate=this.mutate.bind(this),this.reset=this.reset.bind(this)}setOptions(t){const r=this.options;this.options=this.#e.defaultMutationOptions(t),Qc(this.options,r)||this.#e.getMutationCache().notify({type:"observerOptionsUpdated",mutation:this.#a,observer:this}),r?.mutationKey&&this.options.mutationKey&&es(r.mutationKey)!==es(this.options.mutationKey)?this.reset():this.#a?.state.status==="pending"&&this.#a.setOptions(this.options)}onUnsubscribe(){this.hasListeners()||this.#a?.removeObserver(this)}onMutationUpdate(t){this.#s(),this.#r(t)}getCurrentResult(){return this.#t}reset(){this.#a?.removeObserver(this),this.#a=void 0,this.#s(),this.#r()}mutate(t,r){return this.#n=r,this.#a?.removeObserver(this),this.#a=this.#e.getMutationCache().build(this.#e,this.options),this.#a.addObserver(this),this.#a.execute(t)}#s(){const t=this.#a?.state??jw();this.#t={...t,isPending:t.status==="pending",isSuccess:t.status==="success",isError:t.status==="error",isIdle:t.status==="idle",mutate:this.mutate,reset:this.reset}}#r(t){It.batch(()=>{if(this.#n&&this.hasListeners()){const r=this.#t.variables,s=this.#t.context,c={client:this.#e,meta:this.options.meta,mutationKey:this.options.mutationKey};if(t?.type==="success"){try{this.#n.onSuccess?.(t.data,r,s,c)}catch(d){Promise.reject(d)}try{this.#n.onSettled?.(t.data,null,r,s,c)}catch(d){Promise.reject(d)}}else if(t?.type==="error"){try{this.#n.onError?.(t.error,r,s,c)}catch(d){Promise.reject(d)}try{this.#n.onSettled?.(void 0,t.error,r,s,c)}catch(d){Promise.reject(d)}}}this.listeners.forEach(r=>{r(this.#t)})})}},yq=class extends di{constructor(e={}){super(),this.config=e,this.#e=new Map}#e;build(e,t,r){const s=t.queryKey,c=t.queryHash??nf(s,t);let d=this.get(c);return d||(d=new dq({client:e,queryKey:s,queryHash:c,options:e.defaultQueryOptions(t),state:r,defaultOptions:e.getQueryDefaults(s)}),this.add(d)),d}add(e){this.#e.has(e.queryHash)||(this.#e.set(e.queryHash,e),this.notify({type:"added",query:e}))}remove(e){const t=this.#e.get(e.queryHash);t&&(e.destroy(),t===e&&this.#e.delete(e.queryHash),this.notify({type:"removed",query:e}))}clear(){It.batch(()=>{this.getAll().forEach(e=>{this.remove(e)})})}get(e){return this.#e.get(e)}getAll(){return[...this.#e.values()]}find(e){const t={exact:!0,...e};return this.getAll().find(r=>q0(t,r))}findAll(e={}){const t=this.getAll();return Object.keys(e).length>0?t.filter(r=>q0(e,r)):t}notify(e){It.batch(()=>{this.listeners.forEach(t=>{t(e)})})}onFocus(){It.batch(()=>{this.getAll().forEach(e=>{e.onFocus()})})}onOnline(){It.batch(()=>{this.getAll().forEach(e=>{e.onOnline()})})}},bq=class{#e;#t;#a;#n;#s;#r;#o;#i;constructor(e={}){this.#e=e.queryCache||new yq,this.#t=e.mutationCache||new fq,this.#a=e.defaultOptions||{},this.#n=new Map,this.#s=new Map,this.#r=0}mount(){this.#r++,this.#r===1&&(this.#o=af.subscribe(async e=>{e&&(await this.resumePausedMutations(),this.#e.onFocus())}),this.#i=Yc.subscribe(async e=>{e&&(await this.resumePausedMutations(),this.#e.onOnline())}))}unmount(){this.#r--,this.#r===0&&(this.#o?.(),this.#o=void 0,this.#i?.(),this.#i=void 0)}isFetching(e){return this.#e.findAll({...e,fetchStatus:"fetching"}).length}isMutating(e){return this.#t.findAll({...e,status:"pending"}).length}getQueryData(e){const t=this.defaultQueryOptions({queryKey:e});return this.#e.get(t.queryHash)?.state.data}ensureQueryData(e){const t=this.defaultQueryOptions(e),r=this.#e.build(this,t),s=r.state.data;return s===void 0?this.fetchQuery(e):(e.revalidateIfStale&&r.isStaleByTime(fr(t.staleTime,r))&&this.prefetchQuery(t),Promise.resolve(s))}getQueriesData(e){return this.#e.findAll(e).map(({queryKey:t,state:r})=>{const s=r.data;return[t,s]})}setQueryData(e,t,r){const s=this.defaultQueryOptions({queryKey:e}),d=this.#e.get(s.queryHash)?.state.data,m=ZA(t,d);if(m!==void 0)return this.#e.build(this,s).setData(m,{...r,manual:!0})}
16setQueriesData(e,t,r){return It.batch(()=>this.#e.findAll(e).map(({queryKey:s})=>[s,this.setQueryData(s,t,r)]))}getQueryState(e){const t=this.defaultQueryOptions({queryKey:e});return this.#e.get(t.queryHash)?.state}removeQueries(e){const t=this.#e;It.batch(()=>{t.findAll(e).forEach(r=>{t.remove(r)})})}resetQueries(e,t){const r=this.#e;return It.batch(()=>(r.findAll(e).forEach(s=>{s.reset()}),this.refetchQueries({type:"active",...e},t)))}cancelQueries(e,t={}){const r={revert:!0,...t},s=It.batch(()=>this.#e.findAll(e).map(c=>c.cancel(r)));return Promise.all(s).then(ea).catch(ea)}invalidateQueries(e,t={}){return It.batch(()=>(this.#e.findAll(e).forEach(r=>{r.invalidate()}),e?.refetchType==="none"?Promise.resolve():this.refetchQueries({...e,type:e?.refetchType??e?.type??"active"},t)))}refetchQueries(e,t={}){const r={...t,cancelRefetch:t.cancelRefetch??!0},s=It.batch(()=>this.#e.findAll(e).filter(c=>!c.isDisabled()&&!c.isStatic()).map(c=>{let d=c.fetch(void 0,r);return r.throwOnError||(d=d.catch(ea)),c.state.fetchStatus==="paused"?Promise.resolve():d}));return Promise.all(s).then(ea)}fetchQuery(e){const t=this.defaultQueryOptions(e);t.retry===void 0&&(t.retry=!1);const r=this.#e.build(this,t);return r.isStaleByTime(fr(t.staleTime,r))?r.fetch(t):Promise.resolve(r.state.data)}prefetchQuery(e){return this.fetchQuery(e).then(ea).catch(ea)}fetchInfiniteQuery(e){return e._type="infinite",this.fetchQuery(e)}prefetchInfiniteQuery(e){return this.fetchInfiniteQuery(e).then(ea).catch(ea)}ensureInfiniteQueryData(e){return e._type="infinite",this.ensureQueryData(e)}resumePausedMutations(){return Yc.isOnline()?this.#t.resumePausedMutations():Promise.resolve()}getQueryCache(){return this.#e}getMutationCache(){return this.#t}getDefaultOptions(){return this.#a}setDefaultOptions(e){this.#a=e}setQueryDefaults(e,t){this.#n.set(es(e),{queryKey:e,defaultOptions:t})}getQueryDefaults(e){const t=[...this.#n.values()],r={};return t.forEach(s=>{Mo(e,s.queryKey)&&Object.assign(r,s.defaultOptions)}),r}setMutationDefaults(e,t){this.#s.set(es(e),{mutationKey:e,defaultOptions:t})}getMutationDefaults(e){const t=[...this.#s.values()],r={};return t.forEach(s=>{Mo(e,s.mutationKey)&&Object.assign(r,s.defaultOptions)}),r}defaultQueryOptions(e){if(e._defaulted)return e;const t={...this.#a.queries,...this.getQueryDefaults(e.queryKey),...e,_defaulted:!0};return t.queryHash||(t.queryHash=nf(t.queryKey,t)),t.refetchOnReconnect===void 0&&(t.refetchOnReconnect=t.networkMode!=="always"),t.throwOnError===void 0&&(t.throwOnError=!!t.suspense),!t.networkMode&&t.persister&&(t.networkMode="offlineFirst"),t.queryFn===rf&&(t.enabled=!1),t}defaultMutationOptions(e){return e?._defaulted?e:{...this.#a.mutations,...e?.mutationKey&&this.getMutationDefaults(e.mutationKey),...e,_defaulted:!0}}clear(){this.#e.clear(),this.#t.clear()}},U0=Object.prototype.hasOwnProperty;function D0(e,t,r){for(r of e.keys())if(Co(r,t))return r}function Co(e,t){var r,s,c;if(e===t)return!0;if(e&&t&&(r=e.constructor)===t.constructor){if(r===Date)return e.getTime()===t.getTime();if(r===RegExp)return e.toString()===t.toString();if(r===Array){if((s=e.length)===t.length)for(;s--&&Co(e[s],t[s]););return s===-1}if(r===Set){if(e.size!==t.size)return!1;for(s of e)if(c=s,c&&typeof c=="object"&&(c=D0(t,c),!c)||!t.has(c))return!1;return!0}if(r===Map){if(e.size!==t.size)return!1;for(s of e)if(c=s[0],c&&typeof c=="object"&&(c=D0(t,c),!c)||!Co(s[1],t.get(c)))return!1;return!0}if(r===ArrayBuffer)e=new Uint8Array(e),t=new Uint8Array(t);else if(r===DataView){if((s=e.byteLength)===t.byteLength)for(;s--&&e.getInt8(s)===t.getInt8(s););return s===-1}if(ArrayBuffer.isView(e)){if((s=e.byteLength)===t.byteLength)for(;s--&&e[s]===t[s];);return s===-1}if(!r||typeof e=="object"){s=0;for(r in e)if(U0.call(e,r)&&++s&&!U0.call(t,r)||!(r in t)||!Co(e[r],t[r]))return!1;return Object.keys(t).length===s}}return e!==e&&t!==t}function vq(e,t){if(!e)throw typeof t=="string"?new Error(t):new Error(`${t.displayName} not found`)}const ui=(e,t)=>{const{assertCtxFn:r=vq}={},s=_.createContext(void 0);return s.displayName=e,[s,()=>{const m=_.useContext(s);return r(m,`${e} not found`),m.value},()=>{const m=_.useContext(s);return m?m.value:{}}]},[Aw,Vo]=ui("ClerkInstanceContext"),[xq,wq]=ui("InitialStateContext");function kq({children:e,initialState:t}){const[r]=S.useState(t),s=_.useMemo(()=>({value:r}),[r]);return _.createElement(xq.Provider,{value:s},e)}function qw(){const e=wq();if(e instanceof Promise){if("use"in _&&typeof _.use=="function")return _.use(e);throw new Error("initialState cannot be a promise if React version is less than 19")}return e}_.createContext({});const[Sq]=ui("CheckoutContext"),Cq=({children:e,...t})=>_.createElement(Sq.Provider,{value:{value:t}},e);function lf(e){if(!_.useContext(Aw)){if(typeof e=="function"){e();return}throw new Error(`${e} can only be used within the <ClerkProvider /> component. 17 18Possible fixes: 191. Ensure that the <ClerkProvider /> is correctly wrapping your application where this component is used. 202. Check for multiple versions of the \`@clerk/shared\` package in y
20our project. Use a tool like \`npm ls @clerk/shared\` to identify multiple versions, and update your dependencies to only rely on one. 21 22Learn more: https://clerk.com/docs/components/clerk-provider`.trim())}}function jq(e){const t=function(){};let r;return r=new Proxy(t,{get(s,c){if(c!=="then")return c==="toString"?()=>`[${e}]`:c===Symbol.toPrimitive?()=>0:r},apply(){return r},construct(){return r},has(){return!1},set(){return!1}}),r}jq("ClerkMockQueryClient");function Aq(){const e=Vo(),t=qw(),r=S.useCallback(()=>t?.user,[t?.user]);return S.useSyncExternalStore(S.useCallback(s=>e.addListener(s,{skipInitialEmit:!0}),[e]),S.useCallback(()=>!e.loaded||!e.__internal_lastEmittedResources?r():e.__internal_lastEmittedResources.user,[e,r]),r)}const cf=()=>(lf("useClerk"),Vo());typeof window<"u"?_.useLayoutEffect:_.useEffect;const O0="useUser";function fa(){lf(O0);const e=Aq();return Vo().telemetry?.record(So(O0)),e===void 0?{isLoaded:!1,isSignedIn:void 0,user:void 0}:e===null?{isLoaded:!0,isSignedIn:!1,user:null}:{isLoaded:!0,isSignedIn:!0,user:e}}const L0=Co;function qq(e){e||GA()}function Eq(e){const t=e.clerk;if(qq(t),e.initialState instanceof Promise&&!("use"in _&&typeof _.use=="function"))throw new Error("initialState cannot be a promise if React version is less than 19");const r=_.useMemo(()=>({value:t}),[e.clerkStatus]);return _.createElement(kq,{initialState:e.initialState},_.createElement(Aw.Provider,{value:r},_.createElement(Cq,{value:void 0},e.children)))}const Nq=e=>{const t=S.useRef(e);return S.useEffect(()=>{t.current=e},[e]),t.current},ja=(e,t,r)=>{const s=!!r,c=S.useRef(r);S.useEffect(()=>{c.current=r},[r]),S.useEffect(()=>{if(!s||!e)return()=>{};const d=(...m)=>{c.current&&c.current(...m)};return e.on(t,d),()=>{e.off(t,d)}},[s,t,e,c])},Ew=_.createContext(null);Ew.displayName="ElementsContext";const Tq=(e,t)=>{if(!e)throw new Error(`Could not find Elements context; You need to wrap the part of your app that ${t} in an <Elements> provider.`);return e},Xc=e=>e!==null&&typeof e=="object",Mq=(e,t,r)=>Xc(e)?Object.keys(e).reduce((s,c)=>{const d=!Xc(t)||!Nw(e[c],t[c]);return r.includes(c)?(d&&console.warn(`Unsupported prop change: options.${c} is not a mutable property.`),s):d?{...s||{},[c]:e[c]}:s},null):null,z0="[object Object]",Nw=(e,t)=>{if(!Xc(e)||!Xc(t))return e===t;const r=Array.isArray(e);if(r!==Array.isArray(t))return!1;const s=Object.prototype.toString.call(e)===z0;if(s!==(Object.prototype.toString.call(t)===z0))return!1;if(!s&&!r)return e===t;const c=Object.keys(e),d=Object.keys(t);if(c.length!==d.length)return!1;const m={};for(let v=0;v<c.length;v+=1)m[c[v]]=!0;for(let v=0;v<d.length;v+=1)m[d[v]]=!0;const h=Object.keys(m);if(h.length!==c.length)return!1;const f=e,y=t,b=v=>Nw(f[v],y[v]);return h.every(b)},F0=e=>Tq(_.useContext(Ew),e),Pq=e=>e.charAt(0).toUpperCase()+e.slice(1),_q=(e,t)=>{const r=`${Pq(e)}Element`,d=t?m=>{F0(`mounts <${r}>`);const{id:h,className:f}=m;return _.createElement("div",{id:h,className:f})}:({id:m,className:h,fallback:f,options:y={},onBlur:b,onFocus:v,onReady:x,onChange:k,onEscape:E,onClick:C,onLoadError:N,onLoaderStart:q,onNetworksChange:R,onConfirm:I,onCancel:$,onShippingAddressChange:z,onShippingRateChange:G})=>{const L=F0(`mounts <${r}>`),D="elements"in L?L.elements:null,[ee,ne]=_.useState(null),me=_.useRef(null),pe=_.useRef(null),[Re,Ee]=S.useState(!1);ja(ee,"blur",b),ja(ee,"focus",v),ja(ee,"escape",E),ja(ee,"click",C),ja(ee,"loaderror",N),ja(ee,"loaderstart",q),ja(ee,"networkschange",R),ja(ee,"confirm",I),ja(ee,"cancel",$),ja(ee,"shippingaddresschange",z),ja(ee,"shippingratechange",G),ja(ee,"change",k);let Ae;x&&(Ae=()=>{Ee(!0),x(ee)}),ja(ee,"ready",Ae),_.useLayoutEffect(()=>{if(me.current===null&&pe.current!==null&&D){let Y=null;D&&(Y=D.create(e,y)),me.current=Y,ne(Y),Y&&Y.mount(pe.current)}},[D,y]);const V=Nq(y);return _.useEffect(()=>{if(!me.current)return;const Y=Mq(y,V,["paymentRequest"]);Y&&"update"in me.current&&me.current.update(Y)},[y,V]),_.useLayoutEffect(()=>()=>{if(me.current&&typeof me.current.destroy=="function")try{me.current.destroy(),me.current=null}catch{}},[]),_.createElement(_.Fragment,null,!Re&&f,_.createElement("div",{id:m,style:{height:Re?"unset":"0px",visibility:Re?"visible":"hidden"},className:h,ref:pe}))};return d.displayName=r,d.__elementType=e,d};_q("payment",typeof window>"u");ui("PaymentElementContext");ui("StripeUtilsContext");const[Wz,,Rq]=ui("PortalProvider"),Iq=()=>{const e=Rq();return e&&"getContainer"in e&&e.getContainer?e.getContainer:()=>null};var Rn=hw({packageName:"@clerk/react"});function Uq(e){Rn.setMessages(e).setPackageName(e)}var df=Vo,xd=e=>{lf(()=>{Rn.throwMissingClerkProviderError({source:e})})};const Dq=()=>{try{return!1}catch{}return!1},Oq=()=>{try{return!1}catch{}return!1},Lq=()=>{try{return!0}catch{}return!1};function yp(e,t,r){if(typeof e=="function")return e(t);if(typeof e<"u")return e;if(typeof r<"u")return r}const ta=e=>{Dq()&&console.error(`Clerk: ${e}`)},bp={BASE_URL:"/",DEV:!1,MODE:"production",PROD:!0,SSR:!1,VITE_CLERK_PROXY_URL:"/api/__clerk",VITE_CLERK_PUBLISHABLE_KEY:"pk_live_Y2xlcmsubWF0aGs0LmVkdTI0Lmd0JA"};var vp={};const $0=(e,t)=>{if(typeof process<"u"&&vp&&typeof vp[e]=="string")return vp[e];if(typeof import.meta<"u"&&bp&&typeof bp[e]=="string")return bp[e];try{return globalThis[e]}catch{}return""};var wd=tw();const Tw=yd(wd),zq=gd({__proto__:null,default:Tw},[wd]),B0=(e,...t)=>{const r={...e};for(const s of t)delete r[s];return r};function _o(){return typeof window<"u"}var Fq="You've added multiple <ClerkProvider> components in your React component tree. Wrap your components in a single <ClerkProvider>.",$q=e=>`You've passed multiple children components to <${e}/>. You can only pass a single child component or text.`,Bq="Invalid state. Feel free to submit a bug or reach out to supp
22ort here: https://clerk.com/support",xp="Unsupported usage of isSatellite, domain or proxyUrl. The usage of isSatellite, domain or proxyUrl as function is not supported in non-browser environments.",Vq="<UserProfile.Page /> component needs to be a direct child of `<UserProfile />` or `<UserButton />`.",Wq="<UserProfile.Link /> component needs to be a direct child of `<UserProfile />` or `<UserButton />`.",Gq="<OrganizationProfile.Page /> component needs to be a direct child of `<OrganizationProfile />` or `<OrganizationSwitcher />`.",Kq="<OrganizationProfile.Link /> component needs to be a direct child of `<OrganizationProfile />` or `<OrganizationSwitcher />`.",Hq=e=>`<${e} /> can only accept <${e}.Page /> and <${e}.Link /> as its children. Any other provided component will be ignored. Additionally, please ensure that the component is rendered in a client component.`,Qq=e=>`Missing props. <${e}.Page /> component requires the following props: url, label, labelIcon, alongside with children to be rendered inside the page.`,Yq=e=>`Missing props. <${e}.Link /> component requires the following props: url, label and labelIcon.`,Xq="<UserButton /> can only accept <UserButton.UserProfilePage />, <UserButton.UserProfileLink /> and <UserButton.MenuItems /> as its children. Any other provided component will be ignored. Additionally, please ensure that the component is rendered in a client component.",Zq="<UserButton.MenuItems /> component can only accept <UserButton.Action /> and <UserButton.Link /> as its children. Any other provided component will be ignored. Additionally, please ensure that the component is rendered in a client component.",Jq="<UserButton.MenuItems /> component needs to be a direct child of `<UserButton />`.",e5="<UserButton.Action /> component needs to be a direct child of `<UserButton.MenuItems />`.",t5="<UserButton.Link /> component needs to be a direct child of `<UserButton.MenuItems />`.",a5="Missing props. <UserButton.Link /> component requires the following props: href, label and labelIcon.",n5="Missing props. <UserButton.Action /> component requires the following props: label.",kd=e=>t=>{try{return _.Children.only(e)}catch{const r=_.Children.toArray(e);return r.length===1&&_.isValidElement(r[0])?r[0]:Rn.throw($q(t))}},Sd=(e,t)=>(e||(e=t),typeof e=="string"&&(e=_.createElement("button",null,e)),e),Cd=e=>(...t)=>{if(e&&typeof e=="function")return e(...t)},r5=e=>$0(`VITE_${e}`)||$0(e),s5=(e,t)=>e!==void 0?e:r5(t)||void 0,i5=e=>{const t=s5(e.publishableKey,"CLERK_PUBLISHABLE_KEY");return{...e,...t!==void 0&&{publishableKey:t}}};function V0(e){return typeof e=="function"}var gc=new Map;function o5(e,t,r=1){_.useEffect(()=>{const s=gc.get(e)||0;return s==r?Rn.throw(t):(gc.set(e,s+1),()=>{gc.set(e,(gc.get(e)||1)-1)})},[])}function l5(e,t,r){const s=e.displayName||e.name||t||"Component",c=d=>(o5(t,r),_.createElement(e,{...d}));return c.displayName=`withMaxAllowedInstancesGuard(${s})`,c}var jo=e=>{const[t,r]=S.useState(new Map);return e.map(s=>({id:s.id,mount:c=>r(d=>new Map(d).set(String(s.id),c)),unmount:()=>r(c=>{const d=new Map(c);return d.set(String(s.id),null),d}),portal:()=>{const c=t.get(String(s.id));return c?wd.createPortal(s.component,c):null}}))},Jt=(e,t)=>!!e&&_.isValidElement(e)&&e?.type===t,Mw=(e,t)=>Rw({children:e,reorderItemsLabels:["account","security","billing","apiKeys"],LinkComponent:Go,PageComponent:Wo,MenuItemsComponent:Ad,componentName:"UserProfile"},t),Pw=(e,t)=>Rw({children:e,reorderItemsLabels:["general","members","billing","apiKeys"],LinkComponent:Ed,PageComponent:qd,componentName:"OrganizationProfile"},t),_w=e=>{const t=[],r=[Ed,qd,Ad,Wo,Go];return _.Children.forEach(e,s=>{r.some(c=>Jt(s,c))||t.push(s)}),t},Rw=(e,t)=>{const{children:r,LinkComponent:s,PageComponent:c,MenuItemsComponent:d,reorderItemsLabels:m,componentName:h}=e,{allowForAnyChildren:f=!1}=t||{},y=[];_.Children.forEach(r,R=>{if(!Jt(R,c)&&!Jt(R,s)&&!Jt(R,d)){R&&!f&&ta(Hq(h));return}const{props:I}=R,{children:$,label:z,url:G,labelIcon:L}=I;if(Jt(R,c))if(W0(I,m))y.push({label:z});else if(wp(I))y.push({label:z,labelIcon:L,children:$,url:G});else{ta(Qq(h));return}if(Jt(R,s))if(kp(I))y.push({label:z,labelIcon:L,url:G});else{ta(Yq(h));return}});const b=[],v=[],x=[];
22y.forEach((R,I)=>{if(wp(R)){b.push({component:R.children,id:I}),v.push({component:R.labelIcon,id:I});return}kp(R)&&x.push({component:R.labelIcon,id:I})});const k=jo(b),E=jo(v),C=jo(x),N=[],q=[];return y.forEach((R,I)=>{if(W0(R,m)){N.push({label:R.label});return}if(wp(R)){const{portal:$,mount:z,unmount:G}=k.find(ne=>ne.id===I),{portal:L,mount:D,unmount:ee}=E.find(ne=>ne.id===I);N.push({label:R.label,url:R.url,mount:z,unmount:G,mountIcon:D,unmountIcon:ee}),q.push($),q.push(L);return}if(kp(R)){const{portal:$,mount:z,unmount:G}=C.find(L=>L.id===I);N.push({label:R.label,url:R.url,mountIcon:z,unmountIcon:G}),q.push($);return}}),{customPages:N,customPagesPortals:q}},W0=(e,t)=>{const{children:r,label:s,url:c,labelIcon:d}=e;return!r&&!c&&!d&&t.some(m=>m===s)},wp=e=>{const{children:t,label:r,url:s,labelIcon:c}=e;return!!t&&!!s&&!!c&&!!r},kp=e=>{const{children:t,label:r,url:s,labelIcon:c}=e;return!t&&!!s&&!!c&&!!r},c5=(e,t)=>{var r;return d5({children:e,reorderItemsLabels:["manageAccount","signOut"],MenuItemsComponent:Ad,MenuActionComponent:Uw,MenuLinkComponent:Dw,UserProfileLinkComponent:Go,UserProfilePageComponent:Wo,allowForAnyChildren:(r=t?.allowForAnyChildren)!=null?r:!1})},d5=({children:e,MenuItemsComponent:t,MenuActionComponent:r,MenuLinkComponent:s,UserProfileLinkComponent:c,UserProfilePageComponent:d,reorderItemsLabels:m,allowForAnyChildren:h=!1})=>{const f=[],y=[],b=[];_.Children.forEach(e,C=>{if(!Jt(C,t)&&!Jt(C,c)&&!Jt(C,d)){C&&!h&&ta(Xq);return}if(Jt(C,c)||Jt(C,d))return;const{props:N}=C;_.Children.forEach(N.children,q=>{if(!Jt(q,r)&&!Jt(q,s)){q&&ta(Zq);return}const{props:R}=q,{label:I,labelIcon:$,href:z,onClick:G,open:L}=R;if(Jt(q,r))if(G0(R,m))f.push({label:I});else if(Sp(R)){const D={label:I,labelIcon:$};if(G!==void 0)f.push({...D,onClick:G});else if(L!==void 0)f.push({...D,open:L.startsWith("/")?L:`/${L}`});else{ta("Custom menu item must have either onClick or open property");return}}else{ta(n5);return}if(Jt(q,s))if(Cp(R))f.push({label:I,labelIcon:$,href:z});else{ta(a5);return}})});const v=[],x=[];f.forEach((C,N)=>{Sp(C)&&v.push({component:C.labelIcon,id:N}),Cp(C)&&x.push({component:C.labelIcon,id:N})});const k=jo(v),E=jo(x);return f.forEach((C,N)=>{if(G0(C,m)&&y.push({label:C.label}),Sp(C)){const{portal:q,mount:R,unmount:I}=k.find(z=>z.id===N),$={label:C.label,mountIcon:R,unmountIcon:I};"onClick"in C?$.onClick=C.onClick:"open"in C&&($.open=C.open),y.push($),b.push(q)}if(Cp(C)){const{portal:q,mount:R,unmount:I}=E.find($=>$.id===N);y.push({label:C.label,href:C.href,mountIcon:R,unmountIcon:I}),b.push(q)}}),{customMenuItems:y,customMenuItemsPortals:b}},G0=(e,t)=>{const{children:r,label:s,onClick:c,labelIcon:d}=e;return!r&&!c&&!d&&t.some(m=>m===s)},Sp=e=>{const{label:t,labelIcon:r,onClick:s,open:c}=e;return!!r&&!!t&&(typeof s=="function"||typeof c=="string")},Cp=e=>{const{label:t,href:r,labelIcon:s}=e;return!!r&&!!s&&!!t},u5=e=>{const t=e?.isReady;return r=>new Promise((s,c)=>{const{root:d=document?.body,selector:m,timeout:h=0}=r;if(!d){c(new Error("No root element provided"));return}let f=d;if(m&&(f=d?.querySelector(m)),t(f,m)){s();return}const y=new MutationObserver(b=>{for(const v of b)if(!f&&m&&(f=d?.querySelector(m)),(e.childList&&v.type==="childList"||e.attributes&&v.type==="attributes")&&t(f,m)){y.disconnect(),s();return}});y.observe(d,e),h>0&&setTimeout(()=>{y.disconnect(),c(new Error(`Timeout waiting for ${m}`))},h)})},m5=u5({childList:!0,subtree:!0,isReady:(e,t)=>{var r;return!!e?.childElementCount&&((r=e?.matches)==null?void 0:r.call(e,t))&&e.childElementCount>0}});function $t(e,t){const r=S.useRef(),[s,c]=S.useState("rendering");return S.useEffect(()=>{if(!e)throw new Error("Clerk: no component name provided, unable to detect mount.");if(typeof window<"u"&&!r.current){const d=`[data-clerk-component="${e}"]`,m=t?.selector;r.current=m5({selector:m?d+m:d}).then(()=>{c("rendered")}).catch(()=>{c("error")})}},[e,t?.selector]),s}var yc=e=>"mount"in e,K0=e=>"open"in e,H0=e=>e?.map(({mountIcon:t,unmountIcon:r,...s})=>s),Tt=class extends _.PureComponent{constructor(){super(...arguments),this.rootRef=_.createRef()}componentDidUpdate(e){var t,r,s,c;if(!yc(e)||!yc(this.props))return;const d=B0(e.props,"customPages","customMenuItems","children"),m=B0(this.props.props,"customPages","customMenuItems","children"),h=((t=d.customPages)==null?void 0:t.length)!==((r=m.customPages)==null?void 0:r.length),f=((s=d.customMenuItems)==null?void 0:s.length)!==((c=m.customMenuItems)==null?void 0:c.length),y=H0(e.props.customMenuItems),b=H0(this.props.props.customMenuItems);(!L0(d,m)||!L0(y,b)||h||f)&&this.rootRef.current&&this.props.updateProps({node:this.rootRef.current,props:this.props.props})}componentDidMount(){this.rootRef.current&&(yc(this.props)&&this.props.mount(this.rootRef.current,this.props.props),K0(this.props)&&this.props.open(this.props.props))}componentWillUnmount(){this.rootRef.current&&(yc(this.props)&&this.props.unmount(this.rootRef.current),K0(this.props)&&this.props.close())}render(){const{hideRootHtmlElement:e=!1}=this.props,t={ref:this.rootRef,...this.props.rootProps,...this.props.component&&{"data-clerk-component":this.props.component}};return _.createElement(_.Fragment,null,!e&&_.createElement("div",{...t}),this.props.children)}},it=(e,t)=>
22{const s=(typeof t=="string"?t:t?.component)||e.displayName||e.name||"Component";e.displayName=s;const c=typeof t=="string"?void 0:t,d=m=>{xd(s||"withClerk");const h=df(),f=Iq();return!h.loaded&&!c?.renderWhileLoading?null:_.createElement(e,{getContainer:f,...m,component:s,clerk:h})};return d.displayName=`withClerk(${s})`,d},jd=e=>{var t,r;return _.createElement(_.Fragment,null,(t=e?.customPagesPortals)==null?void 0:t.map((s,c)=>S.createElement(s,{key:c})),(r=e?.customMenuItemsPortals)==null?void 0:r.map((s,c)=>S.createElement(s,{key:c})))},p5=it(({clerk:e,component:t,fallback:r,...s})=>{const d=$t(t)==="rendering"||!e.loaded,m={...d&&r&&{style:{display:"none"}}};return _.createElement(_.Fragment,null,d&&r,e.loaded&&_.createElement(Tt,{component:t,mount:e.mountSignIn,unmount:e.unmountSignIn,updateProps:e.__internal_updateProps,props:s,rootProps:m}))},{component:"SignIn",renderWhileLoading:!0}),h5=it(({clerk:e,component:t,fallback:r,...s})=>{const d=$t(t)==="rendering"||!e.loaded,m={...d&&r&&{style:{display:"none"}}};return _.createElement(_.Fragment,null,d&&r,e.loaded&&_.createElement(Tt,{component:t,mount:e.mountSignUp,unmount:e.unmountSignUp,updateProps:e.__internal_updateProps,props:s,rootProps:m}))},{component:"SignUp",renderWhileLoading:!0});function Wo({children:e}){return ta(Vq),_.createElement(_.Fragment,null,e)}function Go({children:e}){return ta(Wq),_.createElement(_.Fragment,null,e)}var f5=it(({clerk:e,component:t,fallback:r,...s})=>{const d=$t(t)==="rendering"||!e.loaded,m={...d&&r&&{style:{display:"none"}}},{customPages:h,customPagesPortals:f}=Mw(s.children);return _.createElement(_.Fragment,null,d&&r,_.createElement(Tt,{component:t,mount:e.mountUserProfile,unmount:e.unmountUserProfile,updateProps:e.__internal_updateProps,props:{...s,customPages:h},rootProps:m},_.createElement(jd,{customPagesPortals:f})))},{component:"UserProfile",renderWhileLoading:!0});Object.assign(f5,{Page:Wo,Link:Go});var Iw=S.createContext({mount:()=>{},unmount:()=>{},updateProps:()=>{}}),g5=it(({clerk:e,component:t,fallback:r,...s})=>{const d=$t(t)==="rendering"||!e.loaded,m={...d&&r&&{style:{display:"none"}}},{customPages:h,customPagesPortals:f}=Mw(s.children,{allowForAnyChildren:!!s.__experimental_asProvider}),y={...s.userProfileProps,customPages:h},{customMenuItems:b,customMenuItemsPortals:v}=c5(s.children,{allowForAnyChildren:!!s.__experimental_asProvider}),x=_w(s.children),k={mount:e.mountUserButton,unmount:e.unmountUserButton,updateProps:e.__internal_updateProps,props:{...s,userProfileProps:y,customMenuItems:b}},E={customPagesPortals:f,customMenuItemsPortals:v};return _.createElement(Iw.Provider,{value:k},d&&r,e.loaded&&_.createElement(Tt,{component:t,...k,hideRootHtmlElement:!!s.__experimental_asProvider,rootProps:m},s.__experimental_asProvider?x:null,_.createElement(jd,{...E})))},{component:"UserButton",renderWhileLoading:!0});function Ad({children:e}){return ta(Jq),_.createElement(_.Fragment,null,e)}function Uw({children:e}){return ta(e5),_.createElement(_.Fragment,null,e)}function Dw({children:e}){return ta(t5),_.createElement(_.Fragment,null,e)}function y5(e){const t=S.useContext(Iw),r={...t,props:{...t.props,...e}};return _.createElement(Tt,{...r})}Object.assign(g5,{UserProfilePage:Wo,UserProfileLink:Go,MenuItems:Ad,Action:Uw,Link:Dw,__experimental_Outlet:y5});function qd({children:e}){return ta(Gq),_.createElement(_.Fragment,null,e)}function Ed({children:e}){return ta(Kq),_.createElement(_.Fragment,null,e)}var b5=it(({clerk:e,component:t,fallback:r,...s})=>{const d=$t(t)==="rendering"||!e.loaded,m={...d&&r&&{style:{display:"none"}}},{customPages:h,customPagesPortals:f}=Pw(s.children);return _.createElement(_.Fragment,null,d&&r,e.loaded&&_.createElement(Tt,{component:t,mount:e.mountOrganizationProfile,unmount:e.unmountOrganizationProfile,updateProps:e.__internal_updateProps,props:{...s,customPages:h},rootProps:m},_.createElement(jd,{customPagesPortals:f})))},{component:"OrganizationProfile",renderWhileLoading:!0});Object.assign(b5,{Page:qd,Link:Ed});it(({clerk:e,component:t,fallback:r,...s})=>{const d=$t(t)==="rendering"||!e.loaded,m={...d&&r&&{style:{display:"none"}}};return _.createElement(_.Fragment,null,d&&r,e.loaded&&_.createElement(Tt,{component:t,mount:e.mountCreateOrganization,unmount:e.unmountCreateOrganization,updateProps:e.__internal_updateProps,props:s,rootProps:m}))},{component:"CreateOrganization",renderWhileLoading:!0});var Ow=S.createContext({mount:()=>{},unmount:()=>{},updateProps:()=>{}}),v5=it(({clerk:e,component:t,fallback:r,...s})=>{const d=$t(t)==="rendering"||!e.loaded,m={...d&&r&&{style:{display:"none"}}},{customPages:h,customPagesPortals:f}=Pw(s.children,{allowForAnyChildren:!!s.__experimental_asProvider}),y={...s.organizationProfileProps,customPages:h},b=_w(s.children),v={mount:e.mountOrganizationSwitcher,unmount:e.unmountOrganizationSwitcher,updateProps:e.__internal_updateProps,props:{...s,organizationProfileProps:y},rootProps:m,component:t};return e.__experimental_prefetchOrganizationSwitcher(),_.createElement(Ow.Provider,{value:v},_.createElement(_.Fragment,null,d&&r,e.loaded&&_.createElement(Tt,{...v,hideRootHtmlElement:!!s.__experimental_asProvider},s.__experimental_asProvider?b:null,_.createElement(jd,{customPagesPortals:f}))))},{component:"OrganizationSwitcher",renderWhileLoading:!0});function x5(e){const t=S.useContext(Ow),r={...t,props:{...t.props,...e}};return _.createElement(Tt,{...r})}Object.assign(v5,{OrganizationProfilePage:qd,OrganizationProfileLink:Ed,__experimental_Outlet:x5});it(({clerk:e,component:t,fallback:r,...s})=>{const d=$t(t)==="rendering"||!e.loaded,m={...d&&r&&{style:{display:"none"}}};return _.createElement(_.Fragment,null,d&&r,e.loaded&&_.createElement(Tt,{component:t,mount:e.mountOrganizationList,unmount:e.unmountOrganizationList,updateProps:e.__internal_updateProps,props:s,rootProps:m}))},{component:"OrganizationList",renderWhileLoading:!0});it(({clerk:e,component:t,fallback:r,...s})=>{const d=$t(t)==="rendering"||!e.loaded,m={...d&&r&&{style:{display:"none"}}};return _.createElement(_.Fragment,null,d&&r,e.loaded&&_.createElement(Tt,{component:t,open:e.openGoogleOneTap,close:e.closeGoogleOneTap,updateProps:e.__internal_updateProps,props:s,rootProps:m}))},{component:"GoogleOneTap",renderWhileLoading:!0});it(({clerk:e,component:t,fallback:r,...s})=>{const d=$t(t)==="rendering"||!e.loaded,m={...d&&r&&{style:{display:"none"}}};return _.createElement(_.Fragment,null,d&&r,e.loaded&&_.createElement(Tt,{component:t,mount:e.mountWaitlist,unmount:e.unmountWaitlist,updateProps:e.__internal_updateProps,props:s,rootProps:m}))},{component:"Waitlist",renderWhileLoading:!0});it(({clerk:e,component:t,fallback:r,...s})=>{const d=$t(t,{selector:'[data-component-status="ready"]'})==="rendering"||!e.loaded,m={...d&&r&&{style:{display:"none"}}};return _.createElement(_.Fragment,null,d&&r,e.loaded&&_.createElement(Tt,{component:t,mount:e.mountPricingTable,unmount:e.unmountPricingTable,updateProps:e.__internal_updateProps,props:s,rootProps:m}))},{component:"PricingTable",renderWhileLoading:!0});it(({clerk:e,component:t,fallback:r,...s})=>{const d=$t(t)==="rendering"||!e.loaded,m={...d&&r&&{style:{display:"none"}}};return _.createElement(_.Fragment,null,d&&r,e.loaded&&_.createElement(Tt,{component:t,mount:e.mountAPIKeys,unmount:e.unmountAPIKeys,updateProps:e.__internal_updateProps,props:s,rootProps:m}))},{component:"ApiKeys",renderWhileLoading:!0});it(({clerk:e,component:t,fallback:r,...s})=>{const d=$t(t)==="rendering"||!e.loaded,m={...d&&r&&{style:{display:"none"}}};return _.createElement(_.Fragment,null,d&&r,e.loaded&&_.createElement(Tt,{component:t,mount:e.__experimental_mountConfigureSSO,unmount:e.__experimental_unmountConfigureSSO,updateProps:e.__internal_updateProps,props:s,rootProps:m}))},{component:"ConfigureSSO",renderWhileLoading:!0});it(({clerk:e,component:t,fallback:r,...s})=>{const d=$t(t)==="rendering"||!e.loaded,m={...d&&r&&{style:{display:"none"}}};return _.createElement(_.Fragment,null,d&&r,e.loaded&&_.createElement(Tt,{component:t,mount:e.__internal_mountOAuthConsent,unmount:e.__internal_unmountOAuthConsent,updateProps:e.__internal_updateProps,props:s,rootProps:m}))},{component:"OAuthConsent",renderWhileLoading:!0});it(({clerk:e,component:t,fallback:r,...s})=>{const d=$t(t)==="rendering"||!e.loaded,m={...d&&r&&{style:{display:"none"}}};return _.createElement(_.Fragment,null,d&&r,e.loaded&&_.createElement(Tt,{component:t,mount:e.mountUserAvatar,unmount:e.unmountUserAvatar,updateProps:e.__internal_updateProps,props:s,rootProps:m}))},{component:"UserAvatar",renderWhileLoading:!0});it(({clerk:e,component:t,fallback:r,...s})=>{const d=$t(t)==="rendering"||!e.loaded,m={...d&&r&&{style:{display:"none"}}};return _.createElement(_.Fragment,null,d&&r,e.loaded&&_.createElement(Tt,{component:t,mount:e.mountTaskChooseOrganization,unmount:e.unmountTaskChooseOrganization,updateProps:e.__internal_updateProps,props:s,rootProps:m}))},{component:"TaskChooseOrganization",renderWhileLoading:!0});it(({clerk:e,component:t,fallback:r,...s})=>{const d=$t(t)==="rendering"||!e.loaded,m={...d&&r&&{style:{display:"none"}}};return _.createElement(_.Fragment,null,d&&r,e.loaded&&_.createElement(Tt,{component:t,mount:e.mountTaskResetPassword,unmount:e.unmountTaskResetPassword,updateProps:e.__internal_updateProps,props:s,rootProps:m}))},{component:"TaskResetPassword",renderWhileLoading:!0});it(({clerk:e,component:t,fallback:r,...s})=>{const d=$t(t)==="rendering"||!e.loaded,m={...d&&r&&{style:{display:"none"}}};return _.createElement(_.Fragment,null,d&&r,e.loaded&&_.createElement(Tt,{component:t,mount:e.mountTaskSetupMFA,unmount:e.unmountTaskSetupMFA,updateProps:e.__internal_updateProps,props:s,rootProps:m}))},{component:"TaskSetupMFA",renderWhileLoading:!0});var w5={actor:void 0,factorVerificationAge:null,orgId:void 0,orgPermissions:void 0,orgRole:void 0,orgSlug:void 0,sessionClaims:void 0,sessionId:void 0,sessionStatus:void 0,userId:void 0};function k5(){const e=Vo(),t=qw(),r=S.useCallback(()=>t,[t]),s=S.useSyncExternalStore(S.useCallback(d=>e.addListener(d,{skipInitialEmit:!0}),[e]),S.useCallback(()=>!e.loaded||!e.__internal_lastEmittedResources?r():e.__internal_lastEmittedResources,[e,r]),r);return S.useMemo(()=>
22{if(!s)return w5;const d=C5(s)?A0(!1,{},s):A0(!0,s,void 0);return S5(d)},[s])}function S5(e){return{sessionId:e.sessionId,sessionStatus:e.sessionStatus,sessionClaims:e.sessionClaims,userId:e.userId,actor:e.actor,orgId:e.orgId,orgRole:e.orgRole,orgSlug:e.orgSlug,orgPermissions:e.orgPermissions,factorVerificationAge:e.factorVerificationAge}}function C5(e){return!("client"in e)}var Lw=e=>new Promise(t=>{const r=s=>{["ready","degraded"].includes(s)&&(t(),e.off("status",r))};e.on("status",r,{notify:!0})}),j5=e=>async t=>{if(!_o())throw new ef("useAuth().getToken() can only be used in browser environments. To access auth data server-side, see the Auth object reference doc: https://clerk.com/docs/reference/backend/types/auth-object",{code:"clerk_runtime_not_browser"});return await Lw(e),e.session?e.session.getToken(t):null},A5=e=>async(...t)=>(await Lw(e),e.signOut(...t)),uf=(e={})=>{var t;xd("useAuth");const{treatPendingAsSignedOut:r}=e??{},s=k5(),c=df(),d=S.useCallback(j5(c),[c]),m=S.useCallback(A5(c),[c]);return(t=c.telemetry)==null||t.record(So("useAuth",{treatPendingAsSignedOut:r})),q5({...s,getToken:d,signOut:m},{treatPendingAsSignedOut:r})};function q5(e,{treatPendingAsSignedOut:t=!0}={}){const{userId:r,orgId:s,orgRole:c,has:d,signOut:m,getToken:h,orgPermissions:f,factorVerificationAge:y,sessionClaims:b}=e??{},v=S.useCallback(k=>d?d(k):LA({userId:r,orgId:s,orgRole:c,orgPermissions:f,factorVerificationAge:y,features:b?.fea||"",plans:b?.pla||""})(k),[d,r,s,c,f,y,b]),x=zA({authObject:{...e,getToken:h,signOut:m,has:v},options:{treatPendingAsSignedOut:t}});return x||Rn.throw(Bq)}function E5(e){var t,r,s;xd("useClerkSignal");const c=df();switch(e){case"signIn":(t=c.telemetry)==null||t.record(So("useSignIn",{apiVersion:"2025-11"}));break;case"signUp":(r=c.telemetry)==null||r.record(So("useSignUp",{apiVersion:"2025-11"}));break;case"waitlist":(s=c.telemetry)==null||s.record(So("useWaitlist",{apiVersion:"2025-11"}));break}const d=S.useCallback(f=>c.loaded?c.__internal_state.__internal_effect(()=>{switch(e){case"signIn":c.__internal_state.signInSignal();break;case"signUp":c.__internal_state.signUpSignal();break;case"waitlist":c.__internal_state.waitlistSignal();break;default:throw new Error(`Unknown signal: ${e}`)}f()}):()=>{},[c,c.loaded,c.__internal_state]),m=S.useCallback(()=>{switch(e){case"signIn":return c.__internal_state.signInSignal();case"signUp":return c.__internal_state.signUpSignal();case"waitlist":return c.__internal_state.waitlistSignal();default:throw new Error(`Unknown signal: ${e}`)}},[c.__internal_state]);return S.useSyncExternalStore(d,m,m)}var N5=()=>E5("signIn"),zw=e=>{throw TypeError(e)},mf=(e,t,r)=>t.has(e)||zw("Cannot "+r),at=(e,t,r)=>(mf(e,t,"read from private field"),r?r.call(e):t.get(e)),lr=(e,t,r)=>t.has(e)?zw("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,r),$r=(e,t,r,s)=>(mf(e,t,"write to private field"),t.set(e,r),r),jp=(e,t,r)=>(mf(e,t,"access private method"),r),T5=[[18,0,-1,0],[19,0,0,3],[19,1,1,4],[19,2,2,3],[19,3,3,0]];const Q0=new Set,Nd=(e,t,r)=>{const s=Oq()||Lq(),c=e;Q0.has(c)||s||(Q0.add(c),console.warn(`Clerk - DEPRECATION WARNING: "${e}" is deprecated and will be removed in the next major release. 23${t}`))};function M5(e){const t=e.match(/^(\d+)\.(\d+)\.(\d+)/);if(!t)return null;const[,r,s,c]=t;return{major:parseInt(r,10),minor:parseInt(s,10),patch:parseInt(c,10)}}function P5(e,t){const{major:r,minor:s,patch:c}=e;return t.some(([d,m,h,f])=>r!==d?!1:h===-1?s>m||s===m&&c>=f:s===h&&c>=f)}function _5(e,t){const r=M5(e);return r?P5(r,t):!1}const Y0=(e,t,r,s,c)=>{const{notify:d}=c||{};let m=e.get(r);m||(m=[],e.set(r,m)),m.push(s),d&&t.has(r)&&s(t.get(r))},X0=(e,t,r)=>(e.get(t)||[]).map(s=>s(r)),Z0=(e,t,r)=>{const s=e.get(t);s&&(r?s.splice(s.indexOf(r)>>>0,1):e.set(t,[]))},R5=()=>{const e=new Map,t=new Map,r=new Map;return{on:(...c)=>Y0(e,t,...c),prioritizedOn:(...c)=>Y0(r,t,...c),emit:(c,d)=>{t.set(c,d),X0(r,c,d),X0(e,c,d)},off:(...c)=>Z0(e,...c),prioritizedOff:(...c)=>Z0(r,...c),internal:{retrieveListeners:c=>e.get(c)||[]}}},Hs={Status:"status"},I5=()=>R5(),U5={initialDelay:125,maxDelayBetweenRetries:0,factor:2,shouldRetry:(e,t)=>t<5,retryImmediately:!1,jitter:!0},D5=100,Fw=async e=>new Promise(t=>setTimeout(t,e)),$w=(e,t)=>t?e*(1+Math.random()):e,O5=e=>{let t=0;const r=()=>{const s=e.initialDelay,c=e.factor;let d=s*Math.pow(c,t);return d=$w(d,e.jitter),Math.min(e.maxDelayBetweenRetries||d,d)};return async()=>{await Fw(r()),t++}},L5=async(e,t={})=>{let r=0;const{shouldRetry:s,initialDelay:c,maxDelayBetweenRetries:d,factor:m,retryImmediately:h,jitter:f,onBeforeRetry:y}
23={...U5,...t},b=O5({initialDelay:c,maxDelayBetweenRetries:d,factor:m,jitter:f});for(;;)try{return await e()}catch(v){if(r++,!s(v,r))throw v;y&&await y(r),h&&r===1?await Fw($w(D5,f)):await b()}},z5="loadScript cannot be called when document does not exist",F5="loadScript cannot be called without a src";async function Bw(e="",t){const{async:r,defer:s,beforeLoad:c,crossOrigin:d,nonce:m}=t||{};return L5(()=>new Promise((f,y)=>{e||y(new Error(F5)),(!document||!document.body)&&y(new Error(z5));const b=document.createElement("script");d&&b.setAttribute("crossorigin",d),b.async=r||!1,b.defer=s||!1,b.addEventListener("load",()=>{b.remove(),f(b)}),b.addEventListener("error",v=>{b.remove(),y(v.error??new Error(`failed to load script: ${e}`))}),b.src=e,b.nonce=m,c?.(b),document.body.appendChild(b)}),{shouldRetry:(f,y)=>y<=5})}function $5(e){return e?B5(e)||Ko(e):!0}function B5(e){return/^http(s)?:\/\//.test(e||"")}function Ko(e){return e.startsWith("/")}function V5(e){return e?!Ko(e)||typeof window>"u"||!window.location?.origin?e:new URL(e,window.location.origin).toString():""}function W5(e){if(!e)return"";let t;if(e.match(/^(clerk\.)+\w*$/))t=/(clerk\.)*(?=clerk\.)/;else{if(e.match(/\.clerk.accounts/))return e;t=/^(clerk\.)*/gi}return`clerk.${e.replace(t,"")}`}const Vw=(e,t="6.11.3")=>{if(e)return e;const r=G5(t);return r?r==="snapshot"?t:r:K5(t)},G5=e=>e.trim().replace(/^v/,"").match(/-(.+?)(\.|$)/)?.[1],K5=e=>e.trim().replace(/^v/,"").split(".")[0],{isDevOrStagingUrl:H5}=jA(),pf=hw({packageName:"@clerk/shared"});function Ww(e){return typeof window>"u"||!window[e]?!1:!!window[e]}const Ap=()=>Ww("Clerk"),qp=()=>Ww("__internal_ClerkUICtor");function Gw(e){if(typeof window>"u"||!window.performance)return!1;const t=performance.getEntriesByName(e,"resource");if(t.length===0)return!1;const r=t[t.length-1];return r.transferSize===0&&r.decodedBodySize===0&&(r.responseEnd===0||r.responseEnd>0&&r.responseStart>0||"responseStatus"in r&&(r.responseStatus>=400||r.responseStatus===0))}const Q5=async e=>{const t=e?.scriptLoadTimeout??15e3,r=m=>new ef("Failed to load Clerk JS"+(m?.message?`, ${m.message}`:""),{code:"failed_to_load_clerk_js",cause:m});if(Ap())return null;if(!e?.publishableKey)return pf.throwMissingPublishableKeyError(),null;const s=X5(e),c=document.querySelector("script[data-clerk-js-script]");if(c)if(Gw(s))c.remove();else try{return await Zc(t,Ap,r(),c),null}catch{c.remove()}const d=Zc(t,Ap,r());return Bw(s,{async:!0,crossOrigin:"anonymous",nonce:e.nonce,beforeLoad:Hw(Kw(e))}).catch(m=>{throw r(m)}),d},Y5=async e=>{const t=e?.scriptLoadTimeout??15e3,r=m=>new ef("Failed to load Clerk UI"+(m?.message?`, ${m.message}`:""),{code:"failed_to_load_clerk_ui",cause:m});if(qp())return null;if(!e?.publishableKey)return pf.throwMissingPublishableKeyError(),null;const s=Z5(e),c=document.querySelector("script[data-clerk-ui-script]");if(c)if(Gw(s))c.remove();else try{return await Zc(t,qp,r(),c),null}catch{c.remove()}const d=Zc(t,qp,r());return Bw(s,{async:!0,crossOrigin:"anonymous",nonce:e.nonce,beforeLoad:Hw(J5(e))}).catch(m=>{throw r(m)}),d},X5=e=>{const{__internal_clerkJSUrl:t,__internal_clerkJSVersion:r,proxyUrl:s,domain:c,publishableKey:d}=e;if(t)return t;const m=Vw(r);return s&&Ko(s)?Qw(s,"clerk-js",m,"clerk.browser.js"):`https://${Yw({publishableKey:d,proxyUrl:s,domain:c})}/npm/@clerk/clerk-js@${m}/dist/clerk.browser.js`},Z5=e=>{const{__internal_clerkUIUrl:t,__internal_clerkUIVersion:r,proxyUrl:s,domain:c,publishableKey:d}=e;if(t)return t;const m=Vw(r,"1.12.1");return s&&Ko(s)?Qw(s,"ui",m,"ui.browser.js"):`https://${Yw({publishableKey:d,proxyUrl:s,domain:c})}/npm/@clerk/ui@${m}/dist/ui.browser.js`},Kw=e=>{const t={};return e.publishableKey&&(t["data-clerk-publishable-key"]=e.publishableKey),e.proxyUrl&&(t["data-clerk-proxy-url"]=e.proxyUrl),e.domain&&(t["data-clerk-domain"]=e.domain),e.nonce&&(t.nonce=e.nonce),t},J5=e=>Kw(e),Hw=e=>t=>{for(const r in e)t.setAttribute(r,e[r])},eE=e=>{for(;e.endsWith("/");)e=e.slice(0,-1);return e},Qw=(e,t,r,s)=>`${eE(e)}/npm/@clerk/${t}@${r}/dist/${s}`,Yw=e=>{const{proxyUrl:t,domain:r,publishableKey:s}=e;if(t&&$5(t)){const c=V5(t);return Ko(c)?fp(s)?.frontendApi||"":c.replace(/http(s)?:\/\//,"")}else return r&&!H5(fp(s)?.frontendApi||"")?W5(r):fp(s)?.frontendApi||""};function Zc(e,t,r,s){return new Promise((c,d)=>{let m=!1;const h=(x,k)=>{clearTimeout(x),clearInterval(k)};s?.addEventListener("error",()=>{h(b,v),d(r)});const f=()=>{m||t()&&(m=!0,h(b,v),c(null))},b=setTimeout(()=>{m||(m=!0,h(b,v),t()?c(null):d(r))},e);f();const v=setInterval(()=>{if(m){clearInterval(v);return}f()},100)})}function tE(e){pf.setPackageName({packageName:e})}var pa=({children:e,fallback:t,treatPendingAsSignedOut:r,when:s})=>{xd("Show");const{has:c,isLoaded:d,userId:m}=uf({treatPendingAsSignedOut:r});if(!d)return null;const h=s,f=e,y=t??null;return h==="signed-out"?m?y:f:m&&(h==="signed-in"||aE(h,c))?f:y};function aE(e,t){return typeof e=="function"?e(t):t(e)}it(({clerk:e,...t})=>{var r,s;const{client:c,session:d}=e,m=((s=(r=c.signedInSessions)==null?void 0:r.length)!=null?s:0)>0;return _.useEffect(()=>{d===null&&m?e.redirectToAfterSignOut():e.redirectToSignIn(t)},[]),null},"RedirectToSignIn");it(({clerk:e,...t})=>(_.useEffect(()=>{e.redirectToSignUp(t)},[]),null),"RedirectToSignUp");it(({clerk:e,...t})=>(_.useEffect(()=>{e.redirectToTasks(t)},[]),null),"RedirectToTasks");it(({clerk:e})=>(_.useEffect(()=>{Nd("RedirectToUserProfile","Use the `redirectToUserProfile()` method instead."),e.redirectToUserProfile()},[]),null),"RedirectToUserProfile");it(({clerk:e})=>(_.useEffect(()=>{Nd("RedirectToOrganizationProfile","Use the `redirectToOrganizationProfile()` method instead."),e.redirectToOrganizationProfile()},[]),null),"RedirectToOrganizationProfile");it(({clerk:e})=>(_.useEffect(()=>{Nd("RedirectToCreateOrganization","Use the `redirectToCreateOrganization()` method instead."),e.redirectToCreateOrganization()},[]),null),"RedirectToCreateOrganization");it(({clerk:e,...t})=>(_.useEffect(()=>{e.handleRedirectCallback(t)},[]),null),"AuthenticateWithRedirectCallback");function nE(){try{return _5(_.version,T5)}catch{return!1}}var rE=nE(),sE=()=>({fields:{identifier:null,password:null,code:null},raw:null,global:null}),iE=()=>({fields:{firstName:null,lastName:null,emailAddress:null,phoneNumber:null,password:null,username:null,code:null,captcha:null,legalAccepted:null},raw:null,global:null}),oE=()=>({fields:{emailAddress:null},raw:null,global:null}),J0=()=>({pathRoot:"",attempts:null,error:null,expireAt:null,externalVerificationRedirectURL:null,nonce:null,message:null,status:null,strategy:null,verifiedAtClient:null,verifiedFromTheSameClient(){return!1},reload(){throw new Error("reload() called before Clerk is loaded")},__internal_toSnapshot(){return{object:"verification",id:"",attempts:null,error:{code:"",message:""},expire_at:null,externalVerificationRedirectURL:null,nonce:null,message:null,status:null,strategy:null,verified_at_client:null}}}),bc=()=>({...J0(),supportedStrategies:[],nextAction:"",reload(){throw new Error("reload() called before Clerk is loaded")},__internal_toSnapshot(){return{...J0().__internal_toSnapshot(),next_action:this.nextAction,supported_strategies:this.supportedStrategies}}}),lE=class{constructor(e){this.isomorphicClerk=e,this.signInSignalProxy=this.buildSignInProxy(),this.signUpSignalProxy=this.buildSignUpProxy(),this.waitlistSignalProxy=this.buildWaitlistProxy()}signInSignal(){return this.signInSignalProxy}signUpSignal(){return this.signUpSignalProxy}waitlistSignal(){return this.waitlistSignalProxy}get __internal_waitlist(){return this.state.__internal_waitlist}checkoutSignal(e){return this.buildCheckoutProxy(e)}buildSignInProxy(){const e=this.gateProperty.bind(this),t=()=>this.client.signIn.__internal_future;return{errors:sE(),fetchStatus:"idle",signIn:{status:"needs_identifier",availableStrategies:[],get isTransferable(){return e(t,"isTransferable",!1)},get id(){return e(t,"id",void 0)}
23,get supportedFirstFactors(){return e(t,"supportedFirstFactors",[])},get supportedSecondFactors(){return e(t,"supportedSecondFactors",[])},get secondFactorVerification(){return e(t,"secondFactorVerification",{status:null,error:null,expireAt:null,externalVerificationRedirectURL:null,nonce:null,attempts:null,message:null,strategy:null,verifiedAtClient:null,verifiedFromTheSameClient:()=>!1,__internal_toSnapshot:()=>{throw new Error("__internal_toSnapshot called before Clerk is loaded")},pathRoot:"",reload:()=>{throw new Error("__internal_toSnapshot called before Clerk is loaded")}})},get identifier(){return e(t,"identifier",null)},get createdSessionId(){return e(t,"createdSessionId",null)},get userData(){return e(t,"userData",{})},get firstFactorVerification(){return e(t,"firstFactorVerification",{status:null,error:null,expireAt:null,externalVerificationRedirectURL:null,nonce:null,attempts:null,message:null,strategy:null,verifiedAtClient:null,verifiedFromTheSameClient:()=>!1,__internal_toSnapshot:()=>{throw new Error("__internal_toSnapshot called before Clerk is loaded")},pathRoot:"",reload:()=>{throw new Error("__internal_toSnapshot called before Clerk is loaded")}})},get canBeDiscarded(){return e(t,"canBeDiscarded",!1)},create:this.gateMethod(t,"create"),password:this.gateMethod(t,"password"),sso:this.gateMethod(t,"sso"),finalize:this.gateMethod(t,"finalize"),reset:this.gateMethod(t,"reset"),emailCode:this.wrapMethods(()=>t().emailCode,["sendCode","verifyCode"]),emailLink:this.wrapStruct(()=>t().emailLink,["sendLink","waitForVerification"],["verification"],{verification:null}),resetPasswordEmailCode:this.wrapMethods(()=>t().resetPasswordEmailCode,["sendCode","verifyCode","submitPassword"]),resetPasswordPhoneCode:this.wrapMethods(()=>t().resetPasswordPhoneCode,["sendCode","verifyCode","submitPassword"]),phoneCode:this.wrapMethods(()=>t().phoneCode,["sendCode","verifyCode"]),mfa:this.wrapMethods(()=>t().mfa,["sendPhoneCode","verifyPhoneCode","sendEmailCode","verifyEmailCode","verifyTOTP","verifyBackupCode"]),ticket:this.gateMethod(t,"ticket"),passkey:this.gateMethod(t,"passkey"),web3:this.gateMethod(t,"web3")}}}buildSignUpProxy(){const e=this.gateProperty.bind(this),t=this.gateMethod.bind(this),r=()=>this.client.signUp.__internal_future;return{errors:iE(),fetchStatus:"idle",signUp:{get id(){return e(r,"id",void 0)},get requiredFields(){return e(r,"requiredFields",[])},get optionalFields(){return e(r,"optionalFields",[])},get missingFields(){return e(r,"missingFields",[])},get username(){return e(r,"username",null)},get firstName(){return e(r,"firstName",null)},get lastName(){return e(r,"lastName",null)},get emailAddress(){return e(r,"emailAddress",null)},get phoneNumber(){return e(r,"phoneNumber",null)},get web3Wallet(){return e(r,"web3Wallet",null)},get hasPassword(){return e(r,"hasPassword",!1)},get unsafeMetadata(){return e(r,"unsafeMetadata",{})},get createdSessionId(){return e(r,"createdSessionId",null)},get createdUserId(){return e(r,"createdUserId",null)},get abandonAt(){return e(r,"abandonAt",null)},get legalAcceptedAt(){return e(r,"legalAcceptedAt",null)},get locale(){return e(r,"locale",null)},get status(){return e(r,"status","missing_requirements")},get unverifiedFields(){return e(r,"unverifiedFields",[])},get isTransferable(){return e(r,"isTransferable",!1)},get canBeDiscarded(){return e(r,"canBeDiscarded",!1)},create:t(r,"create"),update:t(r,"update"),sso:t(r,"sso"),password:t(r,"password"),ticket:t(r,"ticket"),web3:t(r,"web3"),finalize:t(r,"finalize"),reset:t(r,"reset"),verifications:this.wrapStruct(()=>r().verifications,["sendEmailCode","verifyEmailCode","sendEmailLink","waitForEmailLinkVerification","sendPhoneCode","verifyPhoneCode"],["emailAddress","phoneNumber","web3Wallet","externalAccount","emailLinkVerification"],{emailAddress:bc(),phoneNumber:bc(),web3Wallet:bc(),externalAccount:bc(),emailLinkVerification:null})}}}buildWaitlistProxy(){const e=this.gateProperty.bind(this),t=this.gateMethod.bind(this),r=()=>this.state.__internal_waitlist;return{errors:oE(),fetchStatus:"idle",waitlist:{pathRoot:"/waitlist",get id(){return e(r,"id","")},get createdAt(){return e(r,"createdAt",null)},get updatedAt(){return e(r,"updatedAt",null)},join:t(r,"join"),reload:t(r,"reload")}}}buildCheckoutProxy(e){const t=this.gateProperty.bind(this),r=()=>this.checkout(e),s=()=>r().checkout;return{errors:{raw:null,global:null},fetchStatus:"idle",checkout:{get status(){return t(s,"status","needs_initialization")},get externalClientSecret(){return t(s,"externalClientSecret",null)},get externalGatewayId(){return t(s,"externalGatewayId",null)},get paymentMethod(){return t(s,"paymentMethod",null)},get plan(){return t(s,"plan",null)},get planPeriod(){return t(s,"planPeriod",null)},get totals(){return t(s,"totals",null)},get isImmediatePlanChange(){return t(s,"isImmediatePlanChange",!1)},get freeTrialEndsAt(){return t(s,"freeTrialEndsAt",null)},get payer(){return t(s,"payer",null)},get planPeriodStart(){return t(s,"planPeriodStart",null)},get needsPaymentMethod(){return t(s,"needsPaymentMethod",null)},start:this.gateMethod(s,"start"),confirm:this.gateMethod(s,"confirm"),finalize:this.gateMethod(s,"finalize")}}}__internal_effect(e){throw new Error("__internal_effect called before Clerk is loaded")}__internal_computed(e){throw new Error("__internal_computed called before Clerk is loaded")}get state(){const e=this.isomorphicClerk.__internal_state;if(!e)throw new Error("Clerk state not ready");return e}get client(){const e=this.isomorphicClerk.client;if(!e)throw new Error("Clerk client not ready");return e}get checkout(){const e=this.isomorphicClerk.__experimental_checkout;if(!e)throw new Error("Clerk checkout not ready");return e}gateProperty(e,t,r){return!_o()||!this.isomorphicClerk.loaded?r:e()[t]}gateMethod(e,t){return(async(...r)=>{if(!_o())return Rn.throw(`Attempted to call a method (${t}) that is not supported on the server.`);this.isomorphicClerk.loaded||await new Promise(c=>this.isomorphicClerk.addOnLoaded(c));const s=e();return s[t].apply(s,r)})}wrapMethods(e,t){return Object.fromEntries(t.map(r=>[r,this.gateMethod(e,r)]))}wrapStruct(e,t,r,s){const c={};for(const d of t)c[d]=this.gateMethod(e,d);for(const d of r)Object.defineProperty(c,d,{get:()=>this.gateProperty(e,d,s[d]),enumerable:!0});return c}};typeof globalThis.__BUILD_DISABLE_RHC__>"u"&&(globalThis.__BUILD_DISABLE_RHC__=!1);var cE={name:"@clerk/react",version:"6.6.6",environment:"production"},Mc,Zs,Js,Wa,Ga,xo,ur,wo,Pc,Xw=class Zw{constructor(t){lr(this,wo),this.clerkjs=null,this.preopenOneTap=null,this.preopenUserVerification=null,this.preopenEnableOrganizationsPrompt=null,this.preopenSignIn=null,this.preopenCheckout=null,this.preopenPlanDetails=null,this.preopenSubscriptionDetail
23s=null,this.preopenSignUp=null,this.preopenUserProfile=null,this.preopenOrganizationProfile=null,this.preopenCreateOrganization=null,this.preOpenWaitlist=null,this.premountSignInNodes=new Map,this.premountSignUpNodes=new Map,this.premountUserAvatarNodes=new Map,this.premountUserProfileNodes=new Map,this.premountUserButtonNodes=new Map,this.premountOrganizationProfileNodes=new Map,this.premountCreateOrganizationNodes=new Map,this.premountOrganizationSwitcherNodes=new Map,this.premountOrganizationListNodes=new Map,this.premountMethodCalls=new Map,this.premountWaitlistNodes=new Map,this.premountPricingTableNodes=new Map,this.premountAPIKeysNodes=new Map,this.premountConfigureSSONodes=new Map,this.premountOAuthConsentNodes=new Map,this.premountTaskChooseOrganizationNodes=new Map,this.premountTaskResetPasswordNodes=new Map,this.premountTaskSetupMFANodes=new Map,this.premountAddListenerCalls=new Map,this.loadedListeners=[],lr(this,Mc,"loading"),lr(this,Zs),lr(this,Js),lr(this,Wa),lr(this,Ga,I5()),lr(this,xo),this.buildSignInUrl=s=>{const c=()=>{var d;return((d=this.clerkjs)==null?void 0:d.buildSignInUrl(s))||""};if(this.clerkjs&&this.loaded)return c();this.premountMethodCalls.set("buildSignInUrl",c)},this.buildSignUpUrl=s=>{const c=()=>{var d;return((d=this.clerkjs)==null?void 0:d.buildSignUpUrl(s))||""};if(this.clerkjs&&this.loaded)return c();this.premountMethodCalls.set("buildSignUpUrl",c)},this.buildAfterSignInUrl=(...s)=>{const c=()=>{var d;return((d=this.clerkjs)==null?void 0:d.buildAfterSignInUrl(...s))||""};if(this.clerkjs&&this.loaded)return c();this.premountMethodCalls.set("buildAfterSignInUrl",c)},this.buildAfterSignUpUrl=(...s)=>{const c=()=>{var d;return((d=this.clerkjs)==null?void 0:d.buildAfterSignUpUrl(...s))||""};if(this.clerkjs&&this.loaded)return c();this.premountMethodCalls.set("buildAfterSignUpUrl",c)},this.buildAfterSignOutUrl=()=>{const s=()=>{var c;return((c=this.clerkjs)==null?void 0:c.buildAfterSignOutUrl())||""};if(this.clerkjs&&this.loaded)return s();this.premountMethodCalls.set("buildAfterSignOutUrl",s)},this.buildNewSubscriptionRedirectUrl=()=>{const s=()=>{var c;return((c=this.clerkjs)==null?void 0:c.buildNewSubscriptionRedirectUrl())||""};if(this.clerkjs&&this.loaded)return s();this.premountMethodCalls.set("buildNewSubscriptionRedirectUrl",s)},this.buildAfterMultiSessionSingleSignOutUrl=()=>{const s=()=>{var c;return((c=this.clerkjs)==null?void 0:c.buildAfterMultiSessionSingleSignOutUrl())||""};if(this.clerkjs&&this.loaded)return s();this.premountMethodCalls.set("buildAfterMultiSessionSingleSignOutUrl",s)},this.buildUserProfileUrl=()=>{const s=()=>{var c;return((c=this.clerkjs)==null?void 0:c.buildUserProfileUrl())||""};if(this.clerkjs&&this.loaded)return s();this.premountMethodCalls.set("buildUserProfileUrl",s)},this.buildCreateOrganizationUrl=()=>{const s=()=>{var c;return((c=this.clerkjs)==null?void 0:c.buildCreateOrganizationUrl())||""};if(this.clerkjs&&this.loaded)return s();this.premountMethodCalls.set("buildCreateOrganizationUrl",s)},this.buildOrganizationProfileUrl=()=>{const s=()=>{var c;return((c=this.clerkjs)==null?void 0:c.buildOrganizationProfileUrl())||""};if(this.clerkjs&&this.loaded)return s();this.premountMethodCalls.set("buildOrganizationProfileUrl",s)},this.buildWaitlistUrl=()=>{const s=()=>{var c;return((c=this.clerkjs)==null?void 0:c.buildWaitlistUrl())||""};if(this.clerkjs&&this.loaded)return s();this.premountMethodCalls.set("buildWaitlistUrl",s)},this.buildTasksUrl=()=>{const s=()=>{var c;return((c=this.clerkjs)==null?void 0:c.buildTasksUrl())||""};if(this.clerkjs&&this.loaded)return s();this.premountMethodCalls.set("buildTasksUrl",s)},this.buildUrlWithAuth=s=>{const c=()=>{var d;return((d=this.clerkjs)==null?void 0:d.buildUrlWithAuth(s))||""};if(this.clerkjs&&this.loaded)return c();this.premountMethodCalls.set("buildUrlWithAuth",c)},this.handleUnauthenticated=async()=>{const s=()=>{var c;return(c=this.clerkjs)==null?void 0:c.handleUnauthenticated()};this.clerkjs&&this.loaded?s():this.premountMethodCalls.set("handleUnauthenticated",s)},this.on=(...s)=>{var c;if((c=this.clerkjs)!=null&&c.on)return this.clerkjs.on(...s);at(this,Ga).on(...s)},this.off=(...s)=>{var c;if((c=this.clerkjs)!=null&&c.off)return this.clerkjs.off(...s);at(this,Ga).off(...s)},this.addOnLoaded=s=>{this.loadedListeners.push(s),this.loaded&&this.emitLoaded()},this.emitLoaded=()=>
23{this.loadedListeners.forEach(s=>s()),this.loadedListeners=[]},this.beforeLoad=s=>{if(!s)throw new Error("Failed to hydrate latest Clerk JS")},this.replayInterceptedInvocations=s=>{var c;if(!s)throw new Error("Failed to hydrate latest Clerk JS");return this.clerkjs=s,this.premountMethodCalls.forEach(d=>d()),this.premountAddListenerCalls.forEach((d,m)=>{d.handlers.nativeUnsubscribe=s.addListener(m,d.options)}),(c=at(this,Ga).internal.retrieveListeners("status"))==null||c.forEach(d=>{this.on("status",d,{notify:!0})}),this.preopenSignIn!==null&&s.openSignIn(this.preopenSignIn),this.preopenCheckout!==null&&s.__internal_openCheckout(this.preopenCheckout),this.preopenPlanDetails!==null&&s.__internal_openPlanDetails(this.preopenPlanDetails),this.preopenSubscriptionDetails!==null&&s.__internal_openSubscriptionDetails(this.preopenSubscriptionDetails),this.preopenSignUp!==null&&s.openSignUp(this.preopenSignUp),this.preopenUserProfile!==null&&s.openUserProfile(this.preopenUserProfile),this.preopenUserVerification!==null&&s.__internal_openReverification(this.preopenUserVerification),this.preopenOneTap!==null&&s.openGoogleOneTap(this.preopenOneTap),this.preopenOrganizationProfile!==null&&s.openOrganizationProfile(this.preopenOrganizationProfile),this.preopenCreateOrganization!==null&&s.openCreateOrganization(this.preopenCreateOrganization),this.preOpenWaitlist!==null&&s.openWaitlist(this.preOpenWaitlist),this.preopenEnableOrganizationsPrompt&&s.__internal_openEnableOrganizationsPrompt(this.preopenEnableOrganizationsPrompt),this.premountSignInNodes.forEach((d,m)=>{s.mountSignIn(m,d)}),this.premountSignUpNodes.forEach((d,m)=>{s.mountSignUp(m,d)}),this.premountUserProfileNodes.forEach((d,m)=>{s.mountUserProfile(m,d)}),this.premountUserAvatarNodes.forEach((d,m)=>{s.mountUserAvatar(m,d)}),this.premountUserButtonNodes.forEach((d,m)=>{s.mountUserButton(m,d)}),this.premountOrganizationListNodes.forEach((d,m)=>{s.mountOrganizationList(m,d)}),this.premountWaitlistNodes.forEach((d,m)=>{s.mountWaitlist(m,d)}),this.premountPricingTableNodes.forEach((d,m)=>{s.mountPricingTable(m,d)}),this.premountAPIKeysNodes.forEach((d,m)=>{s.mountAPIKeys(m,d)}),this.premountConfigureSSONodes.forEach((d,m)=>{s.__experimental_mountConfigureSSO(m,d)}),this.premountOAuthConsentNodes.forEach((d,m)=>{s.__internal_mountOAuthConsent(m,d)}),this.premountTaskChooseOrganizationNodes.forEach((d,m)=>{s.mountTaskChooseOrganization(m,d)}),this.premountTaskResetPasswordNodes.forEach((d,m)=>{s.mountTaskResetPassword(m,d)}),this.premountTaskSetupMFANodes.forEach((d,m)=>{s.mountTaskSetupMFA(m,d)}),typeof this.clerkjs.status>"u"&&at(this,Ga).emit(Hs.Status,"ready"),this.emitLoaded(),this.clerkjs},this.__experimental_checkout=(...s)=>this.loaded&&this.clerkjs?this.clerkjs.__experimental_checkout(...s):at(this,xo).checkoutSignal(...s),this.__internal_updateProps=async s=>{const c=await jp(this,wo,Pc).call(this);if(c&&"__internal_updateProps"in c)return c.__internal_updateProps(s)},this.setActive=s=>this.clerkjs?this.clerkjs.setActive(s):Promise.reject(),this.openSignIn=s=>{this.clerkjs&&this.loaded?this.clerkjs.openSignIn(s):this.preopenSignIn=s},this.closeSignIn=()=>{this.clerkjs&&this.loaded?this.clerkjs.closeSignIn():this.preopenSignIn=null},this.__internal_openCheckout=s=>{this.clerkjs&&this.loaded?this.clerkjs.__internal_openCheckout(s):this.preopenCheckout=s},this.__internal_closeCheckout=()=>{this.clerkjs&&this.loaded?this.clerkjs.__internal_closeCheckout():this.preopenCheckout=null},this.__internal_openPlanDetails=s=>{this.clerkjs&&this.loaded?this.clerkjs.__internal_openPlanDetails(s):this.preopenPlanDetails=s},this.__internal_closePlanDetails=()=>{this.clerkjs&&this.loaded?this.clerkjs.__internal_closePlanDetails():this.preopenPlanDetails=null},this.__internal_openSubscriptionDetails=s=>{this.clerkjs&&this.loaded?this.clerkjs.__internal_openSubscriptionDetails(s):this.preopenSubscriptionDetails=s??null},this.__internal_closeSubscriptionDetails=()=>{this.clerkjs&&this.loaded?this.clerkjs.__internal_closeSubscriptionDetails():this.preopenSubscriptionDetails=null},this.__internal_openReverification=s=>{this.clerkjs&&this.loaded?this.clerkjs.__internal_openReverification(s):this.preopenUserVerification=s},this.__internal_closeReverification=()=>{this.clerkjs&&this.loaded?this.clerkjs.__internal_closeReverification():this.preopenUserVerification=null},this.__internal_openEnableOrganizationsPrompt=s=>{this.clerkjs&&this.loaded?this.clerkjs.__internal_openEnableOrganizationsPrompt(s):this.preopenEnableOrganizationsPrompt=s},this.__internal_closeEnableOrganizationsPrompt=()=>{this.clerkjs&&this.loaded?this.clerkjs.__internal_closeEnableOrganizationsPrompt():this.preopenEnableOrganizationsPrompt=null},this.openGoogleOneTap=s=>{this.clerkjs&&this.loaded?this.clerkjs.openGoogleOneTap(s):this.preopenOneTap=s},this.closeGoogleOneTap=()=>{this.clerkjs&&this.loaded?this.clerkjs.closeGoogleOneTap():this.preopenOneTap=null},this.openUserProfile=s=>{this.clerkjs&&this.loaded?this.clerkjs.openUserProfile(s):this.preopenUserProfile=s},this.closeUserProfile=()=>{this.clerkjs&&this.loaded?this.clerkjs.closeUserProfile():this.preopenUserProfile=null},this.openOrganizationProfile=s=>{this.clerkjs&&this.loaded?this.clerkjs.openOrganizationProfile(s):this.preopenOrganizationProfile=s},this.closeOrganizationProfile=()=>{this.clerkjs&&this.loaded?this.clerkjs.closeOrganizationProfile():this.preopenOrganizationProfile=null},this.openCreateOrganization=s=>{this.clerkjs&&this.loaded?this.clerkjs.openCreateOrganization(s):this.preopenCreateOrganization=s},this.closeCreateOrganization=()=>{this.clerkjs&&this.loaded?this.clerkjs.closeCreateOrganization():this.preopenCreateOrganization=null},this.openWaitlist=s=>{this.clerkjs&&this.loaded?this.clerkjs.openWaitlist(s):this.preOpenWaitlist=s},this.closeWaitlist=()=>{this.clerkjs&&this.loaded?this.clerkjs.closeWaitlist():this.preOpenWaitlist=null},this.openSignUp=s=>{this.clerkjs&&this.loaded?this.clerkjs.openSignUp(s):this.preopenSignUp=s},this.closeSignUp=()=>{this.clerkjs&&this.loaded?this.clerkjs.closeSignUp():this.preopenSignUp=null}
23,this.mountSignIn=(s,c)=>{this.clerkjs&&this.loaded?this.clerkjs.mountSignIn(s,c):this.premountSignInNodes.set(s,c)},this.unmountSignIn=s=>{this.clerkjs&&this.loaded?this.clerkjs.unmountSignIn(s):this.premountSignInNodes.delete(s)},this.mountSignUp=(s,c)=>{this.clerkjs&&this.loaded?this.clerkjs.mountSignUp(s,c):this.premountSignUpNodes.set(s,c)},this.unmountSignUp=s=>{this.clerkjs&&this.loaded?this.clerkjs.unmountSignUp(s):this.premountSignUpNodes.delete(s)},this.mountUserAvatar=(s,c)=>{this.clerkjs&&this.loaded?this.clerkjs.mountUserAvatar(s,c):this.premountUserAvatarNodes.set(s,c)},this.unmountUserAvatar=s=>{this.clerkjs&&this.loaded?this.clerkjs.unmountUserAvatar(s):this.premountUserAvatarNodes.delete(s)},this.mountUserProfile=(s,c)=>{this.clerkjs&&this.loaded?this.clerkjs.mountUserProfile(s,c):this.premountUserProfileNodes.set(s,c)},this.unmountUserProfile=s=>{this.clerkjs&&this.loaded?this.clerkjs.unmountUserProfile(s):this.premountUserProfileNodes.delete(s)},this.mountOrganizationProfile=(s,c)=>{this.clerkjs&&this.loaded?this.clerkjs.mountOrganizationProfile(s,c):this.premountOrganizationProfileNodes.set(s,c)},this.unmountOrganizationProfile=s=>{this.clerkjs&&this.loaded?this.clerkjs.unmountOrganizationProfile(s):this.premountOrganizationProfileNodes.delete(s)},this.mountCreateOrganization=(s,c)=>{this.clerkjs&&this.loaded?this.clerkjs.mountCreateOrganization(s,c):this.premountCreateOrganizationNodes.set(s,c)},this.unmountCreateOrganization=s=>{this.clerkjs&&this.loaded?this.clerkjs.unmountCreateOrganization(s):this.premountCreateOrganizationNodes.delete(s)},this.mountOrganizationSwitcher=(s,c)=>{this.clerkjs&&this.loaded?this.clerkjs.mountOrganizationSwitcher(s,c):this.premountOrganizationSwitcherNodes.set(s,c)},this.unmountOrganizationSwitcher=s=>{this.clerkjs&&this.loaded?this.clerkjs.unmountOrganizationSwitcher(s):this.premountOrganizationSwitcherNodes.delete(s)},this.__experimental_prefetchOrganizationSwitcher=()=>{const s=()=>{var c;return(c=this.clerkjs)==null?void 0:c.__experimental_prefetchOrganizationSwitcher()};this.clerkjs&&this.loaded?s():this.premountMethodCalls.set("__experimental_prefetchOrganizationSwitcher",s)},this.mountOrganizationList=(s,c)=>{this.clerkjs&&this.loaded?this.clerkjs.mountOrganizationList(s,c):this.premountOrganizationListNodes.set(s,c)},this.unmountOrganizationList=s=>{this.clerkjs&&this.loaded?this.clerkjs.unmountOrganizationList(s):this.premountOrganizationListNodes.delete(s)},this.mountUserButton=(s,c)=>{this.clerkjs&&this.loaded?this.clerkjs.mountUserButton(s,c):this.premountUserButtonNodes.set(s,c)},this.unmountUserButton=s=>{this.clerkjs&&this.loaded?this.clerkjs.unmountUserButton(s):this.premountUserButtonNodes.delete(s)},this.mountWaitlist=(s,c)=>{this.clerkjs&&this.loaded?this.clerkjs.mountWaitlist(s,c):this.premountWaitlistNodes.set(s,c)},this.unmountWaitlist=s=>{this.clerkjs&&this.loaded?this.clerkjs.unmountWaitlist(s):this.premountWaitlistNodes.delete(s)},this.mountPricingTable=(s,c)=>{this.clerkjs&&this.loaded?this.clerkjs.mountPricingTable(s,c):this.premountPricingTableNodes.set(s,c)},this.unmountPricingTable=s=>{this.clerkjs&&this.loaded?this.clerkjs.unmountPricingTable(s):this.premountPricingTableNodes.delete(s)},this.mountAPIKeys=(s,c)=>{this.clerkjs&&this.loaded?this.clerkjs.mountAPIKeys(s,c):this.premountAPIKeysNodes.set(s,c)},this.unmountAPIKeys=s=>{this.clerkjs&&this.loaded?this.clerkjs.unmountAPIKeys(s):this.premountAPIKeysNodes.delete(s)},this.__experimental_mountConfigureSSO=(s,c)=>{this.clerkjs&&this.loaded?this.clerkjs.__experimental_mountConfigureSSO(s,c):this.premountConfigureSSONodes.set(s,c)},this.__experimental_unmountConfigureSSO=s=>{this.clerkjs&&this.loaded?this.clerkjs.__experimental_unmountConfigureSSO(s):this.premountConfigureSSONodes.delete(s)},this.__internal_mountOAuthConsent=(s,c)=>{this.clerkjs&&this.loaded?this.clerkjs.__internal_mountOAuthConsent(s,c):this.premountOAuthConsentNodes.set(s,c)},this.__internal_unmountOAuthConsent=s=>{this.clerkjs&&this.loaded?this.clerkjs.__internal_unmountOAuthConsent(s):this.premountOAuthConsentNodes.delete(s)},this.mountOAuthConsent=(s,c)=>{this.__internal_mountOAuthConsent(s,c)},this.unmountOAuthConsent=s=>{this.__internal_unmountOAuthConsent(s)},this.mountTaskChooseOrganization=(s,c)=>{this.clerkjs&&this.loaded?this.clerkjs.mountTaskChooseOrganization(s,c):this.premountTaskChooseOrganizationNodes.set(s,c)},this.unmountTaskChooseOrganization=s=>{this.clerkjs&&this.loaded?this.clerkjs.unmountTaskChooseOrganization(s):this.premountTaskChooseOrganizationNodes.delete(s)},this.mountTaskResetPassword=(s,c)=>{this.clerkjs&&this.loaded?this.clerkjs.mountTaskResetPassword(s,c):this.premountTaskResetPasswordNodes.set(s,c)},this.unmountTaskResetPassword=s=>{this.clerkjs&&this.loaded?this.clerkjs.unmountTaskResetPassword(s):this.premountTaskResetPasswordNodes.delete(s)},this.mountTaskSetupMFA=(s,c)=>{this.clerkjs&&this.loaded?this.clerkjs.mountTaskSetupMFA(s,c):this.premountTaskSetupMFANodes.set(s,c)},this.unmountTaskSetupMFA=s=>{this.clerkjs&&this.loaded?this.clerkjs.unmountTaskSetupMFA(s):this.premountTaskSetupMFANodes.delete(s)},this.addListener=(s,c)=>{if(this.clerkjs)return this.clerkjs.addListener(s,c);{const d=()=>{var m,h;const f=this.premountAddListenerCalls.get(s);f?.handlers&&((h=f==null?void 0:(m=f.handlers).nativeUnsubscribe)==null||h.call(m),this.premountAddListenerCalls.delete(s))};return this.premountAddListenerCalls.set(s,{options:c,handlers:{unsubscribe:d,nativeUnsubscribe:void 0}}),d}},this.navigate=s=>{const c=()=>{var d;return(d=this.clerkjs)==null?void 0:d.navigate(s)};this.clerkjs&&this.loaded?c():this.premountMethodCalls.set("navigate",c)},this.redirectWithAuth=async(...s)=>{const c=()=>{var d;return(d=this.clerkjs)==null?void 0:d.redirectWithAuth(...s)};if(this.clerkjs&&this.loaded)return c();this.premountMethodCalls.set("redirectWithAuth",c)},this.redirectToSignIn=async s=>{const c=()=>{var d;return(d=this.clerkjs)==null?void 0:d.redirectToSignIn(s)};if(this.clerkjs&&this.loaded)return c();this.premountMethodCalls.set("redirectToSignIn",c)},this.redirectToSignUp=async s=>{const c=()=>{var d;return(d=this.clerkjs)==null?void 0:d.redirectToSignUp(s)};if(this.clerkjs&&this.loaded)return c();this.premountMethodCalls.set("redirectToSignUp",c)},this.redirectToUserProfile=async()=>{const s=()=>{var c;return(c=this.clerkjs)==null?void 0:c.redirectToUserProfile()};if(this.clerkjs&&this.loaded)return s();this.premountMethodCalls.set("redirectToUserProfile",s)},this.redirectToAfterSignUp=()=>{const s=()=>{var c;return(c=this.clerkjs)==null?void 0:c.redirectToAfterSignUp()};if(this.clerkjs&&this.loaded)return s();this.premountMethodCalls.set("redirectToAfterSignUp",s)},this.redirectToAfterSignIn=()=>{const s=()=>{var c;return(c=this.clerkjs)==null?void 0:c.redirectToAfterSignIn()};this.clerkjs&&this.loaded?s():this.premountMethodCalls.set("redirectToAfterSignIn",s)},this.redirectToAfterSignOut=()=>{const s=()=>{var c;return(c=this.clerkjs)==null?void 0:c.redirectToAfterSignOut()};this.clerkjs&&this.loaded?s():this.premountMethodCalls.set("redirectToAfterSignOut",s)},this.redirectToOrganizationProfile=async()=>{const s=()=>{var c;return(c=this.clerkjs)==null?void 0:c.redirectToOrganizationProfile()};if(this.clerkjs&&this.loaded)return s();this.premountMethodCalls.set("redirectToOrganizationProfile",s)},this.redirectToCreateOrganization=async()=>{const s=()=>{var c;return(c=this.clerkjs)==null?void 0:c.redirectToCreateOrganization()};if(this.clerkjs&&this.loaded)return s();this.premountMethodCalls.set("redirectToCreateOrganization",s)},this.redirectToWaitlist=async()=>{const s=()=>{var c;return(c=this.clerkjs)==null?void 0:c.redirectToWaitlist()};if(this.clerkjs&&this.loaded)return s();this.premountMethodCalls.set("redirectToWaitlist",s)},this.redirectToTasks=async s=>{const c=()=>{var d;return(d=this.clerkjs)==null?void 0:d.redirectToTasks(s)};if(this.clerkjs&&this.loaded)return c();this.premountMethodCalls.set("redirectToTasks",c)},this.handleRedirectCallback=async s=>{var c;const d=()=>{var m;return(m=this.clerkjs)==null?void 0:m.handleRedirectCallback(s)};this.clerkjs&&this.loaded?(c=d())==null||c.catch(()=>{}):this.premountMethodCalls.set("handleRedirectCallback",d)},this.handleGoogleOneTapCallback=async(s,c)=>{var d;const m=()=>{var h;
23return(h=this.clerkjs)==null?void 0:h.handleGoogleOneTapCallback(s,c)};this.clerkjs&&this.loaded?(d=m())==null||d.catch(()=>{}):this.premountMethodCalls.set("handleGoogleOneTapCallback",m)},this.handleEmailLinkVerification=async s=>{const c=()=>{var d;return(d=this.clerkjs)==null?void 0:d.handleEmailLinkVerification(s)};if(this.clerkjs&&this.loaded)return c();this.premountMethodCalls.set("handleEmailLinkVerification",c)},this.authenticateWithMetamask=async s=>{const c=()=>{var d;return(d=this.clerkjs)==null?void 0:d.authenticateWithMetamask(s)};if(this.clerkjs&&this.loaded)return c();this.premountMethodCalls.set("authenticateWithMetamask",c)},this.authenticateWithCoinbaseWallet=async s=>{const c=()=>{var d;return(d=this.clerkjs)==null?void 0:d.authenticateWithCoinbaseWallet(s)};if(this.clerkjs&&this.loaded)return c();this.premountMethodCalls.set("authenticateWithCoinbaseWallet",c)},this.authenticateWithBase=async s=>{const c=()=>{var d;return(d=this.clerkjs)==null?void 0:d.authenticateWithBase(s)};if(this.clerkjs&&this.loaded)return c();this.premountMethodCalls.set("authenticateWithBase",c)},this.authenticateWithOKXWallet=async s=>{const c=()=>{var d;return(d=this.clerkjs)==null?void 0:d.authenticateWithOKXWallet(s)};if(this.clerkjs&&this.loaded)return c();this.premountMethodCalls.set("authenticateWithOKXWallet",c)},this.authenticateWithSolana=async s=>{const c=()=>{var d;return(d=this.clerkjs)==null?void 0:d.authenticateWithSolana(s)};if(this.clerkjs&&this.loaded)return c();this.premountMethodCalls.set("authenticateWithSolana",c)},this.authenticateWithWeb3=async s=>{const c=()=>{var d;return(d=this.clerkjs)==null?void 0:d.authenticateWithWeb3(s)};if(this.clerkjs&&this.loaded)return c();this.premountMethodCalls.set("authenticateWithWeb3",c)},this.authenticateWithGoogleOneTap=async s=>(await jp(this,wo,Pc).call(this)).authenticateWithGoogleOneTap(s),this.__internal_loadStripeJs=async()=>(await jp(this,wo,Pc).call(this)).__internal_loadStripeJs(),this.createOrganization=async s=>{const c=()=>{var d;return(d=this.clerkjs)==null?void 0:d.createOrganization(s)};if(this.clerkjs&&this.loaded)return c();this.premountMethodCalls.set("createOrganization",c)},this.getOrganization=async s=>{const c=()=>{var d;return(d=this.clerkjs)==null?void 0:d.getOrganization(s)};if(this.clerkjs&&this.loaded)return c();this.premountMethodCalls.set("getOrganization",c)},this.joinWaitlist=async s=>{const c=()=>{var d;return(d=this.clerkjs)==null?void 0:d.joinWaitlist(s)};if(this.clerkjs&&this.loaded)return c();this.premountMethodCalls.set("joinWaitlist",c)},this.signOut=async(...s)=>{const c=()=>{var d;return(d=this.clerkjs)==null?void 0:d.signOut(...s)};if(this.clerkjs&&this.loaded)return c();this.premountMethodCalls.set("signOut",c)},this.__internal_attemptToEnableEnvironmentSetting=s=>{const c=()=>{var d;return(d=this.clerkjs)==null?void 0:d.__internal_attemptToEnableEnvironmentSetting(s)};if(this.clerkjs&&this.loaded)return c();this.premountMethodCalls.set("__internal_attemptToEnableEnvironmentSetting",c)};var r;$r(this,Wa,t?.publishableKey),$r(this,Js,t?.proxyUrl),$r(this,Zs,t?.domain),this.options=t,this.Clerk=t?.Clerk||null,this.mode=_o()?"browser":"server",$r(this,xo,new lE(this)),this.options.sdkMetadata||(this.options.sdkMetadata=cE),at(this,Ga).emit(Hs.Status,"loading"),at(this,Ga).prioritizedOn(Hs.Status,s=>$r(this,Mc,s)),at(this,Wa)&&((r=this.options.experimental)==null?void 0:r.runtimeEnvironment)==="headless"&&this.options.Clerk?this.loadHeadlessClerk():at(this,Wa)&&this.getEntryChunks()}get publishableKey(){return at(this,Wa)}get loaded(){var t;return((t=this.clerkjs)==null?void 0:t.loaded)||!1}get status(){var t;return this.clerkjs?((t=this.clerkjs)==null?void 0:t.status)||(this.clerkjs.loaded?"ready":"loading"):at(this,Mc)}static getOrCreateInstance(t){return(!_o()||!at(this,ur)||t.Clerk&&at(this,ur).Clerk!==t.Clerk||at(this,ur).publishableKey!==t.publishableKey)&&$r(this,ur,new Zw(t)),at(this,ur)}static clearInstance(){$r(this,ur,null)}get domain(){return typeof window<"u"&&window.location?yp(at(this,Zs),new URL(window.location.href),""):typeof at(this,Zs)=="function"?Rn.throw(xp):at(this,Zs)||""}get proxyUrl(){return typeof window<"u"&&window.location?yp(at(this,Js),new URL(window.location.href),""):typeof at(this,Js)=="function"?Rn.throw(xp):at(this,Js)||""}__internal_getOption(t){var r,s;return(r=this.clerkjs)!=null&&r.__internal_getOption?(s=this.clerkjs)==null?void 0:s.__internal_getOption(t):this.options[t]}loadHeadlessClerk(){const t=V0(this.options.Clerk)?new this.options.Clerk(at(this,Wa),{proxyUrl:this.proxyUrl,domain:this.domain}):this.options.Clerk;if(!t){at(this,Ga).emit(Hs.Status,"error");return}const r=()=>{this.replayInterceptedInvocations(t)};t.loaded?r():t.load(this.options).then(()=>r()).catch(s=>{at(this,Ga).emit(Hs.Status,"error"),this.emitLoaded()})}get sdkMetadata(){var t;return((t=this.clerkjs)==null?void 0:t.sdkMetadata)||this.options.sdkMetadata||void 0}get instanceType(){var t;return(t=this.clerkjs)==null?void 0:t.instanceType}get frontendApi(){var t;return((t=this.clerkjs)==null?void 0:t.frontendApi)||""}get isStandardBrowser(){var t;return((t=this.clerkjs)==null?void 0:t.isStandardBrowser)||this.options.standardBrowser||!1}get isSatellite(){return typeof window<"u"&&window.location?yp(this.options.isSatellite,new URL(window.location.href),!1):typeof this.options.isSatellite=="function"?Rn.throw(xp):!1}async getEntryChunks(){var t;if(!(this.mode!=="browser"||this.loaded)){typeof window<"u"&&(window.__clerk_publishable_key=at(this,Wa),window.__clerk_proxy_url=this.proxyUrl,window.__clerk_domain=this.domain);try{const r=await this.getClerkJsEntryChunk();if(!r.loaded){this.beforeLoad(r);const c=this.options.standardBrowser!==!1&&!this.options.Clerk||!!((t=this.options.ui)!=null&&t.ClerkUI)?await this.getClerkUIEntryChunk():void 0;await r.load({...this.options,ui:{...this.options.ui,ClerkUI:c}})}r.loaded&&this.replayInterceptedInvocations(r)}catch(r){const s=r;at(this,Ga).emit(Hs.Status,"error"),console.error(s.stack||s.message||s);return}}}async getClerkJsEntryChunk(){if((!this.options.Clerk||this.options.__internal_clerkJSUrl)&&!__BUILD_DISABLE_RHC__&&await Q5({...this.options,publishableKey:at(this,Wa),proxyUrl:this.proxyUrl,domain:this.domain,nonce:this.options.nonce}
23),this.options.Clerk&&!this.options.__internal_clerkJSUrl&&(global.Clerk=V0(this.options.Clerk)?new this.options.Clerk(at(this,Wa),{proxyUrl:this.proxyUrl,domain:this.domain}):this.options.Clerk),!global.Clerk)throw new Error("Failed to download latest ClerkJS. Contact [email protected].");return global.Clerk}async getClerkUIEntryChunk(){const t=this.options.ui,r=!!this.options.__internal_clerkUIUrl;if(t?.ClerkUI&&!r)return t.ClerkUI;if(!((t||this.options.prefetchUI===!1)&&!r)){if(await Y5({...this.options,publishableKey:at(this,Wa),proxyUrl:this.proxyUrl,domain:this.domain,nonce:this.options.nonce}),!global.__internal_ClerkUICtor)throw new Error("Failed to download latest Clerk UI. Contact [email protected].");return global.__internal_ClerkUICtor}}get version(){var t;return(t=this.clerkjs)==null?void 0:t.version}get client(){if(this.clerkjs)return this.clerkjs.client}get session(){if(this.clerkjs)return this.clerkjs.session}get user(){if(this.clerkjs)return this.clerkjs.user}get organization(){if(this.clerkjs)return this.clerkjs.organization}get telemetry(){if(this.clerkjs)return this.clerkjs.telemetry}get __internal_environment(){if(this.clerkjs)return this.clerkjs.__internal_environment}get isSignedIn(){return this.clerkjs?this.clerkjs.isSignedIn:!1}get billing(){var t;return(t=this.clerkjs)==null?void 0:t.billing}get __internal_state(){return this.loaded&&this.clerkjs?this.clerkjs.__internal_state:at(this,xo)}get apiKeys(){var t;return(t=this.clerkjs)==null?void 0:t.apiKeys}get oauthApplication(){var t;return(t=this.clerkjs)==null?void 0:t.oauthApplication}__internal_setEnvironment(...t){if(this.clerkjs&&"__internal_setEnvironment"in this.clerkjs)this.clerkjs.__internal_setEnvironment(t);else return}get __internal_lastEmittedResources(){var t;return(t=this.clerkjs)==null?void 0:t.__internal_lastEmittedResources}};Mc=new WeakMap;Zs=new WeakMap;Js=new WeakMap;Wa=new WeakMap;Ga=new WeakMap;xo=new WeakMap;ur=new WeakMap;wo=new WeakSet;Pc=function(){return new Promise(e=>{this.addOnLoaded(()=>e(this.clerkjs))})};lr(Xw,ur);var ex=Xw;function dE(e){const{initialState:t,children:r,...s}=e,c=i5(s),{isomorphicClerk:d,clerkStatus:m}=mE(c);return _.createElement(Eq,{initialState:t,clerk:d,clerkStatus:m},r)}var Jw=l5(dE,"ClerkProvider",Fq);Jw.displayName="ClerkProvider";var uE=rE?"shared":"",mE=e=>{const t=_.useMemo(()=>({clerkUIVariant:uE,...e}),[e]),r=_.useRef(ex.getOrCreateInstance(t)),[s,c]=_.useState(r.current.status);return _.useEffect(()=>{r.current.__internal_updateProps({appearance:e.appearance})},[e.appearance]),_.useEffect(()=>{r.current.__internal_updateProps({options:e})},[e.localization]),_.useEffect(()=>(r.current.on("status",c),()=>{r.current&&r.current.off("status",c),ex.clearInstance()}),[]),{isomorphicClerk:r.current,clerkStatus:s}};typeof window<"u"&&!window.global&&(window.global=typeof global>"u"?window:global);var tx;if(globalThis.__clerkSharedModules){const e=(tx=globalThis.__clerkSharedModules.react)==null?void 0:tx.version;e&&e!==S.version&&console.warn(`[@clerk/ui/register] React version mismatch detected. Already registered: ${e}, current import: ${S.version}. This may cause issues with the shared @clerk/ui variant.`)}else globalThis.__clerkSharedModules={react:Bo,"react-dom":zq,"react-dom/client":Kj,"react/jsx-runtime":Lj};it(({clerk:e,children:t,...r})=>{const{appearance:s,getContainer:c,component:d,signUpFallbackRedirectUrl:m,forceRedirectUrl:h,fallbackRedirectUrl:f,signUpForceRedirectUrl:y,mode:b,initialValues:v,withSignUp:x,oauthFlow:k,...E}=r;t=Sd(t,"Sign in");const C=kd(t)("SignInButton"),N=()=>{const I={forceRedirectUrl:h,fallbackRedirectUrl:f,signUpFallbackRedirectUrl:m,signUpForceRedirectUrl:y,initialValues:v,withSignUp:x,oauthFlow:k};return b==="modal"?e.openSignIn({...I,appearance:s,getContainer:c}):e.redirectToSignIn({...I,signInFallbackRedirectUrl:f,signInForceRedirectUrl:h})},R={...E,onClick:async I=>(C&&typeof C=="object"&&"props"in C&&await Cd(C.props.onClick)(I),N())};return _.cloneElement(C,R)},{component:"SignInButton",renderWhileLoading:!0});it(({clerk:e,children:t,...r})=>{const{redirectUrl:s,getContainer:c,component:d,...m}=r;t=Sd(t,"Sign in with Metamask");const h=kd(t)("SignInWithMetamaskButton"),f=async()=>{async function v(){await e.authenticateWithMetamask({redirectUrl:s||void 0})}v()},b={...m,onClick:async v=>(await Cd(h.props.onClick)(v),f())};return _.cloneElement(h,b)}
23,{component:"SignInWithMetamask",renderWhileLoading:!0});it(({clerk:e,children:t,...r})=>{const{redirectUrl:s="/",sessionId:c,signOutOptions:d,getContainer:m,component:h,...f}=r;d&&Nd("SignOutButton `signOutOptions`","Use the `redirectUrl` and `sessionId` props directly instead."),t=Sd(t,"Sign out");const y=kd(t)("SignOutButton"),b=()=>e.signOut({redirectUrl:s,...c!==void 0&&{sessionId:c},...d}),x={...f,onClick:async k=>(await Cd(y.props.onClick)(k),b())};return _.cloneElement(y,x)},{component:"SignOutButton",renderWhileLoading:!0});it(({clerk:e,children:t,...r})=>{const{appearance:s,unsafeMetadata:c,getContainer:d,component:m,fallbackRedirectUrl:h,forceRedirectUrl:f,signInFallbackRedirectUrl:y,signInForceRedirectUrl:b,mode:v,initialValues:x,oauthFlow:k,...E}=r;t=Sd(t,"Sign up");const C=kd(t)("SignUpButton"),N=()=>{const I={fallbackRedirectUrl:h,forceRedirectUrl:f,signInFallbackRedirectUrl:y,signInForceRedirectUrl:b,initialValues:x,oauthFlow:k};return v==="modal"?e.openSignUp({...I,appearance:s,unsafeMetadata:c,getContainer:d}):e.redirectToSignUp({...I,signUpFallbackRedirectUrl:h,signUpForceRedirectUrl:f})},R={...E,onClick:async I=>(C&&typeof C=="object"&&"props"in C&&await Cd(C.props.onClick)(I),N())};return _.cloneElement(C,R)},{component:"SignUpButton",renderWhileLoading:!0});Uq({packageName:"@clerk/react"});tE("@clerk/react");var e2=S.createContext(void 0),Ut=e=>{const t=S.useContext(e2);if(!t)throw new Error("No QueryClient set, use QueryClientProvider to set one");return t},pE=({client:e,children:t})=>(S.useEffect(()=>(e.mount(),()=>{e.unmount()}),[e]),o.jsx(e2.Provider,{value:e,children:t})),t2=S.createContext(!1),hE=()=>S.useContext(t2);t2.Provider;function fE(){let e=!1;return{clearReset:()=>{e=!1},reset:()=>{e=!0},isReset:()=>e}}var gE=S.createContext(fE()),yE=()=>S.useContext(gE),bE=(e,t,r)=>{const s=r?.state.error&&typeof e.throwOnError=="function"?sf(e.throwOnError,[r.state.error,r]):e.throwOnError;(e.suspense||e.experimental_prefetchInRender||s)&&(t.isReset()||(e.retryOnMount=!1))},vE=e=>{S.useEffect(()=>{e.clearReset()},[e])},xE=({result:e,errorResetBoundary:t,throwOnError:r,query:s,suspense:c})=>e.isError&&!t.isReset()&&!e.isFetching&&s&&(c&&e.data===void 0||sf(r,[e.error,s])),wE=e=>{if(e.suspense){const r=c=>c==="static"?c:Math.max(c??1e3,1e3),s=e.staleTime;e.staleTime=typeof s=="function"?(...c)=>r(s(...c)):r(s),typeof e.gcTime=="number"&&(e.gcTime=Math.max(e.gcTime,1e3))}},kE=(e,t)=>e.isLoading&&e.isFetching&&!t,SE=(e,t)=>e?.suspense&&t.isPending,ax=(e,t,r)=>t.fetchOptimistic(e).catch(()=>{r.clearReset()});function CE(e,t,r){const s=hE(),c=yE(),d=Ut(),m=d.defaultQueryOptions(e);d.getDefaultOptions().queries?._experimental_beforeQuery?.(m);const h=d.getQueryCache().get(m.queryHash);m._optimisticResults=s?"isRestoring":"optimistic",wE(m),bE(m,c,h),vE(c);const f=!d.getQueryCache().get(m.queryHash),[y]=S.useState(()=>new t(d,m)),b=y.getOptimisticResult(m),v=!s&&e.subscribed!==!1;if(S.useSyncExternalStore(S.useCallback(x=>{const k=v?y.subscribe(It.batchCalls(x)):ea;return y.updateResult(),k},[y,v]),()=>y.getCurrentResult(),()=>y.getCurrentResult()),S.useEffect(()=>{y.setOptions(m)},[m,y]),SE(m,b))throw ax(m,y,c);if(xE({result:b,errorResetBoundary:c,throwOnError:m.throwOnError,query:h,suspense:m.suspense}))throw b.error;return d.getDefaultOptions().queries?._experimental_afterQuery?.(m,b),m.experimental_prefetchInRender&&!Po.isServer()&&kE(b,s)&&(f?ax(m,y,c):h?.promise)?.catch(ea).finally(()=>{y.updateResult()}),m.notifyOnChangeProps?b:y.trackResult(b)}function At(e,t){return CE(e,uq)}function yt(e,t){const r=Ut(),[s]=S.useState(()=>new gq(r,e));S.useEffect(()=>{s.setOptions(e)},[s,e]);const c=S.useSyncExternalStore(S.useCallback(m=>s.subscribe(It.batchCalls(m)),[s]),()=>s.getCurrentResult(),()=>s.getCurrentResult()),d=S.useCallback((m,h)=>{s.mutate(m,h).catch(ea)},[s]);if(c.error&&sf(s.options.throwOnError,[c.error]))throw c.error;return{...c,mutate:d,mutateAsync:c.mutate}}const a2=S.createContext(void 0);function jE({children:e}){const[t,r]=S.useState(()=>{const s=localStorage.getItem("app-lang");return s==="en"||s==="es"?s:"en"});return S.useEffect(()=>{localStorage.setItem("app-lang",t)},[t]),o.jsx(a2.Provider,{value:{lang:t,setLang:r},children:e})}function _e(){const e=S.useContext(a2);if(e===void 0)throw new Error("useLanguage must be used within a LanguageProvider");return e}function sa(){const{lang:e}=_e();return{t:t=>t?t[e]:"",tList:t=>t?t[e]:[]}}const AE=new Set([204,205,304]),qE="application/json, application/problem+json";let uh={};function EE(e){uh={...uh,"X-Course-Id":e}}function n2(e){return typeof Request<"u"&&e instanceof Request}function NE(e,t){return t?t.toUpperCase():n2(e)?e.method.toUpperCase():"GET"}function TE(e){return typeof URL<"u"&&e instanceof URL}function ME(e){return typeof e=="string"?e:TE(e)?e.toString():e.url}function PE(...e){const t=new Headers;for(const r of e)r&&new Headers(r).forEach((s,c)=>{t.set(c,s)});return t}function r2(e){const t=e.get("content-type");return t?t.split(";",1)[0].trim().toLowerCase():null}function mh(e){return e==="application/json"||!!e?.endsWith("+json")}function s2(e){return!!(e&&(e.startsWith("text/")||e==="application/xml"||e==="text/xml"||e.endsWith("+xml")||e==="application/x-www-form-urlencoded"))}function i2(e,t){return!!(t==="HEAD"||AE.has(e.status)||e.headers.get("content-length")==="0"||e.body===null)}function o2(e){return e.charCodeAt(0)===65279?e.slice(1):e}function l2(e){const t=e.trimStart();return t.startsWith("{")||t.startsWith("[")}function yo(e,t){if(!e||typeof e!="object")return;const r=e[t];if(typeof r!="string")return;const s=r.trim();return s===""?void 0:s}function _E(e,t=300){return e.length>t?`${e.slice(0,t-1)}â¦`:e}function RE(e,t){const r=`HTTP ${e.status} ${e.statusText}`;if(typeof t=="string"){const m=t.trim();return m?`${r}: ${_E(m)}`:r}const s=yo(t,"title"),c=yo(t,"detail"),d=yo(t,"message")??yo(t,"error_description")??yo(t,"error");return s&&c?`${r}: ${s} â ${c}`:c?`${r}: ${c}`:d?`${r}: ${d}`:s?`${r}: ${s}`:r}
23class IE extends Error{name="ApiError";status;statusText;data;headers;response;method;url;constructor(t,r,s){super(RE(t,r)),Object.setPrototypeOf(this,new.target.prototype),this.status=t.status,this.statusText=t.statusText,this.data=r,this.headers=t.headers,this.response=t,this.method=s.method,this.url=t.url||s.url}}class UE extends Error{name="ResponseParseError";status;statusText;headers;response;method;url;rawBody;cause;constructor(t,r,s,c){super(`Failed to parse response from ${c.method} ${t.url||c.url} (${t.status} ${t.statusText}) as JSON`),Object.setPrototypeOf(this,new.target.prototype),this.status=t.status,this.statusText=t.statusText,this.headers=t.headers,this.response=t,this.method=c.method,this.url=t.url||c.url,this.rawBody=r,this.cause=s}}async function DE(e,t){const r=await e.text(),s=o2(r);if(s.trim()==="")return null;try{return JSON.parse(s)}catch(c){throw new UE(e,r,c,t)}}async function OE(e,t){if(i2(e,t))return null;const r=r2(e.headers);if(r&&!mh(r)&&!s2(r))return typeof e.blob=="function"?e.blob():e.text();const s=await e.text(),c=o2(s);if(c.trim()==="")return null;if(mh(r)||l2(c))try{return JSON.parse(c)}catch{return s}return s}function LE(e){const t=r2(e.headers);return mh(t)?"json":s2(t)||t==null?"text":"blob"}async function zE(e,t,r){if(i2(e,r.method))return null;switch(t==="auto"?LE(e):t){case"json":return DE(e,r);case"text":{const c=await e.text();return c===""?null:c}case"blob":if(typeof e.blob!="function")throw new TypeError('Blob responses are not supported in this runtime. Use responseType "json" or "text" instead.');return e.blob()}}async function je(e,t={}){e=e;const{responseType:r="auto",headers:s,...c}=t,d=NE(e,c.method);if(c.body!=null&&(d==="GET"||d==="HEAD"))throw new TypeError(`customFetch: ${d} requests cannot have a body.`);const m=PE(uh,n2(e)?e.headers:void 0,s);typeof c.body=="string"&&!m.has("content-type")&&l2(c.body)&&m.set("content-type","application/json"),r==="json"&&!m.has("accept")&&m.set("accept",qE);const h={method:d,url:ME(e)},f=await fetch(e,{...c,method:d,headers:m});if(!f.ok){const y=await OE(f,d);throw new IE(f,y,h)}return await zE(f,r,h)}const FE=()=>"/api/student/academic-history",$E=async e=>je(FE(),{...e,method:"GET"}),c2=()=>["/api/student/academic-history"],BE=e=>{const{query:t,request:r}=e??{};return{queryKey:t?.queryKey??c2(),queryFn:({signal:d})=>$E({signal:d,...r}),...t}};function VE(e){const t=BE(e);return{...At(t),queryKey:t.queryKey}}const WE=()=>"/api/student/barbara/chat",GE=async(e,t)=>je(WE(),{...t,method:"POST",headers:{"Content-Type":"application/json",...t?.headers},body:JSON.stringify(e)}),KE=e=>{const t=["chatWithBarbara"],{mutation:r,request:s}={mutation:{mutationKey:t},request:void 0};return{mutationFn:d=>{const{data:m}=d??{};return GE(m,s)},...r}},HE=e=>yt(KE()),QE=()=>"/api/portal/sso/exchange",YE=async(e,t)=>je(QE(),{...t,method:"POST",headers:{"Content-Type":"application/json",...t?.headers},body:JSON.stringify(e)}),XE=()=>"/api/me",ZE=async e=>je(XE(),{...e,method:"GET"}),Ht=()=>["/api/me"],JE=e=>{const{query:t,request:r}=e??{};return{queryKey:t?.queryKey??Ht(),queryFn:({signal:d})=>ZE({signal:d,...r}),...t}};function mn(e){const t=JE(e);return{...At(t),queryKey:t.queryKey}}const eN=()=>"/api/me",tN=async(e,t)=>je(eN(),{...t,method:"PUT",headers:{"Content-Type":"application/json",...t?.headers},body:JSON.stringify(e)}),aN=e=>{const t=["upsertMe"],{mutation:r,request:s}={mutation:{mutationKey:t},request:void 0};return{mutationFn:d=>{const{data:m}=d??{};return tN(m,s)},...r}},nN=e=>yt(aN()),rN=e=>`/api/lessons/${e}/submission`,sN=async(e,t)=>je(rN(e),{...t,method:"GET"}),Yr=e=>[`/api/lessons/${e}/submission`],iN=(e,t)=>{const{query:r,request:s}=t??{};return{queryKey:r?.queryKey??Yr(e),queryFn:({signal:m})=>sN(e,{signal:m,...s}),enabled:!!e,...r}};function hf(e,t){const r=iN(e,t);return{...At(r),queryKey:r.queryKey}}const oN=e=>`/api/lessons/${e}/reflection`,lN=async(e,t,r)=>je(oN(e),{...r,method:"PUT",headers:{"Content-Type":"application/json",...r?.headers},body:JSON.stringify(t)}),cN=e=>{const t=["submitReflection"],{mutation:r,request:s}={mutation:{mutationKey:t},request:void 0};return{mutationFn:d=>{const{week:m,data:h}=d??{};return lN(m,h,s)},...r}},dN=e=>yt(cN()),uN=e=>`/api/lessons/${e}/performance-task`,mN=async(e,t,r)=>je(uN(e),{...r,method:"PUT",headers:{"Content-Type":"application/json",...r?.headers},body:JSON.stringify(t)}),pN=e=>{const t=["submitPerformanceTask"],{mutation:r,request:s}={mutation:{mutationKey:t},request:void 0};return{mutationFn:d=>{const{week:m,data:h}=d??{};return mN(m,h,s)},...r}},hN=e=>yt(pN()),fN=e=>`/api/lessons/${e}/assessment`,gN=async(e,t,r)=>je(fN(e),{...r,method:"PUT",headers:{"Content-Type":"application/json",...r?.headers},body:JSON.stringify(t)}),yN=e=>{const t=["submitAssessment"],{mutation:r,request:s}={mutation:{mutationKey:t},request:void 0};return{mutationFn:d=>{const{week:m,data:h}=d??{};return gN(m,h,s)},...r}},bN=e=>yt(yN()),vN=()=>"/api/progress",xN=async e=>je(vN(),{...e,method:"GET"}),Ro=()=>["/api/progress"],wN=e=>{const{query:t,request:r}=e??{};return{queryKey:t?.queryKey??Ro(),queryFn:({signal:d})=>xN({signal:d,...r}),...t}};function kN(e){const t=wN(e);return{...At(t),queryKey:t.queryKey}}const SN=()=>"/api/teacher/students",CN=async e=>je(SN(),{...e,method:"GET"}),Td=()=>["/api/teacher/students"],jN=e=>{const{query:t,request:r}=e??{};return{queryKey:t?.queryKey??Td(),queryFn:({signal:d})=>CN({signal:d,...r}),...t}};function AN(e){const t=jN(e);return{...At(t),queryKey:t.queryKey}}const qN=()=>"/api/teacher/invitations",EN=async e=>je(qN(),{...e,method:"GET"}),ph=()=>["/api/teacher/invitations"],NN=e=>{const{query:t,request:r}=e??{};return{queryKey:t?.queryKey??ph(),queryFn:({signal:d})=>EN({signal:d,...r}),...t}};function TN(e){const t=NN(e);return{...At(t),queryKey:t.queryKey}}const MN=()=>"/api/teacher/invitations",PN=async(e,t)=>je(MN(),{...t,method:"POST",headers:{"Content-Type":"application/json",...t?.headers},body:JSON.stringify(e)}),_N=e=>{const t=["createTeacherInvitation"],{mutation:r,request:s}={mutation:{mutationKey:t},request:void 0};return{mutationFn:d=>{const{data:m}=d??{};return PN(m,s)},...r}},RN=e=>yt(_N()),IN=()=>"/api/teacher/invitations/accept",UN=async(e,t)=>je(IN(),{...t,method:"POST",headers:{"Content-Type":"application/json",...t?.headers},body:JSON.stringify(e)}),DN=e=>{const t=["acceptTeacherInvitation"],{mutation:r,request:s}={mutation:{mutationKey:t},request:void 0};return{mutationFn:d=>{const{data:m}=d??{};return UN(m,s)},...r}},ON=e=>yt(DN()),LN=()=>"/api/parent/link",zN=async(e,t)=>je(LN(),{...t,method:"POST",headers:{"Content-Type":"application/json",...t?.headers},body:JSON.stringify(e)}),FN=e=>{const t=["linkParentToStudent"],{mutation:r,request:s}={mutation:{mutationKey:t},request:void 0};return{mutationFn:d=>{const{data:m}=d??{};return zN(m,s)},...r}},d2=e=>yt(FN()),$N=()=>"/api/parent/children",BN=async e=>je($N(),{...e,method:"GET"}),Md=()=>["/api/parent/children"],VN=e=>{const{query:t,request:r}=e??{};return{queryKey:t?.queryKey??Md(),queryFn:({signal:d})=>BN({signal:d,...r}),...t}};function WN(e){const t=VN(e);return{...At(t),queryKey:t.queryKey}}const GN=e=>`/api/parent/children/${e}/submissions`,KN=async(e,t)=>je(GN(e),{...t,method:"GET"}),u2=e=>[`/api/parent/children/${e}/submissions`],HN=(e,t)=>{const{query:r,request:s}=t??{};return{queryKey:r?.queryKey??u2(e),queryFn:({signal:m})=>KN(e,{signal:m,...s}),enabled:!!e,...r}};function QN(e,t){const r=HN(e,t);return{...At(r),queryKey:r.queryKey}}const YN=()=>"/api/teacher/groups",XN=async e=>je(YN(),{...e,method:"GET"}),Io=()=>["/api/teacher/groups"],ZN=e=>{const{query:t,request:r}=e??{};return{queryKey:t?.queryKey??Io(),queryFn:({signal:d})=>XN({signal:d,...r}),...t}};function ff(e){const t=ZN(e);return{...At(t),queryKey:t.queryKey}}const JN=()=>"/api/teacher/groups",eT=async(e,t)=>je(JN(),{...t,method:"POST",headers:{"Content-Type":"application/json",...t?.headers},body:JSON.stringify(e)}),tT=e=>{const t=["createGroup"],{mutation:r,request:s}={mutation:{mutationKey:t},request:void 0};return{mutationFn:d=>{const{data:m}=d??{};return eT(m,s)},...r}},aT=e=>yt(tT()),nT=e=>`/api/teacher/groups/${e}`,rT=async(e,t,r)=>je(nT(e),{...r,method:"PUT",headers:{"Content-Type":"application/json",...r?.headers},body:JSON.stringify(t)}),sT=e=>{const t=["renameGroup"],{mutation:r,request:s}={mutation:{mutationKey:t},request:void 0};return{mutationFn:d=>{const{id:m,data:h}=d??{};return rT(m,h,s)},...r}},iT=e=>yt(sT()),oT=e=>`/api/teacher/groups/${e}`,lT=async(e,t)=>je(oT(e),{...t,method:"DELETE"}),cT=e=>{const t=["deleteGroup"],{mutation:r,request:s}={mutation:{mutationKey:t},request:void 0};return{mutationFn:d=>{const{id:m}=d??{};return lT(m,s)},...r}},dT=e=>yt(cT()),uT=()=>"/api/teacher/student-invitations",mT=async e=>je(uT(),{...e,method:"GET"}),hh=()=>["/api/teacher/student-invitations"],pT=e=>{const{query:t,request:r}=e??{};return{queryKey:t?.queryKey??hh(),queryFn:({signal:d})=>mT({signal:d,...r}),...t}};function hT(e){const t=pT(e);return{...At(t),queryKey:t.queryKey}}const fT=()=>"/api/teacher/student-invitations",gT=async(e,t)=>je(fT(),{...t,method:"POST",headers:{"Content-Type":"application/json",...t?.headers},body:JSON.stringify(e)}),yT=e=>{const t=["createStudentInvitation"],{mutation:r,request:s}={mutation:{mutationKey:t},request:void 0};return{mutationFn:d=>{const{data:m}=d??{};return gT(m,s)},...r}},bT=e=>yt(yT()),vT=()=>"/api/teacher/group-invitation-links",xT=async e=>je(vT(),{...e,method:"GET"}),_c=()=>["/api/teacher/group-invitation-links"],wT=e=>{const{query:t,request:r}=e??{};return{queryKey:t?.queryKey??_c(),queryFn:({signal:d})=>xT({signal:d,...r}),...t}};function kT(e){const t=wT(e);return{...At(t),queryKey:t.queryKey}}const ST=()=>"/api/teacher/group-invitation-links",CT=async(e,t)=>je(ST(),{...t,method:"POST",headers:{"Content-Type":"application/json",...t?.headers},body:JSON.stringify(e)}),jT=e=>{const t=["createGroupInvitationLink"],{mutation:r,request:s}={mutation:{mutationKey:t},request:void 0};return{mutationFn:d=>{const{data:m}=d??{};return CT(m,s)},...r}},AT=e=>yt(jT()),qT=e=>`/api/teacher/group-invitation-links/${e}`,ET=async(e,t)=>je(qT(e),{...t,method:"DELETE"}),NT=e=>{const t=["revokeGroupInvitationLink"],{mutation:r,request:s}={mutation:{mutationKey:t},request:void 0};return{mutationFn:d=>{const{id:m}=d??{};return ET(m,s)},...r}},TT=e=>yt(NT()),MT=()=>"/api/student/group-invitations/accept",PT=async(e,t)=>je(MT(),{...t,method:"POST",headers:{"Content-Type":"application/json",...t?.headers},body:JSON.stringify(e)}),_T=e=>{const t=["acceptGroupInvitationLink"],{mutation:r,request:s}={mutation:{mutationKey:t},request:void 0};return{mutationFn:d=>{const{data:m}=d??{};return PT(m,s)},...r}},RT=e=>yt(_T()),IT=()=>"/api/student/invitations/accept",UT=async(e,t)=>je(IT(),{...t,method:"POST",headers:{"Content-Type":"application/json",...t?.headers},body:JSON.stringify(e)}),DT=e=>{const t=["acceptStudentInvitation"],{mutation:r,request:s}={mutation:{mutationKey:t},request:void 0};return{mutationFn:d=>{const{data:m}=d??{};return UT(m,s)},...r}},OT=e=>yt(DT()),LT=()=>"/api/messages",zT=async e=>je(LT(),{...e,method:"GET"}),Jc=()=>["/api/messages"],FT=e=>{const{query:t,request:r}=e??{};return{queryKey:t?.queryKey??Jc(),queryFn:({signal:d})=>zT({signal:d,...r}),...t}};function $T(e){const t=FT(e);return{...At(t),queryKey:t.queryKey}}const BT=()=>"/api/messages",VT=async(e,t)=>je(BT(),{...t,method:"POST",headers:{"Content-Type":"application/json",...t?.headers},body:JSON.stringify(e)}),WT=e=>{const t=["sendMessage"],{mutation:r,request:s}={mutation:{mutationKey:t},request:void 0};return{mutationFn:d=>{const{data:m}=d??{};return VT(m,s)},...r}},GT=e=>yt(WT()),KT=e=>`/api/messages/${e}/read`,HT=async(e,t)=>je(KT(e),{...t,method:"POST"}),QT=e=>{const t=["markMessageRead"],{mutation:r,request:s}={mutation:{mutationKey:t},request:void 0};return{mutationFn:d=>{const{id:m}=d??{};return HT(m,s)},...r}},YT=e=>yt(QT()),XT=e=>{const t=new URLSearchParams;Object.entries(e||{}
23).forEach(([s,c])=>{c!==void 0&&t.append(s,c===null?"null":c.toString())});const r=t.toString();return r.length>0?`/api/teacher/gradebook?${r}`:"/api/teacher/gradebook"},ZT=async(e,t)=>je(XT(e),{...t,method:"GET"}),Uo=e=>["/api/teacher/gradebook",...e?[e]:[]],JT=(e,t)=>{const{query:r,request:s}=t??{};return{queryKey:r?.queryKey??Uo(e),queryFn:({signal:m})=>ZT(e,{signal:m,...s}),...r}};function e6(e,t){const r=JT(e,t);return{...At(r),queryKey:r.queryKey}}const t6=(e,t)=>`/api/teacher/students/${e}/lessons/${t}/performance-task-status`,a6=async(e,t,r,s)=>je(t6(e,t),{...s,method:"PUT",headers:{"Content-Type":"application/json",...s?.headers},body:JSON.stringify(r)}),n6=e=>{const t=["updatePerformanceTaskStatus"],{mutation:r,request:s}={mutation:{mutationKey:t},request:void 0};return{mutationFn:d=>{const{userId:m,week:h,data:f}=d??{};return a6(m,h,f,s)},...r}},r6=e=>yt(n6()),s6=e=>`/api/teacher/students/${e}/general-feedback`,i6=async(e,t,r)=>je(s6(e),{...r,method:"PUT",headers:{"Content-Type":"application/json",...r?.headers},body:JSON.stringify(t)}),o6=e=>{const t=["updateGeneralFeedback"],{mutation:r,request:s}={mutation:{mutationKey:t},request:void 0};return{mutationFn:d=>{const{userId:m,data:h}=d??{};return i6(m,h,s)},...r}},l6=e=>yt(o6()),c6=(e,t)=>`/api/teacher/students/${e}/lessons/${t}/feedback`,d6=async(e,t,r,s)=>je(c6(e,t),{...s,method:"PUT",headers:{"Content-Type":"application/json",...s?.headers},body:JSON.stringify(r)}),u6=e=>{const t=["updateWeeklyTeacherFeedback"],{mutation:r,request:s}={mutation:{mutationKey:t},request:void 0};return{mutationFn:d=>{const{userId:m,week:h,data:f}=d??{};return d6(m,h,f,s)},...r}},m6=e=>yt(u6()),p6=e=>`/api/teacher/students/${e}/progress-report`,h6=async(e,t,r)=>je(p6(e),{...r,method:"POST",headers:{"Content-Type":"application/json",...r?.headers},body:JSON.stringify(t)}),f6=e=>{const t=["sendStudentProgressReport"],{mutation:r,request:s}={mutation:{mutationKey:t},request:void 0};return{mutationFn:d=>{const{userId:m,data:h}=d??{};return h6(m,h,s)},...r}},g6=e=>yt(f6()),y6=e=>`/api/teacher/students/${e}/progress-report.pdf`,b6=async(e,t)=>je(y6(e),{...t,method:"GET"}),v6=e=>`/api/teacher/groups/${e}/progress-reports`,x6=async(e,t)=>je(v6(e),{...t,method:"POST"}),w6=e=>`/api/teacher/students/${e}/submissions`,k6=async(e,t)=>je(w6(e),{...t,method:"GET"}),Ao=e=>[`/api/teacher/students/${e}/submissions`],S6=(e,t)=>{const{query:r,request:s}=t??{};return{queryKey:r?.queryKey??Ao(e),queryFn:({signal:m})=>k6(e,{signal:m,...s}),enabled:!!e,...r}};function m2(e,t){const r=S6(e,t);return{...At(r),queryKey:r.queryKey}}const C6=e=>{const t=new URLSearchParams;Object.entries(e||{}).forEach(([s,c])=>{c!==void 0&&t.append(s,c===null?"null":c.toString())});const r=t.toString();return r.length>0?`/api/peer-critiques/assignment?${r}`:"/api/peer-critiques/assignment"},j6=async(e,t)=>je(C6(e),{...t,method:"GET"}),fh=e=>["/api/peer-critiques/assignment",...e?[e]:[]],A6=(e,t)=>{const{query:r,request:s}=t??{};return{queryKey:r?.queryKey??fh(e),queryFn:({signal:m})=>j6(e,{signal:m,...s}),...r}};function q6(e,t){const r=A6(e,t);return{...At(r),queryKey:r.queryKey}}const E6=()=>"/api/peer-critiques",N6=async(e,t)=>je(E6(),{...t,method:"POST",headers:{"Content-Type":"application/json",...t?.headers},body:JSON.stringify(e)}),T6=e=>{const t=["submitPeerCritique"],{mutation:r,request:s}={mutation:{mutationKey:t},request:void 0};return{mutationFn:d=>{const{data:m}=d??{};return N6(m,s)},...r}},M6=e=>yt(T6()),P6=e=>{const t=new URLSearchParams;Object.entries(e||{}).forEach(([s,c])=>{c!==void 0&&t.append(s,c===null?"null":c.toString())});const r=t.toString();return r.length>0?`/api/peer-critiques/mine?${r}`:"/api/peer-critiques/mine"},_6=async(e,t)=>je(P6(e),{...t,method:"GET"}),gh=e=>["/api/peer-critiques/mine",...e?[e]:[]],R6=(e,t)=>{const{query:r,request:s}=t??{};return{queryKey:r?.queryKey??gh(e),queryFn:({signal:m})=>_6(e,{signal:m,...s}),...r}};function I6(e,t){const r=R6(e,t);return{...At(r),queryKey:r.queryKey}}const U6=e=>{const t=new URLSearchParams;Object.entries(e||{}).forEach(([s,c])=>{c!==void 0&&t.append(s,c===null?"null":c.toString())});const r=t.toString();return r.length>0?`/api/peer-critiques/received?${r}`:"/api/peer-critiques/received"},D6=async(e,t)=>je(U6(e),{...t,method:"GET"}),p2=e=>["/api/peer-critiques/received",...e?[e]:[]],O6=(e,t)=>{const{query:r,request:s}=t??{};return{queryKey:r?.queryKey??p2(e),queryFn:({signal:m})=>D6(e,{signal:m,...s}),...r}};function L6(e,t){const r=O6(e,t);return{...At(r),queryKey:r.queryKey}}const z6=e=>{const t=new URLSearchParams;Object.entries(e||{}
23).forEach(([s,c])=>{c!==void 0&&t.append(s,c===null?"null":c.toString())});const r=t.toString();return r.length>0?`/api/teacher/peer-critiques?${r}`:"/api/teacher/peer-critiques"},F6=async(e,t)=>je(z6(e),{...t,method:"GET"}),$6=e=>["/api/teacher/peer-critiques",...e?[e]:[]],B6=(e,t)=>{const{query:r,request:s}={};return{queryKey:r?.queryKey??$6(e),queryFn:({signal:m})=>F6(e,{signal:m,...s}),...r}};function V6(e,t){const r=B6(e);return{...At(r),queryKey:r.queryKey}}function W6(){const{lang:e,setLang:t}=_e();return o.jsxs("div",{role:"group","aria-label":e==="en"?"Change language":"Cambiar idioma",className:"inline-flex items-center text-sm font-bold select-none",children:[o.jsx("button",{type:"button",onClick:()=>t("en"),"aria-pressed":e==="en","aria-label":"English",lang:"en",style:{padding:"4px 10px",borderRadius:9999,backgroundColor:e==="en"?"#ffffff":"transparent",color:e==="en"?"#1e2a4d":"#ffffff",border:"none",cursor:"pointer"},children:"EN"}),o.jsx("span",{style:{color:"#ffffff",opacity:.5,margin:"0 2px"},children:"|"}),o.jsx("button",{type:"button",onClick:()=>t("es"),"aria-pressed":e==="es","aria-label":"Español",lang:"es",style:{padding:"4px 10px",borderRadius:9999,backgroundColor:e==="es"?"#ffffff"
vendor: 4,888 bytes, line 23
23:"transparent",color:e==="es"?"#1e2a4d":"#ffffff",border:"none",cursor:"pointer"},children:"ES"})]})}const G6=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),K6=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(t,r,s)=>s?s.toUpperCase():r.toLowerCase()),nx=e=>{const t=K6(e);return t.charAt(0).toUpperCase()+t.slice(1)},h2=(...e)=>e.filter((t,r,s)=>!!t&&t.trim()!==""&&s.indexOf(t)===r).join(" ").trim(),H6=e=>{for(const t in e)if(t.startsWith("aria-")||t==="role"||t==="title")return!0};var Q6={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 Y6=S.forwardRef(({color:e="currentColor",size:t=24,strokeWidth:r=2,absoluteStrokeWidth:s,className:c="",children:d,iconNode:m,...h},f)=>S.createElement("svg",{ref:f,...Q6,width:t,height:t,stroke:e,strokeWidth:s?Number(r)*24/Number(t):r,className:h2("lucide",c),...!d&&!H6(h)&&{"aria-hidden":"true"},...h},[...m.map(([y,b])=>S.createElement(y,b)),...Array.isArray(d)?d:[d]]));const Se=(e,t)=>{const r=S.forwardRef(({className:s,...c},d)=>S.createElement(Y6,{ref:d,iconNode:t,className:h2(`lucide-${G6(nx(e))}`,`lucide-${e}`,s),...c}));return r.displayName=nx(e),r};const X6=[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]],gf=Se("arrow-left",X6);const Z6=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]],Do=Se("arrow-right",Z6);const J6=[["path",{d:"m5 12 7-7 7 7",key:"hav0vg"}],["path",{d:"M12 19V5",key:"x0mq9r"}]],eM=Se("arrow-up",J6);const tM=[["path",{d:"M10.268 21a2 2 0 0 0 3.464 0",key:"vwvbt9"}],["path",{d:"M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326",key:"11g9vi"}]],aM=Se("bell",tM);const nM=[["path",{d:"M12 7v14",key:"1akyts"}],["path",{d:"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z",key:"ruj8y"}]],mi=Se("book-open",nM);const rM=[["path",{d:"M12 18V5",key:"adv99a"}],["path",{d:"M15 13a4.17 4.17 0 0 1-3-4 4.17 4.17 0 0 1-3 4",key:"1e3is1"}],["path",{d:"M17.598 6.5A3 3 0 1 0 12 5a3 3 0 1 0-5.598 1.5",key:"1gqd8o"}],["path",{d:"M17.997 5.125a4 4 0 0 1 2.526 5.77",key:"iwvgf7"}],["path",{d:"M18 18a4 4 0 0 0 2-7.464",key:"efp6ie"}],["path",{d:"M19.967 17.483A4 4 0 1 1 12 18a4 4 0 1 1-7.967-.517",key:"1gq6am"}],["path",{d:"M6 18a4 4 0 0 1-2-7.464",key:"k1g0md"}],["path",{d:"M6.003 5.125a4 4 0 0 0-2.526 5.77",key:"q97ue3"}]],sM=Se("brain",rM);const iM=[["rect",{width:"16",height:"20",x:"4",y:"2",rx:"2",key:"1nb95v"}],["line",{x1:"8",x2:"16",y1:"6",y2:"6",key:"x4nwl0"}],["line",{x1:"16",x2:"16",y1:"14",y2:"18",key:"wjye3r"}],["path",{d:"M16 10h.01",key:"1m94wz"}],["path",{d:"M12 10h.01",key:"1nrarc"}],["path",{d:"M8 10h.01",key:"19clt8"}],["path",{d:"M12 14h.01",key:"1etili"}],["path",{d:"M8 14h.01",key:"6423bh"}],["path",{d:"M12 18h.01",key:"mhygvu"}],["path",{d:"M8 18h.01",key:"lrp35t"}]],oM=Se("calculator",iM);const lM=[["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M16 2v4",key:"4m81vk"}],["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",key:"1hopcy"}],["path",{d:"M3 10h18",key:"8toen8"}],["path",{d:"M8 14h.01",key:"6423bh"}],["path",{d:"M12 14h.01",key:"1etili"}],["path",{d:"M16 14h.01",key:"1gbofw"}],["path",{d:"M8 18h.01",key:"lrp35t"}],["path",{d:"M12 18h.01",key:"mhygvu"}],["path",{d:"M16 18h.01",key:"kzsmim"}]],cM=Se("calendar-days",lM);const dM=[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]],pi=Se("check",dM);const uM=[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]],f2=Se("chevron-down",uM);const mM=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]],pM=Se("circle-alert",mM);const hM=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]],In=Se("circle-check",hM);const fM=[["path",{d:"M21.801 10A10 10 0 1 1 17 3.335",key:"yps3ct"}],["path",{d:"m9 11 3 3L22 4",key:"1pflzl"}]],gM=Se("circle-check-big",fM);const yM=[["path",{d:"M9 9.003a1 1 0 0 1 1.517-.859l4.997 2.997a1 1 0 0 1 0 1.718l-4.997 2.997A1 1 0 0 1 9 14.996z",key:"kmsa83"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]],rx=Se("circle-play",yM);const bM=[["path",{d:"M18 20a6 6 0 0 0-12 0",key:"1qehca"}],["circle",{cx:"12",cy:"10",r:"4",key:"1h16sb"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]],g2=Se("circle-user-round",bM);const vM=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]],sx=Se("circle-x",vM);const xM=[["path",{d:"M12 6v6l4 2",key:"mmk7yg"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]],yf=Se("clock",xM);const wM=[["path",{d:"m16.24 7.76-1.804 5.411a2 2 0 0 1-1.265 1.265L7.76 16.24l1.804-5.411a2 2 0 0 1 1.265-1.265z",ke
23y:"9ktpf1"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]],kM=Se("compass",wM);const SM=[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]],y2=Se("copy",SM);const CM=[["path",{d:"M12 15V3",key:"m9g1x1"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["path",{d:"m7 10 5 5 5-5",key:"brsn70"}]],b2=Se("download",CM);const jM=[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]],yh=Se("external-link",jM);const AM=[["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",key:"1rqfz7"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]],ix=Se("file-text",AM);const qM=[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",key:"usdka0"}]],EM=Se("folder-open",qM);const NM=[["path",{d:"M21.42 10.922a1 1 0 0 0-.019-1.838L12.83 5.18a2 2 0 0 0-1.66 0L2.6 9.08a1 1 0 0 0 0 1.832l8.57 3.908a2 2 0 0 0 1.66 0z",key:"j76jl0"}],["path",{d:"M22 10v6",key:"1lu8f3"}],["path",{d:"M6 12.5V16a6 3 0 0 0 12 0v-3.5",key:"1r8lef"}]],TM=Se("graduation-cap",NM);const MM=[["polyline",{points:"22 12 16 12 14 15 10 15 8 12 2 12",key:"o97t9d"}],["path",{d:"M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z",key:"oot6mr"}]],PM=Se("inbox",MM);const _M=[["rect",{width:"7",height:"9",x:"3",y:"3",rx:"1",key:"10lvy0"}],["rect",{width:"7",height:"5",x:"14",y:"3",rx:"1",key:"16une8"}],["rect",{width:"7",height:"9",x:"14",y:"12",rx:"1",key:"1hutg5"}],["rect",{width:"7",height:"5",x:"3",y:"16",rx:"1",key:"ldoo1y"}]],v2=Se("layout-dashboard",_M);const RM=[["path",{d:"M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5",key:"1gvzjb"}],["path",{d:"M9 18h6",key:"x1upvd"}],["path",{d:"M10 22h4",key:"ceow96"}]],IM=Se("lightbulb",RM);const UM=[["path",{d:"M9 17H7A5 5 0 0 1 7 7h2",key:"8i5ue5"}],["path",{d:"M15 7h2a5 5 0 1 1 0 10h-2",key:"1b9ql8"}],["line",{x1:"8",x2:"16",y1:"12",y2:"12",key:"1jonct"}]],DM=Se("link-2",UM);const OM=[["path",{d:"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71",key:"1cjeqo"}],["path",{d:"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71",key:"19qd67"}]],LM=Se("link",OM);const zM=[["path",{d:"M13 5h8",key:"a7qcls"}],["path",{d:"M13 12h8",key:"h98zly"}],["path",{d:"M13 19h8",key:"c3s6r1"}],["path",{d:"m3 17 2 2 4-4",key:"1jhpwq"}],["path",{d:"m3 7 2 2 4-4",key:"1obspn"}]],FM=Se("list-checks",zM);const $M=[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]],mr=Se("loader-circle",$M);const BM=[["circle",{cx:"12",cy:"16",r:"1",key:"1au0dj"}],["rect",{x:"3",y:"10",width:"18",height:"12",rx:"2",key:"6s8ecr"}],["path",{d:"M7 10V7a5 5 0 0 1 10 0v3",key:"1pqi11"}]],VM=Se("lock-keyhole",BM);const WM=[["path",{d:"m16 17 5-5-5-5",key:"1bji2h"}],["path",{d:"M21 12H9",key:"dn1m92"}],["path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4",key:"1uf3rs"}]],GM=Se("log-out",WM);const KM=[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]],HM=Se("lock",KM);const QM=[["path",{d:"M21.2 8.4c.5.38.8.97.8 1.6v10a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V10a2 2 0 0 1 .8-1.6l8-6a2 2 0 0 1 2.4 0l8 6Z",key:"1jhwl8"}],["path",{d:"m22 10-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 10",key:"1qfld7"}]],YM=Se("mail-open",QM);const XM=[["path",{d:"m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7",key:"132q7q"}],["rect",{x:"2",y:"4",width:"20",height:"16",rx:"2",key:"izxlao"}]],yr=Se("mail",XM);const ZM=[["path",{d:"M4 5h16",key:"1tepv9"}],["path",{d:"M4 12h16",key:"1lakjw"}],["path",{d:"M4 19h16",key:"1djgab"}]],JM=Se("menu",ZM);const eP=[["path",{d:"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z",key:"18887p"}]],bf=Se("message-square",eP);const tP=[["rect",{x:"14",y:"3",width:"5",height:"18",rx:"1",key:"kaeet6"}],["rect",{x:"5",y:"3",width:"5",height:"18",rx:"1",key:"1wsw3u"}]],aP=Se("pause",tP);const nP=[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]],rP=Se("pencil",nP);const sP=[["path",{d:"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z",key:"10ikf1"}]],iP=Se("play",sP);const oP=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]],x2=Se("plus",oP);const lP=[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]],cP=Se("rotate-ccw",lP);const dP=[["path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z",key:"1c8476"}],["path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7",key:"1ydtos"}],["path",{d:"M7 3v4a1 1 0 0 0 1 1h7",key:"t51u73"}]],Ho=Se("save",dP);const uP=[["path",{d:"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z",key:"1ffxy3"}],["path",{d:"m21.854 2.147-10.94 10.939",key:"12cjpa"}]],ii=Se("send",uP);const mP=[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",ke
23y:"oel41y"}],["path",{d:"M12 8v4",key:"1got3b"}],["path",{d:"M12 16h.01",key:"1drbdi"}]],w2=Se("shield-alert",mP);const pP=[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}]],hP=Se("shield",pP);const fP=[["path",{d:"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z",key:"1s2grr"}],["path",{d:"M20 2v4",key:"1rf3ol"}],["path",{d:"M22 4h-4",key:"gwowj6"}],["circle",{cx:"4",cy:"20",r:"2",key:"6kqj1y"}]],gP=Se("sparkles",fP);const yP=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}]],ox=Se("square",yP);const bP=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["circle",{cx:"12",cy:"12",r:"6",key:"1vlfrh"}],["circle",{cx:"12",cy:"12",r:"2",key:"1c9p78"}]],vP=Se("target",bP);const xP=[["path",{d:"M12 19h8",key:"baeox8"}],["path",{d:"m4 17 6-6-6-6",key:"1yngyt"}]],wP=Se("terminal",xP);const kP=[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]],vf=Se("trash-2",kP);const SP=[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]],Oo=Se("triangle-alert",SP);const CP=[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["path",{d:"M16 3.128a4 4 0 0 1 0 7.744",key:"16gr8j"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87",key:"kshegd"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}]],br=Se("users",CP);const jP=[["path",{d:"M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z",key:"uqj9uw"}],["path",{d:"M16 9a5 5 0 0 1 0 6",key:"1q6k2b"}],["path",{d:"M19.364 18.364a9 9 0 0 0 0-12.728",key:"ijwkga"}]],AP=Se("volume-2",jP);const qP=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],rs=Se("x",qP),Qo=[{id:1,title:{en:"Place Value & Whole-Number Operations",es:"Valor Posicional y Operaciones con Números Enteros"},description:{en:"Understand place value to one million, read, write, and compare multi-digit whole numbers, round to any place, fluently add and subtract, and use multiplicative comparison to solve multi-step word problems.",es:"Comprender el valor posicional hasta el millón, leer, escribir y comparar números enteros de varios dÃgitos, redondear a cualquier lugar, sumar y restar con fluidez, y usar la comparación multiplicativa para resolver problemas de varios pasos."},coverImageUrl:"/images/unit-1.png"},{id:2,title:{en:"Multiplication, Division, Factors & Patterns",es:"Multiplicación, División, Factores y Patrones"},description:{en:"Multiply multi-digit numbers, divide with remainders using place value and the relationship between operations, find factors and multiples, identify prime and composite numbers, and generate and analyze number and shape patterns.",es:"Multiplicar números de varios dÃgitos, dividir con residuos usando el valor posicional y la relación entre operaciones, hallar factores y múltiplos, identificar números primos y compuestos, y generar y analizar patrones numéricos y de figuras."},coverImageUrl:"/images/unit-2.png"},{id:3,title:{en:"Fractions & Decimals",es:"Fracciones y Decimales"},description:{en:"Build fraction equivalence and comparison, add and subtract fractions and mixed numbers with like denominators, multiply a fraction by a whole number, write fractions with denominators 10 and 100 as decimals, and compare decimals to hundredths.",es:"Construir la equivalencia y comparación de fracciones, sumar y restar fracciones y números mixtos con denominadores iguales, multiplicar una fracción por un número entero, escribir fracciones con de
23nominadores 10 y 100 como decimales, y comparar decimales hasta centésimas."},coverImageUrl:"/images/unit-3.png"},{id:4,title:{en:"Measurement, Data & Geometry",es:"Medición, Datos y GeometrÃa"},description:{en:"Convert units of measurement, solve problems involving measurement, area, and perimeter, represent and interpret data on line plots, measure and draw angles, classify two-dimensional shapes by their lines and angles, and recognize lines of symmetry.",es:"Convertir unidades de medida, resolver problemas de medición, área y perÃmetro, representar e interpretar datos en diagramas de puntos, medir y dibujar ángulos, clasificar figuras bidimensionales por sus rectas y ángulos, y reconocer ejes de simetrÃa."},coverImageUrl:"/images/unit-4.png"}],O=(e,t)=>({en:e,es:t}),se=(e,t)=>({en:e,es:t}),EP={1:{story:O("When NASA reports that a mission traveled 1,200,000 kilometers, every digit in that number carries a precise meaning. The 1 is worth one million, not just one. Understanding place value is what lets engineers, bankers, and scientists read huge numbers at a glance and know exactly how big they are.","Cuando la NASA informa que una misión viajó 1,200,000 kilómetros, cada dÃgito de ese número tiene un significado preciso. El 1 vale un millón, no solo uno. Comprender el valor posicional es lo que permite a ingenieros, banqueros y cientÃficos leer números enormes de un vistazo y saber exactamente qué tan grandes son."),extendedExplanation:O(`Our number system is built on place value: the position of a digit tells you its value. Each place is ten times the place to its right. Starting from the right, the places are ones, tens, hundreds, then thousands, ten thousands, hundred thousands, then millions. 24 25This 'ten times' pattern is the key idea. The digit 7 means 7 ones in the number 7, but 70 in the number 70, and 700 in 700 â each step left multiplies its value by ten. So in 4,000, the 4 is worth ten times the 4 in 400. 26 27We group digits into periods of three â ones, thousands, millions â separated by commas, which makes long numbers easier to read. In 532,914 the comma separates the thousands period (532) from the ones period (914), and we read it 'five hundred thirty-two thousand, nine hundred fourteen.'`,`Nuestro sistema numérico se basa en el valor posicional: la posición de un dÃgito indica su valor. Cada lugar es diez veces el lugar a su derecha. Empezando por la derecha, los lugares son unidades, decenas, centenas, luego millares, decenas de millar, centenas de millar, y luego millones. 28 29Este patrón de 'diez veces' es la idea clave. El dÃgito 7 significa 7 unidades en el número 7, pero 70 en el número 70, y 700 en 700: cada paso a la izquierda multiplica su valor por diez. AsÃ, en 4,000, el 4 vale diez veces el 4 de 400. 30 31Agrupamos los dÃgitos en perÃodos de tres âunidades, millares, millonesâ separados por comas, lo que facilita leer números largos. En 532,914 la coma separa el perÃodo de los millares (532) del perÃodo de las unidades (914), y lo leemos 'quinientos treinta y dos mil novecientos catorce.'`),activitySteps:[{title:O("Activity 1 â Build it with blocks","Actividad 1 â Constrúyelo con bloques"),steps:se(["Choose a 6-digit number from a card.","Place it in a place-value chart from millions to ones.","Say the value of each digit out loud ('the 5 is worth 50,000').","Check with a partner that every place is named correctly."],["Elige un número de 6 dÃgitos de una tarjeta.","Colócalo en una tabla de valor posicional desde los millones hasta las unidades.","Di en voz alta el valor de cada dÃgito ('el 5 vale 50,000').","Verifica con un compañero que cada lugar esté nombrado correctamente."])},{title:O("Activity 2 â Ten times greater","Actividad 2 â Diez veces mayor"),steps:se(["Write the digit 6 in three different places (like 6, 60, 600).","Explain how the value changes each time you move one place left.","Find two digits in one number where one is ten times the other.","Write a sentence describing the 'ten times' relationship you found."],["Escribe el dÃgito 6 en tres lugares diferentes (como 6, 60, 600).","Explica cómo cambia el valor cada vez que te mueves un lugar a la izquierda.","Encuentra dos dÃgitos en un número donde uno sea diez veces el otro.","Escribe una oración que describa la relación de 'diez veces' que encontraste."])}],aiPromptExample:O("Prompt: 'Give me a 6-digit number and ask me to name the value of each digit, then tell me if I'm right.'","Indicación: 'Dame un número de 6 dÃgitos y pÃdeme que nombre el valor de cada dÃgito, luego dime si tengo razón.'"),projectSteps:se(["Invent a 'Place-Value City' where each building's height is a 6-digit number.","Make a place-value chart for three of your buildings.","Label the value of one chosen digit in each number.","Write one sentence using the 'ten times greater' idea about your city."],["Inventa una 'Ciudad del Valor Posicional' donde la altura de cada edificio sea un número de 6 dÃgitos.","Haz una tabla de valor posicional para tres de tus edificios.","Etiqueta el valor de un dÃgito elegido en cada número.","Escribe una oración usando la idea de 'diez veces mayor' sobre tu ciudad."]),expectedProduct:O("A labeled 'Place-Value City' page with place-value charts for three multi-digit numbers and a sentence about the ten-times pattern.","Una página de la 'Ciudad del Valor Posicional' con tablas de valor posicional para tres números de varios dÃgitos y una oración sobre el patrón de diez veces.")},2:{story:O("Sports reporters write attendance numbers like '48,205 fans' on screen, say them out loud on the radio, and break them down to compare two games. The same number travels through standard form, word form, and a quick comparison â and you will learn to move between all of them this week.","Los reporteros deportivos escriben cifras de asistencia como '48,205 aficionados' en pantalla, las dicen en voz alta en la radio y las desglosan para comparar dos partidos. El mismo número pasa por la forma estándar, la forma en palabras y una comparación rápida, y esta semana aprenderás a moverte entre todas ellas."),extendedExplanation:O(`A whole number can be written three ways. Standard form uses digits: 45,302. Word form uses words: forty-five thousand, three hundred two. Expanded form shows the value of each digit added together: 40,000 + 5,000 + 300 + 2. 32 33Moving between forms reinforces place value. To write a number in words, name each period (thousands, then ones) and add the peri
33od name. To write it in expanded form, multiply each digit by its place value and add the parts. 34 35To compare two multi-digit numbers, first compare the number of digits â more digits usually means a greater number. If they have the same number of digits, compare from the leftmost (greatest) place and move right until the digits differ. The first place where they differ decides the comparison. We record the result with > (greater than), < (less than), or = (equal to).`,`Un número entero se puede escribir de tres maneras. La forma estándar usa dÃgitos: 45,302. La forma en palabras usa palabras: cuarenta y cinco mil trescientos dos. La forma desarrollada muestra el valor de cada dÃgito sumado: 40,000 + 5,000 + 300 + 2. 36 37Moverse entre formas refuerza el valor posicional. Para escribir un número en palabras, nombra cada perÃodo (millares y luego unidades) y agrega el nombre del perÃodo. Para escribirlo en forma desarrollada, multiplica cada dÃgito por su valor posicional y suma las partes. 38 39Para comparar dos números de varios dÃgitos, primero compara la cantidad de dÃgitos: más dÃgitos suele significar un número mayor. Si tienen la misma cantidad de dÃgitos, compara desde el lugar más a la izquierda (el mayor) y muévete a la derecha hasta que los dÃgitos difieran. El primer lugar donde difieren decide la comparación. Registramos el resultado con > (mayor que), < (menor que) o = (igual a).`),activitySteps:[{title:O("Activity 1 â Three forms, one number","Actividad 1 â Tres formas, un número"),steps:se(["Pick a 5-digit number.","Write it in standard form, word form, and expanded form.","Read the word form aloud to a partner.","Check that all three forms match the same number."],["Elige un número de 5 dÃgitos.","EscrÃbelo en forma estándar, en palabras y en forma desarrollada.","Lee la forma en palabras en voz alta a un compañero.","Verifica que las tres formas correspondan al mismo número."])},{title:O("Activity 2 â Comparison battle","Actividad 2 â Batalla de comparación"),steps:se(["Flip two number cards and write both numbers.","Compare from the greatest place to the least.","Place the correct symbol: >, <, or =.","Explain which place decided the comparison."],["Voltea dos tarjetas de números y escribe ambos números.","Compara desde el lugar mayor al menor.","Coloca el sÃmbolo correcto: >, < o =.","Explica qué lugar decidió la comparación."])}],aiPromptExample:O("Prompt: 'Give me two 5-digit numbers and ask me which is greater and to explain which place decided it.'","Indicación: 'Dame dos números de 5 dÃgitos y pregúntame cuál es mayor y que explique qué lugar lo decidió.'"),projectSteps:se(["Collect three real large numbers (populations, distances, or prices).","Write each in standard, word, and expanded form on a poster.","Order the three numbers from least to greatest using < symbols.","Add a sentence explaining how you compared them."],["Reúne tres números grandes reales (poblaciones, distancias o precios).","Escribe cada uno en forma estándar, en palabras y desarrollada en un cartel.","Ordena los tres números de menor a mayor usando los sÃmbolos <.","Agrega una oración que explique cómo los comparaste."]),expectedProduct:O("A poster showing three real numbers in all three forms, ordered least to greatest with comparison symbols and an explanation.","Un cartel que muestra tres números reales en las tres formas, ordenados de menor a mayor con sÃmbolos de comparación y una explicación.")},3:{story:O("A news headline reads 'About 50,000 people ran the marathon.' The exact count was 48,205, but rounding to the nearest ten thousand gives a number that is easy to picture and share. Rounding helps us estimate, communicate quickly, and check whether an exact answer is reasonable.","Un titular de noticias dice 'Cerca de 50,000 personas corrieron el maratón.' El conteo exacto fue 48,205, pero redondear a la decena de millar más cercana da un número fácil de imaginar y compartir. El redondeo nos ayuda a estimar, comunicar rápido y comprobar si una respuesta exacta es razonable."),extendedExplanation:O(`Rounding replaces a number with a nearby 'landmark' number that is easier to work with. To round to a chosen place, look only at the digit immediately to the right of that place. If it is 5, 6, 7, 8, or 9, round the chosen digit up by one. If it is 0, 1, 2, 3, or 4, keep the chosen digit the same. Then replace every digit to the right with zeros. 40 41A number line makes this clear. To round 4,730 to the nearest thousand, notice it lies between 4,000 and 5,000. The midpoint is 4,500; since 4,730 is past the midpoint, it is closer to 5,000, so it rounds up. 42 43The same number can round to different values depending on the place. 4,730 rounds to 4,700 (nearest hun
43dred), 5,000 (nearest thousand), and 4,730 stays the same to the nearest ten. Choosing the place depends on how precise you need to be.`,`Redondear reemplaza un número por un número 'de referencia' cercano que es más fácil de usar. Para redondear a un lugar elegido, mira solo el dÃgito inmediatamente a la derecha de ese lugar. Si es 5, 6, 7, 8 o 9, aumenta en uno el dÃgito elegido. Si es 0, 1, 2, 3 o 4, deja igual el dÃgito elegido. Luego reemplaza con ceros todos los dÃgitos a la derecha. 44 45Una recta numérica lo aclara. Para redondear 4,730 al millar más cercano, observa que está entre 4,000 y 5,000. El punto medio es 4,500; como 4,730 pasa el punto medio, está más cerca de 5,000, asà que se redondea hacia arriba. 46 47El mismo número puede redondearse a valores distintos según el lugar. 4,730 se redondea a 4,700 (centena más cercana), 5,000 (millar más cercano), y 4,730 queda igual a la decena más cercana. Elegir el lugar depende de cuánta precisión necesites.`),activitySteps:[{title:O("Activity 1 â Number-line rounding","Actividad 1 â Redondeo en recta numérica"),steps:se(["Draw a number line with the two nearest landmark numbers at the ends.","Mark the midpoint and locate your number.","Decide which landmark is closer and round to it.","Write the rounded number and explain your choice."],["Dibuja una recta numérica con los dos números de referencia más cercanos en los extremos.","Marca el punto medio y ubica tu número.","Decide qué referencia está más cerca y redondea a ella.","Escribe el número redondeado y explica tu elección."])},{title:O("Activity 2 â Round to many places","Actividad 2 â Redondear a varios lugares"),steps:se(["Choose one 4-digit number.","Round it to the nearest ten, hundred, and thousand.","Record all three results in a table.","Describe how the results change as the place gets bigger."],["Elige un número de 4 dÃgitos.","Redondéalo a la decena, centena y millar más cercanos.","Registra los tres resultados en una tabla.","Describe cómo cambian los resultados a medida que el lugar es mayor."])}],aiPromptExample:O("Prompt: 'Give me a 4-digit number and ask me to round it to the nearest ten, hundred, and thousand, explaining each step.'","Indicación: 'Dame un número de 4 dÃgitos y pÃdeme redondearlo a la decena, centena y millar más cercanos, explicando cada paso.'"),projectSteps:se(["Plan a pretend shopping trip with five items and real-ish prices.","Round each price to the nearest ten to estimate the total.","Add the rounded prices to get an estimated total.","Then find the exact total and compare it to your estimate."],["Planea un viaje de compras imaginario con cinco artÃculos y precios realistas.","Redondea cada precio a la decena más cercana para estimar el total.","Suma los precios redondeados para obtener un total estimado.","Luego halla el total exacto y compáralo con tu estimación."]),expectedProduct:O("A shopping-trip page showing five prices rounded to estimate a total, plus the exact total and a comparison.","Una página del viaje de compras que muestra cinco precios redondeados para estimar un total, además del total exacto y una comparación.")},4:{story:O("A city tracks how many liters of water two neighborhoods use: 26,480 and 19,375. To plan, engineers must add these large numbers exactly. The standard addition algorithm â line up, add, regroup â is the reliable tool that keeps every place value in order, no matter how big the numbers are.","Una ciudad registra cuántos litros de agua usan dos vecindarios: 26,480 y 19,375. Para planificar, los ingenieros deben sumar exactamente estos números grandes. El algoritmo estándar de la suma âalinear, sumar, reagruparâ es la herramienta confiable que mantiene cada valor posicional en orden, sin importar qué tan grandes sean los números."),extendedExplanation:O(`The standard addition algorithm works because we add like place values together. Write the numbers so their place values line up: ones under ones, tens under tens, and so on. Then add each column from right to left. 48 49When a column's total is ten or more, we regroup: write the ones digit of that total and carry the ten to the next column to the left. For example, 8
49+ 5 = 13, so write 3 and carry 1. This 'carrying' is just trading ten of one place for one of the next higher place. 50 51Estimation protects against mistakes. Before adding 26,480 + 19,375, round to 26,000 + 19,000 = 45,000. The exact sum, 45,855, is close to this estimate, so it is reasonable. If your exact answer were far from the estimate, you would know to recheck your regrouping.`,`El algoritmo estándar de la suma funciona porque sumamos valores posicionales iguales. Escribe los números de modo que sus valores posicionales se alineen: unidades bajo unidades, decenas bajo decenas, y asÃ. Luego suma cada columna de derecha a izquierda. 52 53Cuando el total de una columna es diez o más, reagrupamos: escribe el dÃgito de las unidades de ese total y lleva la decena a la siguiente columna a la izquierda. Por ejemplo, 8 + 5 = 13, asà que escribe 3 y lleva 1. Este 'llevar' es solo cambiar diez de un lugar por uno del siguiente lugar mayor. 54 55La estimación protege contra errores. Antes de sumar 26,480 + 19,375, redondea a 26,000 + 19,000 = 45,000. La suma exacta, 45,855, está cerca de esta estimación, asà que es razonable. Si tu respuesta exacta estuviera lejos de la estimación, sabrÃas que debes revisar tu reagrupación.`),activitySteps:[{title:O("Activity 1 â Estimate, then add","Actividad 1 â Estima y luego suma"),steps:se(["Round each addend to estimate the sum.","Add the two numbers exactly using columns.","Compare your exact sum to your estimate.","Explain whether the answer is reasonable."],["Redondea cada sumando para estimar la suma.","Suma los dos números exactamente usando columnas.","Compara tu suma exacta con tu estimación.","Explica si la respuesta es razonable."])},{title:O("Activity 2 â Error hunt","Actividad 2 â Caza de errores"),steps:se(["Look at a worked addition that has a regrouping mistake.","Find the column where the error happens.","Rewrite the problem correctly with the carry shown.","Explain what the mistake was."],["Observa una suma resuelta que tiene un error de reagrupación.","Encuentra la columna donde ocurre el error.","Reescribe el problema correctamente mostrando el acarreo.","Explica cuál fue el error."])}],aiPromptExample:O("Prompt: 'Give me two 4-digit numbers; ask me to estimate the sum first, then add exactly and compare.'","Indicación: 'Dame dos números de 4 dÃgitos; pÃdeme estimar la suma primero, luego sumar exactamente y comparar.'"),projectSteps:se(["Plan a class event and list at least four costs (food, supplies, etc.).","Estimate the total cost by rounding each amount.","Add the exact amounts using the standard algorithm.","Show that your exact total is close to your estimate."],["Planea un evento de la clase y enumera al menos cuatro costos (comida, materiales, etc.).","Estima el costo total redondeando cada cantidad.","Suma las cantidades exactas usando el algoritmo estándar.","Muestra que tu total exacto está cerca de tu estimación."]),expectedProduct:O("A budget page with at least four costs, an estimated total, an exact total found by the standard algorithm, and a reasonableness check.","Una página de presupuesto con al menos cuatro costos, un total estimado, un total exacto hallado con el algoritmo estándar y una comprobación de razonabilidad.")},5:{story:O("A delivery truck starts a trip with 30,000 packages and drops off 12,640. To know how many remain, the company subtracts across several zeros â a place where many people slip up. Mastering the standard subtraction algorithm, even across zeros, keeps inventories and bank balances correct.","Un camión de reparto inicia un viaje con 30,000 paquetes y entrega 12,640. Para saber cuántos quedan, la empresa resta a través de varios ceros, un punto donde muchas personas se equivocan. Dominar el algoritmo estándar de la resta, incluso a través de ceros, mantiene correctos los inventarios y los saldos bancarios."),extendedExplanation:O(`The standard subtraction algorithm also depends on place value. Line up the digits, then subtract each column from right to left. When the top digit is smaller than the bottom digit, regroup: borrow ten from the next place to the left, which adds ten to the current column. 56 57Subtracting across zeros needs care. To compute 30,000 â 12,640, there are no ones, tens, or hundreds to borrow from directly. You regroup step by step: one thousand becomes ten hundreds, one hundred becomes ten tens, and one ten becomes ten ones, so the borrowing 'travels' across the zeros until a column has enough. 58 59Because addition and subtraction are inverse operations, you can always check a difference by adding it back. If 30,000 â 12,640 = 17,360, then 17,360 + 12,640 should equal 30,000. If it does, your subtraction is correct.`,`El algoritmo estándar de la resta también depen
59de del valor posicional. Alinea los dÃgitos y resta cada columna de derecha a izquierda. Cuando el dÃgito de arriba es menor que el de abajo, reagrupa: pide prestado diez del siguiente lugar a la izquierda, lo que agrega diez a la columna actual. 60 61Restar a través de ceros requiere cuidado. Para calcular 30,000 â 12,640, no hay unidades, decenas ni centenas de las cuales pedir prestado directamente. Reagrupas paso a paso: un millar se vuelve diez centenas, una centena se vuelve diez decenas y una decena se vuelve diez unidades, de modo que el préstamo 'viaja' a través de los ceros hasta que una columna tenga suficiente. 62 63Como la suma y la resta son operaciones inversas, siempre puedes comprobar una diferencia sumándola de vuelta. Si 30,000 â 12,640 = 17,360, entonces 17,360 + 12,640 debe ser igual a 30,000. Si lo es, tu resta es correcta.`),activitySteps:[{title:O("Activity 1 â Subtract across zeros","Actividad 1 â Restar a través de ceros"),steps:se(["Set up a subtraction where the top number has zeros.","Regroup step by step, showing each borrow.","Find the difference.","Describe how the borrowing traveled across the zeros."],["Plantea una resta donde el número de arriba tenga ceros.","Reagrupa paso a paso, mostrando cada préstamo.","Halla la diferencia.","Describe cómo viajó el préstamo a través de los ceros."])},{title:O("Activity 2 â Check by adding","Actividad 2 â Comprobar sumando"),steps:se(["Solve a multi-digit subtraction problem.","Add the difference to the number you subtracted.","Confirm the result equals the original total.","Explain why this check works."],["Resuelve un problema de resta de varios dÃgitos.","Suma la diferencia al número que restaste.","Confirma que el resultado es igual al total original.","Explica por qué funciona esta comprobación."])}],aiPromptExample:O("Prompt: 'Give me a subtraction with zeros in the top number; solve it, then check by adding the difference back.'","Indicación: 'Dame una resta con ceros en el número de arriba; resuélvela y luego comprueba sumando la diferencia de vuelta.'"),projectSteps:se(["Pick two cities and find (or invent) the distance from your town to each.","Subtract to find how much farther one city is than the other.","Show your regrouping, including any zeros.","Check your answer by adding the difference back."],["Elige dos ciudades y halla (o inventa) la distancia desde tu pueblo a cada una.","Resta para hallar cuánto más lejos está una ciudad que la otra.","Muestra tu reagrupación, incluidos los ceros.","Comprueba tu respuesta sumando la diferencia de vuelta."]),expectedProduct:O("A 'distance detective' page comparing two distances with a worked subtraction (showing regrouping) and an addition check.","Una página de 'detective de distancias' que compara dos distancias con una resta resuelta (mostrando la reagrupación) y una comprobación con suma.")},6:{story:O("A school garden has 6 tomato plants, and the bean rows have 4 times as many plants. Instead of counting one by one, you can think '4 times as many as 6' and multiply: 4 à 6 = 24. Multiplicative comparison turns 'times as many' stories into quick, powerful equations.","Un huerto escolar tiene 6 plantas de tomate, y las hileras de frijol tienen 4 veces más plantas. En lugar de contar una por una, puedes pensar '4 veces 6' y multiplicar: 4 à 6 = 24. La comparación multiplicativa convierte las historias de 'veces más' en ecuaciones rápidas y poderosas."),extendedExplanation:O(`Multiplicative comparison describes one quantity as a number of times as many as another. The equation 35 = 5 à 7 can be read 'thirty-five is five times as many as seven.' Here 7 is the size of one group, 5 is how many times, and 35 is the total. 64 65A bar model shows this clearly: draw one bar for 7, then show 5 of those bars; together they equal 35. The same picture connects multiplication and division â if you know the total (35) and the number of times (5), you can divide to find the size of one group (35 ÷ 5 = 7). 66 67Multiplicative comparison is different from additive comparison. 'Six more than 7' means 7 + 6 = 13 (additive â how many more). 'Six times as many as 7' means 6 à 7 = 42 (multiplicative â how many times). Reading the words carefully tells you which kind of comparison a problem uses.`,`La comparación multiplicativa describe una cantidad como un número de veces más que otra. La ecuación 35 = 5 à 7 se puede leer 'treinta y cinco es cinco veces siete.' Aquà 7 es el tamaño de un grupo, 5 es cuántas veces y 35 es el total. 68 69Un modelo de barras lo muestra con claridad: dibuja una barra para 7, luego muestra 5 de esas barras; juntas son 35. La misma imagen conecta la multiplicación y la división: si conoces el total (35) y el número de veces (5), puedes dividir para hallar el tamaño de un grupo (35 ÷ 5 = 7). 70 71La comparación multiplicativa es distinta de la aditiva. 'Seis más que 7' significa 7 + 6 = 13 (aditiva: cuántos más). 'Seis veces 7' significa 6 à 7 = 42 (multiplicativa: cuántas veces). Leer las palabras con cuidado te dice qué tipo de comparación usa un problema.`),activitySteps:[{title:O("Activity 1 â Bar-model match","Actividad 1 â Relaciona modelos de barras"),steps:se(["Read a 'times as many' sentence.","Draw a bar model that matches it.","Write the multiplication equation for the bar model.","Check that the equation and the sentence agree."],["Lee una oración de 'veces más'.","Dibuja un modelo de barras que le corresponda.","Escribe la ecuación de multiplicación del modelo de barras.","Verifica que la ecuación y la oración concuerden."])},{title:O("Activity 2 â Sort the comparisons","Actividad 2 â Clasifica las comparaciones"),steps:se(["Read several comparison sentences.","Sort them into 'times as many' (multiply) and 'how many more' (add).","Write the matching equation for two of each.","Explain how you knew which pile each belonged in."],["Lee varias oraciones de comparación.","ClasifÃcalas en 'veces más' (multiplicar) y 'cuántos más' (sumar).","Escribe la ecuación correspondiente para dos de cada una.","Explica cómo
71supiste a qué grupo pertenecÃa cada una."])}],aiPromptExample:O(`Prompt: 'Give me a "times as many" sentence and ask me to write the multiplication equation and draw a bar model.'`,`Indicación: 'Dame una oración de "veces más" y pÃdeme escribir la ecuación de multiplicación y dibujar un modelo de barras.'`),projectSteps:se(["Write a short story that uses 'times as many' to compare two amounts.","Draw a bar model for your story.","Write the multiplication equation that solves it.","Include one additive comparison sentence and explain how it is different."],["Escribe una historia corta que use 'veces más' para comparar dos cantidades.","Dibuja un modelo de barras para tu historia.","Escribe la ecuación de multiplicación que la resuelve.","Incluye una oración de comparación aditiva y explica en qué se diferencia."]),expectedProduct:O("A comparison story with a matching bar model and multiplication equation, plus an additive sentence showing the contrast.","Una historia de comparación con su modelo de barras y ecuación de multiplicación, además de una oración aditiva que muestra el contraste.")},7:{story:O("A library has 8 picture books and 6 times as many chapter books. How many chapter books are there? Word problems like this hide a multiplication inside everyday language. Learning to draw the comparison and write an equation turns confusing word problems into clear, solvable math.","Una biblioteca tiene 8 libros ilustrados y 6 veces más libros por capÃtulos. ¿Cuántos libros por capÃtulos hay? Los problemas verbales como este esconden una multiplicación dentro del lenguaje cotidiano. Aprender a dibujar la comparación y escribir una ecuación convierte los problemas confusos en matemáticas claras y resolubles."),extendedExplanation:O(`To solve a multiplicative comparison word problem, first decide what is being compared and what is unknown. The unknown might be the total ('how many times as many'), the size of one group, or the number of times. Represent the situation with a bar model and an equation that uses a symbol or letter for the unknown. 72 73If the unknown is the larger amount, multiply. 'A has 8 books, B has 6 times as many' â 6 à 8 = 48. If the unknown is the size of one group or the number of times, divide. 'B has 48 books, which is 6 times as many as A' â 48 ÷ 6 = 8. 74 75The biggest trap is confusing multiplicative and additive comparisons. 'Six times as many' calls for multiplication or division; 'six more than' calls for addition or subtraction. Always reread the problem and ask: are we comparing by groups (times) or by amount (more/fewer)?`,`Para resolver un problema verbal de comparación multiplicativa, primero decide qué se compara y qué es la incógnita. La incógnita puede ser el total ('cuántas veces más'), el tamaño de un grupo o el número de veces. Representa la situación con un modelo de barras y una ecuación que use un sÃmbolo o letra para la incógnita. 76 77Si la incógnita es la cantidad mayor, multiplica. 'A tiene 8 libros, B tiene 6 veces más' â 6 à 8 = 48. Si la incógnita es el tamaño de un grupo o el número de veces, divide. 'B tiene 48 libros, que son 6 veces los de A' â 48 ÷ 6 = 8. 78 79La mayor trampa es confundir las comparaciones multiplicativas y aditivas. 'Seis veces más' pide multiplicación o división; 'seis más que' pide suma o resta. Siempre relee el problema y pregunta: ¿comparamos por grupos (veces) o por cantidad (más/menos)?`),activitySteps:[{title:O("Activity 1 â Model and solve","Actividad 1 â Modela y resuelve"),steps:se(["Read a 'times as many' word problem.","Draw a bar model and label the unknown with a letter.","Write an equation and decide whether to multiply or divide.","Solve and write the answer in a full sentence."],["Lee un problema de 'veces más'.","Dibuja un modelo de barras y etiqueta la incógnita con una letra.","Escribe una ecuación y decide si multiplicar o dividir.","Resuelve y escribe la respuesta en una oración completa."])},{title:O("Activity 2 â Multiply or divide?","Actividad 2 â ¿Multiplicar o dividir?"),steps:se(["Read four
79comparison problems.","Decide for each whether you multiply or divide and why.","Solve two of them completely.","Explain how the unknown told you which operation to use."],["Lee cuatro problemas de comparación.","Decide en cada uno si multiplicas o divides y por qué.","Resuelve dos de ellos por completo.","Explica cómo la incógnita te indicó qué operación usar."])}],aiPromptExample:O("Prompt: 'Give me a comparison word problem and ask me to draw a bar model, write the equation, and solve it.'","Indicación: 'Dame un problema de comparación y pÃdeme dibujar un modelo de barras, escribir la ecuación y resolverlo.'"),projectSteps:se(["Create three 'times as many' word problems from real life.","For each, draw a bar model and write an equation with the unknown.","Solve all three and write answers in full sentences.","Mark which problems needed multiplication and which needed division."],["Crea tres problemas de 'veces más' de la vida real.","Para cada uno, dibuja un modelo de barras y escribe una ecuación con la incógnita.","Resuelve los tres y escribe las respuestas en oraciones completas.","Marca qué problemas necesitaron multiplicación y cuáles división."]),expectedProduct:O("A workshop page of three comparison word problems, each with a bar model, equation, solution, and the operation labeled.","Una página-taller de tres problemas de comparación, cada uno con modelo de barras, ecuación, solución y la operación etiquetada.")},8:{story:O("A teacher needs to seat 138 students at tables that hold 6 each. How many tables, and is anyone left over? Real problems often take several steps and sometimes leave a remainder. A clear plan â understand, represent, solve, check â turns a messy situation into a confident answer.","Una maestra necesita sentar a 138 estudiantes en mesas para 6 cada una. ¿Cuántas mesas, y sobra alguien? Los problemas reales a menudo toman varios pasos y a veces dejan un residuo. Un plan claro âcomprender, representar, resolver, comprobarâ convierte una situación confusa en una respuesta segura."),extendedExplanation:O(`Multi-step word problems require organizing several operations. A reliable plan has four steps. First, understand: read carefully and identify the question and what each number means. Second, represent: draw a model and write equations, using a letter for each unknown. Third, solve: work one step at a time, labeling what each result represents. Fourth, check: use estimation or mental math to confirm the answer is reasonable. 80 81Some problems involve remainders, and the situation decides what the remainder means. If 138 students sit 6 to a table, 138 ÷ 6 = 23 tables exactly. But if 140 students sit 6 to a table, 140 ÷ 6 = 23 remainder 2 â so you need 24 tables, because the 2 extra students still need a seat. 82 83Estimating before and after solving is a powerful habit. Rounding the numbers gives a ballpark answer; if your exact result is far from that ballpark, it is a signal to recheck a step.`,`Los problemas verbales de varios pasos requieren organizar varias operaciones. Un plan confiable tiene cuatro pasos. Primero, comprender: lee con cuidado e identifica la pregunta y qué significa cada número. Segundo, representar: dibuja un modelo y escribe ecuaciones, usando una letra para cada incógnita. Tercero, resolver: trabaja un paso a la vez, etiquetando qué representa cada resultado. Cuarto, comprobar: usa estimación o cálculo mental para confirmar que la respuesta es razonable. 84 85Algunos problemas tienen residuos, y la situación decide qué significa el residuo. Si 138 estudiantes se sientan de a 6 por mesa, 138 ÷ 6 = 23 mesas exactas. Pero si 140 estudiantes se sientan de a 6 por mesa, 140 ÷ 6 = 23 con residuo 2, asà que necesitas 24 mesas, porque los 2 estudiantes extra también necesitan asiento. 86 87Estimar antes y después de resolver es un hábito poderoso. Redondear los números da una respuesta aproximada; si tu resultado exacto está lejos de esa aproximación, es una señal para revisar un paso.`),activitySteps:[{title:O("Activity 1 â Four-step plan","Actividad 1 â Plan de cuatro pasos"),steps:se(["Read a two-step word problem.","Use the plan: understand, represent, solve, check.","Write an equation with a letter for each unknown.","Confirm the answer is reasonable with an estimate."],["Lee un problema de dos pasos.","Usa el plan: comprender, representar, resolver, comprobar.","Escribe una ecuación con una letra para cada incógnita.","Confirma que la respuesta es razonable con una estimación."])},{title:O("Activity 2 â What does the remainder mean?","Actividad 2 â ¿Qué significa el residuo?"),steps:se(["Solve a division
87word problem that has a remainder.","Decide what the remainder means in the story.","State whether you round the quotient up or leave it.","Explain your decision in one sentence."],["Resuelve un problema de división que tenga residuo.","Decide qué significa el residuo en la historia.","Indica si redondeas el cociente hacia arriba o lo dejas.","Explica tu decisión en una oración."])}],aiPromptExample:O("Prompt: 'Give me a two-step word problem and ask me to write an equation with a letter for the unknown, solve it, and check with estimation.'","Indicación: 'Dame un problema de dos pasos y pÃdeme escribir una ecuación con una letra para la incógnita, resolverlo y comprobar con estimación.'"),projectSteps:se(["Plan a class trip with at least two steps (for example, cost per student and total, or students per bus).","Write an equation with a letter for each unknown.","Solve step by step, labeling each result.","Interpret any remainder and check your total with an estimate."],["Planea una excursión de la clase con al menos dos pasos (por ejemplo, costo por estudiante y total, o estudiantes por autobús).","Escribe una ecuación con una letra para cada incógnita.","Resuelve paso a paso, etiquetando cada resultado.","Interpreta cualquier residuo y comprueba tu total con una estimación."]),expectedProduct:O("A trip-planning page solving a multi-step problem with labeled equations, a remainder interpretation, and a reasonableness check.","Una página de planeación de un viaje que resuelve un problema de varios pasos con ecuaciones etiquetadas, una interpretación del residuo y una comprobación de razonabilidad.")},9:{story:O("An online store manager opens a dashboard full of numbers: items sold, money earned, returns, and 'times as many' comparisons between months. Making sense of it takes every Unit 1 skill at once â reading large numbers, rounding to estimate, adding and subtracting exactly, and comparing by multiplication. This week, you put it all together.","El gerente de una tienda en lÃnea abre un tablero lleno de números: artÃculos vendidos, dinero ganado, devoluciones y comparaciones de 'veces más' entre meses. Darle sentido requiere todas las destrezas de la Unidad 1 a la vez: leer números grandes, redondear para estimar, sumar y restar con exactitud y comparar mediante la multiplicación. Esta semana, lo integras todo."),extendedExplanation:O(`Unit 1 built a connected set of skills for working with whole numbers. You can read, write, and compare multi-digit numbers using place value; round to any place to estimate; fluently add and subtract using the standard algorithms; and use multiplicative comparison to relate quantities by 'times as many.' 88 89Real problems combine these skills. You might round to predict a total, add exact values, subtract to find a difference, and then compare two results multiplicatively â all in one task. The key is to plan, show each step, and keep track of what every number represents. 90 91Good mathematicians always check their work. Estimating before computing gives a target; explaining your reasoning in words makes errors easier to spot; and asking 'does this answer make sense?' guards against mistakes. These habits â precision, reasoning, and reasonableness â matter as much as the calculations themselves and carry forward into Unit 2.`,`La Unidad 1 construyó un conjunto conectado de destrezas para trabajar con números enteros. Puedes leer, escribir y comparar números de varios dÃgitos usando el valor posicional; redondear a cualquier lugar para estimar; sumar y restar con fluidez usando los algoritmos estándar; y usar la comparación multiplicativa para relacionar cantidades por 'veces más.' 92 93Los problemas reales combinan estas destrezas. PodrÃas redondear para predecir un total, sumar valores exactos, restar para hallar una diferencia y luego comparar dos resultados de forma multiplicativa, todo en una tarea. La clave es planificar, mostrar cada paso y recordar qué representa cada número. 94 95Los buenos matemáticos siempre comprueban su trabajo. Estimar antes de calcular da un objetivo; explicar tu razonamiento con palabras facilita detectar errores; y preguntar '¿tiene sentido esta respuesta?' protege contra equivocaciones. Estos hábitos âprecisión, razonamiento y razonabilidadâ importan tanto como los cálculos mismos y continúan en la Unidad 2.`),activitySteps:[{title:O("Activity 1 â Mixed-review challenge","Actividad 1 â Reto de repaso mixto"),steps:se(["Work a set of problems covering place value, rounding, addition, subtraction, and comparison.","Show your steps for each problem.","Estimate to check at least two of your answers.","Mark which Unit 1 skill each problem used."],["Resuelve un conjunto de problemas que cubra valor posicional, redondeo, suma, resta y comparación.","Muestra tus pasos en cada problema.","Estima para comprobar al menos dos de tus respuestas.","Marca qué destreza de la Unidad 1 usó cada problema."])},{title:O("Activity 2 â Explain your thinking","Actividad 2 â Explica tu razonamiento"),steps:se(["Choose one multi-step problem to solve carefully.","Write a clear explanation of each step in words.","Justify why your answer is reasonable.","Trade with a partner and g
95ive one piece of helpful feedback."],["Elige un problema de varios pasos para resolver con cuidado.","Escribe una explicación clara de cada paso con palabras.","Justifica por qué tu respuesta es razonable.","Intercambia con un compañero y da una retroalimentación útil."])}],aiPromptExample:O(`Prompt: 'Give me a multi-step problem that uses rounding, addition, and a "times as many" comparison; then check my solution step by step.'`,`Indicación: 'Dame un problema de varios pasos que use redondeo, suma y una comparación de "veces más"; luego revisa mi solución paso a paso.'`),projectSteps:se(["Create a one-page 'math showcase' that uses at least four Unit 1 skills.","Include one large number written in three forms and one comparison.","Solve one multi-step problem with an estimate and an exact answer.","Write a short reflection on which skill you are most confident in and why."],["Crea una 'exhibición matemática' de una página que use al menos cuatro destrezas de la Unidad 1.","Incluye un número grande escrito en tres formas y una comparación.","Resuelve un problema de varios pasos con una estimación y una respuesta exacta.","Escribe una breve reflexión sobre qué destreza dominas más y por qué."]),expectedProduct:O("A one-page Unit 1 showcase combining number forms, a comparison, a solved multi-step problem with estimation, and a short reflection.","Una exhibición de la Unidad 1 de una página que combina formas de los números, una comparación, un problema de varios pasos resuelto con estimación y una breve reflexión.")},10:{story:O("A bakery bakes 213 loaves of bread every day. To know how many loaves it makes in 4 days, the baker does not count one by one â she multiplies 4 à 213. Multiplying multi-digit numbers lets stores, factories, and farms scale up small amounts into big totals quickly and accurately.","Una panaderÃa hornea 213 panes cada dÃa. Para saber cuántos panes hace en 4 dÃas, la panadera no cuenta uno por uno: multiplica 4 à 213. Multiplicar números de varios dÃgitos permite a tiendas, fábricas y granjas convertir cantidades pequeñas en grandes totales de forma rápida y precisa."),extendedExplanation:O(`To multiply a multi-digit number by a one-digit number, use place value to break the larger number into parts. For 4 à 213, write 213 as 200 + 10 + 3. Multiply each part by 4: 4 à 200 = 800, 4 à 10 = 40, and 4 à 3 = 12. Then add the partial products: 800 + 40 + 12 = 852. 96 97An area model pictures this. Draw a rectangle and split it into sections, one for each place value (hundreds, tens, ones). The width is 4 and the lengths are 200, 10, and 3. The area of each section is a partial product, and the total area is the answer. 98 99Estimation keeps you safe. Before multiplying 4 à 213, round to 4 à 200 = 800. The exact answer, 852, is close to 800, so it is reasonable. If your answer were far from the estimate, you would know to recheck a partial product.`,`Para multiplicar un número de varios dÃgitos por uno de un dÃgito, usa el valor posicional para separar el número mayor en partes. Para 4 à 213, escribe 213 como 200 + 10 + 3. Multiplica cada parte por 4: 4 à 200 = 800, 4 à 10 = 40 y 4 à 3 = 12. Luego suma los productos parciales: 800 + 40 + 12 = 852. 100 101Un modelo de área lo representa. Dibuja un rectángulo y sepáralo en secciones, una por cada valor posicional (centenas, decenas, unidades). El ancho es 4 y los largos son 200, 10 y 3. El área de cada sección es un producto parcial, y el área total es la respuesta. 102 103La estimación te protege. Antes de multiplicar 4 à 213, redondea a 4 à 200 = 800. La respuesta exacta, 852, está cerca de 800, asà que es razonable. Si tu respuesta estuviera lejos de la estimación, sabrÃas que debes revisar un producto parcial.`),activitySteps:[{title:O("Activity 1 â Build the area model","Actividad 1 â Construye el modelo de área"),steps:se(["Choose a 3-digit number and a 1-digit number.","Break the 3-digit number into hundreds, tens, and ones.","Draw a rectangle split into three sections and find each partial product.","Add the partial products to get the total."],["Elige un número de 3 dÃgitos y uno de 1 dÃgito.","Separa el número de 3 dÃgitos en centenas, decenas y unidades.","Dibuja un rectángulo dividido en tres secciones y halla cada producto parcial.","Suma los productos parciales para obtener el total."])},{title:O("Activity 2 â Estimate, then multiply","Actividad 2 â Estima, luego multiplica"),steps:se(["Round the larger number to estimate the product.","Multiply exactly using partial products.","Compare your exact answer to the estimate.","Explain whether the answer is reasonable."],["Redondea el número mayor para estimar el producto.","Multiplica exactamente usando productos parciales.","Compara tu respuesta exacta con la estimación.","Explica si la respuesta es razonable."])}],aiPromptExample:O("Prompt: 'Give me a 3-digit by 1-digit multiplication; ask me to estimate first, then solve with partial products and check.'","Indicación: 'Dame una multiplicación de 3 dÃgitos por 1 dÃgito; pÃdeme estimar primero, luego resolver con productos parciales y comprobar.'"),projectSteps:se(["Invent a small business that makes the same number of items each day.","Choose a 3-digit daily amount and multiply it by a 1-digit number of days.","Show your work with an area model and partial products.","Write a sentence stating the total and checking it against an estimate."],["Inventa un pequeño negocio que produzca la misma cantidad de artÃculos cada dÃa.","Elige una cantidad diaria de 3 dÃgitos y multiplÃcala por un número de dÃas de 1 dÃgito.","Muestra tu trabajo con un modelo de área y productos parciales.","Escribe una oración con el total y compruébalo contra una estimación."]),expectedProduct:O("A poster showing a real-world multiplication solved with an area model, partial products, the total, and a reasonableness check.","Un cartel que muestra una multiplicación del mundo real resuelta con un modelo de área, productos parciales, el total y una comprobación de razonabilidad.")},11:{story:O("A theater has 23 rows with 14 seats in each row. To print the right number of tickets, the manager must find 23 à 14. Multiplying two two-digit numbers turns a grid of seats â or tiles, or garden plants â into a single exact total without counting every one.","Un teatro tiene 23 filas con 14 asientos en cada fila. Para imprimir la cantidad correcta de boletos, el gerente debe hallar 23
103à 14. Multiplicar dos números de dos dÃgitos convierte una cuadrÃcula de asientos âo azulejos, o plantas de un jardÃnâ en un solo total exacto sin contar cada uno."),extendedExplanation:O(`Multiplying two two-digit numbers uses the same place-value idea, but now both numbers are broken apart. For 23 à 14, split 23 into 20 + 3 and 14 into 10 + 4. This makes four partial products: 20 à 10 = 200, 20 à 4 = 80, 3 à 10 = 30, and 3 à 4 = 12. Add them: 200 + 80 + 30 + 12 = 322. 104 105An area model makes the four products visible. Draw a rectangle 23 long and 14 wide. Split the length into 20 and 3 and the width into 10 and 4, creating four smaller rectangles. Each rectangle's area is one partial product, and the four areas add to the full product. 106 107The standard algorithm is just a shortcut for the same partial products. When you multiply 23 by the 4 ones and then by the 1 ten, you are computing the same four pieces, grouped differently. Estimating first (20 à 10 = 200, or rounding to 20 à 14 â 280) helps you confirm the exact answer of 322 is reasonable.`,`Multiplicar dos números de dos dÃgitos usa la misma idea del valor posicional, pero ahora se separan ambos números. Para 23 à 14, separa 23 en 20 + 3 y 14 en 10 + 4. Esto da cuatro productos parciales: 20 à 10 = 200, 20 à 4 = 80, 3 à 10 = 30 y 3 à 4 = 12. Súmalos: 200 + 80 + 30 + 12 = 322. 108 109Un modelo de área hace visibles los cuatro productos. Dibuja un rectángulo de 23 de largo y 14 de ancho. Separa el largo en 20 y 3 y el ancho en 10 y 4, creando cuatro rectángulos más pequeños. El área de cada rectángulo es un producto parcial, y las cuatro áreas suman el producto completo. 110 111El algoritmo estándar es solo un atajo para los mismos productos parciales. Cuando multiplicas 23 por las 4 unidades y luego por la 1 decena, calculas las mismas cuatro piezas, agrupadas de otra manera. Estimar primero (20 à 10 = 200, o redondear a 20 à 14 â 280) ayuda a confirmar que la respuesta exacta de 322 es razonable.`),activitySteps:[{title:O("Activity 1 â Four-region area model","Actividad 1 â Modelo de área de cuatro regiones"),steps:se(["Pick two 2-digit numbers.","Split each into tens and ones.","Draw a rectangle with four regions and find each partial product.","Add the four partial products to get the total."],["Elige dos números de 2 dÃgitos.","Separa cada uno en decenas y unidades.","Dibuja un rectángulo con cuatro regiones y halla cada producto parcial.","Suma los cuatro productos parciales para obtener el total."])},{title:O("Activity 2 â Two ways, one answer","Actividad 2 â Dos formas, una respuesta"),steps:se(["Solve the same product with partial products.","Solve it again with the standard algorithm.","Check that both methods give the same answer.","Explain how the four partial products appear in the algorithm."],["Resuelve el mismo producto con productos parciales.","Resuélvelo otra vez con el algoritmo estándar.","Comprueba que ambos métodos dan la misma respuesta.","Explica cómo aparecen los cuatro productos parciales en el algoritmo."])}],aiPromptExample:O("Prompt: 'Give me two 2-digit numbers; ask me to multiply them with four partial products and then check with the standard algorithm.'","Indicación: 'Dame dos números de 2 dÃgitos; pÃdeme multiplicarlos con cuatro productos parciales y luego comprobar con el algoritmo estándar.'"),projectSteps:se(["Find a real grid in your life (seats, tiles, a calendar, a garden).","Estimate the total, then multiply the two 2-digit numbers exactly.","Show your work with a four-region area model.","Write a sentence comparing your exact total to your estimate."],["Encuentra una cuadrÃcula real en tu vida (asientos, azulejos, un calendario, un jardÃn).","Estima el total, luego multiplica los dos números de 2 dÃgitos exactamente.","Muestra tu trabajo con un modelo de área de cuatro regiones.","Escribe una oración comparando tu total exacto con tu estimación."]),expectedProduct:O("A page showing a real grid multiplied with a four-region area model, all four partial products, the total, and a comparison to an estimate.","Una página que muestra una cuadrÃcula real multiplicada con un modelo de área de cuatro regiones, los cuatro productos parciales, el total y una comparación con una estimación.")},12:{story:O("A teacher has 47 colored pencils to share equally among 5 art tables. Each table gets the same number, but a few pencils are left over. Finding the quotient and the remainder tells her exactly how many go to each table and how many remain â a question that comes up whenever things are shared.","Una maestra tiene 47 lápices de colores para repartir en partes iguales entre 5 mesas de arte. Cada mesa recibe la misma cantidad, pero sobran algunos lápices. Hallar el cocie
111nte y el residuo le dice exactamente cuántos van a cada mesa y cuántos quedan, una pregunta que surge cada vez que se reparte algo."),extendedExplanation:O(`Division separates an amount into equal groups. The dividend is the amount you start with, the divisor is how many groups (or how big each group is), and the quotient is how many are in each group. When the amount does not divide evenly, the leftover is the remainder. 112 113To find 47 ÷ 5, ask: what is the largest multiple of 5 that is not more than 47? Since 5 à 9 = 45 and 5 à 10 = 50 is too big, the quotient is 9. The remainder is 47 â 45 = 2. We write 47 ÷ 5 = 9 R2. 114 115A remainder is always less than the divisor. If a remainder were equal to or larger than the divisor, you could fit at least one more group, so the quotient would be bigger. You can check any division by multiplying the quotient by the divisor and adding the remainder: 5 à 9 + 2 = 47, which matches the dividend, so the answer is correct.`,`La división separa una cantidad en grupos iguales. El dividendo es la cantidad con la que empiezas, el divisor es cuántos grupos (o qué tan grande es cada grupo) y el cociente es cuántos hay en cada grupo. Cuando la cantidad no se divide exactamente, lo que sobra es el residuo. 116 117Para hallar 47 ÷ 5, pregunta: ¿cuál es el mayor múltiplo de 5 que no supera 47? Como 5 à 9 = 45 y 5 à 10 = 50 es demasiado, el cociente es 9. El residuo es 47 â 45 = 2. Escribimos 47 ÷ 5 = 9 R2. 118 119Un residuo siempre es menor que el divisor. Si un residuo fuera igual o mayor que el divisor, podrÃas formar al menos un grupo más, asà que el cociente serÃa mayor. Puedes comprobar cualquier división multiplicando el cociente por el divisor y sumando el residuo: 5 à 9 + 2 = 47, que coincide con el dividendo, asà que la respuesta es correcta.`),activitySteps:[{title:O("Activity 1 â Share and name the remainder","Actividad 1 â Reparte y nombra el residuo"),steps:se(["Count out a pile of counters for the dividend.","Share them equally into the number of groups.","Count how many are in each group (the quotient) and how many are left (the remainder).","Write the division equation with the remainder."],["Cuenta un montón de fichas para el dividendo.","Repártelas en partes iguales en la cantidad de grupos.","Cuenta cuántas hay en cada grupo (el cociente) y cuántas sobran (el residuo).","Escribe la ecuación de división con el residuo."])},{title:O("Activity 2 â Check by multiplying","Actividad 2 â Comprueba multiplicando"),steps:se(["Solve a division problem that has a remainder.","Multiply the quotient by the divisor.","Add the remainder and confirm it equals the dividend.","Explain why this check works."],["Resuelve un problema de división que tenga residuo.","Multiplica el cociente por el divisor.","Suma el residuo y confirma que es igual al dividendo.","Explica por qué funciona esta comprobación."])}],aiPromptExample:O("Prompt: 'Give me a division problem with a remainder; ask me to solve it and check by multiplying the quotient and adding the remainder.'","Indicación: 'Dame un problema de división con residuo; pÃdeme resolverlo y comprobar multiplicando el cociente y sumando el residuo.'"),projectSteps:se(["Think of a real sharing situation (snacks, cards, supplies).","Write a division problem that comes out with a remainder.","Solve it, showing the quotient and the remainder.","Write one sentence saying what the remainder means in your story."],["Piensa en una situación real de reparto (meriendas, cartas, materiales).","Escribe un problema de división que dé un residuo.","Resuélvelo, mostrando el cociente y el residuo.","Escribe una oración que diga qué significa el residuo en tu historia."]),expectedProduct:O("A 'remainder story' page with a real sharing problem solved into a quotient and remainder, plus a sentence interpreting the remainder.","Una página de 'historia con residuo' con un problema real de reparto resuelto en cociente y residuo, además de una oración que interpreta el residuo.")},13:{story:O("A warehouse must pack 248 books equally into 4 boxes. Counting them out one by one would take forever, so workers divide: 248 ÷ 4. Breaking the dividend into place-value parts makes even big division quick, which is how shipping centers and libraries keep things organized.","Un almacén debe empacar 248 libros en partes iguales en 4 cajas. Contarlos uno por uno tomarÃa una eternidad, asà que los trabajadores divi
119den: 248 ÷ 4. Separar el dividendo en partes por valor posicional hace que incluso la división grande sea rápida, y asà los centros de envÃo y las bibliotecas se mantienen organizados."),extendedExplanation:O(`Dividing larger numbers is easier when you break the dividend into friendly place-value parts. For 248 ÷ 4, split 248 into 240 + 8. Then divide each part: 240 ÷ 4 = 60 and 8 ÷ 4 = 2. Add the partial quotients: 60 + 2 = 62. 120 121Choosing the parts wisely matters. You want parts that divide evenly by the divisor. For 936 ÷ 3, split into 900 + 30 + 6: 900 ÷ 3 = 300, 30 ÷ 3 = 10, and 6 ÷ 3 = 2, giving 312. Thinking in place value â '60 tens ÷ 5 = 12 tens' â connects division to the same base-ten structure as multiplication. 122 123This 'partial quotients' approach is the meaning behind long division: you peel off the biggest easy chunk you can divide, record that part of the answer, then divide what is left. Estimating first (248 ÷ 4 is about 240 ÷ 4 = 60) gives a target so you can tell whether your exact quotient is reasonable.`,`Dividir números mayores es más fácil cuando separas el dividendo en partes amigables por valor posicional. Para 248 ÷ 4, separa 248 en 240 + 8. Luego divide
123cada parte: 240 ÷ 4 = 60 y 8 ÷ 4 = 2. Suma los cocientes parciales: 60 + 2 = 62. 124 125Elegir bien las partes importa. Quieres partes que se dividan exactamente entre el divisor. Para 936 ÷ 3, separa en 900 + 30 + 6: 900 ÷ 3 = 300, 30 ÷ 3 = 10 y 6 ÷ 3 = 2, dando 312. Pensar en valor posicional â'60 decenas ÷ 5 = 12 decenas'â conecta la división con la misma estructura de base diez que la multiplicación. 126 127Este enfoque de 'cocientes parciales' es el significado detrás de la división larga: quitas el mayor trozo fácil que puedes dividir, registras esa parte de la respuesta y luego divides lo que queda. Estimar primero (248 ÷ 4 es cerca de 240 ÷ 4 = 60) da un objetivo para saber si tu cociente exacto es razonable.`),activitySteps:[{title:O("Activity 1 â Break and divide","Actividad 1 â Separa y divide"),steps:se(["Choose a 3-digit dividend and a 1-digit divisor.","Break the dividend into place-value parts that divide evenly.","Divide each part and write the partial quotients.","Add the partial quotients to get the answer."],["Elige un dividendo de 3 dÃgitos y un divisor de 1 dÃgito.","Separa el dividendo en partes por valor posicional que se dividan exactamente.","Divide cada parte y escribe los cocientes parciales.","Suma los cocientes parciales para obtener la respuesta."])},{title:O("Activity 2 â Estimate and check","Actividad 2 â Estima y comprueba"),steps:se(["Estimate the quotient before dividing.","Divide exactly using partial quotients.","Multiply your quotient by the divisor to check.","Compare your answer to the estimate and explain."],["Estima el cocie
127nte antes de dividir.","Divide exactamente usando cocientes parciales.","Multiplica tu cociente por el divisor para comprobar.","Compara tu respuesta con la estimación y explica."])}],aiPromptExample:O("Prompt: 'Give me a 3-digit by 1-digit division; ask me to break the dividend into place-value parts, divide, and check.'","Indicación: 'Dame una división de 3 dÃgitos entre 1 dÃgito; pÃdeme separar el dividendo en partes por valor posicional, dividir y comprobar.'"),projectSteps:se(["Pick a real packing or sharing job with a 3-digit total.","Write a division problem and estimate the quotient.","Solve it by breaking the dividend into place-value parts.","Check your answer by multiplying, and compare to your estimate."],["Elige una tarea real de empaque o reparto con un total de 3 dÃgitos.","Escribe un problema de división y estima el cociente.","Resuélvelo separando el dividendo en partes por valor posicional.","Comprueba tu respuesta multiplicando, y compárala con tu estimación."]),expectedProduct:O("A 'division lab' page solving a 3-digit division with partial quotients, an estimate, a multiplication check, and a comparison.","Una página de 'laboratorio de división' que resuelve una división de 3 dÃgitos con cocientes parciales, una estimación, una comprobación con multiplicación y una comparación.")},14:{story:O("A school orders 6 boxes of 24 markers, then shares them equally among 8 classrooms. Answering 'how many markers per classroom?' takes two steps: multiply to find the total, then divide to share it. Multi-step problems like this are how schools, stores, and families plan real purchases.","Una escuela pide 6 cajas de 24 marcadores, luego los reparte en partes iguales entre 8 aulas. Responder '¿cuántos marcadores por aula?' toma dos pasos: multiplicar para hallar el total y luego dividir para repartirlo. Los problemas de varios pasos como este son la forma en que escuelas, tiendas y familias planifican compras reales."),extendedExplanation:O(`Multi-step problems combine operations, so a plan helps. First, understand the question and what each number means. Next, represent each step with an equation, using a letter for the unknown. The
127n solve one step at a time, keeping track of what each answer represents. Finally, check that the result is reasonable using estimation. 128 129For the markers: 6 à 24 = 144 markers in all, then 144 ÷ 8 = 18 markers per classroom. The first answer (144) becomes the dividend in the second step, so labeling each number prevents mix-ups. 130 131Remainders need interpretation in context. If 290 students each need a seat on buses that hold 48, then 290 ÷ 48 = 6 R2. You cannot leave 2 students behind, so you round up to 7 buses. In other problems you might drop the remainder or report it directly. Estimating (6 à 24 â 6 à 25 = 150) confirms that the exact total of 144 is reasonable.`,`Los problemas de varios pasos combinan operaciones, asà que un plan ayuda. Primero, comprende la pregunta y qué significa cada número. Luego, representa cada paso con una ecuación, usando una letra para la incógnita. Después resuelve un paso a la vez, recordando qué representa cada respuesta. Por último, comprueba que el resultado sea razonable usando la estimación. 132 133Para los marcadores: 6 à 24 = 144 marcadores en total, luego 144 ÷ 8 = 18 marcadores por aula. La primera respuesta (144) se convierte en el dividendo del segundo paso, asà que etiquetar cada número evita confusiones. 134 135Los residuos necesitan interpretación según el contexto. Si 290 estudiantes necesitan un asiento en autobuses que llevan 48, entonces 290 ÷ 48 = 6 R2. No puedes dejar a 2 estudiantes, asà que redondeas hacia arriba a 7 autobuses. En otros problemas podrÃas descartar el residuo o reportarlo directamente. Estimar (6 à 24 â 6 à 25 = 150) confirma que el total exacto de 144 es razonable.`),activitySteps:[{title:O("Activity 1 â Plan the two steps","Actividad 1 â Planifica los dos pasos"),steps:se(["Read a two-step problem and underline what each number means.","Write an equation for step one using a letter for the unknown.","Use the first answer to write and solve step two.","Label your final answer with what it represents."],["Lee un problema de dos pasos y subraya qué significa cada número.","Escribe una ecuación para el primer paso usando una letra para la incógnita.","Usa la primera respuesta para escribir y resolver el segundo paso.","Etiqueta tu respuesta final con lo que representa."])},{title:O("Activity 2 â Interpret the remainder","Actividad 2 â Interpreta el residuo"),steps:se(["Solve a division problem that has a remainder in a real context.","Decide whether to round up, drop, or use the remainder.","Write the final answer that fits the situation.","Explain why your choice about the remainder makes sense."],["Resuelve un problema de división con residuo en un contexto real.","Decide si redondear hacia arriba, descartar o usar el residuo.","Escribe la respuesta final que se ajuste a la situación.","Explica por qué tu decisión sobre el residuo tiene sentido."])}],aiPromptExample:O("Prompt: 'Give me a two-step word problem that uses multiplication and division; ask me to solve it and interpret any remainder.'","Indicación: 'Dame un problema de dos pasos que use multiplicación y división; pÃdeme resolverlo e interpretar cualquier residuo.'"),projectSteps:se(["Plan a real event that needs buying in groups and sharing out (supplies, snacks, seats).","Write a two-step problem that uses both multiplication and division.","Solve it step by step, labeling each number.","Interpret any remainder and check your total with an estimate."],["Planifica un evento real que requiera comprar en grupos y repartir (materiales, meriendas, asientos).","Escribe un problema de dos pasos que use multiplicación y división.","Resuélvelo paso a paso, etiquetando cada número.","Interpreta cualquier residuo y comprueba tu total con una estimación."]),expectedProduct:O("A 'plan-an-event' page with a two-step problem solved with labeled steps, an interpreted remainder, and a reasonableness check.","Una página de 'organiza un evento' con un problema de dos pasos resuelto con pasos etiquetados, un residuo interpretado y una comprobación de razonabilidad.")},15:{story:O("A gardener wants to plant 12 flowers in equal rows. She can make 1 row of 12, 2 rows of 6, or 3 rows of 4 â these are the factor pairs of 12. Knowing factors and multiples helps with arranging arrays, splitting groups fairly, and spotting number relationships everywhere.","Una jardinera quiere plantar 12 flores en filas iguales. Puede hacer 1 fila de 12, 2 filas de 6 o 3 filas de 4: estos son los pares de factores de 12. Conocer factores y múltiplos ayuda a organizar matrices, dividir grupos de forma justa y detectar relaciones numéricas en todas partes."),extendedExplanation:O(`A factor of a number divides it evenly, with no remainder. To find all factor pairs of a number, start at 1 and work upward, checking each number: 1 à 12, 2 à 6, 3 à 4. Once the pairs start to repeat, you have them all. So the factors of 12 are 1, 2, 3, 4, 6, and 12. 136 137A multiple of a number is the product of that number and any whole number. The multiples of 6 are 6, 12, 18, 24, 30, ⦠â what you say
137when you skip count by 6. Multiples go on forever, while factors are limited. 138 139Factors and multiples are two sides of the same relationship. Because 3 à 4 = 12, we say 3 and 4 are factors of 12, and 12 is a multiple of both 3 and 4. An array shows this clearly: a rectangle of 3 rows and 4 columns has 12 squares, so its side lengths (3 and 4) are factors and its total (12) is a multiple of each side.`,`Un factor de un número lo divide exactamente, sin residuo. Para hallar todos los pares de factores de un número, empieza en 1 y avanza hacia arriba, revisando cada número: 1 à 12, 2 à 6, 3 à 4. Cuando los pares comienzan a repetirse, ya los tienes todos. AsÃ, los factores de 12 son 1, 2, 3, 4, 6 y 12. 140 141Un múltiplo de un número es el producto de ese número por cualquier número entero. Los múltiplos de 6 son 6, 12, 18, 24, 30, ⦠âlo que dices al contar salteado de 6 en 6. Los múltiplos siguen para siempre, mientras que los factores son limitados. 142 143Los factores y los múltiplos son dos caras de la misma relación. Como 3 à 4 = 12, decimos que 3 y 4 son factores de 12, y 12 es múltiplo tanto de 3 como de 4. Una matriz lo muestra con claridad: un rectángulo de 3 filas y 4 columnas tiene 12 cuadrados, asà que las longitudes de sus lados (3 y 4) son factores y su total (12) es un múltiplo de cada lado.`),activitySteps:[{title:O("Activity 1 â Find every factor pair","Actividad 1 â Halla cada par de factores"),steps:se(["Choose a number from 1 to 100.","Start at 1 and test each number for divisibility.","Record every factor pair you find as a rectangle (array).","List all the factors in order."],["Elige un número del 1 al 100.","Empieza en 1 y prueba la divisibilidad de cada número.","Registra cada par de factores que encuentres como un rectángulo (matriz).","Enumera todos los factores en orden."])},{title:O("Activity 2 â Skip-count multiples","Actividad 2 â Cuenta salteado los múltiplos"),steps:se(["Choose a number and skip count to list its first eight multiples.","Circle a multiple that is also a multiple of another number.","Explain how a factor and a multiple are related.","Write one sentence using both words correctly."],["Elige un número y cuenta salteado para enumerar sus primeros ocho múltiplos.","Encierra un múltiplo que también sea múltiplo de otro número.","Explica cómo se relacionan un factor y un múltiplo.","Escribe una oración usando ambas palabras correctamente."])}],aiPromptExample:O("Prompt: 'Give me a number from 1 to 100; ask me to list all its factor pairs and its first five multiples.'","Indicación: 'Dame un número del 1 al 100; pÃdeme enumerar todos sus pares de factores y sus primeros cinco múltiplos.'"),projectSteps:se(["Choose a number and draw every array (factor pair) it allows.","List all of its factors below the arrays.","List the first eight multiples of the same number.","Write a sentence explaining the difference between factors and multiples."],["Elige un número y dibuja cada matriz (par de factores) que permita.","Enumera todos sus factores debajo de las matrices.","Enumera los primeros ocho múltiplos del mismo número.","Escribe una oración que explique la diferencia entre factores y múltiplos."]),expectedProduct:O("An 'explorer' page showing every factor-pair array for a chosen number, its full factor list, its first multiples, and an explanation.","Una página de 'explorador' que muestra cada matriz de pares de factores de un número elegido, su lista completa de factores, sus primeros múltiplos y una explicación.")},16:{story:O("Codes that keep messages and money safe online are built from prime numbers â numbers that can only be split into 1 and themselves. Learning to tell primes from composites is the first step toward understanding the building blocks that all other whole numbers are made from.","Los códigos que mantienen seguros los mensajes y el dinero en lÃnea se construyen con números primos: números que solo se pueden separar en 1 y ellos mismos. Aprender a distinguir primos de compuestos es el primer paso para comprender los bloques con los que se forman todos los demás números enteros."),extendedExplanation:O(`Every whole number greater than 1 is either prime or composite. A prime number has exactly two factors: 1 and itself. The first primes are 2, 3, 5, 7, 11, 13, 17, and 19. A composite number has more than two factors; for example, 12 has the factors 1, 2, 3, 4, 6, and 12. 144 145The number 1 is neither prime nor composite, because it has only one factor â itself. The number 2 is special: it is the only even prime, since every other even number has 2 as an extra factor. 146 147To classify a number, look for factors other than 1 and itself. Quick divisibility checks help: even numbers (except 2) are composite; numbers whose digits add to a multiple of 3 are divisible by 3; numbers ending in 0 or 5 are divisible by 5. If you find even one extra factor, the number is composite. If you test the small primes and none divide it, the number is prime. For 51, the digits 5 + 1 = 6 is a multiple of 3, so 3 divides 51 (51 = 3 à 17) â it is composite.`,`Todo número entero mayor que 1 es primo o compuesto. Un número primo tiene exactamente dos factores: 1 y él mismo. Los primeros primos
147son 2, 3, 5, 7, 11, 13, 17 y 19. Un número compuesto tiene más de dos factores; por ejemplo, 12 tiene los factores 1, 2, 3, 4, 6 y 12. 148 149El número 1 no es ni primo ni compuesto, porque solo tiene un factor: él mismo. El número 2 es especial: es el único primo par, ya que todo otro número par tiene al 2 como factor adicional. 150 151Para clasificar un número, busca factores distintos de 1 y de sà mismo. Las pruebas rápidas de divisibilidad ayudan: los números pares (excepto el 2) son compuestos; los números cuyos dÃgitos suman un múltiplo de 3 son divisibles entre 3; los números que terminan en 0 o 5 son divisibles entre 5. Si encuentras aunque sea un factor adicional, el número es compuesto. Si pruebas los primos pequeños y ninguno lo divide, el número es primo. Para 51, los dÃgitos 5 + 1 = 6 es un múltiplo de 3, asà que 3 divide a 51 (51 = 3 à 17): es compuesto.`),activitySteps:[{title:O("Activity 1 â Factor test","Actividad 1 â Prueba de factores"),steps:se(["Choose a number between 2 and 50.","List all of its factors.","Decide if it is prime (two factors) or composite (more than two).","Write the classification and the factors that prove it."],["Elige un número entre 2 y 50.","Enumera todos sus factores.","Decide si es primo (dos factores) o compuesto (más de dos).","Escribe la clasificación y los factores que lo demuestran."])},{title:O("Activity 2 â Divisibility detective","Actividad 2 â Detective de divisibilidad"),steps:se(["Pick a 2-digit number.","Use rules for 2, 3, 5, and 10 to test for factors.","Find a factor or show that none of the small primes divide it.","Conclude whether the number is prime or composite."],["Elige un número de 2 dÃgitos.","Usa las reglas del 2, 3, 5 y 10 para buscar factores.","Encuentra un factor o muestra que ningún primo pequeño lo divide.","Concluye si el número es primo o compuesto."])}],aiPromptExample:O("Prompt: 'Give me a number from 1 to 100; ask me to decide if it is prime or composite and to list its factors to prove it.'","Indicación: 'Dame un número del 1 al 100; pÃdeme decidir si es primo o compuesto y enumerar sus factores para demostrarlo.'"),projectSteps:se(["Make a chart of the numbers 1 to 50.","Mark each number as prime, composite, or neither.","Highlight all the prime numbers you found.","Write a short note explaining how you tested a tricky number."],["Haz una tabla con los números del 1 al 50.","Marca cada número como primo, compuesto o ninguno.","Resalta todos los números primos que encontraste.","Escribe una nota breve explicando cómo probaste un número difÃcil."]),expectedProduct:O("A 1â50 chart classifying each number as prime, composite, or neither, with primes highlighted and a note on a tricky case.","Una tabla del 1 al 50 que clasifica cada número como primo, compuesto o ninguno, con los primos resaltados y una nota sobre un caso difÃcil.")},17:{story:O("A staircase adds the same number of steps on each level, and a calendar repeats every seven days. Patterns are everywhere, and once you know the rule, you can predict what comes next â and even spot surprises the rule never spelled out.","Una escalera agrega la misma cantidad de escalones en cada nivel, y un calendario se repite cada siete dÃas. Los patrones están en todas partes, y una vez que conoces la regla, puedes predecir lo que sigue, e incluso detectar sorpresas que la regla nunca mencionó."),extendedExplanation:O(`A pattern is a sequence that follows a rule. To generate a number pattern, start with a first term and apply the rule repeatedly. With the rule 'add 5' starting at 3, you get 3, 8, 13, 18, 23, ⦠Each term is called a term, and the rule tells how to get from one term to the next. 152 153Patterns often have hidden features the rule never stated directly. In 3, 8, 13, 18, 23, the ones digits alternate 3, 8, 3, 8 â a feature that comes from adding 5 each time. In the pattern 2, 4, 6, 8, every term is even, because you add an even number to an even start. Noticing these features is a powerful way to understand structure. 154 155Patterns can also be made of shapes. A repeating shape pattern â triangle, square, triangle, square â follows the rule 'alternate two shapes,' and you can predict the tenth shape by extending the rule. Whether numbers or shapes, the same thinking applies: find the rule, extend it carefully, and look for features that were not explicitly given.`,`Un patrón es una secuencia que sigue una regla. Para generar un patrón numérico, comienza con un primer término y aplica la regla repetidamente. Con la regla 'sumar 5' empezando en 3, obtienes 3, 8, 13, 18, 23, ⦠Cada número se llama término, y la regla indica cómo pasar de un término al siguiente. 156 157Los patrones a menudo tienen caracterÃsticas ocultas que la regla nunca indicó directamente. En 3, 8, 13, 18, 23, los dÃgitos de las unidades alternan 3, 8, 3, 8: una caracterÃstica que surge de sumar 5 cada vez. En el patrón 2, 4, 6, 8, cada término es par, porque sumas un número par a un inicio par. Notar estas caracterÃsticas es una forma poderosa de comprender la estructura. 158 159Los patrones también pueden estar hechos de figuras. Un patrón de figuras que se repite âtriángulo, cuadrado, triángulo, cuadradoâ sigue la regla 'alternar dos figuras,' y puedes predecir la décima figura extendiendo la regla. Ya sean números o figuras, se aplica el mismo razonamiento: halla la regla, extiéndela con cuidado y busca caracterÃsticas que no se dieron explÃcitamente.`),activitySteps:[{title:O("Activity 1 â Generate and extend","Actividad 1 â Genera y extiende"),steps:se(["Choose a starting number and a rule (like 'add 4').","Write the first six terms of the pattern.","Extend the pattern two more terms.","Double-check each step follows the rule exactly."],["Elige un número inicial y una regla (como 'sumar 4').","Escribe los primeros seis términos del patrón.","Extiende el patrón dos términos más.","Verifica que cada paso siga la regla exactamente."])},{title:O("Activity 2 â Find the hidden feature","Actividad 2 â Encuentra la caracterÃstica oculta"),steps:se(["Look at the pattern you generated.","Find a feature the rule did n
159ot directly state (even/odd, last digit, multiples).","Describe the feature in a sentence.","Explain why the rule causes that feature."],["Observa el patrón que generaste.","Encuentra una caracterÃstica que la regla no indicó directamente (par/impar, último dÃgito, múltiplos).","Describe la caracterÃstica en una oración.","Explica por qué la regla causa esa caracterÃstica."])}],aiPromptExample:O("Prompt: 'Give me a starting number and a rule; ask me to write the first six terms and describe one hidden feature of the pattern.'","Indicación: 'Dame un número inicial y una regla; pÃdeme escribir los primeros seis términos y describir una caracterÃstica oculta del patrón.'"),projectSteps:se(["Invent a number pattern with a clear rule and a shape pattern that repeats.","Write the first several terms of each pattern.","Find and label one hidden feature in the number pattern.","Write a short explanation of why that feature appears."],["Inventa un patrón numérico con una regla clara y un patrón de figuras que se repita.","Escribe los primeros términos de cada patrón.","Encuentra y etiqueta una caracterÃstica oculta en el patrón numérico.","Escribe una breve explicación de por qué aparece esa caracterÃstica."]),expectedProduct:O("A 'pattern detective' page with a number pattern and a shape pattern, each rule stated, plus one labeled hidden feature and its explanation.","Una página de 'detective de patrones' con un patrón numérico y uno de figuras, cada regla indicada, además de una caracterÃstica oculta etiquetada y su explicación.")},18:{story:O("Unit 2 gave you the engine of arithmetic: multiplying and dividing multi-digit numbers, breaking numbers into factors, telling primes from composites, and reading the rules behind patterns. Real challenges use several of these at once, so this week you put the whole toolkit to work.","La Unidad 2 te dio el motor de la aritmética: multiplicar y dividir números de varios dÃgitos, separar números en factores, distinguir primos de compuestos y leer las reglas detrás de los patrones. Los retos reales usan varias de estas a la vez, asà que esta semana pones a trabajar toda la caja de herramientas."),extendedExplanation:O(`Unit 2 built a connected set of skills for multiplication, division, and number relationships. You can multiply multi-digit numbers using place value and area models; divide with quotients and remainders using partial quotients; find all factor pairs of a number and list its multiples; classify numbers as prime or composite; and generate and analyze patterns from a rule. 160 161Real problems combine these skills. You might multiply to find a total, divide to share it, use factors to arrange it into equal groups, and notice a pattern in the results â all in one task. The key is to plan, show each step, label what every number represents, and interpret any remainder in context. 162 163Good mathematicians always check their work. Estimating before computing gives a target; explaining your reasoning in words makes errors easier to catch; checking a division by multiplying back confirms the answer; and asking 'does this make sense?' guards against mistakes. These habits â precision, reasoning, and reasonableness â carry forward into Unit 3, where you will work with fractions and decimals.`,`La Unidad 2 construyó un conjunto conectado de destrezas para la multiplicación, la división y las relaciones numéricas. Puedes multiplicar números de varios dÃgitos usando el valor posicional y los modelos de área; dividir con cocientes y residuos usando cocientes parciales; hallar todos los pares de factores de un número y enumerar sus múltiplos; clasificar números como primos o compuestos; y generar y analizar patrones a partir de una regla. 164 165Los problemas reales combinan estas destrezas. PodrÃas multiplicar para hallar un total, dividir para repartirlo, usar factores para organizarlo en grupos iguales y notar un patrón en los resultados, todo en una tarea. La clave es planificar, mostrar cada paso, etiquetar qué representa cada número e interpretar cualquier residuo en el contexto. 166 167Los buenos matemáticos siempre comprueban su trabajo. Estimar antes de calcular da un objetivo; explicar tu razonamiento con palabras facilita detectar errores; comprobar una división multiplicando de vuelta confirma la respuesta; y preguntar '¿tiene sentido esto?' protege contra equivocaciones. Estos hábitos âprecisión, razonamiento y razonabilidadâ continúan en la Unidad 3, donde trabajarás con fracciones y decimales.`),activitySteps:[{title:O("Activity 1 â Mixed-review challenge","Actividad 1 â Reto de repaso mixto"),steps:se(["Work a set of problems covering multiplication, division, factors, primes, and patterns.","Show your steps for each problem.","Estimate or check at least two of your answers.","Mark which Unit 2 skill each problem used."],["Resuelve un conjunto de problemas que cubra multiplicación, división, factores, primos y patrones.","Muestra tus pasos en cada problema.","Estima o comprueba al menos dos de tus respuestas.","Marca qué destreza de la Unidad 2 usó cada problema."])},{title:O("Activity 2 â Explain your thinking","Actividad 2 â Explica tu razonamiento"),steps:se(["Choose one multi-step problem to solve carefully.","Write a clear explanation of each step in words.","Interpret any remainder and justify why your answer is reasonable.","Trade with a partner and g
167ive one piece of helpful feedback."],["Elige un problema de varios pasos para resolver con cuidado.","Escribe una explicación clara de cada paso con palabras.","Interpreta cualquier residuo y justifica por qué tu respuesta es razonable.","Intercambia con un compañero y da una retroalimentación útil."])}],aiPromptExample:O("Prompt: 'Give me a multi-step problem that uses multiplication, division, and a factor or pattern; then check my solution step by step.'","Indicación: 'Dame un problema de varios pasos que use multiplicación, división y un factor o patrón; luego revisa mi solución paso a paso.'"),projectSteps:se(["Create a one-page 'math showcase' that uses at least four Unit 2 skills.","Include one multi-digit multiplication and one division with a remainder.","Include a factor pair or prime/composite classification and a pattern.","Write a short reflection on which skill you are most confident in and why."],["Crea una 'exhibición matemática' de una página que use al menos cuatro destrezas de la Unidad 2.","Incluye una multiplicación de varios dÃgitos y una división con residuo.","Incluye un par de factores o una clasificación primo/compuesto y un patrón.","Escribe una breve reflexión sobre qué destreza dominas más y por qué."]),expectedProduct:O("A one-page Unit 2 showcase combining a multiplication, a division with a remainder, a factor or prime/composite example, a pattern, and a short reflection.","Una exhibición de la Unidad 2 de una página que combina una multiplicación, una división con residuo, un ejemplo de factor o primo/compuesto, un patrón y una breve reflexión.")},19:{story:O("When you and a friend split a chocolate bar, you might cut it into 2 pieces or 4 pieces â but half is half either way. Pizza shops, builders, and musicians all rely on the fact that 1/2, 2/4, and 4/8 name the very same amount. Understanding equivalent fractions is what lets us trade between different-sized pieces without ever losing or gaining a thing.","Cuando tú y un amigo reparten una barra de chocolate, podrÃan cortarla en 2 trozos o en 4 trozos, pero la mitad es la mitad de cualquier forma. Las pizzerÃas, los constructores y los músicos confÃan en que 1/2, 2/4 y 4/8 nombran exactamente la misma cantidad. Comprender las fracciones equivalentes es lo que nos permite intercambiar entre trozos de distinto tamaño sin perder ni ganar nada."),extendedExplanation:O(`A fraction names equal parts of a whole. The denominator (bottom number) tells how many equal parts the whole is split into, and the numerator (top number) tells how many of those parts you have. So 3/4 means the whole is in 4 equal parts and you have 3 of them. 168 169Two fractions are equivalent when they name the same amount even though the numbers look different. On a number line, equivalent fractions land on exactly the same point. 1/2, 2/4, and 4/8 all sit halfway between 0 and 1. 170 171You can build an equivalent fraction by multiplying the numerator and denominator by the same number. Multiplying by 2/2, 3/3, or 4/4 is really multiplying by 1, which never changes a value â it just slices each existing piece into more equal parts. That is
171why 1/3 = 2/6 = 3/9: each step cuts the thirds into smaller, equal pieces while the total stays the same.`,`Una fracción nombra partes iguales de un entero. El denominador (número de abajo) indica en cuántas partes iguales se divide el entero, y el numerador (número de arriba) indica cuántas de esas partes tienes. AsÃ, 3/4 significa que el entero está en 4 partes iguales y tienes 3 de ellas. 172 173Dos fracciones son equivalentes cuando nombran la misma cantidad aunque los números se vean diferentes. En una recta numérica, las fracciones equivalentes caen exactamente en el mismo punto. 1/2, 2/4 y 4/8 se ubican todas a la mitad entre 0 y 1. 174 175Puedes crear una fracción equivalente multiplicando el numerador y el denominador por el mismo número. Multiplicar por 2/2, 3/3 o 4/4 es en realidad multiplicar por 1, lo que nunca cambia un valor: solo divide cada trozo existente en más partes iguales. Por eso 1/3 = 2/6 = 3/9: cada paso corta los tercios en trozos más pequeños e iguales mientras el total se mantiene.`),activitySteps:[{title:O("Activity 1 â Fold to find equals","Actividad 1 â Dobla para hallar iguales"),steps:se(["Fold a paper strip in half and shade 1/2.","Fold the same strip again to make fourths, then eighths.","Notice the shaded part is still the same length: 1/2 = 2/4 = 4/8.","Write the equivalent fractions you found."],["Dobla una tira de papel a la mitad y sombrea 1/2.","Dobla la misma tira otra vez para hacer cuartos, luego octavos.","Observa que la parte sombreada sigue midiendo lo mismo: 1/2 = 2/4 = 4/8.","Escribe las fracciones equivalentes que hallaste."])},{title:O("Activity 2 â Multiply to build equals","Actividad 2 â Multiplica para construir iguales"),steps:se(["Choose a fraction such as 2/3.","Multiply the numerator and denominator by 2, then by 3.","Record the equivalent fractions (4/6, 6/9).","Explain why multiplying top and bottom by the same number keeps the value."],["Elige una fracción como 2/3.","Multiplica el numerador y el denominador por 2, luego por 3.","Registra las fracciones equivalentes (4/6, 6/9).","Explica por qué multiplicar arriba y abajo por el mismo número mantiene el valor."])}],aiPromptExample:O("Prompt: 'Give me a fraction and ask me to write two equivalent fractions, then check whether mine are correct.'","Indicación: 'Dame una fracción y pÃdeme escribir dos fracciones equivalentes, luego revisa si las mÃas son correctas.'"),projectSteps:se(["Choose three fractions (such as 1/2, 2/3, 3/4).","For each one, draw a model and write two equivalent fractions.","Show on a number line that each pair lands on the same point.","Write one sentence explaining what makes fractions equivalent."],["Elige tres fracciones (como 1/2, 2/3, 3/4).","Para cada una, dibuja un modelo y escribe dos fracciones equivalentes.","Muestra en una recta numérica que cada par cae en el mismo punto.","Escribe una oración que explique qué hace equivalentes a las fracciones."]),expectedProduct:O("An equivalent-fractions poster showing three fractions, each with a model, two equivalents, and a number-line check.","Un cartel de fracciones equivalentes que muestra tres fracciones, cada una con un modelo, dos equivalentes y una comprobación en la recta numérica.")},20:{story:O("A baker's recipe calls for 6/8 cup of sugar, but her measuring cup is marked in fourths. She does not panic â she knows 6/8 simplifies to 3/4, so she fills the 3/4 line exactly. Writing fractions in simplest form turns awkward numbers into ones we can actually use.","La receta de una panadera pide 6/8 de taza de azúcar, pero su taza medidora está marcada en cuartos. No se preocupa: sabe que 6/8 se simplifica a 3/4, asà que llena exactamente la lÃnea de 3/4. Escribir fracciones en su forma más simple convierte números incómodos en números que sà podemos usar."),extendedExplanation:O(`Building equivalent fractions by multiplying makes the numbers bigger. Going the other direction â making the numbers smaller â is called simplifying, and it uses division instead of multiplication. 176 177To simplify, find a common factor: a number that divides both the numerator and the denominator evenly. Divide both by that factor. For 6/8, both 6 and 8 are divisible by 2, so 6/8 = 3/4. If you had used a smaller common factor, you might need to simplify again until no common factor but 1 remains. 178 179A fraction is in simplest form when the only number that divides both the numerator and denominator is 1. Simplest form does not change the value â 6/8 and 3/4 are equivalent â it just uses the smallest possible numbers, which makes fractions easier to compare, measure, and understand.`,`Construir fracciones equivalentes multiplicando hace los números más grandes. Ir en la otra dirección âhacer los números más pequeñosâ se llama simplificar, y usa la división en lugar de la multiplicación. 180 181Para simplificar, halla un factor común: un número que divida exactamente tanto el numerador como el denominador. Divide ambos entre ese factor. Para 6/8, tanto 6 como 8 son divisibles entre 2, asà que 6/8 = 3/4. Si hubieras usado un factor común más pequeño, podrÃas necesitar simplificar otra vez hasta que no quede más factor común que 1. 182 183Una fracción está en su forma más simple cuando el único número que divide tanto el numerador como el denominador es 1. La forma más simple no cambia el valor â6/8 y 3/4 son equivalentesâ, solo usa los números más pequeños posibles, lo que hace las fracciones más fáciles de comparar, medir y entender.`),activitySteps:[{title:O("Activity 1 â Simplify with common factors","Actividad 1 â Simplifica con factores comunes"),steps:se(["Pick a fraction that is not in simplest form, like 8/12.","List factors of the numerator and denominator.","Divide both by a common factor until only 1 is shared.","Write the simplest form and check it equals the original."],["Elige una fracción que no esté en su forma más simple, como 8/12.","Enumera los factores del numerador y del denominador.","Divide ambos entre un factor común hasta que solo compartan el 1.","Escribe la forma más simple y comprueba que es igual a la original."])},{title:O("Activity 2 â Equivalent fraction chain","Actividad 2 â Cadena de fracciones equivalentes"),steps:se(["Start with a simple fraction like 1/4.","Multiply up to make a chain: 2/8, 3/12, 4/16.","Then simplify each back down to 1/4.","Explain how multiplying and divi
183ding are opposite moves."],["Comienza con una fracción simple como 1/4.","Multiplica hacia arriba para hacer una cadena: 2/8, 3/12, 4/16.","Luego simplifica cada una de vuelta a 1/4.","Explica cómo multiplicar y dividir son movimientos opuestos."])}],aiPromptExample:O("Prompt: 'Give me a fraction that is not in simplest form; ask me to simplify it and name the common factor I used.'","Indicación: 'Dame una fracción que no esté en su forma más simple; pÃdeme simplificarla y nombrar el factor común que usé.'"),projectSteps:se(["Make a set of fraction cards, some in simplest form and some not.","Sort them into 'already simplest' and 'can be simplified.'","Simplify the ones that can be, showing the common factor.","Write a short rule for how to know a fraction is in simplest form."],["Haz un conjunto de tarjetas de fracciones, algunas en su forma más simple y otras no.","ClasifÃcalas en 'ya está más simple' y 'se puede simplificar.'","Simplifica las que se puedan, mostrando el factor común.","Escribe una regla breve para saber cuándo una fracción está en su forma más simple."]),expectedProduct:O("A sorting game with fraction cards grouped by simplest form, with each simplification showing the common factor used.","Un juego de clasificación con tarjetas de fracciones agrupadas por forma más simple, donde cada simplificación muestra el factor común usado.")},21:{story:O("Two teammates each ate part of a granola bar â one ate 2/3, the other ate 3/5. Who ate more? You cannot tell just by looking, because the pieces are different sizes. Comparing fractions fairly is how referees, cooks, and scientists decide which amount is really greater.","Dos compañeros de equipo comieron parte de una barra de granola: uno comió 2/3 y el otro 3/5. ¿Quién comió más? No se puede saber solo con mirar, porque los trozos son de distinto tamaño. Comparar fracciones de forma justa es como los árbitros, los cocineros y los cientÃficos deciden qué cantidad es realmente mayor."),extendedExplanation:O(`To compare two fractions, you must compare equal-sized pieces. There are two reliable strategies. 184 185The first is to rewrite both fractions with a common denominator. For 2/3 and 3/5, a common denominator is 15: 2/3 = 10/15 and 3/5 = 9/15. Now the pieces are the same size, and 10 of them is more than 9, so 2/3 > 3/5. 186 187The second is to compare to a benchmark like 1/2 or 1. 3/8 is less than 1/2 (since half of 8 is 4), while 5/8 is more than 1/2, so 5/8 is greater without any extra arithmetic. 188 189Two quick patterns help too. With the same denominator, the larger numerator wins (5/8 > 3/8). With the same numerator, the smaller denominator wins, because fewer pieces means each piece is bigger (5/6 > 5/8). Always remember: comparing only makes sense when you are comparing the same whole.`,`Para comparar dos fracciones, debes comparar trozos del mismo tamaño. Hay dos estrategias confiables. 190 191La primera es reescribir ambas fracciones con un denominador común. Para 2/3 y 3/5, un denominador común es 15: 2/3 = 10/15 y 3/5 = 9/15. Ahora los trozos son del mismo tamaño, y 10 de ellos es más que 9, asà que 2/3 > 3/5. 192 193La segunda es comparar con una referencia como 1/2 o 1. 3/8 es menor que 1/2 (ya que la mitad de 8 es 4), mientras que 5/8 es mayor que 1/2, asà que 5/8 es mayor sin más operaciones. 194 195Dos patrones rápidos también ayudan. Con el mismo denominador, gana el numerador mayor (5/8 > 3/8). Con el mismo numerador, gana el denominador menor, porque menos trozos significa que cada trozo es más grande (5/6 > 5/8). Recuerda siempre: comparar solo tiene sentido cuando comparas el mismo entero.`),activitySteps:[{title:O("Activity 1 â Common-denominator compare","Actividad 1 â Comparar con denominador común"),steps:se(["Pick two fractions with different denominators.","Rewrite both with a common denominator.","Compare the numerators and write <, >, or =.","Check your answer on a number line."],["Elige dos fracciones con de
195nominadores diferentes.","Reescribe ambas con un denominador común.","Compara los numeradores y escribe <, >, o =.","Comprueba tu respuesta en una recta numérica."])},{title:O("Activity 2 â Benchmark sort","Actividad 2 â Clasificación con referencias"),steps:se(["Gather several fraction cards.","Sort each as less than, equal to, or greater than 1/2.","Explain how you decided for two of them.","Order one group from least to greatest."],["Reúne varias tarjetas de fracciones.","Clasifica cada una como menor, igual o mayor que 1/2.","Explica cómo decidiste para dos de ellas.","Ordena un grupo de menor a mayor."])}],aiPromptExample:O("Prompt: 'Give me two fractions with different denominators; ask me to compare them and justify with a common denominator or a benchmark.'","Indicación: 'Dame dos fracciones con denominadores diferentes; pÃdeme compararlas y justificar con un denominador común o una referencia.'"),projectSteps:se(["Choose four fraction pairs to compare.","For each, show your strategy (common denominator or benchmark).","Write the correct symbol <, >, or = and a short reason.","Order all the fractions you used from least to greatest."],["Elige cuatro pares de fracciones para comparar.","Para cada uno, muestra tu estrategia (denominador común o referencia).","Escribe el sÃmbolo correcto <, >, o = y una razón breve.","Ordena todas las fracciones que usaste de menor a mayor."]),expectedProduct:O("A comparison page with four fraction pairs, each compared with a justified strategy, plus an ordered list from least to greatest.","Una página de comparación con cuatro pares de fracciones, cada uno comparado con una estrategia justificada, además de una lista ordenada de menor a mayor.")},22:{story:O("A pizza is cut into 8 equal slices. You eat 2/8 and your brother eats 3/8. Together you ate 5/8 of the pizza, and 3/8 is left. Because every slice is the same size, adding and subtracting is as easy as counting slices.","Una pizza se corta en 8 rebanadas iguales. Tú comes 2/8 y tu hermano come 3/8. Juntos comieron 5/8 de la pizza, y quedan 3/8. Como cada rebanada es del mismo tamaño, sumar y restar es tan fácil como contar rebanadas."),extendedExplanation:O(`When fractions share the same denominator, every piece is the same size. That makes addition and subtraction simple: you just add or subtract the numerators and keep the denominator the same. 196 197For 2/8 + 3/8, you are combining 2 eighths with 3 eighths to get 5 eighths: 5/8. For 7/10 â 4/10, you take 4 tenths away from 7 tenths, leaving 3/10. The denominator never changes during the operation because the size of each piece is not changing â only how many pieces you have. 198 199A helpful way to think about it: a fraction like 3/8 is really 3 copies of the unit fraction 1/8. Adding 3/8 + 2/8 is just counting unit fractions: three eighths plus two eighths makes five eighths. This is why a common beginner mistake â adding the denominators to get 5/16 â is wrong: the slices did not get smaller, so the denominator stays 8.`,`Cuando las fracciones comparten el mismo denominador, cada trozo es del mismo tamaño. Eso hace que sumar y restar sea simple: solo sumas o restas los numeradores y conservas el denominador. 200 201Para 2/8 + 3/8, combinas 2 octavos con 3 octavos para obtener 5 octavos: 5/8. Para 7/10 â 4/10, quitas 4 décimas de 7 décimas, dejando 3/10. El denominador nunca cambia durante la operación porque el tamaño de cada trozo no cambia, solo cuántos trozos tienes. 202 203Una forma útil de pensarlo: una fracción como 3/8 es en realidad 3 copias de la fracción unitaria 1/8. Sumar 3/8 + 2/8 es solo contar fracciones unitarias: tres octavos más dos octavos hacen cinco octavos. Por eso un error común de principiante âsumar los denominadores para obtener 5/16â está mal: las rebanadas no se hicieron más pequeñas, asà que el denominador se mantiene en 8.`),activitySteps:[{title:O("Activity 1 â Count the pieces","Actividad 1 â Cuenta los trozos"),steps:se(["Use fraction strips that show eighths.","Combine 2/8 and 3/8 and count the total pieces.","Write the addition equation with the denominator unchanged.","Repeat with a subtraction like 6/8 â 1/8."],["Usa tiras de fracciones que muestren octavos.","Comb
203ina 2/8 y 3/8 y cuenta el total de trozos.","Escribe la ecuación de suma con el denominador sin cambios.","Repite con una resta como 6/8 â 1/8."])},{title:O("Activity 2 â Write a fraction story","Actividad 2 â Escribe una historia con fracciones"),steps:se(["Think of a real situation with same-size pieces (a pizza, a ribbon, a cup).","Write a word problem that adds or subtracts like-denominator fractions.","Solve your own problem and show the steps.","Trade with a partner and check each other's work."],["Piensa en una situación real con trozos del mismo tamaño (una pizza, una cinta, una taza).","Escribe un problema verbal que sume o reste fracciones con igual denominador.","Resuelve tu propio problema y muestra los pasos.","Intercambia con un compañero y revisen el trabajo del otro."])}],aiPromptExample:O("Prompt: 'Give me two fractions with the same denominator; ask me to add or subtract them and explain why the denominator stays the same.'","Indicación: 'Dame dos fracciones con el mismo denominador; pÃdeme sumarlas o restarlas y explicar por qué el denominador se mantiene igual.'"),projectSteps:se(["Create a recipe or craft that uses same-size fraction amounts.","Write at least one addition and one subtraction with like denominators.","Solve each, keeping the denominator the same.","Explain in one sentence why the denominator does not change."],["Crea una receta o manualidad que use cantidades de fracciones del mismo tamaño.","Escribe al menos una suma y una resta con denominadores iguales.","Resuelve cada una, conservando el denominador.","Explica en una oración por qué el denominador no cambia."]),expectedProduct:O("A fraction recipe page with at least one like-denominator addition and one subtraction, each solved with an explanation of why the denominator stays the same.","Una página de receta con fracciones con al menos una suma y una resta de igual denominador, cada una resuelta con una explicación de por qué el denominador se mantiene.")},23:{story:O("On a hike you cover 1 1/2 miles before lunch and 2 1/2 miles after. How far did you walk in all? Mixed numbers â a whole number plus a fraction â show up whenever measurements are more than one but not a whole number, from trail distances to cups of flour.","En una caminata recorres 1 1/2 millas antes del almuerzo y 2 1/2 millas después. ¿Cuánto caminaste en total? Los números mixtos âun número entero más una fracciónâ aparecen cada vez que las medidas son más de uno pero no un número entero, desde distancias de senderos hasta tazas de harina."),extendedExplanation:O(`A mixed number combines a whole number and a fraction, like 2 3/4. It means 2 wholes plus 3/4 of another whole. 204 205To add or subtract mixed numbers with the same denominator, you can work with the parts separately. For 1 1/4 + 2 1/4, add the whole numbers (1 + 2 = 3) and the fractions (1/4 + 1/4 = 2/4), giving 3 2/4. Subtraction works the same way: 3 3/5 â 1 1/5 = 2 2/5. 206 207Sometimes it is easier to rewrite a mixed number as an improper fraction first. To convert, multiply the whole number by the denominator and add the numerator: 2 3/4 = (2 à 4 + 3)/4 = 11/4. To go back, divide: 11 ÷ 4 = 2 remainder 3, which is 2 3/4. Both forms name the exact same amount, so you can pick whichever makes a problem easier.`,`Un número mixto combina un número entero y una fracción, como 2 3/4. Significa 2 enteros más 3/4 de otro entero. 208 209Para sumar o restar números mixtos con el mismo denominador, puedes trabajar con las partes por separado. Para 1 1/4 + 2 1/4, suma los enteros (1 + 2 = 3) y las fracciones (1/4 + 1/4 = 2/4), dando 3 2/4. La resta funciona igual: 3 3/5 â 1 1/5 = 2 2/5. 210 211A veces es más fácil reescribir primero un número mixto como fracción impropia. Para convertir, multiplica el número entero por el denominador y suma el numerador: 2 3/4 = (2 à 4 + 3)/4 = 11/4. Para regresar, divide: 11 ÷ 4 = 2 residuo 3, que es 2 3/4. Ambas formas nombran exactamente la misma cantidad, asà que puedes elegir la que haga más fácil un problema.`),activitySteps:[{title:O("Activity 1 â Add by parts","Actividad 1 â Suma por partes"),steps:se(["Write two mixed numbers with the same denominator.","Add the whole numbers, then add the fractions.","Comb
211ine the parts into one mixed-number answer.","Check with a model or number line."],["Escribe dos números mixtos con el mismo denominador.","Suma los números enteros, luego suma las fracciones.","Combina las partes en una respuesta de número mixto.","Comprueba con un modelo o recta numérica."])},{title:O("Activity 2 â Convert and check","Actividad 2 â Convierte y comprueba"),steps:se(["Pick a mixed number such as 2 1/3.","Convert it to an improper fraction.","Convert it back to a mixed number to check.","Explain why both forms name the same amount."],["Elige un número mixto como 2 1/3.","Conviértelo a una fracción impropia.","Conviértelo de vuelta a un número mixto para comprobar.","Explica por qué ambas formas nombran la misma cantidad."])}],aiPromptExample:O("Prompt: 'Give me two mixed numbers with the same denominator; ask me to add them by parts and show my work.'","Indicación: 'Dame dos números mixtos con el mismo denominador; pÃdeme sumarlos por partes y mostrar mi trabajo.'"),projectSteps:se(["Plan a journey or recipe that uses mixed-number amounts.","Write one addition and one subtraction with mixed numbers.","Solve each by parts, showing whole and fraction pieces.","Convert one answer to an improper fraction to double-check."],["Planea un recorrido o receta que use cantidades en números mixtos.","Escribe una suma y una resta con números mixtos.","Resuelve cada una por partes, mostrando las piezas entera y fraccionaria.","Convierte una respuesta a fracción impropia para verificar."]),expectedProduct:O("A journey map or recipe with one mixed-number addition and one subtraction, each solved by parts, with one answer verified as an improper fraction.","Un mapa de recorrido o receta con una suma y una resta de números mixtos, cada una resuelta por partes, con una respuesta verificada como fracción impropia.")},24:{story:O("Each water bottle holds 2/3 liter. If you fill 4 bottles, how much water is that? Instead of adding 2/3 + 2/3 + 2/3 + 2/3, you can multiply 4 à 2/3 â a faster way to find many equal groups of a fraction.","Cada botella de agua contiene 2/3 de litro. Si llenas 4 botellas, ¿cuánta agua es eso? En lugar de sumar 2/3 + 2/3 + 2/3 + 2/3, puedes multiplicar 4 à 2/3, una forma más rápida de hallar muchos grupos iguales de una fracción."),extendedExplanation:O(`Multiplying a fraction by a whole number is just repeated addition of that fraction. 3 à 2/5 means three groups of 2/5: 2/5 + 2/5 + 2/5. Counting the fifths, that is 6 fifths, or 6/5. 212 213The shortcut is to multiply the numerator by the whole number and keep the denominator the same: 3 à 2/5 = (3 à 2)/5 = 6/5. The denominator stays 5 because the size of each piece â one fifth â never changes; you are simply collecting more fifths. 214 215When the product is an improper fraction like 6/5, you can leave it that way or rewrite it as a mixed number: 6/5 = 1 1/5. Either form is correct. This idea connects directly to real life: 4 à 2/3 liter = 8/3 liter = 2 2/3 liters of water, which is how you scale up a measurement when you repeat it several times.`,`Multiplicar una fracción por un número entero es solo la suma repetida de esa fracción. 3 à 2/5 significa tres grupos de 2/5: 2/5 + 2/5 + 2/5. Al contar los quintos, eso es 6 quintos, o 6/5. 216 217El atajo es multiplicar el numerador por el número entero y conservar el denominador: 3 à 2/5 = (3 à 2)/5 = 6/5. El denominador se mantiene en 5 porque el tamaño de cada trozo âun quintoâ nunca cambia; simplemente estás reuniendo más quintos. 218 219Cuando el producto es una fracción impropia como 6/5, puedes dejarla asà o reescribirla como número mixto: 6/5 = 1 1/5. Cualquiera de las dos formas es correcta. Esta idea se conecta directamente con la vida real: 4 à 2/3 de litro = 8/3 de litro = 2 2/3 litros de agua, que es como amplÃas una medida cuando la repites varias veces.`),activitySteps:[{title:O("Activity 1 â Repeated addition model","Actividad 1 â Modelo de suma repetida"),steps:se(["Choose a whole number times a fraction, like 3 à 2/5.","Draw that many groups of the fraction on a number line.","Count the total to find the product.","Write it both as repeated addition and as multiplication."],["Elige un número entero por una fracción, como 3 à 2/5.","Dibuja esa cantidad de grupos de la fracción en una recta numérica.","Cuenta el total para hallar el producto.","EscrÃbelo como suma repetida y como multiplicación."])},{title:O("Activity 2 â Use the shortcut","Actividad 2 â Usa el atajo"),steps:se(["Solve the same problem by multiplying the numerator by the whole number.","Compare your answer to the repeated-addition result.","Rewrite any improper fraction as a mixed number.","Explain why the denominator does not change."],["Resuelve el mismo problema multiplicando el numerador por el número entero.","Compara tu respuesta con el resultado de la suma repetida.","Reescribe cualquier fracción impropia como número mixto.","Explica por qué el denominador no cambia."])}],aiPromptExample:O("Prompt: 'Give me a whole number times a fraction; ask me to solve it as repeated addition and with the shortcut, then compare.'","Indicación: 'Dame un número entero por una fracción; pÃdeme resolverlo como suma repetida y con el atajo, luego comparar.'"),projectSteps:se(["Choose a recipe or measurement that you repeat several times.","Write it as a whole number times a fraction.","Solve it two ways: repeated addition and the shortcut.","Write the final amount as a mixed number with its unit."],["Elige una receta o medida que repites varias veces.","EscrÃbela como un número entero por una fracción.","Resuélvela de dos formas: suma repetida y el atajo.","Escribe la cantidad final como número mixto con su unidad."]),expectedProduct:O("A scaled-up recipe showing a whole number times a fraction solved two ways, with the final amount written as a mixed number and unit.","Una receta ampliada que muestra un número entero por una fracción resuelta de dos formas, con la cantidad final escrita como número mixto y unidad.")},25:{story:O("Money is built on tenths and hundredths: a dime is 1/10 of a dollar and a penny is 1/100. When you have 4 dimes and 5 pennies, you have 45/100 of a dollar â that is, 45 cents. Tenths and hundredths are the bridge between fractions and the decimals we use every day.","El dinero se basa en décimas y centésimas: una moneda de diez centavos es 1/10 de dólar y un centavo es 1/100. Cuando tienes 4 monedas de diez y 5 centavos, tienes 45/100 de dólar, es decir, 45 centavos. Las décimas y las centésimas son el puente entre las fracciones y los decimales que usamos a diario."),extendedExplanation:O(`Tenths and hundredths are special because our number system groups by tens. One tenth is the same as ten hundredths, so 1/10 = 10/100. On a grid of 100 small squares, a single column (1/10) covers exactly 10 squares (10/100). 220 221This relationship lets you rewrite any number of tenths as hundredths by multiplying the numerator and denominator by 10: 3/10 = 30/100, and 6/10 = 60/100. Renaming this way makes the pieces the same size. 222 223That is exactly what you need to add tenths and hundredths together. To find 4/10 + 5/100, first rename 4/10 as 40/100, then add: 40/100 + 5/100 = 45/100. You cannot add 4/10 and 5/100 directly because the pieces are different sizes â but once both are hundredths, it is simple addition. This is the foundation that makes decimals work.`,`Las décimas y las centésimas son especiales porque nuestro sistema numérico agrupa de diez en diez. Una décima es lo mismo que diez centésimas, asà que 1/10 = 10/100. En una cuadrÃcula de 100 cuadritos, una sola columna (1/10) cubre exactamente 10 cuadritos (10/100). 224 225Esta relación te permite reescribir cualquier número de décimas como centésimas multiplicando el numerador y el denominador por 10: 3/10 = 30/100, y 6/10 = 60/100. Renombrar asà hace que los trozos sean del mismo tamaño. 226 227Eso es exactamente lo que necesitas para sumar décimas y centésimas. Para hallar 4/10 + 5/100, primero renombra 4/10 como 40/100, luego suma: 40/100 + 5/100 = 45/100. No puedes sumar 4/10 y 5/100 directamente porque los trozos son de distinto tamaño, pero una vez que ambos son centésimas, es una suma simple. Esta es la base que hace funcionar los decimales.`),activitySteps:[{title:O("Activity 1 â Shade the grid","Actividad 1 â Sombrea la cuadrÃcula"),steps:se(["Take a 10-by-10 hundredths grid.","Shade one column and label it 1/10 and 10/100.","Shade 3/10 and write it as 30/100.","Explain why a full column equals ten small squares."],["Toma una cuadrÃcula de centésimas de 10 por 10.","Sombrea una columna y rotúlala como 1/10 y 10/100.","Sombrea 3/10 y escrÃbelo como 30/100.","Explica por qué una columna completa equivale a diez cuadritos."])},{title:O("Activity 2 â Add tenths and hundredths","Actividad 2 â Suma décimas y centésimas"),steps:se(["Write a sum like 4/10 + 5/100.","Rename the tenths as hundredths.","Add to get a total in hundredths.","Shade the total on a hundredths grid to check."],["Escribe una suma como 4/10 + 5/100.","Renombra las décimas como centésimas.","Suma para obtener un total en centésimas.","Sombrea el total en una cuadrÃcula de centésimas para comprobar."])}],aiPromptExample:O("Prompt: 'Give me a sum of tenths and hundredths; ask me to rename the tenths and add, then check on a grid.'","Indicación: 'Dame una suma de décimas y centésimas; pÃdeme renombrar las décimas y sumar, luego comprobar en una cuadrÃcula.'"),projectSteps:se(["Design a picture on a hundredths grid using two or more colors.","Write each colored regi
227on as a fraction of 100.","Show one region as tenths and rename it as hundredths.","Add two regions together and report the total in hundredths."],["Diseña un dibujo en una cuadrÃcula de centésimas usando dos o más colores.","Escribe cada región coloreada como fracción de 100.","Muestra una región en décimas y renómbrala como centésimas.","Suma dos regiones y reporta el total en centésimas."]),expectedProduct:O("A hundredths-grid artwork labeled with fractions of 100, including one tenths-to-hundredths rename and one added total in hundredths.","Una obra en cuadrÃcula de centésimas rotulada con fracciones de 100, incluyendo un cambio de décimas a centésimas y un total sumado en centésimas.")},26:{story:O("Price tags, race times, and thermometers all use decimals. When a runner finishes in 12.6 seconds and another in 12.45, who was faster? Reading and comparing decimals correctly â not just counting digits â is a skill you will use for the rest of your life.","Las etiquetas de precio, los tiempos de carrera y los termómetros usan decimales. Cuando un corredor termina en 12.6 segundos y otro en 12.45, ¿quién fue m
227ás rápido? Leer y comparar decimales correctamente âno solo contar dÃgitosâ es una destreza que usarás el resto de tu vida."),extendedExplanation:O(`A decimal is another way to write tenths and hundredths. The places after the decimal point are tenths (first) and hundredths (second), so 7/10 = 0.7 and 35/100 = 0.35. A fraction with denominator 10 has one decimal place; a fraction with denominator 100 has two. 228 229To compare decimals, compare place values, not the number of digits. It is tempting to think 0.45 is bigger than 0.6 because it 'has more digits,' but that is wrong. Line up the places: 0.6 = 0.60 = 60 hundredths, while 0.45 = 45 hundredths, so 0.6 is greater. 230 231Writing extra zeros on the right does not change a decimal's value: 0.5 = 0.50 because five tenths equals fifty hundredths. This is why 0.3 and 0.30 are equal. A good strategy is to rewrite both decimals with the same number of places (both in hundredths), then compare them like whole numbers of hundredths.`,`Un decimal es otra forma de escribir décimas y centésimas. Los lugares después del punto decimal son las décimas (primero) y las centésimas (segundo), asà que 7/10 = 0.7 y 35/100 = 0.35. Una fracción con denominador 10 tiene un lugar decimal; una con denominador 100 tiene dos. 232 233Para comparar decimales, compara los valores posicionales, no la cantidad de dÃgitos. Es tentador pensar que 0.45 es mayor que 0.6 porque 'tiene más dÃgitos', pero eso es incorrecto. Alinea los lugares: 0.6 = 0.60 = 60 centésimas, mientras que 0.45 = 45 centésimas, asà que 0.6 es mayor. 234 235Escribir ceros extra a la derecha no cambia el valor de un decimal: 0.5 = 0.50 porque cinco décimas equivalen a cincuenta centésimas. Por eso 0.3 y 0.30 son iguales. Una buena estrategia es reescribir ambos decimales con la misma cantidad de lugares (ambos en centésimas) y luego compararlos como números enteros de centésimas.`),activitySteps:[{title:O("Activity 1 â Fraction to decimal","Actividad 1 â De fracción a decimal"),steps:se(["Write several tenths and hundredths as fractions.","Rewrite each as a decimal, lining up the places.","Read each decimal aloud (for example, 'thirty-five hundredths').","Check one by shading a hundredths grid."],["Escribe varias décimas y centésimas como fracciones.","Reescribe cada una como decimal, alineando los lugares.","Lee cada decimal en voz alta (por ejemplo, 'treinta y cinco centésimas').","Comprueba uno sombreando una cuadrÃcula de centésimas."])},{title:O("Activity 2 â Compare with place value","Actividad 2 â Compara con valor posicional"),steps:se(["Pick two decimals such as 0.6 and 0.45.","Rewrite both with two decimal places.","Compare them as hundredths and write <, >, or =.","Order three decimals from least to greatest."],["Elige dos decimales como 0.6 y 0.45.","Reescribe ambos con dos lugares decimales.","Compáralos como centésimas y escribe <, >, o =.","Ordena tres decimales de menor a mayor."])}],aiPromptExample:O("Prompt: 'Give me two decimals to hundredths; ask me to compare them using place value and justify with <, >, or =.'","Indicación: 'Dame dos decimales hasta centésimas; pÃdeme compararlos usando el valor posicional y justificar con <, >, o =.'"),projectSteps:se(["Collect five decimals (from prices, times, or measurements).","Write each as a fraction of 10 or 100.","Place all five on a number line from 0 to 1.","Order them from least to greatest and explain one comparison."],["Reúne cinco decimales (de precios, tiempos o medidas).","Escribe cada uno como fracción de 10 o 100.","Coloca los cinco en una recta numérica de 0 a 1.","Ordénalos de menor a mayor y explica una comparación."]),expectedProduct:O("A decimal number line placing five decimals from 0 to 1, each linked to its fraction, with an ordered list and one written comparison.","Una recta numérica decimal que coloca cinco decimales de 0 a 1, cada uno ligado a su fracción, con una lista ordenada y una comparación escrita.")},27:{story:O("Fractions and decimals are everywhere at once: a recipe needs 3/4 cup, a sale takes 0.25 off, and a ruler shows both. This week you bring together everything from Unit 3 â equivalence, comparing, adding and subtracting, multiplying, and decimals â to solve problems the way they really appear in life.","Las fracciones y los decimales están en todas partes a la vez: una receta necesita 3/4 de taza, una oferta quita 0.25 y una regla muestra ambos. Esta semana integras todo lo de la Unidad 3 âequivalencia, comparar, sumar y restar, multiplicar y decimalesâ para resolver problemas como aparecen de verdad en la vida."),extendedExplanation:O(`This review week ties the whole unit together. Real problems rarely use just one skill, so you will move between fractions and decimals and choose the right tool for each step. 236 237Keep the big ideas in mind. Equivalent fractions name the same amount, and simplest form uses the smallest numbers. To compare or add unlike pieces, make them the same size with a common denominator. With like denominators, add or subtract the numerators and keep the denominator. Multiplying a fraction by a whole number is repeated addition of that fraction. 238 239Fractions with denominators 10 and 100 connect directly to decimals: 7/10 = 0.7 and 35/100 = 0.35. To compare decimals, line up place values rather than counting digits. As you work each problem, show your steps, justify your reasoning, and check that every answer is reasonable â the same habits strong mathematicians use every day.`,`Esta semana de repaso integra toda la unidad. Los problemas reales rara vez usan una sola destreza, asà que te moverás entre fracciones y decimales y elegirás la herramienta correcta para cada paso. 240 241Ten presentes las ideas clave. Las fracciones equivalentes nombran la misma cantidad, y la forma más simple usa los números más pequeños. Para comparar o sumar trozos distintos, hazlos del mismo tamaño con un denominador común. Con denominadores iguales, suma o resta los numeradores y conserva el denominador. Multiplicar una fracción por un número entero es la suma repetida de esa fracción. 242
243Las fracciones con denominadores 10 y 100 se conectan directamente con los decimales: 7/10 = 0.7 y 35/100 = 0.35. Para comparar decimales, alinea los valores posicionales en lugar de contar dÃgitos. Mientras resuelves cada problema, muestra tus pasos, justifica tu razonamiento y comprueba que cada respuesta sea razonable: los mismos hábitos que usan a diario los buenos matemáticos.`),activitySteps:[{title:O("Activity 1 â Mixed-review challenge","Actividad 1 â Reto de repaso mixto"),steps:se(["Work a set of problems covering equivalence, comparing, operations, and decimals.","Show your steps for each problem.","Check at least two answers with a model or estimate.","Mark which Unit 3 skill each problem used."],["Resuelve un conjunto de problemas que cubra equivalencia, comparar, operaciones y decimales.","Muestra tus pasos en cada problema.","Comprueba al menos dos respuestas con un modelo o estimación.","Marca qué destreza de la Unidad 3 usó cada problema."])},{title:O("Activity 2 â Explain your thinking","Actividad 2 â Explica tu razonamiento"),steps:se(["Choose one problem that uses a fraction and a decimal.","Write a clear explanation of each step in words.","Justify why your answer is reasonable.","Trade with a partner and give one piece of helpful feedback."],["Elige un problema que use una fracción y un decimal.","Escribe una explicación clara de cada paso con palabras.","Justifica por qué tu respuesta es razonable.","Intercambia con un compañero y da una retroalimentación útil."])}],aiPromptExample:O("Prompt: 'Give me a problem that uses equivalent fractions, an operation, and a decimal; then check my solution step by step.'","Indicación: 'Dame un problema que use fracciones equivalentes, una operación y un decimal; luego revisa mi solución paso a paso.'"),projectSteps:se(["Create a one-page 'fraction and decimal showcase' using at least four Unit 3 skills.","Include an equivalent-fractions example and a comparison.","Include one fraction operation and one fraction-to-decimal conversion.","Write a short reflection on which skill you are most confident in and why."],["Crea una 'exhibición de fracciones y decimales' de una página que use al menos cuatro destrezas de la Unidad 3.","Incluye un ejemplo de fracciones equivalentes y una comparación.","Incluye una operación con fracciones y una conversión de fracción a decimal.","Escribe una breve reflexión sobre qué destreza dominas más y por qué."]),expectedProduct:O("A one-page Unit 3 showcase combining equivalent fractions, a comparison, a fraction operation, a fraction-to-decimal conversion, and a short reflection.","Una exhibición de la Unidad 3 de una página que combina fracciones equivalentes, una comparación, una operación con fracciones, una conversión de fracción a decimal y una breve reflexión.")},28:{story:O("How tall are you in centimeters? How many minutes until recess? A baker weighs flour in grams, a runner measures a route in kilometers, and a chef pours milk in milliliters. Measurement is the language we use to describe the size of things â and this week you learn to switch between the units that language uses.","¿Cuánto mides en centÃmetros? ¿Cuántos minutos faltan para el recreo? Un panadero pesa la harina en gramos, un corredor mide una ruta en kilómetros y un cocinero vierte leche en mililitros. La medición es el idioma que usamos para describir el tamaño de las cosas, y esta semana aprenderás a cambiar entre las unidades que usa ese idioma."),extendedExplanation:O(`Every measurement has two parts: a number and a unit. The unit tells you what size you are counting in, like meters, grams, liters, or minutes. Larger units are made of many smaller units, and knowing those relationships lets you convert between them. 244 245The key relationships for this week are: 1 kilometer = 1,000 meters, 1 meter = 100 centimeters, 1 kilogram = 1,000 grams, 1 liter = 1,000 milliliters, 1 hour = 60 minutes, 1 minute = 60 seconds, 1 foot = 12 inches. To convert a larger unit into a smaller one, you multiply, because each big unit contains many small ones. For example, 3 meters = 3 à 100 = 300 centimeters. 246 247A simple way to stay organized is to build a two-column table that lists the larger unit and its equal amount in smaller units. Then any conversion becomes a multiplication problem. Always write the unit next to your number so your answer clearly says what it measures.`,`Cada medida tiene dos partes: un número y una unidad. La unidad indica en qué tamaño estás contando, como metros, gramos, litros o minutos. Las unidades grandes están formadas por muchas unidades pequeñas, y conocer esas relaciones te permite convertir entre ellas. 248
249Las relaciones clave de esta semana son: 1 kilómetro = 1,000 metros, 1 metro = 100 centÃmetros, 1 kilogramo = 1,000 gramos, 1 litro = 1,000 mililitros, 1 hora = 60 minutos, 1 minuto = 60 segundos, 1 pie = 12 pulgadas. Para convertir una unidad mayor a una menor, multiplicas, porque cada unidad grande contiene muchas pequeñas. Por ejemplo, 3 metros = 3 à 100 = 300 centÃmetros. 250 251Una forma sencilla de organizarte es construir una tabla de dos columnas que liste la unidad mayor y su cantidad igual en unidades menores. AsÃ, cualquier conversión se convierte en un problema de multiplicación. Escribe siempre la unidad junto a tu número para que tu respuesta diga claramente qué mide.`),activitySteps:[{title:O("Activity 1 â Build a conversion table","Actividad 1 â Construye una tabla de conversiones"),steps:se(["List the unit pairs for length, mass, volume, and time.","Write how many small units equal one large unit.","Use the table to convert three larger measurements to smaller units.","Check each answer by saying it aloud with its unit."],["Enumera los pares de unidades de longitud, masa, volumen y tiempo.","Escribe cuántas unidades pequeñas equivalen a una grande.","Usa la tabla para convertir tres medidas mayores a unidades menores.","Comprueba cada respuesta diciéndola en voz alta con su unidad."])},{title:O("Activity 2 â Measure two ways","Actividad 2 â Mide de dos maneras"),steps:se(["Pick three objects in the classroom.","Measure each one and record the measurement in a large unit.","Convert each measurement to a smaller unit.","Explain why the smaller-unit number is bigger."],["Elige tres objetos del salón.","Mide cada uno y registra la medida en una unidad grande.","Convierte cada medida a una unidad menor.","Explica por qué el número en la unidad menor es mayor."])}],aiPromptExample:O("Prompt: 'Give me three real-life conversion problems â one length, one mass, and one time â and check my answers step by step.'","Indicación: 'Dame tres problemas de conversión de la vida real âuno de longitud, uno de masa y uno de tiempoâ y revisa mis respuestas paso a paso.'"),projectSteps:se(["Create a one-page measurement conversion chart for length, mass, volume, and time.","Show each large unit and its equal amount in smaller units.","Include one worked conversion example for each category.","Add a sentence explaining why you multiply to go from large to small units."],["Crea una tabla de conversión de medidas de una página para longitud, masa, volumen y tiempo.","Muestra cada unidad grande y su cantidad igual en unidades menores.","Incluye un ejemplo de conversión resuelto para cada categorÃa.","Añade una oración que explique por qué multiplicas para pasar de unidades grandes a pequeñas."]),expectedProduct:O("A one-page conversion chart covering length, mass, volume, and time, with one worked example per category and an explanation of the multiply rule.","Una tabla de conversión de una página que cubre longitud, masa, volumen y tiempo, con un ejemplo resuelto por categorÃa y una explicación de la regla de multiplicar.")},29:{story:O("A field trip is full of measurement: the bus ride takes 90 minutes, the trail is 2 kilometers long, your water bottle holds 750 milliliters, and lunch costs $4.25. Solving real problems means choosing the right operation and keeping your units straight. This week you become a measurement problem-solver.","Una excursión está llena de medición: el viaje en autobús dura 90 minutos, el sendero mide 2 kilómetros, tu botella contiene 750 mililitros y el almuerzo cuesta $4.25. Resolver problemas reales significa elegir la operación correcta y mantener las unidades en orden. Esta semana te conviertes en un solucionador de problemas de medición."),extendedExplanation:O(`Measurement word problems combine reading, arithmetic, and units. The first step is always to understand the situation: What is being measured? What do you know, and what do you need to find? 252 253Next, choose an operation. You add to combine amounts or times, subtract to find what is left or a difference, multiply to repeat equal amounts, and divi
253de to share or make equal groups. A bar diagram can help you see the parts and the whole. When units differ â like meters and centimeters â convert them to the same unit before you calculate. 254 255Money problems use decimals because one dollar is 100 cents, so $3.75 means 3 dollars and 75 hundredths. Line up the decimal points when adding or subtracting money. After you solve, check that your answer is reasonable and includes the correct unit, whether that is minutes, meters, milliliters, grams, or dollars.`,`Los problemas verbales de medición combinan lectura, aritmética y unidades. El primer paso siempre es entender la situación: ¿Qué se está midiendo? ¿Qué sabes y qué necesitas hallar? 256 257Luego, elige una operación. Sumas para combinar cantidades o tiempos, restas para hallar lo que queda o una diferencia, multiplicas para repetir cantidades iguales y divides para repartir o formar grupos iguales. Un diagrama de barras puede ayudarte a ver las partes y el todo. Cuando las unidades difieren âcomo metros y centÃmetrosâ conviértelas a la misma unidad antes de calcular. 258 259Los problemas de dinero usan decimales porque un dólar tiene 100 centavos, asà que $3.75 significa 3 dólares y 75 centésimas. Alinea los puntos decimales al sumar o restar dinero. Después de resolver, comprueba que tu respuesta sea razonable e incluya la unidad correcta, ya sean minutos, metros, mililitros, gramos o dólares.`),activitySteps:[{title:O("Activity 1 â Solve and diagram","Actividad 1 â Resuelve y diagrama"),steps:se(["Read a measurement word problem twice.","Underline what you know and circle what you must find.","Draw a bar diagram and choose the operation.","Solve and label your answer with its unit."],["Lee dos veces un problema verbal de medición.","Subraya lo que sabes y encierra lo que debes hallar.","Dibuja un diagrama de barras y elige la operación.","Resuelve y rotula tu respuesta con su unidad."])},{title:O("Activity 2 â Make change","Actividad 2 â Da el cambio"),steps:se(["Choose an item with a price using dollars and cents.","Decide how much money you pay with.","Subtract to find the change, lining up the decimal points.","Write the change in dollars and explain your steps."],["Elige un artÃculo con un precio en dólares y centavos.","Decide con cuánto dinero pagas.","Resta para hallar el cambio, alineando los puntos decimales.","Escribe el cambio en dólares y explica tus pasos."])}],aiPromptExample:O("Prompt: 'Give me a two-step measurement word problem about a trip, then check my solution and units step by step.'","Indicación: 'Dame un problema de medición de dos pasos sobre un viaje, luego revisa mi solución y mis unidades paso a paso.'"),projectSteps:se(["Write four measurement story problems: one each about distance, time, volume, and money.","Solve each one and show your steps.","Include a bar diagram for at least one problem.","Make an answer key that labels every answer with its unit."],["Escribe cuatro problemas narrativos de medición: uno de distancia, uno de tiempo, uno de volumen y uno de dinero.","Resuelve cada uno y muestra tus pasos.","Incluye un diagrama de barras para al menos un problema.","Haz una clave de respuestas que rotule cada respuesta con su unidad."]),expectedProduct:O("A set of four measurement story problems (distance, time, volume, money) with worked solutions, one bar diagram, and a labeled answer key.","Un conjunto de cuatro problemas narrativos de medición (distancia, tiempo, volumen, dinero) con soluciones resueltas, un diagrama de barras y una clave de respuestas rotulada.")},30:{story:O("Imagine planning a garden. The fence you need to buy depends on the distance around it, and the soil you need to fill it depends on the space inside. Those are two different measurements â perimeter and area â and builders, gardeners, and designers use them every day. This week you learn to find both.","Imagina planear un jardÃn. La cerca que necesitas comprar depende de la distancia a su alrededor, y la tierra para llenarlo depende del espacio interior. Esas son dos medidas diferentes âperÃmetro y áreaâ y constructores, jardineros y diseña
259dores las usan todos los dÃas. Esta semana aprenderás a hallar ambas."),extendedExplanation:O(`Perimeter and area answer different questions. Perimeter is the distance around the outside of a shape; you find it by adding all the side lengths. Area is the amount of flat space a shape covers; you measure it in square units, like square centimeters. 260 261For a rectangle there are handy formulas. Area = length à width, because the shape is filled with rows of unit squares. Perimeter = 2 à (length + width), because there are two lengths and two widths. For a 6 cm by 4 cm rectangle, the area is 6 à 4 = 24 square cm, and the perimeter is 2 à (6 + 4) = 20 cm. 262 263These two ideas are independent. Two rectangles can have the same perimeter but different areas â a 1 à 5 rectangle and a 2 à 4 rectangle both have a perimeter of 12, yet their areas are 5 and 8. Always include the right unit: a plain unit for perimeter and a square unit for area.`,`El perÃmetro y el área responden preguntas distintas. El perÃmetro es la distancia alrededor del exterior de una figura; lo hallas sumando todas las longitudes de los lados. El área es la cantidad de espacio plano que cubre una figura; se mide en unidades cuadradas, como centÃmetros cuadrados. 264 265Para un rectángulo hay fórmulas útiles. Ãrea = largo à ancho, porque la figura se llena con filas de cuadrados unitarios. PerÃmetro = 2 à (largo + ancho), porque hay dos largos y dos anchos. Para un rectángulo de 6 cm por 4 cm, el área es 6 à 4 = 24 cm cuadrados, y el perÃmetro es 2 à (6 + 4) = 20 cm. 266 267Estas dos ideas son independientes. Dos rectángulos pueden tener el mismo perÃmetro pero distinta área: un rectángulo de 1 à 5 y uno de 2 à 4 tienen perÃmetro 12, pero sus áreas son 5 y 8. Incluye siempre la unidad correcta: una unidad simple para el perÃmetro y una unidad cuadrada para el área.`),activitySteps:[{title:O("Activity 1 â Tile to find area","Actividad 1 â Cubre para hallar el área"),steps:se(["Draw a rectangle on grid paper.","Fill it completely with unit squares.","Count the squares, then check with length à width.","Write the area with a square unit."],["Dibuja un rectángulo en papel cuadriculado.","Llénalo por completo con cuadrados unitarios.","Cuenta los cuadrados, luego comprueba con largo à ancho.","Escribe el área con una unidad cuadrada."])},{title:O("Activity 2 â Same perimeter, different area","Actividad 2 â Mismo perÃmetro, distinta área"),steps:se(["Find two different rectangles with a perimeter of 12 units.","Compute the area of each one.","Compare the areas and describe what you notice.","Explain why perimeter and area can differ."],["Encuentra dos rectángulos diferentes con perÃmetro de 12 unidades.","Calcula el área de cada uno.","Compara las áreas y describe lo que observas.","Explica por qué el perÃmetro y el área pueden diferir."])}],aiPromptExample:O("Prompt: 'Give me the length and width of a garden, then check my work as I find its area and perimeter.'","Indicación: 'Dame el largo y el ancho de un jardÃn, luego revisa mi trabajo mientras hallo su área y perÃmetro.'"),projectSteps:se(["Design a floor plan for a room using a rectangle on grid paper.","Label the length and width.","Calculate the area to find the carpet needed.","Calculate the perimeter to find the trim needed, and explain both."],["Diseña el plano de una habitación usando un rectángulo en papel cuadriculado.","Rotula el largo y el ancho.","Calcula el área para hallar la alfombra necesaria.","Calcula el perÃmetro para hallar el zócalo necesario y explica ambos."]),expectedProduct:O("A labeled room floor plan on grid paper with the area (for carpet) and perimeter (for trim) computed and explained.","Un plano de habitación rotulado en papel cuadriculado con el área (para la alfombra) y el perÃmetro (para el zócalo) calculados y explicados.")},31:{story:O("A scientist measures the length of ten leaves, and a teacher records how far each student can jump. When measurements repeat or vary, a line plot turns a messy list into a clear picture. This week you learn to build and read line plots that use fractions.","Un cientÃfico mide la longitud de diez hojas, y una maestra registra cuánto salta cada estudiante. Cuando las medidas se repiten o varÃan, un diagrama de puntos convierte una lista desordenada en una imagen clara. Esta semana aprenderás a construir y leer diagramas de puntos que usan fracciones."),extendedExplanation:O(`A line plot is a simple graph that shows data with X marks above a number line. Each X stands for one measurement, and the marks stack up over the value they match. The tallest stack shows the value that appears most often. 268 269In Grade 4, line plots often use a fractional scale, such as halves, fourths, or eighths. If you measure pencil
269s and three of them are 1/2 inch long, you place three X's above 1/2. Because the data are fractions, you can use what you know about adding and subtracting fractions to answer questions about the plot. 270 271For example, you can find the total length of several items by adding their fractions, or find the difference between the longest and shortest item by subtracting. A line plot does more than display data â it helps you compare, total, and reason about measurements at a glance.`,`Un diagrama de puntos es una gráfica sencilla que muestra datos con marcas X sobre una recta numérica. Cada X representa una medida, y las marcas se apilan sobre el valor que les corresponde. La columna más alta muestra el valor que aparece con más frecuencia. 272 273En 4.º grado, los diagramas de puntos suelen usar una escala fraccionaria, como medios, cuartos u octavos. Si mides lápices y tres miden 1/2 pulgada, colocas tres X sobre 1/2. Como los datos son fracciones, puedes usar lo que sabes sobre sumar y restar fracciones para responder preguntas sobre el diagrama. 274 275Por ejemplo, puedes hallar la longitud total de varios objetos sumando sus fracciones, o hallar la diferencia entre el objeto más largo y el m
275ás corto restando. Un diagrama de puntos hace más que mostrar datos: te ayuda a comparar, totalizar y razonar sobre las medidas de un vistazo.`),activitySteps:[{title:O("Activity 1 â Build a line plot","Actividad 1 â Construye un diagrama de puntos"),steps:se(["Measure several objects to the nearest 1/4 unit.","Draw a number line with a fractional scale.","Place one X above each measurement.","Identify the most and least common value."],["Mide varios objetos al 1/4 de unidad más cercano.","Dibuja una recta numérica con una escala fraccionaria.","Coloca una X sobre cada medida.","Identifica el valor más y menos común."])},{title:O("Activity 2 â Reason with the data","Actividad 2 â Razona con los datos"),steps:se(["Use your line plot to find the total length of two items.","Find the difference between the longest and shortest item.","Write one question your plot can answer.","Answer it and explain using fractions."],["Usa tu diagrama para hallar la longitud total de dos objetos.","Halla la diferencia entre el objeto más largo y el m
275ás corto.","Escribe una pregunta que tu diagrama pueda responder.","Respóndela y explica usando fracciones."])}],aiPromptExample:O("Prompt: 'Give me a small set of fractional measurements; help me plot them and answer one total and one difference question.'","Indicación: 'Dame un pequeño conjunto de medidas fraccionarias; ayúdame a graficarlas y a responder una pregunta de total y una de diferencia.'"),projectSteps:se(["Collect a set of measurements from your class to the nearest 1/4 unit.","Make a clear line plot with a fractional scale and a title.","Write three questions about your data, including one total and one difference.","Answer all three questions, showing your fraction work."],["Reúne un conjunto de medidas de tu clase al 1/4 de unidad más cercano.","Haz un diagrama de puntos claro con una escala fraccionaria y un tÃtulo.","Escribe tres preguntas sobre tus datos, incluyendo una de total y una de diferencia.","Responde las tres preguntas, mostrando tu trabajo con fracciones."]),expectedProduct:O("A titled line plot with a fractional scale plus three answered questions (including a total and a difference) that show the fraction work.","Un diagrama de puntos con tÃtulo y escala fraccionaria, además de tres preguntas respondidas (incluyendo un total y una diferencia) que muestran el trabajo con fracciones.")},32:{story:O("When you open a door, turn a steering wheel, or watch the hands of a clock sweep around, you are seeing angles in motion. An angle measures an amount of turn. This week you learn how that turn is measured in degrees and how to use a protractor to measure and draw angles.","Cuando abres una puerta, giras un volante o ves las manecillas de un reloj recorrer la esfera, estás viendo ángulos en movimiento. Un ángulo mide una cantidad de giro. Esta semana aprenderás cómo se mide ese giro en grados y cómo usar un transportador para medir y dibujar ángulos."),extendedExplanation:O(`An angle is formed by two rays that share an endpoint called the vertex, and it measures how far one ray is turned from the other. We measure that turn in degrees. Think of a full turn around a circle as 360 degrees, so one degree is 1/360 of a circle â a very small turn. 276 277Some angles have special names. A right angle is exactly 90 degrees and looks like the corner of a square. A straight angle is 180 degrees and forms a straight line. An angle smaller than a right angle is acute, and one between 90 and 180 degrees is obtuse. 278 279A protractor measures angles in degrees. Place its center mark on the vertex, line one ray up with the zero line, and read the number where the other ray crosses the scale. To draw an angle, mark the vertex, draw one ray along zero, find the degree measure on the scale, make a mark, and connect it to the vertex. With practice, measuring and drawing angles becomes quick and accurate.`,`Un ángulo se forma con dos rayos que comparten un extremo llamado vértice, y mide cuánto se ha girado un rayo respecto al otro. Medimos ese giro en grados. Piensa en una vuelta completa alrededor de una circunferencia como 360 grados, asà que un grado es 1/360 de una circunferencia: un giro muy pequeño. 280 281Algunos ángulos tienen nombres especiales. Un ángulo recto es exactamente 90 grados y se ve como la esquina de un cuadrado. Un ángulo llano es de 180 grados y forma una lÃnea recta. Un ángulo menor que un ángulo recto es agudo, y uno entre 90 y 180 grados es obtuso. 282 283Un transportador mide ángulos en grados. Coloca su marca central en el vértice, alinea un rayo con la lÃnea del cero y lee el número donde el otro rayo cruza la escala. Para dibujar un ángulo, marca el vértice, traza un rayo sobre el cero, halla la medida en grados en la escala, haz una marca y conéctala con el vértice. Con práctica, medir y dibujar ángulos se vuelve rápido y preciso.`),activitySteps:[{title:O("Activity 1 â Sort angles","Actividad 1 â Clasifica ángulos"),steps:se(["Look at a set of drawn angles.","Sort each as acute, right, or obtuse.","Explain how you decided for two of them.","Find one example of each kind in the room."],["Observa un conjunto de ángulos dibujados.","Clasifica cada uno como agudo, recto u obtuso.","Explica cómo decidiste para dos de ellos.","Encuentra un ejemplo de cada tipo en el salón."])},{title:O("Activity 2 â Measure and draw","Actividad 2 â Mide y dibuja"),steps:se(["Use a protractor to measure three given angles.","Record each measure in degrees.","Draw an angle of 45 degrees and one of 120 degrees.","Check a partner's drawn angles with your protractor."],["Usa un transportador para medir tres ángulos dados.","Registra cada medida en grados.","Dibuja un ángulo de 45 grados y uno de 120 grados.","Comprueba los ángulos dibujados de un compañero con tu transportador."])}],aiPromptExample:O("Prompt: 'Name three angle measures; help me classify each as acute, right, or obtuse and describe how to draw one.'","Indicación: 'Nombra tres medidas de ángulos; ayúdame a clasificar cada una como aguda, recta u obtusa y describe cómo dibujar uno.'"),projectSteps:se(["Go on an angle hunt and find five real angles around you.","Estimate each angle, then measure it with a protractor.","Record each as acute, right, or obtuse with its degree measure.","Draw two of your angles accurately and label them."],["Haz una búsqueda de ángulos y encuentra cinco ángulos reales a tu alrededor.","Estima cada ángulo, luego mÃdelo con un transportador.","Registra cada uno como agudo, recto u obtuso con su medida en grados.","Dibuja dos de tus ángulos con precisión y rotúlalos."]),expectedProduct:O("An angle-hunt record of five real angles with estimates, protractor measures, and classifications, plus two accurately drawn, labeled angles.","Un registro de búsqueda de cinco ángulos reales con estimaciones, medidas con transportador y clasificaciones, además de dos ángulos dibujados con precisión y rotulados.")},33:{story:O("Cut a slice of pizza and the rest of the pie is still there â the slice and the leftover together make the whole. Angles work the same way. When smaller angles fit together, they build a larger one. This week you learn to add and subtract angle measures to find missing pieces.","Corta una rebanada de pizza y el resto sigue ahÃ: la rebanada y lo que sobra juntos forman el todo. Los ángulos funcionan igual. Cuando los ángulos pequeños encajan, forman uno más grande. Esta semana aprenderás a sumar y restar medidas de ángulos para hallar las partes que faltan."),extendedExplanation:O(`Angle measures are additive. When two or more angles fit together at the same vertex with no gaps and no overlaps, their measures add up to the measure of the whole angle they form. If a 30-degree angle and a 40-degree angle share a side, together they make a 70-degree angle. 284 285This idea lets you find unknown angles. If you know the whole angle and one of its parts, you subtract to find the missing part. For example, if a right angle (90 degrees) is split into a 25-degree angle and another angle, the other angle is 90 â 25 = 65 degrees. 286 287Mathematicians often write an equation for the unknown. You might write 25 + ? = 90, then solve to get ? = 65. Whether you are decomposing an angle into parts or building parts into a whole, the same rule guides you: the parts add up to the whole, so add to combine and subtract to find what is missing.`,`Las medidas de los ángulos son aditivas. Cuando dos o más ángulos encajan en el mismo vértice sin huecos ni superposiciones, sus medidas suman la medida del ángulo completo que forman. Si un ángulo de 30 grados y uno de 40 grados comparten un lado, juntos forman un ángulo de 70 grados. 288
289Esta idea te permite hallar ángulos desconocidos. Si conoces el ángulo completo y una de sus partes, restas para hallar la parte que falta. Por ejemplo, si un ángulo recto (90 grados) se divide en un ángulo de 25 grados y otro ángulo, el otro ángulo es 90 â 25 = 65 grados. 290 291Los matemáticos suelen escribir una ecuación para la incógnita. PodrÃas escribir 25 + ? = 90, luego resolver para obtener ? = 65. Ya sea que descompongas un ángulo en partes o que formes un todo con las partes, la misma regla te guÃa: las partes suman el todo, asà que suma para combinar y resta para hallar lo que falta.`),activitySteps:[{title:O("Activity 1 â Build a whole angle","Actividad 1 â Forma un ángulo completo"),steps:se(["Place two angles together at a shared vertex.","Measure each part with a protractor.","Add the parts to find the whole angle.","Check by measuring the whole directly."],["Coloca dos ángulos juntos en un vértice común.","Mide cada parte con un transportador.","Suma las partes para hallar el ángulo completo.","Comprueba midiendo el todo directamente."])},{title:O("Activity 2 â Find the missing angle","Actividad 2 â Halla el ángulo que falta"),steps:se(["Start with a known whole angle and one known part.","Write an equation for the unknown part.","Subtract to solve for the missing angle.","Explain why subtraction works here."],["Comienza con un ángulo completo conocido y una parte conocida.","Escribe una ecuación para la parte desconocida.","Resta para resolver el ángulo que falta.","Explica por qué funciona la resta aquÃ."])}],aiPromptExample:O("Prompt: 'Give me a whole angle and one of its parts; help me write an equation and find the missing part.'","Indicación: 'Dame un ángulo completo y una de sus partes; ayúdame a escribir una ecuación y hallar la parte que falta.'"),projectSteps:se(["Create four unknown-angle puzzles using whole angles and parts.","Write an equation for each puzzle's missing angle.","Solve each one by adding or subtracting.","Make an answer key with the equations and solutions."],["Crea cuatro acertijos de ángulos desconocidos usando ángulos completos y partes.","Escribe una ecuación para el ángulo que falta en cada acertijo.","Resuelve cada uno sumando o restando.","Haz una clave de respuestas con las ecuaciones y soluciones."]),expectedProduct:O("A set of four unknown-angle puzzles, each with an equation and a solution, plus an answer key.","Un conjunto de cuatro acertijos de ángulos desconocidos, cada uno con una ecuación y una solución, más una clave de respuestas.")},34:{story:O("Look closely at a window, a sidewalk, or a kite, and you will spot the basic parts of geometry: points where things meet, straight lines and edges, and corners that form angles. This week you learn the names and symbols for these building blocks and how lines relate as parallel or perpendicular.","Observa de cerca una ventana, una acera o una cometa, y verás las partes básicas de la geometrÃa: puntos donde se encuentran las cosas, lÃneas y bordes rectos, y esquinas que forman ángulos. Esta semana aprenderás los nombres y sÃmbolos de estos bloques de construcción y cómo se relacionan las rectas como paralelas o perpendiculares."),extendedExplanation:O(`Geometry is built from a few simple ideas. A point marks an exact location and has no size. A line is perfectly straight and goes on forever in both directions. A ray starts at one endpoint and goes on forever in one direction, like a beam of light. A line segment is a part of a line with two endpoints, like the edge of a ruler. 292 293An angle forms wherever two rays share the same endpoint, which is called the vertex. The size of the angle tells you how much one ray is turned from the other. 294 295Lines can also relate to each other. Parallel lines never cross and always stay the same distance apart, like the two rails of a train track. Perpendicular lines cross to form right angles, like the lines on graph paper. Learning to re
295cognize and draw these parts â and to tell parallel from perpendicular â gives you the vocabulary you need to describe and classify shapes.`,`La geometrÃa se construye con unas pocas ideas sencillas. Un punto marca una ubicación exacta y no tiene tamaño. Una recta es perfectamente recta y continúa para siempre en ambos sentidos. Un rayo empieza en un extremo y continúa para siempre en un sentido, como un haz de luz. Un segmento es una parte de una recta con dos extremos, como el borde de una regla. 296 297Un ángulo se forma donde dos rayos comparten el mismo extremo, llamado vértice. El tamaño del ángulo indica cuánto se ha girado un rayo respecto al otro. 298 299Las rectas también pueden relacionarse entre sÃ. Las rectas paralelas nunca se cruzan y siempre se mantienen a la misma distancia, como los dos rieles de una vÃa de tren. Las rectas perpendiculares se cruzan formando ángulos rectos, como las lÃneas del papel cuadriculado. Aprender a reconocer y dibujar estas partes ây a distinguir paralelas de perpendicularesâ te da el vocabulario que necesitas para describir y clasificar figuras.`),activitySteps:[{title:O("Activity 1 â Draw and label","Actividad 1 â Dibuja y rotula"),steps:se(["Draw a point, a line, a ray, a segment, and an angle.","Label each one with its name.","Mark the vertex of your angle.","Explain how a ray differs from a segment."],["Dibuja un punto, una recta, un rayo, un segmento y un ángulo.","Rotula cada uno con su nombre.","Marca el vértice de tu ángulo.","Explica en qué se diferencia un rayo de un segmento."])},{title:O("Activity 2 â Parallel or perpendicular?","Actividad 2 â ¿Paralelas o perpendiculares?"),steps:se(["Search the classroom for pairs of lines.","Decide if each pair is parallel, perpendicular, or neither.","Sketch two real examples you found.","Explain how you can tell them apart."],["Busca pares de rectas en el salón.","Decide si cada par es paralelo, perpendicular o ninguno.","Dibuja dos ejemplos reales que hallaste.","Explica cómo puedes distinguirlos."])}],aiPromptExample:O("Prompt: 'Describe a figure to me; help me identify each line, ray, segment, and angle and say if any lines are parallel or perpendicular.'","Indicación: 'DescrÃbeme una figura; ayúdame a identificar cada recta, rayo, segmento y ángulo y a decir si hay rectas paralelas o perpendiculares.'"),projectSteps:se(["Make a geometry building-blocks poster.","Draw and label a point, line, ray, segment, and angle with their symbols.","Add one real-world example of parallel lines and one of perpendicular lines.","Write a sentence defining each term in your own words."],["Haz un cartel de bloques de construcción geométricos.","Dibuja y rotula un punto, una recta, un rayo, un segmento y un ángulo con sus sÃmbolos.","Añade un ejemplo real de rectas paralelas y uno de perpendiculares.","Escribe una oración que defina cada término con tus propias palabras."]),expectedProduct:O("A geometry building-blocks poster with labeled point, line, ray, segment, and angle, real-world parallel and perpendicular examples, and a definition for each term.","Un cartel de bloques de construcción geométricos con punto, recta, rayo, segmento y ángulo rotulados, ejemplos reales de paralelas y perpendiculares, y una definición de cada término.")},35:{story:O("A butterfly's wings match on both sides, a stop sign has eight equal edges, and a kite has a special pair of sides. Shapes have personalities defined by their sides and angles â and many have a balance called symmetry. This week you learn to classify two-dimensional figures and find their lines of symmetry.","Las alas de una mariposa coinciden en ambos lados, una señal de alto tiene ocho bordes iguales y una cometa tiene un par especial de lados. Las figuras tienen personalidades definidas por sus lados y ángulos, y muchas tienen un equilibrio llamado simetrÃa. Esta semana aprenderás a clasificar figuras bidimensionales y a hallar sus ejes de simetrÃa."),extendedExplanation:O(`We classify two-dimensional figures by looking at their sides and angles. Triangles can be sorted by their angles: a right triangle has one right angle, an acute triangle has three acute angles, and an obtuse triangle has one obtuse angle. They can also be sorted by sides, such as an equilateral triangle with three equal sides. 300 301Quadrilaterals are four-sided shapes, and they include squares, rectangles, rhombuses, and trapezoids. We tell them apart by features like parallel sides, equal sides, and right angles. For instance, a trapezoid has exactly one pair of parallel sides, while a rectangle has two pairs of parallel sides and four right angles. 302 303Many shapes have a line of symmetry â a line that divides the figure into two halves that match exactly when folded along it. A square has 4 lines of symmetry, an equilateral triangle has 3, and a rectangle that is not a square has only 2. To test for symmetry, imagine folding the shape and check whether the two halves line up perfectly.`,`Clasificamos las figuras bidimensionales observando sus lados y ángulos. Los triángulos se pueden clasificar por sus ángulos: un triángulo rectángulo tiene un ángulo recto, un triángulo acutángulo tiene tres ángulos agudos y un triángulo obtusángulo tiene un ángulo obtuso. También se pueden clasificar por lados, como un triángulo equilátero con tres lados iguales. 304 305Los cuadriláteros son figuras de cuatro lados, e incluyen cuadrados, rectángulos, rombos y trapecios. Los distinguimos por caracterÃsticas como lados paralelos, lados iguales y ángulos re
305ctos. Por ejemplo, un trapecio tiene exactamente un par de lados paralelos, mientras que un rectángulo tiene dos pares de lados paralelos y cuatro ángulos rectos. 306 307Muchas figuras tienen un eje de simetrÃa: una lÃnea que divide la figura en dos mitades que coinciden exactamente al doblar por ella. Un cuadrado tiene 4 ejes de simetrÃa, un triángulo equilátero tiene 3 y un rectángulo que no es cuadrado tiene solo 2. Para comprobar la simetrÃa, imagina doblar la figura y verifica si las dos mitades coinciden perfectamente.`),activitySteps:[{title:O("Activity 1 â Sort the shapes","Actividad 1 â Clasifica las figuras"),steps:se(["Gather a set of triangles and quadrilaterals.","Sort the triangles by their angles.","Sort the quadrilaterals by parallel sides and right angles.","Name each shape and justify its group."],["Reúne un conjunto de triángulos y cuadriláteros.","Clasifica los triángulos por sus ángulos.","Clasifica los cuadriláteros por lados paralelos y ángulos rectos.","Nombra cada figura y justifica su grupo."])},{title:O("Activity 2 â Fold for symmetry","Actividad 2 â Dobla para hallar simetrÃa"),steps:se(["Cut out paper copies of a square, a rectangle, and a triangle.","Fold each shape to find every line of symmetry.","Count and record the lines of symmetry for each.","Draw the lines of symmetry on a flat copy."],["Recorta copias de papel de un cuadrado, un rectángulo y un triángulo.","Dobla cada figura para hallar todos los ejes de simetrÃa.","Cuenta y registra los ejes de simetrÃa de cada una.","Dibuja los ejes de simetrÃa en una copia plana."])}],aiPromptExample:O("Prompt: 'Name a shape; help me classify it by its sides and angles and figure out how many lines of symmetry it has.'","Indicación: 'Nombra una figura; ayúdame a clasificarla por sus lados y ángulos y a averiguar cuántos ejes de simetrÃa tiene.'"),projectSteps:se(["Create a symmetry art gallery of four shapes.","Classify each shape by its sides and angles.","Draw every line of symmetry on each shape.","Write a caption for each that names the shape and its number of symmetry lines."],["Crea una galerÃa de arte con simetrÃa de cuatro figuras.","Clasifica cada figura por sus lados y ángulos.","Dibuja todos los ejes de simetrÃa en cada figura.","Escribe un pie para cada una que nombre la figura y su número de ejes de simetrÃa."]),expectedProduct:O("A symmetry art gallery of four classified shapes, each with all lines of symmetry drawn and a caption naming the shape and its symmetry count.","Una galerÃa de arte con simetrÃa de cuatro figuras clasificadas, cada una con todos los ejes de simetrÃa dibujados y un pie que nombra la figura y su número de ejes de simetrÃa.")},36:{story:O("Architects, artists, and engineers rarely use one skill at a time â they convert units, measure space, read data, and shape angles all in one project. This final week you bring together everything from Unit 4 and the whole year to design, measure, and reflect on how far you have come as a mathematician.","Los arquitectos, artistas e ingenieros rara vez usan una sola destreza a la vez: convierten unidades, miden el espacio, leen datos y forman ángulos, todo en un mismo proyecto. Esta última semana integras todo lo de la Unidad 4 y de todo el año para diseñar, medir y reflexionar sobre cuánto has avanzado como matemático."),extendedExplanation:O(`This review week ties Unit 4 and the entire course together. Real problems rarely use a single skill, so you will move between measurement, data, and geometry and choose the right tool for each step. 308 309Keep the big ideas in mind. To convert a larger unit to a smaller one, multiply. Area of a rectangle is length à width, and perimeter is 2 à (length + width). A line plot organizes measurement data on a number line, and you can add or subtract its fractions to answer questions. Angles are measured in degrees, a right angle is 90 degrees, and angle measures add up, so you subtract to find a missing part. Two-dimensional shapes are classified by their sides and angles, and a line of symmetry splits a shape into matching halves. 310 311As you work each task, show your steps, justify your reasoning, and check that every answer is reasonable and labeled with the correct unit. These habits â the same ones strong mathematicians use â have grown all year, and this week is a chance to celebrate and apply them.`,`Esta semana de repaso integra la Unidad 4 y todo el curso. Los problemas reales rara vez usan una sola destreza, asà que te moverás entre medición, datos y geometrÃa y elegirás la herramienta correcta para cada paso. 312
313Ten presentes las ideas clave. Para convertir una unidad mayor a una menor, multiplica. El área de un rectángulo es largo à ancho, y el perÃmetro es 2 à (largo + ancho). Un diagrama de puntos organiza datos de medición en una recta numérica, y puedes sumar o restar sus fracciones para responder preguntas. Los ángulos se miden en grados, un ángulo recto es de 90 grados, y las medidas de los ángulos se suman, asà que restas para hallar una parte que falta. Las figuras bidimensionales se clasifican por sus lados y ángulos, y un eje de simetrÃa divide una figura en mitades iguales. 314 315Mientras resuelves cada tarea, muestra tus pasos, justifica tu razonamiento y comprueba que cada respuesta sea razonable y esté rotulada con la unidad correcta. Estos hábitos âlos mismos que usan los buenos matemáticosâ han crecido todo el año, y esta semana es una oportunidad para celebrarlos y aplicarlos.`),activitySteps:[{title:O("Activity 1 â Mixed-review challenge","Actividad 1 â Reto de repaso mixto"),steps:se(["Work a set of problems covering conversions, area/perimeter, line plots, angles, and shapes.","Show your steps for each problem.","Label every answer with the correct unit.","Mark which Unit 4 skill each problem used."],["Resuelve un conjunto de problemas que cubra conversiones, área/perÃmetro, diagramas de puntos, ángulos y figuras.","Muestra tus pasos en cada problema.","Rotula cada respuesta con la unidad correcta.","Marca qué destreza de la Unidad 4 usó cada problema."])},{title:O("Activity 2 â Design and build","Actividad 2 â Diseña y construye"),steps:se(["Plan a simple design, like a banner or a garden.","Use a conversion and find an area or perimeter.","Include at least one angle and one classified shape.","Explain each math choice you made."],["Planea un diseño sencillo, como un banderÃn o un jardÃn.","Usa una conversión y halla un área o perÃmetro.","Incluye al menos un ángulo y una figura clasificada.","Explica cada decisión matemática que tomaste."])}],aiPromptExample:O("Prompt: 'Give me a design project that uses a conversion, area or perimeter, an angle, and a classified shape; then check my work step by step.'","Indicación: 'Dame un proyecto de diseño que use una conversión, área o perÃmetro, un ángulo y una figura clasificada; luego revisa mi trabajo paso a paso.'"),projectSteps:se(["Create a one-page 'measurement and geometry showcase' using at least four Unit 4 skills.","Include a unit conversion and an area or perimeter calculation.","Include an angle measure and a classified shape with its lines of symmetry.","Write a short reflection on how you have grown across the four units this year."],["Crea una 'exhibición de medición y geometrÃa' de una página que use al menos cuatro destrezas de la Unidad 4.","Incluye una conversión de unidades y un cálculo de área o perÃmetro.","Incluye una medida de ángulo y una figura clasificada con sus ejes de simetrÃa.","Escribe una breve reflexión sobre cómo has crecido en las cuatro unidades este año."]),expectedProduct:O("A one-page Unit 4 showcase combining a conversion, an area or perimeter, an angle measure, a classified shape with symmetry, and a year-end reflection.","Una exhibición de la Unidad 4 de una página que combina una conversión, un área o perÃmetro, una medida de ángulo, una figura clasificada con simetrÃa y una reflexión de fin de año.")}};[[1,1,"Place Value to One Million","Valor Posicional hasta el Millón","Place-Value City","La Ciudad del Valor Posicional","A labeled 'Place-Value City' page with place-value charts for three multi-digit numbers and a sentence about the ten-times pattern.","Una página de la 'Ciudad del Valor Posicional' con tablas de valor posicional para tres números de varios dÃgitos y una oración sobre el patrón de diez veces."],[2,1,"Read, Write, and Compare Multi-Digit Numbers","Leer, Escribir y Comparar Números de Varios DÃgitos","Number Forms Poster","Cartel de Formas de los Números","A poster showing three real numbers in all three forms, ordered least to greatest with comparison symbols and an explanation.","Un cartel que muestra tres números reales en las tres formas, ordenados de menor a mayor con sÃmbolos de comparación y una explicación."],[3,1,"Rounding Multi-Digit Numbers","Redondear Números de Varios DÃgitos","Estimation Shopping Trip","Viaje de Compras con Estimación","A shopping-trip page showing five prices rounded to estimate a total, plus the exact total and a comparison.","Una página del viaje de compras que muestra cinco precios redondeados para estimar un total, además del total exacto y una comparación."],[4,1,"Adding Multi-Digit Numbers","Sumar Números de Varios DÃgitos","Add It Up: Budget Builder","Suma Total: Constructor de Presupuesto","A budget page with at least four costs, an estimated total, an exact total found by the standard algorithm, and a reasonableness check.","Una página de presupuesto con al menos cuatro costos, un total estimado, un total exacto hallado con el algoritmo estándar y una comprobación de razonabilidad."],[5,1,"Subtracting Multi-Digit Numbers","Restar Números de Varios DÃgitos","How Much Farther? Distance Detective","¿Cuánto Más Lejos? Detective de Distancias","A 'distance detective' page comparing two distances with a worked subtraction (showing regrouping) and an addition check.","Una página de 'detective de distancias' que compara dos distancias con una resta resuelta (mostrando la reagrupación) y una comprobación con suma."],[6,1,"Multiplicative Comparison","Comparación Multiplicativa","Times as Many: Comparison Story","Veces Más: Historia de Comparación","A comparison story with a matching bar model and multiplication equation, plus an additive sentence showing the contrast.","Una historia de comparación con su modelo de barras y ecuación de multiplicación, además de una oración aditiva que muestra el contraste."],[7,1,"Multiplicative Comparison Word Problems","Problemas Verbales de Comparación Multiplicativa","Comparison Problem Workshop","Taller de Problemas de Comparación","A workshop page of three comparison word problems, each with a bar model, equation, solution, and the operation labeled.","Una página-taller de tres problemas de comparación, cada uno con modelo de barras, ecuación, solución y la operación etiquetada."],[8,1,"Multi-Step Word Problems","Problemas Verbales de Varios Pasos","Plan-a-Trip Multi-Step Challenge","Reto de Varios Pasos: Planea un Viaje","A trip-planning page solving a multi-step problem with labeled equations, a remainder interpretation, and a reasonableness check.","Una página de planeación de un viaje que resuelve un problema de varios pasos con ecuaciones etiquetadas, una interpretación del residuo y una comprobación de razonabilidad."],[9,1,"Unit 1 Application and Review","Aplicación y Repaso de la Unidad 1","Unit 1 Math Showcase","Exhibición Matemática de la Unidad 1","A one-page Unit 1 showcase combining number forms, a comparison, a solved multi-step problem with estimation, and a short reflection.","Una exhibición de la Unidad 1 de una página que combina formas de los números, una comparación, un problema de varios pasos resuelto con estimación y una breve reflexión."],[10,2,"Multiply Up to Four Digits by One Digit","Multiplicar hasta Cuatro DÃgitos por Un DÃgito","Area-Model Multiplication Poster","Cartel de Multiplicación con Modelo de Ãrea","A poster showing a real-world multiplication solved with an area model, partial products, the total, and a reasonableness check.","Un cartel que muestra una multiplicación del mundo real resuelta con un modelo de área, productos parciales, el total y una comprobación de razonabilidad."],[11,2,"Multiply Two Two-Digit Numbers","Multiplicar Dos Números de Dos DÃgitos","Two-Digit Multiplication Challenge","Reto de Multiplicación de Dos DÃgitos","A page showing a real grid multiplied with a four-region area model, all four partial products, the total, and a comparison to an estimate.","Una página que muestra una cuadrÃcula real multiplicada con un modelo de área de cuatro regiones, los cuatro productos parciales, el total y una comparación con una estimación."],[12,2,"Division
315with Remainders","División con Residuos","Remainder Story Workshop","Taller de Historias con Residuo","A 'remainder story' page with a real sharing problem solved into a quotient and remainder, plus a sentence interpreting the remainder.","Una página de 'historia con residuo' con un problema real de reparto resuelto en cociente y residuo, además de una oración que interpreta el residuo."],[13,2,"Division Strategies with Larger Dividends","Estrategias de División con Dividendos Mayores","Place-Value Division Lab","Laboratorio de División por Valor Posicional","A 'division lab' page solving a 3-digit division with partial quotients, an estimate, a multiplication check, and a comparison.","Una página de 'laboratorio de división' que resuelve una división de 3 dÃgitos con cocientes parciales, una estimación, una comprobación con multiplicación y una comparación."],[14,2,"Multi-Step Multiplication and Division Problems","Problemas de Varios Pasos con Multiplicación y División","Plan-an-Event Multi-Step Challenge","Reto de Varios Pasos: Organiza un Evento","A 'plan-an-event' page with a two-step problem solved with labeled steps, an interpreted remainder, and a reasonableness check.","Una página de 'organiza un evento' con un problema de dos pasos resuelto con pasos etiquetados, un residuo interpretado y una comprobación de razonabilidad."],[15,2,"Factors and Multiples","Factores y Múltiplos","Factor & Multiple Explorer","Explorador de Factores y Múltiplos","An 'explorer' page showing every factor-pair array for a chosen number, its full factor list, its first multiples, and an explanation.","Una página de 'explorador' que muestra cada matriz de pares de factores de un número elegido, su lista completa de factores, sus primeros múltiplos y una explicación."],[16,2,"Prime and Composite Numbers","Números Primos y Compuestos","Prime & Composite Number Hunt","Búsqueda de Números Primos y Compuestos","A 1â50 chart classifying each number as prime, composite, or neither, with primes highlighted and a note on a tricky case.","Una tabla del 1 al 50 que clasifica cada número como primo, compuesto o ninguno, con los primos resaltados y una nota sobre un caso difÃcil."],[17,2,"Number and Shape Patterns","Patrones Numéricos y de Figuras","Pattern Detective Showcase","Exhibición del Detective de Patrones","A 'pattern detective' page with a number pattern and a shape pattern, each rule stated, plus one labeled hidden feature and its explanation.","Una página de 'detective de patrones' con un patrón numérico y uno de figuras, cada regla indicada, además de una caracterÃstica oculta etiquetada y su explicación."],[18,2,"Unit 2 Application and Review","Aplicación y Repaso de la Unidad 2","Unit 2 Math Showcase","Exhibición Matemática de la Unidad 2","A one-page Unit 2 showcase combining a multiplication, a division with a remainder, a factor or prime/composite example, a pattern, and a short reflection.","Una exhibición de la Unidad 2 de una página que combina una multiplicación, una división con residuo, un ejemplo de factor o primo/compuesto, un patrón y una breve reflexión."],[19,3,"Understand and Find Equivalent Fractions","Comprender y Hallar Fracciones Equivalentes","Equivalent Fractions Poster","Cartel de Fracciones Equivalentes","An equivalent-fractions poster showing three fractions, each with a model, two equivalents, and a number-line check.","Un cartel de fracciones equivalentes que muestra tres fracciones, cada una con un modelo, dos equivalentes y una comprobación en la recta numérica."],[20,3,"Generate and Simplify Equivalent Fractions","Crear y Simplificar Fracciones Equivalentes","Simplest-Form Sorting Game","Juego de Clasificación en Forma Más Simple","A sorting game with fraction cards grouped by simplest form, with each simplification showing the common factor used.","Un juego de clasificación con tarjetas de fracciones agrupadas por forma más simple, donde cada simplificación muestra el factor común usado."],[21,3,"Compare Fractions","Comparar Fracciones","Fraction Comparison Challenge","Reto de Comparación de Fracciones","A comparison page with four fraction pairs, each compared with a justified strategy, plus an ordered list from least to greatest.","Una página de comparación con cuatro pares de fracciones, cada uno comparado con una estrategia justificada, además de una lista ordenada de menor a mayor."],[22,3,"Add and Subtract Fractions with Like Denominators","Sumar y Restar Fracciones con Igual Denominador","Fraction Recipe Workshop","Taller de Recetas con Fracciones","A fraction recipe page with at least one like-denominator addition and one subtraction, each solved with an explanation of why the denominator stays the same.","Una página de receta con fracciones con al menos una suma y una resta de igual denominador, cada una resuelta con una explicación de por qué el denominador se mantiene."],[23,3,"Add and Subtract Mixed Numbers","Sumar y Restar Números Mixtos","Mixed-Number Journey Map","Mapa de Recorrido con Números Mixtos","A journey map or recipe with one mixed-number addition and one subtraction, each solved by parts, with one answer verified as an improper fraction.","Un mapa de recorrido o re
315ceta con una suma y una resta de números mixtos, cada una resuelta por partes, con una respuesta verificada como fracción impropia."],[24,3,"Multiply a Fraction by a Whole Number","Multiplicar una Fracción por un Número Entero","Fraction Multiplication Recipe Scale-Up","Ampliación de Receta con Multiplicación de Fracciones","A scaled-up recipe showing a whole number times a fraction solved two ways, with the final amount written as a mixed number and unit.","Una receta ampliada que muestra un número entero por una fracción resuelta de dos formas, con la cantidad final escrita como número mixto y unidad."],[25,3,"Tenths, Hundredths, and Decimal Fractions","Décimas, Centésimas y Fracciones Decimales","Hundredths-Grid Decimal Art","Arte Decimal en CuadrÃcula de Centésimas","A hundredths-grid artwork labeled with fractions of 100, including one tenths-to-hundredths rename and one added total in hundredths.","Una obra en cuadrÃcula de centésimas rotulada con fracciones de 100, incluyendo un cambio de décimas a centésimas y un total sumado en centésimas."],[26,3,"Decimal Notation and Comparing Decimals","Notación Decimal y Comparación de Decimales","Decimal Comparison Number Line","Recta Numérica de Comparación de Decimales","A decimal number line placing five decimals from 0 to 1, each linked to its fraction, with an ordered list and one written comparison.","Una recta numérica decimal que coloca cinco decimales de 0 a 1, cada uno ligado a su fracción, con una lista ordenada y una comparación escrita."],[27,3,"Unit 3 Application and Review","Aplicación y Repaso de la Unidad 3","Unit 3 Fraction & Decimal Showcase","Exhibición de Fracciones y Decimales de la Unidad 3","A one-page Unit 3 showcase combining equivalent fractions, a comparison, a fraction operation, a fraction-to-decimal conversion, and a short reflection.","Una exhibición de la Unidad 3 de una página que combina fracciones equivalentes, una comparación, una operación con fracciones, una conversión de fracción a decimal y una breve reflexión."],[28,4,"Measurement Units and Conversions","Unidades de Medida y Conversiones","Measurement Conversion Chart","Tabla de Conversión de Medidas","A one-page conversion chart covering length, mass, volume, and time, with one worked example per category and an explanation of the multiply rule.","Una tabla de conversión de una página que cubre longitud, masa, volumen y tiempo, con un ejemplo resuelto por categorÃa y una explicación de la regla de multiplicar."],[29,4,"Solve Measurement Word Problems","Resolver Problemas Verbales de Medición","Measurement Story Problems","Problemas Narrativos de Medición","A set of four measurement story problems (distance, time, volume, money) with worked solutions, one bar diagram, and a labeled answer key.","Un conjunto de cuatro problemas narrativos de medición (distancia, tiempo, volumen, dinero) con soluciones resueltas, un diagrama de barras y una clave de respuestas rotulada."],[30,4,"Area and Perimeter","Ãrea y PerÃmetro","Design a Room Floor Plan","Diseña el Plano de una Habitación","A labeled room floor plan on grid paper with the area (for carpet) and perimeter (for trim) computed and explained.","Un plano de habitación rotulado en papel cuadriculado con el área (para la alfombra) y el perÃmetro (para el zócalo) calculados y explicados."],[31,4,"Line Plots with Fractions","Diagramas de Puntos con Fracciones","Class Measurement Line Plot","Diagrama de Puntos de Medición de la Clase","A titled line plot with a fractional scale plus three answered questions (including a total and a difference) that show the fraction work.","Un diagrama de puntos con tÃtulo y escala fraccionaria, además de tres preguntas respondidas (incluyendo un total y una diferencia) que muestran el trabajo con fracciones."],[32,4,"Angles and the Protractor","Ãngulos y el Transportador","Angle Hunt and Measure","Búsqueda y Medición de Ãngulos","An angle-hunt record of five real angles with estimates, protractor measures, and classifications, plus two accurately drawn, labeled angles.","Un registro de búsqueda de cinco ángulos reales con estimaciones, medidas con transportador y clasificaciones, además de dos ángulos dibujados con precisión y rotulados."],[33,4,"Adding and Subtracting Angle Measures","Sumar y Restar Medidas de Ãngulos","Unknown Angle Puzzles","Acertijos de Ãngulos Desconocidos","A set of four unknown-angle puzzles, each with an equation and a solution, plus an answer key.","Un conjunto de cuatro acertijos de ángulos de
315sconocidos, cada uno con una ecuación y una solución, más una clave de respuestas."],[34,4,"Points, Lines, Rays, and Angles","Puntos, Rectas, Rayos y Ãngulos","Geometry Building Blocks Poster","Cartel de Bloques de Construcción Geométricos","A geometry building-blocks poster with labeled point, line, ray, segment, and angle, real-world parallel and perpendicular examples, and a definition for each term.","Un cartel de bloques de construcción geométricos con punto, recta, rayo, segmento y ángulo rotulados, ejemplos reales de paralelas y perpendiculares, y una definición de cada término."],[35,4,"Classify Shapes and Lines of Symmetry","Clasificar Figuras y Ejes de SimetrÃa","Symmetry Art Gallery","GalerÃa de Arte con SimetrÃa","A symmetry art gallery of four classified shapes, each with all lines of symmetry drawn and a caption naming the shape and its symmetry count.","Una galerÃa de arte con simetrÃa de cuatro figuras clasificadas, cada una con todos los ejes de simetrÃa dibujados y un pie que nombra la figura y su número de ejes de simetrÃa."],[36,4,"Unit 4 and Course Application and Review","Aplicación y Repaso de la Unidad 4 y del Curso","Unit 4 Measurement & Geometry Showcase","Exhibición de Medición y GeometrÃa de la Unidad 4","A one-page Unit 4 showcase combining a conversion, an area or perimeter, an angle measure, a classified shape with symmetry, and a year-end reflection.","Una exhibición de la Unidad 4 de una página que combina una conversión, un área o perÃmetro, una medida de ángulo, una figura clasificada con simetrÃa y una reflexión de fin de año."]].map(([e,t,r,s,c,d,m,h])=>({week:e,unitId:t,lessonTitle:{en:r,es:s},taskTitle:{en:c,es:d},expectedProduct:{en:m,es:h}}));const l=(e,t)=>({en:e,es:t}),Ve=[l("True","Verdadero"),l("False","Falso")],M=l("Correct â your choice matches the mathematical idea.","Correcto: tu elección coincide con la idea matemática."),P=l("Not quite â check the place value, operation, or definition and try again.","No exactamente: revisa el valor posicional, la operación o la definición e inténtalo de nuevo."),NP={1:e=>[{id:`w${e}-q1`,type:"multipleChoice",prompt:l("In the number 4,000, the 4 is worth how many times the 4 in 400?","En el número 4,000, el 4 vale cuántas veces el 4 de 400?"),options:[l("10 times","10 veces"),l("100 times","100 veces"),l("The same","Lo mismo"),l("1,000 times","1,000 veces")],correctAnswer:"10 times",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("A digit in one place is worth 10 times the same digit in the place to its right.","Un dÃgito en un lugar vale 10 veces el mismo dÃgito en el lugar a su derecha.")},{id:`w${e}-q2`,type:"multipleChoice",prompt:l("What is the value of the digit 7 in 273,816?","¿Cuál es el valor del dÃgito 7 en 273,816?"),options:[l("7","7"),l("700","700"),l("7,000","7,000"),l("70,000","70,000")],correctAnswer:"70,000",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("The 7 is in the ten-thousands place, so its value is 70,000.","El 7 está en las decenas de millar, asà que su valor es 70,000.")},{id:`w${e}-q3`,type:"multipleChoice",prompt:l("Which place is just to the left of the thousands place?","¿Qué lugar está justo a la izquierda de las unidades de millar?"),options:[l("Hundreds","Centenas"),l("Ten-thousands","Decenas de millar"),l("Hundred-thousands","Centenas de millar"),l("Millions","Millones")],correctAnswer:"Ten-thousands",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Places from right to left: ones, tens, hundreds, thousands, ten-thousands.","Lugares de derecha a izquierda: unidades, decenas, centenas, unidades de millar, decenas de millar.")},{id:`w${e}-q4`,type:"trueFalse",prompt:l("In 5,500 the first 5 is worth 10 times the second 5.","En 5,500 el primer 5 vale 10 veces el segundo 5."),options:Ve,correctAnswer:"True",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("5,000 is 10 times 500, so the first 5 is worth 10 times the second.","5,000 es 10 veces 500, asà que el primer 5 vale 10 veces el segundo.")},{id:`w${e}-q5`,type:"fillBlank",prompt:l("The value of the digit 3 in 35,210 is ____.","El valor del dÃgito 3 en 35,210 es ____."),acceptableAnswers:["30000","30,000","thirty thousand","treinta mil"],feedbackCorrect:M,feedbackIncorrect:P,explanation:l("The 3 is in the ten-thousands place: 30,000.","El 3 está en las decenas de millar: 30,000.")},{id:`w${e}-q6`,type:"fillBlank",prompt:l("A digit in one place is worth ____ times as much as the same digit one place to its right.","Un dÃgito en un lugar vale ____ veces lo que el mismo dÃgito un lugar a su derecha."),acceptableAnswers:["10","ten","diez"],feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Our base-ten system uses groups of 10, so each place is 10 times the one to its right.","Nuestro sistema de base diez usa grupos de 10, por eso cada lugar vale 10 veces el de su derecha.")},{id:`w${e}-q7`,type:"shortAnswer",prompt:l("Explain how you know the value of the digit 6 in 364,205.","Explica cómo
315sabes el valor del dÃgito 6 en 364,205."),feedbackCorrect:M,feedbackIncorrect:P,explanation:l("The 6 is in the ten-thousands place, so its value is 60,000.","El 6 está en las decenas de millar, asà que su valor es 60,000.")},{id:`w${e}-q8`,type:"reflection",prompt:l("Why is it useful to know that each place is 10 times the place to its right?","¿Por qué es útil saber que cada lugar vale 10 veces el lugar a su derecha?"),feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Reflection question â full credit for a thoughtful answer.","Pregunta de reflexión â crédito completo por una respuesta reflexiva.")}],2:e=>[{id:`w${e}-q1`,type:"multipleChoice",prompt:l("Which is the expanded form of 4,072?","¿Cuál es la forma desarrollada de 4,072?"),options:[l("4,000 + 72","4,000 + 72"),l("4,000 + 70 + 2","4,000 + 70 + 2"),l("400 + 70 + 2","400 + 70 + 2"),l("4,000 + 700 + 2","4,000 + 700 + 2")],correctAnswer:"4,000 + 70 + 2",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("4,072 = 4,000 + 0 hundreds + 70 + 2.","4,072 = 4,000 + 0 centenas + 70 + 2.")},{id:`w${e}-q2`,type:"multipleChoice",prompt:l("Which symbol makes this true: 52,318 ___ 52,381?","¿Qué sÃmbolo lo hace verdadero: 52,318 ___ 52,381?"),options:[l(">",">"),l("<","<"),l("=","="),l("None","Ninguno")],correctAnswer:"<",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("They match until the tens place: 1 ten < 8 tens, so 52,318 < 52,381.","Coinciden hasta las decenas: 1 decena < 8 decenas, asà que 52,318 < 52,381.")},{id:`w${e}-q3`,type:"multipleChoice",prompt:l("How do you write 'sixty thousand, four hundred five' in standard form?","¿Cómo se escribe 'sesenta mil cuatrocientos cinco' en forma estándar?"),options:[l("60,405","60,405"),l("64,005","64,005"),l("60,045","60,045"),l("604,005","604,005")],correctAnswer:"60,405",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("60,000 + 400 + 5 = 60,405. The tens place is 0.","60,000 + 400 + 5 = 60,405. Las decenas son 0.")},{id:`w${e}-q4`,type:"trueFalse",prompt:l("To compare two numbers with the same number of digits, start from the left.","Para comparar dos números con la misma cantidad de dÃgitos, empieza por la izquierda."),options:Ve,correctAnswer:"True",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Compare the highest place value first, then move right until the digits differ.","Compara primero el lugar de mayor valor y avanza a la derecha hasta que los dÃgitos difieran.")},{id:`w${e}-q5`,type:"fillBlank",prompt:l("Write 30,000 + 500 + 8 in standard form: ____.","Escribe 30,000 + 500 + 8 en forma estándar: ____."),acceptableAnswers:["30508","30,508"],feedbackCorrect:M,feedbackIncorrect:P,explanation:l("30,000 + 500 + 8 = 30,508 (the tens digit is 0).","30,000 + 500 + 8 = 30,508 (las decenas son 0).")},{id:`w${e}-q6`,type:"fillBlank",prompt:l("Compare with >, <, or =: 18,640 ____ 18,604.","Compara con >, <, o =: 18,640 ____ 18,604."),acceptableAnswers:[">","greater","mayor"],feedbackCorrect:M,feedbackIncorrect:P,explanation:l("In the tens place 4 > 0, so 18,640 > 18,604.","En las decenas 4 > 0, asà que 18,640 > 18,604.")},{id:`w${e}-q7`,type:"shortAnswer",prompt:l("Write 25,304 in expanded form and in word form.","Escribe 25,304 en forma desarrollada y en palabras."),feedbackCorrect:M,feedbackIncorrect:P,explanation:l("20,000 + 5,000 + 300 + 4; 'twenty-five thousand, three hundred four'.","20,000 + 5,000 + 300 + 4; 'veinticinco mil trescientos cuatro'.")},{id:`w${e}-q8`,type:"reflection",prompt:l("Which form â standard, expanded, or word â helps you understand a number best, and why?","¿Qué forma â estándar, desarrollada o en palabras â te ayuda más a entender un número y por qué?"),feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Reflection question â full credit for a thoughtful answer.","Pregunta de reflexión â crédito completo por una respuesta reflexiva.")}],3:e=>[{id:`w${e}-q1`,type:"multipleChoice",prompt:l("Round 4,728 to the nearest hundred.","Redondea 4,728 a la centena más cercana."),options:[l("4,700","4,700"),l("4,800","4,800"),l("4,730","4,730"),l("5,000","5,000")],correctAnswer:"4,700",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("The tens digit is 2 (less than 5), so round down to 4,700.","Las decenas son 2 (menor que 5), asà que se redondea hacia abajo a 4,700.")},{id:`w${e}-q2`,type:"multipleChoice",prompt:l("Round 36,500 to the nearest thousand.","Redondea 36,500 al millar más cercano."),options:[l("36,000","36,000"),l("37,000","37,000"),l("36,500","36,500"),l("40,000","40,000")],correctAnswer:"37,000",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("The hundreds digit is 5, so round up to 37,000.","Las centenas son 5, asà que se redondea hacia arriba a 37,000.")},{id:`w${e}-q3`,type:"multipleChoice",prompt:l("To round to the nearest ten-thousand, which digit do you look at?","Para redondear a la decena de millar más cercana, ¿qué dÃgito miras?"),options:[l("The thousands digit","El dÃgito de las unidades de millar"),l("The hundreds digit","El dÃgito de las centenas"),l("The ten-thousands digit","El dÃgito de las decenas de millar"),l("The tens digit","El dÃgito de las decenas")],correctAnswer:"The thousands digit",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Look at the digit to the right of the rounding place â the thousands digit.","Mira el dÃgito a la derecha del lugar de redondeo â las unidades de millar.")},{id:`w${e}-q4`,type:"trueFalse",prompt:l("When the digit to the right is 5 or more, you round up.","Cuando el dÃgito de la derecha es 5 o más, se redondea hacia arriba."),options:Ve,correctAnswer:"True",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("5, 6, 7, 8, 9 round up; 0, 1, 2, 3, 4 round down.","5, 6, 7, 8, 9 redondean hacia arriba; 0, 1, 2, 3, 4 hacia abajo.")},{id:`w${e}
315-q5`,type:"fillBlank",prompt:l("Round 2,149 to the nearest hundred: ____.","Redondea 2,149 a la centena más cercana: ____."),acceptableAnswers:["2100","2,100"],feedbackCorrect:M,feedbackIncorrect:P,explanation:l("The tens digit is 4 (less than 5), so round down to 2,100.","Las decenas son 4 (menor que 5), asà que se redondea a 2,100.")},{id:`w${e}-q6`,type:"fillBlank",prompt:l("Round 58,372 to the nearest thousand: ____.","Redondea 58,372 al millar más cercano: ____."),acceptableAnswers:["58000","58,000"],feedbackCorrect:M,feedbackIncorrect:P,explanation:l("The hundreds digit is 3 (less than 5), so round down to 58,000.","Las centenas son 3 (menor que 5), asà que se redondea a 58,000.")},{id:`w${e}-q7`,type:"shortAnswer",prompt:l("A stadium holds 23,650 people. Round this to the nearest thousand and explain your steps.","Un estadio tiene capacidad para 23,650 personas. Redondéalo al millar más cercano y explica tus pasos."),feedbackCorrect:M,feedbackIncorrect:P,explanation:l("The hundreds digit is 6 (5 or more), so round up to 24,000.","Las centenas son 6 (5 o más), asà que se redondea a 24,000.")},{id:`w${e}-q8`,type:"reflection",prompt:l("When in real life is an estimate (a rounded number) more useful than an exact number?","¿Cuándo en la vida real es más útil una estimación (un número redondeado) que un número exacto?"),feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Reflection question â full credit for a thoughtful answer.","Pregunta de reflexión â crédito completo por una respuesta reflexiva.")}],4:e=>[{id:`w${e}-q1`,type:"multipleChoice",prompt:l("What is 3,456 + 2,375?","¿Cuánto es 3,456 + 2,375?"),options:[l("5,721","5,721"),l("5,831","5,831"),l("5,731","5,731"),l("6,831","6,831")],correctAnswer:"5,831",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("6+5=11 (carry 1), 5+7+1=13 (carry 1), 4+3+1=8, 3+2=5 â 5,831.","6+5=11 (llevas 1), 5+7+1=13 (llevas 1), 4+3+1=8, 3+2=5 â 5,831.")},{id:`w${e}-q2`,type:"multipleChoice",prompt:l("When a column adds to 10 or more, what do you do?","Cuando una columna suma 10 o más, ¿qué haces?"),options:[l("Erase a digit","Borras un dÃgito"),l("Regroup (carry) to the next place","Reagrupas (llevas) al siguiente lugar"),l("Round both addends first","Redondeas primero ambos sumandos"),l("Subtract instead","Restas en su lugar")],correctAnswer:"Regroup (carry) to the next place",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("You carry the extra ten into the next place to the left.","Llevas la decena extra al siguiente lugar a la izquierda.")},{id:`w${e}-q3`,type:"multipleChoice",prompt:l("What is 12,608 + 7,495?","¿Cuánto es 12,608 + 7,495?"),options:[l("20,103","20,103"),l("19,103","19,103"),l("20,003","20,003"),l("19,993","19,993")],correctAnswer:"20,103",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("12,608 + 7,495 = 20,103.","12,608 + 7,495 = 20,103.")},{id:`w${e}-q4`,type:"trueFalse",prompt:l("You can check a sum by estimating with rounded numbers.","Puedes comprobar una suma estimando con números redondeados."),options:Ve,correctAnswer:"True",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Estimating (e.g., 3,500 + 2,400 â 5,900) tells you if your answer is reasonable.","Estimar (p. ej., 3,500 + 2,400 â 5,900) te dice si tu resultado es razonable.")},{id:`w${e}-q5`,type:"fillBlank",prompt:l("5,280 + 3,640 = ____.","5,280 + 3,640 = ____."),acceptableAnswers:["8920","8,920"],feedbackCorrect:M,feedbackIncorrect:P,explanation:l("5,280 + 3,640 = 8,920.","5,280 + 3,640 = 8,920.")},{id:`w${e}-q6`,type:"fillBlank",prompt:l("A library has 14,250 books and adds 3,890 more. Total books: ____.","Una biblioteca tiene 14,250 libros y agrega 3,890 más. Total de libros: ____."),acceptableAnswers:["18140","18,140"],feedbackCorrect:M,feedbackIncorrect:P,explanation:l("14,250 + 3,890 = 18,140.","14,250 + 3,890 = 18,140.")},{id:`w${e}-q7`,type:"shortAnswer",prompt:l("Add 8,475 + 6,238 using the standard algorithm and show where you regroup.","Suma 8,475 + 6,238 con el algoritmo estándar y muestra dónde reagrupas."),feedbackCorrect:M,feedbackIncorrect:P,explanation:l("5+8=13 (carry 1), 7+3+1=11 (carry 1), 4+2+1=7, 8+6=14 â 14,713.","5+8=13 (llevas 1), 7+3+1=11 (llevas 1), 4+2+1=7, 8+6=14 â 14,713.")},{id:`w${e}-q8`,type:"reflection",prompt:l("How does estimating before you add help you catch mistakes?","¿Cómo te ayuda estimar antes de sumar a detectar errores?"),feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Reflection question â full credit for a thoughtful answer.","Pregunta de reflexión â cr
315édito completo por una respuesta reflexiva.")}],5:e=>[{id:`w${e}-q1`,type:"multipleChoice",prompt:l("What is 6,002 â 1,478?","¿Cuánto es 6,002 â 1,478?"),options:[l("4,524","4,524"),l("4,624","4,624"),l("5,524","5,524"),l("4,534","4,534")],correctAnswer:"4,524",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("6,002 â 1,478 = 4,524 (you regroup across the zeros).","6,002 â 1,478 = 4,524 (reagrupas a través de los ceros).")},{id:`w${e}-q2`,type:"multipleChoice",prompt:l("To subtract when the top digit is smaller, you must:","Para restar cuando el dÃgito de arriba es menor, debes:"),options:[l("Carry to the left","Llevar a la izquierda"),l("Regroup (borrow) from the next place","Reagrupar (pedir prestado) del siguiente lugar"),l("Round first","Redondear primero"),l("Add instead","Sumar en su lugar")],correctAnswer:"Regroup (borrow) from the next place",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("You regroup ten from the place to the left so you have enough to subtract.","Reagrupas diez del lugar a la izquierda para tener suficie
315nte para restar.")},{id:`w${e}-q3`,type:"multipleChoice",prompt:l("What is 25,000 â 13,750?","¿Cuánto es 25,000 â 13,750?"),options:[l("11,250","11,250"),l("12,250","12,250"),l("11,350","11,350"),l("12,750","12,750")],correctAnswer:"11,250",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("25,000 â 13,750 = 11,250.","25,000 â 13,750 = 11,250.")},{id:`w${e}-q4`,type:"trueFalse",prompt:l("You can check a subtraction by adding the answer to the number you subtracted.","Puedes comprobar una resta sumando el resultado al número que restaste."),options:Ve,correctAnswer:"True",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("If difference + subtrahend = the original number, your answer is correct.","Si diferencia + sustraendo = número original, tu respuesta es correcta.")},{id:`w${e}-q5`,type:"fillBlank",prompt:l("9,140 â 5,620 = ____.","9,140 â 5,620 = ____."),acceptableAnswers:["3520","3,520"],feedbackCorrect:M,feedbackIncorrect:P,explanation:l("9,140 â 5,620 = 3,520.","9,140 â 5,620 = 3,520.")},{id:`w${e}-q6`,type:"fillBlank",prompt:l("A theater has 12,000 seats; 7,845 are sold. Seats left: ____.","Un teatro tiene 12,000 asientos; se vendieron 7,845. Asientos disponibles: ____."),acceptableAnswers:["4155","4,155"],feedbackCorrect:M,feedbackIncorrect:P,explanation:l("12,000 â 7,845 = 4,155.","12,000 â 7,845 = 4,155.")},{id:`w${e}-q7`,type:"shortAnswer",prompt:l("Subtract 7,000 â 2,386 and explain how you regroup across the zeros.","Resta 7,000 â 2,386 y explica cómo reagrupas a través de los ceros."),feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Regroup from 7,000 to get 6,999 + 1; 7,000 â 2,386 = 4,614.","Reagrupa de 7,000 a 6,999 + 1; 7,000 â 2,386 = 4,614.")},{id:`w${e}-q8`,type:"reflection",prompt:l("Why is checking your subtraction with addition a good habit?","¿Por qué es buen hábito comprobar la resta con la suma?"),feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Reflection question â full credit for a thoughtful answer.","Pregunta de reflexión â crédito completo por una respuesta reflexiva.")}],6:e=>[{id:`w${e}-q1`,type:"multipleChoice",prompt:l("Which sentence matches '35 is 5 times as many as 7'?","¿Qué oración corresponde a '35 es 5 veces 7'?"),options:[l("35 = 5 à 7","35 = 5 à 7"),l("35 = 5 + 7","35 = 5 + 7"),l("35 = 7 â 5","35 = 7 â 5"),l("35 = 7 ÷ 5","35 = 7 ÷ 5")],correctAnswer:"35 = 5 à 7",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("'Times as many' means multiply: 5 à 7 = 35.","'Veces' significa multiplicar: 5 à 7 = 35.")},{id:`w${e}-q2`,type:"multipleChoice",prompt:l("The equation 24 = 4 à 6 can be read as:","La ecuación 24 = 4 à 6 se puede leer como:"),options:[l("24 is 4 more than 6","24 es 4 más que 6"),l("24 is 4 times as many as 6","24 es 4 veces 6"),l("24 is 4 less than 6","24 es 4 menos que 6"),l("24 is half of 6","24 es la mitad de 6")],correctAnswer:"24 is 4 times as many as 6",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("A multiplication equation is a multiplicative comparison: 24 is 4 times as many as 6.","Una ecuación de multiplicación es una comparación multiplicativa: 24 es 4 veces 6.")},{id:`w${e}-q3`,type:"multipleChoice",prompt:l("'8 more than 5' and '8 times as many as 5' are:","'8 más que 5' y '8 veces 5' son:"),options:[l("The same","Lo mismo"),l("Different â one adds, one multiplies","Diferentes â una suma, otra multiplica"),l("Both subtraction","Ambas restan"),l("Both division","Ambas dividen")],correctAnswer:"Different â one adds, one multiplies",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("'More than' is additive (5+8=13); 'times as many' is multiplicative (5Ã8=40).","'Más que' es aditivo (5+8=13); 'veces' es multiplicativo (5Ã8=40).")},{id:`w${e}-q4`,type:"trueFalse",prompt:l("'3 times as many as 6' equals 18.","'3 veces 6' es igual a 18."),options:Ve,correctAnswer:"True",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("3 à 6 = 18.","3 à 6 = 18.")},{id:`w${e}-q5`,type:"fillBlank",prompt:l("Write a multiplication equation for '42 is 6 times as many as 7': ____.","Escribe una ecuación de multiplicación para '42 es 6 veces 7': ____."),acceptableAnswers:["42=6x7","42 = 6 x 7","6x7=42","6 x 7 = 42","42=6Ã7","42 = 6 à 7","6Ã7=42","6 à 7 = 42"],feedbackCorrect:M,feedbackIncorrect:P,explanation:l("42 = 6 à 7.","42 = 6 à 7.")},{id:`w${e}-q6`,type:"fillBlank",prompt:l("Maria has 4 stickers. Leo has 3 times as many. Leo has ____ stickers.","MarÃa tiene 4 calcomanÃas. Leo tiene 3 veces esa cantidad. Leo tiene ____ calcomanÃas."),acceptableAnswers:["12","twelve","doce"],feedbackCorrect:M,feedbackIncorrect:P,explanation:l("3 à 4 = 12.","3 à 4 = 12.")},{id:`w${e}-q7`,type:"shortAnswer",prompt:l("Write one sentence using 'times as many' and the matching multiplication equation.","Escribe una oración usando 'veces' y la ecuación de multiplicación correspondiente."),feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Example: '20 is 4 times as many as 5' â 20 = 4 à 5.","Ejemplo: '20 es 4 veces 5' â 20 = 4 à 5.")},{id:`w${e}-q8`,type:"reflection",prompt:l("How is 'times as many' different from 'more than'? Give an example.","¿En qué se diferencia 'veces' de 'más que'? Da un ejemplo."),feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Reflection question â full credit for a thoughtful answer.","Pregunta de reflexión â cr
315édito completo por una respuesta reflexiva.")}],7:e=>[{id:`w${e}-q1`,type:"multipleChoice",prompt:l("A dog weighs 6 kg. A horse weighs 8 times as much. How much does the horse weigh?","Un perro pesa 6 kg. Un caballo pesa 8 veces eso. ¿Cuánto pesa el caballo?"),options:[l("14 kg","14 kg"),l("48 kg","48 kg"),l("2 kg","2 kg"),l("36 kg","36 kg")],correctAnswer:"48 kg",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("8 times as much: 8 à 6 = 48 kg.","8 veces: 8 à 6 = 48 kg.")},{id:`w${e}-q2`,type:"multipleChoice",prompt:l("Sam read 45 pages. That is 5 times as many as Ann. How many pages did Ann read?","Sam leyó 45 páginas. Eso es 5 veces lo de Ana. ¿Cuántas páginas leyó Ana?"),options:[l("9","9"),l("40","40"),l("50","50"),l("225","225")],correctAnswer:"9",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Find the unknown factor: 45 ÷ 5 = 9.","Busca el factor desconocido: 45 ÷ 5 = 9.")},{id:`w${e}-q3`,type:"multipleChoice",prompt:l("Which equation solves 'Ben has 7 marbles; Tia has 4 times as many. How many does Tia have?'","¿Qué ecuación resuelve 'Ben tiene 7 canicas; TÃa tiene 4 veces esa cantidad. ¿Cuántas tiene TÃa?'"),options:[l("7 + 4 = ?","7 + 4 = ?"),l("4 à 7 = ?","4 à 7 = ?"),l("7 â 4 = ?","7 â 4 = ?"),l("7 ÷ 4 = ?","7 ÷ 4 = ?")],correctAnswer:"4 à 7 = ?",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("'4 times as many' means 4 à 7 = 28.","'4 veces' significa 4 à 7 = 28.")},{id:`w${e}-q4`,type:"trueFalse",prompt:l("To find an unknown factor in a 'times as many' problem, you can divide.","Para hallar un factor desconocido en un problema de 'veces', puedes dividir."),options:Ve,correctAnswer:"True",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Multiplication and division are inverse operations, so you can divide to find a missing factor.","La multiplicación y la división son operaciones inversas, asà que puedes dividir para hallar un factor faltante.")},{id:`w${e}-q5`,type:"fillBlank",prompt:l("A cat is 3 kg. A dog is 9 kg. The dog is ____ times as heavy as the cat.","Un gato pesa 3 kg. Un perro pesa 9 kg. El perro pesa ____ veces lo del gato."),acceptableAnswers:["3","three","tres"],feedbackCorrect:M,feedbackIncorrect:P,explanation:l("9 ÷ 3 = 3, so the dog is 3 times as heavy.","9 ÷ 3 = 3, asà que el perro pesa 3 veces más.")},{id:`w${e}-q6`,type:"fillBlank",prompt:l("There are 8 red pens and 6 times as many blue pens. Number of blue pens: ____.","Hay 8 plumas rojas y 6 veces esa cantidad de plumas azules. Número de plumas azules: ____."),acceptableAnswers:["48","forty-eight","cuarenta y ocho"],feedbackCorrect:M,feedbackIncorrect:P,explanation:l("6 à 8 = 48.","6 à 8 = 48.")},{id:`w${e}-q7`,type:"shortAnswer",prompt:l("Write your own 'times as many' word problem and solve it with an equation.","Escribe tu propio problema de 'veces' y resuélvelo con una ecuación."),feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Example: 'A ribbon is 5 cm; a rope is 7 times as long.' 7 à 5 = 35 cm.","Ejemplo: 'Una cinta mide 5 cm; una cuerda es 7 veces más larga.' 7 à 5 = 35 cm.")},{id:`w${e}-q8`,type:"reflection",prompt:l("How do you decide whether to multiply or divide in a 'times as many' problem?","¿Cómo decides si multiplicar o dividir en un problema de 'veces'?"),feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Reflection question â full credit for a thoughtful answer.","Pregunta de reflexión â crédito completo por una respuesta reflexiva.")}],8:e=>[{id:`w${e}-q1`,type:"multipleChoice",prompt:l("A box has 6 packs of 8 markers. You give away 12 markers. How many are left?","Una caja tiene 6 paquetes de 8 marcadores. Regalas 12 marcadores. ¿Cuántos quedan?"),options:[l("36","36"),l("48","48"),l("44","44"),l("60","60")],correctAnswer:"36",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("6 à 8 = 48, then 48 â 12 = 36.","6 à 8 = 48, luego 48 â 12 = 36.")},{id:`w${e}-q2`,type:"multipleChoice",prompt:l("In a multi-step problem, what should you do first?","En un problema de varios pasos, ¿qué debes hacer primero?"),options:[l("Compute 6 à 8 â 12 directly","Calculas directamente 6 à 8 â 12"),l("Decide the steps and order of operations","Decidir los pasos y el orden de las operaciones"),l("Round every quantity first","Redondear primero cada cantidad"),l("Use only the largest number","Usar solo el número más grande")],correctAnswer:"Decide the steps and order of operations",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Plan the steps in order before computing.","Planifica los pasos en orden antes de calcular.")},{id:`w${e}-q3`,type:"multipleChoice",prompt:l("48 students go on a trip in vans that hold 9 each. How many vans are needed?","48 estudiantes van de excursión en camionetas para 9 cada una. ¿Cuántas camionetas se necesitan?"),options:[l("5","5"),l("
3156","6"),l("4","4"),l("7","7")],correctAnswer:"6",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("48 ÷ 9 = 5 remainder 3, so you need a 6th van for the extra 3 students.","48 ÷ 9 = 5 y sobran 3, asà que se necesita una 6.ª camioneta para los 3 estudiantes restantes.")},{id:`w${e}-q4`,type:"trueFalse",prompt:l("An answer is reasonable if it is close to your estimate.","Una respuesta es razonable si está cerca de tu estimación."),options:Ve,correctAnswer:"True",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Comparing your answer to an estimate helps you judge if it makes sense.","Comparar tu respuesta con una estimación ayuda a juzgar si tiene sentido.")},{id:`w${e}-q5`,type:"fillBlank",prompt:l("Tickets cost $7 each. You buy 4 and pay with $40. Your change is $____.","Cada boleto cuesta $7. Compras 4 y pagas con $40. Tu cambio es $____."),acceptableAnswers:["12","twelve","doce"],feedbackCorrect:M,feedbackIncorrect:P,explanation:l("4 à 7 = 28, then 40 â 28 = 12.","4 à 7 = 28, luego 40 â 28 = 12.")},{id:`w${e}-q6`,type:"fillBlank",prompt:l("A class collects 125 cans week 1 and 138 week 2, then donates 90. Cans left: ____.","Una clase junta 125 latas la semana 1 y 138 la semana 2, luego dona 90. Latas restantes: ____."),acceptableAnswers:["173"],feedbackCorrect:M,feedbackIncorrect:P,explanation:l("125 + 138 = 263, then 263 â 90 = 173.","125 + 138 = 263, luego 263 â 90 = 173.")},{id:`w${e}-q7`,type:"shortAnswer",prompt:l("A store has 9 shelves of 15 books and sells 40. Show the steps to find how many remain.","Una tienda tiene 9 estantes de 15 libros y vende 40. Muestra los pasos para hallar cuántos quedan."),feedbackCorrect:M,feedbackIncorrect:P,explanation:l("9 à 15 = 135, then 135 â 40 = 95 books.","9 à 15 = 135, luego 135 â 40 = 95 libros.")},{id:`w${e}-q8`,type:"reflection",prompt:l("Why is it important to check whether your final answer makes sense?","¿Por qué es importante comprobar si tu respuesta final tiene sentido?"),feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Reflection question â full credit for a thoughtful answer.","Pregunta de reflexión â crédito completo por una respuesta reflexiva.")}],9:e=>[{id:`w${e}-q1`,type:"multipleChoice",prompt:l("What is the value of the digit 9 in 392,540?","¿Cuál es el valor del dÃgito 9 en 392,540?"),options:[l("90","90"),l("9,000","9,000"),l("90,000","90,000"),l("900,000","900,000")],correctAnswer:"90,000",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("The 9 is in the ten-thousands place: 90,000.","El 9 está en las decenas de millar: 90,000.")},{id:`w${e}-q2`,type:"multipleChoice",prompt:l("Round 47,318 to the nearest thousand.","Redondea 47,318 al millar más cercano."),options:[l("47,000","47,000"),l("48,000","48,000"),l("47,300","47,300"),l("50,000","50,000")],correctAnswer:"47,000",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("The hundreds digit is 3 (less than 5), so round down to 47,000.","Las centenas son 3 (menor que 5), asà que se redondea a 47,000.")},{id:`w${e}-q3`,type:"multipleChoice",prompt:l("A farm has 9 rows of 12 trees and plants 25 more. How many trees in all?","Una granja tiene 9 filas de 12 árboles y planta 25 más. ¿Cuántos árboles hay en total?"),options:[l("108","108"),l("133","133"),l("46","46"),l("125","125")],correctAnswer:"133",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("9 à 12 = 108, then 108 + 25 = 133.","9 à 12 = 108, luego 108 + 25 = 133.")},{id:`w${e}-q4`,type:"trueFalse",prompt:l("'56 is 7 times as many as 8' is a true statement.","'56 es 7 veces 8' es un enunciado verdadero."),options:Ve,correctAnswer:"True",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("7 à 8 = 56, so the statement is true.","7 à 8 = 56, asà que el enunciado es verdadero.")},{id:`w${e}-q5`,type:"fillBlank",prompt:l("8,450 + 6,790 = ____.","8,450 + 6,790 = ____."),acceptableAnswers:["15240","15,240"],feedbackCorrect:M,feedbackIncorrect:P,explanation:l("8,450 + 6,790 = 15,240.","8,450 + 6,790 = 15,240.")},{id:`w${e}-q6`,type:"fillBlank",prompt:l("30,000 â 16,475 = ____.","30,000 â 16,475 = ____."),acceptableAnswers:["13525","13,525"],feedbackCorrect:M,feedbackIncorrect:P,explanation:l("30,000 â 16,475 = 13,525.","30,000 â 16,475 = 13,525.")},{id:`w${e}-q7`,type:"shortAnswer",prompt:l("Pick one skill from Unit 1 and explain how to do it as if teaching a friend.","Elige una destreza de la Unidad 1 y explica cómo hacerla como si enseñaras a un amigo."),feedbackCorrect:M,feedbackIncorrect:P,explanation:l("A clear step-by-step explanation of any Unit 1 skill (place value, rounding, add/subtract, comparison) earns credit.","Una explicación clara paso a paso de cualquier destreza de la Unidad 1 (valor posicional, redondeo, suma/resta, comparación) recibe crédito.")},{id:`w${e}
315-q8`,type:"reflection",prompt:l("Which Unit 1 topic felt easiest, and which would you like more practice with?","¿Qué tema de la Unidad 1 te resultó más fácil y con cuál te gustarÃa practicar más?"),feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Reflection question â full credit for a thoughtful answer.","Pregunta de reflexión â crédito completo por una respuesta reflexiva.")}],10:e=>[{id:`w${e}-q1`,type:"multipleChoice",prompt:l("What is 4 à 213?","¿Cuánto es 4 à 213?"),options:[l("852","852"),l("825","825"),l("840","840"),l("1,052","1,052")],correctAnswer:"852",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("4 à 200 + 4 à 10 + 4 à 3 = 800 + 40 + 12 = 852.","4 à 200 + 4 à 10 + 4 à 3 = 800 + 40 + 12 = 852.")},{id:`w${e}-q2`,type:"multipleChoice",prompt:l("Which expression shows 6 à 34 broken apart by place value?","¿Qué expresión muestra 6 à 34 separado por valor posicional?"),options:[l("6 à 30 + 6 à 4","6 à 30 + 6 à 4"),l("6 à 3 + 6 à 4","6 à 3 + 6 à 4"),l("6 à 34 + 6","6 à 34 + 6"),l("6 + 30 + 4","6 + 30 + 4")],correctAnswer:"6 à 30 + 6 à 4",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Break 34 into 30 + 4: 6 à 30 + 6 à 4 = 180 + 24 = 204.","Separa 34 en 30 + 4: 6 à 30 + 6 à 4 = 180 + 24 = 204.")},{id:`w${e}-q3`,type:"multipleChoice",prompt:l("What is 3 à 1,250?","¿Cuánto es 3 à 1,250?"),options:[l("3,750","3,750"),l("3,650","3,650"),l("375","375"),l("4,750","4,750")],correctAnswer:"3,750",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("3 à 1,000 + 3 à 200 + 3 à 50 = 3,000 + 600 + 150 = 3,750.","3 à 1,000 + 3 à 200 + 3 à 50 = 3,000 + 600 + 150 = 3,750.")},{id:`w${e}-q4`,type:"trueFalse",prompt:l("7 à 60 = 420.","7 à 60 = 420."),options:Ve,correctAnswer:"True",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("7 à 6 = 42, and 42 à 10 = 420.","7 à 6 = 42, y 42 à 10 = 420.")},{id:`w${e}-q5`,type:"fillBlank",prompt:l("5 à 248 = ____.","5 à 248 = ____."),acceptableAnswers:["1240","1,240"],feedbackCorrect:M,feedbackIncorrect:P,explanation:l("5 à 200 + 5 à 40 + 5 à 8 = 1,000 + 200 + 40 = 1,240.","5 à 200 + 5 à 40 + 5 à 8 = 1,000 + 200 + 40 = 1,240.")},{id:`w${e}-q6`,type:"fillBlank",prompt:l("Using place value, 8 à 400 = ____.","Usando el valor posicional, 8 à 400 = ____."),acceptableAnswers:["3200","3,200"],feedbackCorrect:M,feedbackIncorrect:P,explanation:l("8 à 4 = 32, and 32 à 100 = 3,200.","8 à 4 = 32, y 32 à 100 = 3,200.")},{id:`w${e}-q7`,type:"shortAnswer",prompt:l("Explain how to use an area model to multiply 4 à 126.","Explica cómo usar un modelo de área para multiplicar 4 à 126."),feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Split 126 into 100 + 20 + 6: 4 à 100 + 4 à 20 + 4 à 6 = 400 + 80 + 24 = 504.","Separa 126 en 100 + 20 + 6: 4 à 100 + 4 à 20 + 4 à 6 = 400 + 80 + 24 = 504.")},{id:`w${e}-q8`,type:"reflection",prompt:l("How does breaking a number apart by place value make multiplication easier for you?","¿Cómo te facilita la multiplicación separar un número por su valor posicional?"),feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Reflection question â full credit for a thoughtful answer.","Pregunta de reflexión â crédito completo por una respuesta reflexiva.")}],11:e=>[{id:`w${e}-q1`,type:"multipleChoice",prompt:l("What is 23 à 14?","¿Cuánto es 23 à 14?"),options:[l("322","322"),l("312","312"),l("92","92"),l("232","232")],correctAnswer:"322",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("23 à 14 = 23 à 10 + 23 à 4 = 230 + 92 = 322.","23 à 14 = 23 à 10 + 23 à 4 = 230 + 92 = 322.")},{id:`w${e}-q2`,type:"multipleChoice",prompt:l("Which is one partial product of 26 à 13?","¿Cuál es un producto parcial de 26 à 13?"),options:[l("20 à 10 = 200","20 à 10 = 200"),l("26 à 13 = 200","26 à 13 = 200"),l("6 à 13 = 200","6 à 13 = 200"),l("20 à 3 = 200","20 à 3 = 200")],correctAnswer:"20 à 10 = 200",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Splitting both numbers: 20 à 10 = 200 is the largest partial product.","Al separar ambos números: 20 à 10 = 200 es el mayor producto parcial.")},{id:`w${e}-q3`,type:"multipleChoice",prompt:l("What is 45 à 20?","¿Cuánto es 45 à 20?"),options:[l("900","900"),l("90","90"),l("850","850"),l("9,000","9,000")],correctAnswer:"900",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("45 à 2 = 90, and 90 à 10 = 900.","45 à 2 = 90, y 90 à 10 = 900.")},{id:`w${e}-q4`,type:"trueFalse",prompt:l("An area model for 12 à 15 has four smaller rectangles.","Un modelo de área para 12 à 15 tiene cuatro rectángulos más pequeños."),options:Ve,correctAnswer:"True",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Splitting 12 into 10 + 2 and 15 into 10 + 5 makes a 2-by-2 grid of four rectangles.","Separar 12 en 10 + 2 y 15 en 10 + 5 crea una cuadrÃcula de 2 por 2 con cuatro rectángulos.")},{id:`w${e}-q5`,type:"fillBlank",prompt:l("32 à 21 = ____.","32 à 21 = ____."),acceptableAnswers:["672"],feedbackCorrect:M,feedbackIncorrect:P,explanation:l("32 à 20 + 32 à 1 = 640 + 32 = 672.","32 à 20 + 32 à 1 = 640 + 32 = 672.")},{id:`w${e}-q6`,type:"fillBlank",prompt:l("18 à 50 = ____.","18 à 50 = ____."),acceptableAnswers:["900"],feedbackCorrect:M,feedbackIncorrect:P,explanation:l("18 à 5 = 90, and 90 à 10 = 900.","18 à 5 = 90, y 90 à 10 = 900.")},{id:`w${e}-q7`,type:"shortAnswer",prompt:l("Show the four partial products for 24 à 16 and add them.","Muestra los cuatro productos parciales de 24 à 16 y súmalos."),feedbackCorrect:M,feedbackIncorrect:P,explanation:l("20Ã10=200, 20Ã6=120, 4Ã10=40, 4Ã6=24; 200+120+40+24 = 384.","20Ã10=200, 20Ã6=120, 4Ã10=40, 4Ã6=24; 200+120+40+24 = 384.")},{id:`w${e}-q8`,type:"reflection",prompt:l("When you multiply two 2-digit numbers, how do partial products help you stay organized?","Al multiplicar dos números de dos dÃgitos, ¿cómo te ayudan los productos parciales a mantenerte organizado?"),feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Reflection question â full credit for a thoughtful answer.","Pregunta de reflexión â cr
315édito completo por una respuesta reflexiva.")}],12:e=>[{id:`w${e}-q1`,type:"multipleChoice",prompt:l("What is 47 ÷ 5?","¿Cuánto es 47 ÷ 5?"),options:[l("9 R2","9 R2"),l("8 R7","8 R7"),l("9 R3","9 R3"),l("10 R0","10 R0")],correctAnswer:"9 R2",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("5 à 9 = 45, and 47 â 45 = 2, so 47 ÷ 5 = 9 remainder 2.","5 à 9 = 45, y 47 â 45 = 2, asà que 47 ÷ 5 = 9 residuo 2.")},{id:`w${e}-q2`,type:"multipleChoice",prompt:l("What is 38 ÷ 4?","¿Cuánto es 38 ÷ 4?"),options:[l("9 R2","9 R2"),l("8 R6","8 R6"),l("9 R1","9 R1"),l("7 R10","7 R10")],correctAnswer:"9 R2",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("4 à 9 = 36, and 38 â 36 = 2, so 38 ÷ 4 = 9 remainder 2.","4 à 9 = 36, y 38 â 36 = 2, asà que 38 ÷ 4 = 9 residuo 2.")},{id:`w${e}-q3`,type:"multipleChoice",prompt:l("Which division does the fact 6 à 7 = 42 help you check?","¿Qué división te ayuda a comprobar el hecho 6 à 7 = 42?"),options:[l("44 ÷ 6 = 7 R2","44 ÷ 6 = 7 R2"),l("42 ÷ 6 = 6","42 ÷ 6 = 6"),l("48 ÷ 6 = 7","48 ÷ 6 = 7"),l("42 ÷ 7 = 7","42 ÷ 7 = 7")],correctAnswer:"44 ÷ 6 = 7 R2",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("6 à 7 = 42, plus a remainder of 2 makes 44, so 44 ÷ 6 = 7 R2.","6 à 7 = 42, más un residuo de 2 da 44, asà que 44 ÷ 6 = 7 R2.")},{id:`w${e}-q4`,type:"trueFalse",prompt:l("When you divide by 6, the remainder must be less than 6.","Cuando divides entre 6, el residuo debe ser menor que 6."),options:Ve,correctAnswer:"True",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("If the remainder were 6 or more, you could make another group, so it must be less than the divisor.","Si el residuo fuera 6 o más, podrÃas formar otro grupo, asà que debe ser menor que el divisor.")},{id:`w${e}-q5`,type:"fillBlank",prompt:l("85 ÷ 9 = 9 remainder ____.","85 ÷ 9 = 9 residuo ____."),acceptableAnswers:["4","four","cuatro"],feedbackCorrect:M,feedbackIncorrect:P,explanation:l("9 à 9 = 81, and 85 â 81 = 4.","9 à 9 = 81, y 85 â 81 = 4.")},{id:`w${e}-q6`,type:"fillBlank",prompt:l("63 ÷ 8 = 7 remainder ____.","63 ÷ 8 = 7 residuo ____."),acceptableAnswers:["7","seven","siete"],feedbackCorrect:M,feedbackIncorrect:P,explanation:l("8 à 7 = 56, and 63 â 56 = 7.","8 à 7 = 56, y 63 â 56 = 7.")},{id:`w${e}-q7`,type:"shortAnswer",prompt:l("You pack 50 pencils into bags of 8. How many full bags, and how many pencils are left over? Show your work.","Empacas 50 lápices en bolsas de 8. ¿Cuántas bolsas llenas hay y cuántos lápices sobran? Muestra tu trabajo."),feedbackCorrect:M,feedbackIncorrect:P,explanation:l("8 à 6 = 48, and 50 â 48 = 2, so 6 full bags with 2 pencils left over.","8 à 6 = 48, y 50 â 48 = 2, asà que 6 bolsas llenas con 2 lápices sobrantes.")},{id:`w${e}-q8`,type:"reflection",prompt:l("Why does it matter what a remainder means in a real-world problem?","¿Por qué importa lo que significa un residuo en un problema del mundo real?"),feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Reflection question â full credit for a thoughtful answer.","Pregunta de reflexión â crédito completo por una respuesta reflexiva.")}],13:e=>[{id:`w${e}-q1`,type:"multipleChoice",prompt:l("What is 248 ÷ 4?","¿Cuánto es 248 ÷ 4?"),options:[l("62","62"),l("52","52"),l("61","61"),l("72","72")],correctAnswer:"62",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("240 ÷ 4 = 60 and 8 ÷ 4 = 2, so 60 + 2 = 62.","240 ÷ 4 = 60 y 8 ÷ 4 = 2, asà que 60 + 2 = 62.")},{id:`w${e}-q2`,type:"multipleChoice",prompt:l("What is 936 ÷ 3?","¿Cuánto es 936 ÷ 3?"),options:[l("312","312"),l("302","302"),l("322","322"),l("213","213")],correctAnswer:"312",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("900 ÷ 3 = 300, 30 ÷ 3 = 10, 6 ÷ 3 = 2; 300 + 10 + 2 = 312.","900 ÷ 3 = 300, 30 ÷ 3 = 10, 6 ÷ 3 = 2; 300 + 10 + 2 = 312.")},{id:`w${e}-q3`,type:"multipleChoice",prompt:l("Using place value, what is 600 ÷ 5?","Usando el valor posicional, ¿cuánto es 600 ÷ 5?"),options:[l("120","120"),l("12","12"),l("110","110"),l("125","125")],correctAnswer:"120",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("60 tens ÷ 5 = 12 tens = 120.","60 decenas ÷ 5 = 12 decenas = 120.")},{id:`w${e}-q4`,type:"trueFalse",prompt:l("To divide 84 by 4, you can split it into 80 ÷ 4 and 4 ÷ 4.","Para dividir 84 entre 4, puedes separarlo en 80 ÷ 4 y 4 ÷ 4."),options:Ve,correctAnswer:"True",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("80 ÷ 4 = 20 and 4 ÷ 4 = 1, so 84 ÷ 4 = 21.","80 ÷ 4 = 20 y 4 ÷ 4 = 1, asà que 84 ÷ 4 = 21.")},{id:`w${e}-q5`,type:"fillBlank",prompt:l("175 ÷ 5 = ____.","175 ÷ 5 = ____."),acceptableAnswers:["35","thirty-five","treinta y cinco"],feedbackCorrect:M,feedbackIncorrect:P,explanation:l("150 ÷ 5 = 30 and 25 ÷ 5 = 5, so 30 + 5 = 35.","150 ÷ 5 = 30 y 25 ÷ 5 = 5, asà que 30 + 5 = 35.")},{id:`w${e}-q6`,type:"fillBlank",prompt:l("426 ÷ 6 = ____.","426 ÷ 6 = ____."),acceptableAnswers:["71","
315seventy-one","setenta y uno"],feedbackCorrect:M,feedbackIncorrect:P,explanation:l("420 ÷ 6 = 70 and 6 ÷ 6 = 1, so 70 + 1 = 71.","420 ÷ 6 = 70 y 6 ÷ 6 = 1, asà que 70 + 1 = 71.")},{id:`w${e}-q7`,type:"shortAnswer",prompt:l("Explain how to divide 472 ÷ 4 using place value.","Explica cómo dividir 472 ÷ 4 usando el valor posicional."),feedbackCorrect:M,feedbackIncorrect:P,explanation:l("400 ÷ 4 = 100, 72 ÷ 4 = 18; 100 + 18 = 118.","400 ÷ 4 = 100, 72 ÷ 4 = 18; 100 + 18 = 118.")},{id:`w${e}-q8`,type:"reflection",prompt:l("How does breaking a number into place-value parts make dividing feel less hard?","¿Cómo hace que dividir se sienta menos difÃcil separar un número en partes por valor posicional?"),feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Reflection question â full credit for a thoughtful answer.","Pregunta de reflexión â crédito completo por una respuesta reflexiva.")}],14:e=>[{id:`w${e}-q1`,type:"multipleChoice",prompt:l("There are 6 boxes of 24 markers. If the markers are shared equally among 8 students, how many does each get?","Hay 6 cajas de 24 marcadores. Si se reparten en partes iguales entre 8 estudiantes, ¿cuántos recibe cada uno?"),options:[l("18","18"),l("16","16"),l("144","144"),l("20","20")],correctAnswer:"18",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("6 à 24 = 144 markers, then 144 ÷ 8 = 18 each.","6 à 24 = 144 marcadores, luego 144 ÷ 8 = 18 cada uno.")},{id:`w${e}-q2`,type:"multipleChoice",prompt:l("Which is the best estimate for 39 à 21?","¿Cuál es la mejor estimación para 39 à 21?"),options:[l("About 800","Cerca de 800"),l("About 600","Cerca de 600"),l("About 80","Cerca de 80"),l("About 1,200","Cerca de 1,200")],correctAnswer:"About 800",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Round to 40 à 20 = 800; the exact answer is 819, close to the estimate.","Redondea a 40 à 20 = 800; la respuesta exacta es 819, cercana a la estimación.")},{id:`w${e}-q3`,type:"multipleChoice",prompt:l("A bus holds 48 students. How many buses are needed for 290 students?","Un autobús lleva 48 estudiantes. ¿Cuántos autobuses se necesitan para 290 estudiantes?"),options:[l("7","7"),l("6","6"),l("5","5"),l("60","60")],correctAnswer:"7",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("290 ÷ 48 = 6 R2, and the 2 left over still need a bus, so 7 buses.","290 ÷ 48 = 6 R2, y los 2 que sobran también necesitan un autobús, asà que 7 autobuses.")},{id:`w${e}-q4`,type:"trueFalse",prompt:l("If 5 friends share 53 stickers equally, each gets 10 and 3 are left over.","Si 5 amigos comparten 53 calcomanÃas en partes iguales, cada uno recibe 10 y sobran 3."),options:Ve,correctAnswer:"True",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("5 à 10 = 50, and 53 â 50 = 3, so each gets 10 with 3 left over.","5 à 10 = 50, y 53 â 50 = 3, asà que cada uno recibe 10 y sobran 3.")},{id:`w${e}-q5`,type:"fillBlank",prompt:l("A farm fills 4 crates with 36 apples each, then sells 50. Apples left: ____.","Una granja llena 4 cajas con 36 manzanas cada una, luego vende 50. Manzanas restantes: ____."),acceptableAnswers:["94"],feedbackCorrect:M,feedbackIncorrect:P,explanation:l("4 à 36 = 144, then 144 â 50 = 94.","4 à 36 = 144, luego 144 â 50 = 94.")},{id:`w${e}-q6`,type:"fillBlank",prompt:l("91 players are split equally into 7 teams. Players per team: ____.","91 jugadores se reparten en partes iguales en 7 equipos. Jugadores por equipo: ____."),acceptableAnswers:["13","thirteen","trece"],feedbackCorrect:M,feedbackIncorrect:P,explanation:l("91 ÷ 7 = 13 players per team.","91 ÷ 7 = 13 jugadores por equipo.")},{id:`w${e}-q7`,type:"shortAnswer",prompt:l("A baker makes 8 trays of 12 muffins and packs them into boxes of 6. How many boxes? Show each step.","Un panadero hace 8 bandejas de 12 panecillos y los empaca en cajas de 6. ¿Cuántas cajas? Muestra cada paso."),feedbackCorrect:M,feedbackIncorrect:P,explanation:l("8 à 12 = 96 muffins, then 96 ÷ 6 = 16 boxes.","8 à 12 = 96 panecillos, luego 96 ÷ 6 = 16 cajas.")},{id:`w${e}-q8`,type:"reflection",prompt:l("How do you decide whether to multiply or divide first in a multi-step problem?","¿Cómo decides si multiplicar o dividir primero en un problema de varios pasos?"),feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Reflection question â full credit for a thoughtful answer.","Pregunta de reflexión â cr
315édito completo por una respuesta reflexiva.")}],15:e=>[{id:`w${e}-q1`,type:"multipleChoice",prompt:l("Which number is a factor of 24?","¿Qué número es un factor de 24?"),options:[l("8","8"),l("5","5"),l("7","7"),l("9","9")],correctAnswer:"8",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("8 à 3 = 24, so 8 is a factor of 24.","8 à 3 = 24, asà que 8 es un factor de 24.")},{id:`w${e}-q2`,type:"multipleChoice",prompt:l("Which is a factor pair of 18?","¿Cuál es un par de factores de 18?"),options:[l("3 and 6","3 y 6"),l("2 and 8","2 y 8"),l("4 and 5","4 y 5"),l("3 and 5","3 y 5")],correctAnswer:"3 and 6",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("3 à 6 = 18, so 3 and 6 are a factor pair of 18.","3 à 6 = 18, asà que 3 y 6 son un par de factores de 18.")},{id:`w${e}-q3`,type:"multipleChoice",prompt:l("Which number is a multiple of 7?","¿Qué número es un múltiplo de 7?"),options:[l("35","35"),l("27","27"),l("47","47"),l("50","50")],correctAnswer:"35",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("7 à 5 = 35, so 35 is a multiple of 7.","7 à 5 = 35, asà que 35 es un múltiplo de 7.")},{id:`w${e}-q4`,type:"trueFalse",prompt:l("24 is a multiple of 8.","24 es un múltiplo de 8."),options:Ve,correctAnswer:"True",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("8 à 3 = 24, so 24 is a multiple of 8.","8 à 3 = 24, asà que 24 es un múltiplo de 8.")},{id:`w${e}-q5`,type:"fillBlank",prompt:l("Write one factor pair of 12 (for example, 'a and b'): ____.","Escribe un par de factores de 12 (por ejemplo, 'a y b'): ____."),acceptableAnswers:["1 and 12","2 and 6","3 and 4","1 y 12","2 y 6","3 y 4"],feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Factor pairs of 12 are 1 and 12, 2 and 6, and 3 and 4.","Los pares de factores de 12 son 1 y 12, 2 y 6, y 3 y 4.")},{id:`w${e}-q6`,type:"fillBlank",prompt:l("7 is a ____ of 21 because 21 ÷ 7 = 3.","7 es un ____ de 21 porque 21 ÷ 7 = 3."),acceptableAnswers:["factor"],feedbackCorrect:M,feedbackIncorrect:P,explanation:l("7 divides 21 evenly, so 7 is a factor of 21.","7 divide a 21 exactamente, asà que 7 es un factor de 21.")},{id:`w${e}-q7`,type:"shortAnswer",prompt:l("Find all factor pairs of 36.","Halla todos los pares de factores de 36."),feedbackCorrect:M,feedbackIncorrect:P,explanation:l("1 and 36, 2 and 18, 3 and 12, 4 and 9, 6 and 6.","1 y 36, 2 y 18, 3 y 12, 4 y 9, 6 y 6.")},{id:`w${e}-q8`,type:"reflection",prompt:l("What is the difference between a factor and a multiple, in your own words?","¿Cuál es la diferencia entre un factor y un múltiplo, en tus propias palabras?"),feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Reflection question â full credit for a thoughtful answer.","Pregunta de reflexión â crédito completo por una respuesta reflexiva.")}],16:e=>[{id:`w${e}-q1`,type:"multipleChoice",prompt:l("Which number is prime?","¿Qué número es primo?"),options:[l("17","17"),l("9","9"),l("15","15"),l("21","21")],correctAnswer:"17",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("17 has only the factors 1 and 17, so it is prime.","17 solo tiene los factores 1 y 17, asà que es primo.")},{id:`w${e}-q2`,type:"multipleChoice",prompt:l("Which number is composite?","¿Qué número es compuesto?"),options:[l("21","21"),l("2","2"),l("11","11"),l("13","13")],correctAnswer:"21",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("21 = 3 à 7, so it has more than two factors and is composite.","21 = 3 à 7, asà que tiene más de dos factores y es compuesto.")},{id:`w${e}-q3`,type:"multipleChoice",prompt:l("Why is 1 neither prime nor composite?","¿Por qué 1 no es ni primo ni compuesto?"),options:[l("It has exactly one factor.","Tiene exactamente un factor."),l("It has two factors.","Tiene dos factores."),l("It is an odd number.","Es un número impar."),l("It is too small to count.","Es demasiado pequeño para contar.")],correctAnswer:"It has exactly one factor.",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Primes have exactly two factors and composites have more than two; 1 has only itself.","Los primos tienen exactamente dos factores y los compuestos más de dos; el 1 solo se tiene a sà mismo.")},{id:`w${e}-q4`,type:"trueFalse",prompt:l("13 is a prime number.","13 es un número primo."),options:Ve,correctAnswer:"True",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("13 has only the factors 1 and 13, so it is prime.","13 solo tiene los factores 1 y 13, asà que es primo.")},{id:`w${e}-q5`,type:"fillBlank",prompt:l("A number with exactly two factors, 1 and itself, is called ____.","Un número con exactamente dos factores, 1 y él mismo, se llama ____."),acceptableAnswers:["prime","primo"],feedbackCorrect:M,feedbackIncorrect:P,explanation:l("That is the definition of a prime number.","Esa es la definición de un número primo.")},{id:`w${e}-q6`,type:"fillBlank",prompt:l("Is 29 prime or composite? ____.","¿29 es primo o compuesto? ____."),acceptableAnswers:["prime","primo"],feedbackCorrect:M,feedbackIncorrect:P,explanation:l("29 has only the factors 1 and 29, so it is prime.","29 solo tiene los factores 1 y 29, asà que es primo.")},{id:`w${e}-q7`,type:"shortAnswer",prompt:l("Explain how to decide whether 51 is prime or composite.","Explica cómo decidir si 51 es primo o compuesto."),feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Test small factors: 51 = 3 à 17, so it has more than two factors and is composite.","Prueba factores pequeños: 51 = 3 à 17, asà que tiene más de dos factores y es compuesto.")},{id:`w${e}-q8`,type:"reflection",prompt:l("How does knowing factor pairs help you decide if a number is prime or composite?","¿Cómo te ayuda conocer los pares de factores a decidir si un número es primo o compuesto?"),feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Reflection question â full credit for a thoughtful answer.","Pregunta de reflexión â cr
315édito completo por una respuesta reflexiva.")}],17:e=>[{id:`w${e}-q1`,type:"multipleChoice",prompt:l("The rule is 'add 5' starting at 3: 3, 8, 13, 18, ⦠What is the next number?","La regla es 'sumar 5' empezando en 3: 3, 8, 13, 18, ⦠¿Cuál es el siguiente número?"),options:[l("23","23"),l("21","21"),l("22","22"),l("25","25")],correctAnswer:"23",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("18 + 5 = 23.","18 + 5 = 23.")},{id:`w${e}-q2`,type:"multipleChoice",prompt:l("What feature do all the terms of 2, 4, 6, 8, 10 share?","¿Qué caracterÃstica comparten todos los términos de 2, 4, 6, 8, 10?"),options:[l("They are all even.","Todos son pares."),l("They are all odd.","Todos son impares."),l("They are all multiples of 3.","Todos son múltiplos de 3."),l("They all end in 5.","Todos terminan en 5.")],correctAnswer:"They are all even.",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Adding 2 each time from an even start keeps every term even.","Sumar 2 cada vez desde un inicio par mantiene par cada término.")},{id:`w${e}-q3`,type:"multipleChoice",prompt:l("The rule is 'multiply by 2' starting at 1: 1, 2, 4, 8, 16, ⦠What is the sixth term?","La regla es 'multiplicar por 2' empezando en 1: 1, 2, 4, 8, 16, ⦠¿Cuál es el sexto término?"),options:[l("32","32"),l("24","24"),l("18","18"),l("64","64")],correctAnswer:"32",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("16 à 2 = 32, so the sixth term is 32.","16 à 2 = 32, asà que el sexto término es 32.")},{id:`w${e}-q4`,type:"trueFalse",prompt:l("In the pattern 5, 10, 15, 20 every term is a multiple of 5.","En el patrón 5, 10, 15, 20 cada término es un múltiplo de 5."),options:Ve,correctAnswer:"True",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Counting by 5 produces only multiples of 5.","Contar de 5 en 5 produce solo múltiplos de 5.")},{id:`w${e}-q5`,type:"fillBlank",prompt:l("Pattern: 4, 7, 10, 13, ⦠The next number is ____.","Patrón: 4, 7, 10, 13, ⦠El siguiente número es ____."),acceptableAnswers:["16","sixteen","dieciseis","dieciséis"],feedbackCorrect:M,feedbackIncorrect:P,explanation:l("The rule is 'add 3', so 13 + 3 = 16.","La regla es 'sumar 3', asà que 13 + 3 = 16.")},{id:`w${e}-q6`,type:"fillBlank",prompt:l("Rule 'subtract 3' from 30: 30, 27, 24, ____.","Regla 'restar 3' desde 30: 30, 27, 24, ____."),acceptableAnswers:["21","twenty-one","veintiuno"],feedbackCorrect:M,feedbackIncorrect:P,explanation:l("24 â 3 = 21.","24 â 3 = 21.")},{id:`w${e}-q7`,type:"shortAnswer",prompt:l("Use the rule 'add 6' starting at 2 to write the first five terms, then describe one feature of the pattern.","Usa la regla 'sumar 6' empezando en 2 para escribir los primeros cinco términos, luego describe una caracterÃstica del patrón."),feedbackCorrect:M,feedbackIncorrect:P,explanation:l("2, 8, 14, 20, 26; every term is even (a feature not stated in the rule).","2, 8, 14, 20, 26; cada término es par (una caracterÃstica no indicada en la regla).")},{id:`w${e}-q8`,type:"reflection",prompt:l("Why is it interesting when a pattern has a feature that the rule did not directly state?","¿Por qué es interesante cuando un patrón tiene una caracterÃstica que la regla no indicó directamente?"),feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Reflection question â full credit for a thoughtful answer.","Pregunta de reflexión â crédito completo por una respuesta reflexiva.")}],18:e=>[{id:`w${e}-q1`,type:"multipleChoice",prompt:l("What is 7 à 326?","¿Cuánto es 7 à 326?"),options:[l("2,282","2,282"),l("2,182","2,182"),l("2,272","2,272"),l("2,300","2,300")],correctAnswer:"2,282",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("7 à 300 + 7 à 20 + 7 à 6 = 2,100 + 140 + 42 = 2,282.","7 à 300 + 7 à 20 + 7 à 6 = 2,100 + 140 + 42 = 2,282.")},{id:`w${e}-q2`,type:"multipleChoice",prompt:l("What is 26 à 14?","¿Cuánto es 26 à 14?"),options:[l("364","364"),l("354","354"),l("312","312"),l("404","404")],correctAnswer:"364",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("26 à 10 + 26 à 4 = 260 + 104 = 364.","26 à 10 + 26 à 4 = 260 + 104 = 364.")},{id:`w${e}-q3`,type:"multipleChoice",prompt:l("What is 252 ÷ 6?","¿Cuánto es 252 ÷ 6?"),options:[l("42","42"),l("32","32"),l("41","41"),l("44","44")],correctAnswer:"42",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("240 ÷ 6 = 40 and 12 ÷ 6 = 2, so 40 + 2 = 42.","240 ÷ 6 = 40 y 12 ÷ 6 = 2, asà que 40 + 2 = 42.")},{id:`w${e}-q4`,type:"trueFalse",prompt:l("17 is a prime number.","17 es un número primo."),options:Ve,correctAnswer:"True",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("17 has only the factors 1 and 17, so it is prime.","17 s
315olo tiene los factores 1 y 17, asà que es primo.")},{id:`w${e}-q5`,type:"fillBlank",prompt:l("Pattern 'add 6': 3, 9, 15, 21, ____.","Patrón 'sumar 6': 3, 9, 15, 21, ____."),acceptableAnswers:["27","twenty-seven","veintisiete"],feedbackCorrect:M,feedbackIncorrect:P,explanation:l("21 + 6 = 27.","21 + 6 = 27.")},{id:`w${e}-q6`,type:"fillBlank",prompt:l("A factor pair of 24 is 4 and ____.","Un par de factores de 24 es 4 y ____."),acceptableAnswers:["6","six","seis"],feedbackCorrect:M,feedbackIncorrect:P,explanation:l("4 à 6 = 24.","4 à 6 = 24.")},{id:`w${e}-q7`,type:"shortAnswer",prompt:l("Pick one skill from Unit 2 (multiplying, dividing, factors, primes, or patterns) and explain how to do it as if teaching a friend.","Elige una destreza de la Unidad 2 (multiplicar, dividir, factores, primos o patrones) y explica cómo hacerla como si enseñaras a un amigo."),feedbackCorrect:M,feedbackIncorrect:P,explanation:l("A clear step-by-step explanation of any Unit 2 skill earns credit.","Una explicación clara paso a paso de cualquier destreza de la Unidad 2 recibe crédito.")},{id:`w${e}-q8`,type:"reflection",prompt:l("Which Unit 2 topic felt easiest, and which would you like more practice with?","¿Qué tema de la Unidad 2 te resultó más fácil y con cuál te gustarÃa practicar más?"),feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Reflection question â full credit for a thoughtful answer.","Pregunta de reflexión â crédito completo por una respuesta reflexiva.")}],19:e=>[{id:`w${e}-q1`,type:"multipleChoice",prompt:l("Which fraction is equivalent to 1/2?","¿Qué fracción es equivalente a 1/2?"),options:[l("2/4","2/4"),l("1/3","1/3"),l("2/3","2/3"),l("1/4","1/4")],correctAnswer:"2/4",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Multiply the numerator and denominator by 2: 1/2 = 2/4.","Multiplica el numerador y el denominador por 2: 1/2 = 2/4.")},{id:`w${e}-q2`,type:"multipleChoice",prompt:l("To make an equivalent fraction, you multiply the numerator and denominator by ____.","Para crear una fracción equivalente, multiplicas el numerador y el denominador por ____."),options:[l("the same number","el mismo número"),l("different numbers","números diferentes"),l("only the numerator","solo el numerador"),l("only the denominator","solo el denominador")],correctAnswer:"the same number",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Multiplying top and bottom by the same number keeps the fraction's value the same.","Multiplicar arriba y abajo por el mismo número mantiene igual el valor de la fracción.")},{id:`w${e}-q3`,type:"multipleChoice",prompt:l("Which fraction is equivalent to 3/4?","¿Qué fracción es equivalente a 3/4?"),options:[l("6/8","6/8"),l("4/6","4/6"),l("3/8","3/8"),l("6/12","6/12")],correctAnswer:"6/8",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Multiply numerator and denominator by 2: 3/4 = 6/8.","Multiplica el numerador y el denominador por 2: 3/4 = 6/8.")},{id:`w${e}-q4`,type:"trueFalse",prompt:l("2/3 and 4/6 are equivalent fractions.","2/3 y 4/6 son fracciones equivalentes."),options:Ve,correctAnswer:"True",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Multiply 2/3 by 2/2 to get 4/6, so they name the same amount.","Multiplica 2/3 por 2/2 para obtener 4/6, asà que nombran la misma cantidad.")},{id:`w${e}-q5`,type:"fillBlank",prompt:l("Fill in the missing numerator: 1/3 = ____/9.","Completa el numerador que falta: 1/3 = ____/9."),acceptableAnswers:["3","three","tres"],feedbackCorrect:M,feedbackIncorrect:P,explanation:l("3 à 3 = 9, so multiply the numerator by 3 too: 1 à 3 = 3, giving 3/9.","3 à 3 = 9, asà que multiplica el numerador por 3 también: 1 à 3 = 3, dando 3/9.")},{id:`w${e}-q6`,type:"fillBlank",prompt:l("Fill in the missing denominator: 2/5 = 8/____.","Completa el denominador que falta: 2/5 = 8/____."),acceptableAnswers:["20","twenty","veinte"],feedbackCorrect:M,feedbackIncorrect:P,explanation:l("2 à 4 = 8, so multiply the denominator by 4 too: 5 à 4 = 20, giving 8/20.","2 à 4 = 8, asà que multiplica el denominador por 4 también: 5 à 4 = 20, dando 8/20.")},{id:`w${e}-q7`,type:"shortAnswer",prompt:l("Explain, using a drawing or words, why 1/2 and 3/6 are equivalent.","Explica, con un dibujo o palabras, por qué 1/2 y 3/6 son equivalentes."),feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Both cover the same part of a whole; 3/6 simplifies to 1/2 by dividing by 3.","Ambas cubren la misma parte de un entero; 3/6 se simplifica a 1/2 dividiendo entre 3.")},{id:`w${e}-q8`,type:"reflection",prompt:l("Where in real life have you seen equivalent fractions, like 1/2 of a pizza being the same as 2/4?","¿Dónde en la vida real has visto fracciones equivalentes, como que 1/2 de una pizza sea lo mismo que 2/4?"),feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Reflection question â full credit for a thoughtful answer.","Pregunta de reflexión â cr
315édito completo por una respuesta reflexiva.")}],20:e=>[{id:`w${e}-q1`,type:"multipleChoice",prompt:l("What is 4/8 written in simplest form?","¿Cuál es 4/8 escrito en su forma más simple?"),options:[l("1/2","1/2"),l("2/4","2/4"),l("4/8","4/8"),l("1/4","1/4")],correctAnswer:"1/2",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Divide numerator and denominator by 4: 4/8 = 1/2.","Divide el numerador y el denominador entre 4: 4/8 = 1/2.")},{id:`w${e}-q2`,type:"multipleChoice",prompt:l("Which fraction is NOT equivalent to 2/3?","¿Qué fracción NO es equivalente a 2/3?"),options:[l("3/4","3/4"),l("4/6","4/6"),l("6/9","6/9"),l("8/12","8/12")],correctAnswer:"3/4",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("4/6, 6/9, and 8/12 all reduce to 2/3, but 3/4 does not.","4/6, 6/9 y 8/12 se reducen a 2/3, pero 3/4 no.")},{id:`w${e}-q3`,type:"multipleChoice",prompt:l("5/10 is equivalent to which fraction?","¿5/10 es equivalente a qué fracción?"),options:[l("1/2","1/2"),l("2/5","2/5"),l("1/5","1/5"),l("5/5","5/5")],correctAnswer:"1/2",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Divide numerator and denominator by 5: 5/10 = 1/2.","Divide el numerador y el denominador entre 5: 5/10 = 1/2.")},{id:`w${e}-q4`,type:"trueFalse",prompt:l("Dividing the numerator and denominator by the same number makes an equivalent fraction.","Dividir el numerador y el denominador entre el mismo número crea una fracción equivalente."),options:Ve,correctAnswer:"True",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Dividing top and bottom by the same number keeps the value the same; this is simplifying.","Dividir arriba y abajo entre el mismo número mantiene el valor; esto es simplificar.")},{id:`w${e}-q5`,type:"fillBlank",prompt:l("Write 6/8 in simplest form.","Escribe 6/8 en su forma más simple."),acceptableAnswers:["3/4","three fourths","tres cuartos"],feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Divide numerator and denominator by 2: 6/8 = 3/4.","Divide el numerador y el denominador entre 2: 6/8 = 3/4.")},{id:`w${e}-q6`,type:"fillBlank",prompt:l("Fill in the missing denominator: 3/4 = 9/____.","Completa el denominador que falta: 3/4 = 9/____."),acceptableAnswers:["12","twelve","doce"],feedbackCorrect:M,feedbackIncorrect:P,explanation:l("3 à 3 = 9, so multiply the denominator by 3 too: 4 à 3 = 12, giving 9/12.","3 à 3 = 9, asà que multiplica el denominador por 3 también: 4 à 3 = 12, dando 9/12.")},{id:`w${e}-q7`,type:"shortAnswer",prompt:l("Write two fractions equivalent to 2/5 and explain how you made them.","Escribe dos fracciones equivalentes a 2/5 y explica cómo las creaste."),feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Multiply 2/5 by 2/2, 3/3, etc.: 4/10, 6/15, 8/20 are all equivalent.","Multiplica 2/5 por 2/2, 3/3, etc.: 4/10, 6/15, 8/20 son todas equivalentes.")},{id:`w${e}-q8`,type:"reflection",prompt:l("When finding equivalent fractions, do you prefer multiplying up or dividing down? Why?","Al hallar fracciones equivalentes, ¿prefieres multiplicar hacia arriba o dividir hacia abajo? ¿Por qué?"),feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Reflection question â full credit for a thoughtful answer.","Pregunta de reflexión â crédito completo por una respuesta reflexiva.")}],21:e=>[{id:`w${e}-q1`,type:"multipleChoice",prompt:l("Which symbol makes this true: 3/4 ____ 1/2?","¿Qué sÃmbolo hace esto verdadero: 3/4 ____ 1/2?"),options:[l(">",">"),l("<","<"),l("=","="),l("none","ninguno")],correctAnswer:">",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("3/4 = 6/8 and 1/2 = 4/8, so 3/4 is greater than 1/2.","3/4 = 6/8 y 1/2 = 4/8, asà que 3/4 es mayor que 1/2.")},{id:`w${e}-q2`,type:"multipleChoice",prompt:l("Which fraction is greater, 2/3 or 3/5?","¿Qué fracción es mayor, 2/3 o 3/5?"),options:[l("2/3","2/3"),l("3/5","3/5"),l("they are equal","son iguales"),l("you cannot tell","no se puede saber")],correctAnswer:"2/3",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Using fifteenths: 2/3 = 10/15 and 3/5 = 9/15, so 2/3 is greater.","Usando quinceavos: 2/3 = 10/15 y 3/5 = 9/15, asà que 2/3 es mayor.")},{id:`w${e}-q3`,type:"multipleChoice",prompt:l("Which fraction is less than 1/2?","¿Qué fracción es menor que 1/2?"),options:[l("3/8","3/8"),l("3/4","3/4"),l("5/8","5/8"),l("2/3","2/3")],correctAnswer:"3/8",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Half of 8 is 4, and 3/8 is less than 4/8, so 3/8 is less than 1/2.","La mitad de 8 es 4, y 3/8 es menor que 4/8, asà que 3/8 es menor que 1/2.")},{id:`w${e}-q4`,type:"trueFalse",prompt:l("Two fractions can only be compared if they already have the same denominator.","Dos fracciones solo se pueden comparar si ya tienen el mismo denominador."),options:Ve,correctAnswer:"False",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("You can rewrite them with a common denominator or compare them to a benchmark like 1/2.","Puedes reescribirlas con un denominador común o compararlas con una referencia como 1/2.")},{id:`w${e}-q5`,type:"fillBlank",prompt:l("Compare with <, >, or =: 5/6 ____ 5/8.","Compara con <, >, o =: 5/6 ____ 5/8."),acceptableAnswers:[">","greater","mayor"],feedbackCorrect:M,feedbackIncorrect:P,explanation:l("With the same numerator, the fraction with the smaller denominator is larger, so 5/6 > 5/8.","Con el mismo numerador, la fracción con el denominador menor es mayor, asà que 5/6 > 5/8.")},{id:`w${e}-q6`,type:"fillBlank",prompt:l("A fraction equal to 1/2 with a denominator of 8 is ____/8.","Una fracción igual a 1/2 con denominador 8 es ____/8."),acceptableAnswers:["4","four","cuatro"],feedbackCorrect:M,feedbackIncorrect:P,explanation:l("4/8 = 1/2 because 4 is half of 8.","4/8 = 1/2 porque 4 es la mitad de 8.")},{id:`w${e}
315-q7`,type:"shortAnswer",prompt:l("Explain how to compare 3/5 and 3/8 without finding a common denominator.","Explica cómo comparar 3/5 y 3/8 sin hallar un denominador común."),feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Same numerator: fifths are bigger pieces than eighths, so 3/5 > 3/8.","Mismo numerador: los quintos son trozos más grandes que los octavos, asà que 3/5 > 3/8.")},{id:`w${e}-q8`,type:"reflection",prompt:l("When comparing fractions, do you find common denominators or use benchmarks like 1/2 more helpful? Why?","Al comparar fracciones, ¿te resulta más útil hallar denominadores comunes o usar referencias como 1/2? ¿Por qué?"),feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Reflection question â full credit for a thoughtful answer.","Pregunta de reflexión â crédito completo por una respuesta reflexiva.")}],22:e=>[{id:`w${e}-q1`,type:"multipleChoice",prompt:l("What is 2/8 + 3/8?","¿Cuánto es 2/8 + 3/8?"),options:[l("5/8","5/8"),l("5/16","5/16"),l("6/16","6/16"),l("1/8","1/8")],correctAnswer:"5/8",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Add the numerators and keep the denominator: 2 + 3 = 5, so 5/8.","Suma los numeradores y conserva el denominador: 2 + 3 = 5, asà que 5/8.")},{id:`w${e}-q2`,type:"multipleChoice",prompt:l("What is 5/6 â 2/6?","¿Cuánto es 5/6 â 2/6?"),options:[l("3/6","3/6"),l("3/12","3/12"),l("7/6","7/6"),l("3/0","3/0")],correctAnswer:"3/6",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Subtract the numerators and keep the denominator: 5 â 2 = 3, so 3/6.","Resta los numeradores y conserva el denominador: 5 â 2 = 3, asà que 3/6.")},{id:`w${e}-q3`,type:"multipleChoice",prompt:l("When adding fractions with the same denominator, you add the ____ and keep the denominator.","Al sumar fracciones con el mismo denominador, sumas los ____ y conservas el denominador."),options:[l("numerators","numeradores"),l("denominators","denominadores"),l("both","ambos"),l("whole numbers","números enteros")],correctAnswer:"numerators",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("The denominator names the size of the pieces and stays the same; you count pieces by adding numerators.","El denominador nombra el tamaño de los trozos y se mantiene; cuentas los trozos sumando los numeradores.")},{id:`w${e}-q4`,type:"trueFalse",prompt:l("3/5 + 1/5 = 4/10.","3/5 + 1/5 = 4/10."),options:Ve,correctAnswer:"False",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Keep the denominator: 3/5 + 1/5 = 4/5, not 4/10.","Conserva el denominador: 3/5 + 1/5 = 4/5, no 4/10.")},{id:`w${e}-q5`,type:"fillBlank",prompt:l("4/9 + 2/9 = ____/9.","4/9 + 2/9 = ____/9."),acceptableAnswers:["6","six","seis"],feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Add the numerators: 4 + 2 = 6, giving 6/9.","Suma los numeradores: 4 + 2 = 6, dando 6/9.")},{id:`w${e}-q6`,type:"fillBlank",prompt:l("7/10 â 4/10 = ____/10.","7/10 â 4/10 = ____/10."),acceptableAnswers:["3","three","tres"],feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Subtract the numerators: 7 â 4 = 3, giving 3/10.","Resta los numeradores: 7 â 4 = 3, dando 3/10.")},{id:`w${e}-q7`,type:"shortAnswer",prompt:l("A recipe uses 3/8 cup of flour, then 2/8 cup more. How much flour in all? Show your work.","Una receta usa 3/8 de taza de harina y luego 2/8 de taza más. ¿Cuánta harina en total? Muestra tu trabajo."),feedbackCorrect:M,feedbackIncorrect:P,explanation:l("3/8 + 2/8 = 5/8 cup of flour.","3/8 + 2/8 = 5/8 de taza de harina.")},{id:`w${e}-q8`,type:"reflection",prompt:l("Why does the denominator stay the same when you add fractions with like denominators?","¿Por qué el denominador se mantiene igual cuando sumas fracciones con de
315nominadores iguales?"),feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Reflection question â full credit for a thoughtful answer.","Pregunta de reflexión â crédito completo por una respuesta reflexiva.")}],23:e=>[{id:`w${e}-q1`,type:"multipleChoice",prompt:l("What is 1 1/4 + 2 1/4?","¿Cuánto es 1 1/4 + 2 1/4?"),options:[l("3 2/4","3 2/4"),l("3 1/4","3 1/4"),l("3 2/8","3 2/8"),l("2 2/4","2 2/4")],correctAnswer:"3 2/4",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Add wholes: 1 + 2 = 3. Add fractions: 1/4 + 1/4 = 2/4. Result: 3 2/4.","Suma los enteros: 1 + 2 = 3. Suma las fracciones: 1/4 + 1/4 = 2/4. Resultado: 3 2/4.")},{id:`w${e}-q2`,type:"multipleChoice",prompt:l("What is 3 3/5 â 1 1/5?","¿Cuánto es 3 3/5 â 1 1/5?"),options:[l("2 2/5","2 2/5"),l("2 4/5","2 4/5"),l("4 2/5","4 2/5"),l("2 2/10","2 2/10")],correctAnswer:"2 2/5",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Subtract wholes: 3 â 1 = 2. Subtract fractions: 3/5 â 1/5 = 2/5. Result: 2 2/5.","Resta los enteros: 3 â 1 = 2. Resta las fracciones: 3/5 â 1/5 = 2/5. Resultado: 2 2/5.")},{id:`w${e}-q3`,type:"multipleChoice",prompt:l("To add mixed numbers, you can add the whole numbers and the ____ separately.","Para sumar números mixtos, puedes sumar los números enteros y las ____ por separado."),options:[l("fractions","fracciones"),l("denominators","denominadores"),l("numerators only","solo numeradores"),l("decimals","decimales")],correctAnswer:"fractions",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("A mixed number is a whole plus a fraction, so add the wholes and the fractions separately.","Un número mixto es un entero más una fracción, asà que suma los enteros y las fracciones por separado.")},{id:`w${e}-q4`,type:"trueFalse",prompt:l("2 3/4 can be written as the improper fraction 11/4.","2 3/4 se puede escribir como la fracción impropia 11/4."),options:Ve,correctAnswer:"True",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("2 à 4 = 8, plus 3 is 11, over 4: 11/4.","2 à 4 = 8, más 3 es 11, sobre 4: 11/4.")},{id:`w${e}-q5`,type:"fillBlank",prompt:l("Add and write as a mixed number: 1 2/6 + 2 3/6 = ____.","Suma y escribe como número mixto: 1 2/6 + 2 3/6 = ____."),acceptableAnswers:["3 5/6","three and five sixths","tres y cinco sextos"],feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Wholes: 1 + 2 = 3. Fractions: 2/6 + 3/6 = 5/6. Result: 3 5/6.","Enteros: 1 + 2 = 3. Fracciones: 2/6 + 3/6 = 5/6. Resultado: 3 5/6.")},{id:`w${e}-q6`,type:"fillBlank",prompt:l("Write 2 1/3 as an improper fraction: ____/3.","Escribe 2 1/3 como fracción impropia: ____/3."),acceptableAnswers:["7","seven","siete"],feedbackCorrect:M,feedbackIncorrect:P,explanation:l("2 à 3 = 6, plus 1 is 7, over 3: 7/3.","2 à 3 = 6, más 1 es 7, sobre 3: 7/3.")},{id:`w${e}-q7`,type:"shortAnswer",prompt:l("You walk 1 1/2 miles, then 2 1/2 miles more. How far in all? Show your work.","Caminas 1 1/2 millas y luego 2 1/2 millas más. ¿Cuánto en total? Muestra tu trabajo."),feedbackCorrect:M,feedbackIncorrect:P,explanation:l("1 1/2 + 2 1/2 = 3 + 2/2 = 4 miles.","1 1/2 + 2 1/2 = 3 + 2/2 = 4 millas.")},{id:`w${e}-q8`,type:"reflection",prompt:l("Do you find it easier to add mixed numbers by parts or by changing them to improper fractions first? Why?","¿Te resulta más fácil sumar números mixtos por partes o convertirlos primero a fracciones impropias? ¿Por qué?"),feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Reflection question â full credit for a thoughtful answer.","Pregunta de reflexión â crédito completo por una respuesta reflexiva.")}],24:e=>[{id:`w${e}-q1`,type:"multipleChoice",prompt:l("What is 3 à 2/5?","¿Cuánto es 3 à 2/5?"),options:[l("6/5","6/5"),l("6/15","6/15"),l("5/6","5/6"),l("6/10","6/10")],correctAnswer:"6/5",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Multiply the numerator by the whole number: 3 à 2 = 6, over 5: 6/5.","Multiplica el numerador por el número entero: 3 à 2 = 6, sobre 5: 6/5.")},{id:`w${e}-q2`,type:"multipleChoice",prompt:l("What is 4 à 1/3?","¿Cuánto es 4 à 1/3?"),options:[l("4/3","4/3"),l("1/12","1/12"),l("4/12","4/12"),l("5/3","5/3")],correctAnswer:"4/3",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("4 à 1/3 means four 1/3 pieces: 4 à 1 = 4, over 3: 4/3.","4 à 1/3 significa cuatro trozos de 1/3: 4 à 1 = 4, sobre 3: 4/3.")},{id:`w${e}-q3`,type:"multipleChoice",prompt:l("5 à 2/7 means 5 groups of ____.","5 à 2/7 significa 5 grupos de ____."),options:[l("2/7","2/7"),l("5/7","5/7"),l("10","10"),l("2/5","2/5")],correctAnswer:"2/7",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Multiplying by a whole number is repeated addition: 5 groups of 2/7.","Multiplicar por un número entero es suma repetida: 5 grupos de 2/7.")},{id:`w${e}-q4`,type:"trueFalse",prompt:l("To multiply a fraction by a whole number, you multiply the numerator by the whole number.","Para multiplicar una fracción por un número entero, multiplicas el numerador por el número entero."),options:Ve,correctAnswer:"True",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("The denominator stays the same; only the numerator is multiplied by the whole number.","El denominador se mantiene igual; solo el numerador se multiplica por el número entero.")},{id:`w${e}-q5`,type:"fillBlank",prompt:l("6 à 1/4 = ____/4.","6 à 1/4 = ____/4."),acceptableAnswers:["6","six","seis"],feedbackCorrect:M,feedbackIncorrect:P,explanation:l("6 à 1 = 6, over 4: 6/4.","6 à 1 = 6, sobre 4: 6/4.")},{id:`w${e}-q6`,type:"fillBlank",prompt:l("5 à 3/8 = ____/8.","5 à 3/8 = ____/8."),acceptableAnswers:["15","fifteen","quince"],feedbackCorrect:M,feedbackIncorrect:P,explanation:l("5 à 3 = 15, over 8: 15/8.","5 à 3 = 15, sobre 8: 15/8.")},{id:`w${e}-q7`,type:"shortAnswer",prompt:l("Each glass holds 2/3 liter of juice. How much juice is in 4 glasses? Show your work.","Cada vaso contiene 2/3 de litro de jugo. ¿Cuánto jugo hay en 4 vasos? Muestra tu trabajo."),feedbackCorrect:M,feedbackIncorrect:P,explanation:l("4 à 2/3 = 8/3 = 2 2/3 liters.","4 à 2/3 = 8/3 = 2 2/3 litros.")},{id:`w${e}-q8`,type:"reflection",prompt:l("How is multiplying a fraction by a whole number like repeated addition?","¿En qué se parece multiplicar una fracción por un número entero a la suma repetida?"),feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Reflection question â full credit for a thoughtful answer.","Pregunta de reflexión â cr
315édito completo por una respuesta reflexiva.")}],25:e=>[{id:`w${e}-q1`,type:"multipleChoice",prompt:l("3/10 is equivalent to which fraction?","¿3/10 es equivalente a qué fracción?"),options:[l("30/100","30/100"),l("3/100","3/100"),l("13/100","13/100"),l("300/100","300/100")],correctAnswer:"30/100",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Multiply numerator and denominator by 10: 3/10 = 30/100.","Multiplica el numerador y el denominador por 10: 3/10 = 30/100.")},{id:`w${e}-q2`,type:"multipleChoice",prompt:l("What is 4/10 + 5/100?","¿Cuánto es 4/10 + 5/100?"),options:[l("45/100","45/100"),l("9/100","9/100"),l("9/110","9/110"),l("45/10","45/10")],correctAnswer:"45/100",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Rename 4/10 as 40/100, then 40/100 + 5/100 = 45/100.","Renombra 4/10 como 40/100, luego 40/100 + 5/100 = 45/100.")},{id:`w${e}-q3`,type:"multipleChoice",prompt:l("7/10 written with hundredths is ____.","7/10 escrito con centésimas es ____."),options:[l("70/100","70/100"),l("7/100","7/100"),l("17/100","17/100"),l("700/100","700/100")],correctAnswer:"70/100",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Multiply numerator and denominator by 10: 7/10 = 70/100.","Multiplica el numerador y el denominador por 10: 7/10 = 70/100.")},{id:`w${e}-q4`,type:"trueFalse",prompt:l("2/10 and 20/100 represent the same amount.","2/10 y 20/100 representan la misma cantidad."),options:Ve,correctAnswer:"True",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("2/10 = 20/100 because both equal two tenths.","2/10 = 20/100 porque ambas equivalen a dos décimas.")},{id:`w${e}-q5`,type:"fillBlank",prompt:l("6/10 = ____/100.","6/10 = ____/100."),acceptableAnswers:["60","sixty","sesenta"],feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Multiply numerator and denominator by 10: 6/10 = 60/100.","Multiplica el numerador y el denominador por 10: 6/10 = 60/100.")},{id:`w${e}-q6`,type:"fillBlank",prompt:l("2/10 + 3/100 = ____/100.","2/10 + 3/100 = ____/100."),acceptableAnswers:["23","twenty-three","veintitrés"],feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Rename 2/10 as 20/100, then 20/100 + 3/100 = 23/100.","Renombra 2/10 como 20/100, luego 20/100 + 3/100 = 23/100.")},{id:`w${e}-q7`,type:"shortAnswer",prompt:l("Explain why 5/10 equals 50/100 using a hundredths grid.","Explica por qué 5/10 es igual a 50/100 usando una cuadrÃcula de centésimas."),feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Each tenth column is 10 small squares; 5 columns shade 50 of the 100 squares.","Cada columna de décimas tiene 10 cuadritos; 5 columnas sombrean 50 de los 100 cuadritos.")},{id:`w${e}-q8`,type:"reflection",prompt:l("Why is it useful to rewrite tenths as hundredths before adding them together?","¿Por qué es útil reescribir las décimas como centésimas antes de sumarlas?"),feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Reflection question â full credit for a thoughtful answer.","Pregunta de reflexión â crédito completo por una respuesta reflexiva.")}],26:e=>[{id:`w${e}-q1`,type:"multipleChoice",prompt:l("Write 7/10 as a decimal.","Escribe 7/10 como decimal."),options:[l("0.7","0.7"),l("0.07","0.07"),l("7.0","7.0"),l("0.71","0.71")],correctAnswer:"0.7",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Seven tenths is written 0.7.","Siete décimas se escribe 0.7.")},{id:`w${e}-q2`,type:"multipleChoice",prompt:l("Write 35/100 as a decimal.","Escribe 35/100 como decimal."),options:[l("0.35","0.35"),l("3.5","3.5"),l("0.035","0.035"),l("0.305","0.305")],correctAnswer:"0.35",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Thirty-five hundredths is written 0.35.","Treinta y cinco centésimas se escribe 0.35.")},{id:`w${e}-q3`,type:"multipleChoice",prompt:l("Which decimal is greater, 0.6 or 0.45?","¿Qué decimal es mayor, 0.6 o 0.45?"),options:[l("0.6","0.6"),l("0.45","0.45"),l("they are equal","son iguales"),l("you cannot tell","no se puede saber")],correctAnswer:"0.6",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("0.6 = 0.60, and 60 hundredths is greater than 45 hundredths.","0.6 = 0.60, y 60 centésimas es mayor que 45 centésimas.")},{id:`w${e}-q4`,type:"trueFalse",prompt:l("0.3 is less than 0.30.","0.3 es menor que 0.30."),options:Ve,correctAnswer:"False",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("0.3 and 0.30 are equal; the extra zero does not change the value.","0.3 y 0.30 son iguales;
315 el cero extra no cambia el valor.")},{id:`w${e}-q5`,type:"fillBlank",prompt:l("Write 9/100 as a decimal.","Escribe 9/100 como decimal."),acceptableAnswers:["0.09","nine hundredths","nueve centésimas"],feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Nine hundredths is written 0.09.","Nueve centésimas se escribe 0.09.")},{id:`w${e}-q6`,type:"fillBlank",prompt:l("Compare with <, >, or =: 0.5 ____ 0.50.","Compara con <, >, o =: 0.5 ____ 0.50."),acceptableAnswers:["=","equal","igual"],feedbackCorrect:M,feedbackIncorrect:P,explanation:l("0.5 = 0.50 because both equal five tenths.","0.5 = 0.50 porque ambos equivalen a cinco décimas.")},{id:`w${e}-q7`,type:"shortAnswer",prompt:l("Explain why 0.4 is greater than 0.25, even though 25 is bigger than 4.","Explica por qué 0.4 es mayor que 0.25, aunque 25 sea mayor que 4."),feedbackCorrect:M,feedbackIncorrect:P,explanation:l("0.4 = 0.40 = 40 hundredths, which is more than 25 hundredths.","0.4 = 0.40 = 40 centésimas, que es más que 25 centésimas.")},{id:`w${e}-q8`,type:"reflection",prompt:l("How does thinking in hundredths help you compare decimals like 0.4 and 0.25?","¿Cómo te ayuda pensar en centésimas a comparar decimales como 0.4 y 0.25?"),feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Reflection question â full credit for a thoughtful answer.","Pregunta de reflexión â crédito completo por una respuesta reflexiva.")}],27:e=>[{id:`w${e}-q1`,type:"multipleChoice",prompt:l("Which fraction is equivalent to 2/4?","¿Qué fracción es equivalente a 2/4?"),options:[l("1/2","1/2"),l("2/3","2/3"),l("3/4","3/4"),l("1/4","1/4")],correctAnswer:"1/2",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Divide numerator and denominator by 2: 2/4 = 1/2.","Divide el numerador y el denominador entre 2: 2/4 = 1/2.")},{id:`w${e}-q2`,type:"multipleChoice",prompt:l("What is 3/8 + 2/8?","¿Cuánto es 3/8 + 2/8?"),options:[l("5/8","5/8"),l("5/16","5/16"),l("1/8","1/8"),l("6/8","6/8")],correctAnswer:"5/8",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Add the numerators and keep the denominator: 3 + 2 = 5, so 5/8.","Suma los numeradores y conserva el denominador: 3 + 2 = 5, asà que 5/8.")},{id:`w${e}-q3`,type:"multipleChoice",prompt:l("Write 50/100 as a decimal.","Escribe 50/100 como decimal."),options:[l("0.5","0.5"),l("0.05","0.05"),l("5.0","5.0"),l("0.55","0.55")],correctAnswer:"0.5",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("50/100 = 5/10 = 0.5.","50/100 = 5/10 = 0.5.")},{id:`w${e}-q4`,type:"trueFalse",prompt:l("0.7 and 7/10 represent the same number.","0.7 y 7/10 representan el mismo número."),options:Ve,correctAnswer:"True",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("0.7 is read 'seven tenths,' which is exactly 7/10.","0.7 se lee 'siete décimas', que es exactamente 7/10.")},{id:`w${e}-q5`,type:"fillBlank",prompt:l("Fill in the missing numerator: 1/2 = ____/8.","Completa el numerador que falta: 1/2 = ____/8."),acceptableAnswers:["4","four","cuatro"],feedbackCorrect:M,feedbackIncorrect:P,explanation:l("2 à 4 = 8, so the numerator is 1 à 4 = 4, giving 4/8.","2 à 4 = 8, asà que el numerador es 1 à 4 = 4, dando 4/8.")},{id:`w${e}-q6`,type:"fillBlank",prompt:l("4 à 2/5 = ____/5.","4 à 2/5 = ____/5."),acceptableAnswers:["8","eight","ocho"],feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Multiply the numerator by the whole number: 4 à 2 = 8, over 5: 8/5.","Multiplica el numerador por el número entero: 4 à 2 = 8, sobre 5: 8/5.")},{id:`w${e}-q7`,type:"shortAnswer",prompt:l("Pick one Unit 3 skill (equivalent fractions, comparing, adding/subtracting, multiplying by a whole number, or decimals) and explain how to do it as if teaching a friend.","Elige una destreza de la Unidad 3 (fracciones equivalentes, comparar, sumar/restar, multiplicar por un número entero o decimales) y explica cómo hacerla como si enseñaras a un amigo."),feedbackCorrect:M,feedbackIncorrect:P,explanation:l("A clear step-by-step explanation of any Unit 3 skill earns credit.","Una explicación clara paso a paso de cualquier destreza de la Unidad 3 recibe crédito.")},{id:`w${e}
315-q8`,type:"reflection",prompt:l("Which Unit 3 topic felt easiest, and which would you like more practice with?","¿Qué tema de la Unidad 3 te resultó más fácil y con cuál te gustarÃa practicar más?"),feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Reflection question â full credit for a thoughtful answer.","Pregunta de reflexión â crédito completo por una respuesta reflexiva.")}],28:e=>[{id:`w${e}-q1`,type:"multipleChoice",prompt:l("How many centimeters are in 1 meter?","¿Cuántos centÃmetros hay en 1 metro?"),options:[l("10 cm","10 cm"),l("100 cm","100 cm"),l("1,000 cm","1,000 cm"),l("12 cm","12 cm")],correctAnswer:"100 cm",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("1 meter = 100 centimeters.","1 metro = 100 centÃmetros.")},{id:`w${e}-q2`,type:"multipleChoice",prompt:l("How many minutes are in 3 hours?","¿Cuántos minutos hay en 3 horas?"),options:[l("30 minutes","30 minutos"),l("90 minutes","90 minutos"),l("180 minutes","180 minutos"),l("360 minutes","360 minutos")],correctAnswer:"180 minutes",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("1 hour = 60 minutes, so 3 à 60 = 180 minutes.","1 hora = 60 minutos, asà que 3 à 60 = 180 minutos.")},{id:`w${e}-q3`,type:"multipleChoice",prompt:l("Which is longer, 1 kilometer or 1 meter?","¿Qué es más largo, 1 kilómetro o 1 metro?"),options:[l("1 kilometer","1 kilómetro"),l("1 meter","1 metro"),l("they are equal","son iguales"),l("you cannot tell","no se puede saber")],correctAnswer:"1 kilometer",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("1 kilometer = 1,000 meters, so it is much longer.","1 kilómetro = 1,000 metros, asà que es mucho más largo.")},{id:`w${e}-q4`,type:"trueFalse",prompt:l("There are 1,000 grams in 1 kilogram.","Hay 1,000 gramos en 1 kilogramo."),options:Ve,correctAnswer:"True",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("1 kilogram = 1,000 grams.","1 kilogramo = 1,000 gramos.")},{id:`w${e}-q5`,type:"fillBlank",prompt:l("How many inches are in 2 feet? (1 foot = 12 inches)","¿Cuántas pulgadas hay en 2 pies? (1 pie = 12 pulgadas)"),acceptableAnswers:["24","twenty-four","veinticuatro"],feedbackCorrect:M,feedbackIncorrect:P,explanation:l("2 à 12 = 24 inches.","2 à 12 = 24 pulgadas.")},{id:`w${e}-q6`,type:"fillBlank",prompt:l("Convert 5 meters to centimeters: ____ cm.","Convierte 5 metros a centÃmetros: ____ cm."),acceptableAnswers:["500","five hundred","quinientos"],feedbackCorrect:M,feedbackIncorrect:P,explanation:l("5 à 100 = 500 centimeters.","5 à 100 = 500 centÃmetros.")},{id:`w${e}-q7`,type:"shortAnswer",prompt:l("Explain how to convert 4 kilometers to meters, and why you multiply.","Explica cómo convertir 4 kilómetros a metros y por qué multiplicas."),feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Multiply by 1,000 because each kilometer is 1,000 meters: 4 à 1,000 = 4,000 m.","Multiplica por 1,000 porque cada kilómetro tiene 1,000 metros: 4 à 1,000 = 4,000 m.")},{id:`w${e}-q8`,type:"reflection",prompt:l("When have you needed to convert units in real life?","¿Cuándo has necesitado convertir unidades en la vida real?"),feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Reflection question â full credit for a thoughtful answer.","Pregunta de reflexión â crédito completo por una respuesta reflexiva.")}],29:e=>[{id:`w${e}-q1`,type:"multipleChoice",prompt:l("A ribbon is 2 meters long. Maria cuts off 75 centimeters. How many centimeters are left?","Una cinta mide 2 metros. MarÃa corta 75 centÃmetros. ¿Cuántos centÃmetros quedan?"),options:[l("125 cm","125 cm"),l("175 cm","175 cm"),l("25 cm","25 cm"),l("275 cm","275 cm")],correctAnswer:"125 cm",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("2 m = 200 cm, and 200 â 75 = 125 cm.","2 m = 200 cm, y 200 â 75 = 125 cm.")},{id:`w${e}-q2`,type:"multipleChoice",prompt:l("A movie starts at 3:15 and lasts 90 minutes. What time does it end?","Una pelÃcula empieza a las 3:15 y dura 90 minutos. ¿A qué hora termina?"),options:[l("4:45","4:45"),l("4:05","4:05"),l("5:15","5:15"),l("4:15","4:15")],correctAnswer:"4:45",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("90 minutes = 1 hour 30 minutes; 3:15 + 1:30 = 4:45.","90 minutos = 1 hora 30 minutos; 3:15 + 1:30 = 4:45.")},{id:`w${e}-q3`,type:"multipleChoice",prompt:l("A juice bottle holds 2 liters. How many milliliters is that?","Una botella de jugo contiene 2 litros. ¿Cuántos mililitros son?"),options:[l("200 mL","200 mL"),l("2,000 mL","2,000 mL"),l("20 mL","20 mL"),l("20,000 mL","20,000 mL")],correctAnswer:"2,000 mL",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("1 liter = 1,000 mL, so 2 à 1,000 = 2,000 mL.","1 litro = 1,000 mL, asà que 2 à 1,000 = 2,000 mL.")},{id:`w${e}-q4`,type:"trueFalse",prompt:l("To find how much money is left after spending $3.50 from $10.00, you subtract.","Para hallar cuánto dinero queda después de gastar $3.50 de $10.00, restas."),options:Ve,correctAnswer:"True",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("$10.00 â $3.50 = $6.50, so subtraction is correct.","$10.00 â $3.50 = $6.50, asà que la resta es correcta.")},{id:`w${e}-q5`,type:"fillBlank",prompt:l("A book weighs 500 grams. Two identical books weigh ____ grams.","Un libro pesa 500 gramos. Dos libros iguales pesan ____ gramos."),acceptableAnswers:["1000","1,000","one thousand","mil"],feedbackCorrect:M,feedbackIncorrect:P,explanation:l("500 + 500 = 1,000 grams (1 kilogram).","500 + 500 = 1,000 gramos (1 kilogramo).")},{id:`w${e}-q6`,type:"fillBlank",prompt:l("You have $5.00 and spend $1.25. How much is left? $____","Tienes $5.00 y gastas $1.25. ¿Cuánto queda? $____"),acceptableAnswers:["3.75","$3.75","3.75 dollars"],feedbackCorrect:M,feedbackIncorrect:P,explanation:l("$5.00 â $1.25 = $3.75.","$5.00 â $1.25 = $3.75.")},{id:`w${e}-q7`,type:"shortAnswer",prompt:l("A race is 5 kilometers. Explain how to find how many meters that is, and solve.","Una carrera mide 5 kilómetros. Explica cómo hallar cuántos metros son y resuélvelo."),feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Multiply by 1,000: 5 à 1,000 = 5,000 meters.","Multiplica por 1,000: 5 à 1,000 = 5,000 metros.")},{id:`w${e}-q8`,type:"reflection",prompt:l("Which kind of measurement (length, time, volume, mass, or money) do you use most, and why?","¿Qué tipo de medida (longitud, tiempo, volumen, masa o dinero) usas más y por qué?"),feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Reflection question â full credit for a thoughtful answer.","Pregunta de reflexión â cr
315édito completo por una respuesta reflexiva.")}],30:e=>[{id:`w${e}-q1`,type:"multipleChoice",prompt:l("What is the area of a rectangle that is 6 cm by 4 cm?","¿Cuál es el área de un rectángulo de 6 cm por 4 cm?"),options:[l("24 square cm","24 cm cuadrados"),l("20 square cm","20 cm cuadrados"),l("10 square cm","10 cm cuadrados"),l("48 square cm","48 cm cuadrados")],correctAnswer:"24 square cm",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Area = length à width = 6 à 4 = 24 square cm.","Ãrea = largo à ancho = 6 à 4 = 24 cm cuadrados.")},{id:`w${e}-q2`,type:"multipleChoice",prompt:l("What is the perimeter of that 6 cm by 4 cm rectangle?","¿Cuál es el perÃmetro de ese rectángulo de 6 cm por 4 cm?"),options:[l("20 cm","20 cm"),l("24 cm","24 cm"),l("10 cm","10 cm"),l("48 cm","48 cm")],correctAnswer:"20 cm",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Perimeter = 2 à (6 + 4) = 2 à 10 = 20 cm.","PerÃmetro = 2 à (6 + 4) = 2 à 10 = 20 cm.")},{id:`w${e}-q3`,type:"multipleChoice",prompt:l("Which formula gives the area of a rectangle?","¿Qué fórmula da el área de un rectángulo?"),options:[l("length à width","largo à ancho"),l("length + width","largo + ancho"),l("2 à (length + width)","2 à (largo + ancho)"),l("length â width","largo â ancho")],correctAnswer:"length à width",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Area is length à width; 2 à (length + width) is perimeter.","El área es largo à ancho; 2 à (largo + ancho) es el perÃmetro.")},{id:`w${e}-q4`,type:"trueFalse",prompt:l("Perimeter is the distance around the outside of a shape.","El perÃmetro es la distancia alrededor del exterior de una figura."),options:Ve,correctAnswer:"True",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Perimeter measures the total length around a shape.","El perÃmetro mide la longitud total alrededor de una figura.")},{id:`w${e}-q5`,type:"fillBlank",prompt:l("A square has sides of 5 m. Its perimeter is ____ m.","Un cuadrado tiene lados de 5 m. Su perÃmetro es ____ m."),acceptableAnswers:["20","twenty","veinte"],feedbackCorrect:M,feedbackIncorrect:P,explanation:l("A square has 4 equal sides: 4 à 5 = 20 m.","Un cuadrado tiene 4 lados iguales: 4 à 5 = 20 m.")},{id:`w${e}-q6`,type:"fillBlank",prompt:l("A rectangle is 8 ft by 3 ft. Its area is ____ square feet.","Un rectángulo mide 8 pies por 3 pies. Su área es ____ pies cuadrados."),acceptableAnswers:["24","twenty-four","veinticuatro"],feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Area = 8 à 3 = 24 square feet.","Ãrea = 8 à 3 = 24 pies cuadrados.")},{id:`w${e}-q7`,type:"shortAnswer",prompt:l("Two rectangles can have the same perimeter but different areas. Explain with an example.","Dos rectángulos pueden tener el mismo perÃmetro pero distinta área. ExplÃcalo con un ejemplo."),feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Example: 1Ã5 and 2Ã4 both have perimeter 12 but areas 5 and 8.","Ejemplo: 1Ã5 y 2Ã4 tienen perÃmetro 12 pero áreas 5 y 8.")},{id:`w${e}-q8`,type:"reflection",prompt:l("Where might you use area or perimeter at home?","¿Dónde podrÃas usar el área o el perÃmetro en casa?"),feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Reflection question â full credit for a thoughtful answer.","Pregunta de reflexión â crédito completo por una respuesta reflexiva.")}],31:e=>[{id:`w${e}-q1`,type:"multipleChoice",prompt:l("A line plot shows data using marks above a:","Un diagrama de puntos muestra datos con marcas sobre una:"),options:[l("number line","recta numérica"),l("circle","circunferencia"),l("table","tabla"),l("picture","imagen")],correctAnswer:"number line",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("A line plot places X marks above a number line.","Un diagrama de puntos coloca marcas X sobre una recta numérica.")},{id:`w${e}-q2`,type:"multipleChoice",prompt:l("On a line plot, three X's above 1/2 mean:","En un diagrama de puntos, tres X sobre 1/2 significan:"),options:[l("three items measured 1/2","tres objetos midieron 1/2"),l("the total is 1/2","el total es 1/2"),l("there are 3 halves total","hay 3 mitades en total"),l("one item measured 3","un objeto midió 3")],correctAnswer:"three items measured 1/2",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Each X stands for one item with that measurement.","Cada X representa un objeto con esa medida.")},{id:`w${e}-q3`,type:"multipleChoice",prompt:l("Pencils measured 3/4 in (two of them) and 1/4 in (one). What is their total length?","Se midieron lápices de 3/4 pulg (dos) y 1/4 pulg (uno). ¿Cuál es su longitud total?"),options:[l("7/4 in","7/4 pulg"),l("4/4 in","4/4 pulg"),l("5/4 in","5/4 pulg"),l("6/4 in","6/4 pulg")],correctAnswer:"7/4 in",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("2 à 3/4 + 1/4 = 6/4 + 1/4 = 7/4 in.","2 à 3/4 + 1/4 = 6/4 + 1/4 = 7/4 pulg.")},{id:`w${e}-q4`,type:"trueFalse",prompt:l("A line plot can use fractions like 1/4, 1/2, and 3/4 on its scale.","Un diagrama de puntos puede usar fracciones como 1/4, 1/2 y 3/4 en su escala."),options:Ve,correctAnswer:"True",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Line plots often use a fractional scale to record measurements.","Los diagramas de puntos suelen usar una escala fraccionaria para registrar medidas.")},{id:`w${e}-q5`,type:"fillBlank",prompt:l("Two ribbons measure 1/4 m and 3/4 m. Together they are ____ m.","Dos cintas miden 1/4 m y 3/4 m. Juntas miden ____ m."),acceptableAnswers:["1","one","uno"],feedbackCorrect:M,feedbackIncorrect:P,explanation:l("1/4 + 3/4 = 4/4 = 1 m.","1/4
315+ 3/4 = 4/4 = 1 m.")},{id:`w${e}-q6`,type:"fillBlank",prompt:l("The longest item is 7/8 in and the shortest is 2/8 in. The difference is ____ in.","El objeto más largo mide 7/8 pulg y el más corto 2/8 pulg. La diferencia es ____ pulg."),acceptableAnswers:["5/8","five eighths","cinco octavos"],feedbackCorrect:M,feedbackIncorrect:P,explanation:l("7/8 â 2/8 = 5/8 in.","7/8 â 2/8 = 5/8 pulg.")},{id:`w${e}-q7`,type:"shortAnswer",prompt:l("Explain how a line plot helps you see which measurement is most common.","Explica cómo un diagrama de puntos te ayuda a ver qué medida es la más común."),feedbackCorrect:M,feedbackIncorrect:P,explanation:l("The value with the tallest stack of X's appears most often.","El valor con la columna más alta de X aparece con más frecuencia.")},{id:`w${e}-q8`,type:"reflection",prompt:l("What kind of data from your life could you show on a line plot?","¿Qué tipo de datos de tu vida podrÃas mostrar en un diagrama de puntos?"),feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Reflection question â full credit for a thoughtful answer.","Pregunta de reflexión â crédito completo por una respuesta reflexiva.")}],32:e=>[{id:`w${e}-q1`,type:"multipleChoice",prompt:l("An angle is measured in:","Un ángulo se mide en:"),options:[l("degrees","grados"),l("centimeters","centÃmetros"),l("grams","gramos"),l("liters","litros")],correctAnswer:"degrees",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Angles are measured in degrees.","Los ángulos se miden en grados.")},{id:`w${e}-q2`,type:"multipleChoice",prompt:l("A full circle measures:","Una circunferencia completa mide:"),options:[l("90 degrees","90 grados"),l("180 degrees","180 grados"),l("360 degrees","360 grados"),l("100 degrees","100 grados")],correctAnswer:"360 degrees",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("A full turn around a circle is 360 degrees.","Una vuelta completa alrededor de una circunferencia es 360 grados.")},{id:`w${e}-q3`,type:"multipleChoice",prompt:l("A right angle measures:","Un ángulo recto mide:"),options:[l("45 degrees","45 grados"),l("90 degrees","90 grados"),l("180 degrees","180 grados"),l("360 degrees","360 grados")],correctAnswer:"90 degrees",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("A right angle is exactly 90 degrees.","Un ángulo recto es exactamente 90 grados.")},{id:`w${e}-q4`,type:"trueFalse",prompt:l("A one-degree angle turns through 1/360 of a circle.","Un ángulo de un grado recorre 1/360 de una circunferencia."),options:Ve,correctAnswer:"True",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("One degree is 1/360 of a full circle.","Un grado es 1/360 de una circunferencia completa.")},{id:`w${e}-q5`,type:"fillBlank",prompt:l("A straight angle measures ____ degrees.","Un ángulo llano mide ____ grados."),acceptableAnswers:["180","one hundred eighty","ciento ochenta"],feedbackCorrect:M,feedbackIncorrect:P,explanation:l("A straight angle is 180 degrees.","Un ángulo llano es 180 grados.")},{id:`w${e}-q6`,type:"fillBlank",prompt:l("Half of a right angle measures ____ degrees.","La mitad de un ángulo recto mide ____ grados."),acceptableAnswers:["45","forty-five","cuarenta y cinco"],feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Half of 90 degrees is 45 degrees.","La mitad de 90 grados es 45 grados.")},{id:`w${e}-q7`,type:"shortAnswer",prompt:l("Explain how to use a protractor to measure an angle.","Explica cómo usar un transportador para medir un ángulo."),feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Line the vertex on the center and one ray on zero, then read where the other ray crosses the scale.","Coloca el vértice en el centro y un rayo en cero, luego lee dónde cruza el otro rayo la escala.")},{id:`w${e}-q8`,type:"reflection",prompt:l("Where do you see angles around you every day?","¿Dónde ves ángulos a tu alrededor todos los dÃas?"),feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Reflection question â full credit for a thoughtful answer.","Pregunta de reflexión â crédito completo por una respuesta reflexiva.")}],33:e=>[{id:`w${e}-q1`,type:"multipleChoice",prompt:l("Two angles of 30° and 40° share a side and form a larger angle. The larger angle is:","Dos ángulos de 30° y 40° comparten un lado y forman un ángulo mayor. El ángulo mayor es:"),options:[l("70 degrees","70 grados"),l("10 degrees","10 grados"),l("1,200 degrees","1,200 grados"),l("35 degrees","35 grados")],correctAnswer:"70 degrees",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Add the parts: 30 + 40 = 70 degrees.","Suma las partes: 30 + 40 = 70 grados.")},{id:`w${e}-q2`,type:"multipleChoice",prompt:l("A 90° angle is split into a 25° angle and another angle. The other angle is:","Un ángulo de 90° se divide en un ángulo de 25° y otro ángulo. El otro ángulo es:"),options:[l("65 degrees","65 grados"),l("115 degrees","115 grados"),l("25 degrees","25 grados"),l("75 degrees","75 grados")],correctAnswer:"65 degrees",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Subtract: 90 â 25 = 65 degrees.","Resta: 90 â 25 = 65 grados.")},{id:`w${e}-q3`,type:"multipleChoice",prompt:l("When two angles are put together with no gaps or overlaps, you:","Cuando dos ángulos se unen sin huecos ni superposiciones, tú:"),options:[l("add their measures","sumas sus medidas"),l("subtract their measures","restas sus medidas"),l("multiply their measures","multiplicas sus medidas"),l("divide their measures","divides sus medidas")],correctAnswer:"add their measures",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Joined angles add up to the whole angle.","Los ángulos unidos suman el ángulo completo.")},{id:`w${e}-q4`,type:"trueFalse",prompt:l("To find an unknown part of a decomposed angle, you can subtract.","Para hallar una parte desconocida de un ángulo descompuesto, puedes restar."),options:Ve,correctAnswer:"True",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Subtract the known part from the whole to find the missing part.","Resta la parte conocida del total para hallar la parte que falta.")},{id:`w${e}-q5`,type:"fillBlank",prompt:l("A 180° straight angle is split into 110° and ____°.","Un ángulo llano de 180° se divide en 110° y ____°."),acceptableAnswers:["70","seventy","setenta"],feedbackCorrect:M,feedbackIncorrect:P,explanation:l("180 â 110 = 70 degrees.","180 â 110 = 70 grados.")},{id:`w${e}-q6`,type:"fillBlank",prompt:l("Angles of 35° and 55° join to make ____°.","Ãngulos de 35° y 55° se unen para formar ____°."),acceptableAnswers:["90","ninety","noventa"],feedbackCorrect:M,feedbackIncorrect:P,explanation:l("35 + 55 = 90 degrees (a right angle).","35 + 55 = 90 grados (un ángulo recto).")},{id:`w${e}-q7`,type:"shortAnswer",prompt:l("An angle of 120° is made of two equal angles. Explain how to find each one.","Un ángulo de 120° está formado por dos ángulos iguales. Explica cómo hallar cada uno."),feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Divide by 2: 120 ÷ 2 = 60 degrees each.","Divide entre 2: 120 ÷ 2 = 60 grados cada uno.")},{id:`w${e}-q8`,type:"reflection",prompt:l("How is adding angles like adding lengths on a ruler?","¿En qué se parece sumar ángulos a sumar longitudes en una regla?"),feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Reflection question â full credit for a thoughtful answer.","Pregunta de reflexión â cr
315édito completo por una respuesta reflexiva.")}],34:e=>[{id:`w${e}-q1`,type:"multipleChoice",prompt:l("Which figure has exactly one endpoint?","¿Qué figura tiene exactamente un extremo?"),options:[l("a ray","un rayo"),l("a line","una recta"),l("a line segment","un segmento"),l("a point","un punto")],correctAnswer:"a ray",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("A ray starts at one endpoint and goes on forever in one direction.","Un rayo comienza en un extremo y continúa para siempre en una dirección.")},{id:`w${e}-q2`,type:"multipleChoice",prompt:l("Lines that never cross and stay the same distance apart are:","Las rectas que nunca se cruzan y mantienen la misma distancia son:"),options:[l("parallel","paralelas"),l("perpendicular","perpendiculares"),l("intersecting","secantes"),l("curved","curvas")],correctAnswer:"parallel",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Parallel lines never meet and stay equally far apart.","Las rectas paralelas nunca se encuentran y se mantienen igual de separadas.")},{id:`w${e}-q3`,type:"multipleChoice",prompt:l("Two lines that meet to form right angles are:","Dos rectas que se encuentran formando ángulos rectos son:"),options:[l("perpendicular","perpendiculares"),l("parallel","paralelas"),l("curved","curvas"),l("equal","iguales")],correctAnswer:"perpendicular",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Perpendicular lines cross at 90-degree angles.","Las rectas perpendiculares se cruzan en ángulos de 90 grados.")},{id:`w${e}-q4`,type:"trueFalse",prompt:l("A line segment has two endpoints.","Un segmento tiene dos extremos."),options:Ve,correctAnswer:"True",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("A segment is a piece of a line with two endpoints.","Un segmento es una parte de una recta con dos extremos.")},{id:`w${e}-q5`,type:"fillBlank",prompt:l("An angle is formed by two rays that share an ____.","Un ángulo se forma con dos rayos que comparten un ____."),acceptableAnswers:["endpoint","vertex","extremo","vértice"],feedbackCorrect:M,feedbackIncorrect:P,explanation:l("The shared endpoint of the two rays is the vertex.","El extremo común de los dos rayos es el vértice.")},{id:`w${e}-q6`,type:"fillBlank",prompt:l("Train tracks are a real-life example of ____ lines.","Las vÃas del tren son un ejemplo real de rectas ____."),acceptableAnswers:["parallel","paralelas","paralelo"],feedbackCorrect:M,feedbackIncorrect:P,explanation:l("The rails stay the same distance apart, so they are parallel.","Los rieles se mantienen a la misma distancia, asà que son paralelos.")},{id:`w${e}-q7`,type:"shortAnswer",prompt:l("Explain the difference between a line, a ray, and a line segment.","Explica la diferencia entre una recta, un rayo y un segmento."),feedbackCorrect:M,feedbackIncorrect:P,explanation:l("A line goes forever both ways, a ray has one endpoint, and a segment has two endpoints.","Una recta continúa para siempre en ambos sentidos, un rayo tiene un extremo y un segmento tiene dos extremos.")},{id:`w${e}-q8`,type:"reflection",prompt:l("Find an example of perpendicular lines in your classroom and describe it.","Encuentra un ejemplo de rectas perpendiculares en tu salón y descrÃbelo."),feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Reflection question â full credit for a thoughtful answer.","Pregunta de reflexión â crédito completo por una respuesta reflexiva.")}],35:e=>[{id:`w${e}-q1`,type:"multipleChoice",prompt:l("A triangle with one right angle is called a:","Un triángulo con un ángulo recto se llama:"),options:[l("right triangle","triángulo rectángulo"),l("equilateral triangle","triángulo equilátero"),l("acute triangle","triángulo acutángulo"),l("obtuse triangle","triángulo obtusángulo")],correctAnswer:"right triangle",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("A right triangle has exactly one 90-degree angle.","Un triángulo rectángulo tiene exactamente un ángulo de 90 grados.")},{id:`w${e}-q2`,type:"multipleChoice",prompt:l("A quadrilateral with exactly one pair of parallel sides is a:","Un cuadrilátero con exactamente un par de lados paralelos es un:"),options:[l("trapezoid","trapecio"),l("rectangle","rectángulo"),l("rhombus","rombo"),l("square","cuadrado")],correctAnswer:"trapezoid",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("A trapezoid has one pair of parallel sides.","Un trapecio tiene un par de lados paralelos.")},{id:`w${e}-q3`,type:"multipleChoice",prompt:l("How many lines of symmetry does a square have?","¿Cuántos ejes de simetrÃa tiene un cuadrado?"),options:[l("4","4"),l("1","1"),l("2","2"),l("0","0")],correctAnswer:"4",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("A square has 4 lines of symmetry.","Un cuadrado tiene 4 ejes de simetrÃa.")},{id:`w${e}-q4`,type:"trueFalse",prompt:l("A line of symmetry divides a shape into two matching halves.","Un eje de simetrÃa divide una figura en dos mitades iguales."),options:Ve,correctAnswer:"True",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Folding along a line of symmetry makes the halves match exactly.","Al doblar por un eje de simetrÃa, las mitades coinciden exactamente.")},{id:`w${e}-q5`,type:"fillBlank",prompt:l("A triangle with all three sides equal is called ____.","Un triángulo con los tres lados iguales se llama ____."),acceptableAnswers:["equilateral","equilátero","equilatero"],feedbackCorrect:M,feedbackIncorrect:P,explanation:l("An equilateral triangle has three equal sides.","Un triángulo equilátero tiene tres lados iguales.")},{id:`w${e}-q6`,type:"fillBlank",prompt:l("A rectangle that is not a square has ____ lines of symmetry.","Un rectángulo que no es cuadrado tiene ____ ejes de simetrÃa."),acceptableAnswers:["2","two","dos"],feedbackCorrect:M,feedbackIncorrect:P,explanation:l("A non-square rectangle has 2 lines of symmetry.","Un rectángulo no cuadrado tiene 2 ejes de simetrÃa.")},{id:`w${e}-q7`,type:"shortAnswer",prompt:l("Explain how to test whether a shape has a line of symmetry.","Explica cómo comprobar si una figura tiene un eje de simetrÃa."),feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Fold (or imagine folding) the shape so the two halves land exactly on each other.","Dobla (o imagina doblar) la figura para que las dos mitades coincidan exactamente.")},{id:`w${e}-q8`,type:"reflection",prompt:l("Which shapes with symmetry do you see in nature or art?","¿Qué figuras con simetrÃa ves en la naturaleza o el arte?"),feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Reflection question â full credit for a thoughtful answer.","Pregunta de reflexión â cr
315édito completo por una respuesta reflexiva.")}],36:e=>[{id:`w${e}-q1`,type:"multipleChoice",prompt:l("3 meters = ____ centimeters.","3 metros = ____ centÃmetros."),options:[l("300 cm","300 cm"),l("30 cm","30 cm"),l("3,000 cm","3,000 cm"),l("3 cm","3 cm")],correctAnswer:"300 cm",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("3 à 100 = 300 centimeters.","3 à 100 = 300 centÃmetros.")},{id:`w${e}-q2`,type:"multipleChoice",prompt:l("What is the area of a rectangle that is 7 by 2 units?","¿Cuál es el área de un rectángulo de 7 por 2 unidades?"),options:[l("14 square units","14 unidades cuadradas"),l("18 square units","18 unidades cuadradas"),l("9 square units","9 unidades cuadradas"),l("28 square units","28 unidades cuadradas")],correctAnswer:"14 square units",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Area = 7 à 2 = 14 square units.","Ãrea = 7 à 2 = 14 unidades cuadradas.")},{id:`w${e}-q3`,type:"multipleChoice",prompt:l("A right angle measures:","Un ángulo recto mide:"),options:[l("90 degrees","90 grados"),l("45 degrees","45 grados"),l("180 degrees","180 grados"),l("360 degrees","360 grados")],correctAnswer:"90 degrees",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("A right angle is 90 degrees.","Un ángulo recto es 90 grados.")},{id:`w${e}-q4`,type:"trueFalse",prompt:l("A square has 4 lines of symmetry.","Un cuadrado tiene 4 ejes de simetrÃa."),options:Ve,correctAnswer:"True",feedbackCorrect:M,feedbackIncorrect:P,explanation:l("A square has 4 lines of symmetry.","Un cuadrado tiene 4 ejes de simetrÃa.")},{id:`w${e}-q5`,type:"fillBlank",prompt:l("The perimeter of a square with side 6 is ____.","El perÃmetro de un cuadrado de lado 6 es ____."),acceptableAnswers:["24","twenty-four","veinticuatro"],feedbackCorrect:M,feedbackIncorrect:P,explanation:l("4 à 6 = 24.","4 à 6 = 24.")},{id:`w${e}-q6`,type:"fillBlank",prompt:l("Two angles of 50° and 40° together make ____°.","Dos ángulos de 50° y 40° juntos forman ____°."),acceptableAnswers:["90","ninety","noventa"],feedbackCorrect:M,feedbackIncorrect:P,explanation:l("50 + 40 = 90 degrees.","50 + 40 = 90 grados.")},{id:`w${e}-q7`,type:"shortAnswer",prompt:l("Pick one Unit 4 skill (conversions, area/perimeter, line plots, angles, or classifying shapes) and explain how to do it as if teaching a friend.","Elige una destreza de la Unidad 4 (conversiones, área/perÃmetro, diagramas de puntos, ángulos o clasificar figuras) y explica cómo hacerla como si enseñaras a un amigo."),feedbackCorrect:M,feedbackIncorrect:P,explanation:l("A clear step-by-step explanation of any Unit 4 skill earns credit.","Una explicación clara paso a paso de cualquier destreza de la Unidad 4 recibe crédito.")},{id:`w${e}-q8`,type:"reflection",prompt:l("Which Unit 4 topic was most interesting, and how might you use it outside school?","¿Qué tema de la Unidad 4 fue más interesante y cómo podrÃas usarlo fuera de la escuela?"),feedbackCorrect:M,feedbackIncorrect:P,explanation:l("Reflection question â full credit for a thoughtful answer.","Pregunta de reflexión â crédito completo por una respuesta reflexiva.")}]};function We(e){const t=NP[e];return t?t(e).map(r=>PP(r)):[]}const J=(e,t,r,s,c)=>({id:e,type:"multipleChoice",prompt:t,options:r,correctAnswer:s,feedbackCorrect:M,feedbackIncorrect:P,explanation:c}),TP={"w1-q7":J("w1-q7",l("What is the value of 6 in 364,205?","¿Cuál es el valor del 6 en 364,205?"),[l("60,000","60,000"),l("6,000","6,000"),l("600","600"),l("600,000","600,000")],"60,000",l("The 6 is in the ten-thousands place, so it is worth 60,000.","El 6 está en las decenas de millar, asà que vale 60,000.")),"w1-q8":J("w1-q8",l("In 60,000, which place is the 6 in?","En 60,000, ¿en qué lugar está el 6?"),[l("Ten-thousands","Decenas de millar"),l("Thousands","Unidades de millar"),l("Hundreds","Centenas"),l("Hundred-thousands","Centenas de millar")],"Ten-thousands",l("The 6 represents 60,000, which is the ten-thousands place.","El 6 representa 60,000, que es el lugar de las decenas de millar.")),"w2-q7":J("w2-q7",l("What is the expanded form of 25,304?","¿Cuál es la forma desarrollada de 25,304?"),[l("20,000 + 5,000 + 300 + 4","20,000 + 5,000 + 300 + 4"),l("20,000 + 500 + 30 + 4","20,000 + 500 + 30 + 4"),l("2,000 + 500 + 30 + 4","2,000 + 500 + 30 + 4"),l("25,000 + 30 + 4","25,000 + 30 + 4")],"20,000 + 5,000 + 300 + 4",l("Each nonzero digit contributes its place value: 20,000, 5,000, 300, and 4.","Cada dÃgito distinto de cero aporta su valor posicional: 20,000, 5,000, 300 y 4.")),"w2-q8":J("w2-q8",l("Which standard number has 3 hundreds and 0 tens?","¿Qué número estándar tiene 3 centenas y 0 decenas?"),[l("25,304","25,304"),l("25,034","25,034"),l("25,340","25,340"),l("2,534","2,534")],"25,304",l("In 25,304, the 3 is in the hundreds place and the tens digit is zero.","En 25,304, el 3 está en las centenas y el dÃgito de las decenas es cero.")),"w3-q7":J("w3-q7",l("What is 23,650 rounded to the nearest thousand?","¿Cuánto es 23,650 redondeado al millar más cercano?"),[l("24,000","24,000"),l("23,000","23,000"),l("23,600","23,600"),l("30,000","30,000")],"24,000",l("The hundreds digit is 6, so 23,650 rounds up to 24,000.","La cifra de las centenas es 6, asà que 23,650 se redondea a 24,000.")),"w3-q8":J("w3-q8",l("Which number is 23,650 rounded to the nearest hun
315dred?","¿Qué número es 23,650 redondeado a la centena más cercana?"),[l("23,700","23,700"),l("23,600","23,600"),l("24,000","24,000"),l("23,650","23,650")],"23,700",l("The tens digit is 5, so round the hundreds digit up: 23,700.","La cifra de las decenas es 5, asà que se redondea la centena hacia arriba: 23,700.")),"w4-q7":J("w4-q7",l("What is 8,475 + 6,238?","¿Cuánto es 8,475 + 6,238?"),[l("14,713","14,713"),l("14,603","14,603"),l("15,713","15,713"),l("13,713","13,713")],"14,713",l("Adding by place and regrouping gives 14,713.","Sumar por lugares y reagrupar da 14,713.")),"w4-q8":J("w4-q8",l("Which estimate is closest to 8,475 + 6,238?","¿Qué estimación es más cercana a 8,475 + 6,238?"),[l("14,700","14,700"),l("12,000","12,000"),l("15,900","15,900"),l("8,000","8,000")],"14,700",l("Rounding to 8,500 and 6,200 gives an estimate near 14,700.","Redondear a 8,500 y 6,200 da una estimación cercana a 14,700.")),"w5-q7":J("w5-q7",l("What is 7,000 â 2,386?","¿Cuánto es 7,000 â 2,386?"),[l("4,614","4,614"),l("4,524","4,524"),l("5,386","5,386"),l("4,714","4,714")],"4,614",l("Regrouping across the zeros gives 7,000 â 2,386 = 4,614.","Reagrupar a través de los ceros da 7,000 â 2,386 = 4,614.")),"w5-q8":J("w5-q8",l("Which addition checks 7,000 â 2,386 = 4,614?","¿Qué suma comprueba 7,000 â 2,386 = 4,614?"),[l("4,614 + 2,386 = 7,000","4,614 + 2,386 = 7,000"),l("4,614 + 7,000 = 2,386","4,614 + 7,000 = 2,386"),l("7,000 + 2,386 = 4,614","7,000 + 2,386 = 4,614"),l("7,000 â 4,614 = 9,386","7,000 â 4,614 = 9,386")],"4,614 + 2,386 = 7,000",l("The difference plus the subtrahend must equal the minuend.","La diferencia más el sustraendo debe ser igual al minuendo.")),"w6-q7":J("w6-q7",l("Which equation means 20 is 4 times as many as 5?","¿Qué ecuación significa que 20 es 4 veces 5?"),[l("20 = 4 à 5","20 = 4 à 5"),l("20 = 4 + 5","20 = 4 + 5"),l("20 = 5 â 4","20 = 5 â 4"),l("20 = 5 ÷ 4","20 = 5 ÷ 4")],"20 = 4 à 5",l("The phrase times as many de
315scribes multiplication: 4 à 5 = 20.","La frase veces describe multiplicación: 4 à 5 = 20.")),"w6-q8":J("w6-q8",l("Which value is 3 times as many as 4?","¿Qué cantidad es 3 veces 4?"),[l("12","12"),l("7","7"),l("1","1"),l("16","16")],"12",l("Three groups of four make 3 à 4 = 12.","Tres grupos de cuatro forman 3 à 4 = 12.")),"w7-q7":J("w7-q7",l("A group has 5 items and another has 7 times as many. How many items are in the second group?","Un grupo tiene 5 artÃculos y otro tiene 7 veces esa cantidad. ¿Cuántos artÃculos hay en el segundo grupo?"),[l("35","35"),l("12","12"),l("28","28"),l("40","40")],"35",l("Multiply 7 à 5 to find the larger group: 35 items.","Multiplica 7 à 5 para hallar el grupo mayor: 35 artÃculos.")),"w7-q8":J("w7-q8",l("If 45 is 5 times an amount, what is that amount?","Si 45 es 5 veces una cantidad, ¿cuál es esa cantidad?"),[l("9","9"),l("40","40"),l("50","50"),l("225","225")],"9",l("Divide 45 by 5 to find the missing factor: 9.","Divide 45 entre 5 para hallar el factor faltante: 9.")),"w8-q7":J("w8-q7",l("A box has 9 packs of 6 pencils and 10 pencils are removed. How many remain?","Una caja tiene 9 paquetes de 6 lápices y se quitan 10. ¿Cuántos quedan?"),[l("44","44"),l("54","54"),l("36","36"),l("64","64")],"44",l("First multiply 9 à 6 = 54, then subtract 10: 44.","Primero multiplica 9 à 6 = 54, luego resta 10: 44.")),"w8-q8":J("w8-q8",l("What is the correct order for 6 packs of 8 markers with 12 given away?","¿Cuál es el orden correcto para 6 paquetes de 8 marcadores y regalar 12?"),[l("Multiply, then subtract","Multiplicar, luego restar"),l("Subtract, then multiply","Restar, luego multiplicar"),l("Add 6 and 8, then subtract 12","Sumar 6 y 8, luego restar 12"),l("Divide 8 by 6, then subtract 12","Dividir 8 entre 6, luego restar 12")],"Multiply, then subtract",l("Find the total markers with 6 à 8, then remove 12.","Halla el total con 6 à 8, luego quita 12.")),"w9-q7":J("w9-q7",l("What is 400 ÷ 4 + 72 ÷ 4?","¿Cuánto es 400 ÷ 4 + 72 ÷ 4?"),[l("118","118"),l("128","128"),l("92","92"),l("472","472")],"118",l("400 ÷ 4 = 100 and 72 ÷ 4 = 18; 100 + 18 = 118.","400 ÷ 4 = 100 y 72 ÷ 4 = 18; 100 + 18 = 118.")),"w9-q8":J("w9-q8",l("48 students ride vans that hold 9 each. How many vans are needed?","48 estudiantes usan camionetas para 9 cada una. ¿Cuántas camionetas se necesitan?"),[l("6","6"),l("5","5"),l("4","4"),l("7","7")],"6",l("48 ÷ 9 is 5 remainder 3, so one more van is needed: 6.","48 ÷ 9 es 5 con residuo 3, asà que se necesita una camioneta más: 6.")),"w10-q7":J("w10-q7",l("Which equation is an inverse of 8 à 12 = 96?","¿Qué ecuación es inversa de 8 à 12 = 96?"),[l("96 ÷ 8 = 12","96 ÷ 8 = 12"),l("96 + 8 = 12","96 + 8 = 12"),l("96 â 8 = 12","96 â 8 = 12"),l("96 à 8 = 12","96 à 8 = 12")],"96 ÷ 8 = 12",l("Division reverses multiplication: 96 divided by 8 equals 12.","La división invierte la multiplicación: 96 dividido entre 8 es 12.")),"w10-q8":J("w10-q8",l("Which fact family uses 7, 9, and 63?","¿Qué familia de operaciones usa 7, 9 y 63?"),[l("7 à 9 = 63, 9 à 7 = 63","7 à 9 = 63, 9 à 7 = 63"),l("7 + 9 = 63, 63 â 7 = 9","7 + 9 = 63, 63 â 7 = 9"),l("63 ÷ 7 = 7, 63 ÷ 9 = 9","63 ÷ 7 = 7, 63 ÷ 9 = 9"),l("63 â 9 = 7, 7 + 9 = 63","63 â 9 = 7, 7 + 9 = 63")],"7 à 9 = 63, 9 à 7 = 63",l("The related multiplication facts use factors 7 and 9 and product 63.","Las operaciones relacionadas usan factores 7 y 9 y producto 63.")),"w11-q7":J("w11-q7",l("Why is 51 composite?","¿Por qué 51 es compuesto?"),[l("It has factors 3 and 17","Tiene factores 3 y 17"),l("It has only factors 1 and 51","Solo tiene factores 1 y 51"),l("It is even","Es par"),l("It is less than 100","Es menor que 100")],"It has factors 3 and 17",l("51 = 3 à 17, so it has factors besides 1 and itself.","51 = 3 à 17, asà que tiene factores además de 1 y él mismo.")),"w11-q8":J("w11-q8",l("Which number is prime: 21, 27, 29, or 33?","¿Qué número es primo: 21, 27, 29 o 33?"),[l("29","29"),l("21","21"),l("27","27"),l("33","33")],"29",l("29 has exactly two factors: 1 and 29.","29 tiene exactamente dos factores: 1 y 29.")),"w12-q7":J("w12-q7",l("What is the next term in 2, 8, 14, 20, 26?","¿Cuál es el siguiente término en 2, 8, 14, 20, 26?"),[l("32","32"),l("30","30"),l("34","34"),l("38","38")],"32",l("Each term increases by 6, so 26 + 6 = 32.","Cada término aumenta 6, asà que 26 + 6 = 32.")),"w12-q8":J("w12-q8",l("Which rule generates 5, 10, 15, 20?","¿Qué regla genera 5, 10, 15, 20?"),[l("Add 5","Sumar 5"),l("Add 10","Sumar 10"),l("Multiply by 5","Multiplicar por 5"),l("Subtract 5","Restar 5")],"Add 5",l("Eac
315h term is 5 more than the preceding term.","Cada término es 5 más que el término anterior.")),"w13-q7":J("w13-q7",l("Which remainder is possible when dividing by 6?","¿Qué residuo es posible al dividir entre 6?"),[l("5","5"),l("6","6"),l("7","7"),l("8","8")],"5",l("A remainder must be less than the divisor 6, so 5 is possible.","El residuo debe ser menor que el divisor 6, asà que 5 es posible.")),"w13-q8":J("w13-q8",l("What does a remainder of 3 when dividing by 6 mean?","¿Qué significa un residuo de 3 al dividir entre 6?"),[l("3 are left after making equal groups","Quedan 3 después de formar grupos iguales"),l("6 are left","Quedan 6"),l("There are 3 groups of 6","Hay 3 grupos de 6"),l("The quotient is 3","El cociente es 3")],"3 are left after making equal groups",l("After making equal groups of 6, three items remain.","Después de formar grupos de 6, quedan tres artÃculos.")),"w14-q7":J("w14-q7",l("What fraction names 3 of 8 equal parts?","¿Qué fracción nombra 3 de 8 partes iguales?"),[l("3/8","3/8"),l("8/3","8/3"),l("3/5","3/5"),l("5/8","5/8")],"3/8",l("The numerator counts 3 selected parts and the denominator counts 8 equal parts.","El numerador cuenta 3 partes seleccionadas y el denominador cuenta 8 partes iguales.")),"w14-q8":J("w14-q8",l("Which fraction represents one whole?","¿Qué fracción representa un entero?"),[l("4/4","4/4"),l("3/4","3/4"),l("1/4","1/4"),l("4/5","4/5")],"4/4",l("Four fourths make all four equal parts of one whole.","Cuatro cuartos forman las cuatro partes iguales de un entero.")),"w15-q7":J("w15-q7",l("Which fraction is equivalent to 2/5?","¿Qué fracción es equivalente a 2/5?"),[l("4/10","4/10"),l("3/10","3/10"),l("2/10","2/10"),l("5/10","5/10")],"4/10",l("Multiplying numerator and denominator by 2 gives 4/10.","Multiplicar numerador y denominador por 2 da 4/10.")),"w15-q8":J("w15-q8",l("Which equation proves 4/10 and 2/5 are equivalent?","¿Qué ecuación prueba que 4/10 y 2/5 son equivalentes?"),[l("2/5 à 2/2 = 4/10","2/5 à 2/2 = 4/10"),l("2/5 + 2/2 = 4/10","2/5 + 2/2 = 4/10"),l("2/5 à 2 = 4/5","2/5 à 2 = 4/5"),l("4/10 â 2/5 = 2/5","4/10 â 2/5 = 2/5")],"2/5 à 2/2 = 4/10",l("Multiplying both parts by the same nonzero number preserves the fraction's value.","Multiplicar ambas partes por el mismo número distinto de cero conserva el valor.")),"w16-q7":J("w16-q7",l("Which fraction is greater: 3/5 or 3/8?","¿Qué fracción es mayor: 3/5 o 3/8?"),[l("3/5","3/5"),l("3/8","3/8"),l("They are equal","Son iguales"),l("Neither fraction","Ninguna fracción")],"3/5",l("With equal numerators, fifths are larger pieces than eighths, so 3/5 is greater.","Con numeradores iguales, los quintos son partes mayores que los octavos, asà que 3/5 es mayor.")),"w16-q8":J("w16-q8",l("Which comparison is true?","¿Qué comparación es verdadera?"),[l("2/3 < 3/4","2/3 < 3/4"),l("2/3 > 3/4","2/3 > 3/4"),l("2/3 = 3/4","2/3 = 3/4"),l("2/3 = 1/4","2/3 = 1/4")],"2/3 < 3/4",l("Using twelfths, 2/3 = 8/12 and 3/4 = 9/12, so 2/3 is less.","En doceavos, 2/3 = 8/12 y 3/4 = 9/12, asà que 2/3 es menor.")),"w17-q7":J("w17-q7",l("What is 3/8 + 2/8?","¿Cuánto es 3/8 + 2/8?"),[l("5/8","5/8"),l("5/16","5/16"),l("1/8","1/8"),l("6/8","6/8")],"5/8",l("Like denominators stay 8 while numerators add: 3 + 2 = 5.","Los denominadores iguales permanecen en 8 y se suman numeradores: 3 + 2 = 5.")),"w17-q8":J("w17-q8",l("Two amounts are 3/8 and 2/8. What is their total?","Dos cantidades son 3/8 y 2/8. ¿Cuál es su total?"),[l("5/8","5/8"),l("1/8","1/8"),l("6/8","6/8"),l("5/16","5/16")],"5/8",l("The parts have the same denominator, so their total is 5/8.","Las partes tienen el mismo denominador, asà que su total es 5/8.")),"w18-q7":J("w18-q7",l("What is 4 1/2 â 2 1/2?","¿Cuánto es 4 1/2 â 2 1/2?"),[l("2","2"),l("1","1"),l("3","3"),l("6","6")],"2",l("Subtract whole parts and fractional parts: 4 1/2 â 2 1/2 = 2.","Resta las partes enteras y fraccionarias: 4 1/2 â 2 1/2 = 2.")),"w18-q8":J("w18-q8",l("Which sum equals 4 miles?","¿Qué suma equivale a 4 millas?"),[l("2 1/2 + 1 1/2","2 1/2 + 1 1/2"),l("2 1/2 + 2 1/2","2 1/2 + 2 1/2"),l("1 1/2 + 1 1/2","1 1/2 + 1 1/2"),l("3 1/2 + 1/2","3 1/2 + 1/2")],"2 1/2 + 1 1/2",l("The whole parts total 3 and the halves total 1, giving 4 miles.","Las partes enteras suman 3 y las mitades suman 1, dando 4 millas.")),"w19-q7":J("w19-q7",l("What is 4 à 2/3?","¿Cuánto es 4 à 2/3?"),[l("8/3","8/3"),l("6/3","6/3"),l("8/12","8/12"),l("2/12","2/12")],"8/3",l("Four groups of 2/3 make 8/3, or 2 2/3.","Cuatro grupos de 2/3 forman 8/3, o 2 2/3.")),"w19-q8":J("w19-q8",l("Which expression represents four groups of 2/3?","¿Qué expresión representa cuatro grupos de 2/3?"),[l("4 à 2/3","4 à 2/3"),l("4 + 2/3","4 + 2/3"),l("4 ÷ 2/3","4 ÷ 2/3"),l("2/3 â 4","2/3 â 4")],"4 à 2/3",l("Equal groups are represented by multiplication: 4 à 2/3.","Los grupos iguales se representan con multiplicación: 4 à 2/3.")),"w20-q7":J("w20-q7",l("How many tenths are represented by 5 columns of a hundred grid?","¿Cuántas décimas representan 5 columnas de una cuadrÃcula de cien?"),[l("5/10","5/10"),l("5/100","5/100"),l("50/10","50/10"),l("1/5","1/5")],"5/10",l("Five columns cover 50 hundredths, which is 5 tenths.","Cinco columnas cubren 50 centésimas, que son 5 décimas.")),"w20-q8":J("w20-q8",l("Which fraction equals 0.5?","¿Qué fracción equivale a 0.5?"),[l("5/10","5/10"),l("5/100","5/100"),l("1/5","1/5"),l("10/5","10/5")],"5/10",l("The decimal 0.5 means five tenths, or 5/10.","El decimal 0.5 significa cinco décimas, o 5/10.")),"w21-q7":J("w21-q7",l("Which is greater: 0.4 or 0.25?","¿Cuál es mayor: 0.4 o 0.25?"),[l("0.4","0.4"),l("0.25","0.25"),l("They are equal","Son iguales"),l("0.04","0.04")],"0.4",l("Write 0.4 as 0.40; 40 hundredths is greater than 25 hundredths.","Escribe 0.4 como 0.40; 40 centésimas es mayor que 25 centésimas.")),"w21-q8":J("w21-q8",l("Which statement compares 0.40 and 0.25 correctly?","¿Qué afirmación compara correctamente 0.40 y 0.25?"),[l("0.40 > 0.25","0.40 > 0.25"),l("0.40 < 0.25","0.40 < 0.25"),l("0.40 = 0.25","0.40 = 0.25"),l("0.04 > 0.25","0.04 > 0.25")],"0.40 > 0.25",l("40 hundredths is greater than 25 hundredths.","40 centésimas es mayor que 25 centésimas.")),"w22-q7":J("w22-q7",l("What is 0.6 + 0.25?","¿Cuánto es 0.6 + 0.25?"),[l("0.85","0.85"),l("0.31","0.31"),l("0.65","0.65"),l("0.625","0.625")],"0.85",l("Align decimal points: 0.60 + 0.25 = 0.85.","Alinea los puntos decimales: 0.60 + 0.25 = 0.85.")),"w22-q8":J("w22-q8",l("Which alignment correctly adds 0.6 and 0.25?","¿Qué alineación suma correctamente 0.6 y 0.25?"),[l("0.60 + 0.25 = 0.85","0.60 + 0.25 = 0.85"),l("0.6 + 0.25 = 0.31","0.6 + 0.25 = 0.31"),l("6.0 + 25 = 31.0","6.0 + 25 = 31.0"),l("0.06 + 0.25 = 0.31","0.06 + 0.25 = 0.31")],"0.60 + 0.25 = 0.85",l("Decimal points align when tenths are written as hundredths: 0.60 + 0.25.","Los puntos se alinean cuando las décimas se escriben como centésimas: 0.60 + 0.25.")),"w23-q7":J("w23-q7",l("Which fraction equals 0.75?","¿Qué fracción equivale a 0.75?"),[l("75/100","75/100"),l("7/5","7/5"),l("75/10","75/10"),l("3/5","3/5")],"75/100",l("0.75 is 75 hundredths, so it is 75/100.","0.75 son 75 centésimas, asà que es 75/100.")),"w23-q8":J("w23-q8",l("How many hundredths equal 0.75?","¿Cuántas centésimas equivalen a 0.75?"),[l("75","75"),l("7","7"),l("25","25"),l("750","750")],"75",l("The two digits after the decimal name 75 hundredths.","Los dos dÃgitos después del decimal nombran 75 centésimas.")),"w24-q7":J("w24-q7",l("What is 4 à 10?","¿Cuánto es 4 à 10?"),[l("40","40"),l("14","14"),l("4","4"),l("400","400")],"40",l("Multiplying 4 by 10 gives 40.","Multiplicar 4 por 10 da 40.")),"w24-q8":J("w24-q8",l("When multiplying by 10, where does each digit move?","Al multiplicar por 10, ¿a dónde se mueve cada dÃgito?"),[l("One place left","Un lugar a la izquierda"),l("One place right","Un lugar a la derecha"),l("It does not move","No se mueve"),l("Two places right","Dos lugares a la derecha")],"One place left",l("A factor of 10 shifts every digit one place to the left.","Un factor de 10 mueve cada dÃgito un lugar a la izquierda.")),"w25-q7":J("w25-q7",l("Which unit is best for the length of a pencil?","¿Qué unidad es mejor para la longitud de un lápiz?"),[l("centimeters","centÃmetros"),l("square centimeters","centÃmetros cuadrados"),l("liters","litros"),l("kilograms","kilogramos")],"centimeters",l("Length is measured with linear units such as centimeters.","La longitud se mide con unidades lineales como centÃmetros.")),"w25-q8":J("w25-q8",l("Which unit measures the area of a floor?","¿Qué unidad mide el área de un piso?"),[l("square meters","metros cuadrados"),l("meters","metros"),l("liters","litros"),l("grams","gramos")],"square meters",l("Area counts square units covering a surface, such as square meters.","El área cuenta unidades cuadradas que cubren una superficie, como metros cuadrados.")),"w26-q7":J("w26-q7",l("How many meters are in 4 kilometers?","¿Cuántos metros hay en 4 kilómetros?"),[l("4,000 meters","4,000 metros"),l("400 meters","400 metros"),l("40 meters","40 metros"),l("40,000 meters","40,000 metros")],"4,000 meters",l("One kilometer is 1,000 meters, so 4 à 1,000 = 4,000.","Un kilómetro son 1,000 metros, asà que 4 à 1,000 = 4,000.")),"w26-q8":J("w26-q8",l("Which equation converts 5 kilometers to meters?","¿Qué ecuación convierte 5 kilómetros a metros?"),[l("5 à 1,000 = 5,000 m","5 à 1,000 = 5,000 m"),l("5 à 100 = 500 m","5 à 100 = 500 m"),l("5 ÷ 1,000 = 0.005 m","5 ÷ 1,000 = 0.005 m"),l("5 + 1,000 = 1,005 m","5 + 1,000 = 1,005 m")],"5 à 1,000 = 5,000 m",l("Each kilometer contains 1,000 meters.","Cada kilómetro contiene 1,000 metros.")),"w27-q7":J("w27-q7",l("Which fraction equals 0.4?","¿Qué fracción equivale a 0.4?"),[l("4/10","4/10"),l("4/100","4/100"),l("40/10","40/10"),l("1/4","1/4")],"4/10",l("0.4 means four tenths, or 4/10.","0.4 significa cuatro décimas, o 4/10.")),"w27-q8":J("w27-q8",l("Which decimal equals 4/10?","¿Qué decimal equivale a 4/10?"),[l("0.4","0.4"),l("0.04","0.04"),l("4.0","4.0"),l("0.14","0.14")],"0.4",l("Four tenths are written as 0.4.","Cuatro décimas se escriben como 0.4.")),"w28-q7":J("w28-q7",l("What is the perimeter of a square with side 6?","¿Cuál es el perÃmetro de un cuadrado de lado 6?"),[l("24 units","24 unidades"),l("36 units","36 unidades"),l("12 units","12 unidades"),l("18 units","18 unidades")],"24 units",l("A square has four sides: 4 à 6 = 24 units.","Un cuadrado tiene cuatro lados: 4 à 6 = 24 unidades.")),"w28-q8":J("w28-q8",l("Which measurement describes the distance around a rectangle?","¿Qué medida describe la distancia alrededor de un rectángulo?"),[l("Perimeter","PerÃmetro"),l("Area","Ãrea"),l("Volume","Volumen"),l("Length of one side","Longitud de un lado")],"Perimeter",l("Perimeter is the total distance around a figure.","El perÃmetro es la distancia total alrededor de una figura.")),"w29-q7":J("w29-q7",l("In a line plot, which value appears most often when the tallest stack
315is at 4?","En un diagrama de puntos, ¿qué valor aparece más cuando la columna más alta está en 4?"),[l("4","4"),l("2","2"),l("3","3"),l("5","5")],"4",l("The tallest stack shows the greatest frequency, and it is above 4.","La columna más alta muestra la mayor frecuencia y está sobre 4.")),"w29-q8":J("w29-q8",l("What does each X represent in a line plot?","¿Qué representa cada X en un diagrama de puntos?"),[l("One data value","Un valor de datos"),l("The total of all values","El total de todos los valores"),l("A unit of length","Una unidad de longitud"),l("The largest value","El valor mayor")],"One data value",l("Each X marks one observation in the data set.","Cada X marca una observación del conjunto de datos.")),"w30-q7":J("w30-q7",l("What is the difference between 2 1/2 and 1 1/2?","¿Cuál es la diferencia entre 2 1/2 y 1 1/2?"),[l("1","1"),l("2","2"),l("3","3"),l("1/2","1/2")],"1",l("Subtracting the measurements gives 2 1/2 â 1 1/2 = 1.","Restar las medidas da 2 1/2 â 1 1/2 = 1.")),"w30-q8":J("w30-q8",l("Which operation finds the total of measurements on a line plot?","¿Qué operación halla el total de medidas en un diagrama?"),[l("Addition","Suma"),l("Subtraction","Resta"),l("Multiplication only","Solo multiplicación"),l("Comparison only","Solo comparación")],"Addition",l("Adding the recorded measurements finds their total.","Sumar las medidas registradas halla su total.")),"w31-q7":J("w31-q7",l("Where is the vertex of an angle?","¿Dónde está el vértice de un ángulo?"),[l("At the common endpoint of the rays","En el extremo común de los rayos"),l("At the far end of one ray","En el extremo lejano de un rayo"),l("At the midpoint of one ray","En el punto medio de un rayo"),l("Outside both rays","Fuera de ambos rayos")],"At the common endpoint of the rays",l("The vertex is the shared endpoint where the two rays meet.","El vértice es el extremo compartido donde se unen los dos rayos.")),"w31-q8":J("w31-q8",l("What do the two rays of an angle share?","¿Qué comparten los dos rayos de un ángulo?"),[l("An endpoint","Un extremo"),l("A full line","Una recta completa"),l("No point","Ningún punto"),l("Two separate endpoints","Dos extremos separados")],"An endpoint",l("The two rays share one endpoint, called the vertex.","Los dos rayos comparten un extremo, llamado vértice.")),"w32-q7":J("w32-q7",l("How many degrees are in a right angle?","¿Cuántos grados hay en un ángulo recto?"),[l("90 degrees","90 grados"),l("45 degrees","45 grados"),l("180 degrees","180 grados"),l("360 degrees","360 grados")],"90 degrees",l("A right angle measures exactly 90 degrees.","Un ángulo recto mide exactamente 90 grados.")),"w32-q8":J("w32-q8",l("A straight angle measures how many degrees?","¿Cuántos grados mide un ángulo llano?"),[l("180 degrees","180 grados"),l("90 degrees","90 grados"),l("360 degrees","360 grados"),l("45 degrees","45 grados")],"180 degrees",l("A straight angle is half of a full 360-degree turn: 180 degrees.","Un ángulo llano es la mitad de un giro completo de 360 grados: 180 grados.")),"w33-q7":J("w33-q7",l("Two equal angles form 120°. What is the measure of each angle?","Dos ángulos iguales forman 120°. ¿Cuánto mide cada uno?"),[l("60 degrees","60 grados"),l("120 degrees","120 grados"),l("30 degrees","30 grados"),l("240 degrees","240 grados")],"60 degrees",l("Divide the whole angle by 2: 120 ÷ 2 = 60 degrees.","Divide el ángulo total entre 2: 120 ÷ 2 = 60 grados.")),"w33-q8":J("w33-q8",l("A 180° angle is split into 110° and what angle?","Un ángulo de 180° se divide en 110° y ¿qué ángulo?"),[l("70 degrees","70 grados"),l("290 degrees","290 grados"),l("110 degrees","110 grados"),l("90 degrees","90 grados")],"70 degrees",l("Subtract the known part: 180 â 110 = 70 degrees.","Resta la parte conocida: 180 â 110 = 70 grados.")),"w34-q7":J("w34-q7",l("Which figure has exactly one endpoint?","¿Qué figura tiene exactamente un extremo?"),[l("A ray","Un rayo"),l("A line","Una recta"),l("A line segment","Un segmento"),l("A point","Un punto")],"A ray",l("A ray starts at one endpoint and extends forever in one direction.","Un rayo comienza en un extremo y continúa para siempre en una dirección.")),"w34-q8":J("w34-q8",l("Which pair of lines is perpendicular?","¿Qué par de lÃneas es perpendicular?"),[l("Lines meeting at 90°","LÃneas que se encuentran a 90°"),l("Lines that never meet","LÃneas que nunca se encuentran"),l("Lines meeting at 45°","LÃneas que se encuentran a 45°"),l("Two curved lines","Dos lÃneas curvas")],"Lines meeting at 90°",l("Perpendicular lines intersect to form right angles of 90 degrees.","Las lÃneas perpendiculares se cruzan formando ángulos re
315ctos de 90 grados.")),"w35-q7":J("w35-q7",l("How many lines of symmetry does a non-square rectangle have?","¿Cuántos ejes de simetrÃa tiene un rectángulo que no es cuadrado?"),[l("2","2"),l("1","1"),l("4","4"),l("0","0")],"2",l("A non-square rectangle matches across its horizontal and vertical center lines.","Un rectángulo no cuadrado coincide respecto a sus ejes central horizontal y vertical.")),"w35-q8":J("w35-q8",l("What does a line of symmetry create in a figure?","¿Qué crea un eje de simetrÃa en una figura?"),[l("Two matching halves","Dos mitades iguales"),l("Two different halves","Dos mitades diferentes"),l("Four unequal parts","Cuatro partes desiguales"),l("No parts","Ninguna parte")],"Two matching halves",l("Folding across a symmetry line makes the two halves match.","Doblar sobre un eje de simetrÃa hace coincidir las dos mitades.")),"w36-q7":J("w36-q7",l("What is the perimeter of a square with side 6?","¿Cuál es el perÃmetro de un cuadrado de lado 6?"),[l("24 units","24 unidades"),l("36 units","36 unidades"),l("12 units","12 unidades"),l("6 units","6 unidades")],"24 units",l("The four equal sides give 4 à 6 = 24 units of perimeter.","Los cuatro lados iguales dan 4 à 6 = 24 unidades de perÃmetro.")),"w36-q8":J("w36-q8",l("Which statement about a square is correct?","¿Qué afirmación sobre un cuadrado es correcta?"),[l("It has four equal sides and four right angles","Tiene cuatro lados iguales y cuatro ángulos rectos"),l("It has three sides","Tiene tres lados"),l("It has one right angle","Tiene un ángulo recto"),l("Its sides are all different","Sus lados son todos diferentes")],"It has four equal sides and four right angles",l("A square has four congruent sides and four 90-degree angles.","Un cuadrado tiene cuatro lados congruentes y cuatro ángulos de 90 grados."))},MP={"w1-q5":J("w1-q5",l("What is the value of 3 in 35,210?","¿Cuál es el valor del 3 en 35,210?"),[l("30,000","30,000"),l("3,000","3,000"),l("300","300"),l("300,000","300,000")],"30,000",l("The 3 is in the ten-thousands place.","El 3 está en las decenas de millar.")),"w1-q6":J("w1-q6",l("How many times is one place worth the place to its right?","¿Cuántas veces vale un lugar comparado con el de su derecha?"),[l("10","10"),l("100","100"),l("2","2"),l("1","1")],"10",l("Eac
315h place is ten times the place to its right.","Cada lugar vale diez veces el de su derecha.")),"w2-q5":J("w2-q5",l("What is 30,000 + 500 + 8 in standard form?","¿Cuál es la forma estándar de 30,000 + 500 + 8?"),[l("30,508","30,508"),l("35,008","35,008"),l("30,580","30,580"),l("305,008","305,008")],"30,508",l("The sum is 30,508.","La suma es 30,508.")),"w2-q6":J("w2-q6",l("Which symbol makes 18,640 __ 18,604 true?","¿Qué sÃmbolo hace verdadera 18,640 __ 18,604?"),[l(">",">"),l("<","<"),l("=","="),l("â ","â ")],">",l("640 is greater than 604, so use greater than.","640 es mayor que 604, asà que usa mayor que.")),"w3-q5":J("w3-q5",l("What is 2,149 rounded to the nearest hundred?","¿Cuánto es 2,149 redondeado a la centena?"),[l("2,100","2,100"),l("2,200","2,200"),l("2,000","2,000"),l("2,150","2,150")],"2,100",l("The tens digit is 4, so round down.","La cifra de las decenas es 4, asà que redondea hacia abajo.")),"w3-q6":J("w3-q6",l("What is 58,372 rounded to the nearest thousand?","¿Cuánto es 58,372 redondeado al millar?"),[l("58,000","58,000"),l("59,000","59,000"),l("58,400","58,400"),l("60,000","60,000")],"58,000",l("The hundreds digit is 3, so round down.","La cifra de las centenas es 3, asà que redondea hacia abajo.")),"w4-q5":J("w4-q5",l("What is 5,280 + 3,640?","¿Cuánto es 5,280 + 3,640?"),[l("8,920","8,920"),l("8,820","8,820"),l("9,020","9,020"),l("8,290","8,290")],"8,920",l("Adding the place values gives 8,920.","Sumar los valores posicionales da 8,920.")),"w4-q6":J("w4-q6",l("A library adds 3,890 books to 14,250. How many books are there?","Una biblioteca agrega 3,890 libros a 14,250. ¿Cuántos hay?"),[l("18,140","18,140"),l("17,140","17,140"),l("18,040","18,040"),l("19,140","19,140")],"18,140",l("14,250 + 3,890 = 18,140.","14,250 + 3,890 = 18,140.")),"w5-q5":J("w5-q5",l("What is 9,140 â 5,620?","¿Cuánto es 9,140 â 5,620?"),[l("3,520","3,520"),l("3,420","3,420"),l("4,520","4,520"),l("3,620","3,620")],"3,520",l("Subtracting gives 3,520.","Restar da 3,520.")),"w5-q6":J("w5-q6",l("A theater has 12,000 seats and sells 7,845. How many remain?","Un teatro tiene 12,000 asientos y vende 7,845. ¿Cuántos quedan?"),[l("4,155","4,155"),l("4,255","4,255"),l("5,155","5,155"),l("3,155","3,155")],"4,155",l("12,000 â 7,845 = 4,155.","12,000 â 7,845 = 4,155.")),"w6-q5":J("w6-q5",l("Which equation represents 42 as 6 times 7?","¿Qué ecuación representa 42 como 6 veces 7?"),[l("42 = 6 à 7","42 = 6 à 7"),l("42 = 6 + 7","42 = 6 + 7"),l("42 = 7 â 6","42 = 7 â 6"),l("42 = 7 ÷ 6","42 = 7 ÷ 6")],"42 = 6 à 7",l("Six groups of seven equal 42.","Seis grupos de siete equivalen a 42.")),"w6-q6":J("w6-q6",l("Maria has 4 stickers. Leo has 3 times as many. How many does Leo have?","MarÃa tiene 4 calcomanÃas. Leo tiene 3 veces esa cantidad. ¿Cuántas tiene?"),[l("12","12"),l("7","7"),l("16","16"),l("1","1")],"12",l("3 à 4 = 12 stickers.","3 à 4 = 12 calcomanÃas.")),"w7-q5":J("w7-q5",l("A cat weighs 3 kg and a dog 9 kg. How many times as heavy is the dog?","Un gato pesa 3 kg y un perro 9 kg. ¿Cuántas veces pesa el perro?"),[l("3","3"),l("6","6"),l("12","12"),l("27","27")],"3",l("9 ÷ 3 = 3 times.","9 ÷ 3 = 3 veces.")),"w7-q6":J("w7-q6",l("There are 8 red pens and six times as many blue pens. How many blue pens?","Hay 8 plumas rojas y seis veces esa cantidad de azules. ¿Cuántas azules?"),[l("48","48"),l("14","14"),l("56","56"),l("40","40")],"48",l("6 à 8 = 48 blue pens.","6 à 8 = 48 plumas azules.")),"w8-q5":J("w8-q5",l("Four $7 tickets are paid with $40. What change is due?","Se pagan cuatro boletos de $7 con $40. ¿Cuál es el cambio?"),[l("$12","$12"),l("$28","$28"),l("$33","$33"),l("$8","$8")],"$12",l("4 à 7 = 28 and 40 â 28 = 12.","4 à 7 = 28 y 40 â 28 = 12.")),"w8-q6":J("w8-q6",l("A class has 125 cans, collects 138, then donates 90. How many remain?","Una clase tiene 125 latas, reúne 138 y dona 90. ¿Cuántas quedan?"),[l("173","173"),l("263","263"),l("1730","1730"),l("83","83")],"173",l("125 + 138 â 90 = 173 cans.","125 + 138 â 90 = 173 latas.")),"w9-q5":J("w9-q5",l("What is 8,450 + 6,790?","¿Cuánto es 8,450 + 6,790?"),[l("15,240","15,240"),l("14,240","14,240"),l("15,140","15,140"),l("16,240","16,240")],"15,240",l("The sum is 15,240.","La suma es 15,240.")),"w9-q6":J("w9-q6",l("What is 30,000 â 16,475?","¿Cuánto es 30,000 â 16,475?"),[l("13,525","13,525"),l("14,525","14,525"),l("13,425","13,425"),l("12,525","12,525")],"13,525",l
315("The difference is 13,525.","La diferencia es 13,525.")),"w10-q5":J("w10-q5",l("What is 5 à 248?","¿Cuánto es 5 à 248?"),[l("1,240","1,240"),l("1,040","1,040"),l("1,280","1,280"),l("1,200","1,200")],"1,240",l("Five groups of 248 equal 1,240.","Cinco grupos de 248 equivalen a 1,240.")),"w10-q6":J("w10-q6",l("Using place value, what is 8 à 400?","Usando valor posicional, ¿cuánto es 8 à 400?"),[l("3,200","3,200"),l("320","320"),l("4,800","4,800"),l("3,080","3,080")],"3,200",l("8 à 4 hundreds = 32 hundreds = 3,200.","8 à 4 centenas = 32 centenas = 3,200.")),"w11-q5":J("w11-q5",l("What is 32 à 21?","¿Cuánto es 32 à 21?"),[l("672","672"),l("642","642"),l("682","682"),l("6720","6720")],"672",l("32 à 21 = 672.","32 à 21 = 672.")),"w11-q6":J("w11-q6",l("What is 18 à 50?","¿Cuánto es 18 à 50?"),[l("900","900"),l("90","90"),l("850","850"),l("950","950")],"900",l("18 à 5 tens = 90 tens = 900.","18 à 5 decenas = 90 decenas = 900.")),"w12-q5":J("w12-q5",l("What is the remainder when 85 is divided by 9?","¿Cuál es el residuo de 85 dividido entre 9?"),[l("4","4"),l("3","3"),l("5","5"),l("8","8")],"4",l("9 à 9 = 81 and 85 â 81 = 4.","9 à 9 = 81 y 85 â 81 = 4.")),"w12-q6":J("w12-q6",l("What is the remainder when 63 is divided by 8?","¿Cuál es el residuo de 63 dividido entre 8?"),[l("7","7"),l("6","6"),l("8","8"),l("5","5")],"7",l("8 à 7 = 56 and 63 â 56 = 7.","8 à 7 = 56 y 63 â 56 = 7.")),"w13-q5":J("w13-q5",l("What is 175 ÷ 5?","¿Cuánto es 175 ÷ 5?"),[l("35","35"),l("25","25"),l("30","30"),l("40","40")],"35",l("5 à 35 = 175.","5 à 35 = 175.")),"w13-q6":J("w13-q6",l("What is 426 ÷ 6?","¿Cuánto es 426 ÷ 6?"),[l("71","71"),l("61","61"),l("76","76"),l("81","81")],"71",l("6 à 71 = 426.","6 à 71 = 426.")),"w14-q5":J("w14-q5",l("A farm fills 4 crates with 36 apples each and sells 50. How many remain?","Una granja llena 4 cajas con 36 manzanas cada una y vende 50. ¿Cuántas quedan?"),[l("94","94"),l("86","86"),l("144","144"),l("104","104")],"94",l("4 à 36 â 50 = 94 apples.","4 à 36 â 50 = 94 manzanas.")),"w14-q6":J("w14-q6",l("91 players split equally into 7 teams. How many per team?","91 jugadores se dividen en 7 equipos iguales. ¿Cuántos por equipo?"),[l("13","13"),l("14","14"),l("12","12"),l("7","7")],"13",l("91 ÷ 7 = 13.","91 ÷ 7 = 13.")),"w15-q5":J("w15-q5",l("Which is a factor pair of 12?","¿Cuál es un par de factores de 12?"),[l("3 and 4","3 y 4"),l("3 and 5","3 y 5"),l("2 and 5","2 y 5"),l("1 and 11","1 y 11")],"3 and 4",l("3 à 4 = 12.","3 à 4 = 12.")),"w15-q6":J("w15-q6",l("What is 7 called in 21 ÷ 7 = 3?","¿Cómo se llama el 7 en 21 ÷ 7 = 3?"),[l("Factor","Factor"),l("Product","Producto"),l("Sum","Suma"),l("Remainder","Residuo")],"Factor",l("7 is a factor of 21 because it divides 21 evenly.","7 es factor de 21 porque divide 21 exactamente.")),"w16-q5":J("w16-q5",l("What is a number with exactly two factors called?","¿Cómo se llama un número con exactamente dos factores?"),[l("Prime","Primo"),l("Composite","Compuesto"),l("Even","Par"),l("Multiple","Múltiplo")],"Prime",l("A prime number has only 1 and itself as factors.","Un número primo solo tiene como factores 1 y él mismo.")),"w16-q6":J("w16-q6",l("Is 29 prime or composite?","¿29 es primo o compuesto?"),[l("Prime","Primo"),l("Composite","Compuesto"),l("Even","Par"),l("Neither","Ninguno")],"Prime",l("29 has exactly two factors: 1 and 29.","29 tiene exactamente dos factores: 1 y 29.")),"w17-q5":J("w17-q5",l("What comes next: 4, 7, 10, 13?","¿Qué sigue: 4, 7, 10, 13?"),[l("16","16"),l("15","15"),l("17","17"),l("19","19")],"16",l("The pattern adds 3 each time.","El patrón suma 3 cada vez.")),"w17-q6":J("w17-q6",l("What comes after 30, 27, 24 when subtracting 3?","¿Qué sigue después de 30, 27, 24 al restar 3?"),[l("21","21"),l("20","20"),l("22","22"),l("18","18")],"21",l("24 â 3 = 21.","24 â 3 = 21.")),"w18-q5":J("w18-q5",l("What comes next: 3, 9, 15, 21?","¿Qué sigue: 3, 9, 15, 21?"),[l("27","27"),l("26","26"),l("28","28"),l("30","30")],"27",l("The pattern adds 6 each time.","El patrón suma 6 cada vez.")),"w18-q6":J("w18-q6",l("What completes the factor pair 4 and __ for 24?","¿Qué completa el par de factores 4 y __ para 24?"),[l("6","6"),l("5","5"),l("8","8"),l("12","12")],"6",l("4 à 6 = 24.","4 à 6 = 24.")),"w19-q5":J("w19-q5",l("What numerator makes 1/3 = __/9?","¿Qué numerador hace 1/3 = __/9?"),[l("3","3"),l("2","2"),l("6","6"),l("9","9")],"3",l("Multiply numerator and denominator by 3.","Multiplica numerador y denominador por 3.")),"w19-q6":J("w19-q6",l("What denominator makes 2/5 = 8/__?","¿Qué denominador hace 2/5 = 8/__?"),[l("20","20"),l("10","10"),l("15","15"),l("25","25")],"20",l("Multiplying 2 by 4 also multiplies 5 by 4: 20.","Multiplicar 2 por 4 también multiplica 5 por 4: 20.")),"w20-q5":J("w20-q5",l("What is 6/8 in simplest form?","¿Cuál es 6/8 en forma simplificada?"),[l("3/4","3/4"),l("2/4","2/4"),l("6/4","6/4"),l("1/8","1/8")],"3/4",l("Divide numerator and denominator by 2.","Divide numerador y denominador entre 2.")),"w20-q6":J("w20-q6",l("What denominator makes 3/4 = 9/__?","¿Qué denominador hace 3/4 = 9/__?"),[l("12","12"),l("9","9"),l("16","16"),l("6","6")],"12",l("Multiplying 3 by 3 also multiplies 4 by 3: 12.","Multiplicar 3 por 3 también multiplica 4 por 3: 12.")),"w21-q5":J("w21-q5",l("Which symbol makes 5/6 __ 5/8 true?","¿Qué sÃmbolo hace verdadera 5/6 __ 5/8?"),[l(">",">"),l("<","<"),l("=","="),l("â ","â ")],">",l("With equal numerators, sixths are larger pieces than eighths.","Con numeradores iguales, los sextos son partes mayores que los octavos.")),"w21-q6":J("w21-q6",l("What numerator makes a fraction equal to 1/2 with denominator 8?","¿Qué numerador hace una fracción igual a 1/2 con denominador 8?"),[l("4","4"),l("2","2"),l("6","6"),l("8","8")],"4",l("1/2 equals 4/8.","1/2 equivale a 4/8.")),"w22-q5":J("w22-q5",l("What is 4/9 + 2/9?","¿Cuánto es 4/9 + 2/9?"),[l("6/9","6/9"),l("6/18","6/18"),l("2/9","2/9"),l("8/9","8/9")],"6/9",l("Add numerators and keep denominator 9.","Suma los numeradores y conserva el denominador 9.")),"w22-q6":J("w22-q6",l("What is 7/10 â 4/10?","¿Cuánto es 7/10 â 4/10?"),[l("3/10","3/10"),l("3/20","3/20"),l("11/10","11/10"),l("4/10","4/10")],"3/10",l("Subtract numerators and keep denominator 10.","Resta los numeradores y conserva el denominador 10.")),"w23-q5":J("w23-q5",l("What is 1 2/6 + 2 3/6?","¿Cuánto es 1 2/6 + 2 3/6?"),[l("3 5/6","3 5/6"),l("3 1/6","3 1/6"),l("4 5/6","4 5/6"),l("2 5/6","2 5/6")],"3 5/6",l("Add whole parts and sixths: 1+2 and 2/6+3/6.","Suma partes enteras y sextos: 1+2 y 2/6+3/6.")),"w23-q6":J("w23-q6",l("What is 2 1/3 as an improper fraction?","¿Qué es 2 1/3 como fracción impropia?"),[l("7/3","7/3"),l("6/3","6/3"),l("5/3","5/3"),l("7/6","7/6")],"7/3",l("Two wholes are 6/3; plus 1/3 makes 7/3.","Dos enteros son 6/3; más 1/3 da 7/3.")),"w24-q5":J("w24-q5",l("What numerator makes 6 à 1/4 = __/4?","¿Qué numerador hace 6 à 1/4 = __/4?"),[l("6","6"),l("4","4"),l("10","10"),l("24","24")],"6",l("Six groups of one fourth make six fourths.","Seis grupos de un cuarto forman seis cuartos.")),"w24-q6":J("w24-q6",l("What numerator makes 5 à 3/8 = __/8?","¿Qué numerador hace 5 à 3/8 = __/8?"),[l("15","15"),l("8","8"),l("12","12"),l("24","24")],"15",l("Multiply 5 by numerator 3: 15/8.","Multiplica 5 por el numerador 3: 15/8.")),"w25-q5":J("w25-q5",l("What numerator makes 6/10 = __/100?","¿Qué numerador hace 6/10 = __/100?"),[l("60","60"),l("6","6"),l("16","16"),l("600","600")],"60",l("Multiply numerator and denominator by 10.","Multiplica numerador y denominador por 10.")),"w25-q6":J("w25-q6",l("What is 2/10 + 3/100 in hundredths?","¿Cuánto es 2/10 + 3/100 en centésimas?"),[l("23/100","23/100"),l("5/100","5/100"),l("23/10","23/10"),l("2/100","2/100")],"23/100",l("2/10 = 20/100; plus 3/100 is 23/100.","2/10 = 20/100; más 3/100 es 23/100.")),"w26-q5":J("w26-q5",l("What decimal equals 9/100?","¿Qué decimal equivale a 9/100?"),[l("0.09","0.09"),l("0.9","0.9"),l("0.009","0.009"),l("9.00","9.00")],"0.09",l("Nine hundredths is 0.09.","Nueve centésimas es 0.09.")),"w26-q6":J("w26-q6",l("Which symbol makes 0.5 __ 0.50 true?","¿Qué sÃmbolo hace verdadera 0.5 __ 0.50?"),[l("=","="),l("> ",">"),l("<","<"),l("â ","â ")],"=",l("Trailing zeroes do not change a decimal's value.","Los ceros finales no camb
315ian el valor de un decimal.")),"w27-q5":J("w27-q5",l("What numerator makes 1/2 = __/8?","¿Qué numerador hace 1/2 = __/8?"),[l("4","4"),l("2","2"),l("6","6"),l("8","8")],"4",l("Multiply numerator and denominator by 4.","Multiplica numerador y denominador por 4.")),"w27-q6":J("w27-q6",l("What numerator makes 4 à 2/5 = __/5?","¿Qué numerador hace 4 à 2/5 = __/5?"),[l("8","8"),l("6","6"),l("10","10"),l("20","20")],"8",l("Four groups of two fifths make eight fifths.","Cuatro grupos de dos quintos forman ocho quintos.")),"w28-q5":J("w28-q5",l("How many inches are in 2 feet?","¿Cuántas pulgadas hay en 2 pies?"),[l("24","24"),l("12","12"),l("14","14"),l("36","36")],"24",l("2 à 12 inches = 24 inches.","2 à 12 pulgadas = 24 pulgadas.")),"w28-q6":J("w28-q6",l("How many centimeters are 5 meters?","¿Cuántos centÃmetros son 5 metros?"),[l("500","500"),l("50","50"),l("5,000","5,000"),l("105","105")],"500",l("Each meter is 100 centimeters: 5 à 100 = 500.","Cada metro son 100 centÃmetros: 5 à 100 = 500.")),"w29-q5":J("w29-q5",l("Two books each weigh 500 grams. What is their total weight?","Dos libros pesan 500 gramos cada uno. ¿Cuál es su peso total?"),[l("1,000 grams","1,000 gramos"),l("500 grams","500 gramos"),l("1,500 grams","1,500 gramos"),l("250 grams","250 gramos")],"1,000 grams",l("500 + 500 = 1,000 grams.","500 + 500 = 1,000 gramos.")),"w29-q6":J("w29-q6",l("You have $5.00 and spend $1.25. How much remains?","Tienes $5.00 y gastas $1.25. ¿Cuánto queda?"),[l("$3.75","$3.75"),l("$4.25","$4.25"),l("$3.25","$3.25"),l("$6.25","$6.25")],"$3.75",l("$5.00 â $1.25 = $3.75.","$5.00 â $1.25 = $3.75.")),"w30-q5":J("w30-q5",l("A square has sides of 5 m. What is its perimeter?","Un cuadrado tiene lados de 5 m. ¿Cuál es su perÃmetro?"),[l("20 m","20 m"),l("25 m","25 m"),l("10 m","10 m"),l("15 m","15 m")],"20 m",l("Four sides of 5 m give 4 à 5 = 20 m.","Cuatro lados de 5 m dan 4 à 5 = 20 m.")),"w30-q6":J("w30-q6",l("A rectangle is 8 ft by 3 ft. What is its area?","Un rectángulo mide 8 pies por 3 pies. ¿Cuál es su área?"),[l("24 square feet","24 pies cuadrados"),l("22 square feet","22 pies cuadrados"),l("11 square feet","11 pies cuadrados"),l("48 square feet","48 pies cuadrados")],"24 square feet",l("Area is length à width: 8 à 3 = 24 square feet.","El área es largo à ancho: 8 à 3 = 24 pies cuadrados.")),"w31-q5":J("w31-q5",l("Two ribbons measure 1/4 m and 3/4 m. What is their total length?","Dos cintas miden 1/4 m y 3/4 m. ¿Cuál es su longitud total?"),[l("1 m","1 m"),l("4/8 m","4/8 m"),l("2/4 m","2/4 m"),l("3/4 m","3/4 m")],"1 m",l("1/4 + 3/4 = 4/4 = 1 meter.","1/4 + 3/4 = 4/4 = 1 metro.")),"w31-q6":J("w31-q6",l("The longest item is 7/8 in and shortest 2/8 in. What is the difference?","El objeto más largo mide 7/8 pulg. y el corto 2/8. ¿Cuál es la diferencia?"),[l("5/8 in","5/8 pulg."),l("9/8 in","9/8 pulg."),l("5/16 in","5/16 pulg."),l("2/8 in","2/8 pulg.")],"5/8 in",l("7/8 â 2/8 = 5/8 inch.","7/8 â 2/8 = 5/8 de pulgada.")),"w32-q5":J("w32-q5",l("How many degrees are in a straight angle?","¿Cuántos grados hay en un ángulo llano?"),[l("180","180"),l("90","90"),l("360","360"),l("45","45")],"180",l("A straight angle is 180 degrees.","Un ángulo llano mide 180 grados.")),"w32-q6":J("w32-q6",l("How many degrees are half of a right angle?","¿Cuántos grados son la mitad de un ángulo recto?"),[l("45","45"),l("90","90"),l("180","180"),l("30","30")],"45",l("Half of 90 degrees is 45 degrees.","La mitad de 90 grados es 45 grados.")),"w33-q5":J("w33-q5",l("A 180° angle is split into 110° and what angle?","Un ángulo de 180° se divide en 110° y ¿qué ángulo?"),[l("70 degrees","70 grados"),l("60 degrees","60 grados"),l("90 degrees","90 grados"),l("290 degrees","290 grados")],"70 degrees",l("180 â 110 = 70 degrees.","180 â 110 = 70 grados.")),"w33-q6":J("w33-q6",l("What angle do 35° and 55° make together?","¿Qué ángulo forman juntos 35° y 55°?"),[l("90 degrees","90 grados"),l("80 degrees","80 grados"),l("100 degrees","100 grados"),l("20 degrees","20 grados")],"90 degrees",l("35 + 55 = 90 degrees.","35 + 55 = 90 grados.")),"w34-q5":J("w34-q5",l("Two rays
315sharing what point form an angle?","¿Dos rayos que comparten qué punto forman un ángulo?"),[l("A vertex","Un vértice"),l("A midpoint","Un punto medio"),l("A parallel line","Una lÃnea paralela"),l("A circle","Un cÃrculo")],"A vertex",l("The shared endpoint is the vertex.","El extremo compartido es el vértice.")),"w34-q6":J("w34-q6",l("Train tracks are an example of what kind of lines?","¿Las vÃas del tren son ejemplo de qué tipo de lÃneas?"),[l("Parallel","Paralelas"),l("Perpendicular","Perpendiculares"),l("Intersecting","Secantes"),l("Curved","Curvas")],"Parallel",l("Rails stay the same distance apart, so they are parallel.","Los rieles mantienen la misma distancia, asà que son paralelos.")),"w35-q5":J("w35-q5",l("What is a triangle with three equal sides called?","¿Cómo se llama un triángulo con tres lados iguales?"),[l("Equilateral","Equilátero"),l("Isosceles","Isósceles"),l("Scalene","Escaleno"),l("Right","Rectángulo")],"Equilateral",l("An equilateral triangle has three equal sides.","Un triángulo equilátero tiene tres lados iguales.")),"w35-q6":J("w35-q6",l("How many symmetry lines does a non-square rectangle have?","¿Cuántos ejes de simetrÃa tiene un rectángulo que no es cuadrado?"),[l("2","2"),l("1","1"),l("4","4"),l("0","0")],"2",l("It has one horizontal and one vertical symmetry line.","Tiene un eje horizontal y uno vertical.")),"w36-q5":J("w36-q5",l("What is the perimeter of a square with side 6?","¿Cuál es el perÃmetro de un cuadrado de lado 6?"),[l("24","24"),l("36","36"),l("12","12"),l("18","18")],"24",l("Four sides of 6 give 4 à 6 = 24.","Cuatro lados de 6 dan 4 à 6 = 24.")),"w36-q6":J("w36-q6",l("What is 50° + 40°?","¿Cuánto es 50° + 40°?"),[l("90 degrees","90 grados"),l("80 degrees","80 grados"),l("100 degrees","100 grados"),l("10 degrees","10 grados")],"90 degrees",l("50 + 40 = 90 degrees.","50 + 40 = 90 grados."))};function PP(e,t){const r=TP[e.id]??MP[e.id];if(r)return r;if(e.type==="multipleChoice"||e.type==="trueFalse")return e;throw new Error(`Missing curated objective replacement for ${e.id}`)}function _P(e){let t=2166136261;for(let r=0;r<e.length;r++)t^=e.charCodeAt(r),t=Math.imul(t,16777619);return t>>>0}function RP(e){let t=e||1831565813;return()=>{t+=1831565813;let r=t;return r=Math.imul(r^r>>>15,r|1),r^=r+Math.imul(r^r>>>7,r|61),((r^r>>>14)>>>0)/4294967296}}function lx(e,t){const r=[...e];for(let s=r.length-1;s>0;s--){const c=Math.floor(t()*(s+1));[r[s],r[c]]=[r[c],r[s]]}return r}function IP(e,t){const r=RP(_P(t)),s=e.map(c=>({...c,options:c.options?lx(c.options,r):void 0}));return lx(s,r)}const A=(e,t)=>({en:e,es:t}),Z=(e,t)=>({en:e,es:t}),cx=(e,t)=>`https://www.biblegateway.com/passage/?search=${encodeURIComponent(e)}&version=${t}`,Ge=(e,t,r,s)=>({explanation:A(e,t),reference:A(r,s),url:A(cx(r,"NIV"),cx(s,"NVI"))}),UP={1:Ge("Place value gives every digit its exact worth, and God orders even the countless stars by name â showing that big numbers and order matter to him.","El valor posicional da a cada dÃgito su valor exacto, y Dios ordena hasta las incontables estrellas por su nombre, mostrando que los números grandes y el orden le importan.","Psalm 147:4","Salmos 147:4"),2:Ge("Reading, writing, and comparing numbers helps us measure greatness, and Scripture says God's greatness is so vast that his understanding has no limit.","Leer, escribir y comparar números nos ayuda a medir la grandeza, y la Escritura dice que la grandeza de Dios es tan vasta que su entendimiento no tiene lÃmite.","Psalm 147:5","Salmos 147:5"),3:Ge("Rounding helps us estimate before we act, just as Jesus taught that a wise builder first sits down and estimates the cost.","Redondear nos ayuda a estimar antes de actuar, asà como Jesús enseñó que un buen constructor primero se sienta y calcula el costo.","Luke 14:28","Lucas 14:28"),4:Ge("Addition combines amounts into a greater total, like the early church to which the Lord added more people day by day.","La suma combina cantidades en un total mayor, como la iglesia primitiva a la que el Señor añadÃa más personas cada dÃa.","Acts 2:47","Hechos 2:47"),5:Ge("Subtraction finds the difference when something becomes less, an idea John pictured when he said, 'He must become greater; I must become less.'","La resta halla la diferencia cuando algo se hace menor, idea que Juan ilustró al decir: 'Ãl debe crecer, y yo menguar.'","John 3:30","Juan 3:30"),6:Ge("Multiplicative comparison asks how many times as many, and the very first command to living things was to be fruitful and multiply.","La comparación multiplicativa pregunta cuántas veces más, y el primer mandato a los seres vivos fue ser fecundos y multiplicarse.","Genesis 1:28","Génesis 1:28"),7:Ge("These problems use 'times as many,' just as Jesus told Peter to forgive not seven times but seventy-seven times.","Estos problemas usan 'veces más', asà como Jesús le dijo a Pedro que perdonara no siete veces, sino setenta y siete veces.","Matthew 18:22","Mateo 18:22"),8:Ge("Multi-step problems reward careful planning, and Scripture says the plans of the diligent surely lead to profit.","Los problemas de varios pasos premian la planificación cuida
315dosa, y la Escritura dice que los planes del diligente ciertamente llevan a la abundancia.","Proverbs 21:5","Proverbios 21:5"),9:Ge("Reviewing a unit means testing our work and keeping what is good, exactly as Paul urged believers to do.","Repasar una unidad significa examinar nuestro trabajo y retener lo bueno, justo como Pablo animó a los creyentes a hacer.","1 Thessalonians 5:21","1 Tesalonicenses 5:21"),10:Ge("Multiplication produces abundance, like the overflowing measure 'pressed down, shaken together and running over' that Jesus promised.","La multiplicación produce abundancia, como la medida rebosante 'apretada, remecida y desbordante' que Jesús prometió.","Luke 6:38","Lucas 6:38"),11:Ge("Multiplying two factors grows a small start into a large result, like the seed that produced a crop a hundred, sixty, or thirty times what was sown.","Multiplicar dos factores convierte un comienzo pequeño en un gran resultado, como la semilla que produjo una cosecha de cien, sesenta o treinta veces lo sembrado.","Matthew 13:23","Mateo 13:23"),12:Ge("Division can leave a remainder, like the twelve baskets of broken pieces left over after Jesus fed the crowd.","La división puede dejar un residuo, como las doce canastas de pedazos que sobraron después de que Jesús alimentó a la multitud.","Matthew 14:20","Mateo 14:20"),13:Ge("Dividing larger amounts is about fair sharing, like the early believers who distributed to each one as anyone had need.","Dividir cantidades mayores se trata de compartir con justicia, como los primeros creyentes que repartÃan a cada uno según su necesidad.","Acts 4:35","Hechos 4:35"),14:Ge("Multi-step multiplication and division call for wisdom, and God promises to give wisdom generously to anyone who asks.","La multiplicación y división de varios pasos requieren sabidurÃa, y Dios promete dar sabidurÃa con generosidad a quien la pida.","James 1:5","Santiago 1:5"),15:Ge("Factors are the parts that build a number, like the different gifts that come from the same Spirit and work together.","Los factores son las partes que forman un número, como los diferentes dones que vienen del mismo EspÃritu y trabajan juntos.","1 Corinthians 12:4","1 Corintios 12:4"),16:Ge("Prime numbers are unique and indivisible, reminding us that we are each fearfully and wonderfully made.","Los números primos son únicos e indivisibles, recordándonos que cada uno es una creación admirable y maravillosa.","Psalm 139:14","Salmos 139:14"),17:Ge("Patterns reveal order over time, just as there is a season for every activity under the heavens.","Los patrones revelan orden a lo largo del tiempo, asà como hay una temporada para cada actividad debajo del cielo.","Ecclesiastes 3:1","Eclesiastés 3:1"),18:Ge("As we apply and review Unit 2, we work at it with all our heart, as if working for the Lord.","Al aplicar y repasar la Unidad 2, trabajamos de todo corazón, como para el Señor.","Colossians 3:23","Colosenses 3:23"),19:Ge("Equivalent fractions show that different forms can be truly equal, like how in Christ all are one regardless of background.","Las fracciones equivalentes muestran que formas distintas pueden ser verdaderamente iguales, como en Cristo todos son uno sin importar su origen.","Galatians 3:28","Gálatas 3:28"),20:Ge("Simplifying a fraction keeps only what is essential, echoing the call to let our 'Yes' be simply 'Yes.'","Simplificar una fracción conserva solo lo esencial, en eco al llamado a que nuestro 'SÃ' sea simplemente 'SÃ.'","Matthew 5:37","Mateo 5:37"),21:Ge("Comparing fractions means weighing each value carefully, as Scripture says each one should test their own work.","Comparar fracciones significa s
315opesar cada valor con cuidado, como dice la Escritura que cada uno debe examinar su propia obra.","Galatians 6:4","Gálatas 6:4"),22:Ge("Adding and subtracting like parts joins them into one, like believers made complete by being like-minded and united.","Sumar y restar partes iguales las une en una sola, como los creyentes hechos completos al tener un mismo sentir y estar unidos.","Philippians 2:2","Filipenses 2:2"),23:Ge("Mixed numbers combine wholes and parts into fullness, like the fullness we receive, one blessing after another.","Los números mixtos combinan enteros y partes en plenitud, como la plenitud que recibimos, una bendición tras otra.","John 1:16","Juan 1:16"),24:Ge("Multiplying a small fraction many times shows that little becomes much, for whoever is faithful with very little is faithful with much.","Multiplicar una fracción pequeña muchas veces muestra que lo poco se vuelve mucho, pues quien es fiel en lo muy poco también lo es en lo mucho.","Luke 16:10","Lucas 16:10"),25:Ge("A decimal tenth mirrors the tithe â the tenth that Scripture set apart as belonging to the Lord.","Una décima decimal refleja el diezmo: la décima parte que la Escritura apartó como perteneciente al Señor.","Leviticus 27:30","LevÃtico 27:30"),26:Ge("Decimals let us be precise down to a hundredth, reflecting a God so attentive that even the hairs of our head are all numbered.","Los decimales nos permiten ser precisos hasta la centésima, reflejando a un Dios tan atento que aun los cabellos de nuestra cabeza están contados.","Matthew 10:30","Mateo 10:30"),27:Ge("Reviewing Unit 3 means knowing our work well, as the wise are told to know well the condition of their flocks.","Repasar la Unidad 3 significa conocer bien nuestro trabajo, como se aconseja al sabio conocer bien el estado de sus rebaños.","Proverbs 27:23","Proverbios 27:23"),28:Ge("Measurement depends on fair units, and Scripture says honest scales and balances belong to the Lord.","La medición depende de unidades justas, y la Escritura dice que las balanzas y pesas honestas pertenecen al Señor.","Proverbs 16:11","Proverbios 16:11"),29:Ge("Solving measurement problems calls for honesty, for differing weights and measures are detestable to the Lord.","Resolver problemas de medición exige honestidad, pues las pesas y medidas falsas son detestables para el Señor.","Proverbs 20:10","Proverbios 20:10"),30:Ge("Area and perimeter measure length and width, just as the New Jerusalem was laid out as a square and measured with a rod.","El área y el perÃmetro miden el largo y el ancho, asà como la Nueva Jerusalén fue trazada como un cuadrado y medida con una vara.","Revelation 21:16","Apocalipsis 21:16"),31:Ge("Line plots organize collected data, much like the census in which God's people were carefully counted.","Los diagramas de puntos organizan los datos recogidos, muy parecido al censo en que el pueblo de Dios fue contado con cuidado.","Numbers 1:2","Números 1:2"),32:Ge("Measuring angles uses a measuring tool, like the measuring line God stretched across the dimensions of the earth.","Medir ángulos usa una herramienta de medición, como la lÃnea de medir que Dios extendió sobre las dimensiones de la tierra.","Job 38:5","Job 38:5"),33:Ge("Adding and subtracting angle measures joins parts into a whole, like the many members who together form one body.","Sumar y restar medidas de ángulos une partes en un todo, como los muchos miembros que juntos forman un solo cuerpo.","Romans 12:5","Romanos 12:5"),34:Ge("Points, lines, and rays trace straight paths, echoing the call to make level, straight paths for our feet.","Los puntos, rectas y rayos trazan caminos rectos, en eco al llamado a hacer sendas niveladas y rectas para nuestros pies.","Proverbs 4:26","Proverbios 4:26"),35:Ge("Classifying shapes by their kind reflects how God made each created thing according to its own kind.","Clasificar figuras por su tipo refleja cómo Dios hizo cada cosa creada según su propia especie.","Genesis 1:25","Génesis 1:25"),36:Ge("Finishing the course is like finishing a race well, as Paul said: 'I have fought the good fight, I have finished the race.'","Terminar el curso es como terminar bien una carrera, como dijo Pablo: 'He peleado la buena batalla, he terminado la carrera.'","2 Timothy 4:7","2 Timoteo 4:7")},Ke=(e,t)=>({title:A(e,t),description:A("Apply this week's mathematical ideas to model a real situation, justify your reasoning, and communicate your conclusions in clear math language.","Aplica las ideas matemáticas de la semana para modelar una situación real, justificar tu razonamiento y comunicar tus conclusiones en lenguaje matemático claro."),materials:Z(["Math notebook","Pencil and grid paper","Base-ten blocks or counters","Ruler"],["Cuaderno de matemáticas","Lápiz y papel cuadriculado","Bloques de base diez o fichas","Regla"]),submissionRequirements:Z(["Clearly labeled work showing each step","Final answer with units or labels when applicable","Short written explanation of the method"],["Trabajo claramente etiquetado mostrando cada paso","Re
315spuesta final con unidades o etiquetas cuando aplique","Explicación escrita breve del método"]),rubric:[{name:A("Mathematical Reasoning","Razonamiento Matemático"),levels:[{level:A("Beginning","Inicial"),description:A("Strategy unclear or contains major conceptual errors.","Estrategia poco clara o con errores conceptuales graves.")},{level:A("Developing","En Desarrollo"),description:A("Strategy partially correct with some flaws.","Estrategia parcialmente correcta con algunos fallos.")},{level:A("Proficient","Competente"),description:A("Clear, valid strategy applied accurately.","Estrategia clara y válida aplicada con precisión.")},{level:A("Exemplary","Ejemplar"),description:A("Clear strategy with justification and connections to other ideas.","Estrategia clara con justificación y conexiones con otras ideas.")}]},{name:A("Accuracy and Precision","Exactitud y Precisión"),levels:[{level:A("Beginning","Inicial"),description:A("Many computational errors; labels missing.","Muchos errores de cálculo; faltan etiquetas.")},{level:A("Developing","En Desarrollo"),description:A("Some computational errors; partial labels.","Algunos errores de cálculo; etiquetas parciales.")},{level:A("Proficient","Competente"),description:A("Calculations correct with labels included.","Cálculos correctos con etiquetas incluidas.")},{level:A("Exemplary","Ejemplar"),description:A("All calculations correct; answers checked for reasonableness.","Todos los cálculos correctos; respuestas verificadas por su razonabilidad.")}]},{name:A("Communication","Comunicación"),levels:[{level:A("Beginning","Inicial"),description:A("Work hard to follow; little written explanation.","Trabajo difÃcil de seguir; poca explicación escrita.")},{level:A("Developing","En Desarrollo"),description:A("Some steps shown; explanation brief.","Algunos pasos mostrados; explicación breve.")},{level:A("Proficient","Competente"),description:A("All steps shown; clear written explanation.","Todos los pasos mostrados; explicación escrita clara.")},{level:A("Exemplary","Ejemplar"),description:A("Neat work with drawings or models that support a precise explanation.","Trabajo ordenado con dibujos o modelos que apoyan una explicación precisa.")}]}],selfAssessmentChecklist:Z(["I labeled what each number represents.","I checked my answer makes sense in the context.","I explained my method in words, not just numbers."],["Etiqueté lo que representa cada número.","Revisé que mi respuesta tenga sentido en el contexto.","Expliqué mi método con palabras, no solo con números."]),reflectionPrompt:A("What was the trickiest step in this task, and what helped you get unstuck?","¿Cuál fue el paso más difÃcil de esta tarea y qué te ayudó a desbloquearte?")}),He=[{title:A("Khan Academy: 4th grade math","Khan Academy: Matemáticas de 4° grado"),url:"https://www.khanacademy.org/math/cc-fourth-grade-math",source:"Khan Academy"},{title:A("Math Learning Center: free math apps","Math Learning Center: aplicaciones gratuitas"),url:"https://www.mathlearningcenter.org/apps",source:"Math Learning Center"},{title:A("Illustrative Mathematics","Illustrative Mathematics"),url:"https://www.illustrativemathematics.org/",source:"Illustrative Mathematics"}],En=A("Unit 1: Place Value & Whole-Number Operations","Unidad 1: Valor Posicional y Operaciones con Números Enteros"),Nn=A("Unit 2: Multiplication, Division, Factors & Patterns","Unidad 2: Multiplicación, División, Factores y Patrones"),Tn=A("Unit 3: Fractions & Decimals","Unidad 3: Fracciones y Decimales"),Mn=A("Unit 4: Measurement, Data & Geometry","Unidad 4: Medición, Datos y GeometrÃa"),DP=[{week:1,unitId:1,title:A("Place Value to One Million","Valor Posicional hasta el Millón"),unitName:En,standards:["SMP.2","SMP.6","SMP.7","4.NBT.1"],iCanStatements:Z(["I can explain that a digit in one place is worth ten times the same digit in the place to its right.","I can name the value of each digit in a multi-digit number up to one million."],["Puedo explicar que un dÃgito en un lugar vale diez veces el mismo dÃgito en el lugar a su derecha.","Puedo nombrar el valor de cada dÃgito de un número de varios dÃgitos hasta el millón."]),teacherObjectives:Z(["Establish the Ã10 relationship between adjacent place values.","Diagnose prior knowledge of place value to thousands."],["Establecer la relación Ã10 entre valores posicionales adyacentes.","Diagnosticar conocimientos previos del valor posicional hasta los millares."]),ageAppropriateExplanation:A("In our number system, where a digit sits decides its value. Moving one place to the left makes a digit worth ten times as much: the 3 in 30 is ten times the 3 in 3, and the 3 in 300 is ten times the 3 in 30. This pattern lets us read numbers all the way up to the millions place.","En nuestro sistema numérico, el lugar donde está un dÃgito decide su valor. Moverse un lugar a la izquierda hace que un dÃgito valga diez veces más: el 3 de 30 es diez veces el 3 de 3, y el 3 de 300 es diez veces el 3 de 30. Este patrón nos permite leer números hasta el lugar de los millones."),vocabulary:[{term:A("Place value","Valor posicional"),definition:A("The value of a digit based on its position in a number.","El valor de un dÃgito según su posición en un número.")},{term:A("Period","PerÃodo"),definition:A("A group of three digits (ones, thousands, millions) separated by commas.","Un grupo de tres dÃgitos (unidades, millares, millones) separados por comas.")}],activities:Z(["Diagnostic pre-assessment.","Build numbers with base-ten blocks and a place-value chart.","Ten-times-greater sort: match a digit's value across places."],["Pre-evaluación diagnóstica.","Construir números con bloques de base diez y una tabla de valor posicional.","Clasificación 'diez veces mayor': relacionar el valor de un dÃgito entre lugares."]),resources:He,resourcesAssessmentMapping:A("Khan Academy 'Place value' lessons supp
315ort the place-value chart activity.","Las lecciones de 'Valor posicional' de Khan Academy apoyan la actividad de la tabla de valor posicional."),aiTaskOptions:Z(["Ask the AI for a 6-digit number and name the value of each digit; then check your answers together."],["PÃdele a la IA un número de 6 dÃgitos y nombra el valor de cada dÃgito; luego revisen juntos tus respuestas."]),headerImageUrl:"/images/unit-1.png",headerImageAlt:A("A place-value chart showing ones, thousands, and millions","Una tabla de valor posicional que muestra unidades, millares y millones"),assessment:We(1),project:Ke("Place-Value City","La Ciudad del Valor Posicional")},{week:2,unitId:1,title:A("Read, Write, and Compare Multi-Digit Numbers","Leer, Escribir y Comparar Números de Varios DÃgitos"),unitName:En,standards:["SMP.2","SMP.6","SMP.7","4.NBT.2"],iCanStatements:Z(["I can read and write multi-digit numbers in standard form, word form, and expanded form.","I can compare two multi-digit numbers using >, =, and <."],["Puedo leer y escribir números de varios dÃgitos en forma estándar, en palabras y en forma desarrollada.","Puedo comparar dos números de varios dÃgitos usando >, = y <."]),teacherObjectives:Z(["Connect standard, word, and expanded forms of numbers.","Model comparing numbers digit by digit from the left."],["Conectar las formas estándar, en palabras y desarrollada de los números.","Modelar la comparación de números dÃgito por dÃgito desde la izquierda."]),ageAppropriateExplanation:A("The same number can be written three ways: standard form (45,302), word form (forty-five thousand, three hundred two), and expanded form (40,000 + 5,000 + 300 + 2). To compare two numbers, line them up and look at the digits from the largest place to the smallest â the first place where they differ decides which is greater.","El mismo número se puede escribir de tres maneras: forma estándar (45,302), en palabras (cuarenta y cinco mil trescientos dos) y forma desarrollada (40,000 + 5,000 + 300 + 2). Para comparar dos números, alinéalos y observa los dÃgitos desde el lugar mayor al menor: el primer lugar donde difieren decide cuál es mayor."),vocabulary:[{term:A("Expanded form","Forma desarrollada"),definition:A("A number written as the sum of the values of its digits.","Un número escrito como la suma de los valores de sus dÃgitos.")},{term:A("Compare","Comparar"),definition:A("To decide whether one number is greater than, less than, or equal to another.","Decidir si un número es mayor que, menor que o igual a otro.")}],activities:Z(["Three-forms matching cards (standard, word, expanded).","Comparison battle: flip cards and place >, =, or <.","Exit ticket writing one number in all three forms."],["Tarjetas para relacionar las tres formas (estándar, palabras, desarrollada).","Batalla de comparación: voltear tarjetas y colocar >, = o <.","Ticket de salida escribiendo un número en las tres formas."]),resources:He,resourcesAssessmentMapping:A("Khan Academy 'Writing whole numbers' and 'Comparing multi-digit numbers' align with the matching cards.","Las lecciones de Khan Academy 'Escribir números enteros' y 'Comparar números de varios dÃgitos' se alinean con las tarjetas para relacionar."),aiTaskOptions:Z(["Ask the AI for two 5-digit numbers and explain which is greater and why, using place value."],["PÃdele a la IA dos números de 5 dÃgitos y explica cuál es mayor y por qué, usando el valor posicional."]),headerImageUrl:"/images/unit-1.png",headerImageAlt:A("A number shown in standard, word, and expanded form with a comparison symbol","Un número mostrado en forma estándar, en palabras y desarrollada con un sÃmbolo de comparación"),assessment:We(2),project:Ke("Number Forms Poster","Cartel de Formas de los Números")},{week:3,unitId:1,title:A("Rounding Multi-Digit Numbers","Redondear Números de Varios DÃgitos"),unitName:En,standards:["SMP.2","SMP.6","SMP.7","4.NBT.3"],iCanStatements:Z(["I can round a multi-digit number to any place.","I can use a number line to explain why a number rounds up or down."],["Puedo redondear un número de varios dÃgitos a cualquier lugar.","Puedo usar una recta numérica para explicar por qué un número se redondea hacia arriba o hacia abajo."]),teacherObjectives:Z(["Model rounding using a number line and the 'halfway' benchmark.","Connect roun
315ding to estimating in real situations."],["Modelar el redondeo usando una recta numérica y la referencia del 'punto medio'.","Conectar el redondeo con la estimación en situaciones reales."]),ageAppropriateExplanation:A("Rounding replaces a number with a nearby, friendlier number. To round to a chosen place, look at the digit just to its right: if it is 5 or more, round up; if it is 4 or less, round down. A number line shows why â you are simply choosing the closer 'landmark' number, like the nearest hundred or thousand.","Redondear reemplaza un número por otro cercano y más sencillo. Para redondear a un lugar elegido, mira el dÃgito justo a su derecha: si es 5 o más, redondea hacia arriba; si es 4 o menos, redondea hacia abajo. Una recta numérica muestra por qué: simplemente eliges el número 'de referencia' más cercano, como la centena o el millar más cercano."),vocabulary:[{term:A("Round","Redondear"),definition:A("To replace a number with a nearby number that is easier to use.","Reemplazar un número por otro cercano que es más fácil de usar.")},{term:A("Estimate","Estimar"),definition:A("A reasonable answer that is close to the exact answer.","Una respuesta razonable que está cerca de la respuesta exacta.")}],activities:Z(["Number-line rounding: locate a number and pick the nearer landmark.","Round the same number to several places and compare results.","Estimate real prices by rounding to the nearest ten or hundred."],["Redondeo en recta numérica: ubicar un número y elegir la referencia más cercana.","Redondear el mismo número a varios lugares y comparar los resultados.","Estimar precios reales redondeando a la decena o centena más cercana."]),resources:He,resourcesAssessmentMapping:A("Khan Academy 'Rounding whole numbers' supports the number-line rounding activity.","La lección 'Redondear números enteros' de Khan Academy apoya la actividad de redondeo en recta numérica."),aiTaskOptions:Z(["Ask the AI for a 4-digit number and round it to the nearest ten, hundred, and thousand; explain each choice."],["PÃdele a la IA un número de 4 dÃgitos y redondéalo a la decena, centena y millar más cercanos; explica cada elección."]),headerImageUrl:"/images/unit-1.png",headerImageAlt:A("A number line showing a value rounding to the nearer hundred","Una recta numérica que muestra un valor redondeándose a la centena más cercana"),assessment:We(3),project:Ke("Estimation Shopping Trip","Viaje de Compras con Estimación")},{week:4,unitId:1,title:A("Adding Multi-Digit Numbers","Sumar Números de Varios DÃgitos"),unitName:En,standards:["SMP.1","SMP.6","SMP.7","SMP.8","4.NBT.4"],iCanStatements:Z(["I can fluently add multi-digit whole numbers using the standard algorithm.","I can estimate first to check that my sum is reasonable."],["Puedo sumar con fluidez números enteros de varios dÃgitos usando el algoritmo estándar.","Puedo estimar primero para comprobar que mi suma es razonable."]),teacherObjectives:Z(["Model the standard addition algorithm with regrouping.","Use estimation to check reasonableness of sums."],["Modelar el algoritmo estándar de la suma con reagrupación.","Usar la estimación para comprobar la razonabilidad de las sumas."]),ageAppropriateExplanation:A("To add large numbers, line up the digits by place value and add each column from right to left. When a column totals ten or more, regroup (carry) the extra to the next place. Estimating the sum first â by rounding each number â gives you a quick way to check that your exact answer is reasonable.","Para sumar números grandes, alinea los dÃgitos por valor posicional y suma cada columna de derecha a izquierda. Cuando una columna suma diez o más, reagrupa (lleva) el exceso al siguiente lugar. Estimar la suma primero âredondeando cada númeroâ te da una forma rápida de comprobar que tu respuesta exacta es razonable."),vocabulary:[{term:A("Sum","Suma"),definition:A("The result of adding two or more numbers.","El resultado de sumar dos o más números.")},{term:A("Regroup","Reagrupar"),definition:A("To carry ten of one place value as one of the next higher place.","Llevar diez de un valor posicional como uno del siguiente lugar mayor.")}],activities:Z(["Estimate-then-add: round, predict, then compute the exact sum.","Column addition with regrouping practice.","Error hunt: find and fix a regrouping mistake."],["Estimar y luego sumar: redondear, predecir y luego calcular la suma exacta.","Práctica de suma en columna con reagrupación.","Caza de errores: encontrar y corregir un error de reagrupación."]),resources:He,resourcesAssessmentMapping:A("Khan Academy 'Adding multi-digit numbers' aligns with the column addition practice.","La lección 'Sumar números de varios dÃgitos' de Khan Academy se alinea con la práctica de suma en columna."),aiTaskOptions:Z(["Ask the AI for two 4-digit numbers; estimate the sum, then add exactly and compare."],["PÃdele a la IA dos números de 4 dÃgitos; estima la suma, luego suma exactamente y compara."]),headerImageUrl:"/images/unit-1.png",headerImageAlt:A("Column addition of two multi-digit numbers with regrouping","Suma en columna de dos números de varios dÃgitos con reagrupación"),assessment:We(4),project:Ke("Add It Up: Budget Builder","Suma Total: Constructor de Presupuesto")},{week:5,unitId:1,title:A("Subtracting Multi-Digit Numbers","Restar Números de Varios DÃgitos"),unitName:En,standards:["SMP.1","SMP.6","SMP.7","SMP.8","4.NBT.4"],iCanStatements:Z(["I can fluently subtract multi-digit whole numbers using the standard algorithm.","I can use addition to check a
315subtraction answer."],["Puedo restar con fluidez números enteros de varios dÃgitos usando el algoritmo estándar.","Puedo usar la suma para comprobar el resultado de una resta."]),teacherObjectives:Z(["Model the standard subtraction algorithm with regrouping across zeros.","Use the inverse relationship of addition and subtraction to check work."],["Modelar el algoritmo estándar de la resta con reagrupación a través de ceros.","Usar la relación inversa entre suma y resta para comprobar el trabajo."]),ageAppropriateExplanation:A("To subtract large numbers, line up the digits by place value and subtract each column from right to left. When the top digit is too small, regroup (borrow) ten from the next place â even across zeros. You can check your answer by adding the difference back to the number you subtracted; it should return the original total.","Para restar números grandes, alinea los dÃgitos por valor posicional y resta cada columna de derecha a izquierda. Cuando el dÃgito de arriba es muy pequeño, reagrupa (pide prestado) diez del siguiente lugar, incluso a través de ceros. Puedes comprobar tu respuesta sumando la diferencia al número que restaste; debe devolver el total original."),vocabulary:[{term:A("Difference","Diferencia"),definition:A("The result of subtracting one number from another.","El resultado de restar un número de otro.")},{term:A("Inverse operations","Operaciones inversas"),definition:A("Operations that undo each other, like addition and subtraction.","Operaciones que se deshacen entre sÃ, como la suma y la resta.")}],activities:Z(["Subtract across zeros practice.","Check-by-adding: prove each difference with an addition.","Word problems comparing two large quantities."],["Práctica de resta a través de ceros.","Comprobar sumando: demostrar cada diferencia con una suma.","Problemas verbales que comparan dos cantidades grandes."]),resources:He,resourcesAssessmentMapping:A("Khan Academy 'Subtracting multi-digit numbers' aligns with the subtract-across-zeros practice.","La lección 'Restar números de varios dÃgitos' de Khan Academy se alinea con la práctica de resta a través de ceros."),aiTaskOptions:Z(["Ask the AI for a subtraction with zeros in the top number; solve it, then check by adding."],["PÃdele a la IA una resta con ceros en el número de arriba; resuélvela y luego comprueba sumando."]),headerImageUrl:"/images/unit-1.png",headerImageAlt:A("Column subtraction with regrouping across a zero","Resta en columna con reagrupación a través de un cero"),assessment:We(5),project:Ke("How Much Farther? Distance Detective","¿Cuánto Más Lejos? Detective de Distancias")},{week:6,unitId:1,title:A("Multiplicative Comparison","Comparación Multiplicativa"),unitName:En,standards:["SMP.1","SMP.2","SMP.4","4.OA.1"],iCanStatements:Z(["I can read a multiplication equation as a comparison, such as '35 is 5 times as many as 7'.","I can write a multiplication equation to match a 'times as many' statement."],["Puedo leer una ecuación de multiplicación como una comparación, como '35 es 5 veces 7'.","Puedo escribir una ecuación de multiplicación que corresponda a un enunciado de 'veces más'."]),teacherObjectives:Z(["Introduce multiplicative comparison language ('times as many').","Connect comparison statements to multiplication equations and drawings."],["Introducir el lenguaje de comparación multiplicativa ('veces más').","Conectar los enunciados de comparación con ecuaciones de multiplicación y dibujos."]),ageAppropriateExplanation:A("Multiplication can describe how many times as many one amount is than another. The equation 35 = 5 à 7 means '35 is 5 times as many as 7'. A bar model helps you see it: one bar of 7, repeated 5 times, equals 35. This is different from adding â 'times as many' compares by groups, not by 'how many more'.","La multiplicación puede describir cuántas veces más es una cantidad respecto a otra. La ecuación 35 = 5 à 7 significa '35 es 5 veces 7'. Un modelo de barras ayuda a verlo: una barra de 7, repetida 5 veces, es igual a 35. Esto es distinto de sumar: 'veces más' compara por grupos, no por 'cuántos más'."),vocabulary:[{term:A("Multiplicative comparison","Comparación multiplicativa"),definition:A("Comparing two amounts by how many times as many one is than the other.","Comparar dos cantidades según cuántas veces más es una respecto a la otra.")},{term:A("Factor","Factor"),definition:A("A number that is multiplied by another number.","Un número que se multiplica por otro número.")}
315],activities:Z(["Bar-model matching: link a drawing to a 'times as many' sentence.","Translate comparison sentences into multiplication equations.","Sort cards: additive comparison vs. multiplicative comparison."],["Relacionar modelos de barras con una oración de 'veces más'.","Traducir oraciones de comparación a ecuaciones de multiplicación.","Clasificar tarjetas: comparación aditiva vs. comparación multiplicativa."]),resources:He,resourcesAssessmentMapping:A("Khan Academy 'Multiplication as comparison' supports the bar-model matching activity.","La lección 'La multiplicación como comparación' de Khan Academy apoya la actividad de relacionar modelos de barras."),aiTaskOptions:Z(["Ask the AI for a 'times as many' sentence and write the matching multiplication equation and a bar model."],["PÃdele a la IA una oración de 'veces más' y escribe la ecuación de multiplicación correspondiente y un modelo de barras."]),headerImageUrl:"/images/unit-1.png",headerImageAlt:A("A bar model showing one amount that is several times as many as another","Un modelo de barras que muestra una cantidad que es varias veces otra"),assessment:We(6),project:Ke("Times as Many: Comparison Story","Veces Más: Historia de Comparación")},{week:7,unitId:1,title:A("Multiplicative Comparison Word Problems","Problemas Verbales de Comparación Multiplicativa"),unitName:En,standards:["SMP.1","SMP.2","SMP.4","4.OA.2"],iCanStatements:Z(["I can multiply or divide to solve 'times as many' word problems.","I can tell the difference between multiplicative and additive comparison in a problem."],["Puedo multiplicar o dividir para resolver problemas de 'veces más'.","Puedo distinguir entre la comparación multiplicativa y la aditiva en un problema."]),teacherObjectives:Z(["Model solving comparison word problems with drawings and equations using a symbol for the unknown.","Distinguish multiplicative ('times as many') from additive ('how many more') comparisons."],["Modelar la resolución de problemas verbales de comparación con dibujos y ecuaciones usando un sÃmbolo para la incógnita.","Distinguir la comparación multiplicativa ('veces más') de la aditiva ('cuántos más')."]),ageAppropriateExplanation:A("In a 'times as many' word problem, decide what is being compared and whether the unknown is the total, the size of one group, or the number of times. Draw a bar model, write an equation with a symbol for the unknown, and choose multiplication or division to solve. Watch for words: 'times as many' means multiply or divide, while 'more than' means add or subtract.","En un problema de 'veces más', decide qué se compara y si la incógnita es el total, el tamaño de un grupo o el número de veces. Dibuja un modelo de barras, escribe una ecuación con un sÃmbolo para la incógnita y elige multiplicar o dividir para resolver. Atiende a las palabras: 'veces más' significa multiplicar o dividir, mientras que 'más que' significa sumar o restar."),vocabulary:[{term:A("Unknown","Incógnita"),definition:A("The value you are trying to find, often shown with a symbol or letter.","El valor que intentas hallar, a menudo mostrado con un sÃmbolo o letra.")},{term:A("Quotient","Cociente"),definition:A("The result of dividing one number by another.","El resultado de dividir un número entre otro.")}],activities:Z(["Bar-model problem solving with an unknown.","Multiply-or-divide decision sort.","Write your own 'times as many' word problem and trade to solve."],["Resolución de problemas con modelo de barras y una incógnita.","Clasificación para decidir multiplicar o dividir.","Escribir tu propio problema de 'veces más' e intercambiarlo para resolver."]),resources:He,resourcesAssessmentMapping:A("Khan Academy 'Comparison word problems' aligns with the bar-model problem solving.","La lección 'Problemas de comparación' de Khan Academy se alinea con la resolución de problemas con modelo de barras."),aiTaskOptions:Z(["Ask the AI for a comparison word problem; draw a bar model, write the equation, and solve."],["PÃdele a la IA un problema de comparación; dibuja un modelo de barras, escribe la ecuación y resuelve."]),headerImageUrl:"/images/unit-1.png",headerImageAlt:A("A bar model representing a 'times as many' word problem with an unknown","Un modelo de barras que representa un problema de 'veces más' con una incógnita"),assessment:We(7),project:Ke("Comparison Problem Workshop","Taller de Problemas de Comparación")},{week:8,unitId:1,title:A("Multi-Step Word Problems","Problemas Verbales de Varios Pasos"),unitName:En,standards:["SMP.1","SMP.2","SMP.4","SMP.6","4.OA.3"],iCanStatements:Z(["I can solve multi-step word problems using the four operations.","I can write an equation with a letter for the unknown and check that my answer is reasonable."],["Puedo resolver problemas verbales de varios pasos usando las cuatro operaciones.","Puedo escribir una ecuación con una letra para la incógnita y comprobar que mi respuesta es razonable."]),teacherObjectives:Z(["Model a plan for multi-step problems: understand, represent, solve, check.","Use estimation and mental math to assess reasonableness of answers, including remainders."],["Modelar un plan para problemas de varios pasos: comprender, representar, resolver, comprobar.","Usar la estimación y el cálculo mental para evaluar la razonabilidad de las respuestas, incluidos los residuos."]),ageAppropriateExplanation:A("Multi-step problems need a plan. First understand the question and what each number means. Then represent the problem with a drawing and equations, using a letter for the unknown. Solve one step at a time, keeping track of what each answer represents. Finally, check that the result is reasonable using estimation â and decide what a remainder means in the situation.","Los problemas de varios pasos necesitan un plan. Primero comprende la pregunta y qué significa cada número. Luego representa el problema con un dibujo y ecuaciones, usando una letra para la incógnita. Resuelve un paso a la vez, recordando qué representa cada respuesta. Por último, comprueba que el resultado sea razonable usando la estimación, y decide qué significa un residuo en la situación."),vocabulary:[{term:A("Multi-step problem","Problema de varios pasos"),definition:A("A problem that requires more than one operation to solve.","Un problema que requiere más de una operación para resolverse.")},{term:A("Remainder","Residuo"),definition:A("The amount left over after dividing into equal groups.","La cantidad que sobra después de dividir en grupos iguales.")}],activities:Z(["Four-step problem plan with a graphic organizer.","Interpret the remainder: what does it mean in the story?","Reasonableness check: estimate before and after solving."],["Plan de cuatro pasos con un organizador gráfico.","Interpretar el residuo: ¿qué significa en la historia?","Comprobación de razonabilidad: estimar antes y después de resolver."]),resources:He,resourcesAssessmentMapping:A("Khan Academy 'Multi-step word problems' supports the four-step problem plan.","La lección 'Problemas de varios pasos' de Khan Academy apoya el plan de cuatro pasos."),aiTaskOptions:Z(["Ask the AI for a two-step word problem; write an equation with a letter for the unknown and check your answer with estimation."],["PÃdele a la IA un problema de dos pasos; escribe una ecuación con una letra para la incógnita y comprueba tu respuesta con estimación."]),headerImageUrl:"/images/unit-1.png",headerImageAlt:A("A graphic organizer for solving a multi-step word problem","Un organizador gráfico para resolver un problema de varios pasos"),assessment:We(8),project:Ke("Plan-a-Trip Multi-Step Challenge","Reto de Varios Pasos: Planea un Viaje")},{week:9,unitId:1,title:A("Unit 1 Application and Review","Aplicación y Repaso de la Unidad 1"),unitName:En,standards:["SMP.1","SMP.2","SMP.3","SMP.6","SMP.7","SMP.8","4.NBT.1","4.NBT.2","4.NBT.3","4.NBT.4","4.OA.1","4.OA.2","4.OA.3"],iCanStatements:Z(["I can combine place value, comparison, rounding, addition, subtraction, and multiplicative comparison to solve problems.","I can explain my reasoning clearly and check that my answers are reasonable."],["Puedo comb
315inar valor posicional, comparación, redondeo, suma, resta y comparación multiplicativa para resolver problemas.","Puedo explicar mi razonamiento con claridad y comprobar que mis respuestas son razonables."]),teacherObjectives:Z(["Integrate all Unit 1 skills in application tasks.","Lead review and address common misconceptions before Unit 2."],["Integrar todas las destrezas de la Unidad 1 en tareas de aplicación.","Dirigir el repaso y atender los errores comunes antes de la Unidad 2."]),ageAppropriateExplanation:A("This week brings Unit 1 together. Real problems rarely use just one skill, so you will read and compare numbers, round to estimate, add and subtract carefully, and use multiplicative comparison â often within the same task. Show your steps, explain your reasoning, and check that each answer makes sense.","Esta semana integra la Unidad 1. Los problemas reales rara vez usan una sola destreza, asà que leerás y compararás números, redondearás para estimar, sumarás y restarás con cuidado, y usarás la comparación multiplicativa, a menudo en la misma tarea. Muestra tus pasos, explica tu razonamiento y comprueba que cada respuesta tenga sentido."),vocabulary:[{term:A("Reasonable","Razonable"),definition:A("An answer that makes sense and is close to an estimate.","Una respuesta que tiene sentido y está cerca de una estimación.")},{term:A("Strategy","Estrategia"),definition:A("A planned method for solving a problem.","Un método planificado para resolver un problema.")}],activities:Z(["Mixed-review problem set across all Unit 1 standards.","Explain-your-thinking task with a written justification.","Self-check station using estimation to verify answers."],["Conjunto de repaso mixto de todos los estándares de la Unidad 1.","Tarea de 'explica tu razonamiento' con una justificación escrita.","Estación de autocomprobación usando estimación para verificar respuestas."]),resources:He,resourcesAssessmentMapping:A("Khan Academy 'Place value and rounding' and 'Addition, subtraction, and estimation' unit reviews support the mixed-review set.","Los repasos de Khan Academy 'Valor posicional y redondeo' y 'Suma, resta y estimación' apoyan el conjunto de repaso mixto."),aiTaskOptions:Z(["Ask the AI for a multi-step problem that uses rounding, addition, and a 'times as many' comparison; solve it and explain each step."],["PÃdele a la IA un problema de varios pasos que use redondeo, suma y una comparación de 'veces más'; resuélvelo y explica cada paso."]),headerImageUrl:"/images/unit-1.png",headerImageAlt:A("A mixed-review page combining place value, rounding, and operations","Una página de repaso mixto que combina valor posicional, redondeo y operaciones"),assessment:We(9),project:Ke("Unit 1 Math Showcase","Exhibición Matemática de la Unidad 1")},{week:10,unitId:2,title:A("Multiply Up to Four Digits by One Digit","Multiplicar hasta Cuatro DÃgitos por Un DÃgito"),unitName:Nn,standards:["SMP.2","SMP.5","SMP.7","4.NBT.5"],iCanStatements:Z(["I can multiply a number of up to four digits by a one-digit number.","I can use place value, arrays, or area models to explain my multiplication."],["Puedo multiplicar un número de hasta cuatro dÃgitos por un número de un dÃgito.","Puedo usar el valor posicional, matrices o modelos de área para explicar mi multiplicación."]),teacherObjectives:Z(["Connect multiplication to place value by breaking numbers into expanded form.","Model the area-model and partial-products strategies before the standard algorithm."],["Conectar la multiplicación con el valor posicional separando los números en forma desarrollada.","Modelar las estrategias de modelo de área y productos parciales antes del algoritmo estándar."]),ageAppropriateExplanation:A("To multiply a big number by a one-digit number, break the big number apart by place value. For 4 à 213, think 4 à 200, 4 à 10, and 4 à 3, then add the parts: 800 + 40 + 12 = 852. An area model draws this as rectangles, one for each place. These strategies turn a hard problem into a few easy ones.","Para multiplicar un número grande por uno de un dÃgito, separa el número grande por su valor posicional. Para 4 à 213, piensa 4 à 200, 4 à 10 y 4 à 3, luego suma las partes: 800 + 40 + 12 = 852. Un modelo de área dibuja esto como rectángulos, uno por cada lugar. Estas estrategias convierten un problema difÃcil en varios fáciles."),vocabulary:[{term:A("Factor","Factor"),definition:A("A number being multiplied in a multiplication problem.","Un número que se multiplica en un problema de multiplicación.")},{term:A("Product","Producto"),definition:A("The result of multiplying two or more numbers.","El resultado de multiplicar dos o más números.")},{term:A("Area model","Modelo de área"),definition:A("A rectangle split into parts by place value to show a multiplication.","Un rectángulo separado en partes por valor posicional para mostrar una multiplicación.")}],activities:Z(["Build an area model for a 3-digit by 1-digit product.","Partial-products practice: break apart, multiply, and add.","Estimate first, then multiply and compare."],["Construir un modelo de área para un producto de 3 dÃgitos por 1 dÃgito.","Práctica de productos parciales: separar, multiplicar y sumar.","Estimar primero, luego multiplicar y comparar."]),resources:He,resourcesAssessmentMapping:A("Khan Academy 'Multiply with area models' supports the area-model activity.","La lección 'Multiplicar con modelos de área' de Khan Academy apoya la actividad del modelo de área."),aiTaskOptions:Z(["Ask the AI for a 3-digit by 1-digit multiplication; solve it with an area model and explain each part."],["PÃdele a la IA una multiplicación de 3 dÃgitos por 1 dÃgito; resuélvela con un modelo de área y explica cada parte."]),headerImageUrl:"/images/unit-2.png",headerImageAlt:A("An area model showing a multi-digit number multiplied by one digit","Un modelo de área que muestra un número de varios dÃgitos multiplicado por un dÃgito"),assessment:We(10),project:Ke("Area-Model Multiplication Poster","Cartel de Multiplicación con Modelo de Ãrea")},{week:11,unitId:2,title:A("Multiply Two Two-Digit Numbers","Multiplicar Dos Números de Dos DÃgitos"),unitName:Nn,standards:["SMP.2","SMP.7","SMP.8","4.NBT.5"],iCanStatements:Z(["I can multiply two two-digit numbers using partial products.","I can use an area model to show why my answer is correct."],["Puedo multiplicar dos números de dos dÃgitos usando productos parciales.","Puedo usar un modelo de área para mostrar por qué mi respuesta es correcta."]),teacherObjectives:Z(["Extend the area model to a 2-by-2 grid of partial products.","Connect the four partial products to the standard algorithm."],["Extender el modelo de área a una cuadrÃcula de 2 por 2 de productos parciales.","Conectar los cuatro productos parciales con el algoritmo estándar."]),ageAppropriateExplanation:A("To multiply two two-digit numbers, split each into tens and ones. For 23 à 14, split 23 into 20 + 3 and 14 into 10 + 4. That makes four smaller products: 20 à 10, 20 à 4, 3 à 10, and 3 à 4. Add them all: 200 + 80 + 30 + 12 = 322. The area model shows these as four rectangles inside one big rectangle.","Para multiplicar dos números de dos dÃgitos, separa cada uno en decenas y unidades. Para 23 à 14, separa 23 en 20 + 3 y 14 en 10 + 4. Eso da cuatro productos más pequeños: 20 à 10, 20 à 4, 3 à 10 y 3 à 4. Súmalos todos: 200 + 80 + 30 + 12 = 322. El modelo de área los muestra como cuatro rectángulos dentro de un rectángulo grande."),vocabulary:[{term:A("Partial product","Producto parcial"),definition:A("One of the smaller products you add together when multiplying by parts.","Uno de los productos más pequeños que sumas al multiplicar por partes.")},{term:A("Decompose","Descomponer"),definition:A("To break a number into parts, such as tens and ones.","Separar un número en partes, como decenas y unidades.")}],activities:Z(["Four-region area model for a 2-digit by 2-digit product.","Partial-products organizer: list all four, then add.","Compare an area model to the standard algorithm."],["Modelo de área de cuatro regiones para un producto de 2 dÃgitos por 2 dÃgitos.","Organizador de productos parciales: enumera los cuatro y luego suma.","Comparar un modelo de área con el algoritmo estándar."]),resources:He,resourcesAssessmentMapping:A("Khan Academy 'Multiplying 2-digit by 2-digit' supports the partial-products organizer.","La lección 'Multiplicar 2 dÃgitos por 2 dÃgitos' de Khan Academy apoya el organizador de productos parciales."),aiTaskOptions:Z(["Ask the AI for two 2-digit numbers; multiply them with four partial products and add them up."],["PÃdele a la IA dos números de 2 dÃgitos; multiplÃcalos con cuatro productos parciales y súmalos."]),headerImageUrl:"/images/unit-2.png",headerImageAlt:A("A four-region area model for multiplying two two-digit numbers","Un modelo de área de cuatro regiones para multiplicar dos números de dos dÃgitos"),assessment:We(11),project:Ke("Two-Digit Multiplication Challenge","Reto de Multiplicación de Dos DÃgitos")}
315,{week:12,unitId:2,title:A("Division with Remainders","División con Residuos"),unitName:Nn,standards:["SMP.1","SMP.2","SMP.6","4.NBT.6"],iCanStatements:Z(["I can divide and find a whole-number quotient and a remainder.","I can explain what the remainder means and check my answer with multiplication."],["Puedo dividir y hallar un cociente entero y un residuo.","Puedo explicar qué significa el residuo y comprobar mi respuesta con la multiplicación."]),teacherObjectives:Z(["Build division from equal groups and the multiplication-division relationship.","Establish that a remainder is always less than the divisor."],["Construir la división a partir de grupos iguales y la relación multiplicación-división.","Establecer que un residuo siempre es menor que el divisor."]),ageAppropriateExplanation:A("Division splits a number into equal groups. Sometimes a number does not split evenly, and the amount left over is the remainder. For 47 ÷ 5, the closest multiple of 5 below 47 is 45 (which is 5 à 9), and 47 â 45 = 2, so 47 ÷ 5 = 9 remainder 2. The remainder is always smaller than the number you are dividing by â if it were not, you could make another group.","La división separa un número en grupos iguales. A veces un número no se separa exactamente, y la cantidad que sobra es el residuo. Para 47 ÷ 5, el múltiplo de 5 más cercano por debajo de 47 es 45 (que es 5 à 9), y 47 â 45 = 2, asà que 47 ÷ 5 = 9 residuo 2. El residuo siempre es menor que el número entre el que divides; si no lo fuera, podrÃas formar otro grupo."),vocabulary:[{term:A("Dividend","Dividendo"),definition:A("The number being divided.","El número que se divide.")},{term:A("Divisor","Divisor"),definition:A("The number you divide by.","El número entre el que divides.")},{term:A("Quotient","Cociente"),definition:A("The result of a division (not counting the remainder).","El resultado de una división (sin contar el residuo).")},{term:A("Remainder","Residuo"),definition:A("The amount left over after dividing into equal groups.","La cantidad que sobra después de dividir en grupos iguales.")}],activities:Z(["Share counters into equal groups and name the remainder.","Use known multiplication facts to find quotients and remainders.","Check each division by multiplying back and adding the remainder."],["Repartir fichas en grupos iguales y nombrar el residuo.","Usar hechos de multiplicación conocidos para hallar cocientes y residuos.","Comprobar cada división multiplicando de vuelta y sumando el residuo."]),resources:He,resourcesAssessmentMapping:A("Khan Academy 'Division
315with remainders' supports the equal-groups activity.","La lección 'División con residuos' de Khan Academy apoya la actividad de grupos iguales."),aiTaskOptions:Z(["Ask the AI for a division with a remainder; solve it and check by multiplying the quotient and adding the remainder."],["PÃdele a la IA una división con residuo; resuélvela y comprueba multiplicando el cociente y sumando el residuo."]),headerImageUrl:"/images/unit-2.png",headerImageAlt:A("Counters shared into equal groups with a few left over as a remainder","Fichas repartidas en grupos iguales con algunas sobrantes como residuo"),assessment:We(12),project:Ke("Remainder Story Workshop","Taller de Historias con Residuo")},{week:13,unitId:2,title:A("Division Strategies with Larger Dividends","Estrategias de División con Dividendos Mayores"),unitName:Nn,standards:["SMP.2","SMP.5","SMP.7","4.NBT.6"],iCanStatements:Z(["I can divide a multi-digit number by a one-digit number using place value.","I can break a dividend into place-value parts to divide more easily."],["Puedo dividir un número de varios dÃgitos entre un número de un dÃgito usando el valor posicional.","Puedo separar un dividendo en partes por valor posicional para dividir más fácilmente."]),teacherObjectives:Z(["Use place-value decomposition and partial quotients to divide.","Connect estimation to checking the reasonableness of a quotient."],["Usar la descomposición por valor posicional y los cocientes parciales para dividir.","Conectar la estimación con la comprobación de la razonabilidad de un cociente."]),ageAppropriateExplanation:A("Big division gets easier when you break the dividend into friendly place-value parts. For 248 ÷ 4, split 248 into 240 + 8. Then 240 ÷ 4 = 60 and 8 ÷ 4 = 2, so the answer is 60 + 2 = 62. This 'divide each part, then add' idea works because dividing is sharing the whole amount, one place at a time.","La división grande se vuelve más fácil cuando separas el dividendo en partes amigables por valor posicional. Para 248 ÷ 4, separa 248 en 240 + 8. Entonces 240 ÷ 4 = 60 y 8 ÷ 4 = 2, asà que la respuesta es 60 + 2 = 62. Esta idea de 'dividir cada parte y luego sumar' funciona porque dividir es repartir toda la cantidad, un lugar a la vez."),vocabulary:[{term:A("Partial quotient","Cociente parcial"),definition:A("Part of the answer found by dividing one place-value chunk at a time.","Parte de la respuesta hallada al dividir un trozo de valor posicional a la vez.")},{term:A("Decompose","Descomponer"),definition:A("To break a number into parts, such as hundreds, tens, and ones.","Separar un número en partes, como centenas, decenas y unidades.")}],activities:Z(["Break a 3-digit dividend into place-value parts and divide each.","Partial-quotients practice with checking by multiplication.","Estimate the quotient, then divide and compare."],["Separar un dividendo de 3 dÃgitos en partes por valor posicional y dividir cada una.","Práctica de cocientes parciales con comprobación por multiplicación.","Estimar el cociente, luego dividir y comparar."]),resources:He,resourcesAssessmentMapping:A("Khan Academy 'Division using place value' supports the partial-quotients practice.","La lección 'División usando el valor posicional' de Khan Academy apoya la práctica de cocientes parciales."),aiTaskOptions:Z(["Ask the AI for a 3-digit by 1-digit division; solve it by breaking the dividend into place-value parts."],["PÃdele a la IA una división de 3 dÃgitos entre 1 dÃgito; resuélvela separando el dividendo en partes por valor posicional."]),headerImageUrl:"/images/unit-2.png",headerImageAlt:A("A large dividend broken into place-value parts to divide step by step","Un dividendo grande separado en partes por valor posicional para dividir paso a paso"),assessment:We(13),project:Ke("Place-Value Division Lab","Laboratorio de División por Valor Posicional")},{week:14,unitId:2,title:A("Multi-Step Multiplication and Division Problems","Problemas de Varios Pasos con Multiplicación y División"),unitName:Nn,standards:["SMP.1","SMP.2","SMP.4","4.OA.3"],iCanStatements:Z(["I can solve multi-step word problems using multiplication and division.","I can estimate to check that my answer is reasonable and interpret remainders."],["Puedo resolver problemas verbales de varios pasos usando multiplicación y división.","Puedo estimar para comprobar que mi respuesta es razonable e interpretar residuos."]),teacherObjectives:Z(["Model a plan for multi-step problems: understand, represent, solve, check.","Interpret remainders in context (round up, drop, or use the remainder)."],["Modelar un plan para problemas de varios pasos: comprender, representar, resolver, comprobar.","Interpretar residuos en el contexto (redondear hacia arriba, descartar o usar el residuo)."]),ageAppropriateExplanation:A("Real problems often take more than one step. First understand what is being asked, then represent the problem with equations using a letter for the unknown. Decide which operation each step needs â for example, multiply to find a total, then divide to share it. Finally, estimate to check that your answer is reasonable, and think about what a remainder means: sometimes you round up (more buses), sometimes you drop it.","Los problemas reales a menudo requieren más de un paso. Primero comprende qué se pregunta, luego representa el problema con ecuaciones usando una letra para la incógnita. Decide qué operación necesita cada paso: por ejemplo, multiplicar para hallar un total y luego dividir para repartirlo. Por último, estima para comprobar que tu respuesta sea razonable, y piensa qué significa un residuo: a veces redondeas hacia arriba (más autobuses), a veces lo descartas."),vocabulary:[{term:A("Multi-step problem","Problema de varios pasos"),definition:A("A problem that needs more than one operation to solve.","Un problema que necesita más de una operación para resolverse.")},{term:A("Estimate","Estimar"),definition:A("To find an answer that is close enough to check reasonableness.","Hallar una respuesta lo bastante cercana para comprobar la razonabilidad.")}],activities:Z(["Two-step problem plan with a graphic organizer.","Interpret-the-remainder sort: round up, drop, or use it.","Estimate before solving, then compare to the exact answer."],["Plan de problema de dos pasos con un organizador gráfico.","Clasificación de interpretación del residuo: redondear hacia arriba, descartar o usarlo.","Estimar antes de resolver, luego comparar con la respuesta exacta."]),resources:He,resourcesAssessmentMapping:A("Khan Academy 'Multi-step word problems' supports the two-step problem plan.","La lección 'Problemas de varios pasos' de Khan Academy apoya el plan de problema de dos pasos."),aiTaskOptions:Z(["Ask the AI for a two-step problem that uses multiplication and division; solve it and interpret any remainder."],["PÃdele a la IA un problema de dos pasos que use multiplicación y división; resuélvelo e interpreta cualquier residuo."]),headerImageUrl:"/images/unit-2.png",headerImageAlt:A("A graphic organizer for a multi-step multiplication and division
315word problem","Un organizador gráfico para un problema verbal de varios pasos con multiplicación y división"),assessment:We(14),project:Ke("Plan-an-Event Multi-Step Challenge","Reto de Varios Pasos: Organiza un Evento")},{week:15,unitId:2,title:A("Factors and Multiples","Factores y Múltiplos"),unitName:Nn,standards:["SMP.2","SMP.7","SMP.8","4.OA.4"],iCanStatements:Z(["I can find all the factor pairs of a number from 1 to 100.","I can tell that a number is a multiple of each of its factors."],["Puedo hallar todos los pares de factores de un número del 1 al 100.","Puedo reconocer que un número es múltiplo de cada uno de sus factores."]),teacherObjectives:Z(["Find factor pairs systematically and recognize the factor/multiple relationship.","Use arrays and skip counting to connect factors and multiples."],["Hallar pares de factores de forma sistemática y reconocer la relación factor/múltiplo.","Usar matrices y conteo salteado para conectar factores y múltiplos."]),ageAppropriateExplanation:A("A factor is a number that divides another number evenly. The factor pairs of 12 are 1 and 12, 2 and 6, and 3 and 4, because each pair multiplies to 12. A multiple is what you get when you skip count by a number: the multiples of 6 are 6, 12, 18, 24, ⦠Factors and multiples are two views of the same fact â since 3 à 4 = 12, the numbers 3 and 4 are factors of 12, and 12 is a multiple of both 3 and 4.","Un factor es un número que divide a otro número exactamente. Los pares de factores de 12 son 1 y 12, 2 y 6, y 3 y 4, porque cada par se multiplica para dar 12. Un múltiplo es lo que obtienes al contar salteado por un número: los múltiplos de 6 son 6, 12, 18, 24, ⦠Los factores y los múltiplos son dos vistas del mismo hecho: como 3 à 4 = 12, los números 3 y 4 son factores de 12, y 12 es múltiplo tanto de 3 como de 4."),vocabulary:[{term:A("Factor","Factor"),definition:A("A number that divides another number evenly with no remainder.","Un número que divide a otro exactamente sin residuo.")},{term:A("Factor pair","Par de factores"),definition:A("Two numbers that multiply together to make a given number.","Dos números que se multiplican para formar un número dado.")},{term:A("Multiple","Múltiplo"),definition:A("The product of a number and any whole number.","El producto de un número por cualquier número entero.")}],activities:Z(["Build arrays to find all factor pairs of a number.","Skip-count to list the first multiples of a number.","Factor/multiple sort: is the number a factor or a multiple?"],["Construir matrices para hallar todos los pares de factores de un número.","Contar salteado para enumerar los primeros múltiplos de un número.","Clasificación factor/múltiplo: ¿el número es un factor o un múltiplo?"]),resources:He,resourcesAssessmentMapping:A("Khan Academy 'Factors and multiples' supports the array and skip-counting activities.","La lección 'Factores y múltiplos' de Khan Academy apoya las actividades de matrices y conteo salteado."),aiTaskOptions:Z(["Ask the AI for a number from 1 to 100; list all its factor pairs and its first five multiples."],["PÃdele a la IA un número del 1 al 100; enumera todos sus pares de factores y sus primeros cinco múltiplos."]),headerImageUrl:"/images/unit-2.png",headerImageAlt:A("Arrays showing the factor pairs of a number alongside its multiples","Matrices que muestran los pares de factores de un número junto a sus múltiplos"),assessment:We(15),project:Ke("Factor & Multiple Explorer","Explorador de Factores y Múltiplos")},{week:16,unitId:2,title:A("Prime and Composite Numbers","Números Primos y Compuestos"),unitName:Nn,standards:["SMP.3","SMP.7","SMP.8","4.OA.4"],iCanStatements:Z(["I can decide whether a number from 1 to 100 is prime or composite.","I can use factor pairs to justify my classification."],["Puedo decidir si un número del 1 al 100 es primo o compuesto.","Puedo usar pares de factores para justificar mi clasificación."]),teacherObjectives:Z(["Define prime and composite by the number of factors.","Use divisibility tests for small factors to classify efficie
315ntly."],["Definir primo y compuesto según la cantidad de factores.","Usar pruebas de divisibilidad para factores pequeños y clasificar de forma eficiente."]),ageAppropriateExplanation:A("A prime number has exactly two factors: 1 and itself. Examples are 2, 3, 5, 7, 11, and 13. A composite number has more than two factors, like 12 (which has 1, 2, 3, 4, 6, and 12). The number 1 is special â it has only one factor, so it is neither prime nor composite. To classify a number, test whether small numbers like 2, 3, or 5 divide it evenly; if any do, it is composite.","Un número primo tiene exactamente dos factores: 1 y él mismo. Ejemplos son 2, 3, 5, 7, 11 y 13. Un número compuesto tiene más de dos factores, como 12 (que tiene 1, 2, 3, 4, 6 y 12). El número 1 es especial: solo tiene un factor, asà que no es ni primo ni compuesto. Para clasificar un número, prueba si números pequeños como 2, 3 o 5 lo dividen exactamente; si alguno lo hace, es compuesto."),vocabulary:[{term:A("Prime number","Número primo"),definition:A("A whole number greater than 1 with exactly two factors: 1 and itself.","Un número entero mayor que 1 con exactamente dos factores: 1 y él mismo.")},{term:A("Composite number","Número compuesto"),definition:A("A whole number greater than 1 with more than two factors.","Un número entero mayor que 1 con más de dos factores.")}],activities:Z(["Factor-pair test: list factors to classify a number.","Build a prime/composite chart for 1 to 50.","Divisibility detective: use rules for 2, 3, 5, and 10."],["Prueba de pares de factores: enumera factores para clasificar un número.","Construir una tabla de primos/compuestos del 1 al 50.","Detective de divisibilidad: usa las reglas del 2, 3, 5 y 10."]),resources:He,resourcesAssessmentMapping:A("Khan Academy 'Prime and composite numbers' supports the classification chart.","La lección 'Números primos y compuestos' de Khan Academy apoya la tabla de clasificación."),aiTaskOptions:Z(["Ask the AI for a number from 1 to 100; decide if it is prime or composite and list its factors to prove it."],["PÃdele a la IA un número del 1 al 100; decide si es primo o compuesto y enumera sus factores para demostrarlo."]),headerImageUrl:"/images/unit-2.png",headerImageAlt:A("A chart classifying numbers as prime or composite by their factors","Una tabla que clasifica números como primos o compuestos según sus factores"),assessment:We(16),project:Ke("Prime & Composite Number Hunt","Búsqueda de Números Primos y Compuestos")},{week:17,unitId:2,title:A("Number and Shape Patterns","Patrones Numéricos y de Figuras"),unitName:Nn,standards:["SMP.2","SMP.7","SMP.8","4.OA.5"],iCanStatements:Z(["I can generate a number or shape pattern that follows a given rule.","I can find features of a pattern that the rule did not directly state."],["Puedo generar un patrón numérico o de figuras que siga una regla dada.","Puedo encontrar caracterÃsticas de un patrón que la regla no indicó directamente."]),teacherObjectives:Z(["Generate patterns from a rule and extend them accurately.","Identify hidden features (even/odd, repeating digits) in a pattern."],["Generar patrones a partir de una regla y extenderlos con precisión.","Identificar caracterÃsticas ocultas (par/impar, dÃgitos repetidos) en un patrón."]),ageAppropriateExplanation:A("A pattern follows a rule, like 'add 5' or 'multiply by 2'. To make a pattern, start with a number and apply the rule again and again. Starting at 3 with 'add 5' gives 3, 8, 13, 18, 23, ⦠Patterns often hide extra features the rule never mentioned: counting by 5 from 3 makes terms that alternate between ending in 3 and 8, and adding an even number to an even start keeps every term even. Spotting these features is a kind of mathematical detective work.","Un patrón sigue una regla, como 'sumar 5' o 'multiplicar por 2'. Para hacer un patrón, comienza con un número y aplica la regla una y otra vez. Empezando en 3 con 'sumar 5' da 3, 8, 13, 18, 23, ⦠Los patrones a menudo esconden caracterÃsticas que la regla nunca mencionó: contar de 5 en 5 desde 3 hace que los términos alternen entre terminar en 3 y en 8, y sumar un número par a un inicio par mantiene par cada término. Detectar estas caracterÃsticas es una especie de trabajo de detective matemático."),vocabulary:[{term:A("Pattern","Patrón"),definition:A("A sequence of numbers or shapes that follows a rule.","Una secuencia de números o figuras que sigue una regla.")},{term:A("Rule","Regla"),definition:A("The instruction that tells how to get from one term to the next.","La instrucción que indica cómo pasar de un término al siguiente.")},{term:A("Term","Término"),definition:A("One number or shape in a pattern.","Un número o figura en un patrón.")}],activities:Z(["Generate a number pattern from a rule and extend it.","Find a hidden feature (even/odd, last digit) in a pattern.","Build a repeating shape pattern and describe its rule."],["Generar un patrón numérico a partir de una regla y extenderlo.","Encontrar una caracterÃstica oculta (par/impar, último dÃgito) en un patrón.","Construir un patrón de figuras que se repite y describir su regla."]),resources:He,resourcesAssessmentMapping:A("Khan Academy 'Math patterns' supports the generate-and-extend activity.","La lección 'Patrones matemáticos' de Khan Academy apoya la actividad de generar y extender."),aiTaskOptions:Z(["Ask the AI for a rule and a starting number; write the first six terms and describe one hidden feature."],["PÃdele a la IA una regla y un número inicial; escribe los primeros seis términos y describe una caracterÃstica oculta."]),headerImageUrl:"/images/unit-2.png",headerImageAlt:A("A number sequence generated by a rule with a hidden feature highlighted","Una secuencia numérica generada por una regla con una caracterÃstica oculta resaltada"),assessment:We(17),project:Ke("Pattern Detective Showcase","Exhibición del Detective de Patrones")},{week:18,unitId:2,title:A("Unit 2 Application and Review","Aplicación y Repaso de la Unidad 2"),unitName:Nn,standards:["SMP.1","SMP.2","SMP.3","SMP.6","SMP.7","SMP.8","4.NBT.5","4.NBT.6","4.OA.3","4.OA.4","4.OA.5"],iCanStatements:Z(["I can combine multiplication, division, factors, primes, and patterns to solve problems.","I can explain my reasoning clearly and check that my answers are reasonable."],["Puedo comb
315inar multiplicación, división, factores, primos y patrones para resolver problemas.","Puedo explicar mi razonamiento con claridad y comprobar que mis respuestas son razonables."]),teacherObjectives:Z(["Integrate all Unit 2 skills in application tasks.","Lead review and address common misconceptions before Unit 3."],["Integrar todas las destrezas de la Unidad 2 en tareas de aplicación.","Dirigir el repaso y atender los errores comunes antes de la Unidad 3."]),ageAppropriateExplanation:A("This week brings Unit 2 together. Real problems mix skills, so you will multiply and divide multi-digit numbers, find factors and multiples, classify primes and composites, and extend patterns â often within the same task. Show your steps, explain your reasoning, interpret any remainders, and check that each answer makes sense with estimation.","Esta semana integra la Unidad 2. Los problemas reales mezclan destrezas, asà que multiplicarás y dividirás números de varios dÃgitos, hallarás factores y múltiplos, clasificarás primos y compuestos, y extenderás patrones, a menudo en la misma tarea. Muestra tus pasos, explica tu razonamiento, interpreta cualquier residuo y comprueba que cada respuesta tenga sentido con la estimación."),vocabulary:[{term:A("Reasonable","Razonable"),definition:A("An answer that makes sense and is close to an estimate.","Una respuesta que tiene sentido y está cerca de una estimación.")},{term:A("Strategy","Estrategia"),definition:A("A planned method for solving a problem.","Un método planificado para resolver un problema.")}],activities:Z(["Mixed-review problem set across all Unit 2 standards.","Explain-your-thinking task with a written justification.","Self-check station using estimation and multiplication to verify answers."],["Conjunto de repaso mixto de todos los estándares de la Unidad 2.","Tarea de 'explica tu razonamiento' con una justificación escrita.","Estación de autocomprobación usando estimación y multiplicación para verificar respuestas."]),resources:He,resourcesAssessmentMapping:A("Khan Academy unit reviews for multiplication, division, and factors support the mixed-review set.","Los repasos de unidad de Khan Academy sobre multiplicación, división y factores apoyan el conjunto de repaso mixto."),aiTaskOptions:Z(["Ask the AI for a multi-step problem that uses multiplication, division, and a factor or pattern; solve it and explain each step."],["PÃdele a la IA un problema de varios pasos que use multiplicación, división y un factor o patrón; resuélvelo y explica cada paso."]),headerImageUrl:"/images/unit-2.png",headerImageAlt:A("A mixed-review page combining multiplication, division, factors, and patterns","Una página de repaso mixto que combina multiplicación, división, factores y patrones"),assessment:We(18),project:Ke("Unit 2 Math Showcase","Exhibición Matemática de la Unidad 2")},{week:19,unitId:3,title:A("Understand and Find Equivalent Fractions","Comprender y Hallar Fracciones Equivalentes"),unitName:Tn,standards:["SMP.2","SMP.5","SMP.7","4.NF.1"],iCanStatements:Z(["I can explain why two fractions are equivalent using a model.","I can make equivalent fractions by multiplying the numerator and denominator by the same number."],["Puedo explicar por qué dos fracciones son equivalentes usando un modelo.","Puedo crear fracciones equivalentes multiplicando el numerador y el denominador por el mismo número."]),teacherObjectives:Z(["Use area and number-line models to show equivalence.","Connect equivalence to multiplying by a form of one (n/n)."],["Usar modelos de área y de recta numérica para mostrar la equivalencia.","Conectar la equivalencia con multiplicar por una forma de uno (n/n)."]),ageAppropriateExplanation:A("Two fractions are equivalent when they name the same amount, even though they look different. If you cut a pizza into 2 pieces and take 1, that is 1/2. If you cut the same pizza into 4 pieces and take 2, that is 2/4 â the same amount. You can build an equivalent fraction by multiplying the numerator and denominator by the same number, because that just cuts each piece into more equal parts without changing how much you have.","Dos fracciones son equivalentes cuando nombran la misma cantidad, aunque se vean diferentes. Si cortas una pizza en 2 trozos y tomas 1, eso es 1/2. Si cortas la misma pizza en 4 trozos y tomas 2, eso es 2/4: la misma cantidad. Puedes crear una fracción equivalente multiplicando el numerador y el denominador por el mismo número, porque eso solo corta cada trozo en más partes iguales sin cambiar cuánto tienes."),vocabulary:[{term:A("Numerator","Numerador"),definition:A("The top number of a fraction; how many parts you have.","El número de arriba de una fracción; cuántas partes tienes.")},{term:A("Denominator","Denominador"),definition:A("The bottom number of a fraction; how many equal parts the whole is split into.","El número de abajo de una fracción; en cuántas partes iguales se divide el entero.")},{term:A("Equivalent fractions","Fracciones equivalentes"),definition:A("Different fractions that name the same amount.","Fracciones diferentes que nombran la misma cantidad.")}],activities:Z(["Fold paper strips to show 1/2 = 2/4 = 4/8.","Use a number line to place equivalent fractions on the same point.","Build equivalent fractions by multiplying top and bottom by the same number."],["Doblar tiras de papel para mostrar 1/2 = 2/4 = 4/8.","Usar una recta numérica para colocar fracciones equivalentes en el mismo punto.","Crear fracciones equivalentes multiplicando arriba y abajo por el mismo número."]),resources:He,resourcesAssessmentMapping:A("Khan Academy 'Equivalent fractions' supports the paper-folding activity.","La lección 'Fracciones equivalentes' de Khan Academy apoya la actividad de doblar papel."),aiTaskOptions:Z(["Ask the AI for a fraction; make two equivalent fractions and explain how you made each one."],["PÃdele a la IA una fracción;
315 crea dos fracciones equivalentes y explica cómo hiciste cada una."]),headerImageUrl:"/images/unit-3.png",headerImageAlt:A("Two equal-area bars split into different numbers of parts showing equivalent fractions","Dos barras de igual área divididas en distintos números de partes que muestran fracciones equivalentes"),assessment:We(19),project:Ke("Equivalent Fractions Poster","Cartel de Fracciones Equivalentes")},{week:20,unitId:3,title:A("Generate and Simplify Equivalent Fractions","Crear y Simplificar Fracciones Equivalentes"),unitName:Tn,standards:["SMP.2","SMP.7","SMP.8","4.NF.1"],iCanStatements:Z(["I can write a fraction in simplest form by dividing by a common factor.","I can generate a list of fractions equivalent to a given fraction."],["Puedo escribir una fracción en su forma más simple dividiendo entre un factor común.","Puedo generar una lista de fracciones equivalentes a una fracción dada."]),teacherObjectives:Z(["Use common factors to simplify fractions.","Connect simplifying (dividing) and building up (multiplying) as inverse moves."],["Usar factores comunes para simplificar fracciones.","Conectar simplificar (dividir) y ampliar (multiplicar) como movimientos inversos."]),ageAppropriateExplanation:A("Just as you can multiply to make an equivalent fraction with bigger numbers, you can divide to make one with smaller numbers. This is called simplifying. To simplify, find a number that divides both the numerator and denominator evenly â a common factor â and divide by it. For 6/8, both 6 and 8 can be divided by 2, giving 3/4. A fraction is in simplest form when the only number that divides both parts is 1.","Asà como puedes multiplicar para crear una fracción equivalente con números más grandes, puedes dividir para crear una con números más pequeños. Esto se llama simplificar. Para simplificar, halla un número que divida exactamente tanto el numerador como el denominador âun factor comúnâ y divide entre él. Para 6/8, tanto 6 como 8 se pueden dividir entre 2, dando 3/4. Una fracción está en su forma más simple cuando el único número que divide ambas partes es 1."),vocabulary:[{term:A("Simplify","Simplificar"),definition:A("To write a fraction with the smallest possible numerator and denominator.","Escribir una fracción con el numerador y denominador más pequeños posibles.")},{term:A("Common factor","Factor común"),definition:A("A number that divides two numbers evenly.","Un número que divide exactamente a dos números.")},{term:A("Simplest form","Forma más simple"),definition:A("A fraction whose numerator and denominator share no common factor but 1.","Una fracción cuyo numerador y denominador no comparten más factor común que 1.")}],activities:Z(["Simplify a set of fractions by dividing by common factors.","Sort fractions into groups that are equivalent.","Make an 'equivalent fraction chain' from one starting fraction."],["Simplificar un conjunto de fracciones dividiendo entre factores comunes.","Clasificar fracciones en grupos que sean equivalentes.","Hacer una 'cadena de fracciones equivalentes' a partir de una fracción inicial."]),resources:He,resourcesAssessmentMapping:A("Khan Academy 'Simplifying fractions' supports the simplify-and-sort activity.","La lección 'Simplificar fracciones' de Khan Academy apoya la actividad de simplificar y clasificar."),aiTaskOptions:Z(["Ask the AI for a fraction that is not in simplest form; simplify it and explain the common factor you used."],["PÃdele a la IA una fracción que no esté en su forma más simple; simplifÃcala y explica el factor común que usaste."]),headerImageUrl:"/images/unit-3.png",headerImageAlt:A("A fraction being divided by a common factor to reach simplest form","Una fracción que se divide entre un factor común para llegar a su forma más simple"),assessment:We(20),project:Ke("Simplest-Form Sorting Game","Juego de Clasificación en Forma Más Simple")},{week:21,unitId:3,title:A("Compare Fractions","Comparar Fracciones"),unitName:Tn,standards:["SMP.2","SMP.3","SMP.6","4.NF.2"],iCanStatements:Z(["I can compare two fractions using a common denominator or a benchmark.","I can justify my comparison with <, >, or = and explain my reasoning."],["Puedo comparar dos fracciones usando un denominador común o una referencia.","Puedo justificar mi comparación con <, >, o = y explicar mi razonamiento."]),teacherObjectives:Z(["Compare fractions by creating common denominators.","Use benchmarks like 0, 1/2, and 1 to reason about size."],["Comparar fracciones creando denominadores comunes.","Usar referencias como 0, 1/2 y 1 para razonar sobre el tamaño."]),ageAppropriateExplanation:A("To compare fractions, you need to think about the size of the pieces and how many you have. Two helpful ways: First, rewrite both with the same denominator, then compare numerators â for 2/3 and 3/5, use fifteenths: 10/15 versus 9/15, so 2/3 is greater. Second, compare to a benchmark like 1/2 â 3/8 is less than 1/2 while 5/8 is more, so 5/8 is greater. Remember that with the same numerator, fewer pieces means bigger pieces: 5/6 is greater than 5/8.","Para comparar fracciones, debes pensar en el tamaño de los trozos y en cuántos tienes. Dos formas útiles: Primero, reescribe ambas con el mismo denominador y compara los numeradores: para 2/3 y 3/5, usa quinceavos: 10/15 frente a 9/15, asà que 2/3 es mayor. Segundo, compara con una referencia como 1/2: 3/8 es menor que 1/2 mientras que 5/8 es mayor, asà que 5/8 es mayor. Recuerda que con el mismo numerador, menos trozos significa trozos más grandes: 5/6 es mayor que 5/8."),vocabulary:[{term:A("Common denominator","Denominador común"),definition:A("The same denominator used for two or more fractions so they can be compared or added.","El mismo denominador usado para dos o más fracciones para poder compararlas o
315sumarlas.")},{term:A("Benchmark fraction","Fracción de referencia"),definition:A("A familiar fraction like 1/2 used to estimate and compare.","Una fracción conocida como 1/2 que se usa para estimar y comparar.")}],activities:Z(["Compare fraction pairs by rewriting with a common denominator.","Sort fractions as less than, equal to, or greater than 1/2.","Place fractions on a number line and compare positions."],["Comparar pares de fracciones reescribiéndolas con un denominador común.","Clasificar fracciones como menores, iguales o mayores que 1/2.","Colocar fracciones en una recta numérica y comparar posiciones."]),resources:He,resourcesAssessmentMapping:A("Khan Academy 'Comparing fractions' supports the benchmark-sorting activity.","La lección 'Comparar fracciones' de Khan Academy apoya la actividad de clasificación con referencias."),aiTaskOptions:Z(["Ask the AI for two fractions with different denominators; compare them and justify your answer with <, >, or =."],["PÃdele a la IA dos fracciones con denominadores diferentes; compáralas y justifica tu respuesta con <, >, o =."]),headerImageUrl:"/images/unit-3.png",headerImageAlt:A("Two fractions lined up on a number line to compare their sizes","Dos fracciones alineadas en una recta numérica para comparar sus tamaños"),assessment:We(21),project:Ke("Fraction Comparison Challenge","Reto de Comparación de Fracciones")},{week:22,unitId:3,title:A("Add and Subtract Fractions with Like Denominators","Sumar y Restar Fracciones con Igual Denominador"),unitName:Tn,standards:["SMP.2","SMP.4","SMP.7","4.NF.3"],iCanStatements:Z(["I can add and subtract fractions that have the same denominator.","I can explain why the denominator stays the same."],["Puedo sumar y restar fracciones que tienen el mismo denominador.","Puedo explicar por qué el denominador se mantiene igual."]),teacherObjectives:Z(["Model joining and separating like-sized fraction pieces.","Connect the operation to counting unit fractions."],["Modelar unir y separar trozos fraccionarios del mismo tamaño.","Conectar la operación con contar fracciones unitarias."]),ageAppropriateExplanation:A("When fractions have the same denominator, the pieces are all the same size, so adding or subtracting is just counting pieces. For 2/8 + 3/8, you have 2 eighths and add 3 more eighths to get 5 eighths, or 5/8. The denominator stays 8 because the size of each piece does not change â only how many you have. Subtraction works the same way: 7/10 â 4/10 means take 4 tenths away from 7 tenths, leaving 3/10.","Cuando las fracciones tienen el mismo denominador, los trozos son todos del mismo tamaño, asà que sumar o restar es solo contar trozos. Para 2/8 + 3/8, tienes 2 octavos y sumas 3 octavos más para obtener 5 octavos, o 5/8. El denominador se mantiene en 8 porque el tamaño de cada trozo no cambia, solo cuántos tienes. La resta funciona igual: 7/10 â 4/10 significa quitar 4 décimas de 7 décimas, dejando 3/10."),vocabulary:[{term:A("Like denominators","Denominadores iguales"),definition:A("Denominators that are the same, so the pieces are the same size.","Denominadores que son iguales, asà que los trozos son del mismo tamaño.")},{term:A("Unit fraction","Fracción unitaria"),definition:A("A fraction with a numerator of 1, like 1/8.","Una fracción con numerador 1, como 1/8.")}],activities:Z(["Use fraction strips to join and separate eighths and tenths.","Add and subtract like-denominator fractions and record equations.","Write a word problem for a given fraction sum."],["Usar tiras de fracciones para unir y separar octavos y décimos.","Sumar y restar fracciones con igual denominador y registrar ecuaciones.","Escribir un problema verbal para una suma de fracciones dada."]),resources:He,resourcesAssessmentMapping:A("Khan Academy 'Adding fractions with like denominators' supports the fraction-strip activity.","La lección 'Sumar fracciones con igual denominador' de Khan Academy apoya la actividad de tiras de fracciones."),aiTaskOptions:Z(["Ask the AI for two fractions with the same denominator; add or subtract them and show your steps."],["PÃdele a la IA dos fracciones con el mismo denominador; súmalas o réstalas y muestra tus pasos."]),headerImageUrl:"/images/unit-3.png",headerImageAlt:A("Fraction strips joined together to add fractions with the same denominator","Tiras de fracciones unidas para sumar fracciones con el mismo denominador"),assessment:We(22),project:Ke("Fraction Recipe Workshop","Taller de Recetas con Fracciones")},{week:23,unitId:3,title:A("Add and Subtract Mixed Numbers","Sumar y Restar Números Mixtos"),unitName:Tn,standards:["SMP.1","SMP.2","SMP.7","4.NF.3"],iCanStatements:Z(["I can add and subtract mixed numbers with like denominators.","I can rewrite a mixed number as an improper fraction and back."],["Puedo sumar y restar números mixtos con igual denominador.","Puedo reescribir un número mixto como fracción impropia y viceversa."]),teacherObjectives:Z(["Add and subtract the whole-number and fraction parts.","Convert between mixed numbers and improper fractions."],["Sumar y restar las partes de número entero y de fracción.","Convert
315ir entre números mixtos y fracciones impropias."]),ageAppropriateExplanation:A("A mixed number is a whole number plus a fraction, like 2 3/4. To add mixed numbers with the same denominator, add the whole numbers and the fractions separately: 1 1/4 + 2 1/4 = 3 + 2/4 = 3 2/4. Subtraction works the same way. You can also rewrite a mixed number as an improper fraction by multiplying the whole number by the denominator and adding the numerator: 2 3/4 = (2 à 4 + 3)/4 = 11/4. Both forms name the same amount.","Un número mixto es un número entero más una fracción, como 2 3/4. Para sumar números mixtos con el mismo denominador, suma los enteros y las fracciones por separado: 1 1/4 + 2 1/4 = 3 + 2/4 = 3 2/4. La resta funciona igual. También puedes reescribir un número mixto como fracción impropia multiplicando el entero por el denominador y sumando el numerador: 2 3/4 = (2 à 4 + 3)/4 = 11/4. Ambas formas nombran la misma cantidad."),vocabulary:[{term:A("Mixed number","Número mixto"),definition:A("A number made of a whole number and a fraction, like 2 3/4.","Un número formado por un entero y una fracción, como 2 3/4.")},{term:A("Improper fraction","Fracción impropia"),definition:A("A fraction whose numerator is greater than or equal to its denominator, like 11/4.","Una fracción cuyo numerador es mayor o igual que su denominador, como 11/4.")}],activities:Z(["Add mixed numbers by combining whole and fraction parts.","Convert mixed numbers to improper fractions and back.","Solve a distance or time problem using mixed numbers."],["Sumar números mixtos combinando las partes entera y fraccionaria.","Convertir números mixtos a fracciones impropias y viceversa.","Resolver un problema de distancia o tiempo usando números mixtos."]),resources:He,resourcesAssessmentMapping:A("Khan Academy 'Adding and subtracting mixed numbers' supports the conversion activity.","La lección 'Sumar y restar números mixtos' de Khan Academy apoya la actividad de conversión."),aiTaskOptions:Z(["Ask the AI for two mixed numbers with the same denominator; add them and show your work by parts."],["PÃdele a la IA dos números mixtos con el mismo denominador; súmalos y muestra tu trabajo por partes."]),headerImageUrl:"/images/unit-3.png",headerImageAlt:A("Whole shapes and fraction parts combined to add mixed numbers","Figuras enteras y partes fraccionarias combinadas para sumar números mixtos"),assessment:We(23),project:Ke("Mixed-Number Journey Map","Mapa de Recorrido con Números Mixtos")},{week:24,unitId:3,title:A("Multiply a Fraction by a Whole Number","Multiplicar una Fracción por un Número Entero"),unitName:Tn,standards:["SMP.2","SMP.4","SMP.7","4.NF.4"],iCanStatements:Z(["I can multiply a fraction by a whole number.","I can show that multiplying by a whole number is repeated addition of the fraction."],["Puedo multiplicar una fracción por un número entero.","Puedo mostrar que multiplicar por un número entero es la suma repetida de la fracción."]),teacherObjectives:Z(["Model n à a/b as n copies of a/b.","Connect repeated addition of fractions to multiplication."],["Modelar n à a/b como n copias de a/b.","Conectar la suma repetida de fracciones con la multiplicación."]),ageAppropriateExplanation:A("Multiplying a fraction by a whole number means adding that fraction over and over. For 3 à 2/5, you have three groups of 2/5: 2/5 + 2/5 + 2/5 = 6/5. A shortcut is to multiply the numerator by the whole number and keep the denominator the same: 3 à 2/5 = (3 à 2)/5 = 6/5. The denominator stays the same because the size of each piece never changes â you are just collecting more of them.","Multiplicar una fracción por un número entero significa sumar esa fracción una y otra vez. Para 3 à 2/5, tienes tres grupos de 2/5: 2/5 + 2/5 + 2/5 = 6/5. Un atajo es multiplicar el numerador por el número entero y conservar el denominador: 3 à 2/5 = (3 à 2)/5 = 6/5. El denominador se mantiene igual porque el tamaño de cada trozo nunca cambia; solo estás reuniendo más de ellos."),vocabulary:[{term:A("Repeated addition","Suma repetida"),definition:A("Adding the same number again and again, which is what multiplication does.","Sumar el mismo número una y otra vez, que es lo que hace la multiplicación.")},{term:A("Multiple of a fraction","Múltiplo de una fracción"),definition:A("A fraction added to itself a whole number of times, like 3 à 2/5.","Una fracción sumada a sà misma un número entero de veces, como 3 à 2/5.")}],activities:Z(["Model n à a/b with fraction strips or number lines.","Write multiplication as repeated addition and compare results.","Solve a real measurement problem like filling several cups."],["Modelar n à a/b con tiras de fracciones o re
315ctas numéricas.","Escribir la multiplicación como suma repetida y comparar resultados.","Resolver un problema real de medición como llenar varios vasos."]),resources:He,resourcesAssessmentMapping:A("Khan Academy 'Multiplying fractions by whole numbers' supports the repeated-addition activity.","La lección 'Multiplicar fracciones por números enteros' de Khan Academy apoya la actividad de suma repetida."),aiTaskOptions:Z(["Ask the AI for a whole number times a fraction; solve it as repeated addition and with the shortcut, then compare."],["PÃdele a la IA un número entero por una fracción; resuélvelo como suma repetida y con el atajo, luego compara."]),headerImageUrl:"/images/unit-3.png",headerImageAlt:A("Several equal fraction groups combined to multiply a fraction by a whole number","Varios grupos iguales de fracciones combinados para multiplicar una fracción por un número entero"),assessment:We(24),project:Ke("Fraction Multiplication Recipe Scale-Up","Ampliación de Receta con Multiplicación de Fracciones")},{week:25,unitId:3,title:A("Tenths, Hundredths, and Decimal Fractions","Décimas, Centésimas y Fracciones Decimales"),unitName:Tn,standards:["SMP.2","SMP.5","SMP.7","4.NF.5"],iCanStatements:Z(["I can rewrite a fraction with denominator 10 as an equivalent fraction with denominator 100.","I can add a number of tenths and a number of hundredths."],["Puedo reescribir una fracción con denominador 10 como una fracción equivalente con denominador 100.","Puedo sumar un número de décimas y un número de centésimas."]),teacherObjectives:Z(["Connect tenths and hundredths using a hundredths grid.","Add fractions with denominators 10 and 100 by renaming."],["Conectar décimas y centésimas usando una cuadrÃcula de centésimas.","Sumar fracciones con de
315nominadores 10 y 100 renombrando."]),ageAppropriateExplanation:A("Tenths and hundredths are special fractions because our number system is built on tens. One tenth equals ten hundredths, so 3/10 is the same as 30/100. On a 100-square grid, one full column (1/10) covers 10 small squares (10/100). This lets you add tenths and hundredths together: to find 4/10 + 5/100, rewrite 4/10 as 40/100, then 40/100 + 5/100 = 45/100. Renaming to the same denominator makes the pieces the same size so you can combine them.","Las décimas y las centésimas son fracciones especiales porque nuestro sistema numérico se basa en dieces. Una décima equivale a diez centésimas, asà que 3/10 es lo mismo que 30/100. En una cuadrÃcula de 100 cuadritos, una columna completa (1/10) cubre 10 cuadritos pequeños (10/100). Esto te permite sumar décimas y centésimas: para hallar 4/10 + 5/100, reescribe 4/10 como 40/100, luego 40/100 + 5/100 = 45/100. Renombrar al mismo denominador hace que los trozos sean del mismo tamaño para poder combinarlos."),vocabulary:[{term:A("Tenth","Décima"),definition:A("One of ten equal parts of a whole, written 1/10.","Una de diez partes iguales de un entero, escrita 1/10.")},{term:A("Hundredth","Centésima"),definition:A("One of one hundred equal parts of a whole, written 1/100.","Una de cien partes iguales de un entero, escrita 1/100.")}],activities:Z(["Shade a hundredths grid to show 3/10 = 30/100.","Rename tenths as hundredths and add to hundredths.","Match tenths and hundredths cards that are equivalent."],["Sombrear una cuadrÃcula de centésimas para mostrar 3/10 = 30/100.","Renombrar décimas como centésimas y sumar a centésimas.","Emparejar tarjetas de décimas y centésimas que sean equivalentes."]),resources:He,resourcesAssessmentMapping:A("Khan Academy 'Fractions with denominators of 10 and 100' supports the hundredths-grid activity.","La lección 'Fracciones con de
315nominadores de 10 y 100' de Khan Academy apoya la actividad de la cuadrÃcula de centésimas."),aiTaskOptions:Z(["Ask the AI for a sum of tenths and hundredths; solve it by renaming the tenths as hundredths."],["PÃdele a la IA una suma de décimas y centésimas; resuélvela renombrando las décimas como centésimas."]),headerImageUrl:"/images/unit-3.png",headerImageAlt:A("A hundredths grid showing one tenth shaded as ten hundredths","Una cuadrÃcula de centésimas que muestra una décima sombreada como diez centésimas"),assessment:We(25),project:Ke("Hundredths-Grid Decimal Art","Arte Decimal en CuadrÃcula de Centésimas")},{week:26,unitId:3,title:A("Decimal Notation and Comparing Decimals","Notación Decimal y Comparación de Decimales"),unitName:Tn,standards:["SMP.2","SMP.6","SMP.7","4.NF.6","4.NF.7"],iCanStatements:Z(["I can write fractions with denominators 10 and 100 as decimals.","I can compare two decimals to hundredths and justify with <, >, or =."],["Puedo escribir fracciones con denominadores 10 y 100 como decimales.","Puedo comparar dos decimales hasta centésimas y justificar con <, >, o =."]),teacherObjectives:Z(["Connect fraction and decimal notation for tenths and hundredths.","Compare decimals by reasoning about place value, not digit count."],["Conectar la notación de fracción y decimal para décimas y centésimas.","Comparar decimales razonando sobre el valor posicional, no por la cantidad de dÃgitos."]),ageAppropriateExplanation:A("A decimal is another way to write tenths and hundredths. The first place after the decimal point is tenths and the second is hundredths, so 7/10 = 0.7 and 35/100 = 0.35. To compare decimals, line up the place values rather than just counting digits. 0.6 looks 'shorter' than 0.45, but 0.6 = 0.60 = 60 hundredths, which is more than 45 hundredths, so 0.6 is greater. Writing extra zeros on the right, like 0.5 = 0.50, does not change the value.","Un decimal es otra forma de escribir décimas y centésimas. El primer lugar después del punto decimal es de las décimas y el segundo es de las centésimas, asà que 7/10 = 0.7 y 35/100 = 0.35. Para comparar decimales, alinea los valores posicionales en lugar de solo contar dÃgitos. 0.6 parece 'más corto' que 0.45, pero 0.6 = 0.60 = 60 centésimas, que es más que 45 centésimas, asà que 0.6 es mayor. Escribir ceros extra a la derecha, como 0.5 = 0.50, no cambia el valor."),vocabulary:[{term:A("Decimal","Decimal"),definition:A("A number written with a decimal point to show tenths, hundredths, and so on.","Un número escrito con un punto decimal para mostrar décimas, centésimas, etc.")},{term:A("Decimal point","Punto decimal"),definition:A("The dot that separates whole numbers from tenths and hundredths.","El punto que separa los números enteros de las décimas y centésimas.")}],activities:Z(["Write tenths and hundredths fractions as decimals.","Compare decimal pairs using a place-value chart.","Order a set of decimals from least to greatest."],["Escribir fracciones de décimas y centésimas como decimales.","Comparar pares de decimales usando una tabla de valor posicional.","Ordenar un conjunto de decimales de menor a mayor."]),resources:He,resourcesAssessmentMapping:A("Khan Academy 'Writing and comparing decimals' supports the place-value comparison activity.","La lección 'Escribir y comparar decimales' de Khan Academy apoya la actividad de comparación por valor posicional."),aiTaskOptions:Z(["Ask the AI for two decimals to hundredths; compare them and justify your answer using place value."],["PÃdele a la IA dos decimales hasta centésimas; compáralos y justifica tu respuesta usando el valor posicional."]),headerImageUrl:"/images/unit-3.png",headerImageAlt:A("A place-value chart aligning two decimals by tenths and hundredths to compare them","Una tabla de valor posicional que alinea dos decimales por décimas y centésimas para compararlos"),assessment:We(26),project:Ke("Decimal Comparison Number Line","Recta Numérica de Comparación de Decimales")},{week:27,unitId:3,title:A("Unit 3 Application and Review","Aplicación y Repaso de la Unidad 3"),unitName:Tn,standards:["SMP.1","SMP.2","SMP.3","SMP.6","SMP.7","SMP.8","4.NF.1","4.NF.2","4.
315NF.3","4.NF.4","4.NF.5","4.NF.6","4.NF.7"],iCanStatements:Z(["I can combine equivalence, comparison, operations, and decimals to solve fraction problems.","I can explain my reasoning clearly and check that my answers are reasonable."],["Puedo combinar equivalencia, comparación, operaciones y decimales para resolver problemas de fracciones.","Puedo explicar mi razonamiento con claridad y comprobar que mis respuestas son razonables."]),teacherObjectives:Z(["Integrate all Unit 3 skills in application tasks.","Lead review and address common misconceptions before Unit 4."],["Integrar todas las destrezas de la Unidad 3 en tareas de aplicación.","Dirigir el repaso y atender los errores comunes antes de la Unidad 4."]),ageAppropriateExplanation:A("This week brings Unit 3 together. Real problems mix skills, so you will find equivalent fractions, compare and order them, add and subtract fractions and mixed numbers, multiply a fraction by a whole number, and connect fractions to decimals â often within the same task. Show your steps, explain your reasoning, and check that each answer makes sense.","Esta semana integra la Unidad 3. Los problemas reales mezclan destrezas, asà que hallarás fracciones equivalentes, las compararás y ordenarás, sumarás y restarás fracciones y números mixtos, multiplicarás una fracción por un número entero y conectarás fracciones con decimales, a menudo en la misma tarea. Muestra tus pasos, explica tu razonamiento y comprueba que cada respuesta tenga sentido."),vocabulary:[{term:A("Reasonable","Razonable"),definition:A("An answer that makes sense and is close to an estimate.","Una respuesta que tiene sentido y está cerca de una estimación.")},{term:A("Justify","Justificar"),definition:A("To give reasons that show why an answer is correct.","Dar razones que muestran por qué una respuesta es correcta.")}],activities:Z(["Mixed-review problem set across all Unit 3 standards.","Explain-your-thinking task with a written justification.","Self-check station using models to verify fraction and decimal answers."],["Conjunto de repaso mixto de todos los estándares de la Unidad 3.","Tarea de 'explica tu razonamiento' con una justificación escrita.","Estación de autocomprobación usando modelos para verificar respuestas de fracciones y decimales."]),resources:He,resourcesAssessmentMapping:A("Khan Academy unit reviews for fractions and decimals support the mixed-review set.","Los repasos de unidad de Khan Academy sobre fracciones y decimales apoyan el conjunto de repaso mixto."),aiTaskOptions:Z(["Ask the AI for a problem that uses equivalent fractions, an operation, and a decimal; solve it and explain each step."],["PÃdele a la IA un problema que use fracciones equivalentes, una operación y un decimal; resuélvelo y explica cada paso."]),headerImageUrl:"/images/unit-3.png",headerImageAlt:A("A mixed-review page combining fractions, mixed numbers, and decimals","Una página de repaso mixto que combina fracciones, números mixtos y decimales"),assessment:We(27),project:Ke("Unit 3 Fraction & Decimal Showcase","Exhibición de Fracciones y Decimales de la Unidad 3")},{week:28,unitId:4,title:A("Measurement Units and Conversions","Unidades de Medida y Conversiones"),unitName:Mn,standards:["SMP.2","SMP.5","SMP.6","4.MD.1"],iCanStatements:Z(["I can name metric and customary units for length, mass, volume, and time.","I can convert a larger unit to a smaller unit by multiplying."],["Puedo nombrar unidades métricas y usuales de longitud, masa, volumen y tiempo.","Puedo convertir una unidad mayor a una menor multiplicando."]),teacherObjectives:Z(["Build a reference table of common unit relationships.","Model conversions as repeated grouping or multiplication."],["Construir una tabla de referencia con relaciones de unidades comunes.","Modelar las conversiones como agrupamiento repetido o multiplicación."]),ageAppropriateExplanation:A("Measurement helps us describe how long, how heavy, how much, and how long in time. Bigger units hold many smaller ones: 1 meter is 100 centimeters, 1 kilogram is 1,000 grams, and 1 hour is 60 minutes. To change a larger unit into a smaller unit, you multiply, because you are counting how many small pieces fit inside.","La medición nos ayuda a describir cuán largo, cuán pesado, cuánto y cuánto tiempo. Las unidades grandes contienen muchas pequeñas: 1 metro son 100 centÃmetros, 1 kilogramo son 1,000 gramos y 1 hora son 60 minutos. Para cambiar una unidad mayor a una menor, multiplicas, porque cuentas cuántos trozos pequeños caben dentro."),vocabulary:[{term:A("Unit","Unidad"),definition:A("A standard amount used to measure, such as a meter or a gram.","Una cantidad estándar para medir, como un metro o un gramo.")}
315,{term:A("Convert","Convertir"),definition:A("To change a measurement from one unit to another.","Cambiar una medida de una unidad a otra.")}],activities:Z(["Build a class conversion reference chart for length, mass, volume, and time.","Convert larger units to smaller units using multiplication.","Measure classroom objects and record them in two units."],["Construir una tabla de conversiones de la clase para longitud, masa, volumen y tiempo.","Convertir unidades mayores a menores usando multiplicación.","Medir objetos del salón y registrarlos en dos unidades."]),resources:He,resourcesAssessmentMapping:A("Khan Academy unit-conversion videos support the conversion practice in the assessment.","Los videos de conversión de unidades de Khan Academy apoyan la práctica de conversión de la evaluación."),aiTaskOptions:Z(["Ask the AI for three real-life conversion problems (length, mass, and time) and solve each one."],["PÃdele a la IA tres problemas de conversión de la vida real (longitud, masa y tiempo) y resuelve cada uno."]),headerImageUrl:"/images/unit-4.png",headerImageAlt:A("A measurement reference chart with rulers, scales, and a clock","Una tabla de referencia de medidas con reglas, balanzas y un reloj"),assessment:We(28),project:Ke("Measurement Conversion Chart","Tabla de Conversión de Medidas")},{week:29,unitId:4,title:A("Solve Measurement Word Problems","Resolver Problemas Verbales de Medición"),unitName:Mn,standards:["SMP.1","SMP.2","SMP.4","4.MD.2","4.NF.6"],iCanStatements:Z(["I can solve word problems involving distance, time, volume, mass, and money.","I can use diagrams and equations to represent measurement problems."],["Puedo resolver problemas verbales de distancia, tiempo, volumen, masa y dinero.","Puedo usar diagramas y ecuaciones para representar problemas de medición."]),teacherObjectives:Z(["Model multi-step measurement problems with bar diagrams.","Connect money problems to decimal notation."],["Modelar problemas de medición de varios pasos con diagramas de barras.","Conectar los problemas de dinero con la notación decimal."]),ageAppropriateExplanation:A("Real problems often mix measurement and arithmetic. You might add times, subtract distances, find how much liquid is left, or count change. Read carefully, decide which operation fits, and draw a diagram when it helps. Money uses decimals, so $3.75 means 3 dollars and 75 hundredths of a dollar â line up the decimal points when you add or subtract.","Los problemas reales suelen mezclar medición y aritmética. Puedes sumar tiempos, restar distancias, hallar cuánto lÃquido queda o contar el cambio. Lee con cuidado, decide qué operación encaja y dibuja un diagrama cuando ayude. El dinero usa decimales, asà que $3.75 significa 3 dólares y 75 centésimas de dólar; alinea los puntos decimales al sumar o restar."),vocabulary:[{term:A("Elapsed time","Tiempo transcurrido"),definition:A("The amount of time that passes between a start and an end.","La cantidad de tiempo que pasa entre un inicio y un final.")},{term:A("Difference","Diferencia"),definition:A("The result of subtracting one amount from another.","El resultado de restar una cantidad de otra.")}],activities:Z(["Solve a set of distance, time, volume, mass, and money word problems.","Draw a bar diagram for one multi-step problem.","Make change for a purchase and record it with decimals."],["Resolver un conjunto de problemas de distancia, tiempo, volumen, masa y dinero.","Dibujar un diagrama de barras para un problema de varios pasos.","Dar cambio de una compra y registrarlo con decimales."]),resources:He,resourcesAssessmentMapping:A("Khan Academy measurement and money word-problem videos mirror the assessment tasks.","Los videos de problemas de medición y dinero de Khan Academy reflejan las tareas de la evaluación."),aiTaskOptions:Z(["Ask the AI for a two-step measurement word problem about a trip, then solve and explain it."],["PÃdele a la IA un problema de medición de dos pasos sobre un viaje, luego resuélvelo y explÃcalo."]),headerImageUrl:"/images/unit-4.png",headerImageAlt:A("A word-problem scene with a clock, a measuring cup, and coins","Una escena de problema verbal con un reloj, una taza medidora y monedas"),assessment:We(29),project:Ke("Measurement Story Problems","Problemas Narrativos de Medición")},{week:30,unitId:4,title:A("Area and Perimeter","Ãrea y PerÃmetro"),unitName:Mn,standards:["SMP.4","SMP.6","SMP.7","4.MD.3"],iCanStatements:Z(["I can find the area of a rectangle by multiplying length à width.","I can find the perimeter by adding the side lengths."],["Puedo hallar el área de un rectángulo multiplicando largo à ancho.","Puedo hallar el perÃmetro sumando las longitudes de los lados."]),teacherObjectives:Z(["Distinguish area from perimeter with concrete models.","Apply the area and perimeter formulas to solve problems."],["Distinguir el área del perÃmetro con modelos concretos.","Aplicar las fórmulas de área y perÃmetro para resolver problemas."]),ageAppropriateExplanation:A("Perimeter is the distance all the way around a shape â add up the sides. Area is the amount of flat space inside, measured in square units. For a rectangle, area = length à width, and perimeter = 2 à (length + width). Two shapes can share a perimeter but cover different areas, so the two ideas measure different things.","El perÃmetro es la distancia alrededor de una figura: suma los lados. El área es la cantidad de espacio plano dentro, medida en unidades cuadradas. Para un rectángulo, área = largo à ancho, y perÃmetro = 2 à (largo + ancho). Dos figuras pueden tener el mismo perÃmetro pero cubrir áreas distintas, asà que las dos ideas miden cosas diferentes."),vocabulary:[{term:A("Area","Ãrea"),definition:A("The amount of flat space inside a shape, in square units.","La cantidad de espacio plano dentro de una figura, en unidades cuadradas.")},{term:A("Perimeter","PerÃmetro"),definition:A("The total distance around the outside of a shape.","La distancia total alrededor del exterior de una figura.")}],activities:Z(["Tile rectangles with unit squares to discover the area formula.","Measure and compute perimeter and area of classroom rectangles.","Compare two rectangles with equal perimeter but different area."],["Cubrir rectángulos con cuadrados unitarios para descubrir la fórmula del área.","Medir y calcular el perÃmetro y el área de rectángulos del salón.","Comparar dos rectángulos con igual perÃmetro pero distinta área."]),resources:He,resourcesAssessmentMapping:A("Khan Academy area and perimeter videos support the formula practice in the assessment.","Los videos de área y perÃmetro de Khan Academy apoyan la práctica de fórmulas de la evaluación."),aiTaskOptions:Z(["Ask the AI to give the length and width of a garden, then find its area and perimeter and explain the difference."],["PÃdele a la IA el largo y el ancho de un jardÃn, luego halla su área y perÃmetro y explica la diferencia."]),headerImageUrl:"/images/unit-4.png",headerImageAlt:A("A rectangle tiled with unit squares showing area and perimeter","Un rectángulo cubierto con cuadrados unitarios que muestra área y perÃmetro"),assessment:We(30),project:Ke("Design a Room Floor Plan","Diseña el Plano de una Habitación")},{week:31,unitId:4,title:A("Line Plots with Fractions","Diagramas de Puntos con Fracciones"),unitName:Mn,standards:["SMP.2","SMP.4","SMP.5","4.MD.4"],iCanStatements:Z(["I can make a line plot using a fractional scale.","I can add and subtract fractions to answer questions about line-plot data."],["Puedo hacer un diagrama de puntos usando una escala fraccionaria.","Puedo sumar y restar fracciones para responder preguntas sobre los datos del diagrama."]),teacherObjectives:Z(["Guide students to organize measurement data on a number line.","Use line-plot data to pose and solve fraction problems."],["Guiar a los estudiantes a organizar datos de medición en una recta numérica.","Usar los datos del diagrama de puntos para plantear y resolver problemas de fracciones."]),ageAppropriateExplanation:A("A line plot shows data as X marks above a number line. When we measure things like pencil lengths, the marks can sit on fractions such as 1/4, 1/2, and 3/4. The tallest stack tells you the most common measurement. By adding or subtracting the fractions, you can find totals or the difference between the longest and shortest item.","Un diagrama de puntos muestra datos como marcas X sobre una recta numérica. Cuando medimos cosas como longitudes de lápices, las marcas pueden caer en fracciones como 1/4, 1/2 y 3/4. La columna más alta indica la medida más común. Al sumar o restar las fracciones, puedes hallar totales o la diferencia entre el objeto más largo y el m
315ás corto."),vocabulary:[{term:A("Line plot","Diagrama de puntos"),definition:A("A graph that shows data with marks above a number line.","Una gráfica que muestra datos con marcas sobre una recta numérica.")},{term:A("Data","Datos"),definition:A("Information collected by counting or measuring.","Información recogida al contar o medir.")}],activities:Z(["Measure objects to the nearest 1/4 unit and build a class line plot.","Read the line plot to find the most and least common measurement.","Use the data to add and subtract fractions and answer questions."],["Medir objetos al 1/4 de unidad más cercano y construir un diagrama de puntos de la clase.","Leer el diagrama para hallar la medida más y menos común.","Usar los datos para sumar y restar fracciones y responder preguntas."]),resources:He,resourcesAssessmentMapping:A("Khan Academy line-plot videos support reading and computing with fractional data in the assessment.","Los videos de diagramas de puntos de Khan Academy apoyan la lectura y el cálculo con datos fraccionarios de la evaluación."),aiTaskOptions:Z(["Ask the AI for a small set of fractional measurements, plot them, and answer one total and one difference question."],["PÃdele a la IA un pequeño conjunto de medidas fraccionarias, grafÃcalas y responde una pregunta de total y una de diferencia."]),headerImageUrl:"/images/unit-4.png",headerImageAlt:A("A line plot with X marks above a number line scaled in fourths","Un diagrama de puntos con marcas X sobre una recta numérica en cuartos"),assessment:We(31),project:Ke("Class Measurement Line Plot","Diagrama de Puntos de Medición de la Clase")},{week:32,unitId:4,title:A("Angles and the Protractor","Ãngulos y el Transportador"),unitName:Mn,standards:["SMP.5","SMP.6","4.MD.5","4.MD.6"],iCanStatements:Z(["I can understand an angle as a fraction of a circle measured in degrees.","I can measure and draw angles with a protractor."],["Puedo entender un ángulo como una fracción de una circunferencia medida en grados.","Puedo medir y dibujar ángulos con un transportador."]),teacherObjectives:Z(["Define degrees using turns around a circle.","Model correct protractor placement for measuring and drawing."],["Definir los grados usando giros alrededor de una circunferencia.","Modelar la colocación correcta del transportador para medir y dibujar."]),ageAppropriateExplanation:A("An angle measures an amount of turn. We measure turns in degrees, and one full circle is 360 degrees. A right angle is 90 degrees and a straight angle is 180 degrees. A one-degree angle is 1/360 of a circle. To use a protractor, put its center on the vertex, line one ray up with zero, and read the number where the other ray crosses the scale.","Un ángulo mide una cantidad de giro. Medimos los giros en grados, y una circunferencia completa son 360 grados. Un ángulo recto es 90 grados y un ángulo llano es 180 grados. Un ángulo de un grado es 1/360 de una circunferencia. Para usar un transportador, coloca su centro en el vértice, alinea un rayo con el cero y lee el número donde el otro rayo cruza la escala."),vocabulary:[{term:A("Degree","Grado"),definition:A("A unit for measuring angles; a full circle is 360 degrees.","Una unidad para medir ángulos; una circunferencia completa son 360 grados.")},{term:A("Protractor","Transportador"),definition:A("A tool used to measure and draw angles in degrees.","Una herramienta para medir y dibujar ángulos en grados.")}],activities:Z(["Sort angles as right, acute, or obtuse.","Measure given angles with a protractor.","Draw angles of given degree measures."],["Clasificar ángulos como rectos, agudos u obtusos.","Medir ángulos dados con un transportador.","Dibujar ángulos de medidas dadas en grados."]),resources:He,resourcesAssessmentMapping:A("Khan Academy protractor videos support measuring and drawing angles in the assessment.","Los videos de transportador de Khan Academy apoyan la medición y el dibujo de ángulos de la evaluación."),aiTaskOptions:Z(["Ask the AI to name three angle measures; classify each as acute, right, or obtuse and describe how you would draw one."],["PÃdele a la IA tres medidas de ángulos; clasifica cada una como aguda, recta u obtusa y describe cómo dibujarÃas uno."]),headerImageUrl:"/images/unit-4.png",headerImageAlt:A("A protractor measuring an angle in degrees","Un transportador midiendo un ángulo en grados"),assessment:We(32),project:Ke("Angle Hunt and Measure","Búsqueda y Medición de Ãngulos")},{week:33,unitId:4,title:A("Adding and Subtracting Angle Measures","Sumar y Restar Medidas de Ãngulos"),unitName:Mn,standards:["SMP.1","SMP.7","4.MD.7"],iCanStatements:Z(["I can see that a big angle is the sum of its smaller parts.","I can find an unknown angle by adding or subtracting."],["Puedo ver que un ángulo grande es la suma de sus partes más pequeñas.","Puedo hallar un ángulo desconocido sumando o restando."]),teacherObjectives:Z(["Model angles as additive using decomposition.","Set up equations to find unknown angle measures."],["Modelar los ángulos como aditivos usando la descomposición.","Plantear ecuaciones para hallar medidas de ángulos de
315sconocidas."]),ageAppropriateExplanation:A("Angles add up just like lengths. When two angles share a side and have no gaps or overlaps, their measures combine into the whole angle. So if a 30-degree angle and a 40-degree angle join, the whole is 70 degrees. If you know the whole and one part, subtract to find the missing part â for example, 90 â 25 = 65 degrees.","Los ángulos se suman igual que las longitudes. Cuando dos ángulos comparten un lado y no tienen huecos ni superposiciones, sus medidas se combinan en el ángulo completo. AsÃ, si un ángulo de 30 grados y uno de 40 grados se unen, el total es 70 grados. Si conoces el total y una parte, resta para hallar la parte que falta; por ejemplo, 90 â 25 = 65 grados."),vocabulary:[{term:A("Decompose","Descomponer"),definition:A("To break a whole angle into smaller angles.","Separar un ángulo completo en ángulos más pequeños.")},{term:A("Unknown","Incógnita"),definition:A("A value you need to find, often shown with a letter or a blank.","Un valor que debes hallar, a menudo mostrado con una letra o un espacio.")}],activities:Z(["Combine two angles and measure the whole.","Find a missing angle by subtracting from the whole.","Write and solve an equation for an unknown angle."],["Combinar dos ángulos y medir el total.","Hallar un ángulo que falta restando del total.","Escribir y resolver una ecuación para un ángulo desconocido."]),resources:He,resourcesAssessmentMapping:A("Khan Academy videos on adding and finding unknown angles support the assessment.","Los videos de Khan Academy sobre sumar y hallar ángulos desconocidos apoyan la evaluación."),aiTaskOptions:Z(["Ask the AI for a whole angle and one of its parts; find the missing part and explain your equation."],["PÃdele a la IA un ángulo completo y una de sus partes; halla la parte que falta y explica tu ecuación."]),headerImageUrl:"/images/unit-4.png",headerImageAlt:A("A large angle decomposed into two smaller angles","Un ángulo grande descompuesto en dos ángulos más pequeños"),assessment:We(33),project:Ke("Unknown Angle Puzzles","Acertijos de Ãngulos Desconocidos")},{week:34,unitId:4,title:A("Points, Lines, Rays, and Angles","Puntos, Rectas, Rayos y Ãngulos"),unitName:Mn,standards:["SMP.4","SMP.6","4.G.1"],iCanStatements:Z(["I can identify and draw points, lines, rays, line segments, and angles.","I can recognize parallel and perpendicular lines."],["Puedo identificar y dibujar puntos, rectas, rayos, segmentos y ángulos.","Puedo reconocer rectas paralelas y perpendiculares."]),teacherObjectives:Z(["Define and contrast lines, rays, and segments.","Identify parallel and perpendicular lines in figures and the real world."],["Definir y contrastar rectas, rayos y segmentos.","Identificar rectas paralelas y perpendiculares en figuras y en el mundo real."]),ageAppropriateExplanation:A("Geometry has its own building blocks. A point marks a location. A line goes on forever in both directions, a ray starts at one endpoint and goes on forever one way, and a segment has two endpoints. An angle forms where two rays meet at a shared endpoint called the vertex. Lines that never cross and stay the same distance apart are parallel, and lines that cross to make right angles are perpendicular.","La geometrÃa tiene sus propios bloques de construcción. Un punto marca una ubicación. Una recta continúa para siempre en ambos sentidos, un rayo empieza en un extremo y sigue para siempre en un sentido, y un segmento tiene dos extremos. Un ángulo se forma donde dos rayos se encuentran en un extremo común llamado vértice. Las rectas que nunca se cruzan y mantienen la misma distancia son paralelas, y las que se cruzan formando ángulos rectos son perpendiculares."),vocabulary:[{term:A("Parallel","Paralelas"),definition:A("Lines that never cross and stay the same distance apart.","Rectas que nunca se cruzan y se mantienen a la misma distancia.")},{term:A("Perpendicular","Perpendiculares"),definition:A("Lines that cross to form right angles.","Rectas que se cruzan formando ángulos rectos.")}],activities:Z(["Draw and label a point, line, ray, segment, and angle.","Find parallel and perpendicular lines in the classroom.","Sort figures by the kinds of lines and angles they contain."],["Dibujar y rotular un punto, una recta, un rayo, un segmento y un ángulo.","Encontrar rectas paralelas y perpendiculares en el salón.","Clasificar figuras según los tipos de rectas y ángulos que contienen."]),resources:He,resourcesAssessmentMapping:A("Khan Academy videos on lines, rays, and angles support the identification tasks in the assessment.","Los videos de Khan Academy sobre rectas, rayos y ángulos apoyan las tareas de identificación de la evaluación."),aiTaskOptions:Z(["Ask the AI to describe a figure; identify each line, ray, segment, and angle and say if any lines are parallel or perpendicular."],["PÃdele a la IA que describa una figura; identifica cada recta, rayo, segmento y ángulo y di si hay rectas paralelas o perpendiculares."]),headerImageUrl:"/images/unit-4.png",headerImageAlt:A("Labeled points, lines, rays, and angles with parallel and perpendicular lines","Puntos, rectas, rayos y ángulos rotulados con rectas paralelas y perpendiculares"),assessment:We(34),project:Ke("Geometry Building Blocks Poster","Cartel de Bloques de Construcción Geométricos")},{week:35,unitId:4,title:A("Classify Shapes and Lines of Symmetry","Clasificar Figuras y Ejes de SimetrÃa"),unitName:Mn,standards:["SMP.3","SMP.7","4.G.2","4.G.3"],iCanStatements:Z(["I can classify two-dimensional figures by their sides and angles.","I can find lines of symmetry in a figure."],["Puedo clasificar figuras bidimensionales por sus lados y ángulos.","Puedo hallar ejes de simetrÃa en una figura."]),teacherObjectives:Z(["Classify triangles and quadrilaterals by their properties.","Identify and draw lines of symmetry."],["Clasificar triángulos y cuadriláteros por sus propiedades.","Identificar y dibujar ejes de simetrÃa."]),ageAppropriateExplanation:A("We can sort shapes by their sides and angles. Triangles can be right, acute, or obtuse, and quadrilaterals include squares, rectangles, rhombuses, and trapezoids. A line of symmetry splits a figure into two halves that match exactly when folded along the line. A square has 4 lines of symmetry, while a rectangle that is not a square has only 2.","Podemos clasificar las figuras por sus lados y ángulos. Los triángulos pueden ser rectángulos, acutángulos u obtusángulos, y los cuadriláteros incluyen cuadrados, rectángulos, rombos y trapecios. Un eje de simetrÃa divide una figura en dos mitades que coinciden exactamente al doblar por la lÃnea. Un cuadrado tiene 4 ejes de simetrÃa, mientras que un rectángulo que no es cuadrado tiene solo 2."),vocabulary:[{term:A("Line of symmetry","Eje de simetrÃa"),definition:A("A line that divides a figure into two matching halves.","Una lÃnea que divide una figura en dos mitades iguales.")},{term:A("Quadrilateral","Cuadrilátero"),definition:A("A two-dimensional shape with four straight sides.","Una figura bidimensional con cuatro lados rectos.")}],activities:Z(["Sort triangles and quadrilaterals by sides and angles.","Fold paper shapes to find all lines of symmetry.","Draw a figure and mark each line of symmetry."],["Clasificar triángulos y cuadriláteros por lados y ángulos.","Doblar figuras de papel para hallar todos los ejes de simetrÃa.","Dibujar una figura y marcar cada eje de simetrÃa."]),resources:He,resourcesAssessmentMapping:A("Khan Academy videos on classifying shapes and symmetry support the assessment.","Los videos de Khan Academy sobre clasificar figuras y simetrÃa apoyan la evaluación."),aiTaskOptions:Z(["Ask the AI to name a shape; classify it by sides and angles and tell how many lines of symmetry it has."],["PÃdele a la IA que nombre una figura; clasifÃcala por lados y ángulos y di cuántos ejes de simetrÃa tiene."]),headerImageUrl:"/images/unit-4.png",headerImageAlt:A("Classified triangles and quadrilaterals with lines of symmetry drawn","Triángulos y cuadriláteros clasificados con ejes de simetrÃa dibujados"),assessment:We(35),project:Ke("Symmetry Art Gallery","GalerÃa de Arte c
315on SimetrÃa")},{week:36,unitId:4,title:A("Unit 4 and Course Application and Review","Aplicación y Repaso de la Unidad 4 y del Curso"),unitName:Mn,standards:["SMP.1","SMP.2","SMP.3","SMP.6","SMP.7","SMP.8","4.MD.1","4.MD.2","4.MD.3","4.MD.4","4.MD.5","4.MD.6","4.MD.7","4.G.1","4.G.2","4.G.3"],iCanStatements:Z(["I can combine measurement, data, and geometry skills to solve problems.","I can explain my reasoning and check that my answers are reasonable."],["Puedo combinar destrezas de medición, datos y geometrÃa para resolver problemas.","Puedo explicar mi razonamiento y comprobar que mis respuestas son razonables."]),teacherObjectives:Z(["Integrate all Unit 4 skills in application tasks.","Lead a course-wide review celebrating the year's learning."],["Integrar todas las destrezas de la Unidad 4 en tareas de aplicación.","Dirigir un repaso de todo el curso celebrando el aprendizaje del año."]),ageAppropriateExplanation:A("This final week brings Unit 4 and the whole year together. Real projects combine skills: you might convert units, find area and perimeter, read a line plot, measure angles, and classify shapes â all in one task. Show your steps, explain your reasoning, and check that each answer makes sense. You have grown a lot as a mathematician this year.","Esta última semana integra la Unidad 4 y todo el año. Los proyectos reales combinan destrezas: podrÃas convertir unidades, hallar área y perÃmetro, leer un diagrama de puntos, medir ángulos y clasificar figuras, todo en una tarea. Muestra tus pasos, explica tu razonamiento y comprueba que cada respuesta tenga sentido. Has crecido mucho como matemático este año."),vocabulary:[{term:A("Reasonable","Razonable"),definition:A("An answer that makes sense and is close to an estimate.","Una respuesta que tiene sentido y está cerca de una estimación.")},{term:A("Justify","Justificar"),definition:A("To give reasons that show why an answer is correct.","Dar razones que muestran por qué una respuesta es correcta.")}],activities:Z(["Mixed-review problem set across all Unit 4 standards.","Design-and-build task using measurement, geometry, and data together.","Course reflection on growth across the four units."],["Conjunto de repaso mixto de todos los estándares de la Unidad 4.","Tarea de diseñar y construir usando medición, geometrÃa y datos a la vez.","Reflexión del curso sobre el crecimiento en las cuatro unidades."]),resources:He,resourcesAssessmentMapping:A("Khan Academy unit reviews for measurement, data, and geometry support the mixed-review set.","Los repasos de unidad de Khan Academy sobre medición, datos y geometrÃa apoyan el conjunto de repaso mixto."),aiTaskOptions:Z(["Ask the AI for a design project that uses a conversion, area or perimeter, an angle, and a classified shape; complete it and explain each step."],["PÃdele a la IA un proyecto de diseño que use una conversión, área o perÃmetro, un ángulo y una figura clasificada; complétalo y explica cada paso."]),headerImageUrl:"/images/unit-4.png",headerImageAlt:A("A capstone review combining measurement, angles, data, and shapes","Un repaso final que combina medición, ángulos, datos y figuras"),assessment:We(36),project:Ke("Unit 4 Measurement & Geometry Showcase","Exhibición de Medición y GeometrÃa de la Unidad 4")}],ra=DP.map(e=>{const t=EP[e.week];if(!t)throw new Error(`Missing lessonContent for week ${e.week}`);const r={...e,headerImageUrl:`/images/lesson-${e.week}.png`,story:t.story,extendedExplanation:t.extendedExplanation,activitySteps:t.activitySteps,aiPromptExample:t.aiPromptExample,project:{...e.project,steps:t.projectSteps,expectedProduct:t.expectedProduct},bibleConnection:UP[e.week]};{const s=e.week;r.practiceWorksheets=[{label:A("Workbook","Workbook"),url:`https://isea.gt/wa2027/K4/eng/g4w${s}.pdf`},{label:A("Hoja de trabajo","Hoja de trabajo"),url:`https://isea.gt/wa2027/K4/es/s${s}.pdf`,variant:"outline"}]}return r});function jt(e,t,{checkForDefaultPrevented:r=!0}={}){return function(c){if(e?.(c),r===!1||!c.defaultPrevented)return t?.(c)}}function OP(e,t){const r=S.createContext(t),s=d=>{const{children:m,...h}=d,f=S.useMemo(()=>h,Object.values(h));return o.jsx(r.Provider,{value:f,children:m})};s.displayName=e+"Provider";function c(d){const m=S.useContext(r);if(m)return m;if(t!==void 0)return t;throw new Error(`\`${d}\` must be used within \`${e}\``)}return[s,c]}function ss(e,t=[]){let r=[];function s(d,m){const h=S.createContext(m),f=r.length;r=[...r,m];const y=v=>{const{scope:x,children:k,...E}=v,C=x?.[e]?.[f]||h,N=S.useMemo(()=>E,Object.values(E));return o.jsx(C.Provider,{value:N,children:k})};y.displayName=d+"Provider";function b(v,x){const k=x?.[e]?.[f]||h,E=S.useContext(k);if(E)return E;if(m!==void 0)return m;throw new Error(`\`${v}\` must be used within \`${d}\``)}return[y,b]}const c=()=>{const d=r.map(m=>S.createContext(m));return function(h){const f=h?.[e]||d;return S.useMemo(()=>({[`__scope${e}`]:{...h,[e]:f}}),[h,f])}};return c.scopeName=e,[s,LP(c,...t)]}function LP(...e){const t=e[0];if(e.length===1)return t;const r=()=>{const s=e.map(c=>({useScope:c(),scopeName:c.scopeName}));return function(d){const m=s.reduce((h,{useScope:f,scopeName:y})=>{const v=f(d)[`__scope${y}`];return{...h,...v}},{});return S.useMemo(()=>({[`__scope${t.scopeName}`]:m}),[m])}};return r.scopeName=t.scopeName,r}var ts=globalThis?.document?S.useLayoutEffect:()=>{},zP=Bo[" useInsertionEffect ".trim().toString()]||ts;function is({prop:e,defaultProp:t,onChange:r=()=>{},caller:s}){const[c,d,m]=FP({defaultProp:t,onChange:r}),h=e!==void 0,f=h?e:c;{const b=S.useRef(e!==void 0);S.useEffect(()=>{const v=b.current;v!==h&&console.warn(`${s} is changing from ${v?"controlled":"uncontrolled"} to ${h?"controlled":"uncontrolled"}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`),b.current=h},[h,s])}const y=S.useCallback(b=>{if(h){const v=$P(b)?b(e):b;v!==e&&m.current?.(v)}else d(b)},[h,e,d,m]);return[f,y]}function FP({defaultProp:e,onChange:t}){const[r,s]=S.useState(e),c=S.useRef(r),d=S.useRef(t);return zP(()=>{d.current=t},[t]),S.useEffect(()=>{c.current!==r&&(d.current?.(r),c.current=r)},[r,c]),[r,s,d]}function $P(e){return typeof e=="function"}function dx(e,t){if(typeof e=="function")return e(t);
vendor: 15,016 bytes, line 315
315e!=null&&(e.current=t)}function xf(...e){return t=>{let r=!1;const s=e.map(c=>{const d=dx(c,t);return!r&&typeof d=="function"&&(r=!0),d});if(r)return()=>{for(let c=0;c<s.length;c++){const d=s[c];typeof d=="function"?d():dx(e[c],null)}}}}function ha(...e){return S.useCallback(xf(...e),e)}function ed(e){const t=BP(e),r=S.forwardRef((s,c)=>{const{children:d,...m}=s,h=S.Children.toArray(d),f=h.find(WP);if(f){const y=f.props.children,b=h.map(v=>v===f?S.Children.count(y)>1?S.Children.only(null):S.isValidElement(y)?y.props.children:null:v);return o.jsx(t,{...m,ref:c,children:S.isValidElement(y)?S.cloneElement(y,void 0,b):null})}return o.jsx(t,{...m,ref:c,children:d})});return r.displayName=`${e}.Slot`,r}function BP(e){const t=S.forwardRef((r,s)=>{const{children:c,...d}=r;if(S.isValidElement(c)){const m=KP(c),h=GP(d,c.props);return c.type!==S.Fragment&&(h.ref=s?xf(s,m):m),S.cloneElement(c,h)}return S.Children.count(c)>1?S.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var VP=Symbol("radix.slottable");function WP(e){return S.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===VP}function GP(e,t){const r={...t};for(const s in t){const c=e[s],d=t[s];/^on[A-Z]/.test(s)?c&&d?r[s]=(...h)=>{const f=d(...h);return c(...h),f}:c&&(r[s]=c):s==="style"?r[s]={...c,...d}:s==="className"&&(r[s]=[c,d].filter(Boolean).join(" "))}return{...e,...r}}function KP(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,r=t&&"isReactWarning"in t&&t.isReactWarning;return r?e.ref:(t=Object.getOwnPropertyDescriptor(e,"ref")?.get,r=t&&"isReactWarning"in t&&t.isReactWarning,r?e.props.ref:e.props.ref||e.ref)}var HP=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],bt=HP.reduce((e,t)=>{const r=ed(`Primitive.${t}`),s=S.forwardRef((c,d)=>{const{asChild:m,...h}=c,f=m?r:t;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),o.jsx(f,{...h,ref:d})});return s.displayName=`Primitive.${t}`,{...e,[t]:s}},{});function QP(e,t){e&&wd.flushSync(()=>e.dispatchEvent(t))}function YP(e,t){return S.useReducer((r,s)=>t[r][s]??r,e)}var os=e=>{const{present:t,children:r}=e,s=XP(t),c=typeof r=="function"?r({present:s.isPresent}):S.Children.only(r),d=ha(s.ref,ZP(c));return typeof r=="function"||s.isPresent?S.cloneElement(c,{ref:d}):null};os.displayName="Presence";function XP(e){const[t,r]=S.useState(),s=S.useRef(null),c=S.useRef(e),d=S.useRef("none"),m=e?"mounted":"unmounted",[h,f]=YP(m,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return S.useEffect(()=>{const y=vc(s.current);d.current=h==="mounted"?y:"none"},[h]),ts(()=>{const y=s.current,b=c.current;if(b!==e){const x=d.current,k=vc(y);e?f("MOUNT"):k==="none"||y?.display==="none"?f("UNMOUNT"):f(b&&x!==k?"ANIMATION_OUT":"UNMOUNT"),c.current=e}},[e,f]),ts(()=>{if(t){let y;const b=t.ownerDocument.defaultView??window,v=k=>{const C=vc(s.current).includes(CSS.escape(k.animationName));if(k.target===t&&C&&(f("ANIMATION_END"),!c.current)){const N=t.style.animationFillMode;t.style.animationFillMode="forwards",y=b.setTimeout(()=>{t.style.animationFillMode==="forwards"&&(t.style.animationFillMode=N)})}},x=k=>{k.target===t&&(d.current=vc(s.current))};return t.addEventListener("animationstart",x),t.addEventListener("animationcancel",v),t.addEventListener("animationend",v),()=>{b.clearTimeout(y),t.removeEventListener("animationstart",x),t.removeEventListener("animationcancel",v),t.removeEventListener("animationend",v)}}else f("ANIMATION_END")},[t,f]),{isPresent:["mounted","unmountSuspended"].includes(h),ref:S.useCallback(y=>{s.current=y?getComputedStyle(y):null,r(y)},[])}}function vc(e){return e?.animationName||"none"}function ZP(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,r=t&&"isReactWarning"in t&&t.isReactWarning;return r?e.ref:(t=Object.getOwnPropertyDescriptor(e,"ref")?.get,r=t&&"isReactWarning"in t&&t.isReactWarning,r?e.props.ref:e.props.ref||e.ref)}var JP=Bo[" useId ".trim().toString()]||(()=>{}),e_=0;function Xr(e){const[t,r]=S.useState(JP());return ts(()=>{r(s=>s??String(e_++))},[e]),t?`radix-${t}`:""}var Pd="Collapsible",[t_,k2]=ss(Pd),[a_,wf]=t_(Pd),S2=S.forwardRef((e,t)=>{const{__scopeCollapsible:r,open:s,defaultOpen:c,disabled:d,onOpenChange:m,...h}=e,[f,y]=is({prop:s,defaultProp:c??!1,onChange:m,caller:Pd});return o.jsx(a_,{scope:r,disabled:d,contentId:Xr(),open:f,onOpenToggle:S.useCallback(()=>y(b=>!b),[y]),children:o.jsx(bt.div,{"data-state":jf(f),"data-disabled":d?"":void 0,...h,ref:t})})});S2.displayName=Pd;var C2="CollapsibleTrigger",kf=S.forwardRef((e,t)=>{const{__scopeCollapsible:r,...s}=e,c=wf(C2,r);return o.jsx(bt.button,{type:"button","aria-controls":c.contentId,"aria-expanded":c.open||!1,"data-state":jf(c.open),"data-disabled":c.disabled?"":void 0,disabled:c.disabled,...s,ref:t,onClick:jt(e.onClick,c.onOpenToggle)})});kf.displayName=C2;var Sf="CollapsibleContent",Cf=S.forwardRef((e,t)=>{const{forceMount:r,...s}=e,c=wf(Sf,e.__scopeCollapsible);return o.jsx(os,{present:r||c.open,children:({present:d})=>o.jsx(n_,{...s,ref:t,present:d})})});Cf.displayName=Sf;var n_=S.forwardRef((e,t)=>{const{__scopeCollapsible:r,present:s,children:c,...d}=e,m=wf(Sf,r),[h,f]=S.useState(s),y=S.useRef(null),b=ha(t,y),v=S.useRef(0),x=v.current,k=S.useRef(0),E=k.current,C=m.open||h,N=S.useRef(C),q=S.useRef(void 0);return S.useEffect(()=>{const R=requestAnimationFrame(()=>N.current=!1);return()=>cancelAnimationFrame(R)},[]),ts(()=>{const R=y.current;if(R){q.current=q.current||{transitionDuration:R.style.transitionDuration,animationName:R.style.animationName},R.style.transitionDuration="0s",R.style.animationName="none";const I=R.getBoundingClientRect();v.current=I.height,k.current=I.width,N.current||(R.style.transitionDuration=q.current.transitionDuration,R.style.animationName=q.current.animationName),f(s)}},[m.open,s]),o.jsx(bt.div,{"data-state":jf(m.open),"data-disabled":m.disabled?"":void 0,id:m.contentId,hidden:!C,...d,ref:b,style:{"--radix-collapsible-content-height":x?`${x}px`:void 0,"--radix-collapsible-content-width":E?`${E}px`:void 0,...e.style},children:C&&c})});function jf(e){return e?"open":"closed"}var j2=S2,r_=kf,s_=Cf;const i_=j2,o_=kf,l_=Cf;function A2(e){var t,r,s="";if(typeof e=="string"||typeof e=="number")s+=e;else if(typeof e=="object")if(Array.isArray(e)){var c=e.length;for(t=0;t<c;t++)e[t]&&(r=A2(e[t]))&&(s&&(s+=" "),s+=r)}else for(r in e)e[r]&&(s&&(s+=" "),s+=r);return s}function q2(){for(var e,t,r=0,s="",c=arguments.length;r<c;r++)(e=arguments[r])&&(t=A2(e))&&(s&&(s+=" "),s+=t);return s}const c_=(e,t)=>{const r=new Array(e.length+t.length);for(let s=0;s<e.length;s++)r[s]=e[s];for(let s=0;s<t.length;s++)r[e.length+s]=t[s];return r},d_=(e,t)=>({classGroupId:e,validator:t}),E2=(e=new Map,t=null,r)=>({nextPart:e,validators:t,classGroupId:r}),td="-",ux=[],u_="arbitrary..",m_=e=>{const t=h_(e),{conflictingClassGroups:r,conflictingClassGroupModifiers:s}=e;return{getClassGroupId:m=>{if(m.startsWith("[")&&m.endsWith("]"))return p_(m);const h=m.split(td),f=h[0]===""&&h.length>1?1:0;return N2(h,f,t)},getConflictingClassGroupIds:(m,h)=>{if(h){const f=s[m],y=r[m];return f?y?c_(y,f):f:y||ux}return r[m]||ux}}},N2=(e,t,r)=>{if(e.length-t===0)return r.classGroupId;const c=e[t],d=r.nextPart.get(c);if(d){const y=N2(e,t+1,d);if(y)return y}const m=r.validators;if(m===null)return;const h=t===0?e.join(td):e.slice(t).join(td),f=m.length;for(let y=0;y<f;y++){const b=m[y];if(b.validator(h))return b.classGroupId}},p_=e=>e.slice(1,-1).indexOf(":")===-1?void 0:(()=>{const t=e.slice(1,-1),r=t.indexOf(":"),s=t.slice(0,r);return s?u_+s:void 0})(),h_=e=>{const{theme:t,classGroups:r}=e;return f_(r,t)},f_=(e,t)=>{const r=E2();for(const s in e){const c=e[s];Af(c,r,s,t)}return r},Af=(e,t,r,s)=>{const c=e.length;for(let d=0;d<c;d++){const m=e[d];g_(m,t,r,s)}},g_=(e,t,r,s)=>{if(typeof e=="string"){y_(e,t,r);return}if(typeof e=="function"){b_(e,t,r,s);return}v_(e,t,r,s)},y_=(e,t,r)=>{const s=e===""?t:T2(t,e);s.classGroupId=r},b_=(e,t,r,s)=>{if(x_(e)){Af(e(s),t,r,s);return}t.validators===null&&(t.validators=[]),t.validators.push(d_(r,e))},v_=(e,t,r,s)=>{const c=Object.entries(e),d=c.length;for(let m=0;m<d;m++){const[h,f]=c[m];Af(f,T2(t,h),r,s)}},T2=(e,t)=>{let r=e;const s=t.split(td),c=s.length;for(let d=0;d<c;d++){const m=s[d];let h=r.nextPart.get(m);h||(h=E2(),r.nextPart.set(m,h)),r=h}return r},x_=e=>"isThemeGetter"in e&&e.isThemeGetter===!0,w_=e=>{if(e<1)return{get:()=>{},set:()=>{}};let t=0,r=Object.create(null),s=Object.create(null);const c=(d,m)=>{r[d]=m,t++,t>e&&(t=0,s=r,r=Object.create(null))};return{get(d){let m=r[d];if(m!==void 0)return m;if((m=s[d])!==void 0)return c(d,m),m},set(d,m){d in r?r[d]=m:c(d,m)}}},bh="!",mx=":",k_=[],px=(e,t,r,s,c)=>({modifiers:e,hasImportantModifier:t,baseClassName:r,maybePostfixModifierPosition:s,isExternal:c}),S_=e=>{const{prefix:t,experimentalParseClassName:r}=e;let s=c=>{const d=[];let m=0,h=0,f=0,y;const b=c.length;for(let C=0;C<b;C++){const N=c[C];if(m===0&&h===0){if(N===mx){d.push(c.slice(f,C)),f=C+1;continue}if(N==="/"){y=C;continue}}N==="["?m++:N==="]"?m--:N==="("?h++:N===")"&&h--}const v=d.length===0?c:c.slice(f);let x=v,k=!1;v.endsWith(bh)?(x=v.slice(0,-1),k=!0):v.startsWith(bh)&&(x=v.slice(1),k=!0);const E=y&&y>f?y-f:void 0;return px(d,k,x,E)};if(t){const c=t+mx,d=s;s=m=>m.startsWith(c)?d(m.slice(c.length)):px(k_,!1,m,void 0,!0)}if(r){const c=s;s=d=>r({className:d,parseClassName:c})}return s},C_=e=>{const t=new Map;return e.orderSensitiveModifiers.forEach((r,s)=>{t.set(r,1e6+s)}),r=>{const s=[];let c=[];for(let d=0;d<r.length;d++){const m=r[d],h=m[0]==="[",f=t.has(m);h||f?(c.length>0&&(c.sort(),s.push(...c),c=[]),s.push(m)):c.push(m)}return c.length>0&&(c.sort(),s.push(...c)),s}},j_=e=>({cache:w_(e.cacheSize),parseClassName:S_(e),sortModifiers:C_(e),...m_(e)}),A_=/\s+/,q_=(e,t)=>{const{parseClassName:r,getClassGroupId:s,getConflictingClassGroupIds:c,sortModifiers:d}=t,m=[],h=e.trim().split(A_);let f="";for(let y=h.length-1;y>=0;y-=1){const b=h[y],{isExternal:v,modifiers:x,hasImportantModifier:k,baseClassName:E,maybePostfixModifierPosition:C}=r(b);if(v){f=b+(f.length>0?" "+f:f);continue}let N=!!C,q=s(N?E.substring(0,C):E);if(!q){if(!N){f=b+(f.length>0?" "+f:f);continue}if(q=s(E),!q){f=b+(f.length>0?" "+f:f);continue}N=!1}const R=x.length===0?"":x.length===1?x[0]:d(x).join(":"),I=k?R+bh:R,$=I+q;if(m.indexOf($)>-1)continue;m.push($);const z=c(q,N);for(let G=0;G<z.length;++G){const L=z[G];m.push(I+L)}f=b+(f.length>0?" "+f:f)}return f},E_=(...e)=>{let t=0,r,s,c="";for(;t<e.length;)(r=e[t++])&&(s=M2(r))&&(c&&(c+=" "),c+=s);return c},M2=e=>{if(typeof e=="string")return e;let t,r="";for(let s=0;s<e.length;s++)e[s]&&(t=M2(e[s]))&&(r&&(r+=" "),r+=t);return r},N_=(e,...t)=>{let r,s,c,d;const m=f=>{const y=t.reduce((b,v)=>v(b),e());return r=j_(y),s=r.cache.get,c=r.cache.set,d=h,h(f)},h=f=>{const y=s(f);if(y)return y;const b=q_(f,r);return c(f,b),b};return d=m,(...f)=>d(E_(...f))},T_=[],_t=e=>{const t=r=>r[e]||T_;return t.isThemeGetter=!0,t},P2=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,_2=/^\((?:(\w[\w-]*):)?(.+)\)$/i,M_=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,P_=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,__=/\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$/,R_=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,I_=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,U_=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,ir=e=>M_.test(e),Le=e=>!!e&&!Number.isNaN(Number(e)),or=e=>!!e&&Number.isInteger(Number(e)),Ep=e=>e.endsWith("%")&&Le(e.slice(0,-1)),Pn=e=>P_.test(e),R2=()=>!0,D_=e=>__.test(e)&&!R_.test(e),qf=()=>!1,O_=e=>I_.test(e),L_=e=>U_.test(e),z_=e=>!be(e)&&!xe(e),F_=e=>kr(e,D2,qf),be=e=>P2.test(e),Br=e=>kr(e,O2,D_),hx=e=>kr(e,Q_,Le),$_=e=>kr(e,z2,R2),B_=e=>kr(e,L2,qf),fx=e=>kr(e,I2,qf),V_=e=>kr(e,U2,L_),xc=e=>kr(e,F2,O_),xe=e=>_2.test(e),bo=e=>ls(e,O2),W_=e=>ls(e,L2),gx=e=>ls(e,I2),G_=e=>ls(e,D2),K_=e=>ls(e,U2),wc=e=>ls(e,F2,!0),H_=e=>ls(e,z2,!0),kr=(e,t,r)=>{const s=P2.exec(e);return s?s[1]?t(s[1]):r(s[2]):!1},ls=(e,t,r=!1)=>{const s=_2.exec(e);return s?s[1]?t(s[1]):r:!1},I2=e=>e==="position"||e==="percentage",U2=e=>e==="image"||e==="url",D2=e=>e==="length"||e==="size"||e==="bg-size",O2=e=>e==="length",Q_=e=>e==="number",L2=e=>e==="family-name",z2=e=>e==="number"||e==="weight",F2=e=>e==="shadow",Y_=()=>{const e=_t("color"),t=_t("font"),r=_t("text"),s=_t("font-weight"),c=_t("tracking"),d=_t("leading"),m=_t("breakpoint"),h=_t("container"),f=_t("spacing"),y=_t("radius"),b=_t("shadow"),v=_t("inset-shadow"),x=_t("text-shadow"),k=_t("drop-shadow"),E=_t("blur"),C=_t("perspective"),N=_t("aspect"),q=_t("ease"),R=_t("animate"),I=()=>["auto","avoid","all","avoid-page","page","left","right","column"],$=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],z=()=>[...$(),xe,be],G=()=>["auto","hidden","clip","visible","scroll"],L=()=>["auto","contain","none"],D=()=>[xe,be,f],ee=()=>[ir,"full","auto",...D()],ne=()=>[or,"none","subgrid",xe,be],me=()=>["auto",{span:["full",or,xe,be]},or,xe,be],pe=()=>[or,"auto",xe,be],Re=()=>["auto","min","max","fr",xe,be],Ee=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],Ae=()=>["start","end","center","stretch","center-safe","end-safe"],V=()=>["auto",...D()],Y=()=>[ir,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...D()],ce=()=>[ir,"screen","full","dvw","lvw","svw","min","max","fit",...D()],de=()=>[ir,"screen","full","lh","dvh","lvh","svh","min","max","fit",...D()],T=()=>[e,xe,be],W=()=>[...$(),gx,fx,{position:[xe,be]}],ie=()=>["no-repeat",{repeat:["","x","y","space","round"]}],oe=()=>["auto","cover","contain",G_,F_,{size:[xe,be]}],we=()=>[Ep,bo,Br],fe=()=>["","none","full",y,xe,be],he=()=>["",Le,bo,Br],ze=()=>["solid","dashed","dotted","double"],Ie=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],et=()=>[Le,Ep,gx,fx],ia=()=>["","none",E,xe,be],oa=()=>["none",Le,xe,be],Ea=()=>["none",Le,xe,be],za=()=>[Le,xe,be],Xa=()=>[ir,"full",...D()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[Pn],breakpoint:[Pn],color:[R2],container:[Pn],"drop-shadow":[Pn],ease:["in","out","in-out"],font:[z_],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[Pn],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[Pn],shadow:[Pn],spacing:["px",Le],text:[Pn],"text-shadow":[Pn],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",ir,be,xe,N]}
vendor: 6,132 bytes, line 315
315],container:["container"],columns:[{columns:[Le,be,xe,h]}],"break-after":[{"break-after":I()}],"break-before":[{"break-before":I()}],"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:z()}],overflow:[{overflow:G()}],"overflow-x":[{"overflow-x":G()}],"overflow-y":[{"overflow-y":G()}],overscroll:[{overscroll:L()}],"overscroll-x":[{"overscroll-x":L()}],"overscroll-y":[{"overscroll-y":L()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:ee()}],"inset-x":[{"inset-x":ee()}],"inset-y":[{"inset-y":ee()}],start:[{"inset-s":ee(),start:ee()}],end:[{"inset-e":ee(),end:ee()}],"inset-bs":[{"inset-bs":ee()}],"inset-be":[{"inset-be":ee()}],top:[{top:ee()}],right:[{right:ee()}],bottom:[{bottom:ee()}],left:[{left:ee()}],visibility:["visible","invisible","collapse"],z:[{z:[or,"auto",xe,be]}],basis:[{basis:[ir,"full","auto",h,...D()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[Le,ir,"auto","initial","none",be]}],grow:[{grow:["",Le,xe,be]}],shrink:[{shrink:["",Le,xe,be]}],order:[{order:[or,"first","last","none",xe,be]}],"grid-cols":[{"grid-cols":ne()}],"col-start-end":[{col:me()}],"col-start":[{"col-start":pe()}],"col-end":[{"col-end":pe()}],"grid-rows":[{"grid-rows":ne()}],"row-start-end":[{row:me()}],"row-start":[{"row-start":pe()}],"row-end":[{"row-end":pe()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":Re()}],"auto-rows":[{"auto-rows":Re()}],gap:[{gap:D()}],"gap-x":[{"gap-x":D()}],"gap-y":[{"gap-y":D()}],"justify-content":[{justify:[...Ee(),"normal"]}],"justify-items":[{"justify-items":[...Ae(),"normal"]}],"justify-self":[{"justify-self":["auto",...Ae()]}],"align-content":[{content:["normal",...Ee()]}],"align-items":[{items:[...Ae(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...Ae(),{baseline:["","last"]}]}],"place-content":[{"place-content":Ee()}],"place-items":[{"place-items":[...Ae(),"baseline"]}],"place-self":[{"place-self":["auto",...Ae()]}],p:[{p:D()}],px:[{px:D()}],py:[{py:D()}],ps:[{ps:D()}],pe:[{pe:D()}],pbs:[{pbs:D()}],pbe:[{pbe:D()}],pt:[{pt:D()}],pr:[{pr:D()}],pb:[{pb:D()}],pl:[{pl:D()}],m:[{m:V()}],mx:[{mx:V()}],my:[{my:V()}],ms:[{ms:V()}],me:[{me:V()}],mbs:[{mbs:V()}],mbe:[{mbe:V()}],mt:[{mt:V()}],mr:[{mr:V()}],mb:[{mb:V()}],ml:[{ml:V()}],"space-x":[{"space-x":D()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":D()}],"space-y-reverse":["space-y-reverse"],size:[{size:Y()}],"inline-size":[{inline:["auto",...ce()]}],"min-inline-size":[{"min-inline":["auto",...ce()]}],"max-inline-size":[{"max-inline":["none",...ce()]}],"block-size":[{block:["auto",...de()]}],"min-block-size":[{"min-block":["auto",...de()]}],"max-block-size":[{"max-block":["none",...de()]}],w:[{w:[h,"screen",...Y()]}],"min-w":[{"min-w":[h,"screen","none",...Y()]}],"max-w":[{"max-w":[h,"screen","none","prose",{screen:[m]},...Y()]}],h:[{h:["screen","lh",...Y()]}],"min-h":[{"min-h":["screen","lh","none",...Y()]}],"max-h":[{"max-h":["screen","lh",...Y()]}],"font-size":[{text:["base",r,bo,Br]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[s,H_,$_]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",Ep,be]}],"font-family":[{font:[W_,B_,t]}],"font-features":[{"font-features":[be]}],"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:[c,xe,be]}],"line-clamp":[{"line-clamp":[Le,"none",xe,hx]}],leading:[{leading:[d,...D()]}],"list-image":[{"list-image":["none",xe,be]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",xe,be]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:T()}],"text-color":[{text:T()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...ze(),"wavy"]}],"text-decoration-thickness":[{decoration:[Le,"from-font","auto",xe,Br]}],"text-decoration-color":[{decoration:T()}],"underline-offset":[{"underline-offset":[Le,"auto",xe,be]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:D()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",xe,be]}],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",xe,be]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:W()}],"bg-repeat":[{bg:ie()}],"bg-size":[{bg:oe()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},or,xe,be],radial:["",xe,be],conic:[or,xe,be]},K_,V_]}],"bg-color":[{bg:T()}],"gradient-from-pos":[{from:we()}
vendor: 6,735 bytes, line 315
315],"gradient-via-pos":[{via:we()}],"gradient-to-pos":[{to:we()}],"gradient-from":[{from:T()}],"gradient-via":[{via:T()}],"gradient-to":[{to:T()}],rounded:[{rounded:fe()}],"rounded-s":[{"rounded-s":fe()}],"rounded-e":[{"rounded-e":fe()}],"rounded-t":[{"rounded-t":fe()}],"rounded-r":[{"rounded-r":fe()}],"rounded-b":[{"rounded-b":fe()}],"rounded-l":[{"rounded-l":fe()}],"rounded-ss":[{"rounded-ss":fe()}],"rounded-se":[{"rounded-se":fe()}],"rounded-ee":[{"rounded-ee":fe()}],"rounded-es":[{"rounded-es":fe()}],"rounded-tl":[{"rounded-tl":fe()}],"rounded-tr":[{"rounded-tr":fe()}],"rounded-br":[{"rounded-br":fe()}],"rounded-bl":[{"rounded-bl":fe()}],"border-w":[{border:he()}],"border-w-x":[{"border-x":he()}],"border-w-y":[{"border-y":he()}],"border-w-s":[{"border-s":he()}],"border-w-e":[{"border-e":he()}],"border-w-bs":[{"border-bs":he()}],"border-w-be":[{"border-be":he()}],"border-w-t":[{"border-t":he()}],"border-w-r":[{"border-r":he()}],"border-w-b":[{"border-b":he()}],"border-w-l":[{"border-l":he()}],"divide-x":[{"divide-x":he()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":he()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...ze(),"hidden","none"]}],"divide-style":[{divide:[...ze(),"hidden","none"]}],"border-color":[{border:T()}],"border-color-x":[{"border-x":T()}],"border-color-y":[{"border-y":T()}],"border-color-s":[{"border-s":T()}],"border-color-e":[{"border-e":T()}],"border-color-bs":[{"border-bs":T()}],"border-color-be":[{"border-be":T()}],"border-color-t":[{"border-t":T()}],"border-color-r":[{"border-r":T()}],"border-color-b":[{"border-b":T()}],"border-color-l":[{"border-l":T()}],"divide-color":[{divide:T()}],"outline-style":[{outline:[...ze(),"none","hidden"]}],"outline-offset":[{"outline-offset":[Le,xe,be]}],"outline-w":[{outline:["",Le,bo,Br]}],"outline-color":[{outline:T()}],shadow:[{shadow:["","none",b,wc,xc]}],"shadow-color":[{shadow:T()}],"inset-shadow":[{"inset-shadow":["none",v,wc,xc]}],"inset-shadow-color":[{"inset-shadow":T()}],"ring-w":[{ring:he()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:T()}],"ring-offset-w":[{"ring-offset":[Le,Br]}],"ring-offset-color":[{"ring-offset":T()}],"inset-ring-w":[{"inset-ring":he()}],"inset-ring-color":[{"inset-ring":T()}],"text-shadow":[{"text-shadow":["none",x,wc,xc]}],"text-shadow-color":[{"text-shadow":T()}],opacity:[{opacity:[Le,xe,be]}],"mix-blend":[{"mix-blend":[...Ie(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":Ie()}],"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":[Le]}],"mask-image-linear-from-pos":[{"mask-linear-from":et()}],"mask-image-linear-to-pos":[{"mask-linear-to":et()}],"mask-image-linear-from-color":[{"mask-linear-from":T()}],"mask-image-linear-to-color":[{"mask-linear-to":T()}],"mask-image-t-from-pos":[{"mask-t-from":et()}],"mask-image-t-to-pos":[{"mask-t-to":et()}],"mask-image-t-from-color":[{"mask-t-from":T()}],"mask-image-t-to-color":[{"mask-t-to":T()}],"mask-image-r-from-pos":[{"mask-r-from":et()}],"mask-image-r-to-pos":[{"mask-r-to":et()}],"mask-image-r-from-color":[{"mask-r-from":T()}],"mask-image-r-to-color":[{"mask-r-to":T()}],"mask-image-b-from-pos":[{"mask-b-from":et()}],"mask-image-b-to-pos":[{"mask-b-to":et()}],"mask-image-b-from-color":[{"mask-b-from":T()}],"mask-image-b-to-color":[{"mask-b-to":T()}],"mask-image-l-from-pos":[{"mask-l-from":et()}],"mask-image-l-to-pos":[{"mask-l-to":et()}],"mask-image-l-from-color":[{"mask-l-from":T()}],"mask-image-l-to-color":[{"mask-l-to":T()}],"mask-image-x-from-pos":[{"mask-x-from":et()}],"mask-image-x-to-pos":[{"mask-x-to":et()}],"mask-image-x-from-color":[{"mask-x-from":T()}],"mask-image-x-to-color":[{"mask-x-to":T()}],"mask-image-y-from-pos":[{"mask-y-from":et()}],"mask-image-y-to-pos":[{"mask-y-to":et()}],"mask-image-y-from-color":[{"mask-y-from":T()}],"mask-image-y-to-color":[{"mask-y-to":T()}],"mask-image-radial":[{"mask-radial":[xe,be]}],"mask-image-radial-from-pos":[{"mask-radial-from":et()}],"mask-image-radial-to-pos":[{"mask-radial-to":et()}],"mask-image-radial-from-color":[{"mask-radial-from":T()}],"mask-image-radial-to-color":[{"mask-radial-to":T()}],"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":$()}],"mask-image-conic-pos":[{"mask-conic":[Le]}],"mask-image-conic-from-pos":[{"mask-conic-from":et()}],"mask-image-conic-to-pos":[{"mask-conic-to":et()}],"mask-image-conic-from-color":[{"mask-conic-from":T()}],"mask-image-conic-to-color":[{"mask-conic-to":T()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:W()}],"mask-repeat":[{mask:ie()}],"mask-size":[{mask:oe()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",xe,be]}],filter:[{filter:["","none",xe,be]}],blur:[{blur:ia()}],brightness:[{brightness:[Le,xe,be]}],contrast:[{contrast:[Le,xe,be]}],"drop-shadow":[{"drop-shadow":["","none",k,wc,xc]}],"drop-shadow-color":[{"drop-shadow":T()}],grayscale:[{grayscale:["",Le,xe,be]}],"hue-rotate":[{"hue-rotate":[Le,xe,be]}],invert:[{invert:["",Le,xe,be]}],saturate:[{saturate:[Le,xe,be]}],sepia:[{sepia:["",Le,xe,be]}],"backdrop-filter":[{"backdrop-filter":["","none",xe,be]}],"backdrop-blur":[{"backdrop-blur":ia()}],"backdrop-brightness":[{"backdrop-brightness":[Le,xe,be]}],"backdrop-contrast":[{"backdrop-contrast":[Le,xe,be]}],"backdrop-grayscale":[{"backdrop-grayscale":["",Le,xe,be]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[Le,xe,be]}],"backdrop-invert":[{"backdrop-invert":["",Le,xe,be]}],"backdrop-opacity":[{"backdrop-opacity":[Le,xe,be]}],"backdrop-saturate":[{"backdrop-saturate":[Le,xe,be]}],"backdrop-sepia":[{"backdrop-sepia":["",Le,xe,be]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":D()}],"border-spacing-x":[{"border-spacing-x":D()}],"border-spacing-y":[{"border-spacing-y":D()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",xe,be]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[Le,"initial",xe,be]}],ease:[{ease:["linear","initial",q,xe,be]}],delay:[{delay:[Le,xe,be]}],animate:[{animate:["none",R,xe,be]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[C,xe,be]}],"perspective-origin":[{"perspective-origin":z()}],rotate:[{rotate:oa()}],"rotate-x":[{"rotate-x":oa()}
315],"rotate-y":[{"rotate-y":oa()}],"rotate-z":[{"rotate-z":oa()}],scale:[{scale:Ea()}],"scale-x":[{"scale-x":Ea()}],"scale-y":[{"scale-y":Ea()}],"scale-z":[{"scale-z":Ea()}],"scale-3d":["scale-3d"],skew:[{skew:za()}],"skew-x":[{"skew-x":za()}],"skew-y":[{"skew-y":za()}],transform:[{transform:[xe,be,"","none","gpu","cpu"]}],"transform-origin":[{origin:z()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:Xa()}],"translate-x":[{"translate-x":Xa()}],"translate-y":[{"translate-y":Xa()}],"translate-z":[{"translate-z":Xa()}],"translate-none":["translate-none"],accent:[{accent:T()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:T()}],"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",xe,be]}],"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":D()}],"scroll-mx":[{"scroll-mx":D()}],"scroll-my":[{"scroll-my":D()}],"scroll-ms":[{"scroll-ms":D()}],"scroll-me":[{"scroll-me":D()}],"scroll-mbs":[{"scroll-mbs":D()}],"scroll-mbe":[{"scroll-mbe":D()}],"scroll-mt":[{"scroll-mt":D()}],"scroll-mr":[{"scroll-mr":D()}],"scroll-mb":[{"scroll-mb":D()}],"scroll-ml":[{"scroll-ml":D()}],"scroll-p":[{"scroll-p":D()}],"scroll-px":[{"scroll-px":D()}],"scroll-py":[{"scroll-py":D()}],"scroll-ps":[{"scroll-ps":D()}],"scroll-pe":[{"scroll-pe":D()}],"scroll-pbs":[{"scroll-pbs":D()}],"scroll-pbe":[{"scroll-pbe":D()}],"scroll-pt":[{"scroll-pt":D()}],"scroll-pr":[{"scroll-pr":D()}],"scroll-pb":[{"scroll-pb":D()}],"scroll-pl":[{"scroll-pl":D()}],"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",xe,be]}],fill:[{fill:["none",...T()]}],"stroke-w":[{stroke:[Le,bo,Br,hx]}],stroke:[{stroke:["none",...T()]}],"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"]}},X_=N_(Y_);function Ye(...e){return X_(q2(e))}function Z_(){const{isSignedIn:e}=fa(),{data:t}=kN({query:{enabled:!!e,queryKey:Ro()}}),[r,s]=_.useState([]);return _.useEffect(()=>{if(!e)try{const c=JSON.parse(localStorage.getItem("completed-lessons")||"[]");Array.isArray(c)&&s(c.filter(d=>typeof d=="number"))}catch{}},[e]),e?(t??[]).filter(c=>!!c.completedAt).map(c=>c.week):r}function yx({className:e}){const[t]=wr(),{lang:r}=_e(),{t:s}=sa(),c=Z_(),{isSignedIn:d}=fa(),{data:m}=mn({query:{queryKey:Ht(),enabled:!!d}}),h=m?.groupWeekCount??ra.length;return o.jsxs("aside",{className:Ye("overflow-y-auto",e),children:[o.jsxs("div",{className:"mb-6 px-2",children:[o.jsx("h2",{className:"font-serif text-lg font-semibold text-primary mb-1",children:r==="en"?"Course Outline":"Esquema del Curso"}),o.jsxs("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[o.jsx(mi,{className:"h-4 w-4"}),o.jsxs("span",{children:[c.length," / ",h," ",r==="en"?"completed":"completado"]})]}),o.jsx("div",{className:"w-full bg-secondary/20 h-2 mt-2 rounded-full overflow-hidden",children:o.jsx("div",{className:"bg-accent h-full transition-all duration-500",style:{width:`${Math.min(100,c.length/Math.max(1,h)*100)}%`}})})]}),o.jsx("nav",{className:"space-y-2 flex-1",children:Qo.map(f=>{const y=ra.filter(v=>v.unitId===f.id),b=t.startsWith(`/units/${f.id}`)||y.some(v=>t===`/lesson/${v.week}`);return o.jsxs(i_,{defaultOpen:b||f.id===1,className:"w-full",children:[o.jsxs(o_,{className:"flex items-center justify-between w-full p-2 rounded-md hover:bg-secondary/10 transition-colors text-left group",children:[o.jsxs("span",{className:"font-medium text-sm text-foreground group-hover:text-primary transition-colors line-clamp-1",children:["Unit ",f.id,": ",s(f.title)]}),o.jsx(f2,{className:"h-4 w-4 text-muted-foreground transition-transform group-data-[state=closed]:-rotate-90"})]}),o.jsx(l_,{className:"pl-4 pr-2 py-1 space-y-1",children:y.map(v=>{const x=t===`/lesson/${v.week}`,k=c.includes(v.week);return o.jsxs(Te,{href:`/lesson/${v.week}`,className:Ye("flex items-center gap-2 px-3 py-2 text-sm rounded-md transition-colors",x?"bg-primary/10 text-primary font-medium":"text-muted-foreground hover:text-foreground hover:bg-secondary/5"),children:[o.jsxs("div",{className:"flex-1 line-clamp-1",children:["W",v.week,": ",s(v.title)]}),k&&o.jsx(gM,{className:"h-3 w-3 text-accent shrink-0"})]},v.week)})})]},f.id)})}),o.jsxs("div",{className:"mt-8 px-2 space-y-1",children:[d&&m?.role==="student"&&o.jsx(Te,{href:"/my-progress",className:Ye("block px-3 py-2 text-sm rounded-md transition-colors",t==="/my-progress"?"bg-primary/10 text-primary font-medium":"text-muted-foreground hover:text-foreground hover:bg-secondary/5"),children:r==="es"?"Mi progreso":"My Progress"}),o.jsx(Te,{href:"/about",className:Ye("block px-3 py-2 text-sm rounded-md transition-colors",t==="/about"?"bg-primary/10 text-primary font-medium":"text-muted-foreground hover:text-foreground hover:bg-secondary/5"),children:r==="en"?"Standards & About":"Estándares y Acerca de"}),o.jsx(Te,{href:"/qm",className:Ye("block px-3 py-2 text-sm rounded-md transition-colors",t==="/qm"?"bg-primary/10 text-primary font-medium":"text-muted-foreground hover:text-foreground hover:bg-secondary/5"),children:r==="en"?"Quality Matters alignment":"Alineación Quality Matters"})]})]})}function oi(e){const t=S.useRef(e);return S.useEffect(()=>{t.current=e}),S.useMemo(()=>(...r)=>t.current?.(...r),[])}function J_(e,t=globalThis?.document){const r=oi(e);S.useEffect(()=>{const s=c=>{c.key==="Escape"&&r(c)};return t.addEventListener("keydown",s,{capture:!0}),()=>t.removeEventListener("keydown",s,{capture:!0})},[r,t])}
vendor: 6,534 bytes, line 315
315var e8="DismissableLayer",vh="dismissableLayer.update",t8="dismissableLayer.pointerDownOutside",a8="dismissableLayer.focusOutside",bx,$2=S.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),B2=S.forwardRef((e,t)=>{const{disableOutsidePointerEvents:r=!1,onEscapeKeyDown:s,onPointerDownOutside:c,onFocusOutside:d,onInteractOutside:m,onDismiss:h,...f}=e,y=S.useContext($2),[b,v]=S.useState(null),x=b?.ownerDocument??globalThis?.document,[,k]=S.useState({}),E=ha(t,L=>v(L)),C=Array.from(y.layers),[N]=[...y.layersWithOutsidePointerEventsDisabled].slice(-1),q=C.indexOf(N),R=b?C.indexOf(b):-1,I=y.layersWithOutsidePointerEventsDisabled.size>0,$=R>=q,z=s8(L=>{const D=L.target,ee=[...y.branches].some(ne=>ne.contains(D));!$||ee||(c?.(L),m?.(L),L.defaultPrevented||h?.())},x),G=i8(L=>{const D=L.target;[...y.branches].some(ne=>ne.contains(D))||(d?.(L),m?.(L),L.defaultPrevented||h?.())},x);return J_(L=>{R===y.layers.size-1&&(s?.(L),!L.defaultPrevented&&h&&(L.preventDefault(),h()))},x),S.useEffect(()=>{if(b)return r&&(y.layersWithOutsidePointerEventsDisabled.size===0&&(bx=x.body.style.pointerEvents,x.body.style.pointerEvents="none"),y.layersWithOutsidePointerEventsDisabled.add(b)),y.layers.add(b),vx(),()=>{r&&y.layersWithOutsidePointerEventsDisabled.size===1&&(x.body.style.pointerEvents=bx)}},[b,x,r,y]),S.useEffect(()=>()=>{b&&(y.layers.delete(b),y.layersWithOutsidePointerEventsDisabled.delete(b),vx())},[b,y]),S.useEffect(()=>{const L=()=>k({});return document.addEventListener(vh,L),()=>document.removeEventListener(vh,L)},[]),o.jsx(bt.div,{...f,ref:E,style:{pointerEvents:I?$?"auto":"none":void 0,...e.style},onFocusCapture:jt(e.onFocusCapture,G.onFocusCapture),onBlurCapture:jt(e.onBlurCapture,G.onBlurCapture),onPointerDownCapture:jt(e.onPointerDownCapture,z.onPointerDownCapture)})});B2.displayName=e8;var n8="DismissableLayerBranch",r8=S.forwardRef((e,t)=>{const r=S.useContext($2),s=S.useRef(null),c=ha(t,s);return S.useEffect(()=>{const d=s.current;if(d)return r.branches.add(d),()=>{r.branches.delete(d)}},[r.branches]),o.jsx(bt.div,{...e,ref:c})});r8.displayName=n8;function s8(e,t=globalThis?.document){const r=oi(e),s=S.useRef(!1),c=S.useRef(()=>{});return S.useEffect(()=>{const d=h=>{if(h.target&&!s.current){let f=function(){V2(t8,r,y,{discrete:!0})};const y={originalEvent:h};h.pointerType==="touch"?(t.removeEventListener("click",c.current),c.current=f,t.addEventListener("click",c.current,{once:!0})):f()}else t.removeEventListener("click",c.current);s.current=!1},m=window.setTimeout(()=>{t.addEventListener("pointerdown",d)},0);return()=>{window.clearTimeout(m),t.removeEventListener("pointerdown",d),t.removeEventListener("click",c.current)}},[t,r]),{onPointerDownCapture:()=>s.current=!0}}function i8(e,t=globalThis?.document){const r=oi(e),s=S.useRef(!1);return S.useEffect(()=>{const c=d=>{d.target&&!s.current&&V2(a8,r,{originalEvent:d},{discrete:!1})};return t.addEventListener("focusin",c),()=>t.removeEventListener("focusin",c)},[t,r]),{onFocusCapture:()=>s.current=!0,onBlurCapture:()=>s.current=!1}}function vx(){const e=new CustomEvent(vh);document.dispatchEvent(e)}function V2(e,t,r,{discrete:s}){const c=r.originalEvent.target,d=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:r});t&&c.addEventListener(e,t,{once:!0}),s?QP(c,d):c.dispatchEvent(d)}var Np="focusScope.autoFocusOnMount",Tp="focusScope.autoFocusOnUnmount",xx={bubbles:!1,cancelable:!0},o8="FocusScope",W2=S.forwardRef((e,t)=>{const{loop:r=!1,trapped:s=!1,onMountAutoFocus:c,onUnmountAutoFocus:d,...m}=e,[h,f]=S.useState(null),y=oi(c),b=oi(d),v=S.useRef(null),x=ha(t,C=>f(C)),k=S.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;S.useEffect(()=>{if(s){let C=function(I){if(k.paused||!h)return;const $=I.target;h.contains($)?v.current=$:cr(v.current,{select:!0})},N=function(I){if(k.paused||!h)return;const $=I.relatedTarget;$!==null&&(h.contains($)||cr(v.current,{select:!0}))},q=function(I){if(document.activeElement===document.body)for(const z of I)z.removedNodes.length>0&&cr(h)};document.addEventListener("focusin",C),document.addEventListener("focusout",N);const R=new MutationObserver(q);return h&&R.observe(h,{childList:!0,subtree:!0}),()=>{document.removeEventListener("focusin",C),document.removeEventListener("focusout",N),R.disconnect()}}},[s,h,k.paused]),S.useEffect(()=>{if(h){kx.add(k);const C=document.activeElement;if(!h.contains(C)){const q=new CustomEvent(Np,xx);h.addEventListener(Np,y),h.dispatchEvent(q),q.defaultPrevented||(l8(p8(G2(h)),{select:!0}),document.activeElement===C&&cr(h))}return()=>{h.removeEventListener(Np,y),setTimeout(()=>{const q=new CustomEvent(Tp,xx);h.addEventListener(Tp,b),h.dispatchEvent(q),q.defaultPrevented||cr(C??document.body,{select:!0}),h.removeEventListener(Tp,b),kx.remove(k)},0)}}},[h,y,b,k]);const E=S.useCallback(C=>{if(!r&&!s||k.paused)return;const N=C.key==="Tab"&&!C.altKey&&!C.ctrlKey&&!C.metaKey,q=document.activeElement;if(N&&q){const R=C.currentTarget,[I,$]=c8(R);I&&$?!C.shiftKey&&q===$?(C.preventDefault(),r&&cr(I,{select:!0})):C.shiftKey&&q===I&&(C.preventDefault(),r&&cr($,{select:!0})):q===R&&C.preventDefault()}},[r,s,k.paused]);return o.jsx(bt.div,{tabIndex:-1,...m,ref:x,onKeyDown:E})});W2.displayName=o8;function l8(e,{select:t=!1}={}){const r=document.activeElement;for(const s of e)if(cr(s,{select:t}),document.activeElement!==r)return}function c8(e){const t=G2(e),r=wx(t,e),s=wx(t.reverse(),e);return[r,s]}function G2(e){const t=[],r=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:s=>{const c=s.tagName==="INPUT"&&s.type==="hidden";return s.disabled||s.hidden||c?NodeFilter.FILTER_SKIP:s.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;r.nextNode();)t.push(r.currentNode);return t}function wx(e,t){for(const r of e)if(!d8(r,{upTo:t}))return r}function d8(e,{upTo:t}){if(getComputedStyle(e).visibility==="hidden")return!0;for(;e;){if(t!==void 0&&e===t)return!1;if(getComputedStyle(e).display==="none")return!0;e=e.parentElement}return!1}function u8(e){return e instanceof HTMLInputElement&&"select"in e}function cr(e,{select:t=!1}={}){if(e&&e.focus){const r=document.activeElement;e.focus({preventScroll:!0}),e!==r&&u8(e)&&t&&e.select()}}var kx=m8();function m8(){let e=[];return{add(t){const r=e[0];t!==r&&r?.pause(),e=Sx(e,t),e.unshift(t)},remove(t){e=Sx(e,t),e[0]?.resume()}}}function Sx(e,t){const r=[...e],s=r.indexOf(t);return s!==-1&&r.splice(s,1),r}function p8(e){return e.filter(t=>t.tagName!=="A")}var h8="Portal",K2=S.forwardRef((e,t)=>
vendor: 6,335 bytes, lines 315-330
315{const{container:r,...s}=e,[c,d]=S.useState(!1);ts(()=>d(!0),[]);const m=r||c&&globalThis?.document?.body;return m?Tw.createPortal(o.jsx(bt.div,{...s,ref:t}),m):null});K2.displayName=h8;var Mp=0;function f8(){S.useEffect(()=>{const e=document.querySelectorAll("[data-radix-focus-guard]");return document.body.insertAdjacentElement("afterbegin",e[0]??Cx()),document.body.insertAdjacentElement("beforeend",e[1]??Cx()),Mp++,()=>{Mp===1&&document.querySelectorAll("[data-radix-focus-guard]").forEach(t=>t.remove()),Mp--}},[])}function Cx(){const e=document.createElement("span");return e.setAttribute("data-radix-focus-guard",""),e.tabIndex=0,e.style.outline="none",e.style.opacity="0",e.style.position="fixed",e.style.pointerEvents="none",e}var ln=function(){return ln=Object.assign||function(t){for(var r,s=1,c=arguments.length;s<c;s++){r=arguments[s];for(var d in r)Object.prototype.hasOwnProperty.call(r,d)&&(t[d]=r[d])}return t},ln.apply(this,arguments)};function H2(e,t){var r={};for(var s in e)Object.prototype.hasOwnProperty.call(e,s)&&t.indexOf(s)<0&&(r[s]=e[s]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var c=0,s=Object.getOwnPropertySymbols(e);c<s.length;c++)t.indexOf(s[c])<0&&Object.prototype.propertyIsEnumerable.call(e,s[c])&&(r[s[c]]=e[s[c]]);return r}function g8(e,t,r){if(r||arguments.length===2)for(var s=0,c=t.length,d;s<c;s++)(d||!(s in t))&&(d||(d=Array.prototype.slice.call(t,0,s)),d[s]=t[s]);return e.concat(d||Array.prototype.slice.call(t))}var Rc="right-scroll-bar-position",Ic="width-before-scroll-bar",y8="with-scroll-bars-hidden",b8="--removed-body-scroll-bar-size";function Pp(e,t){return typeof e=="function"?e(t):e&&(e.current=t),e}function v8(e,t){var r=S.useState(function(){return{value:e,callback:t,facade:{get current(){return r.value},set current(s){var c=r.value;c!==s&&(r.value=s,r.callback(s,c))}}}})[0];return r.callback=t,r.facade}var x8=typeof window<"u"?S.useLayoutEffect:S.useEffect,jx=new WeakMap;function w8(e,t){var r=v8(null,function(s){return e.forEach(function(c){return Pp(c,s)})});return x8(function(){var s=jx.get(r);if(s){var c=new Set(s),d=new Set(e),m=r.current;c.forEach(function(h){d.has(h)||Pp(h,null)}),d.forEach(function(h){c.has(h)||Pp(h,m)})}jx.set(r,e)},[e]),r}function k8(e){return e}function S8(e,t){t===void 0&&(t=k8);var r=[],s=!1,c={read:function(){if(s)throw new Error("Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.");return r.length?r[r.length-1]:e},useMedium:function(d){var m=t(d,s);return r.push(m),function(){r=r.filter(function(h){return h!==m})}},assignSyncMedium:function(d){for(s=!0;r.length;){var m=r;r=[],m.forEach(d)}r={push:function(h){return d(h)},filter:function(){return r}}},assignMedium:function(d){s=!0;var m=[];if(r.length){var h=r;r=[],h.forEach(d),m=r}var f=function(){var b=m;m=[],b.forEach(d)},y=function(){return Promise.resolve().then(f)};y(),r={push:function(b){m.push(b),y()},filter:function(b){return m=m.filter(b),r}}}};return c}function C8(e){e===void 0&&(e={});var t=S8(null);return t.options=ln({async:!0,ssr:!1},e),t}var Q2=function(e){var t=e.sideCar,r=H2(e,["sideCar"]);if(!t)throw new Error("Sidecar: please provide `sideCar` property to import the right car");var s=t.read();if(!s)throw new Error("Sidecar medium not found");return S.createElement(s,ln({},r))};Q2.isSideCarExport=!0;function j8(e,t){return e.useMedium(t),Q2}var Y2=C8(),_p=function(){},_d=S.forwardRef(function(e,t){var r=S.useRef(null),s=S.useState({onScrollCapture:_p,onWheelCapture:_p,onTouchMoveCapture:_p}),c=s[0],d=s[1],m=e.forwardProps,h=e.children,f=e.className,y=e.removeScrollBar,b=e.enabled,v=e.shards,x=e.sideCar,k=e.noRelative,E=e.noIsolation,C=e.inert,N=e.allowPinchZoom,q=e.as,R=q===void 0?"div":q,I=e.gapMode,$=H2(e,["forwardProps","children","className","removeScrollBar","enabled","shards","sideCar","noRelative","noIsolation","inert","allowPinchZoom","as","gapMode"]),z=x,G=w8([r,t]),L=ln(ln({},$),c);return S.createElement(S.Fragment,null,b&&S.createElement(z,{sideCar:Y2,removeScrollBar:y,shards:v,noRelative:k,noIsolation:E,inert:C,setCallbacks:d,allowPinchZoom:!!N,lockRef:r,gapMode:I}),m?S.cloneElement(S.Children.only(h),ln(ln({},L),{ref:G})):S.createElement(R,ln({},L,{className:f,ref:G}),h))});_d.defaultProps={enabled:!0,removeScrollBar:!0,inert:!1};_d.classNames={fullWidth:Ic,zeroRight:Rc};var A8=function(){if(typeof __webpack_nonce__<"u")return __webpack_nonce__};function q8(){if(!document)return null;var e=document.createElement("style");e.type="text/css";var t=A8();return t&&e.setAttribute("nonce",t),e}function E8(e,t){e.styleSheet?e.styleSheet.cssText=t:e.appendChild(document.createTextNode(t))}function N8(e){var t=document.head||document.getElementsByTagName("head")[0];t.appendChild(e)}var T8=function(){var e=0,t=null;return{add:function(r){e==0&&(t=q8())&&(E8(t,r),N8(t)),e++},remove:function(){e--,!e&&t&&(t.parentNode&&t.parentNode.removeChild(t),t=null)}}},M8=function(){var e=T8();return function(t,r){S.useEffect(function(){return e.add(t),function(){e.remove()}},[t&&r])}},X2=function(){var e=M8(),t=function(r){var s=r.styles,c=r.dynamic;return e(s,c),null};return t},P8={left:0,top:0,right:0,gap:0},Rp=function(e){return parseInt(e||"",10)||0},_8=function(e){var t=window.getComputedStyle(document.body),r=t[e==="padding"?"paddingLeft":"marginLeft"],s=t[e==="padding"?"paddingTop":"marginTop"],c=t[e==="padding"?"paddingRight":"marginRight"];return[Rp(r),Rp(s),Rp(c)]},R8=function(e){if(e===void 0&&(e="margin"),typeof window>"u")return P8;var t=_8(e),r=document.documentElement.clientWidth,s=window.innerWidth;return{left:t[0],top:t[1],right:t[2],gap:Math.max(0,s-r+t[2]-t[0])}},I8=X2(),si="data-scroll-locked",U8=function(e,t,r,s){var c=e.left,d=e.top,m=e.right,h=e.gap;return r===void 0&&(r="margin"),` 316 .`.concat(y8,` { 317 overflow: hidden `).concat(s,`; 318 padding-right: `).concat(h,"px ").concat(s,`; 319 } 320 body[`).concat(si,`] { 321 overflow: hidden `).concat(s,`; 322 overscroll-behavior: contain; 323 `).concat([t&&"position: relative ".concat(s,";"),r==="margin"&&` 324 padding-left: `.concat(c,`px; 325 padding-top: `).concat(d,`px; 326 padding-right: `).concat(m,`px; 327 margin-left:0; 328 margin-top:0; 329 margin-right: `).concat(h,"px ").concat(s,`; 330 `),r==="padding"&&"padding-right: ".concat(h,"px ").concat(s,";
330")].filter(Boolean).join(""),` 331 } 332 333 .`).concat(Rc,` { 334 right: `).concat(h,"px ").concat(s,`; 335 } 336 337 .`).concat(Ic,` { 338 margin-right: `).concat(h,"px ").concat(s,`; 339 } 340 341 .`).concat(Rc," .").concat(Rc,` { 342 right: 0 `).concat(s,`; 343 } 344 345 .`).concat(Ic," .").concat(Ic,` { 346 margin-right: 0 `).concat(s,`; 347 } 348 349 body[`).concat(si,`] { 350 `).concat(b8,": ").concat(h,`px; 351 } 352`)},Ax=function(){var e=parseInt(document.body.getAttribute(si)||"0",10);return isFinite(e)?e:0},D8=function(){S.useEffect(function(){return document.body.setAttribute(si,(Ax()+1).toString()),function(){var e=Ax()-1;e<=0?document.body.removeAttribute(si):document.body.setAttribute(si,e.toString())}},[])},O8=function(e){var t=e.noRelative,r=e.noImportant,s=e.gapMode,c=s===void 0?"margin":s;D8();var d=S.useMemo(function(){return R8(c)},[c]);return S.createElement(I8,{styles:U8(d,!t,c,r?"":"!important")})},xh=!1;if(typeof window<"u")try{var kc=Object.defineProperty({},"passive",{get:function(){return xh=!0,!0}});window.addEventListener("test",kc,kc),window.removeEventListener("test",kc,kc)}catch{xh=!1}var Qs=xh?{passive:!1}:!1,L8=function(e){return e.tagName==="TEXTAREA"},Z2=function(e,t){if(!(e instanceof Element))return!1;var r=window.getComputedStyle(e);return r[t]!=="hidden"&&!(r.overflowY===r.overflowX&&!L8(e)&&r[t]==="visible")},z8=function(e){return Z2(e,"overflowY")},F8=function(e){return Z2(e,"overflowX")},qx=function(e,t){var r=t.ownerDocument,s=t;do{typeof ShadowRoot<"u"&&s instanceof ShadowRoot&&(s=s.host);var c=J2(e,s);if(c){var d=ek(e,s),m=d[1],h=d[2];if(m>h)return!0}s=s.parentNode}while(s&&s!==r.body);return!1},$8=function(e){var t=e.scrollTop,r=e.scrollHeight,s=e.clientHeight;return[t,r,s]},B8=function(e){var t=e.scrollLeft,r=e.scrollWidth,s=e.clientWidth;return[t,r,s]},J2=function(e,t){return e==="v"?z8(t):F8(t)},ek=function(e,t){return e==="v"?$8(t):B8(t)},V8=function(e,t){return e==="h"&&t==="rtl"?-1:1},W8=function(e,t,r,s,c){var d=V8(e,window.getComputedStyle(t).direction),m=d*s,h=r.target,f=t.contains(h),y=!1,b=m>0,v=0,x=0;do{if(!h)break;var k=ek(e,h),E=k[0],C=k[1],N=k[2],q=C-N-d*E;(E||q)&&J2(e,h)&&(v+=q,x+=E);var R=h.parentNode;h=R&&R.nodeType===Node.DOCUMENT_FRAGMENT_NODE?R.host:R}while(!f&&h!==document.body||f&&(t.contains(h)||t===h));return(b&&Math.abs(v)<1||!b&&Math.abs(x)<1)&&(y=!0),y},Sc=function(e){return"changedTouches"in e?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0]},Ex=function(e){return[e.deltaX,e.deltaY]},Nx=function(e){return e&&"current"in e?e.current:e},G8=function(e,t){return e[0]===t[0]&&e[1]===t[1]},K8=function(e){return` 353 .block-interactivity-`.concat(e,` {pointer-events: none;} 354 .allow-interactivity-`).concat(e,` {pointer-events: all;} 355`)},H8=0,Ys=[];function Q8(e){var t=S.useRef([]),r=S.useRef([0,0]),s=S.useRef(),c=S.useState(H8++)[0],d=S.useState(X2)[0],m=S.useRef(e);S.useEffect(function(){m.current=e},[e]),S.useEffect(function(){if(e.inert){document.body.classList.add("block-interactivity-".concat(c));var C=g8([e.lockRef.current],(e.shards||[]).map(Nx),!0).filter(Boolean);
vendor: 4,661 bytes, line 355
355return C.forEach(function(N){return N.classList.add("allow-interactivity-".concat(c))}),function(){document.body.classList.remove("block-interactivity-".concat(c)),C.forEach(function(N){return N.classList.remove("allow-interactivity-".concat(c))})}}},[e.inert,e.lockRef.current,e.shards]);var h=S.useCallback(function(C,N){if("touches"in C&&C.touches.length===2||C.type==="wheel"&&C.ctrlKey)return!m.current.allowPinchZoom;var q=Sc(C),R=r.current,I="deltaX"in C?C.deltaX:R[0]-q[0],$="deltaY"in C?C.deltaY:R[1]-q[1],z,G=C.target,L=Math.abs(I)>Math.abs($)?"h":"v";if("touches"in C&&L==="h"&&G.type==="range")return!1;var D=window.getSelection(),ee=D&&D.anchorNode,ne=ee?ee===G||ee.contains(G):!1;if(ne)return!1;var me=qx(L,G);if(!me)return!0;if(me?z=L:(z=L==="v"?"h":"v",me=qx(L,G)),!me)return!1;if(!s.current&&"changedTouches"in C&&(I||$)&&(s.current=z),!z)return!0;var pe=s.current||z;return W8(pe,N,C,pe==="h"?I:$)},[]),f=S.useCallback(function(C){var N=C;if(!(!Ys.length||Ys[Ys.length-1]!==d)){var q="deltaY"in N?Ex(N):Sc(N),R=t.current.filter(function(z){return z.name===N.type&&(z.target===N.target||N.target===z.shadowParent)&&G8(z.delta,q)})[0];if(R&&R.should){N.cancelable&&N.preventDefault();return}if(!R){var I=(m.current.shards||[]).map(Nx).filter(Boolean).filter(function(z){return z.contains(N.target)}),$=I.length>0?h(N,I[0]):!m.current.noIsolation;$&&N.cancelable&&N.preventDefault()}}},[]),y=S.useCallback(function(C,N,q,R){var I={name:C,delta:N,target:q,should:R,shadowParent:Y8(q)};t.current.push(I),setTimeout(function(){t.current=t.current.filter(function($){return $!==I})},1)},[]),b=S.useCallback(function(C){r.current=Sc(C),s.current=void 0},[]),v=S.useCallback(function(C){y(C.type,Ex(C),C.target,h(C,e.lockRef.current))},[]),x=S.useCallback(function(C){y(C.type,Sc(C),C.target,h(C,e.lockRef.current))},[]);S.useEffect(function(){return Ys.push(d),e.setCallbacks({onScrollCapture:v,onWheelCapture:v,onTouchMoveCapture:x}),document.addEventListener("wheel",f,Qs),document.addEventListener("touchmove",f,Qs),document.addEventListener("touchstart",b,Qs),function(){Ys=Ys.filter(function(C){return C!==d}),document.removeEventListener("wheel",f,Qs),document.removeEventListener("touchmove",f,Qs),document.removeEventListener("touchstart",b,Qs)}},[]);var k=e.removeScrollBar,E=e.inert;return S.createElement(S.Fragment,null,E?S.createElement(d,{styles:K8(c)}):null,k?S.createElement(O8,{noRelative:e.noRelative,gapMode:e.gapMode}):null)}function Y8(e){for(var t=null;e!==null;)e instanceof ShadowRoot&&(t=e.host,e=e.host),e=e.parentNode;return t}const X8=j8(Y2,Q8);var tk=S.forwardRef(function(e,t){return S.createElement(_d,ln({},e,{ref:t,sideCar:X8}))});tk.classNames=_d.classNames;var Z8=function(e){if(typeof document>"u")return null;var t=Array.isArray(e)?e[0]:e;return t.ownerDocument.body},Xs=new WeakMap,Cc=new WeakMap,jc={},Ip=0,ak=function(e){return e&&(e.host||ak(e.parentNode))},J8=function(e,t){return t.map(function(r){if(e.contains(r))return r;var s=ak(r);return s&&e.contains(s)?s:(console.error("aria-hidden",r,"in not contained inside",e,". Doing nothing"),null)}).filter(function(r){return!!r})},eR=function(e,t,r,s){var c=J8(t,Array.isArray(e)?e:[e]);jc[r]||(jc[r]=new WeakMap);var d=jc[r],m=[],h=new Set,f=new Set(c),y=function(v){!v||h.has(v)||(h.add(v),y(v.parentNode))};c.forEach(y);var b=function(v){!v||f.has(v)||Array.prototype.forEach.call(v.children,function(x){if(h.has(x))b(x);else try{var k=x.getAttribute(s),E=k!==null&&k!=="false",C=(Xs.get(x)||0)+1,N=(d.get(x)||0)+1;Xs.set(x,C),d.set(x,N),m.push(x),C===1&&E&&Cc.set(x,!0),N===1&&x.setAttribute(r,"true"),E||x.setAttribute(s,"true")}catch(q){console.error("aria-hidden: cannot operate on ",x,q)}})};return b(t),h.clear(),Ip++,function(){m.forEach(function(v){var x=Xs.get(v)-1,k=d.get(v)-1;Xs.set(v,x),d.set(v,k),x||(Cc.has(v)||v.removeAttribute(s),Cc.delete(v)),k||v.removeAttribute(r)}),Ip--,Ip||(Xs=new WeakMap,Xs=new WeakMap,Cc=new WeakMap,jc={})}},tR=function(e,t,r){r===void 0&&(r="data-aria-hidden");var s=Array.from(Array.isArray(e)?e:[e]),c=Z8(e);return c?(s.push.apply(s,Array.from(c.querySelectorAll("[aria-live], script"))),eR(s,c,r,"aria-hidden")):function(){return null}},Rd="Dialog",[nk]=ss(Rd),[aR,Qa]=nk(Rd),rk=e=>{const{__scopeDialog:t,children:r,open:s,defaultOpen:c,onOpenChange:d,modal:m=!0}=e,h=S.useRef(null),f=S.useRef(null),[y,b]=is({prop:s,defaultProp:c??!1,onChange:d,caller:Rd});return o.jsx(aR,{scope:t,triggerRef:h,contentRef:f,contentId:Xr(),titleId:Xr(),descriptionId:Xr(),open:y,onOpenChange:b,onOpenToggle:S.useCallback(()=>b(v=>!v),[b]),modal:m,children:r})};rk.displayName=Rd;var sk="DialogTrigger",ik=S.forwardRef((e,t)=>
vendor: 4,998 bytes, lines 355-359
355{const{__scopeDialog:r,...s}=e,c=Qa(sk,r),d=ha(t,c.triggerRef);return o.jsx(bt.button,{type:"button","aria-haspopup":"dialog","aria-expanded":c.open,"aria-controls":c.contentId,"data-state":Tf(c.open),...s,ref:d,onClick:jt(e.onClick,c.onOpenToggle)})});ik.displayName=sk;var Ef="DialogPortal",[nR,ok]=nk(Ef,{forceMount:void 0}),lk=e=>{const{__scopeDialog:t,forceMount:r,children:s,container:c}=e,d=Qa(Ef,t);return o.jsx(nR,{scope:t,forceMount:r,children:S.Children.map(s,m=>o.jsx(os,{present:r||d.open,children:o.jsx(K2,{asChild:!0,container:c,children:m})}))})};lk.displayName=Ef;var ad="DialogOverlay",ck=S.forwardRef((e,t)=>{const r=ok(ad,e.__scopeDialog),{forceMount:s=r.forceMount,...c}=e,d=Qa(ad,e.__scopeDialog);return d.modal?o.jsx(os,{present:s||d.open,children:o.jsx(sR,{...c,ref:t})}):null});ck.displayName=ad;var rR=ed("DialogOverlay.RemoveScroll"),sR=S.forwardRef((e,t)=>{const{__scopeDialog:r,...s}=e,c=Qa(ad,r);return o.jsx(tk,{as:rR,allowPinchZoom:!0,shards:[c.contentRef],children:o.jsx(bt.div,{"data-state":Tf(c.open),...s,ref:t,style:{pointerEvents:"auto",...s.style}})})}),as="DialogContent",dk=S.forwardRef((e,t)=>{const r=ok(as,e.__scopeDialog),{forceMount:s=r.forceMount,...c}=e,d=Qa(as,e.__scopeDialog);return o.jsx(os,{present:s||d.open,children:d.modal?o.jsx(iR,{...c,ref:t}):o.jsx(oR,{...c,ref:t})})});dk.displayName=as;var iR=S.forwardRef((e,t)=>{const r=Qa(as,e.__scopeDialog),s=S.useRef(null),c=ha(t,r.contentRef,s);return S.useEffect(()=>{const d=s.current;if(d)return tR(d)},[]),o.jsx(uk,{...e,ref:c,trapFocus:r.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:jt(e.onCloseAutoFocus,d=>{d.preventDefault(),r.triggerRef.current?.focus()}),onPointerDownOutside:jt(e.onPointerDownOutside,d=>{const m=d.detail.originalEvent,h=m.button===0&&m.ctrlKey===!0;(m.button===2||h)&&d.preventDefault()}),onFocusOutside:jt(e.onFocusOutside,d=>d.preventDefault())})}),oR=S.forwardRef((e,t)=>{const r=Qa(as,e.__scopeDialog),s=S.useRef(!1),c=S.useRef(!1);return o.jsx(uk,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:d=>{e.onCloseAutoFocus?.(d),d.defaultPrevented||(s.current||r.triggerRef.current?.focus(),d.preventDefault()),s.current=!1,c.current=!1},onInteractOutside:d=>{e.onInteractOutside?.(d),d.defaultPrevented||(s.current=!0,d.detail.originalEvent.type==="pointerdown"&&(c.current=!0));const m=d.target;r.triggerRef.current?.contains(m)&&d.preventDefault(),d.detail.originalEvent.type==="focusin"&&c.current&&d.preventDefault()}})}),uk=S.forwardRef((e,t)=>{const{__scopeDialog:r,trapFocus:s,onOpenAutoFocus:c,onCloseAutoFocus:d,...m}=e,h=Qa(as,r),f=S.useRef(null),y=ha(t,f);return f8(),o.jsxs(o.Fragment,{children:[o.jsx(W2,{asChild:!0,loop:!0,trapped:s,onMountAutoFocus:c,onUnmountAutoFocus:d,children:o.jsx(B2,{role:"dialog",id:h.contentId,"aria-describedby":h.descriptionId,"aria-labelledby":h.titleId,"data-state":Tf(h.open),...m,ref:y,onDismiss:()=>h.onOpenChange(!1)})}),o.jsxs(o.Fragment,{children:[o.jsx(lR,{titleId:h.titleId}),o.jsx(dR,{contentRef:f,descriptionId:h.descriptionId})]})]})}),Nf="DialogTitle",mk=S.forwardRef((e,t)=>{const{__scopeDialog:r,...s}=e,c=Qa(Nf,r);return o.jsx(bt.h2,{id:c.titleId,...s,ref:t})});mk.displayName=Nf;var pk="DialogDescription",hk=S.forwardRef((e,t)=>{const{__scopeDialog:r,...s}=e,c=Qa(pk,r);return o.jsx(bt.p,{id:c.descriptionId,...s,ref:t})});hk.displayName=pk;var fk="DialogClose",gk=S.forwardRef((e,t)=>{const{__scopeDialog:r,...s}=e,c=Qa(fk,r);return o.jsx(bt.button,{type:"button",...s,ref:t,onClick:jt(e.onClick,()=>c.onOpenChange(!1))})});gk.displayName=fk;function Tf(e){return e?"open":"closed"}var yk="DialogTitleWarning",[Gz,bk]=OP(yk,{contentName:as,titleName:Nf,docsSlug:"dialog"}),lR=({titleId:e})=>{const t=bk(yk),r=`\`${t.contentName}\` requires a \`${t.titleName}\` for the component to be accessible for screen reader users. 356 357If you want to hide the \`${t.titleName}\`, you can wrap it with our VisuallyHidden component. 358 359For more information, see https://radix-ui.com/primitives/docs/components/${t.docsSlug}`;return S.useEffect(()=>{e&&(document.getElementById(e)||console.error(r))},[r,e]),null},cR="DialogDescriptionWarning",dR=({contentRef:e,descriptionId:t})=>{const s=`Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${bk(cR).contentName}}.`;return S.useEffect(()=>{const c=e.current?.getAttribute("aria-describedby");t&&c&&(document.getElementById(t)||console.warn(s))},[s,e,t]),null},vk=rk,uR=ik,xk=lk,Id=ck,Ud=dk,Dd=mk,Od=hk,wk=gk;const Tx=e=>typeof e=="boolean"?`${e}`:e===0?"0":e,Mx=q2,Ld=(e,t)=>r=>{var s;if(t?.variants==null)return Mx(e,r?.class,r?.className);const{variants:c,defaultVariants:d}=t,m=Object.keys(c).map(y=>{const b=r?.[y],v=d?.[y];if(b===null)return null;const x=Tx(b)||Tx(v);return c[y][x]}),h=r&&Object.entries(r).reduce((y,b)=>{let[v,x]=b;return x===void 0||(y[v]=x),y},{}),f=t==null||(s=t.compoundVariants)===null||s===void 0?void 0:s.reduce((y,b)=>{let{class:v,className:x,...k}=b;return Object.entries(k).every(E=>
359{let[C,N]=E;return Array.isArray(N)?N.includes({...d,...h}[C]):{...d,...h}[C]===N})?[...y,v,x]:y},[]);return Mx(e,m,f,r?.class,r?.className)},mR=vk,pR=uR,hR=xk,kk=S.forwardRef(({className:e,...t},r)=>o.jsx(Id,{className:Ye("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",e),...t,ref:r}));kk.displayName=Id.displayName;const fR=Ld("fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500 data-[state=open]:animate-in data-[state=closed]:animate-out",{variants:{side:{top:"inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top",bottom:"inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom",left:"inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm",right:"inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm"}},defaultVariants:{side:"right"}}),Sk=S.forwardRef(({side:e="right",className:t,children:r,...s},c)=>o.jsxs(hR,{children:[o.jsx(kk,{}),o.jsxs(Ud,{ref:c,className:Ye(fR({side:e}),t),...s,children:[o.jsxs(wk,{className:"absolute right-4 top-4 roun
359ded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary",children:[o.jsx(rs,{className:"h-4 w-4"}),o.jsx("span",{className:"sr-only",children:"Close"})]}),r]})]}));Sk.displayName=Ud.displayName;const Ck=S.forwardRef(({className:e,...t},r)=>o.jsx(Dd,{ref:r,className:Ye("text-lg font-semibold text-foreground",e),...t}));Ck.displayName=Dd.displayName;const gR=S.forwardRef(({className:e,...t},r)=>o.jsx(Od,{ref:r,className:Ye("text-sm text-muted-foreground",e),...t}));gR.displayName=Od.displayName;var yR=Symbol.for("react.lazy"),nd=Bo[" use ".trim().toString()];function bR(e){return typeof e=="object"&&e!==null&&"then"in e}function jk(e){return e!=null&&typeof e=="object"&&"$$typeof"in e&&e.$$typeof===yR&&"_payload"in e&&bR(e._payload)}function Ak(e){const t=xR(e),r=S.forwardRef((s,c)=>{let{children:d,...m}=s;jk(d)&&typeof nd=="function"&&(d=nd(d._payload));const h=S.Children.toArray(d),f=h.find(kR);if(f){const y=f.props.children,b=h.map(v=>v===f?S.Children.count(y)>1?S.Children.only(null):S.isValidElement(y)?y.props.children:null:v);return o.jsx(t,{...m,ref:c,children:S.isValidElement(y)?S.cloneElement(y,void 0,b):null})}return o.jsx(t,{...m,ref:c,children:d})});return r.displayName=`${e}.Slot`,r}var vR=Ak("Slot");function xR(e){const t=S.forwardRef((r,s)=>{let{children:c,...d}=r;if(jk(c)&&typeof nd=="function"&&(c=nd(c._payload)),S.isValidElement(c)){const m=CR(c),h=SR(d,c.props);return c.type!==S.Fragment&&(h.ref=s?xf(s,m):m),S.cloneElement(c,h)}return S.Children.count(c)>1?S.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var wR=Symbol("radix.slottable");function kR(e){return S.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===wR}function SR(e,t){const r={...t};for(const s in t){const c=e[s],d=t[s];/^on[A-Z]/.test(s)?c&&d?r[s]=(...h)=>{const f=d(...h);return c(...h),f}:c&&(r[s]=c):s==="style"?r[s]={...c,...d}:s==="className"&&(r[s]=[c,d].filter(Boolean).join(" "))}return{...e,...r}}function CR(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,r=t&&"isReactWarning"in t&&t.isReactWarning;return r?e.ref:(t=Object.getOwnPropertyDescriptor(e,"ref")?.get,r=t&&"isReactWarning"in t&&t.isReactWarning,r?e.props.ref:e.props.ref||e.ref)}const jR=Ld("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 hover-elevate active-elevate-2",{variants:{variant:{default:"bg-primary text-primary-foreground border border-primary-border",destructive:"bg-destructive text-destructive-foreground shadow-sm border-destructive-border",outline:" border [border-color:var(--button-outline)] shadow-xs active:shadow-none ",secondary:"border bg-secondary text-secondary-foreground border border-secondary-border ",ghost:"border border-transparent",link:"text-primary underline-offset-4 hover:underline"},size:{default:"min-h-9 px-4 py-2",sm:"min-h-8 rounded-md px-3 text-xs",lg:"min-h-10 rounded-md px-8",icon:"h-9 w-9"}},defaultVariants:{variant:"default",size:"default"}}),ue=S.forwardRef(({className:e,variant:t,size:r,asChild:s=!1,...c},d)=>{const m=s?vR:"button";return o.jsx(m,{className:Ye(jR({variant:t,size:r,className:e})),ref:d,...c})});ue.displayName="Button";const Px="/barbara-avatar.jpeg";function AR(){const{lang:e}=_e(),{isSignedIn:t,isLoaded:r,user:s}=fa(),{data:c,isLoading:d}=mn({query:{enabled:!!t,retry:!1,queryKey:Ht()}}),[m]=wr(),[h,f]=_.useState(!1),[y,b]=_.useState(""),[v,x]=_.useState([]),[k,E]=_.useState(""),C=HE(),N=_.useRef(null),q=_.useRef(`${s?.id??""}:${e}`);q.current=`${s?.id??""}:${e}`;const R=t&&c?.role==="student",I=m.match(/^\/lesson\/(\d+)(?:\/|$)/),$=I?Number(I[1]):null,z=$&&$>=1&&$<=36?$:null;_.useEffect(()=>{x([]),E("")},[e,s?.id]),_.useEffect(()=>{N.current?.scrollTo({top:N.current.scrollHeight})},[v,h]);async function G(L){L.preventDefault();const D=y.trim();if(!D||C.isPending||!R)return;const ee=q.current,ne=v.slice(-6).map(({role:me,content:pe})=>({role:me,content:pe.slice(0,1e3)}));b(""),E(""),x(me=>[...me,{role:"user",content:D}]);try{const me=await C.mutateAsync({data:{message:D,language:e,week:z,history:ne}});q.current===ee&&x(pe=>[...pe,{role:"assistant",content:me.answer}])}catch{if(q.current!==ee)return;E(e==="es"?"No pude responder ahora. Intenta de nuevo.":"I couldn't respond right now. Please try again."),b(D),x(me=>me.slice(0,-1))}}return o.jsxs("div",{className:"fixed bottom-[max(1rem,env(safe-area-inset-bottom))] right-4 z-[60] flex flex-col items-end gap-3 sm:right-6",children:[h&&o.jsxs("section",{"aria-label":e==="es"?"Chat con Bárbara, asistente virtual":"Chat with Bárbara, virtual assistant",className:"flex h-[min(560px,calc(100dvh-120px))] w-[min(390px,calc(100vw-32px))] flex-col overflow-hidden rounded-2xl border border-blue-200 bg-white shadow-2xl",children:[o.jsxs("div",{className:"flex items-center gap-3 bg-[#133c78] px-4 py-3 text-white",children:[o.jsx("img",{src:Px,alt:"",className:"h-11 w-11 rounded-full border-2 border-white object-cover object-center"}),o.jsxs("div",{className:"min-w-0 flex-1",children:[o.jsx("h2",{className:"font-semibold leading-tight",children:"Bárbara"}),o.jsx("p",{className:"text-xs text-blue-100",children:e==="es"?"Asistente virtual del curso":"Virtual course assistant"})]}),o.jsx("button",{type:"button",onClick:()=>f(!1),"aria-label":e==="es"?"Cerrar chat":"Close chat",className:"rounded-full p-2 hover:bg-white/15",children:o.jsx(rs,{className:"h-5 w-5"})})]}),!r||t&&d?o.jsx("p",{className:"p-5 text-sm text-slate-600",children:e==="es"?"Cargandoâ¦":"Loadingâ¦"}):R?o.jsxs(o.Fragment,{children:[o.jsxs("div",{ref:N,role:"log","aria-live":"polite",className:"flex-1 space-y-3 overflow-y-auto bg-blue-50/50 p-4 text-sm",children:[o.jsx("div",{className:"mr-7 rounded-xl bg-white p-3 text-slate-700 shadow-sm",children:e==="es"?"¡Hola! Soy Bárbara, tu asistente virtual. ¿Qué quieres entender de este curso? Te ayudaré a pensar, no a resolver tus tareas por ti.":"Hi! I'm Bárbara, your virtual assistant. What would you like to understand about this course? I'll help you think, not do your work for you."}),v.map((L,D)=>o.jsx("p",{className:`whitespace-pre-wrap break-words rounded-xl p-3 ${L.role==="user"?"ml-7 bg-[#133c78] text-white":"mr-7 bg-white text-slate-800 shadow-sm"}`,children:L.content},D)),C.isPending&&o.jsx("p",{className:"mr-7 rounded-xl bg-white p-3 text-slate-600",children:e==="es"?"Pensandoâ¦":"Thinkingâ¦"})]}),k&&o.jsx("p",{role:"alert",className:"px-4 pt-2 text-xs text-red-700",children:k}),o.jsxs("form",{onSubmit:G,className:"flex items-end gap-2 border-t border-blue-100 bg-white p-3",children:[o.jsx("label",{htmlFor:"barbara-question",className:"sr-only",children:e==="es"?"Pregunta para Bárbara":"Question for Bárbara"}),o.jsx("textarea",{id:"barbara-question",rows:2,maxLength:1e3,value:y,onChange:L=>b(L.target.value),placeholder:e==="es"?"Pregunta sobre el cursoâ¦":"Ask about the courseâ¦",className:"min-h-12 flex-1 resize-none rounded-xl border border-slate-300 px-3 py-2 text-sm text-slate-900 focus:outline-none focus:ring-2 focus:ring-blue-500"}),o.jsx("button",{type:"submit",disabled:!y.trim()||C.isPending,"aria-label":e==="es"?"Enviar pregunta":"Send question",className:"flex h-11 w-11 items-center justify-center rounded-full bg-[#133c78] text-white disabled:opacity-40",children:o.jsx(eM,{className:"h-5 w-5"})})]})]}):o.jsxs("div",{className:"flex flex-1 flex-col justify-center gap-4 p-6 text-sm text-slate-700",children:[o.jsx("p",{children:t?e==="es"?"El chat de Bárbara está disponible solo para estudiantes registrados en este curso.":"Bárbara's chat is available only to registered students in this course.":e==="es"?"¡Hola! Soy Bárbara, asistente virtual. Para hacerme preguntas, regÃstrate e inicia sesión como estudiante de este curso.":"Hi! I'm Bárbara, a virtual assistant. To ask questions, sign up and sign in as a student in this course."}),!t&&o.jsxs("div",{className:"flex gap-2",children:[o.jsx(Te,{href:"/sign-up",onClick:()=>f(!1),className:"rounded-lg bg-[#133c78] px-4 py-2 font-semibold text-white",children:e==="es"?"Registrarse":"Sign up"}),o.jsx(Te,{href:"/sign-in",onClick:()=>f(!1),className:"rounded-lg border border-blue-300 px-4 py-2 text-[#133c78]",children:e==="es"?"Iniciar sesión":"Sign in"})]})]})]}),o.jsxs("button",{type:"button",onClick:()=>f(L=>!L),"aria-expanded":h,"aria-label":e==="es"?"Abrir chat con Bárbara, asistente virtual":"Open Bárbara virtual assistant chat",className:"group flex items-center gap-2 rounded-full bg-[#133c78] p-1.5 pr-4 text-white shadow-xl ring-2 ring-white transition-transform hover:scale-[1.03] focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-blue-600",children:[o.jsx("img",{src:Px,alt:"",className:"h-14 w-14 roun
359ded-full border-2 border-white object-cover object-center"}),o.jsxs("span",{className:"text-left text-sm font-semibold leading-tight",children:["¿Necesitas ayuda?",o.jsxs("span",{className:"block text-xs font-normal text-blue-100",children:["Bárbara · ",e==="es"?"asistente virtual":"virtual assistant"]})]})]})]})}function qR({children:e}){const{lang:t}=_e(),[r,s]=wr(),[c,d]=_.useState(!1),{signOut:m}=cf(),{isSignedIn:h}=fa(),{data:f}=mn({query:{enabled:!!h,retry:!1,queryKey:Ht()}}),y="Woodbridge Academy";_.useEffect(()=>{d(!1)},[r]);const b="/".replace(/\/$/,"")||"/",v=f?.role==="teacher"||f?.role==="admin",x=f?.role==="parent",k=f?.role==="student";return o.jsxs("div",{className:"min-h-screen flex flex-col bg-background text-foreground font-sans",children:[o.jsx("header",{className:"sticky top-0 z-50 border-b border-[#1e2a4d] bg-[#1e2a4d] text-white [&_button]:text-white [&_a]:text-white",children:o.jsxs("div",{className:"container mx-auto flex h-16 items-center justify-between px-4",children:[o.jsxs("div",{className:"flex items-center gap-4",children:[o.jsxs(mR,{open:c,onOpenChange:d,children:[o.jsx(pR,{asChild:!0,children:o.jsx("button",{className:"md:hidden p-2 -ml-2 text-foreground hover:bg-secondary/10 rounded-md",children:o.jsx(JM,{className:"h-6 w-6"})})}),o.jsxs(Sk,{side:"left",className:"p-0 w-72 border-r-border bg-sidebar",children:[o.jsx(Ck,{className:"sr-only",children:"Navigation Menu"}),o.jsx(yx,{className:"h-full py-6 px-4"})]})]}),o.jsxs(Te,{href:"/",className:"flex items-center gap-3",children:[o.jsx("img",{src:"/woodbridge-logo.png",alt:"Logo",className:"h-8 w-8 object-contain brightness-0 invert"}),o.jsx("span",{className:"font-serif font-bold text-xl text-white tracking-tight hidden sm:inline-block",children:y})]})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsxs("a",{href:"https://isea.ws/citas",target:"_blank",rel:"noopener noreferrer",className:"hidden sm:inline-flex items-center gap-2 rounded-md px-2 py-1.5 text-sm font-medium hover:bg-white/10",children:[o.jsx(cM,{className:"h-4 w-4"}),o.jsx("span",{className:"hidden sm:inline",children:t==="en"?"Appointments":"Citas"})]}),o.jsx(W6,{}),o.jsxs(pa,{when:"signed-in",children:[v&&o.jsx(ue,{asChild:!0,variant:"ghost",size:"sm",className:"gap-2 px-2 sm:px-3",children:o.jsxs(Te,{href:"/teacher","aria-label":t==="en"?"Teacher":"Docente",title:t==="en"?"Teacher":"Docente","data-testid":"link-teacher",onClick:()=>window.scrollTo(0,0),children:[o.jsx(v2,{className:"h-4 w-4"}),o.jsx("span",{className:"hidden sm:inline",children:t==="en"?"Teacher":"Docente"})]})}),x&&o.jsx(Te,{href:"/parent",className:"hidden sm:inline-flex",children:o.jsxs(ue,{variant:"ghost",size:"sm",className:"gap-2",children:[o.jsx(br,{className:"h-4 w-4"}),o.jsx("span",{className:"hidden sm:inline",children:t==="en"?"Parent":"Padres"})]})}),k&&o.jsx(Te,{href:"/profile",children:o.jsxs(ue,{variant:"ghost",size:"sm",className:"gap-2 px-2 sm:px-3","aria-label":t==="en"?"Profile":"Perfil",title:t==="en"?"Profile":"Perfil","data-testid":"link-profile",children:[o.jsx(g2,{className:"h-4 w-4"}),o.jsx("span",{className:"hidden sm:inline",children:t==="en"?"Profile":"Perfil"})]})}),o.jsx(Te,{href:"/inbox",className:"hidden sm:inline-flex",children:o.jsxs(ue,{variant:"ghost",size:"sm",className:"gap-2 relative",children:[o.jsx(aM,{className:"h-4 w-4"}),o.jsx("span",{className:"hidden sm:inline",children:t==="en"?"Inbox":"Mensajes"}),!!f?.unreadMessages&&f.unreadMessages>0&&o.jsx("span",{className:"absolute -top-1 -right-1 min-w-[18px] h-[18px] px-1 rounded-full bg-red-600 text-white text-[10px] font-bold flex items-center justify-center",children:f.unreadMessages>9?"9+":f.unreadMessages})]})}),o.jsx("span",{className:"hidden md:inline text-sm text-white/80 max-w-[140px] truncate",children:f?.displayName||f?.email}),o.jsxs(ue,{variant:"outline",size:"sm",onClick:()=>m({redirectUrl:b}),className:"gap-2 px-2 sm:px-3","aria-label":t==="en"?"Sign out":"Salir",title:t==="en"?"Sign out":"Salir",children:[o.jsx(GM,{className:"h-4 w-4"}),o.jsx("span",{className:"sr-only sm:not-sr-only sm:inline",children:t==="en"?"Sign out":"Salir"})]})]}),o.jsxs(pa,{when:"signed-out",children:[o.jsx(ue,{variant:"ghost",size:"sm",onClick:()=>s("/sign-in"),children:t==="en"?"Sign in":"Iniciar sesión"}),o.jsx(ue,{size:"sm",onClick:()=>s("/sign-up"),children:t==="en"?"Sign up":"Registrarse"})]})]})]})}),o.jsxs("div",{className:"flex flex-1 container mx-auto",children:[o.jsx(yx,{className:"hidden md:flex w-64 flex-col border-r border-border shrink-0 py-6 pr-6"}),o.jsx("main",{className:"flex-1 w-full min-w-0 pb-12",children:e})]}),o.jsx("footer",{className:"border-t border-border bg-sidebar/50 py-8 mt-auto",children:o.jsxs("div",{className:"container mx-auto px-4 text-center text-sm text-muted-foreground",children:[o.jsx("p",{className:"font-serif text-lg mb-2 text-primary",children:"Woodbridge Academy"}),o.jsxs("nav",{className:"mb-2 flex flex-wrap items-center justify-center gap-x-4 gap-y-1",children:[o.jsx(Te,{href:"/curriculum-map",className:"hover:text-primary hover:underline",children:t==="en"?"Curriculum Map":"Mapa Curricular"}),o.jsx(Te,{href:"/about",className:"hover:text-primary hover:underline",children:t==="en"?"About":"Acerca de"}),o.jsx(Te,{href:"/deliverables",className:"hover:text-primary hover:underline",children:t==="en"?"Course Deliverables":"Entregables del Curso"}),o.jsx("a",{href:"https://site.edu24.gt/reportar-error",target:"_blank",rel:"noopener noreferrer",className:"hover:text-primary hover:underline",children:t==="en"?"Report a content error":"Reportar error en los contenidos"})]}),o.jsxs("p",{children:["© ",new Date().getFullYear()," ",t==="en"?"Mathematics Grade 4":"Matemáticas de 4.º Grado"]})]})}),o.jsx(AR,{})]})}function ER(e){const t=new URL(e);return t.searchParams.delete("wa_token"),`${t.pathname}${t.search}${t.hash}`}function NR(){let e=null;return function({token:r,isSignedIn:s,signOut:c,signIn:d,exchange:m,cleanUrl:h}
359){if(e)return e.token!==r?Promise.reject(new Error("A different portal sign-in is already in progress.")):e.promise;const f=(async()=>{s&&await c();const y=await m({token:r});if(!y.ticket?.trim())throw new Error("The course did not return a sign-in ticket.");const b=await d.ticket({ticket:y.ticket});if(b.error)throw b.error;if(d.status!=="complete"||!d.createdSessionId)throw new Error("The Clerk ticket sign-in did not create a session.");const v=await d.finalize();if(v.error)throw v.error;h()})();return e={token:r,promise:f},f}}const TR=NR();function MR(){window.history.replaceState(window.history.state,"",ER(window.location.href))}function PR(e){if(!e||typeof e!="object")return{code:"unknown"};const t="status"in e&&typeof e.status=="number"?e.status:void 0,r="data"in e&&e.data&&typeof e.data=="object"?e.data:void 0;return{code:r&&"error"in r&&typeof r.error=="string"?r.error:"unknown",status:t}}function _R(){return o.jsx("main",{className:"flex min-h-screen items-center justify-center bg-background px-6",children:o.jsxs("section",{className:"w-full max-w-md rounded-2xl border border-border bg-card p-8 text-center shadow-lg","aria-live":"polite",children:[o.jsx(mr,{className:"mx-auto size-10 animate-spin text-primary","aria-hidden":"true"}),o.jsx("h1",{className:"mt-5 font-serif text-2xl font-semibold text-primary",children:"Opening your mathematics course"}),o.jsx("p",{className:"mt-2 text-sm text-muted-foreground",children:"Abriendo tu curso de matemáticasâ¦"})]})})}function RR({error:e}){const t=e.code==="portal_link_expired"||e.status===401,r=e.status===403||e.code==="portal_course_mismatch"||e.code==="local_auth_failed",s=t?"This course link has expired":r?"The course could not complete sign-in":"Woodbridge Academy sign-in is unavailable",c=t?"Return to Woodbridge Academy and open the course again.":r?"The course connection needs attention. Please return to Woodbridge Academy and ask your teacher for help if the problem continues.":"Please return to Woodbridge Academy and open the course again in a moment.",d=t?"Este enlace del curso ha vencido. Regresa a Woodbridge Academy y abre el curso de nuevo.":r?"La conexión del curso necesita atención. Regresa a Woodbridge Academy y pide ayuda a tu maestro si el problema continúa.":"El inicio de sesión no está disponible. Regresa a Woodbridge Academy e inténtalo de nuevo.";return o.jsx("main",{className:"flex min-h-screen items-center justify-center bg-background px-6",children:o.jsxs("section",{className:"w-full max-w-lg rounded-2xl border border-border bg-card p-8 text-center shadow-lg",role:"alert",children:[o.jsx("span",{className:"mx-auto flex size-12 items-center justify-center rounded-full bg-destructive/10 text-destructive",children:o.jsx(Oo,{className:"size-6","aria-hidden":"true"})}),o.jsx("h1",{className:"mt-5 font-serif text-2xl font-semibold text-primary",children:s}),o.jsx("p",{className:"mt-3 text-foreground",children:c}),o.jsx("p",{className:"mt-2 text-sm text-muted-foreground",children:d}),o.jsx("a",{href:"https://woodbridgeauth.org",className:"mt-7 inline-flex min-h-11 items-center justify-center rounded-xl bg-primary px-5 py-2.5 font-medium text-primary-foreground transition-colors hover:bg-primary/90 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",children:"Return to Woodbridge Academy"})]})})}function IR({children:e}){const t=S.useRef(!1),r=S.useRef(null);t.current||(r.current=new URLSearchParams(window.location.search).get("wa_token"),t.current=!0);const s=r.current,{isLoaded:c,isSignedIn:d}=uf(),{signOut:m}=cf(),{signIn:h}=N5(),[f,y]=S.useState(s?"loading":"ready"),[b,v]=S.useState({code:"unknown"});return S.useEffect(()=>{if(!s||!c)return;let x=!1;return(async()=>{try{if(await TR({token:s,isSignedIn:d===!0,signOut:m,signIn:h,exchange:YE,cleanUrl:MR}),x)return;y("ready")}catch(k){if(x)return;v(PR(k)),y("error")}})(),()=>{x=!0}},[c,d,h,m,s]),!s||f==="ready"?e:f==="error"?o.jsx(RR,{error:b}):o.jsx(_R,{})}const qk=new bq({defaultOptions:{queries:{staleTime:3e4,retry:1,refetchOnWindowFocus:!1}}}),Ek=S.createContext({});function UR(e){const t=S.useRef(null);return t.current===null&&(t.current=e()),t.current}const DR=typeof window<"u",OR=DR?S.useLayoutEffect:S.useEffect,Mf=S.createContext(null);function Pf(e,t){e.indexOf(t)===-1&&e.push(t)}function rd(e,t){const r=e.indexOf(t);r>-1&&e.splice(r,1)}const un=(e,t,r)=>r>t?t:r<e?e:r;let _f=()=>{};const vr={}
vendor: 97,079 bytes, line 359
359,Nk=e=>/^-?(?:\d+(?:\.\d+)?|\.\d+)$/u.test(e);function Tk(e){return typeof e=="object"&&e!==null}const Mk=e=>/^0[^.\s]+$/u.test(e);function Pk(e){let t;return()=>(t===void 0&&(t=e()),t)}const La=e=>e,LR=(e,t)=>r=>t(e(r)),Yo=(...e)=>e.reduce(LR),Lo=(e,t,r)=>{const s=t-e;return s===0?1:(r-e)/s};class Rf{constructor(){this.subscriptions=[]}add(t){return Pf(this.subscriptions,t),()=>rd(this.subscriptions,t)}notify(t,r,s){const c=this.subscriptions.length;if(c)if(c===1)this.subscriptions[0](t,r,s);else for(let d=0;d<c;d++){const m=this.subscriptions[d];m&&m(t,r,s)}}getSize(){return this.subscriptions.length}clear(){this.subscriptions.length=0}}const qa=e=>e*1e3,Oa=e=>e/1e3;function _k(e,t){return t?e*(1e3/t):0}const Rk=(e,t,r)=>(((1-3*r+3*t)*e+(3*r-6*t))*e+3*t)*e,zR=1e-7,FR=12;function $R(e,t,r,s,c){let d,m,h=0;do m=t+(r-t)/2,d=Rk(m,s,c)-e,d>0?r=m:t=m;while(Math.abs(d)>zR&&++h<FR);return m}function Xo(e,t,r,s){if(e===t&&r===s)return La;const c=d=>$R(d,0,1,e,r);return d=>d===0||d===1?d:Rk(c(d),t,s)}const Ik=e=>t=>t<=.5?e(2*t)/2:(2-e(2*(1-t)))/2,Uk=e=>t=>1-e(1-t),Dk=Xo(.33,1.53,.69,.99),If=Uk(Dk),Ok=Ik(If),Lk=e=>e>=1?1:(e*=2)<1?.5*If(e):.5*(2-Math.pow(2,-10*(e-1))),Uf=e=>1-Math.sin(Math.acos(e)),zk=Uk(Uf),Fk=Ik(Uf),BR=Xo(.42,0,1,1),VR=Xo(0,0,.58,1),$k=Xo(.42,0,.58,1),WR=e=>Array.isArray(e)&&typeof e[0]!="number",Bk=e=>Array.isArray(e)&&typeof e[0]=="number",GR={linear:La,easeIn:BR,easeInOut:$k,easeOut:VR,circIn:Uf,circInOut:Fk,circOut:zk,backIn:If,backInOut:Ok,backOut:Dk,anticipate:Lk},KR=e=>typeof e=="string",_x=e=>{if(Bk(e)){_f(e.length===4);const[t,r,s,c]=e;return Xo(t,r,s,c)}else if(KR(e))return GR[e];return e},Ac=["setup","read","resolveKeyframes","preUpdate","update","preRender","render","postRender"];function HR(e,t){let r=new Set,s=new Set,c=!1,d=!1;const m=new WeakSet;let h={delta:0,timestamp:0,isProcessing:!1};function f(b){m.has(b)&&(y.schedule(b),e()),b(h)}const y={schedule:(b,v=!1,x=!1)=>{const E=x&&c?r:s;return v&&m.add(b),E.add(b),b},cancel:b=>{s.delete(b),m.delete(b)},process:b=>{if(h=b,c){d=!0;return}c=!0;const v=r;r=s,s=v,r.forEach(f),r.clear(),c=!1,d&&(d=!1,y.process(b))}};return y}const QR=40;function Vk(e,t){let r=!1,s=!0;const c={delta:0,timestamp:0,isProcessing:!1},d=()=>r=!0,m=Ac.reduce((I,$)=>(I[$]=HR(d),I),{}),{setup:h,read:f,resolveKeyframes:y,preUpdate:b,update:v,preRender:x,render:k,postRender:E}=m,C=()=>{const I=vr.useManualTiming,$=I?c.timestamp:performance.now();r=!1,I||(c.delta=s?1e3/60:Math.max(Math.min($-c.timestamp,QR),1)),c.timestamp=$,c.isProcessing=!0,h.process(c),f.process(c),y.process(c),b.process(c),v.process(c),x.process(c),k.process(c),E.process(c),c.isProcessing=!1,r&&t&&(s=!1,e(C))},N=()=>{r=!0,s=!0,c.isProcessing||e(C)};return{schedule:Ac.reduce((I,$)=>{const z=m[$];return I[$]=(G,L=!1,D=!1)=>(r||N(),z.schedule(G,L,D)),I},{}),cancel:I=>{for(let $=0;$<Ac.length;$++)m[Ac[$]].cancel(I)},state:c,steps:m}}const{schedule:ut,cancel:xr,state:Gt,steps:Up}=Vk(typeof requestAnimationFrame<"u"?requestAnimationFrame:La,!0);let Uc;function YR(){Uc=void 0}const aa={now:()=>(Uc===void 0&&aa.set(Gt.isProcessing||vr.useManualTiming?Gt.timestamp:performance.now()),Uc),set:e=>{Uc=e,queueMicrotask(YR)}},Wk=e=>t=>typeof t=="string"&&t.startsWith(e),Gk=Wk("--"),XR=Wk("var(--"),Df=e=>XR(e)?ZR.test(e.split("/*")[0].trim()):!1,ZR=/var\(--(?:[\w-]+\s*|[\w-]+\s*,(?:\s*[^)(\s]|\s*\((?:[^)(]|\([^)(]*\))*\))+\s*)\)$/iu;function Rx(e){return typeof e!="string"?!1:e.split("/*")[0].includes("var(--")}const hi={test:e=>typeof e=="number",parse:parseFloat,transform:e=>e},zo={...hi,transform:e=>un(0,1,e)},qc={...hi,default:1},qo=e=>Math.round(e*1e5)/1e5,Of=/-?(?:\d+(?:\.\d+)?|\.\d+)/gu;function JR(e){return e==null}const eI=/^(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\))$/iu,Lf=(e,t)=>r=>!!(typeof r=="string"&&eI.test(r)&&r.startsWith(e)||t&&!JR(r)&&Object.prototype.hasOwnProperty.call(r,t)),Kk=(e,t,r)=>s=>{if(typeof s!="string")return s;const[c,d,m,h]=s.match(Of);return{[e]:parseFloat(c),[t]:parseFloat(d),[r]:parseFloat(m),alpha:h!==void 0?parseFloat(h):1}},tI=e=>un(0,255,e),Dp={...hi,transform:e=>Math.round(tI(e))},Hr={test:Lf("rgb","red"),parse:Kk("red","green","blue"),transform:({red:e,green:t,blue:r,alpha:s=1})=>"rgba("+Dp.transform(e)+", "+Dp.transform(t)+", "+Dp.transform(r)+", "+qo(zo.transform(s))+")"};function aI(e){let t="",r="",s="",c="";return e.length>5?(t=e.substring(1,3),r=e.substring(3,5),s=e.substring(5,7),c=e.substring(7,9)):(t=e.substring(1,2),r=e.substring(2,3),s=e.substring(3,4),c=e.substring(4,5),t+=t,r+=r,s+=s,c+=c),{red:parseInt(t,16),green:parseInt(r,16),blue:parseInt(s,16),alpha:c?parseInt(c,16)/255:1}}const wh={test:Lf("#"),parse:aI,transform:Hr.transform},Zo=e=>({test:t=>typeof t=="string"&&t.endsWith(e)&&t.split(" ").length===1,parse:parseFloat,transform:t=>`${t}${e}`}),dr=Zo("deg"),cn=Zo("%"),ve=Zo("px"),nI=Zo("vh"),rI=Zo("vw"),Ix={...cn,parse:e=>cn.parse(e)/100,transform:e=>cn.transform(e*100)},ai={test:Lf("hsl","hue"),parse:Kk("hue","saturation","lightness"),transform:({hue:e,saturation:t,lightness:r,alpha:s=1})=>"hsla("+Math.round(e)+", "+cn.transform(qo(t))+", "+cn.transform(qo(r))+", "+qo(zo.transform(s))+")"},Nt={test:e=>Hr.test(e)||wh.test(e)||ai.test(e),parse:e=>Hr.test(e)?Hr.parse(e):ai.test(e)?ai.parse(e):wh.parse(e),transform:e=>typeof e=="string"?e:e.hasOwnProperty("red")?Hr.transform(e):ai.transform(e),getAnimatableNone:e=>{const t=Nt.parse(e);return t.alpha=0,Nt.transform(t)}},sI=/(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\))/giu;function iI(e){return isNaN(e)&&typeof e=="string"&&(e.match(Of)?.length||0)+(e.match(sI)?.length||0)>0}const Hk="number",Qk="color",oI="var",lI="var(",Ux="${}",cI=/var\s*\(\s*--(?:[\w-]+\s*|[\w-]+\s*,(?:\s*[^)(\s]|\s*\((?:[^)(]|\([^)(]*\))*\))+\s*)\)|#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\)|-?(?:\d+(?:\.\d+)?|\.\d+)/giu;function li(e){const t=e.toString(),r=[],s={color:[],number:[],var:[]},c=[];let d=0;const h=t.replace(cI,f=>(Nt.test(f)?(s.color.push(d),c.push(Qk),r.push(Nt.parse(f))):f.startsWith(lI)?(s.var.push(d),c.push(oI),r.push(f)):(s.number.push(d),c.push(Hk),r.push(parseFloat(f))),++d,Ux)).split(Ux);return{values:r,split:h,indexes:s,types:c}}function dI(e){return li(e).values}function Yk({split:e,types:t}){const r=e.length;return s=>{let c="";for(let d=0;d<r;d++)if(c+=e[d],s[d]!==void 0){const m=t[d];m===Hk?c+=qo(s[d]):m===Qk?c+=Nt.transform(s[d]):c+=s[d]}return c}}function uI(e){return Yk(li(e))}const mI=e=>typeof e=="number"?0:Nt.test(e)?Nt.getAnimatableNone(e):e,pI=(e,t)=>typeof e=="number"?t?.trim().endsWith("/")?e:0:mI(e);function hI(e){const t=li(e);return Yk(t)(t.values.map((s,c)=>pI(s,t.split[c])))}const Ha={test:iI,parse:dI,createTransformer:uI,getAnimatableNone:hI};function Op(e,t,r){return r<0&&(r+=1),r>1&&(r-=1),r<1/6?e+(t-e)*6*r:r<1/2?t:r<2/3?e+(t-e)*(2/3-r)*6:e}function fI({hue:e,saturation:t,lightness:r,alpha:s}){e/=360,t/=100,r/=100;let c=0,d=0,m=0;if(!t)c=d=m=r;else{const h=r<.5?r*(1+t):r+t-r*t,f=2*r-h;c=Op(f,h,e+1/3),d=Op(f,h,e),m=Op(f,h,e-1/3)}return{red:Math.round(c*255),green:Math.round(d*255),blue:Math.round(m*255),alpha:s}}function sd(e,t){return r=>r>0?t:e}const ht=(e,t,r)=>e+(t-e)*r,Lp=(e,t,r)=>{const s=e*e,c=r*(t*t-s)+s;return c<0?0:Math.sqrt(c)},gI=[wh,Hr,ai],yI=e=>gI.find(t=>t.test(e));function Dx(e){const t=yI(e);if(!t)return!1;let r=t.parse(e);return t===ai&&(r=fI(r)),r}const Ox=(e,t)=>{const r=Dx(e),s=Dx(t);if(!r||!s)return sd(e,t);const c={...r};return d=>(c.red=Lp(r.red,s.red,d),c.green=Lp(r.green,s.green,d),c.blue=Lp(r.blue,s.blue,d),c.alpha=ht(r.alpha,s.alpha,d),Hr.transform(c))},kh=new Set(["none","hidden"]);function bI(e,t){return kh.has(e)?r=>r<=0?e:t:r=>r>=1?t:e}function vI(e,t){return r=>ht(e,t,r)}function zf(e){return typeof e=="number"?vI:typeof e=="string"?Df(e)?sd:Nt.test(e)?Ox:kI:Array.isArray(e)?Xk:typeof e=="object"?Nt.test(e)?Ox:xI:sd}function Xk(e,t){const r=[...e],s=r.length,c=e.map((d,m)=>zf(d)(d,t[m]));return d=>{for(let m=0;m<s;m++)r[m]=c[m](d);return r}}function xI(e,t){const r={...e,...t},s={};for(const c in r)e[c]!==void 0&&t[c]!==void 0&&(s[c]=zf(e[c])(e[c],t[c]));return c=>{for(const d in s)r[d]=s[d](c);return r}}function wI(e,t){const r=[],s={color:0,var:0,number:0};for(let c=0;c<t.values.length;c++){const d=t.types[c],m=e.indexes[d][s[d]],h=e.values[m]??0;r[c]=h,s[d]++}return r}const kI=(e,t)=>{const r=Ha.createTransformer(t),s=li(e),c=li(t);return s.indexes.var.length===c.indexes.var.length&&s.indexes.color.length===c.indexes.color.length&&s.indexes.number.length>=c.indexes.number.length?kh.has(e)&&!c.values.length||kh.has(t)&&!s.values.length?bI(e,t):Yo(Xk(wI(s,c),c.values),r):sd(e,t)};function Zk(e,t,r){return typeof e=="number"&&typeof t=="number"&&typeof r=="number"?ht(e,t,r):zf(e)(e,t)}const SI=e=>{const t=({timestamp:r})=>e(r);return{start:(r=!0)=>ut.update(t,r),stop:()=>xr(t),now:()=>Gt.isProcessing?Gt.timestamp:aa.now()}},Jk=(e,t,r=10)=>{let s="";const c=Math.max(Math.round(t/r),2);for(let d=0;d<c;d++)s+=Math.round(e(d/(c-1))*1e4)/1e4+", ";return`linear(${s.substring(0,s.length-2)})`},id=2e4;function Ff(e){let t=0;const r=50;let s=e.next(t);for(;!s.done&&t<id;)t+=r,s=e.next(t);return t>=id?1/0:t}function CI(e,t=100,r){const s=r({...e,keyframes:[0,t]}),c=Math.min(Ff(s),id);return{type:"keyframes",ease:d=>s.next(c*d).value/t,duration:Oa(c)}}const wt={stiffness:100,damping:10,mass:1,velocity:0,duration:800,bounce:.3,visualDuration:.3,restSpeed:{granular:.01,default:2},restDelta:{granular:.005,default:.5},minDuration:.01,maxDuration:10,minDamping:.05,maxDamping:1};function Sh(e,t){return e*Math.sqrt(1-t*t)}const jI=12;function AI(e,t,r){let s=r;for(let c=1;c<jI;c++)s=s-e(s)/t(s);return s}const zp=.001;function qI({duration:e=wt.duration,bounce:t=wt.bounce,velocity:r=wt.velocity,mass:s=wt.mass}){let c,d,m=1-t;m=un(wt.minDamping,wt.maxDamping,m),e=un(wt.minDuration,wt.maxDuration,Oa(e)),m<1?(c=y=>{const b=y*m,v=b*e,x=b-r,k=Sh(y,m),E=Math.exp(-v);return zp-x/k*E},d=y=>{const v=y*m*e,x=v*r+r,k=Math.pow(m,2)*Math.pow(y,2)*e,E=Math.exp(-v),C=Sh(Math.pow(y,2),m);return(-c(y)+zp>0?-1:1)*((x-k)*E)/C}):(c=y=>{const b=Math.exp(-y*e),v=(y-r)*e+1;return-zp+b*v},d=y=>{const b=Math.exp(-y*e),v=(r-y)*(e*e);return b*v});const h=5/e,f=AI(c,d,h);if(e=qa(e),isNaN(f))return{stiffness:wt.stiffness,damping:wt.damping,duration:e};{const y=Math.pow(f,2)*s;return{stiffness:y,damping:m*2*Math.sqrt(s*y),duration:e}}}const EI=["duration","bounce"],NI=["stiffness","damping","mass"];function Lx(e,t){return t.some(r=>e[r]!==void 0)}function TI(e){let t={velocity:wt.velocity,stiffness:wt.stiffness,damping:wt.damping,mass:wt.mass,isResolvedFromDuration:!1,...e};if(!Lx(e,NI)&&Lx(e,EI))if(t.velocity=0,e.visualDuration){const r=e.visualDuration,s=2*Math.PI/(r*1.2),c=s*s,d=2*un(.05,1,1-(e.bounce||0))*Math.sqrt(c);t={...t,mass:wt.mass,stiffness:c,damping:d}}else{const r=qI({...e,velocity:0});t={...t,...r,mass:wt.mass},t.isResolvedFromDuration=!0}return t}function od(e=wt.visualDuration,t=wt.bounce){const r=typeof e!="object"?{visualDuration:e,keyframes:[0,1],bounce:t}:e;let{restSpeed:s,restDelta:c}=r;const d=r.keyframes[0],m=r.keyframes[r.keyframes.length-1],h={done:!1,value:d},{stiffness:f,damping:y,mass:b,duration:v,velocity:x,isResolvedFromDuration:k}=TI({...r,velocity:-Oa(r.velocity||0)}),E=x||0,C=y/(2*Math.sqrt(f*b)),N=m-d,q=Oa(Math.sqrt(f/b)),R=Math.abs(N)<5;s||(s=R?wt.restSpeed.granular:wt.restSpeed.default),c||(c=R?wt.restDelta.granular:wt.restDelta.default);let I,$,z,G,L,D;if(C<1)z=Sh(q,C),G=(E+C*q*N)/z,I=ne=>{const me=Math.exp(-C*q*ne);return m-me*(G*Math.sin(z*ne)+N*Math.cos(z*ne))},L=C*q*G+N*z,D=C*q*N-G*z,$=ne=>Math.exp(-C*q*ne)*(L*Math.sin(z*ne)+D*Math.cos(z*ne));else if(C===1){I=me=>m-Math.exp(-q*me)*(N+(E+q*N)*me);const ne=E+q*N;$=me=>Math.exp(-q*me)*(q*ne*me-E)}else{const ne=q*Math.sqrt(C*C-1);I=Ee=>{const Ae=Math.exp(-C*q*Ee),V=Math.min(ne*Ee,300);return m-Ae*((E+C*q*N)*Math.sinh(V)+ne*N*Math.cosh(V))/ne};const me=(E+C*q*N)/ne,pe=C*q*me-N*ne,Re=C*q*N-me*ne;$=Ee=>{const Ae=Math.exp(-C*q*Ee),V=Math.min(ne*Ee,300);return Ae*(pe*Math.sinh(V)+Re*Math.cosh(V))}}const ee={calculatedDuration:k&&v||null,velocity:ne=>qa($(ne)),next:ne=>{if(!k&&C<1){const pe=Math.exp(-C*q*ne),Re=Math.sin(z*ne),Ee=Math.cos(z*ne),Ae=m-pe*(G*Re+N*Ee),V=qa(pe*(L*Re+D*Ee));return h.done=Math.abs(V)<=s&&Math.abs(m-Ae)<=c,h.value=h.done?m:Ae,h}const me=I(ne);if(k)h.done=ne>=v;else{const pe=qa($(ne));h.done=Math.abs(pe)<=s&&Math.abs(m-me)<=c}return h.value=h.done?m:me,h},toString:()=>{const ne=Math.min(Ff(ee),id),me=Jk(pe=>ee.next(ne*pe).value,ne,30);return ne+"ms "+me},toTransition:()=>{}};return ee}od.applyToOptions=e=>{const t=CI(e,100,od);return e.ease=t.ease,e.duration=qa(t.duration),e.type="keyframes",e};const MI=5;function e4(e,t,r){const s=Math.max(t-MI,0);return _k(r-e(s),t-s)}function Ch({keyframes:e,velocity:t=0,power:r=.8,timeConstant:s=325,bounceDamping:c=10,bounceStiffness:d=500,modifyTarget:m,min:h,max:f,restDelta:y=.5,restSpeed:b}){const v=e[0],x={done:!1,value:v},k=D=>h!==void 0&&D<h||f!==void 0&&D>f,E=D=>h===void 0?f:f===void 0||Math.abs(h-D)<Math.abs(f-D)?h:f;let C=r*t;const N=v+C,q=m===void 0?N:m(N);q!==N&&(C=q-v);const R=D=>-C*Math.exp(-D/s),I=D=>q+R(D),$=D=>{const ee=R(D),ne=I(D);x.done=Math.abs(ee)<=y,x.value=x.done?q:ne};let z,G;const L=D=>{k(x.value)&&(z=D,G=od({keyframes:[x.value,E(x.value)],velocity:e4(I,D,x.value),damping:c,stiffness:d,restDelta:y,restSpeed:b}))};return L(0),{calculatedDuration:null,next:D=>{let ee=!1;return!G&&z===void 0&&(ee=!0,$(D),L(D)),z!==void 0&&D>=z?G.next(D-z):(!ee&&$(D),x)}}}function PI(e,t,r){const s=[],c=r||vr.mix||Zk,d=e.length-1;for(let m=0;m<d;m++){let h=c(e[m],e[m+1]);if(t){const f=Array.isArray(t)?t[m]||La:t;h=Yo(f,h)}s.push(h)}return s}function _I(e,t,{clamp:r=!0,ease:s,mixer:c}={}){const d=e.length;if(_f(d===t.length),d===1)return()=>t[0];if(d===2&&t[0]===t[1])return()=>t[1];const m=e[0]===e[1];e[0]>e[d-1]&&(e=[...e].reverse(),t=[...t].reverse());const h=PI(t,s,c),f=h.length,y=b=>{if(m&&b<e[0])return t[0];let v=0;if(f>1)for(;v<e.length-2&&!(b<e[v+1]);v++);const x=Lo(e[v],e[v+1],b);return h[v](x)};return r?b=>y(un(e[0],e[d-1],b)):y}function RI(e,t){const r=e[e.length-1];for(let s=1;s<=t;s++){const c=Lo(0,t,s);e.push(ht(r,1,c))}}function II(e){const t=[0];return RI(t,e.length-1),t}function UI(e,t){return e.map(r=>r*t)}function DI(e,t){return e.map(()=>t||$k).splice(0,e.length-1)}function Eo({duration:e=300,keyframes:t,times:r,ease:s="easeInOut"}){const c=WR(s)?s.map(_x):_x(s),d={done:!1,value:t[0]},m=UI(r&&r.length===t.length?r:II(t),e),h=_I(m,t,{ease:Array.isArray(c)?c:DI(t,c)});return{calculatedDuration:e,next:f=>(d.value=h(f),d.done=f>=e,d)}}const OI=e=>e!==null;function zd(e,{repeat:t,repeatType:r="loop"},s,c=1){const d=e.filter(OI),h=c<0||t&&r!=="loop"&&t%2===1?0:d.length-1;return!h||s===void 0?d[h]:s}const LI={decay:Ch,inertia:Ch,tween:Eo,keyframes:Eo,spring:od};function t4(e){typeof e.type=="string"&&(e.type=LI[e.type])}class $f{constructor(){this.updateFinished()}get finished(){return this._finished}updateFinished(){this._finished=new Promise(t=>{this.resolve=t})}notifyFinished(){this.resolve()}then(t,r){return this.finished.then(t,r)}}const zI=e=>e/100;class ld extends $f{constructor(t){super(),this.state="idle",this.startTime=null,this.isStopped=!1,this.currentTime=0,this.holdTime=null,this.playbackSpeed=1,this.delayState={done:!1,value:void 0},this.stop=()=>{const{motionValue:r}=this.options;r&&r.updatedAt!==aa.now()&&this.tick(aa.now()),this.isStopped=!0,this.state!=="idle"&&(this.teardown(),this.options.onStop?.())},this.options=t,this.initAnimation(),this.play(),t.autoplay===!1&&this.pause()}initAnimation(){const{options:t}=this;t4(t);const{type:r=Eo,repeat:s=0,repeatDelay:c=0,repeatType:d,velocity:m=0}=t;let{keyframes:h}=t;const f=r||Eo;f!==Eo&&typeof h[0]!="number"&&(this.mixKeyframes=Yo(zI,Zk(h[0],h[1])),h=[0,100]);const y=f({...t,keyframes:h});d==="mirror"&&(this.mirroredGenerator=f({...t,keyframes:[...h].reverse(),velocity:-m})),y.calculatedDuration===null&&(y.calculatedDuration=Ff(y));const{calculatedDuration:b}=y;this.calculatedDuration=b,this.resolvedDuration=b+c,this.totalDuration=this.resolvedDuration*(s+1)-c,this.generator=y}updateTime(t){const r=Math.round(t-this.startTime)*this.playbackSpeed;this.holdTime!==null?this.currentTime=this.holdTime:this.currentTime=r}tick(t,r=!1){const{generator:s,totalDuration:c,mixKeyframes:d,mirroredGenerator:m,resolvedDuration:h,calculatedDuration:f}=this;if(this.startTime===null)return s.next(0);const{delay:y=0,keyframes:b,repeat:v,repeatType:x,repeatDelay:k,type:E,onUpdate:C,finalKeyframe:N}=this.options;this.speed>0?this.startTime=Math.min(this.startTime,t):this.speed<0&&(this.startTime=Math.min(t-c/this.speed,this.startTime)),r?this.currentTime=t:this.updateTime(t);const q=this.currentTime-y*(this.playbackSpeed>=0?1:-1),R=this.playbackSpeed>=0?q<0:q>c;this.currentTime=Math.max(q,0),this.state==="finished"&&this.holdTime===null&&(this.currentTime=c);let I=this.currentTime,$=s;if(v){const D=Math.min(this.currentTime,c)/h;let ee=Math.floor(D),ne=D%1;!ne&&D>=1&&(ne=1),ne===1&&ee--,ee=Math.min(ee,v+1),ee%2&&(x==="reverse"?(ne=1-ne,k&&(ne-=k/h)):x==="mirror"&&($=m)),I=un(0,1,ne)*h}let z;R?(this.delayState.value=b[0],z=this.delayState):z=$.next(I),d&&!R&&(z.value=d(z.value));let{done:G}=z;!R&&f!==null&&(G=this.playbackSpeed>=0?this.currentTime>=c:this.currentTime<=0);const L=this.holdTime===null&&(this.state==="finished"||this.state==="running"&&G);return L&&E!==Ch&&(z.value=zd(b,this.options,N,this.speed)),C&&C(z.value),L&&this.finish(),z}then(t,r){return this.finished.then(t,r)}get duration(){return Oa(this.calculatedDuration)}get iterationDuration(){const{delay:t=0}=this.options||{};return this.duration+Oa(t)}get time(){return Oa(this.currentTime)}set time(t){t=qa(t),this.currentTime=t,this.startTime===null||this.holdTime!==null||this.playbackSpeed===0?this.holdTime=t:this.driver&&(this.startTime=this.driver.now()-t/this.playbackSpeed),this.driver?this.driver.start(!1):(this.startTime=0,this.state="paused",this.holdTime=t,this.tick(t))}getGeneratorVelocity(){const t=this.currentTime;if(t<=0)return this.options.velocity||0;if(this.generator.velocity)return this.generator.velocity(t);const r=this.generator.next(t).value;return e4(s=>this.generator.next(s).value,t,r)}get speed(){return this.playbackSpeed}set speed(t){const r=this.playbackSpeed!==t;r&&this.driver&&this.updateTime(aa.now()),this.playbackSpeed=t,r&&this.driver&&(this.time=Oa(this.currentTime))}play(){if(this.isStopped)return;const{driver:t=SI,startTime:r}=this.options;this.driver||(this.driver=t(c=>this.tick(c))),this.options.onPlay?.();const s=this.driver.now();this.state==="finished"?(this.updateFinished(),this.startTime=s):this.holdTime!==null?this.startTime=s-this.holdTime:this.startTime||(this.startTime=r??s),this.state==="finished"&&this.speed<0&&(this.startTime+=this.calculatedDuration),this.holdTime=null,this.state="running",this.driver.start()}pause(){this.state="paused",this.updateTime(aa.now()),this.holdTime=this.currentTime}complete(){this.state!=="running"&&this.play(),this.state="finished",this.holdTime=null}finish(){this.notifyFinished(),this.teardown(),this.state="finished",this.options.onComplete?.()}cancel(){this.holdTime=null,this.startTime=0,this.tick(0),this.teardown(),this.options.onCancel?.()}teardown(){this.state="idle",this.stopDriver(),this.startTime=this.holdTime=null}stopDriver(){this.driver&&(this.driver.stop(),this.driver=void 0)}sample(t){return this.startTime=0,this.tick(t,!0)}attachTimeline(t){return this.options.allowFlatten&&(this.options.type="keyframes",this.options.ease="linear",this.initAnimation()),this.driver?.stop(),t.observe(this)}}function FI(e){for(let t=1;t<e.length;t++)e[t]??(e[t]=e[t-1])}const Qr=e=>e*180/Math.PI,jh=e=>{const t=Qr(Math.atan2(e[1],e[0]));return Ah(t)},$I={x:4,y:5,translateX:4,translateY:5,scaleX:0,scaleY:3,scale:e=>(Math.abs(e[0])+Math.abs(e[3]))/2,rotate:jh,rotateZ:jh,skewX:e=>Qr(Math.atan(e[1])),skewY:e=>Qr(Math.atan(e[2])),skew:e=>(Math.abs(e[1])+Math.abs(e[2]))/2},Ah=e=>(e=e%360,e<0&&(e+=360),e),zx=jh,Fx=e=>Math.sqrt(e[0]*e[0]+e[1]*e[1]),$x=e=>Math.sqrt(e[4]*e[4]+e[5]*e[5]),BI={x:12,y:13,z:14,translateX:12,translateY:13,translateZ:14,scaleX:Fx,scaleY:$x,scale:e=>(Fx(e)+$x(e))/2,rotateX:e=>Ah(Qr(Math.atan2(e[6],e[5]))),rotateY:e=>Ah(Qr(Math.atan2(-e[2],e[0]))),rotateZ:zx,rotate:zx,skewX:e=>Qr(Math.atan(e[4])),skewY:e=>Qr(Math.atan(e[1])),skew:e=>(Math.abs(e[1])+Math.abs(e[4]))/2};function qh(e){return e.includes("scale")?1:0}function Eh(e,t){if(!e||e==="none")return qh(t);const r=e.match(/^matrix3d\(([-\d.e\s,]+)\)$/u);let s,c;if(r)s=BI,c=r;else{const h=e.match(/^matrix\(([-\d.e\s,]+)\)$/u);s=$I,c=h}if(!c)return qh(t);const d=s[t],m=c[1].split(",").map(WI);return typeof d=="function"?d(m):m[d]}const VI=(e,t)=>{const{transform:r="none"}=getComputedStyle(e);return Eh(r,t)};function WI(e){return parseFloat(e.trim())}const fi=["transformPerspective","x","y","z","translateX","translateY","translateZ","scale","scaleX","scaleY","rotate","rotateX","rotateY","rotateZ","skew","skewX","skewY"],gi=new Set(fi),Bx=e=>e===hi||e===ve,GI=new Set(["x","y","z"]),KI=fi.filter(e=>!GI.has(e));function HI(e){const t=[];return KI.forEach(r=>{const s=e.getValue(r);s!==void 0&&(t.push([r,s.get()]),s.set(r.startsWith("scale")?1:0))}),t}const hr={width:({x:e},{paddingLeft:t="0",paddingRight:r="0",boxSizing:s})=>{const c=e.max-e.min;return s==="border-box"?c:c-parseFloat(t)-parseFloat(r)},height:({y:e},{paddingTop:t="0",paddingBottom:r="0",boxSizing:s})=>{const c=e.max-e.min;return s==="border-box"?c:c-parseFloat(t)-parseFloat(r)},top:(e,{top:t})=>parseFloat(t),left:(e,{left:t})=>parseFloat(t),bottom:({y:e},{top:t})=>parseFloat(t)+(e.max-e.min),right:({x:e},{left:t})=>parseFloat(t)+(e.max-e.min),x:(e,{transform:t})=>Eh(t,"x"),y:(e,{transform:t})=>Eh(t,"y")};hr.translateX=hr.x;hr.translateY=hr.y;const Zr=new Set;let Nh=!1,Th=!1,Mh=!1;function a4(){if(Th){const e=Array.from(Zr).filter(s=>s.needsMeasurement),t=new Set(e.map(s=>s.element)),r=new Map;t.forEach(s=>{const c=HI(s);c.length&&(r.set(s,c),s.render())}),e.forEach(s=>s.measureInitialState()),t.forEach(s=>{s.render();const c=r.get(s);c&&c.forEach(([d,m])=>{s.getValue(d)?.set(m)})}),e.forEach(s=>s.measureEndState()),e.forEach(s=>{s.suspendedScrollY!==void 0&&window.scrollTo(0,s.suspendedScrollY)})}Th=!1,Nh=!1,Zr.forEach(e=>e.complete(Mh)),Zr.clear()}function n4(){Zr.forEach(e=>{e.readKeyframes(),e.needsMeasurement&&(Th=!0)})}function QI(){Mh=!0,n4(),a4(),Mh=!1}class Bf{constructor(t,r,s,c,d,m=!1){this.state="pending",this.isAsync=!1,this.needsMeasurement=!1,this.unresolvedKeyframes=[...t],this.onComplete=r,this.name=s,this.motionValue=c,this.element=d,this.isAsync=m}scheduleResolve(){this.state="scheduled",this.isAsync?(Zr.add(this),Nh||(Nh=!0,ut.read(n4),ut.resolveKeyframes(a4))):(this.readKeyframes(),this.complete())}readKeyframes(){const{unresolvedKeyframes:t,name:r,element:s,motionValue:c}=this;if(t[0]===null){const d=c?.get(),m=t[t.length-1];if(d!==void 0)t[0]=d;else if(s&&r){const h=s.readValue(r,m);h!=null&&(t[0]=h)}t[0]===void 0&&(t[0]=m),c&&d===void 0&&c.set(t[0])}FI(t)}setFinalKeyframe(){}measureInitialState(){}renderEndStyles(){}measureEndState(){}complete(t=!1){this.state="complete",this.onComplete(this.unresolvedKeyframes,this.finalKeyframe,t),Zr.delete(this)}cancel(){this.state==="scheduled"&&(Zr.delete(this),this.state="pending")}resume(){this.state==="pending"&&this.scheduleResolve()}}const YI=e=>e.startsWith("--");function r4(e,t,r){YI(t)?e.style.setProperty(t,r):e.style[t]=r}const XI={};function s4(e,t){const r=Pk(e);return()=>XI[t]??r()}const ZI=s4(()=>window.ScrollTimeline!==void 0,"scrollTimeline"),i4=s4(()=>{try{document.createElement("div").animate({opacity:0},{easing:"linear(0, 1)"})}catch{return!1}return!0},"linearEasing"),ko=([e,t,r,s])=>`cubic-bezier(${e}, ${t}, ${r}, ${s})`,Vx={linear:"linear",ease:"ease",easeIn:"ease-in",easeOut:"ease-out",easeInOut:"ease-in-out",circIn:ko([0,.65,.55,1]),circOut:ko([.55,0,1,.45]),backIn:ko([.31,.01,.66,-.59]),backOut:ko([.33,1.53,.69,.99])};function o4(e,t){if(e)return typeof e=="function"?i4()?Jk(e,t):"ease-out":Bk(e)?ko(e):Array.isArray(e)?e.map(r=>o4(r,t)||Vx.easeOut):Vx[e]}function JI(e,t,r,{delay:s=0,duration:c=300,repeat:d=0,repeatType:m="loop",ease:h="easeOut",times:f}={},y=void 0){const b={[t]:r};f&&(b.offset=f);const v=o4(h,c);Array.isArray(v)&&(b.easing=v);const x={delay:s,duration:c,easing:Array.isArray(v)?"linear":v,fill:"both",iterations:d+1,direction:m==="reverse"?"alternate":"normal"};return y&&(x.pseudoElement=y),e.animate(b,x)}function l4(e){return typeof e=="function"&&"applyToOptions"in e}function eU({type:e,...t}){return l4(e)&&i4()?e.applyToOptions(t):(t.duration??(t.duration=300),t.ease??(t.ease="easeOut"),t)}class c4 extends $f{constructor(t){if(super(),this.finishedTime=null,this.isStopped=!1,this.manualStartTime=null,!t)return;const{element:r,name:s,keyframes:c,pseudoElement:d,allowFlatten:m=!1,finalKeyframe:h,onComplete:f}=t;this.isPseudoElement=!!d,this.allowFlatten=m,this.options=t,_f(typeof t.type!="string");const y=eU(t);this.animation=JI(r,s,c,y,d),y.autoplay===!1&&this.animation.pause(),this.animation.onfinish=()=>{if(this.finishedTime=this.time,!d){const b=zd(c,this.options,h,this.speed);this.updateMotionValue&&this.updateMotionValue(b),r4(r,s,b),this.animation.cancel()}f?.(),this.notifyFinished()}}play(){this.isStopped||(this.manualStartTime=null,this.animation.play(),this.state==="finished"&&this.updateFinished())}pause(){this.animation.pause()}complete(){this.animation.finish?.()}cancel(){try{this.animation.cancel()}catch{}}stop(){if(this.isStopped)return;this.isStopped=!0;const{state:t}=this;t==="idle"||t==="finished"||(this.updateMotionValue?this.updateMotionValue():this.commitStyles(),this.isPseudoElement||this.cancel())}commitStyles(){const t=this.options?.element;!this.isPseudoElement&&t?.isConnected&&this.animation.commitStyles?.()}get duration(){const t=this.animation.effect?.getComputedTiming?.().duration||0;return Oa(Number(t))}get iterationDuration(){const{delay:t=0}=this.options||{};return this.duration+Oa(t)}get time(){return Oa(Number(this.animation.currentTime)||0)}set time(t){const r=this.finishedTime!==null;this.manualStartTime=null,this.finishedTime=null,this.animation.currentTime=qa(t),r&&this.animation.pause()}get speed(){return this.animation.playbackRate}set speed(t){t<0&&(this.finishedTime=null),this.animation.playbackRate=t}get state(){return this.finishedTime!==null?"finished":this.animation.playState}get startTime(){return this.manualStartTime??Number(this.animation.startTime)}set startTime(t){this.manualStartTime=this.animation.startTime=t}attachTimeline({timeline:t,rangeStart:r,rangeEnd:s,observe:c}){return this.allowFlatten&&this.animation.effect?.updateTiming({easing:"linear"}),this.animation.onfinish=null,t&&ZI()?(this.animation.timeline=t,r&&(this.animation.rangeStart=r),s&&(this.animation.rangeEnd=s),La):c(this)}}const d4={anticipate:Lk,backInOut:Ok,circInOut:Fk};function tU(e){return e in d4}function aU(e){typeof e.ease=="string"&&tU(e.ease)&&(e.ease=d4[e.ease])}const Fp=10;class nU extends c4{constructor(t){aU(t),t4(t),super(t),t.startTime!==void 0&&t.autoplay!==!1&&(this.startTime=t.startTime),this.options=t}updateMotionValue(t){const{motionValue:r,onUpdate:s,onComplete:c,element:d,...m}=this.options;if(!r)return;if(t!==void 0){r.set(t);return}const h=new ld({...m,autoplay:!1}),f=Math.max(Fp,aa.now()-this.startTime),y=un(0,Fp,f-Fp),b=h.sample(f).value,{name:v}=this.options;d&&v&&r4(d,v,b),r.setWithVelocity(h.sample(Math.max(0,f-y)).value,b,y),h.stop()}}const Wx=(e,t)=>t==="zIndex"?!1:!!(typeof e=="number"||Array.isArray(e)||typeof e=="string"&&(Ha.test(e)||e==="0")&&!e.startsWith("url("));function rU(e){const t=e[0];if(e.length===1)return!0;for(let r=0;r<e.length;r++)if(e[r]!==t)return!0}function sU(e,t,r,s){const c=e[0];if(c===null)return!1;if(t==="display"||t==="visibility")return!0;const d=e[e.length-1],m=Wx(c,t),h=Wx(d,t);return!m||!h?!1:rU(e)||(r==="spring"||l4(r))&&s}function Ph(e){e.duration=0,e.type="keyframes"}const u4=new Set(["opacity","clipPath","filter","transform"]),iU=/^(?:oklch|oklab|lab|lch|color|color-mix|light-dark)\(/;function oU(e){for(let t=0;t<e.length;t++)if(typeof e[t]=="string"&&iU.test(e[t]))return!0;return!1}const lU=new Set(["color","backgroundColor","outlineColor","fill","stroke","borderColor","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor"]),cU=Pk(()=>Object.hasOwnProperty.call(Element.prototype,"animate"));function dU(e){const{motionValue:t,name:r,repeatDelay:s,repeatType:c,damping:d,type:m,keyframes:h}=e;if(!(t?.owner?.current instanceof HTMLElement))return!1;const{onUpdate:y,transformTemplate:b}=t.owner.getProps();return cU()&&r&&(u4.has(r)||lU.has(r)&&oU(h))&&(r!=="transform"||!b)&&!y&&!s&&c!=="mirror"&&d!==0&&m!=="inertia"}const uU=40;class mU extends $f{constructor({autoplay:t=!0,delay:r=0,type:s="keyframes",repeat:c=0,repeatDelay:d=0,repeatType:m="loop",keyframes:h,name:f,motionValue:y,element:b,...v}){super(),this.stop=()=>{this._animation&&(this._animation.stop(),this.stopTimeline?.()),this.keyframeResolver?.cancel()},this.createdAt=aa.now();const x={autoplay:t,delay:r,type:s,repeat:c,repeatDelay:d,repeatType:m,name:f,motionValue:y,element:b,...v},k=b?.KeyframeResolver||Bf;this.keyframeResolver=new k(h,(E,C,N)=>this.onKeyframesResolved(E,C,x,!N),f,y,b),this.keyframeResolver?.scheduleResolve()}onKeyframesResolved(t,r,s,c){this.keyframeResolver=void 0;const{name:d,type:m,velocity:h,delay:f,isHandoff:y,onUpdate:b}=s;this.resolvedAt=aa.now();let v=!0;sU(t,d,m,h)||(v=!1,(vr.instantAnimations||!f)&&b?.(zd(t,s,r)),t[0]=t[t.length-1],Ph(s),s.repeat=0);const k={startTime:c?this.resolvedAt?this.resolvedAt-this.createdAt>uU?this.resolvedAt:this.createdAt:this.createdAt:void 0,finalKeyframe:r,...s,keyframes:t},E=v&&!y&&dU(k),C=k.motionValue?.owner?.current;let N;if(E)try{N=new nU({...k,element:C})}catch{N=new ld(k)}else N=new ld(k);N.finished.then(()=>{this.notifyFinished()}).catch(La),this.pendingTimeline&&(this.stopTimeline=N.attachTimeline(this.pendingTimeline),this.pendingTimeline=void 0),this._animation=N}get finished(){return this._animation?this.animation.finished:this._finished}then(t,r){return this.finished.finally(t).then(()=>{})}get animation(){return this._animation||(this.keyframeResolver?.resume(),QI()),this._animation}get duration(){return this.animation.duration}get iterationDuration(){return this.animation.iterationDuration}get time(){return this.animation.time}set time(t){this.animation.time=t}get speed(){return this.animation.speed}get state(){return this.animation.state}set speed(t){this.animation.speed=t}get startTime(){return this.animation.startTime}attachTimeline(t){return this._animation?this.stopTimeline=this.animation.attachTimeline(t):this.pendingTimeline=t,()=>this.stop()}play(){this.animation.play()}pause(){this.animation.pause()}complete(){this.animation.complete()}cancel(){this._animation&&this.animation.cancel(),this.keyframeResolver?.cancel()}}function m4(e,t,r,s=0,c=1){const d=Array.from(e).sort((y,b)=>y.sortNodePosition(b)).indexOf(t),m=e.size,h=(m-1)*s;return typeof r=="function"?r(d,m):c===1?d*s:h-d*s}const pU=/^var\(--(?:([\w-]+)|([\w-]+), ?([a-zA-Z\d ()%#.,-]+))\)/u;function hU(e){const t=pU.exec(e);if(!t)return[,];const[,r,s,c]=t;return[`--${r??s}`,c]}function p4(e,t,r=1){const[s,c]=hU(e);if(!s)return;const d=window.getComputedStyle(t).getPropertyValue(s);if(d){const m=d.trim();return Nk(m)?parseFloat(m):m}return Df(c)?p4(c,t,r+1):c}const fU={type:"spring",stiffness:500,damping:25,restSpeed:10},gU=e=>({type:"spring",stiffness:550,damping:e===0?2*Math.sqrt(550):30,restSpeed:10}),yU={type:"keyframes",duration:.8},bU={type:"keyframes",ease:[.25,.1,.35,1],duration:.3},vU=(e,{keyframes:t})=>t.length>2?yU:gi.has(e)?e.startsWith("scale")?gU(t[1]):fU:bU;function h4(e,t){if(e?.inherit&&t){const{inherit:r,...s}=e;return{...t,...s}}return e}function Vf(e,t){const r=e?.[t]??e?.default??e;return r!==e?h4(r,e):r}const xU=new Set(["when","delay","delayChildren","staggerChildren","staggerDirection","repeat","repeatType","repeatDelay","from","elapsed"]);function wU(e){for(const t in e)if(!xU.has(t))return!0;return!1}const Wf=(e,t,r,s={},c,d)=>m=>{const h=Vf(s,e)||{},f=h.delay||s.delay||0;let{elapsed:y=0}=s;y=y-qa(f);const b={keyframes:Array.isArray(r)?r:[null,r],ease:"easeOut",velocity:t.getVelocity(),...h,delay:-y,onUpdate:x=>{t.set(x),h.onUpdate&&h.onUpdate(x)},onComplete:()=>{m(),h.onComplete&&h.onComplete()},name:e,motionValue:t,element:d?void 0:c};wU(h)||Object.assign(b,vU(e,b)),b.duration&&(b.duration=qa(b.duration)),b.repeatDelay&&(b.repeatDelay=qa(b.repeatDelay)),b.from!==void 0&&(b.keyframes[0]=b.from);let v=!1;if((b.type===!1||b.duration===0&&!b.repeatDelay)&&(Ph(b),b.delay===0&&(v=!0)),(vr.instantAnimations||vr.skipAnimations||c?.shouldSkipAnimations)&&(v=!0,Ph(b),b.delay=0),b.allowFlatten=!h.type&&!h.ease,v&&!d&&t.get()!==void 0){const x=zd(b.keyframes,h);if(x!==void 0){ut.update(()=>{b.onUpdate(x),b.onComplete()});return}}return h.isSync?new ld(b):new mU(b)};function Gx(e){const t=[{},{}];return e?.values.forEach((r,s)=>{t[0][s]=r.get(),t[1][s]=r.getVelocity()}),t}function Gf(e,t,r,s){if(typeof t=="function"){const[c,d]=Gx(s);t=t(r!==void 0?r:e.custom,c,d)}if(typeof t=="string"&&(t=e.variants&&e.variants[t]),typeof t=="function"){const[c,d]=Gx(s);t=t(r!==void 0?r:e.custom,c,d)}return t}function Jr(e,t,r){const s=e.getProps();return Gf(s,t,r!==void 0?r:s.custom,e)}const f4=new Set(["width","height","top","left","right","bottom",...fi]),Kx=30,kU=e=>!isNaN(parseFloat(e));class SU{constructor(t,r={}){this.canTrackVelocity=null,this.events={},this.updateAndNotify=s=>{const c=aa.now();if(this.updatedAt!==c&&this.setPrevFrameValue(),this.prev=this.current,this.setCurrent(s),this.current!==this.prev&&(this.events.change?.notify(this.current),this.dependents))for(const d of this.dependents)d.dirty()},this.hasAnimated=!1,this.setCurrent(t),this.owner=r.owner}setCurrent(t){this.current=t,this.updatedAt=aa.now(),this.canTrackVelocity===null&&t!==void 0&&(this.canTrackVelocity=kU(this.current))}setPrevFrameValue(t=this.current){this.prevFrameValue=t,this.prevUpdatedAt=this.updatedAt}onChange(t){return this.on("change",t)}on(t,r){this.events[t]||(this.events[t]=new Rf);const s=this.events[t].add(r);return t==="change"?()=>{s(),ut.read(()=>{this.events.change.getSize()||this.stop()})}:s}clearListeners(){for(const t in this.events)this.events[t].clear()}attach(t,r){this.passiveEffect=t,this.stopPassiveEffect=r}set(t){this.passiveEffect?this.passiveEffect(t,this.updateAndNotify):this.updateAndNotify(t)}setWithVelocity(t,r,s){this.set(r),this.prev=void 0,this.prevFrameValue=t,this.prevUpdatedAt=this.updatedAt-s}jump(t,r=!0){this.updateAndNotify(t),this.prev=t,this.prevUpdatedAt=this.prevFrameValue=void 0,r&&this.stop(),this.stopPassiveEffect&&this.stopPassiveEffect()}dirty(){this.events.change?.notify(this.current)}addDependent(t){this.dependents||(this.dependents=new Set),this.dependents.add(t)}removeDependent(t){this.dependents&&this.dependents.delete(t)}get(){return this.current}getPrevious(){return this.prev}getVelocity(){const t=aa.now();if(!this.canTrackVelocity||this.prevFrameValue===void 0||t-this.updatedAt>Kx)return 0;const r=Math.min(this.updatedAt-this.prevUpdatedAt,Kx);return _k(parseFloat(this.current)-parseFloat(this.prevFrameValue),r)}start(t){return this.stop(),new Promise(r=>{this.hasAnimated=!0,this.animation=t(r),this.events.animationStart&&this.events.animationStart.notify()}).then(()=>{this.events.animationComplete&&this.events.animationComplete.notify(),this.clearAnimation()})}stop(){this.animation&&(this.animation.stop(),this.events.animationCancel&&this.events.animationCancel.notify()),this.clearAnimation()}isAnimating(){return!!this.animation}clearAnimation(){delete this.animation}destroy(){this.dependents?.clear(),this.events.destroy?.notify(),this.clearListeners(),this.stop(),this.stopPassiveEffect&&this.stopPassiveEffect()}}function ci(e,t){return new SU(e,t)}const _h=e=>Array.isArray(e);function CU(e,t,r){e.hasValue(t)?e.getValue(t).set(r):e.addValue(t,ci(r))}function jU(e){return _h(e)?e[e.length-1]||0:e}function AU(e,t){const r=Jr(e,t);let{transitionEnd:s={},transition:c={},...d}=r||{};d={...d,...s};for(const m in d){const h=jU(d[m]);CU(e,m,h)}}const Kt=e=>!!(e&&e.getVelocity);function qU(e){return!!(Kt(e)&&e.add)}function Rh(e,t){const r=e.getValue("willChange");if(qU(r))return r.add(t);if(!r&&vr.WillChange){const s=new vr.WillChange("auto");e.addValue("willChange",s),s.add(t)}}function Kf(e){return e.replace(/([A-Z])/g,t=>`-${t.toLowerCase()}`)}const EU="framerAppearId",g4="data-"+Kf(EU);function y4(e){return e.props[g4]}function NU({protectedKeys:e,needsAnimating:t},r){const s=e.hasOwnProperty(r)&&t[r]!==!0;return t[r]=!1,s}function b4(e,t,{delay:r=0,transitionOverride:s,type:c}={}){let{transition:d,transitionEnd:m,...h}=t;const f=e.getDefaultTransition();d=d?h4(d,f):f;const y=d?.reduceMotion;s&&(d=s);const b=[],v=c&&e.animationState&&e.animationState.getState()[c];for(const x in h){const k=e.getValue(x,e.latestValues[x]??null),E=h[x];if(E===void 0||v&&NU(v,x))continue;const C={delay:r,...Vf(d||{},x)},N=k.get();if(N!==void 0&&!k.isAnimating()&&!Array.isArray(E)&&E===N&&!C.velocity){ut.update(()=>k.set(E));continue}let q=!1;if(window.MotionHandoffAnimation){const $=y4(e);if($){const z=window.MotionHandoffAnimation($,x,ut);z!==null&&(C.startTime=z,q=!0)}}Rh(e,x);const R=y??e.shouldReduceMotion;k.start(Wf(x,k,E,R&&f4.has(x)?{type:!1}:C,e,q));const I=k.animation;I&&b.push(I)}if(m){const x=()=>ut.update(()=>{m&&AU(e,m)});b.length?Promise.all(b).then(x):x()}return b}function Ih(e,t,r={}){const s=Jr(e,t,r.type==="exit"?e.presenceContext?.custom:void 0);let{transition:c=e.getDefaultTransition()||{}}=s||{};r.transitionOverride&&(c=r.transitionOverride);const d=s?()=>Promise.all(b4(e,s,r)):()=>Promise.resolve(),m=e.variantChildren&&e.variantChildren.size?(f=0)=>{const{delayChildren:y=0,staggerChildren:b,staggerDirection:v}=c;return TU(e,t,f,y,b,v,r)}:()=>Promise.resolve(),{when:h}=c;if(h){const[f,y]=h==="beforeChildren"?[d,m]:[m,d];return f().then(()=>y())}else return Promise.all([d(),m(r.delay)])}function TU(e,t,r=0,s=0,c=0,d=1,m){const h=[];for(const f of e.variantChildren)f.notify("AnimationStart",t),h.push(Ih(f,t,{...m,delay:r+(typeof s=="function"?0:s)+m4(e.variantChildren,f,s,c,d)}).then(()=>f.notify("AnimationComplete",t)));return Promise.all(h)}function MU(e,t,r={}){e.notify("AnimationStart",t);let s;if(Array.isArray(t)){const c=t.map(d=>Ih(e,d,r));s=Promise.all(c)}else if(typeof t=="string")s=Ih(e,t,r);else{const c=typeof t=="function"?Jr(e,t,r.custom):t;s=Promise.all(b4(e,c,r))}return s.then(()=>{e.notify("AnimationComplete",t)})}const PU={test:e=>e==="auto",parse:e=>e},v4=e=>t=>t.test(e),x4=[hi,ve,cn,dr,rI,nI,PU],Hx=e=>x4.find(v4(e));function _U(e){return typeof e=="number"?e===0:e!==null?e==="none"||e==="0"||Mk(e):!0}const RU=new Set(["brightness","contrast","saturate","opacity"]);function IU(e){const[t,r]=e.slice(0,-1).split("(");if(t==="drop-shadow")return e;const[s]=r.match(Of)||[];if(!s)return e;const c=r.replace(s,"");let d=RU.has(t)?1:0;return s!==r&&(d*=100),t+"("+d+c+")"}const UU=/\b([a-z-]*)\(.*?\)/gu,Uh={...Ha,getAnimatableNone:e=>{const t=e.match(UU);return t?t.map(IU).join(" "):e}},Dh={...Ha,getAnimatableNone:e=>{const t=Ha.parse(e);return Ha.createTransformer(e)(t.map(s=>typeof s=="number"?0:typeof s=="object"?{...s,alpha:1}:s))}},Qx={...hi,transform:Math.round},DU={rotate:dr,rotateX:dr,rotateY:dr,rotateZ:dr,scale:qc,scaleX:qc,scaleY:qc,scaleZ:qc,skew:dr,skewX:dr,skewY:dr,distance:ve,translateX:ve,translateY:ve,translateZ:ve,x:ve,y:ve,z:ve,perspective:ve,transformPerspective:ve,opacity:zo,originX:Ix,originY:Ix,originZ:ve},Hf={borderWidth:ve,borderTopWidth:ve,borderRightWidth:ve,borderBottomWidth:ve,borderLeftWidth:ve,borderRadius:ve,borderTopLeftRadius:ve,borderTopRightRadius:ve,borderBottomRightRadius:ve,borderBottomLeftRadius:ve,width:ve,maxWidth:ve,height:ve,maxHeight:ve,top:ve,right:ve,bottom:ve,left:ve,inset:ve,insetBlock:ve,insetBlockStart:ve,insetBlockEnd:ve,insetInline:ve,insetInlineStart:ve,insetInlineEnd:ve,padding:ve,paddingTop:ve,paddingRight:ve,paddingBottom:ve,paddingLeft:ve,paddingBlock:ve,paddingBlockStart:ve,paddingBlockEnd:ve,paddingInline:ve,paddingInlineStart:ve,paddingInlineEnd:ve,margin:ve,marginTop:ve,marginRight:ve,marginBottom:ve,marginLeft:ve,marginBlock:ve,marginBlockStart:ve,marginBlockEnd:ve,marginInline:ve,marginInlineStart:ve,marginInlineEnd:ve,fontSize:ve,backgroundPositionX:ve,backgroundPositionY:ve,...DU,zIndex:Qx,fillOpacity:zo,strokeOpacity:zo,numOctaves:Qx},OU={...Hf,color:Nt,backgroundColor:Nt,outlineColor:Nt,fill:Nt,stroke:Nt,borderColor:Nt,borderTopColor:Nt,borderRightColor:Nt,borderBottomColor:Nt,borderLeftColor:Nt,filter:Uh,WebkitFilter:Uh,mask:Dh,WebkitMask:Dh},w4=e=>OU[e],LU=new Set([Uh,Dh]);function k4(e,t){let r=w4(e);return LU.has(r)||(r=Ha),r.getAnimatableNone?r.getAnimatableNone(t):void 0}const zU=new Set(["auto","none","0"]);function FU(e,t,r){let s=0,c;for(;s<e.length&&!c;){const d=e[s];typeof d=="string"&&!zU.has(d)&&li(d).values.length&&(c=e[s]),s++}if(c&&r)for(const d of t)e[d]=k4(r,c)}class $U extends Bf{constructor(t,r,s,c,d){super(t,r,s,c,d,!0)}readKeyframes(){const{unresolvedKeyframes:t,element:r,name:s}=this;if(!r||!r.current)return;super.readKeyframes();for(let b=0;b<t.length;b++){let v=t[b];if(typeof v=="string"&&(v=v.trim(),Df(v))){const x=p4(v,r.current);x!==void 0&&(t[b]=x),b===t.length-1&&(this.finalKeyframe=v)}}if(this.resolveNoneKeyframes(),!f4.has(s)||t.length!==2)return;const[c,d]=t,m=Hx(c),h=Hx(d),f=Rx(c),y=Rx(d);if(f!==y&&hr[s]){this.needsMeasurement=!0;return}if(m!==h)if(Bx(m)&&Bx(h))for(let b=0;b<t.length;b++){const v=t[b];typeof v=="string"&&(t[b]=parseFloat(v))}else hr[s]&&(this.needsMeasurement=!0)}resolveNoneKeyframes(){const{unresolvedKeyframes:t,name:r}=this,s=[];for(let c=0;c<t.length;c++)(t[c]===null||_U(t[c]))&&s.push(c);s.length&&FU(t,s,r)}measureInitialState(){const{element:t,unresolvedKeyframes:r,name:s}=this;if(!t||!t.current)return;s==="height"&&(this.suspendedScrollY=window.pageYOffset),this.measuredOrigin=hr[s](t.measureViewportBox(),window.getComputedStyle(t.current)),r[0]=this.measuredOrigin;const c=r[r.length-1];c!==void 0&&t.getValue(s,c).jump(c,!1)}measureEndState(){const{element:t,name:r,unresolvedKeyframes:s}=this;if(!t||!t.current)return;const c=t.getValue(r);c&&c.jump(this.measuredOrigin,!1);const d=s.length-1,m=s[d];s[d]=hr[r](t.measureViewportBox(),window.getComputedStyle(t.current)),m!==null&&this.finalKeyframe===void 0&&(this.finalKeyframe=m),this.removedTransforms?.length&&this.removedTransforms.forEach(([h,f])=>{t.getValue(h).set(f)}),this.resolveNoneKeyframes()}}function S4(e,t,r){if(e==null)return[];if(e instanceof EventTarget)return[e];if(typeof e=="string"){let s=document;const c=r?.[e]??s.querySelectorAll(e);return c?Array.from(c):[]}return Array.from(e).filter(s=>s!=null)}const C4=(e,t)=>t&&typeof e=="number"?t.transform(e):e;function BU(e){return Tk(e)&&"offsetHeight"in e&&!("ownerSVGElement"in e)}const{schedule:Qf}=Vk(queueMicrotask,!1),Ka={x:!1,y:!1};function j4(){return Ka.x||Ka.y}function VU(e){return e==="x"||e==="y"?Ka[e]?null:(Ka[e]=!0,()=>{Ka[e]=!1}):Ka.x||Ka.y?null:(Ka.x=Ka.y=!0,()=>{Ka.x=Ka.y=!1})}function A4(e,t){const r=S4(e),s=new AbortController,c={passive:!0,...t,signal:s.signal};return[r,c,()=>s.abort()]}function WU(e){return!(e.pointerType==="touch"||j4())}function GU(e,t,r={}){const[s,c,d]=A4(e,r);return s.forEach(m=>{let h=!1,f=!1,y;const b=()=>{m.removeEventListener("pointerleave",E)},v=N=>{y&&(y(N),y=void 0),b()},x=N=>{h=!1,window.removeEventListener("pointerup",x),window.removeEventListener("pointercancel",x),f&&(f=!1,v(N))},k=()=>{h=!0,window.addEventListener("pointerup",x,c),window.addEventListener("pointercancel",x,c)},E=N=>{if(N.pointerType!=="touch"){if(h){f=!0;return}v(N)}},C=N=>{if(!WU(N))return;f=!1;const q=t(m,N);typeof q=="function"&&(y=q,m.addEventListener("pointerleave",E,c))};m.addEventListener("pointerenter",C,c),m.addEventListener("pointerdown",k,c)}),d}const q4=(e,t)=>t?e===t?!0:q4(e,t.parentElement):!1,Yf=e=>e.pointerType==="mouse"?typeof e.button!="number"||e.button<=0:e.isPrimary!==!1,KU=new Set(["BUTTON","INPUT","SELECT","TEXTAREA","A"]);function HU(e){return KU.has(e.tagName)||e.isContentEditable===!0}const QU=new Set(["INPUT","SELECT","TEXTAREA"]);function YU(e){return QU.has(e.tagName)||e.isContentEditable===!0}const Dc=new WeakSet;function Yx(e){return t=>{t.key==="Enter"&&e(t)}}function $p(e,t){e.dispatchEvent(new PointerEvent("pointer"+t,{isPrimary:!0,bubbles:!0}))}const XU=(e,t)=>{const r=e.currentTarget;if(!r)return;const s=Yx(()=>{if(Dc.has(r))return;$p(r,"down");const c=Yx(()=>{$p(r,"up")}),d=()=>$p(r,"cancel");r.addEventListener("keyup",c,t),r.addEventListener("blur",d,t)});r.addEventListener("keydown",s,t),r.addEventListener("blur",()=>r.removeEventListener("keydown",s),t)};function Xx(e){return Yf(e)&&!j4()}const Zx=new WeakSet;function ZU(e,t,r={}){const[s,c,d]=A4(e,r),m=h=>{const f=h.currentTarget;if(!Xx(h)||Zx.has(h))return;Dc.add(f),r.stopPropagation&&Zx.add(h);const y=t(f,h),b=(k,E)=>{window.removeEventListener("pointerup",v),window.removeEventListener("pointercancel",x),Dc.has(f)&&Dc.delete(f),Xx(k)&&typeof y=="function"&&y(k,{success:E})},v=k=>{b(k,f===window||f===document||r.useGlobalTarget||q4(f,k.target))},x=k=>{b(k,!1)};window.addEventListener("pointerup",v,c),window.addEventListener("pointercancel",x,c)};return s.forEach(h=>{(r.useGlobalTarget?window:h).addEventListener("pointerdown",m,c),BU(h)&&(h.addEventListener("focus",y=>XU(y,c)),!HU(h)&&!h.hasAttribute("tabindex")&&(h.tabIndex=0))}),d}function Xf(e){return Tk(e)&&"ownerSVGElement"in e}const Oc=new WeakMap;let Lc;const E4=(e,t,r)=>(s,c)=>c&&c[0]?c[0][e+"Size"]:Xf(s)&&"getBBox"in s?s.getBBox()[t]:s[r],JU=E4("inline","width","offsetWidth"),e7=E4("block","height","offsetHeight");function t7({target:e,borderBoxSize:t}){Oc.get(e)?.forEach(r=>{r(e,{get width(){return JU(e,t)},get height(){return e7(e,t)}})})}function a7(e){e.forEach(t7)}function n7(){typeof ResizeObserver>"u"||(Lc=new ResizeObserver(a7))}function r7(e,t){Lc||n7();const r=S4(e);return r.forEach(s=>{let c=Oc.get(s);c||(c=new Set,Oc.set(s,c)),c.add(t),Lc?.observe(s)}),()=>{r.forEach(s=>{const c=Oc.get(s);c?.delete(t),c?.size||Lc?.unobserve(s)})}}const zc=new Set;let ni;function s7(){ni=()=>{const e={get width(){return window.innerWidth},get height(){return window.innerHeight}};zc.forEach(t=>t(e))},window.addEventListener("resize",ni)}function i7(e){return zc.add(e),ni||s7(),()=>{zc.delete(e),!zc.size&&typeof ni=="function"&&(window.removeEventListener("resize",ni),ni=void 0)}}function Jx(e,t){return typeof e=="function"?i7(e):r7(e,t)}function o7(e){return Xf(e)&&e.tagName==="svg"}const l7=[...x4,Nt,Ha],c7=e=>l7.find(v4(e)),e1=()=>({translate:0,scale:1,origin:0,originPoint:0}),ri=()=>({x:e1(),y:e1()}),t1=()=>({min:0,max:0}),Rt=()=>({x:t1(),y:t1()}),d7=new WeakMap;function Fd(e){return e!==null&&typeof e=="object"&&typeof e.start=="function"}function Fo(e){return typeof e=="string"||Array.isArray(e)}const Zf=["animate","whileInView","whileFocus","whileHover","whileTap","whileDrag","exit"],Jf=["initial",...Zf];function $d(e){return Fd(e.animate)||Jf.some(t=>Fo(e[t]))}function N4(e){return!!($d(e)||e.variants)}function u7(e,t,r){for(const s in t){const c=t[s],d=r[s];if(Kt(c))e.addValue(s,c);else if(Kt(d))e.addValue(s,ci(c,{owner:e}));else if(d!==c)if(e.hasValue(s)){const m=e.getValue(s);m.liveStyle===!0?m.jump(c):m.hasAnimated||m.set(c)}else{const m=e.getStaticValue(s);e.addValue(s,ci(m!==void 0?m:c,{owner:e}))}}for(const s in r)t[s]===void 0&&e.removeValue(s);return t}const Oh={current:null},T4={current:!1},m7=typeof window<"u";function p7(){if(T4.current=!0,!!m7)if(window.matchMedia){const e=window.matchMedia("(prefers-reduced-motion)"),t=()=>Oh.current=e.matches;e.addEventListener("change",t),t()}else Oh.current=!1}const a1=["AnimationStart","AnimationComplete","Update","BeforeLayoutMeasure","LayoutMeasure","LayoutAnimationStart","LayoutAnimationComplete"];let cd={};function M4(e){cd=e}function h7(){return cd}class f7{scrapeMotionValuesFromProps(t,r,s){return{}}constructor({parent:t,props:r,presenceContext:s,reducedMotionConfig:c,skipAnimations:d,blockInitialAnimation:m,visualState:h},f={}){this.current=null,this.children=new Set,this.isVariantNode=!1,this.isControllingVariants=!1,this.shouldReduceMotion=null,this.shouldSkipAnimations=!1,this.values=new Map,this.KeyframeResolver=Bf,this.features={},this.valueSubscriptions=new Map,this.prevMotionValues={},this.hasBeenMounted=!1,this.events={},this.propEventSubscriptions={},this.notifyUpdate=()=>this.notify("Update",this.latestValues),this.render=()=>{this.current&&(this.triggerBuild(),this.renderInstance(this.current,this.renderState,this.props.style,this.projection))},this.renderScheduledAt=0,this.scheduleRender=()=>{const k=aa.now();this.renderScheduledAt<k&&(this.renderScheduledAt=k,ut.render(this.render,!1,!0))};const{latestValues:y,renderState:b}=h;this.latestValues=y,this.baseTarget={...y},this.initialValues=r.initial?{...y}:{},this.renderState=b,this.parent=t,this.props=r,this.presenceContext=s,this.depth=t?t.depth+1:0,this.reducedMotionConfig=c,this.skipAnimationsConfig=d,this.options=f,this.blockInitialAnimation=!!m,this.isControllingVariants=$d(r),this.isVariantNode=N4(r),this.isVariantNode&&(this.variantChildren=new Set),this.manuallyAnimateOnMount=!!(t&&t.current);const{willChange:v,...x}=this.scrapeMotionValuesFromProps(r,{},this);for(const k in x){const E=x[k];y[k]!==void 0&&Kt(E)&&E.set(y[k])}}mount(t){if(this.hasBeenMounted)for(const r in this.initialValues)this.values.get(r)?.jump(this.initialValues[r]),this.latestValues[r]=this.initialValues[r];this.current=t,d7.set(t,this),this.projection&&!this.projection.instance&&this.projection.mount(t),this.parent&&this.isVariantNode&&!this.isControllingVariants&&(this.removeFromVariantTree=this.parent.addVariantChild(this)),this.values.forEach((r,s)=>this.bindToMotionValue(s,r)),this.reducedMotionConfig==="never"?this.shouldReduceMotion=!1:this.reducedMotionConfig==="always"?this.shouldReduceMotion=!0:(T4.current||p7(),this.shouldReduceMotion=Oh.current),this.shouldSkipAnimations=this.skipAnimationsConfig??!1,this.parent?.addChild(this),this.update(this.props,this.presenceContext),this.hasBeenMounted=!0}unmount(){this.projection&&this.projection.unmount(),xr(this.notifyUpdate),xr(this.render),this.valueSubscriptions.forEach(t=>t()),this.valueSubscriptions.clear(),this.removeFromVariantTree&&this.removeFromVariantTree(),this.parent?.removeChild(this);for(const t in this.events)this.events[t].clear();for(const t in this.features){const r=this.features[t];r&&(r.unmount(),r.isMounted=!1)}this.current=null}addChild(t){this.children.add(t),this.enteringChildren??(this.enteringChildren=new Set),this.enteringChildren.add(t)}removeChild(t){this.children.delete(t),this.enteringChildren&&this.enteringChildren.delete(t)}bindToMotionValue(t,r){if(this.valueSubscriptions.has(t)&&this.valueSubscriptions.get(t)(),r.accelerate&&u4.has(t)&&this.current instanceof HTMLElement){const{factory:m,keyframes:h,times:f,ease:y,duration:b}=r.accelerate,v=new c4({element:this.current,name:t,keyframes:h,times:f,ease:y,duration:qa(b)}),x=m(v);this.valueSubscriptions.set(t,()=>{x(),v.cancel()});return}const s=gi.has(t);s&&this.onBindTransform&&this.onBindTransform();const c=r.on("change",m=>{this.latestValues[t]=m,this.props.onUpdate&&ut.preRender(this.notifyUpdate),s&&this.projection&&(this.projection.isTransformDirty=!0),this.scheduleRender()});let d;typeof window<"u"&&window.MotionCheckAppearSync&&(d=window.MotionCheckAppearSync(this,t,r)),this.valueSubscriptions.set(t,()=>{c(),d&&d(),r.owner&&r.stop()})}sortNodePosition(t){return!this.current||!this.sortInstanceNodePosition||this.type!==t.type?0:this.sortInstanceNodePosition(this.current,t.current)}updateFeatures(){let t="animation";for(t in cd){const r=cd[t];if(!r)continue;const{isEnabled:s,Feature:c}=r;if(!this.features[t]&&c&&s(this.props)&&(this.features[t]=new c(this)),this.features[t]){const d=this.features[t];d.isMounted?d.update():(d.mount(),d.isMounted=!0)}}}triggerBuild(){this.build(this.renderState,this.latestValues,this.props)}measureViewportBox(){return this.current?this.measureInstanceViewportBox(this.current,this.props):Rt()}getStaticValue(t){return this.latestValues[t]}setStaticValue(t,r){this.latestValues[t]=r}update(t,r){(t.transformTemplate||this.props.transformTemplate)&&this.scheduleRender(),this.prevProps=this.props,this.props=t,this.prevPresenceContext=this.presenceContext,this.presenceContext=r;for(let s=0;s<a1.length;s++){const c=a1[s];this.propEventSubscriptions[c]&&(this.propEventSubscriptions[c](),delete this.propEventSubscriptions[c]);const d="on"+c,m=t[d];m&&(this.propEventSubscriptions[c]=this.on(c,m))}this.prevMotionValues=u7(this,this.scrapeMotionValuesFromProps(t,this.prevProps||{},this),this.prevMotionValues),this.handleChildMotionValue&&this.handleChildMotionValue()}getProps(){return this.props}getVariant(t){return this.props.variants?this.props.variants[t]:void 0}getDefaultTransition(){return this.props.transition}getTransformPagePoint(){return this.props.transformPagePoint}getClosestVariantNode(){return this.isVariantNode?this:this.parent?this.parent.getClosestVariantNode():void 0}addVariantChild(t){const r=this.getClosestVariantNode();if(r)return r.variantChildren&&r.variantChildren.add(t),()=>r.variantChildren.delete(t)}addValue(t,r){const s=this.values.get(t);r!==s&&(s&&this.removeValue(t),this.bindToMotionValue(t,r),this.values.set(t,r),this.latestValues[t]=r.get())}removeValue(t){this.values.delete(t);const r=this.valueSubscriptions.get(t);r&&(r(),this.valueSubscriptions.delete(t)),delete this.latestValues[t],this.removeValueFromRenderState(t,this.renderState)}hasValue(t){return this.values.has(t)}getValue(t,r){if(this.props.values&&this.props.values[t])return this.props.values[t];let s=this.values.get(t);return s===void 0&&r!==void 0&&(s=ci(r===null?void 0:r,{owner:this}),this.addValue(t,s)),s}readValue(t,r){let s=this.latestValues[t]!==void 0||!this.current?this.latestValues[t]:this.getBaseTargetFromProps(this.props,t)??this.readValueFromInstance(this.current,t,this.options);return s!=null&&(typeof s=="string"&&(Nk(s)||Mk(s))?s=parseFloat(s):!c7(s)&&Ha.test(r)&&(s=k4(t,r)),this.setBaseTarget(t,Kt(s)?s.get():s)),Kt(s)?s.get():s}setBaseTarget(t,r){this.baseTarget[t]=r}getBaseTarget(t){const{initial:r}=this.props;let s;if(typeof r=="string"||typeof r=="object"){const d=Gf(this.props,r,this.presenceContext?.custom);d&&(s=d[t])}if(r&&s!==void 0)return s;const c=this.getBaseTargetFromProps(this.props,t);return c!==void 0&&!Kt(c)?c:this.initialValues[t]!==void 0&&s===void 0?void 0:this.baseTarget[t]}on(t,r){return this.events[t]||(this.events[t]=new Rf),this.events[t].add(r)}notify(t,...r){this.events[t]&&this.events[t].notify(...r)}scheduleRenderMicrotask(){Qf.render(this.render)}}class P4 extends f7{constructor(){super(...arguments),this.KeyframeResolver=$U}sortInstanceNodePosition(t,r){return t.compareDocumentPosition(r)&2?1:-1}getBaseTargetFromProps(t,r){const s=t.style;return s?s[r]:void 0}removeValueFromRenderState(t,{vars:r,style:s}){delete r[t],delete s[t]}handleChildMotionValue(){this.childSubscription&&(this.childSubscription(),delete this.childSubscription);const{children:t}=this.props;Kt(t)&&(this.childSubscription=t.on("change",r=>{this.current&&(this.current.textContent=`${r}`)}))}}class Sr{constructor(t){this.isMounted=!1,this.node=t}update(){}}function _4({top:e,left:t,right:r,bottom:s}){return{x:{min:t,max:r},y:{min:e,max:s}}}function g7({x:e,y:t}){return{top:t.min,right:e.max,bottom:t.max,left:e.min}}function y7(e,t){if(!t)return e;const r=t({x:e.left,y:e.top}),s=t({x:e.right,y:e.bottom});return{top:r.y,left:r.x,bottom:s.y,right:s.x}}function Bp(e){return e===void 0||e===1}function Lh({scale:e,scaleX:t,scaleY:r}){return!Bp(e)||!Bp(t)||!Bp(r)}function Wr(e){return Lh(e)||R4(e)||e.z||e.rotate||e.rotateX||e.rotateY||e.skewX||e.skewY}function R4(e){return n1(e.x)||n1(e.y)}function n1(e){return e&&e!=="0%"}function dd(e,t,r){const s=e-r,c=t*s;return r+c}function r1(e,t,r,s,c){return c!==void 0&&(e=dd(e,c,s)),dd(e,r,s)+t}function zh(e,t=0,r=1,s,c){e.min=r1(e.min,t,r,s,c),e.max=r1(e.max,t,r,s,c)}function I4(e,{x:t,y:r}){zh(e.x,t.translate,t.scale,t.originPoint),zh(e.y,r.translate,r.scale,r.originPoint)}const s1=.999999999999,i1=1.0000000000001;function b7(e,t,r,s=!1){const c=r.length;if(!c)return;t.x=t.y=1;let d,m;for(let h=0;h<c;h++){d=r[h],m=d.projectionDelta;const{visualElement:f}=d.options;f&&f.props.style&&f.props.style.display==="contents"||(s&&d.options.layoutScroll&&d.scroll&&d!==d.root&&(on(e.x,-d.scroll.offset.x),on(e.y,-d.scroll.offset.y)),m&&(t.x*=m.x.scale,t.y*=m.y.scale,I4(e,m)),s&&Wr(d.latestValues)&&Fc(e,d.latestValues,d.layout?.layoutBox))}t.x<i1&&t.x>s1&&(t.x=1),t.y<i1&&t.y>s1&&(t.y=1)}function on(e,t){e.min+=t,e.max+=t}function o1(e,t,r,s,c=.5){const d=ht(e.min,e.max,c);zh(e,t,r,d,s)}function l1(e,t){return typeof e=="string"?parseFloat(e)/100*(t.max-t.min):e}function Fc(e,t,r){const s=r??e;o1(e.x,l1(t.x,s.x),t.scaleX,t.scale,t.originX),o1(e.y,l1(t.y,s.y),t.scaleY,t.scale,t.originY)}function U4(e,t){return _4(y7(e.getBoundingClientRect(),t))}function v7(e,t,r){const s=U4(e,r),{scroll:c}=t;return c&&(on(s.x,c.offset.x),on(s.y,c.offset.y)),s}const x7={x:"translateX",y:"translateY",z:"translateZ",transformPerspective:"perspective"},w7=fi.length;function k7(e,t,r){let s="",c=!0;for(let d=0;d<w7;d++){const m=fi[d],h=e[m];if(h===void 0)continue;let f=!0;if(typeof h=="number")f=h===(m.startsWith("scale")?1:0);else{const y=parseFloat(h);f=m.startsWith("scale")?y===1:y===0}if(!f||r){const y=C4(h,Hf[m]);if(!f){c=!1;const b=x7[m]||m;s+=`${b}(${y}) `}r&&(t[m]=y)}}return s=s.trim(),r?s=r(t,c?"":s):c&&(s="none"),s}function eg(e,t,r){const{style:s,vars:c,transformOrigin:d}=e;let m=!1,h=!1;for(const f in t){const y=t[f];if(gi.has(f)){m=!0;continue}else if(Gk(f)){c[f]=y;continue}else{const b=C4(y,Hf[f]);f.startsWith("origin")?(h=!0,d[f]=b):s[f]=b}}if(t.transform||(m||r?s.transform=k7(t,e.transform,r):s.transform&&(s.transform="none")),h){const{originX:f="50%",originY:y="50%",originZ:b=0}=d;s.transformOrigin=`${f} ${y} ${b}`}}function D4(e,{style:t,vars:r},s,c){const d=e.style;let m;for(m in t)d[m]=t[m];c?.applyProjectionStyles(d,s);for(m in r)d.setProperty(m,r[m])}function c1(e,t){return t.max===t.min?0:e/(t.max-t.min)*100}const vo={correct:(e,t)=>{if(!t.target)return e;if(typeof e=="string")if(ve.test(e))e=parseFloat(e);else return e;const r=c1(e,t.target.x),s=c1(e,t.target.y);return`${r}% ${s}%`}},S7={correct:(e,{treeScale:t,projectionDelta:r})=>{const s=e,c=Ha.parse(e);if(c.length>5)return s;const d=Ha.createTransformer(e),m=typeof c[0]!="number"?1:0,h=r.x.scale*t.x,f=r.y.scale*t.y;c[0+m]/=h,c[1+m]/=f;const y=ht(h,f,.5);return typeof c[2+m]=="number"&&(c[2+m]/=y),typeof c[3+m]=="number"&&(c[3+m]/=y),d(c)}},Fh={borderRadius:{...vo,applyTo:["borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius"]},borderTopLeftRadius:vo,borderTopRightRadius:vo,borderBottomLeftRadius:vo,borderBottomRightRadius:vo,boxShadow:S7};function O4(e,{layout:t,layoutId:r}){return gi.has(e)||e.startsWith("origin")||(t||r!==void 0)&&(!!Fh[e]||e==="opacity")}function tg(e,t,r){const s=e.style,c=t?.style,d={};if(!s)return d;for(const m in s)(Kt(s[m])||c&&Kt(c[m])||O4(m,e)||r?.getValue(m)?.liveStyle!==void 0)&&(d[m]=s[m]);return d}function C7(e){return window.getComputedStyle(e)}class j7 extends P4{constructor(){super(...arguments),this.type="html",this.renderInstance=D4}readValueFromInstance(t,r){if(gi.has(r))return this.projection?.isProjecting?qh(r):VI(t,r);{const s=C7(t),c=(Gk(r)?s.getPropertyValue(r):s[r])||0;return typeof c=="string"?c.trim():c}}measureInstanceViewportBox(t,{transformPagePoint:r}){return U4(t,r)}build(t,r,s){eg(t,r,s.transformTemplate)}scrapeMotionValuesFromProps(t,r,s){return tg(t,r,s)}}const A7={offset:"stroke-dashoffset",array:"stroke-dasharray"},q7={offset:"strokeDashoffset",array:"strokeDasharray"};function E7(e,t,r=1,s=0,c=!0){e.pathLength=1;const d=c?A7:q7;e[d.offset]=`${-s}`,e[d.array]=`${t} ${r}`}const N7=["offsetDistance","offsetPath","offsetRotate","offsetAnchor"];function L4(e,{attrX:t,attrY:r,attrScale:s,pathLength:c,pathSpacing:d=1,pathOffset:m=0,...h},f,y,b){if(eg(e,h,y),f){e.style.viewBox&&(e.attrs.viewBox=e.style.viewBox);return}e.attrs=e.style,e.style={};const{attrs:v,style:x}=e;v.transform&&(x.transform=v.transform,delete v.transform),(x.transform||v.transformOrigin)&&(x.transformOrigin=v.transformOrigin??"50% 50%",delete v.transformOrigin),x.transform&&(x.transformBox=b?.transformBox??"fill-box",delete v.transformBox);for(const k of N7)v[k]!==void 0&&(x[k]=v[k],delete v[k]);t!==void 0&&(v.x=t),r!==void 0&&(v.y=r),s!==void 0&&(v.scale=s),c!==void 0&&E7(v,c,d,m,!1)}const z4=new Set(["baseFrequency","diffuseConstant","kernelMatrix","kernelUnitLength","keySplines","keyTimes","limitingConeAngle","markerHeight","markerWidth","numOctaves","targetX","targetY","surfaceScale","specularConstant","specularExponent","stdDeviation","tableValues","viewBox","gradientTransform","pathLength","startOffset","textLength","lengthAdjust"]),F4=e=>typeof e=="string"&&e.toLowerCase()==="svg";function T7(e,t,r,s){D4(e,t,void 0,s);for(const c in t.attrs)e.setAttribute(z4.has(c)?c:Kf(c),t.attrs[c])}function $4(e,t,r){const s=tg(e,t,r);for(const c in e)if(Kt(e[c])||Kt(t[c])){const d=fi.indexOf(c)!==-1?"attr"+c.charAt(0).toUpperCase()+c.substring(1):c;s[d]=e[c]}return s}class M7 extends P4{constructor(){super(...arguments),this.type="svg",this.isSVGTag=!1,this.measureInstanceViewportBox=Rt}getBaseTargetFromProps(t,r){return t[r]}readValueFromInstance(t,r){if(gi.has(r)){const s=w4(r);return s&&s.default||0}return r=z4.has(r)?r:Kf(r),t.getAttribute(r)}scrapeMotionValuesFromProps(t,r,s){return $4(t,r,s)}build(t,r,s){L4(t,r,this.isSVGTag,s.transformTemplate,s.style)}renderInstance(t,r,s,c){T7(t,r,s,c)}mount(t){this.isSVGTag=F4(t.tagName),super.mount(t)}}const P7=Jf.length;function B4(e){if(!e)return;if(!e.isControllingVariants){const r=e.parent?B4(e.parent)||{}:{};return e.props.initial!==void 0&&(r.initial=e.props.initial),r}const t={};for(let r=0;r<P7;r++){const s=Jf[r],c=e.props[s];(Fo(c)||c===!1)&&(t[s]=c)}return t}function V4(e,t){if(!Array.isArray(t))return!1;const r=t.length;if(r!==e.length)return!1;for(let s=0;s<r;s++)if(t[s]!==e[s])return!1;return!0}const _7=[...Zf].reverse(),R7=Zf.length;function I7(e){return t=>Promise.all(t.map(({animation:r,options:s})=>MU(e,r,s)))}function U7(e){let t=I7(e),r=d1(),s=!0,c=!1;const d=y=>(b,v)=>{const x=Jr(e,v,y==="exit"?e.presenceContext?.custom:void 0);if(x){const{transition:k,transitionEnd:E,...C}=x;b={...b,...C,...E}}return b};function m(y){t=y(e)}function h(y){const{props:b}=e,v=B4(e.parent)||{},x=[],k=new Set;let E={},C=1/0;for(let q=0;q<R7;q++){const R=_7[q],I=r[R],$=b[R]!==void 0?b[R]:v[R],z=Fo($),G=R===y?I.isActive:null;G===!1&&(C=q);let L=$===v[R]&&$!==b[R]&&z;if(L&&(s||c)&&e.manuallyAnimateOnMount&&(L=!1),I.protectedKeys={...E},!I.isActive&&G===null||!$&&!I.prevProp||Fd($)||typeof $=="boolean")continue;if(R==="exit"&&I.isActive&&G!==!0){I.prevResolvedValues&&(E={...E,...I.prevResolvedValues});continue}const D=D7(I.prevProp,$);let ee=D||R===y&&I.isActive&&!L&&z||q>C&&z,ne=!1;const me=Array.isArray($)?$:[$];let pe=me.reduce(d(R),{});G===!1&&(pe={});const{prevResolvedValues:Re={}}=I,Ee={...Re,...pe},Ae=ce=>{ee=!0,k.has(ce)&&(ne=!0,k.delete(ce)),I.needsAnimating[ce]=!0;const de=e.getValue(ce);de&&(de.liveStyle=!1)};for(const ce in Ee){const de=pe[ce],T=Re[ce];if(E.hasOwnProperty(ce))continue;let W=!1;_h(de)&&_h(T)?W=!V4(de,T):W=de!==T,W?de!=null?Ae(ce):k.add(ce):de!==void 0&&k.has(ce)?Ae(ce):I.protectedKeys[ce]=!0}I.prevProp=$,I.prevResolvedValues=pe,I.isActive&&(E={...E,...pe}),(s||c)&&e.blockInitialAnimation&&(ee=!1);const V=L&&D;ee&&(!V||ne)&&x.push(...me.map(ce=>{const de={type:R};if(typeof ce=="string"&&(s||c)&&!V&&e.manuallyAnimateOnMount&&e.parent){const{parent:T}=e,W=Jr(T,ce);if(T.enteringChildren&&W){const{delayChildren:ie}=W.transition||{};de.delay=m4(T.enteringChildren,e,ie)}}return{animation:ce,options:de}}))}if(k.size){const q={};if(typeof b.initial!="boolean"){const R=Jr(e,Array.isArray(b.initial)?b.initial[0]:b.initial);R&&R.transition&&(q.transition=R.transition)}k.forEach(R=>{const I=e.getBaseTarget(R),$=e.getValue(R);$&&($.liveStyle=!0),q[R]=I??null}),x.push({animation:q})}let N=!!x.length;return s&&(b.initial===!1||b.initial===b.animate)&&!e.manuallyAnimateOnMount&&(N=!1),s=!1,c=!1,N?t(x):Promise.resolve()}function f(y,b){if(r[y].isActive===b)return Promise.resolve();e.variantChildren?.forEach(x=>x.animationState?.setActive(y,b)),r[y].isActive=b;const v=h(y);for(const x in r)r[x].protectedKeys={};return v}return{animateChanges:h,setActive:f,setAnimateFunction:m,getState:()=>r,reset:()=>{r=d1(),c=!0}}}function D7(e,t){return typeof t=="string"?t!==e:Array.isArray(t)?!V4(t,e):!1}function Vr(e=!1){return{isActive:e,protectedKeys:{},needsAnimating:{},prevResolvedValues:{}}}function d1(){return{animate:Vr(!0),whileInView:Vr(),whileHover:Vr(),whileTap:Vr(),whileDrag:Vr(),whileFocus:Vr(),exit:Vr()}}function $h(e,t){e.min=t.min,e.max=t.max}function Va(e,t){$h(e.x,t.x),$h(e.y,t.y)}function u1(e,t){e.translate=t.translate,e.scale=t.scale,e.originPoint=t.originPoint,e.origin=t.origin}const W4=1e-4,O7=1-W4,L7=1+W4,G4=.01,z7=0-G4,F7=0+G4;function na(e){return e.max-e.min}function $7(e,t,r){return Math.abs(e-t)<=r}function m1(e,t,r,s=.5){e.origin=s,e.originPoint=ht(t.min,t.max,e.origin),e.scale=na(r)/na(t),e.translate=ht(r.min,r.max,e.origin)-e.originPoint,(e.scale>=O7&&e.scale<=L7||isNaN(e.scale))&&(e.scale=1),(e.translate>=z7&&e.translate<=F7||isNaN(e.translate))&&(e.translate=0)}function No(e,t,r,s){m1(e.x,t.x,r.x,s?s.originX:void 0),m1(e.y,t.y,r.y,s?s.originY:void 0)}function p1(e,t,r,s=0){const c=s?ht(r.min,r.max,s):r.min;e.min=c+t.min,e.max=e.min+na(t)}function B7(e,t,r,s){p1(e.x,t.x,r.x,s?.x),p1(e.y,t.y,r.y,s?.y)}function h1(e,t,r,s=0){const c=s?ht(r.min,r.max,s):r.min;e.min=t.min-c,e.max=e.min+na(t)}function ud(e,t,r,s){h1(e.x,t.x,r.x,s?.x),h1(e.y,t.y,r.y,s?.y)}function f1(e,t,r,s,c){return e-=t,e=dd(e,1/r,s),c!==void 0&&(e=dd(e,1/c,s)),e}function V7(e,t=0,r=1,s=.5,c,d=e,m=e){if(cn.test(t)&&(t=parseFloat(t),t=ht(m.min,m.max,t/100)-m.min),typeof t!="number")return;let h=ht(d.min,d.max,s);e===d&&(h-=t),e.min=f1(e.min,t,r,h,c),e.max=f1(e.max,t,r,h,c)}function g1(e,t,[r,s,c],d,m){V7(e,t[r],t[s],t[c],t.scale,d,m)}const W7=["x","scaleX","originX"],G7=["y","scaleY","originY"];function y1(e,t,r,s){g1(e.x,t,W7,r?r.x:void 0,s?s.x:void 0),g1(e.y,t,G7,r?r.y:void 0,s?s.y:void 0)}function b1(e){return e.translate===0&&e.scale===1}function K4(e){return b1(e.x)&&b1(e.y)}function v1(e,t){return e.min===t.min&&e.max===t.max}function K7(e,t){return v1(e.x,t.x)&&v1(e.y,t.y)}function x1(e,t){return Math.round(e.min)===Math.round(t.min)&&Math.round(e.max)===Math.round(t.max)}function H4(e,t){return x1(e.x,t.x)&&x1(e.y,t.y)}function w1(e){return na(e.x)/na(e.y)}function k1(e,t){return e.translate===t.translate&&e.scale===t.scale&&e.originPoint===t.originPoint}function sn(e){return[e("x"),e("y")]}function H7(e,t,r){let s="";const c=e.x.translate/t.x,d=e.y.translate/t.y,m=r?.z||0;if((c||d||m)&&(s=`translate3d(${c}px, ${d}px, ${m}px) `),(t.x!==1||t.y!==1)&&(s+=`scale(${1/t.x}, ${1/t.y}) `),r){const{transformPerspective:y,rotate:b,rotateX:v,rotateY:x,skewX:k,skewY:E}=r;y&&(s=`perspective(${y}px) ${s}`),b&&(s+=`rotate(${b}deg) `),v&&(s+=`rotateX(${v}deg) `),x&&(s+=`rotateY(${x}deg) `),k&&(s+=`skewX(${k}deg) `),E&&(s+=`skewY(${E}deg) `)}const h=e.x.scale*t.x,f=e.y.scale*t.y;return(h!==1||f!==1)&&(s+=`scale(${h}, ${f})`),s||"none"}const Q4=["borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius"],Q7=Q4.length,S1=e=>typeof e=="string"?parseFloat(e):e,C1=e=>typeof e=="number"||ve.test(e);function Y7(e,t,r,s,c,d){c?(e.opacity=ht(0,r.opacity??1,X7(s)),e.opacityExit=ht(t.opacity??1,0,Z7(s))):d&&(e.opacity=ht(t.opacity??1,r.opacity??1,s));for(let m=0;m<Q7;m++){const h=Q4[m];let f=j1(t,h),y=j1(r,h);if(f===void 0&&y===void 0)continue;f||(f=0),y||(y=0),f===0||y===0||C1(f)===C1(y)?(e[h]=Math.max(ht(S1(f),S1(y),s),0),(cn.test(y)||cn.test(f))&&(e[h]+="%")):e[h]=y}(t.rotate||r.rotate)&&(e.rotate=ht(t.rotate||0,r.rotate||0,s))}function j1(e,t){return e[t]!==void 0?e[t]:e.borderRadius}const X7=Y4(0,.5,zk),Z7=Y4(.5,.95,La);function Y4(e,t,r){return s=>s<e?0:s>t?1:r(Lo(e,t,s))}function J7(e,t,r){const s=Kt(e)?e:ci(e);return s.start(Wf("",s,t,r)),s.animation}function $o(e,t,r,s={passive:!0}){return e.addEventListener(t,r,s),()=>e.removeEventListener(t,r)}const eD=(e,t)=>e.depth-t.depth;class tD{constructor(){this.children=[],this.isDirty=!1}add(t){Pf(this.children,t),this.isDirty=!0}remove(t){rd(this.children,t),this.isDirty=!0}forEach(t){this.isDirty&&this.children.sort(eD),this.isDirty=!1,this.children.forEach(t)}}function aD(e,t){const r=aa.now(),s=({timestamp:c})=>{const d=c-r;d>=t&&(xr(s),e(d-t))};return ut.setup(s,!0),()=>xr(s)}function $c(e){return Kt(e)?e.get():e}class nD{constructor(){this.members=[]}add(t){Pf(this.members,t);for(let r=this.members.length-1;r>=0;r--){const s=this.members[r];if(s===t||s===this.lead||s===this.prevLead)continue;const c=s.instance;(!c||c.isConnected===!1)&&!s.snapshot&&(rd(this.members,s),s.unmount())}t.scheduleRender()}remove(t){if(rd(this.members,t),t===this.prevLead&&(this.prevLead=void 0),t===this.lead){const r=this.members[this.members.length-1];r&&this.promote(r)}}relegate(t){for(let r=this.members.indexOf(t)-1;r>=0;r--){const s=this.members[r];if(s.isPresent!==!1&&s.instance?.isConnected!==!1)return this.promote(s),!0}return!1}promote(t,r){const s=this.lead;if(t!==s&&(this.prevLead=s,this.lead=t,t.show(),s)){s.updateSnapshot(),t.scheduleRender();const{layoutDependency:c}=s.options,{layoutDependency:d}=t.options;(c===void 0||c!==d)&&(t.resumeFrom=s,r&&(s.preserveOpacity=!0),s.snapshot&&(t.snapshot=s.snapshot,t.snapshot.latestValues=s.animationValues||s.latestValues),t.root?.isUpdating&&(t.isLayoutDirty=!0)),t.options.crossfade===!1&&s.hide()}}exitAnimationComplete(){this.members.forEach(t=>{t.options.onExitComplete?.(),t.resumingFrom?.options.onExitComplete?.()})}scheduleRender(){this.members.forEach(t=>t.instance&&t.scheduleRender(!1))}removeLeadSnapshot(){this.lead?.snapshot&&(this.lead.snapshot=void 0)}}const Bc={hasAnimatedSinceResize:!0,hasEverUpdated:!1},Vp=["","X","Y","Z"],rD=1e3;let sD=0;function Wp(e,t,r,s){const{latestValues:c}=t;c[e]&&(r[e]=c[e],t.setStaticValue(e,0),s&&(s[e]=0))}function X4(e){if(e.hasCheckedOptimisedAppear=!0,e.root===e)return;const{visualElement:t}=e.options;if(!t)return;const r=y4(t);if(window.MotionHasOptimisedAnimation(r,"transform")){const{layout:c,layoutId:d}=e.options;window.MotionCancelOptimisedAnimation(r,"transform",ut,!(c||d))}const{parent:s}=e;s&&!s.hasCheckedOptimisedAppear&&X4(s)}function Z4({attachResizeListener:e,defaultParent:t,measureScroll:r,checkIsScrollRoot:s,resetTransform:c}){return class{constructor(m={},h=t?.()){this.id=sD++,this.animationId=0,this.animationCommitId=0,this.children=new Set,this.options={},this.isTreeAnimating=!1,this.isAnimationBlocked=!1,this.isLayoutDirty=!1,this.isProjectionDirty=!1,this.isSharedProjectionDirty=!1,this.isTransformDirty=!1,this.updateManuallyBlocked=!1,this.updateBlockedByResize=!1,this.isUpdating=!1,this.isSVG=!1,this.needsReset=!1,this.shouldResetTransform=!1,this.hasCheckedOptimisedAppear=!1,this.treeScale={x:1,y:1},this.eventHandlers=new Map,this.hasTreeAnimated=!1,this.layoutVersion=0,this.updateScheduled=!1,this.scheduleUpdate=()=>this.update(),this.projectionUpdateScheduled=!1,this.checkUpdateFailed=()=>{this.isUpdating&&(this.isUpdating=!1,this.clearAllSnapshots())},this.updateProjection=()=>{this.projectionUpdateScheduled=!1,this.nodes.forEach(lD),this.nodes.forEach(hD),this.nodes.forEach(fD),this.nodes.forEach(cD)},this.resolvedRelativeTargetAt=0,this.linkedParentVersion=0,this.hasProjected=!1,this.isVisible=!0,this.animationProgress=0,this.sharedNodes=new Map,this.latestValues=m,this.root=h?h.root||h:this,this.path=h?[...h.path,h]:[],this.parent=h,this.depth=h?h.depth+1:0;for(let f=0;f<this.path.length;f++)this.path[f].shouldResetTransform=!0;this.root===this&&(this.nodes=new tD)}addEventListener(m,h){return this.eventHandlers.has(m)||this.eventHandlers.set(m,new Rf),this.eventHandlers.get(m).add(h)}notifyListeners(m,...h){const f=this.eventHandlers.get(m);f&&f.notify(...h)}hasListeners(m){return this.eventHandlers.has(m)}mount(m){if(this.instance)return;this.isSVG=Xf(m)&&!o7(m),this.instance=m;const{layoutId:h,layout:f,visualElement:y}=this.options;if(y&&!y.current&&y.mount(m),this.root.nodes.add(this),this.parent&&this.parent.children.add(this),this.root.hasTreeAnimated&&(f||h)&&(this.isLayoutDirty=!0),e){let b,v=0;const x=()=>this.root.updateBlockedByResize=!1;ut.read(()=>{v=window.innerWidth}),e(m,()=>{const k=window.innerWidth;k!==v&&(v=k,this.root.updateBlockedByResize=!0,b&&b(),b=aD(x,250),Bc.hasAnimatedSinceResize&&(Bc.hasAnimatedSinceResize=!1,this.nodes.forEach(E1)))})}h&&this.root.registerSharedNode(h,this),this.options.animate!==!1&&y&&(h||f)&&this.addEventListener("didUpdate",({delta:b,hasLayoutChanged:v,hasRelativeLayoutChanged:x,layout:k})=>{if(this.isTreeAnimationBlocked()){this.target=void 0,this.relativeTarget=void 0;return}const E=this.options.transition||y.getDefaultTransition()||xD,{onLayoutAnimationStart:C,onLayoutAnimationComplete:N}=y.getProps(),q=!this.targetLayout||!H4(this.targetLayout,k),R=!v&&x;if(this.options.layoutRoot||this.resumeFrom||R||v&&(q||!this.currentAnimation)){this.resumeFrom&&(this.resumingFrom=this.resumeFrom,this.resumingFrom.resumingFrom=void 0);const I={...Vf(E,"layout"),onPlay:C,onComplete:N};(y.shouldReduceMotion||this.options.layoutRoot)&&(I.delay=0,I.type=!1),this.startAnimation(I),this.setAnimationOrigin(b,R)}else v||E1(this),this.isLead()&&this.options.onExitComplete&&this.options.onExitComplete();this.targetLayout=k})}unmount(){this.options.layoutId&&this.willUpdate(),this.root.nodes.remove(this);const m=this.getStack();m&&m.remove(this),this.parent&&this.parent.children.delete(this),this.instance=void 0,this.eventHandlers.clear(),xr(this.updateProjection)}blockUpdate(){this.updateManuallyBlocked=!0}unblockUpdate(){this.updateManuallyBlocked=!1}isUpdateBlocked(){return this.updateManuallyBlocked||this.updateBlockedByResize}isTreeAnimationBlocked(){return this.isAnimationBlocked||this.parent&&this.parent.isTreeAnimationBlocked()||!1}startUpdate(){this.isUpdateBlocked()||(this.isUpdating=!0,this.nodes&&this.nodes.forEach(gD),this.animationId++)}getTransformTemplate(){const{visualElement:m}=this.options;return m&&m.getProps().transformTemplate}willUpdate(m=!0){if(this.root.hasTreeAnimated=!0,this.root.isUpdateBlocked()){this.options.onExitComplete&&this.options.onExitComplete();return}if(window.MotionCancelOptimisedAnimation&&!this.hasCheckedOptimisedAppear&&X4(this),!this.root.isUpdating&&this.root.startUpdate(),this.isLayoutDirty)return;this.isLayoutDirty=!0;for(let b=0;b<this.path.length;b++){const v=this.path[b];v.shouldResetTransform=!0,(typeof v.latestValues.x=="string"||typeof v.latestValues.y=="string")&&(v.isLayoutDirty=!0),v.updateScroll("snapshot"),v.options.layoutRoot&&v.willUpdate(!1)}const{layoutId:h,layout:f}=this.options;if(h===void 0&&!f)return;const y=this.getTransformTemplate();this.prevTransformTemplateValue=y?y(this.latestValues,""):void 0,this.updateSnapshot(),m&&this.notifyListeners("willUpdate")}update(){if(this.updateScheduled=!1,this.isUpdateBlocked()){const f=this.updateBlockedByResize;this.unblockUpdate(),this.updateBlockedByResize=!1,this.clearAllSnapshots(),f&&this.nodes.forEach(uD),this.nodes.forEach(A1);return}if(this.animationId<=this.animationCommitId){this.nodes.forEach(q1);return}this.animationCommitId=this.animationId,this.isUpdating?(this.isUpdating=!1,this.nodes.forEach(mD),this.nodes.forEach(pD),this.nodes.forEach(iD),this.nodes.forEach(oD)):this.nodes.forEach(q1),this.clearAllSnapshots();const h=aa.now();Gt.delta=un(0,1e3/60,h-Gt.timestamp),Gt.timestamp=h,Gt.isProcessing=!0,Up.update.process(Gt),Up.preRender.process(Gt),Up.render.process(Gt),Gt.isProcessing=!1}didUpdate(){this.updateScheduled||(this.updateScheduled=!0,Qf.read(this.scheduleUpdate))}clearAllSnapshots(){this.nodes.forEach(dD),this.sharedNodes.forEach(yD)}scheduleUpdateProjection(){this.projectionUpdateScheduled||(this.projectionUpdateScheduled=!0,ut.preRender(this.updateProjection,!1,!0))}scheduleCheckAfterUnmount(){ut.postRender(()=>{this.isLayoutDirty?this.root.didUpdate():this.root.checkUpdateFailed()})}updateSnapshot(){this.snapshot||!this.instance||(this.snapshot=this.measure(),this.snapshot&&!na(this.snapshot.measuredBox.x)&&!na(this.snapshot.measuredBox.y)&&(this.snapshot=void 0))}updateLayout(){if(!this.instance||(this.updateScroll(),!(this.options.alwaysMeasureLayout&&this.isLead())&&!this.isLayoutDirty))return;if(this.resumeFrom&&!this.resumeFrom.instance)for(let f=0;f<this.path.length;f++)this.path[f].updateScroll();const m=this.layout;this.layout=this.measure(!1),this.layoutVersion++,this.layoutCorrected||(this.layoutCorrected=Rt()),this.isLayoutDirty=!1,this.projectionDelta=void 0,this.notifyListeners("measure",this.layout.layoutBox);const{visualElement:h}=this.options;h&&h.notify("LayoutMeasure",this.layout.layoutBox,m?m.layoutBox:void 0)}updateScroll(m="measure"){let h=!!(this.options.layoutScroll&&this.instance);if(this.scroll&&this.scroll.animationId===this.root.animationId&&this.scroll.phase===m&&(h=!1),h&&this.instance){const f=s(this.instance);this.scroll={animationId:this.root.animationId,phase:m,isRoot:f,offset:r(this.instance),wasRoot:this.scroll?this.scroll.isRoot:f}}}resetTransform(){if(!c)return;const m=this.isLayoutDirty||this.shouldResetTransform||this.options.alwaysMeasureLayout,h=this.projectionDelta&&!K4(this.projectionDelta),f=this.getTransformTemplate(),y=f?f(this.latestValues,""):void 0,b=y!==this.prevTransformTemplateValue;m&&this.instance&&(h||Wr(this.latestValues)||b)&&(c(this.instance,y),this.shouldResetTransform=!1,this.scheduleRender())}measure(m=!0){const h=this.measurePageBox();let f=this.removeElementScroll(h);return m&&(f=this.removeTransform(f)),wD(f),{animationId:this.root.animationId,measuredBox:h,layoutBox:f,latestValues:{},source:this.id}}measurePageBox(){const{visualElement:m}=this.options;if(!m)return Rt();const h=m.measureViewportBox();if(!(this.scroll?.wasRoot||this.path.some(kD))){const{scroll:y}=this.root;y&&(on(h.x,y.offset.x),on(h.y,y.offset.y))}return h}removeElementScroll(m){const h=Rt();if(Va(h,m),this.scroll?.wasRoot)return h;for(let f=0;f<this.path.length;f++){const y=this.path[f],{scroll:b,options:v}=y;y!==this.root&&b&&v.layoutScroll&&(b.wasRoot&&Va(h,m),on(h.x,b.offset.x),on(h.y,b.offset.y))}return h}applyTransform(m,h=!1,f){const y=f||Rt();Va(y,m);for(let b=0;b<this.path.length;b++){const v=this.path[b];!h&&v.options.layoutScroll&&v.scroll&&v!==v.root&&(on(y.x,-v.scroll.offset.x),on(y.y,-v.scroll.offset.y)),Wr(v.latestValues)&&Fc(y,v.latestValues,v.layout?.layoutBox)}return Wr(this.latestValues)&&Fc(y,this.latestValues,this.layout?.layoutBox),y}removeTransform(m){const h=Rt();Va(h,m);for(let f=0;f<this.path.length;f++){const y=this.path[f];if(!Wr(y.latestValues))continue;let b;y.instance&&(Lh(y.latestValues)&&y.updateSnapshot(),b=Rt(),Va(b,y.measurePageBox())),y1(h,y.latestValues,y.snapshot?.layoutBox,b)}return Wr(this.latestValues)&&y1(h,this.latestValues),h}setTargetDelta(m){this.targetDelta=m,this.root.scheduleUpdateProjection(),this.isProjectionDirty=!0}setOptions(m){this.options={...this.options,...m,crossfade:m.crossfade!==void 0?m.crossfade:!0}}clearMeasurements(){this.scroll=void 0,this.layout=void 0,this.snapshot=void 0,this.prevTransformTemplateValue=void 0,this.targetDelta=void 0,this.target=void 0,this.isLayoutDirty=!1}forceRelativeParentToResolveTarget(){this.relativeParent&&this.relativeParent.resolvedRelativeTargetAt!==Gt.timestamp&&this.relativeParent.resolveTargetDelta(!0)}resolveTargetDelta(m=!1){const h=this.getLead();this.isProjectionDirty||(this.isProjectionDirty=h.isProjectionDirty),this.isTransformDirty||(this.isTransformDirty=h.isTransformDirty),this.isSharedProjectionDirty||(this.isSharedProjectionDirty=h.isSharedProjectionDirty);const f=!!this.resumingFrom||this!==h;if(!(m||f&&this.isSharedProjectionDirty||this.isProjectionDirty||this.parent?.isProjectionDirty||this.attemptToResolveRelativeTarget||this.root.updateBlockedByResize))return;const{layout:b,layoutId:v}=this.options;if(!this.layout||!(b||v))return;this.resolvedRelativeTargetAt=Gt.timestamp;const x=this.getClosestProjectingParent();x&&this.linkedParentVersion!==x.layoutVersion&&!x.options.layoutRoot&&this.removeRelativeTarget(),!this.targetDelta&&!this.relativeTarget&&(this.options.layoutAnchor!==!1&&x&&x.layout?this.createRelativeTarget(x,this.layout.layoutBox,x.layout.layoutBox):this.removeRelativeTarget()),!(!this.relativeTarget&&!this.targetDelta)&&(this.target||(this.target=Rt(),this.targetWithTransforms=Rt()),this.relativeTarget&&this.relativeTargetOrigin&&this.relativeParent&&this.relativeParent.target?(this.forceRelativeParentToResolveTarget(),B7(this.target,this.relativeTarget,this.relativeParent.target,this.options.layoutAnchor||void 0)):this.targetDelta?(this.resumingFrom?this.applyTransform(this.layout.layoutBox,!1,this.target):Va(this.target,this.layout.layoutBox),I4(this.target,this.targetDelta)):Va(this.target,this.layout.layoutBox),this.attemptToResolveRelativeTarget&&(this.attemptToResolveRelativeTarget=!1,this.options.layoutAnchor!==!1&&x&&!!x.resumingFrom==!!this.resumingFrom&&!x.options.layoutScroll&&x.target&&this.animationProgress!==1?this.createRelativeTarget(x,this.target,x.target):this.relativeParent=this.relativeTarget=void 0))}getClosestProjectingParent(){if(!(!this.parent||Lh(this.parent.latestValues)||R4(this.parent.latestValues)))return this.parent.isProjecting()?this.parent:this.parent.getClosestProjectingParent()}isProjecting(){return!!((this.relativeTarget||this.targetDelta||this.options.layoutRoot)&&this.layout)}createRelativeTarget(m,h,f){this.relativeParent=m,this.linkedParentVersion=m.layoutVersion,this.forceRelativeParentToResolveTarget(),this.relativeTarget=Rt(),this.relativeTargetOrigin=Rt(),ud(this.relativeTargetOrigin,h,f,this.options.layoutAnchor||void 0),Va(this.relativeTarget,this.relativeTargetOrigin)}removeRelativeTarget(){this.relativeParent=this.relativeTarget=void 0}calcProjection(){const m=this.getLead(),h=!!this.resumingFrom||this!==m;let f=!0;if((this.isProjectionDirty||this.parent?.isProjectionDirty)&&(f=!1),h&&(this.isSharedProjectionDirty||this.isTransformDirty)&&(f=!1),this.resolvedRelativeTargetAt===Gt.timestamp&&(f=!1),f)return;const{layout:y,layoutId:b}=this.options;if(this.isTreeAnimating=!!(this.parent&&this.parent.isTreeAnimating||this.currentAnimation||this.pendingAnimation),this.isTreeAnimating||(this.targetDelta=this.relativeTarget=void 0),!this.layout||!(y||b))return;Va(this.layoutCorrected,this.layout.layoutBox);const v=this.treeScale.x,x=this.treeScale.y;b7(this.layoutCorrected,this.treeScale,this.path,h),m.layout&&!m.target&&(this.treeScale.x!==1||this.treeScale.y!==1)&&(m.target=m.layout.layoutBox,m.targetWithTransforms=Rt());const{target:k}=m;if(!k){this.prevProjectionDelta&&(this.createProjectionDeltas(),this.scheduleRender());return}!this.projectionDelta||!this.prevProjectionDelta?this.createProjectionDeltas():(u1(this.prevProjectionDelta.x,this.projectionDelta.x),u1(this.prevProjectionDelta.y,this.projectionDelta.y)),No(this.projectionDelta,this.layoutCorrected,k,this.latestValues),(this.treeScale.x!==v||this.treeScale.y!==x||!k1(this.projectionDelta.x,this.prevProjectionDelta.x)||!k1(this.projectionDelta.y,this.prevProjectionDelta.y))&&(this.hasProjected=!0,this.scheduleRender(),this.notifyListeners("projectionUpdate",k))}hide(){this.isVisible=!1}show(){this.isVisible=!0}scheduleRender(m=!0){if(this.options.visualElement?.scheduleRender(),m){const h=this.getStack();h&&h.scheduleRender()}this.resumingFrom&&!this.resumingFrom.instance&&(this.resumingFrom=void 0)}createProjectionDeltas(){this.prevProjectionDelta=ri(),this.projectionDelta=ri(),this.projectionDeltaWithTransform=ri()}setAnimationOrigin(m,h=!1){const f=this.snapshot,y=f?f.latestValues:{},b={...this.latestValues},v=ri();(!this.relativeParent||!this.relativeParent.options.layoutRoot)&&(this.relativeTarget=this.relativeTargetOrigin=void 0),this.attemptToResolveRelativeTarget=!h;const x=Rt(),k=f?f.source:void 0,E=this.layout?this.layout.source:void 0,C=k!==E,N=this.getStack(),q=!N||N.members.length<=1,R=!!(C&&!q&&this.options.crossfade===!0&&!this.path.some(vD));this.animationProgress=0;let I;this.mixTargetDelta=$=>{const z=$/1e3;N1(v.x,m.x,z),N1(v.y,m.y,z),this.setTargetDelta(v),this.relativeTarget&&this.relativeTargetOrigin&&this.layout&&this.relativeParent&&this.relativeParent.layout&&(ud(x,this.layout.layoutBox,this.relativeParent.layout.layoutBox,this.options.layoutAnchor||void 0),bD(this.relativeTarget,this.relativeTargetOrigin,x,z),I&&K7(this.relativeTarget,I)&&(this.isProjectionDirty=!1),I||(I=Rt()),Va(I,this.relativeTarget)),C&&(this.animationValues=b,Y7(b,y,this.latestValues,z,R,q)),this.root.scheduleUpdateProjection(),this.scheduleRender(),this.animationProgress=z},this.mixTargetDelta(this.options.layoutRoot?1e3:0)}startAnimation(m){this.notifyListeners("animationStart"),this.currentAnimation?.stop(),this.resumingFrom?.currentAnimation?.stop(),this.pendingAnimation&&(xr(this.pendingAnimation),this.pendingAnimation=void 0),this.pendingAnimation=ut.update(()=>{Bc.hasAnimatedSinceResize=!0,this.motionValue||(this.motionValue=ci(0)),this.motionValue.jump(0,!1),this.currentAnimation=J7(this.motionValue,[0,1e3],{...m,velocity:0,isSync:!0,onUpdate:h=>{this.mixTargetDelta(h),m.onUpdate&&m.onUpdate(h)},onStop:()=>{},onComplete:()=>{m.onComplete&&m.onComplete(),this.completeAnimation()}}),this.resumingFrom&&(this.resumingFrom.currentAnimation=this.currentAnimation),this.pendingAnimation=void 0})}completeAnimation(){this.resumingFrom&&(this.resumingFrom.currentAnimation=void 0,this.resumingFrom.preserveOpacity=void 0);const m=this.getStack();m&&m.exitAnimationComplete(),this.resumingFrom=this.currentAnimation=this.animationValues=void 0,this.notifyListeners("animationComplete")}finishAnimation(){this.currentAnimation&&(this.mixTargetDelta&&this.mixTargetDelta(rD),this.currentAnimation.stop()),this.completeAnimation()}applyTransformsToTarget(){const m=this.getLead();let{targetWithTransforms:h,target:f,layout:y,latestValues:b}=m;if(!(!h||!f||!y)){if(this!==m&&this.layout&&y&&J4(this.options.animationType,this.layout.layoutBox,y.layoutBox)){f=this.target||Rt();const v=na(this.layout.layoutBox.x);f.x.min=m.target.x.min,f.x.max=f.x.min+v;const x=na(this.layout.layoutBox.y);f.y.min=m.target.y.min,f.y.max=f.y.min+x}Va(h,f),Fc(h,b),No(this.projectionDeltaWithTransform,this.layoutCorrected,h,b)}}registerSharedNode(m,h){this.sharedNodes.has(m)||this.sharedNodes.set(m,new nD),this.sharedNodes.get(m).add(h);const y=h.options.initialPromotionConfig;h.promote({transition:y?y.transition:void 0,preserveFollowOpacity:y&&y.shouldPreserveFollowOpacity?y.shouldPreserveFollowOpacity(h):void 0})}isLead(){const m=this.getStack();return m?m.lead===this:!0}getLead(){const{layoutId:m}=this.options;return m?this.getStack()?.lead||this:this}getPrevLead(){const{layoutId:m}=this.options;return m?this.getStack()?.prevLead:void 0}getStack(){const{layoutId:m}=this.options;if(m)return this.root.sharedNodes.get(m)}promote({needsReset:m,transition:h,preserveFollowOpacity:f}={}){const y=this.getStack();y&&y.promote(this,f),m&&(this.projectionDelta=void 0,this.needsReset=!0),h&&this.setOptions({transition:h})}relegate(){const m=this.getStack();return m?m.relegate(this):!1}resetSkewAndRotation(){const{visualElement:m}=this.options;if(!m)return;let h=!1;const{latestValues:f}=m;if((f.z||f.rotate||f.rotateX||f.rotateY||f.rotateZ||f.skewX||f.skewY)&&(h=!0),!h)return;const y={};f.z&&Wp("z",m,y,this.animationValues);for(let b=0;b<Vp.length;b++)Wp(`rotate${Vp[b]}`,m,y,this.animationValues),Wp(`skew${Vp[b]}`,m,y,this.animationValues);m.render();for(const b in y)m.setStaticValue(b,y[b]),this.animationValues&&(this.animationValues[b]=y[b]);m.scheduleRender()}applyProjectionStyles(m,h){if(!this.instance||this.isSVG)return;if(!this.isVisible){m.visibility="hidden";return}const f=this.getTransformTemplate();if(this.needsReset){this.needsReset=!1,m.visibility="",m.opacity="",m.pointerEvents=$c(h?.pointerEvents)||"",m.transform=f?f(this.latestValues,""):"none";return}const y=this.getLead();if(!this.projectionDelta||!this.layout||!y.target){this.options.layoutId&&(m.opacity=this.latestValues.opacity!==void 0?this.latestValues.opacity:1,m.pointerEvents=$c(h?.pointerEvents)||""),this.hasProjected&&!Wr(this.latestValues)&&(m.transform=f?f({},""):"none",this.hasProjected=!1);return}m.visibility="";const b=y.animationValues||y.latestValues;this.applyTransformsToTarget();let v=H7(this.projectionDeltaWithTransform,this.treeScale,b);f&&(v=f(b,v)),m.transform=v;const{x,y:k}=this.projectionDelta;m.transformOrigin=`${x.origin*100}% ${k.origin*100}% 0`,y.animationValues?m.opacity=y===this?b.opacity??this.latestValues.opacity??1:this.preserveOpacity?this.latestValues.opacity:b.opacityExit:m.opacity=y===this?b.opacity!==void 0?b.opacity:"":b.opacityExit!==void 0?b.opacityExit:0;for(const E in Fh){if(b[E]===void 0)continue;const{correct:C,applyTo:N,isCSSVariable:q}=Fh[E],R=v==="none"?b[E]:C(b[E],y);if(N){const I=N.length;for(let $=0;$<I;$++)m[N[$]]=R}else q?this.options.visualElement.renderState.vars[E]=R:m[E]=R}this.options.layoutId&&(m.pointerEvents=y===this?$c(h?.pointerEvents)||"":"none")}clearSnapshot(){this.resumeFrom=this.snapshot=void 0}resetTree(){this.root.nodes.forEach(m=>m.currentAnimation?.stop()),this.root.nodes.forEach(A1),this.root.sharedNodes.clear()}}}function iD(e){e.updateLayout()}function oD(e){const t=e.resumeFrom?.snapshot||e.snapshot;if(e.isLead()&&e.layout&&t&&e.hasListeners("didUpdate")){const{layoutBox:r,measuredBox:s}=e.layout,{animationType:c}=e.options,d=t.source!==e.layout.source;if(c==="size")sn(b=>{const v=d?t.measuredBox[b]:t.layoutBox[b],x=na(v);v.min=r[b].min,v.max=v.min+x});else if(c==="x"||c==="y"){const b=c==="x"?"y":"x";$h(d?t.measuredBox[b]:t.layoutBox[b],r[b])}else J4(c,t.layoutBox,r)&&sn(b=>{const v=d?t.measuredBox[b]:t.layoutBox[b],x=na(r[b]);v.max=v.min+x,e.relativeTarget&&!e.currentAnimation&&(e.isProjectionDirty=!0,e.relativeTarget[b].max=e.relativeTarget[b].min+x)});const m=ri();No(m,r,t.layoutBox);const h=ri();d?No(h,e.applyTransform(s,!0),t.measuredBox):No(h,r,t.layoutBox);const f=!K4(m);let y=!1;if(!e.resumeFrom){const b=e.getClosestProjectingParent();if(b&&!b.resumeFrom){const{snapshot:v,layout:x}=b;if(v&&x){const k=e.options.layoutAnchor||void 0,E=Rt();ud(E,t.layoutBox,v.layoutBox,k);const C=Rt();ud(C,r,x.layoutBox,k),H4(E,C)||(y=!0),b.options.layoutRoot&&(e.relativeTarget=C,e.relativeTargetOrigin=E,e.relativeParent=b)}}}e.notifyListeners("didUpdate",{layout:r,snapshot:t,delta:h,layoutDelta:m,hasLayoutChanged:f,hasRelativeLayoutChanged:y})}else if(e.isLead()){const{onExitComplete:r}=e.options;r&&r()}e.options.transition=void 0}function lD(e){e.parent&&(e.isProjecting()||(e.isProjectionDirty=e.parent.isProjectionDirty),e.isSharedProjectionDirty||(e.isSharedProjectionDirty=!!(e.isProjectionDirty||e.parent.isProjectionDirty||e.parent.isSharedProjectionDirty)),e.isTransformDirty||(e.isTransformDirty=e.parent.isTransformDirty))}function cD(e){e.isProjectionDirty=e.isSharedProjectionDirty=e.isTransformDirty=!1}function dD(e){e.clearSnapshot()}function A1(e){e.clearMeasurements()}function uD(e){e.isLayoutDirty=!0,e.updateLayout()}function q1(e){e.isLayoutDirty=!1}function mD(e){e.isAnimationBlocked&&e.layout&&!e.isLayoutDirty&&(e.snapshot=e.layout,e.isLayoutDirty=!0)}function pD(e){const{visualElement:t}=e.options;t&&t.getProps().onBeforeLayoutMeasure&&t.notify("BeforeLayoutMeasure"),e.resetTransform()}function E1(e){e.finishAnimation(),e.targetDelta=e.relativeTarget=e.target=void 0,e.isProjectionDirty=!0}function hD(e){e.resolveTargetDelta()}function fD(e){e.calcProjection()}function gD(e){e.resetSkewAndRotation()}function yD(e){e.removeLeadSnapshot()}function N1(e,t,r){e.translate=ht(t.translate,0,r),e.scale=ht(t.scale,1,r),e.origin=t.origin,e.originPoint=t.originPoint}function T1(e,t,r,s){e.min=ht(t.min,r.min,s),e.max=ht(t.max,r.max,s)}function bD(e,t,r,s){T1(e.x,t.x,r.x,s),T1(e.y,t.y,r.y,s)}function vD(e){return e.animationValues&&e.animationValues.opacityExit!==void 0}const xD={duration:.45,ease:[.4,0,.1,1]},M1=e=>typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().includes(e),P1=M1("applewebkit/")&&!M1("chrome/")?Math.round:La;function _1(e){e.min=P1(e.min),e.max=P1(e.max)}function wD(e){_1(e.x),_1(e.y)}function J4(e,t,r){return e==="position"||e==="preserve-aspect"&&!$7(w1(t),w1(r),.2)}function kD(e){return e!==e.root&&e.scroll?.wasRoot}const SD=Z4({attachResizeListener:(e,t)=>$o(e,"resize",t),measureScroll:()=>({x:document.documentElement.scrollLeft||document.body?.scrollLeft||0,y:document.documentElement.scrollTop||document.body?.scrollTop||0}),checkIsScrollRoot:()=>!0}),Gp={current:void 0},eS=Z4({measureScroll:e=>({x:e.scrollLeft,y:e.scrollTop}),defaultParent:()=>{if(!Gp.current){const e=new SD({});e.mount(window),e.setOptions({layoutScroll:!0}),Gp.current=e}return Gp.current},resetTransform:(e,t)=>{e.style.transform=t!==void 0?t:"none"},checkIsScrollRoot:e=>window.getComputedStyle(e).position==="fixed"}),tS=S.createContext({transformPagePoint:e=>e,isStatic:!1,reducedMotion:"never"});function CD(e=!0){const t=S.useContext(Mf);if(t===null)return[!0,null];const{isPresent:r,onExitComplete:s,register:c}=t,d=S.useId();S.useEffect(()=>{if(e)return c(d)},[e]);const m=S.useCallback(()=>e&&s&&s(d),[d,s,e]);return!r&&s?[!1,m]:[!0]}const aS=S.createContext({strict:!1}),R1={animation:["animate","variants","whileHover","whileTap","exit","whileInView","whileFocus","whileDrag"],exit:["exit"],drag:["drag","dragControls"],focus:["whileFocus"],hover:["whileHover","onHoverStart","onHoverEnd"],tap:["whileTap","onTap","onTapStart","onTapCancel"],pan:["onPan","onPanStart","onPanSessionStart","onPanEnd"],inView:["whileInView","onViewportEnter","onViewportLeave"],layout:["layout","layoutId"]};let I1=!1;function jD(){if(I1)return;const e={};for(const t in R1)e[t]={isEnabled:r=>R1[t].some(s=>!!r[s])};M4(e),I1=!0}function nS(){return jD(),h7()}function AD(e){const t=nS();for(const r in e)t[r]={...t[r],...e[r]};M4(t)}const qD=new Set(["animate","exit","variants","initial","style","values","variants","transition","transformTemplate","custom","inherit","onBeforeLayoutMeasure","onAnimationStart","onAnimationComplete","onUpdate","onDragStart","onDrag","onDragEnd","onMeasureDragConstraints","onDirectionLock","onDragTransitionEnd","_dragX","_dragY","onHoverStart","onHoverEnd","onViewportEnter","onViewportLeave","globalTapTarget","propagate","ignoreStrict","viewport"]);function md(e){return e.startsWith("while")||e.startsWith("drag")&&e!=="draggable"||e.startsWith("layout")||e.startsWith("onTap")||e.startsWith("onPan")||e.startsWith("onLayout")||qD.has(e)}let rS=e=>!md(e);function ED(e){typeof e=="function"&&(rS=t=>t.startsWith("on")?!md(t):e(t))}try{ED(require("@emotion/is-prop-valid").default)}catch{}function ND(e,t,r){const s={};for(const c in e)c==="values"&&typeof e.values=="object"||Kt(e[c])||(rS(c)||r===!0&&md(c)||!t&&!md(c)||e.draggable&&c.startsWith("onDrag"))&&(s[c]=e[c]);return s}const Bd=S.createContext({});function TD(e,t){if($d(e)){const{initial:r,animate:s}=e;return{initial:r===!1||Fo(r)?r:void 0,animate:Fo(s)?s:void 0}}return e.inherit!==!1?t:{}}function MD(e){const{initial:t,animate:r}=TD(e,S.useContext(Bd));return S.useMemo(()=>({initial:t,animate:r}),[U1(t),U1(r)])}function U1(e){return Array.isArray(e)?e.join(" "):e}const ag=()=>({style:{},transform:{},transformOrigin:{},vars:{}});function sS(e,t,r){for(const s in t)!Kt(t[s])&&!O4(s,r)&&(e[s]=t[s])}function PD({transformTemplate:e},t){return S.useMemo(()=>{const r=ag();return eg(r,t,e),Object.assign({},r.vars,r.style)},[t])}function _D(e,t){const r=e.style||{},s={};return sS(s,r,e),Object.assign(s,PD(e,t)),s}function RD(e,t){const r={},s=_D(e,t);return e.drag&&e.dragListener!==!1&&(r.draggable=!1,s.userSelect=s.WebkitUserSelect=s.WebkitTouchCallout="none",s.touchAction=e.drag===!0?"none":`pan-${e.drag==="x"?"y":"x"}
359`),e.tabIndex===void 0&&(e.onTap||e.onTapStart||e.whileTap)&&(r.tabIndex=0),r.style=s,r}const iS=()=>({...ag(),attrs:{}});function ID(e,t,r,s){const c=S.useMemo(()=>{const d=iS();return L4(d,t,F4(s),e.transformTemplate,e.style),{...d.attrs,style:{...d.style}}},[t]);if(e.style){const d={};sS(d,e.style,e),c.style={...d,...c.style}}return c}const UD=["animate","circle","defs","desc","ellipse","g","image","line","filter","marker","mask","metadata","path","pattern","polygon","polyline","rect","stop","switch","symbol","svg","text","tspan","use","view"];function ng(e){return typeof e!="string"||e.includes("-")?!1:!!(UD.indexOf(e)>-1||/[A-Z]/u.test(e))}function DD(e,t,r,{latestValues:s},c,d=!1,m){const f=(m??ng(e)?ID:RD)(t,s,c,e),y=ND(t,typeof e=="string",d),b=e!==S.Fragment?{...y,...f,ref:r}:{},{children:v}=t,x=S.useMemo(()=>Kt(v)?v.get():v,[v]);return S.createElement(e,{...b,children:x})}function OD({scrapeMotionValuesFromProps:e,createRenderState:t},r,s,c){return{latestValues:LD(r,s,c,e),renderState:t()}}function LD(e,t,r,s){const c={},d=s(e,{});for(const x in d)c[x]=$c(d[x]);let{initial:m,animate:h}=e;const f=$d(e),y=N4(e);t&&y&&!f&&e.inherit!==!1&&(m===void 0&&(m=t.initial),h===void 0&&(h=t.animate));let b=r?r.initial===!1:!1;b=b||m===!1;const v=b?h:m;if(v&&typeof v!="boolean"&&!Fd(v)){const x=Array.isArray(v)?v:[v];for(let k=0;k<x.length;k++){const E=Gf(e,x[k]);if(E){const{transitionEnd:C,transition:N,...q}=E;for(const R in q){let I=q[R];if(Array.isArray(I)){const $=b?I.length-1:0;I=I[$]}I!==null&&(c[R]=I)}for(const R in C)c[R]=C[R]}}}return c}const oS=e=>(t,r)=>{const s=S.useContext(Bd),c=S.useContext(Mf),d=()=>OD(e,t,s,c);return r?d():UR(d)},zD=oS({scrapeMotionValuesFromProps:tg,createRenderState:ag}),FD=oS({scrapeMotionValuesFromProps:$4,createRenderState:iS}),$D=Symbol.for("motionComponentSymbol");function BD(e,t,r){const s=S.useRef(r);S.useInsertionEffect(()=>{s.current=r});const c=S.useRef(null);return S.useCallback(d=>{d&&e.onMount?.(d);const m=s.current;if(typeof m=="function")if(d){const h=m(d);typeof h=="function"&&(c.current=h)}else c.current?(c.current(),c.current=null):m(d);else m&&(m.current=d);t&&(d?t.mount(d):t.unmount())},[t])}const lS=S.createContext({});function ei(e){return e&&typeof e=="object"&&Object.prototype.hasOwnProperty.call(e,"current")}function VD(e,t,r,s,c,d){const{visualElement:m}=S.useContext(Bd),h=S.useContext(aS),f=S.useContext(Mf),y=S.useContext(tS),b=y.reducedMotion,v=y.skipAnimations,x=S.useRef(null),k=S.useRef(!1);s=s||h.renderer,!x.current&&s&&(x.current=s(e,{visualState:t,parent:m,props:r,presenceContext:f,blockInitialAnimation:f?f.initial===!1:!1,reducedMotionConfig:b,skipAnimations:v,isSVG:d}),k.current&&x.current&&(x.current.manuallyAnimateOnMount=!0));const E=x.current,C=S.useContext(lS);E&&!E.projection&&c&&(E.type==="html"||E.type==="svg")&&WD(x.current,r,c,C);const N=S.useRef(!1);S.useInsertionEffect(()=>{E&&N.current&&E.update(r,f)});const q=r[g4],R=S.useRef(!!q&&typeof window<"u"&&!window.MotionHandoffIsComplete?.(q)&&window.MotionHasOptimisedAnimation?.(q));return OR(()=>{k.current=!0,E&&(N.current=!0,window.MotionIsMounted=!0,E.updateFeatures(),E.scheduleRenderMicrotask(),R.current&&E.animationState&&E.animationState.animateChanges())}),S.useEffect(()=>{E&&(!R.current&&E.animationState&&E.animationState.animateChanges(),R.current&&(queueMicrotask(()=>{window.MotionHandoffMarkAsComplete?.(q)}),R.current=!1),E.enteringChildren=void 0)}),E}function WD(e,t,r,s){const{layoutId:c,layout:d,drag:m,dragConstraints:h,layoutScroll:f,layoutRoot:y,layoutAnchor:b,layoutCrossfade:v}=t;e.projection=new r(e.latestValues,t["data-framer-portal-id"]?void 0:cS(e.parent)),e.projection.setOptions({layoutId:c,layout:d,alwaysMeasureLayout:!!m||h&&ei(h),visualElement:e,animationType:typeof d=="string"?d:"both",initialPromotionConfig:s,crossfade:v,layoutScroll:f,layoutRoot:y,layoutAnchor:b})}function cS(e){if(e)return e.options.allowProjection!==!1?e.projection:cS(e.parent)}function Kp(e,{forwardMotionProps:t=!1,type:r}={},s,c){s&&AD(s);const d=r?r==="svg":ng(e),m=d?FD:zD;function h(y,b){let v;const x={...S.useContext(tS),...y,layoutId:GD(y)},{isStatic:k}=x,E=MD(y),C=m(y,k);if(!k&&typeof window<"u"){KD();const N=HD(x);v=N.MeasureLayout,E.visualElement=VD(e,C,x,c,N.ProjectionNode,d)}return o.jsxs(Bd.Provider,{value:E,children:[v&&E.visualElement?o.jsx(v,{visualElement:E.visualElement,...x}):null,DD(e,y,BD(C,E.visualElement,b),C,k,t,d)]})}h.displayName=`motion.${typeof e=="string"?e:`create(${e.displayName??e.name??""})`}`;const f=S.forwardRef(h);return f[$D]=e,f}function GD({layoutId:e}){const t=S.useContext(Ek).id;return t&&e!==void 0?t+"-"+e:e}function KD(e,t){S.useContext(aS).strict}function HD(e){const t=nS(),{drag:r,layout:s}=t;if(!r&&!s)return{};const c={...r,...s};return{MeasureLayout:r?.isEnabled(e)||s?.isEnabled(e)?c.MeasureLayout:void 0,ProjectionNode:c.ProjectionNode}}
vendor: 20,226 bytes, line 359
359function QD(e,t){if(typeof Proxy>"u")return Kp;const r=new Map,s=(d,m)=>Kp(d,m,e,t),c=(d,m)=>s(d,m);return new Proxy(c,{get:(d,m)=>m==="create"?s:(r.has(m)||r.set(m,Kp(m,void 0,e,t)),r.get(m))})}const YD=(e,t)=>t.isSVG??ng(e)?new M7(t):new j7(t,{allowProjection:e!==S.Fragment});class XD extends Sr{constructor(t){super(t),t.animationState||(t.animationState=U7(t))}updateAnimationControlsSubscription(){const{animate:t}=this.node.getProps();Fd(t)&&(this.unmountControls=t.subscribe(this.node))}mount(){this.updateAnimationControlsSubscription()}update(){const{animate:t}=this.node.getProps(),{animate:r}=this.node.prevProps||{};t!==r&&this.updateAnimationControlsSubscription()}unmount(){this.node.animationState.reset(),this.unmountControls?.()}}let ZD=0;class JD extends Sr{constructor(){super(...arguments),this.id=ZD++,this.isExitComplete=!1}update(){if(!this.node.presenceContext)return;const{isPresent:t,onExitComplete:r}=this.node.presenceContext,{isPresent:s}=this.node.prevPresenceContext||{};if(!this.node.animationState||t===s)return;if(t&&s===!1){if(this.isExitComplete){const{initial:d,custom:m}=this.node.getProps();if(typeof d=="string"){const h=Jr(this.node,d,m);if(h){const{transition:f,transitionEnd:y,...b}=h;for(const v in b)this.node.getValue(v)?.jump(b[v])}}this.node.animationState.reset(),this.node.animationState.animateChanges()}else this.node.animationState.setActive("exit",!1);this.isExitComplete=!1;return}const c=this.node.animationState.setActive("exit",!t);r&&!t&&c.then(()=>{this.isExitComplete=!0,r(this.id)})}mount(){const{register:t,onExitComplete:r}=this.node.presenceContext||{};r&&r(this.id),t&&(this.unmount=t(this.id))}unmount(){}}const eO={animation:{Feature:XD},exit:{Feature:JD}};function Jo(e){return{point:{x:e.pageX,y:e.pageY}}}const tO=e=>t=>Yf(t)&&e(t,Jo(t));function To(e,t,r,s){return $o(e,t,tO(r),s)}const dS=({current:e})=>e?e.ownerDocument.defaultView:null,D1=(e,t)=>Math.abs(e-t);function aO(e,t){const r=D1(e.x,t.x),s=D1(e.y,t.y);return Math.sqrt(r**2+s**2)}const O1=new Set(["auto","scroll"]);class uS{constructor(t,r,{transformPagePoint:s,contextWindow:c=window,dragSnapToOrigin:d=!1,distanceThreshold:m=3,element:h}={}){if(this.startEvent=null,this.lastMoveEvent=null,this.lastMoveEventInfo=null,this.lastRawMoveEventInfo=null,this.handlers={},this.contextWindow=window,this.scrollPositions=new Map,this.removeScrollListeners=null,this.onElementScroll=k=>{this.handleScroll(k.target)},this.onWindowScroll=()=>{this.handleScroll(window)},this.updatePoint=()=>{if(!(this.lastMoveEvent&&this.lastMoveEventInfo))return;this.lastRawMoveEventInfo&&(this.lastMoveEventInfo=Ec(this.lastRawMoveEventInfo,this.transformPagePoint));const k=Hp(this.lastMoveEventInfo,this.history),E=this.startEvent!==null,C=aO(k.offset,{x:0,y:0})>=this.distanceThreshold;if(!E&&!C)return;const{point:N}=k,{timestamp:q}=Gt;this.history.push({...N,timestamp:q});const{onStart:R,onMove:I}=this.handlers;E||(R&&R(this.lastMoveEvent,k),this.startEvent=this.lastMoveEvent),I&&I(this.lastMoveEvent,k)},this.handlePointerMove=(k,E)=>{this.lastMoveEvent=k,this.lastRawMoveEventInfo=E,this.lastMoveEventInfo=Ec(E,this.transformPagePoint),ut.update(this.updatePoint,!0)},this.handlePointerUp=(k,E)=>{this.end();const{onEnd:C,onSessionEnd:N,resumeAnimation:q}=this.handlers;if((this.dragSnapToOrigin||!this.startEvent)&&q&&q(),!(this.lastMoveEvent&&this.lastMoveEventInfo))return;const R=Hp(k.type==="pointercancel"?this.lastMoveEventInfo:Ec(E,this.transformPagePoint),this.history);this.startEvent&&C&&C(k,R),N&&N(k,R)},!Yf(t))return;this.dragSnapToOrigin=d,this.handlers=r,this.transformPagePoint=s,this.distanceThreshold=m,this.contextWindow=c||window;const f=Jo(t),y=Ec(f,this.transformPagePoint),{point:b}=y,{timestamp:v}=Gt;this.history=[{...b,timestamp:v}];const{onSessionStart:x}=r;x&&x(t,Hp(y,this.history)),this.removeListeners=Yo(To(this.contextWindow,"pointermove",this.handlePointerMove),To(this.contextWindow,"pointerup",this.handlePointerUp),To(this.contextWindow,"pointercancel",this.handlePointerUp)),h&&this.startScrollTracking(h)}startScrollTracking(t){let r=t.parentElement;for(;r;){const s=getComputedStyle(r);(O1.has(s.overflowX)||O1.has(s.overflowY))&&this.scrollPositions.set(r,{x:r.scrollLeft,y:r.scrollTop}),r=r.parentElement}this.scrollPositions.set(window,{x:window.scrollX,y:window.scrollY}),window.addEventListener("scroll",this.onElementScroll,{capture:!0}),window.addEventListener("scroll",this.onWindowScroll),this.removeScrollListeners=()=>{window.removeEventListener("scroll",this.onElementScroll,{capture:!0}),window.removeEventListener("scroll",this.onWindowScroll)}}handleScroll(t){const r=this.scrollPositions.get(t);if(!r)return;const s=t===window,c=s?{x:window.scrollX,y:window.scrollY}:{x:t.scrollLeft,y:t.scrollTop},d={x:c.x-r.x,y:c.y-r.y};d.x===0&&d.y===0||(s?this.lastMoveEventInfo&&(this.lastMoveEventInfo.point.x+=d.x,this.lastMoveEventInfo.point.y+=d.y):this.history.length>0&&(this.history[0].x-=d.x,this.history[0].y-=d.y),this.scrollPositions.set(t,c),ut.update(this.updatePoint,!0))}updateHandlers(t){this.handlers=t}end(){this.removeListeners&&this.removeListeners(),this.removeScrollListeners&&this.removeScrollListeners(),this.scrollPositions.clear(),xr(this.updatePoint)}}function Ec(e,t){return t?{point:t(e.point)}:e}function L1(e,t){return{x:e.x-t.x,y:e.y-t.y}}function Hp({point:e},t){return{point:e,delta:L1(e,mS(t)),offset:L1(e,nO(t)),velocity:rO(t,.1)}}function nO(e){return e[0]}function mS(e){return e[e.length-1]}function rO(e,t){if(e.length<2)return{x:0,y:0};let r=e.length-1,s=null;const c=mS(e);for(;r>=0&&(s=e[r],!(c.timestamp-s.timestamp>qa(t)));)r--;if(!s)return{x:0,y:0};s===e[0]&&e.length>2&&c.timestamp-s.timestamp>qa(t)*2&&(s=e[1]);const d=Oa(c.timestamp-s.timestamp);if(d===0)return{x:0,y:0};const m={x:(c.x-s.x)/d,y:(c.y-s.y)/d};return m.x===1/0&&(m.x=0),m.y===1/0&&(m.y=0),m}function sO(e,{min:t,max:r},s){return t!==void 0&&e<t?e=s?ht(t,e,s.min):Math.max(e,t):r!==void 0&&e>r&&(e=s?ht(r,e,s.max):Math.min(e,r)),e}function z1(e,t,r){return{min:t!==void 0?e.min+t:void 0,max:r!==void 0?e.max+r-(e.max-e.min):void 0}}function iO(e,{top:t,left:r,bottom:s,right:c}){return{x:z1(e.x,r,c),y:z1(e.y,t,s)}}function F1(e,t){let r=t.min-e.min,s=t.max-e.max;return t.max-t.min<e.max-e.min&&([r,s]=[s,r]),{min:r,max:s}}function oO(e,t){return{x:F1(e.x,t.x),y:F1(e.y,t.y)}}function lO(e,t){let r=.5;const s=na(e),c=na(t);return c>s?r=Lo(t.min,t.max-s,e.min):s>c&&(r=Lo(e.min,e.max-c,t.min)),un(0,1,r)}function cO(e,t){const r={};return t.min!==void 0&&(r.min=t.min-e.min),t.max!==void 0&&(r.max=t.max-e.min),r}const Bh=.35;function dO(e=Bh){return e===!1?e=0:e===!0&&(e=Bh),{x:$1(e,"left","right"),y:$1(e,"top","bottom")}}function $1(e,t,r){return{min:B1(e,t),max:B1(e,r)}}function B1(e,t){return typeof e=="number"?e:e[t]||0}const uO=new WeakMap;class mO{constructor(t){this.openDragLock=null,this.isDragging=!1,this.currentDirection=null,this.originPoint={x:0,y:0},this.constraints=!1,this.hasMutatedConstraints=!1,this.elastic=Rt(),this.latestPointerEvent=null,this.latestPanInfo=null,this.visualElement=t}start(t,{snapToCursor:r=!1,distanceThreshold:s}={}){const{presenceContext:c}=this.visualElement;if(c&&c.isPresent===!1)return;const d=v=>{r&&this.snapToCursor(Jo(v).point),this.stopAnimation()},m=(v,x)=>{const{drag:k,dragPropagation:E,onDragStart:C}=this.getProps();if(k&&!E&&(this.openDragLock&&this.openDragLock(),this.openDragLock=VU(k),!this.openDragLock))return;this.latestPointerEvent=v,this.latestPanInfo=x,this.isDragging=!0,this.currentDirection=null,this.resolveConstraints(),this.visualElement.projection&&(this.visualElement.projection.isAnimationBlocked=!0,this.visualElement.projection.target=void 0),sn(q=>{let R=this.getAxisMotionValue(q).get()||0;if(cn.test(R)){const{projection:I}=this.visualElement;if(I&&I.layout){const $=I.layout.layoutBox[q];$&&(R=na($)*(parseFloat(R)/100))}}this.originPoint[q]=R}),C&&ut.update(()=>C(v,x),!1,!0),Rh(this.visualElement,"transform");const{animationState:N}=this.visualElement;N&&N.setActive("whileDrag",!0)},h=(v,x)=>{this.latestPointerEvent=v,this.latestPanInfo=x;const{dragPropagation:k,dragDirectionLock:E,onDirectionLock:C,onDrag:N}=this.getProps();if(!k&&!this.openDragLock)return;const{offset:q}=x;if(E&&this.currentDirection===null){this.currentDirection=hO(q),this.currentDirection!==null&&C&&C(this.currentDirection);return}this.updateAxis("x",x.point,q),this.updateAxis("y",x.point,q),this.visualElement.render(),N&&ut.update(()=>N(v,x),!1,!0)},f=(v,x)=>{this.latestPointerEvent=v,this.latestPanInfo=x,this.stop(v,x),this.latestPointerEvent=null,this.latestPanInfo=null},y=()=>{const{dragSnapToOrigin:v}=this.getProps();(v||this.constraints)&&this.startAnimation({x:0,y:0})},{dragSnapToOrigin:b}=this.getProps();this.panSession=new uS(t,{onSessionStart:d,onStart:m,onMove:h,onSessionEnd:f,resumeAnimation:y},{transformPagePoint:this.visualElement.getTransformPagePoint(),dragSnapToOrigin:b,distanceThreshold:s,contextWindow:dS(this.visualElement),element:this.visualElement.current})}stop(t,r){const s=t||this.latestPointerEvent,c=r||this.latestPanInfo,d=this.isDragging;if(this.cancel(),!d||!c||!s)return;const{velocity:m}=c;this.startAnimation(m);const{onDragEnd:h}=this.getProps();h&&ut.postRender(()=>h(s,c))}cancel(){this.isDragging=!1;const{projection:t,animationState:r}=this.visualElement;t&&(t.isAnimationBlocked=!1),this.endPanSession();const{dragPropagation:s}=this.getProps();!s&&this.openDragLock&&(this.openDragLock(),this.openDragLock=null),r&&r.setActive("whileDrag",!1)}endPanSession(){this.panSession&&this.panSession.end(),this.panSession=void 0}updateAxis(t,r,s){const{drag:c}=this.getProps();if(!s||!Nc(t,c,this.currentDirection))return;const d=this.getAxisMotionValue(t);let m=this.originPoint[t]+s[t];this.constraints&&this.constraints[t]&&(m=sO(m,this.constraints[t],this.elastic[t])),d.set(m)}resolveConstraints(){const{dragConstraints:t,dragElastic:r}=this.getProps(),s=this.visualElement.projection&&!this.visualElement.projection.layout?this.visualElement.projection.measure(!1):this.visualElement.projection?.layout,c=this.constraints;t&&ei(t)?this.constraints||(this.constraints=this.resolveRefConstraints()):t&&s?this.constraints=iO(s.layoutBox,t):this.constraints=!1,this.elastic=dO(r),c!==this.constraints&&!ei(t)&&s&&this.constraints&&!this.hasMutatedConstraints&&sn(d=>{this.constraints!==!1&&this.getAxisMotionValue(d)&&(this.constraints[d]=cO(s.layoutBox[d],this.constraints[d]))})}resolveRefConstraints(){const{dragConstraints:t,onMeasureDragConstraints:r}=this.getProps();if(!t||!ei(t))return!1;const s=t.current,{projection:c}=this.visualElement;if(!c||!c.layout)return!1;const d=v7(s,c.root,this.visualElement.getTransformPagePoint());let m=oO(c.layout.layoutBox,d);if(r){const h=r(g7(m));this.hasMutatedConstraints=!!h,h&&(m=_4(h))}return m}startAnimation(t){const{drag:r,dragMomentum:s,dragElastic:c,dragTransition:d,dragSnapToOrigin:m,onDragTransitionEnd:h}=this.getProps(),f=this.constraints||{},y=sn(b=>{if(!Nc(b,r,this.currentDirection))return;let v=f&&f[b]||{};(m===!0||m===b)&&(v={min:0,max:0});const x=c?200:1e6,k=c?40:1e7,E={type:"inertia",velocity:s?t[b]:0,bounceStiffness:x,bounceDamping:k,timeConstant:750,restDelta:1,restSpeed:10,...d,...v};return this.startAxisValueAnimation(b,E)});return Promise.all(y).then(h)}startAxisValueAnimation(t,r){const s=this.getAxisMotionValue(t);return Rh(this.visualElement,t),s.start(Wf(t,s,0,r,this.visualElement,!1))}stopAnimation(){sn(t=>this.getAxisMotionValue(t).stop())}getAxisMotionValue(t){const r=`_drag${t.toUpperCase()}`,s=this.visualElement.getProps(),c=s[r];return c||this.visualElement.getValue(t,(s.initial?s.initial[t]:void 0)||0)}snapToCursor(t){sn(r=>{const{drag:s}=this.getProps();if(!Nc(r,s,this.currentDirection))return;const{projection:c}=this.visualElement,d=this.getAxisMotionValue(r);if(c&&c.layout){const{min:m,max:h}=c.layout.layoutBox[r],f=d.get()||0;d.set(t[r]-ht(m,h,.5)+f)}})}scalePositionWithinConstraints(){if(!this.visualElement.current)return;const{drag:t,dragConstraints:r}=this.getProps(),{projection:s}=this.visualElement;if(!ei(r)||!s||!this.constraints)return;this.stopAnimation();const c={x:0,y:0};sn(m=>{const h=this.getAxisMotionValue(m);if(h&&this.constraints!==!1){const f=h.get();c[m]=lO({min:f,max:f},this.constraints[m])}});const{transformTemplate:d}=this.visualElement.getProps();this.visualElement.current.style.transform=d?d({},""):"none",s.root&&s.root.updateScroll(),s.updateLayout(),this.constraints=!1,this.resolveConstraints(),sn(m=>{if(!Nc(m,t,null))return;const h=this.getAxisMotionValue(m),{min:f,max:y}=this.constraints[m];h.set(ht(f,y,c[m]))}),this.visualElement.render()}addListeners(){if(!this.visualElement.current)return;uO.set(this.visualElement,this);const t=this.visualElement.current,r=To(t,"pointerdown",y=>{const{drag:b,dragListener:v=!0}=this.getProps(),x=y.target,k=x!==t&&YU(x);b&&v&&!k&&this.start(y)});let s;const c=()=>{const{dragConstraints:y}=this.getProps();ei(y)&&y.current&&(this.constraints=this.resolveRefConstraints(),s||(s=pO(t,y.current,()=>this.scalePositionWithinConstraints())))},{projection:d}=this.visualElement,m=d.addEventListener("measure",c);d&&!d.layout&&(d.root&&d.root.updateScroll(),d.updateLayout()),ut.read(c);const h=$o(window,"resize",()=>this.scalePositionWithinConstraints()),f=d.addEventListener("didUpdate",(({delta:y,hasLayoutChanged:b})=>{this.isDragging&&b&&(sn(v=>{const x=this.getAxisMotionValue(v);x&&(this.originPoint[v]+=y[v].translate,x.set(x.get()+y[v].translate))}),this.visualElement.render())}));return()=>{h(),r(),m(),f&&f(),s&&s()}}getProps(){const t=this.visualElement.getProps(),{drag:r=!1,dragDirectionLock:s=!1,dragPropagation:c=!1,dragConstraints:d=!1,dragElastic:m=Bh,dragMomentum:h=!0}=t;return{...t,drag:r,dragDirectionLock:s,dragPropagation:c,dragConstraints:d,dragElastic:m,dragMomentum:h}}}function V1(e){let t=!0;return()=>{if(t){t=!1;return}e()}}function pO(e,t,r){const s=Jx(e,V1(r)),c=Jx(t,V1(r));return()=>{s(),c()}}function Nc(e,t,r){return(t===!0||t===e)&&(r===null||r===e)}function hO(e,t=10){let r=null;return Math.abs(e.y)>t?r="y":Math.abs(e.x)>t&&(r="x"),r}class fO extends Sr{constructor(t){super(t),this.removeGroupControls=La,this.removeListeners=La,this.controls=new mO(t)}mount(){const{dragControls:t}=this.node.getProps();t&&(this.removeGroupControls=t.subscribe(this.controls)),this.removeListeners=this.controls.addListeners()||La}update(){const{dragControls:t}=this.node.getProps(),{dragControls:r}=this.node.prevProps||{};t!==r&&(this.removeGroupControls(),t&&(this.removeGroupControls=t.subscribe(this.controls)))}unmount(){this.removeGroupControls(),this.removeListeners(),this.controls.isDragging||this.controls.endPanSession()}}const Qp=e=>(t,r)=>{e&&ut.update(()=>e(t,r),!1,!0)};class gO extends Sr{constructor(){super(...arguments),this.removePointerDownListener=La}onPointerDown(t){this.session=new uS(t,this.createPanHandlers(),{transformPagePoint:this.node.getTransformPagePoint(),contextWindow:dS(this.node)})}createPanHandlers(){const{onPanSessionStart:t,onPanStart:r,onPan:s,onPanEnd:c}=this.node.getProps();return{onSessionStart:Qp(t),onStart:Qp(r),onMove:Qp(s),onEnd:(d,m)=>{delete this.session,c&&ut.postRender(()=>c(d,m))}}}mount(){this.removePointerDownListener=To(this.node.current,"pointerdown",t=>this.onPointerDown(t))}update(){this.session&&this.session.updateHandlers(this.createPanHandlers())}unmount(){this.removePointerDownListener(),this.session&&this.session.end()}}let Yp=!1;class yO extends S.Component{componentDidMount(){const{visualElement:t,layoutGroup:r,switchLayoutGroup:s,layoutId:c}=this.props,{projection:d}=t;d&&(r.group&&r.group.add(d),s&&s.register&&c&&s.register(d),Yp&&d.root.didUpdate(),d.addEventListener("animationComplete",()=>{this.safeToRemove()}),d.setOptions({...d.options,layoutDependency:this.props.layoutDependency,onExitComplete:()=>this.safeToRemove()})),Bc.hasEverUpdated=!0}getSnapshotBeforeUpdate(t){const{layoutDependency:r,visualElement:s,drag:c,isPresent:d}=this.props,{projection:m}=s;return m&&(m.isPresent=d,t.layoutDependency!==r&&m.setOptions({...m.options,layoutDependency:r}),Yp=!0,c||t.layoutDependency!==r||r===void 0||t.isPresent!==d?m.willUpdate():this.safeToRemove(),t.isPresent!==d&&(d?m.promote():m.relegate()||ut.postRender(()=>{const h=m.getStack();(!h||!h.members.length)&&this.safeToRemove()}))),null}componentDidUpdate(){const{visualElement:t,layoutAnchor:r}=this.props,{projection:s}=t;s&&(s.options.layoutAnchor=r,s.root.didUpdate(),Qf.postRender(()=>{!s.currentAnimation&&s.isLead()&&this.safeToRemove()}))}componentWillUnmount(){const{visualElement:t,layoutGroup:r,switchLayoutGroup:s}=this.props,{projection:c}=t;Yp=!0,c&&(c.scheduleCheckAfterUnmount(),r&&r.group&&r.group.remove(c),s&&s.deregister&&s.deregister(c))}safeToRemove(){const{safeToRemove:t}=this.props;t&&t()}render(){return null}}function pS(e){const[t,r]=CD(),s=S.useContext(Ek);return o.jsx(yO,{...e,layoutGroup:s,switchLayoutGroup:S.useContext(lS),isPresent:t,safeToRemove:r})}const bO={pan:{Feature:gO},drag:{Feature:fO,ProjectionNode:eS,MeasureLayout:pS}};function W1(e,t,r){const{props:s}=e;e.animationState&&s.whileHover&&e.animationState.setActive("whileHover",r==="Start");const c="onHover"+r,d=s[c];d&&ut.postRender(()=>d(t,Jo(t)))}class vO extends Sr{mount(){const{current:t}=this.node;t&&(this.unmount=GU(t,(r,s)=>(W1(this.node,s,"Start"),c=>W1(this.node,c,"End"))))}unmount(){}}class xO extends Sr{constructor(){super(...arguments),this.isActive=!1}onFocus(){let t=!1;try{t=this.node.current.matches(":focus-visible")}catch{t=!0}!t||!this.node.animationState||(this.node.animationState.setActive("whileFocus",!0),this.isActive=!0)}onBlur(){!this.isActive||!this.node.animationState||(this.node.animationState.setActive("whileFocus",!1),this.isActive=!1)}mount(){this.unmount=Yo($o(this.node.current,"focus",()=>this.onFocus()),$o(this.node.current,"blur",()=>this.onBlur()))}unmount(){}}function G1(e,t,r){const{props:s}=e;if(e.current instanceof HTMLButtonElement&&e.current.disabled)return;e.animationState&&s.whileTap&&e.animationState.setActive("whileTap",r==="Start");const c="onTap"+(r==="End"?"":r),d=s[c];d&&ut.postRender(()=>d(t,Jo(t)))}class wO extends Sr{mount(){const{current:t}=this.node;if(!t)return;const{globalTapTarget:r,propagate:s}=this.node.props;this.unmount=ZU(t,(c,d)=>(G1(this.node,d,"Start"),(m,{success:h})=>G1(this.node,m,h?"End":"Cancel")),{useGlobalTarget:r,stopPropagation:s?.tap===!1})}unmount(){}}const Vh=new WeakMap,Xp=new WeakMap,kO=e=>{const t=Vh.get(e.target);t&&t(e)},SO=e=>{e.forEach(kO)};function CO({root:e,...t}){const r=e||document;Xp.has(r)||Xp.set(r,{});const s=Xp.get(r),c=JSON.stringify(t);return s[c]||(s[c]=new IntersectionObserver(SO,{root:e,...t})),s[c]}function jO(e,t,r){const s=CO(t);return Vh.set(e,r),s.observe(e),()=>{Vh.delete(e),s.unobserve(e)}}const AO={some:0,all:1};class qO extends Sr{constructor(){super(...arguments),this.hasEnteredView=!1,this.isInView=!1}startObserver(){this.stopObserver?.();const{viewport:t={}}=this.node.getProps(),{root:r,margin:s,amount:c="some",once:d}=t,m={root:r?r.current:void 0,rootMargin:s,threshold:typeof c=="number"?c:AO[c]},h=f=>{const{isIntersecting:y}=f;if(this.isInView===y||(this.isInView=y,d&&!y&&this.hasEnteredView))return;y&&(this.hasEnteredView=!0),this.node.animationState&&this.node.animationState.setActive("whileInView",y);const{onViewportEnter:b,onViewportLeave:v}=this.node.getProps(),x=y?b:v;x&&x(f)};this.stopObserver=jO(this.node.current,m,h)}mount(){this.startObserver()}update(){if(typeof IntersectionObserver>"u")return;const{props:t,prevProps:r}=this.node;["amount","margin","root"].some(EO(t,r))&&this.startObserver()}unmount(){this.stopObserver?.(),this.hasEnteredView=!1,this.isInView=!1}}function EO({viewport:e={}},{viewport:t={}}={}){return r=>e[r]!==t[r]}const NO={inView:{Feature:qO},tap:{Feature:wO},focus:{Feature:xO},hover:{Feature:vO}},TO={layout:{ProjectionNode:eS,MeasureLayout:pS}},MO={...eO,...NO,...bO,...TO},pd=QD(MO,YD),Vd=[{code:"SMP.1",focus:{en:"Make sense of problems and persevere in solving them.",es:"Dar sentido a los problemas y perseverar en su resolución."},category:"Standards for Mathematical Practice"}
359,{code:"SMP.2",focus:{en:"Reason abstractly and quantitatively.",es:"Razonar de forma abstracta y cuantitativa."},category:"Standards for Mathematical Practice"},{code:"SMP.3",focus:{en:"Construct viable arguments and critique the reasoning of others.",es:"Construir argumentos viables y analizar crÃticamente el razonamiento de otros."},category:"Standards for Mathematical Practice"},{code:"SMP.4",focus:{en:"Model with mathematics.",es:"Modelar con matemáticas."},category:"Standards for Mathematical Practice"},{code:"SMP.5",focus:{en:"Use appropriate tools strategically.",es:"Usar las herramientas apropiadas de forma estratégica."},category:"Standards for Mathematical Practice"},{code:"SMP.6",focus:{en:"Attend to precision.",es:"Prestar atención a la precisión."},category:"Standards for Mathematical Practice"},{code:"SMP.7",focus:{en:"Look for and make use of structure.",es:"Buscar y utilizar la estructura."},category:"Standards for Mathematical Practice"},{code:"SMP.8",focus:{en:"Look for and express regularity in repeated reasoning.",es:"Buscar y expresar regularidad en el razonamiento repetido."},category:"Standards for Mathematical Practice"},{code:"4.OA.1",focus:{en:"Interpret a multiplication equation as a comparison (e.g., 35 = 5 à 7 as 35 is 5 times as many as 7); represent verbal statements of multiplicative comparisons as multiplication equations.",es:"Interpretar una ecuación de multiplicación como una comparación (por ejemplo, 35 = 5 à 7 como 35 es 5 veces 7); representar enunciados verbales de comparaciones multiplicativas como ecuaciones de multiplicación."},category:"Operations and Algebraic Thinking"},{code:"4.OA.2",focus:{en:"Multiply or divide to solve word problems involving multiplicative comparison, using drawings and equations with a symbol for the unknown, and distinguish multiplicative comparison from additive comparison.",es:"Multiplicar o dividir para resolver problemas verbales de comparación multiplicativa, usando dibujos y ecuaciones con un sÃmbolo para la incógnita, y distinguir la comparación multiplicativa de la aditiva."},category:"Operations and Algebraic Thinking"},{code:"4.OA.3",focus:{en:"Solve multistep word problems with whole numbers using the four operations, including problems with remainders; represent these problems using equations with a letter for the unknown and assess the reasonableness of answers using estimation and mental math.",es:"Resolver problemas verbales de varios pasos con números enteros usando las cuatro operaciones, incluidos problemas con residuos; representar estos problemas con ecuaciones que usen una letra para la incógnita y evaluar la razonabilidad de las respuestas usando estimación y cálculo mental."},category:"Operations and Algebraic Thinking"},{code:"4.OA.4",focus:{en:"Find all factor pairs for a whole number from 1 to 100; recognize that a whole number is a multiple of each of its factors; determine whether a number is prime or composite.",es:"Hallar todos los pares de factores de un número entero del 1 al 100; reconocer que un número entero es múltiplo de cada uno de sus factores; determinar si un número es primo o compuesto."},category:"Operations and Algebraic Thinking"},{code:"4.OA.5",focus:{en:"Generate a number or shape pattern that follows a given rule; identify apparent features of the pattern that were not explicit in the rule itself.",es:"Generar un patrón numérico o de figuras que siga una regla dada; identificar caracterÃsticas aparentes del patrón que no estaban explÃcitas en la regla."},category:"Operations and Algebraic Thinking"},{code:"4.NBT.1",focus:{en:"Recognize that in a multi-digit whole number, a digit in one place represents ten times what it represents in the place to its right.",es:"Reconocer que en un número entero de varios dÃgitos, un dÃgito en un lugar representa diez veces lo que representa en el lugar a su derecha."},category:"Number and Operations in Base Ten"},{code:"4.NBT.2",focus:{en:"Read and write multi-digit whole numbers using base-ten numerals, number names, and expanded form; compare two multi-digit numbers based on the meanings of the digits in each place, using >, =, and < symbols.",es:"Leer y escribir números enteros de varios dÃgitos usando numerales de base diez, nombres de números y forma desarrollada; comparar dos números de varios dÃgitos según el significado de los dÃgitos en cada lugar, usando los sÃmbolos >, = y <."},category:"Number and Operations in Base Ten"},{code:"4.NBT.3",focus:{en:"Use place value understanding to round multi-digit whole numbers to any place.",es:"Usar la comprensión del valor posicional para redondear números enteros de varios dÃgitos a cualquier lugar."},category:"Number and Operations in Base Ten"},{code:"4.NBT.4",focus:{en:"Fluently add and subtract multi-digit whole numbers using the standard algorithm.",es:"Sumar y restar con fluidez números enteros de varios dÃgitos usando el algoritmo estándar."},category:"Number and Operations in Base Ten"},{code:"4.NBT.5",focus:{en:"Multiply a whole number of up to four digits by a one-digit whole number, and multiply two two-digit numbers, using strategies based on place value and the properties of operations; illustrate and explain with equations, arrays, or area models.",es:"Multiplicar un número entero de hasta cuatro dÃgitos por un número de un dÃgito, y multiplicar dos números de dos dÃgitos, usando estrategias basadas en el valor posicional y las propiedades de las operaciones; ilustrar y explicar con ecuaciones, matrices o modelos de área."},category:"Number and Operations in Base Ten"},{code:"4.NBT.6",focus:{en:"Find whole-number quotients and remainders with up to four-digit dividends and one-digit divisors, using strategies based on place value, the properties of operations, and the relationship between multiplication and division.",es:"Hallar cocientes y residuos de números enteros con dividendos de hasta cuatro dÃgitos y divisores de un dÃgito, usando estrategias basadas en el valor posicional, las propiedades de las operaciones y la relación entre multiplicación y división."},category:"Number and Operations in Base Ten"},{code:"4.NF.1",focus:{en:"Explain why a fraction a/b is equivalent to a fraction (n à a)/(n à b) using visual fraction models, and use this principle to recognize and generate equivalent fractions.",es:"Explicar por qué una fracción a/b es equivalente a la fracción (n à a)/(n à b) usando modelos visuales de fracciones, y usar este principio para reconocer y generar fracciones equivalentes."},category:"Number and OperationsâFractions"},{code:"4.NF.2",focus:{en:"Compare two fractions with different numerators and different denominators by creating common denominators or numerators, or by comparing to a benchmark such as 1/2; record results with >, =, or <, and justify the conclusions.",es:"Comparar dos fracciones con numeradores y denominadores distintos creando denominadores o numeradores comunes, o comparándolas con una referencia como 1/2; registrar los resultados con >, = o <, y justificar las conclusiones."},category:"Number and OperationsâFractions"},{code:"4.NF.3",focus:{en:"Understand a fraction a/b as a sum of unit fractions 1/b; add and subtract fractions and mixed numbers with like denominators, and solve word problems involving such operations.",es:"Comprender una fracción a/b como una suma de fracciones unitarias 1/b; sumar y restar fracciones y números mixtos con denominadores iguales, y resolver problemas verbales que involucren estas operaciones."},category:"Number and OperationsâFractions"}
359,{code:"4.NF.4",focus:{en:"Apply and extend previous understandings of multiplication to multiply a fraction by a whole number, and solve word problems involving multiplication of a fraction by a whole number.",es:"Aplicar y extender la comprensión previa de la multiplicación para multiplicar una fracción por un número entero, y resolver problemas verbales que involucren la multiplicación de una fracción por un número entero."},category:"Number and OperationsâFractions"},{code:"4.NF.5",focus:{en:"Express a fraction with denominator 10 as an equivalent fraction with denominator 100, and add two fractions with respective denominators 10 and 100.",es:"Expresar una fracción con denominador 10 como una fracción equivalente con denominador 100, y sumar dos fracciones con denominadores 10 y 100."},category:"Number and OperationsâFractions"},{code:"4.NF.6",focus:{en:"Use decimal notation for fractions with denominators 10 or 100, and locate these decimals on a number line.",es:"Usar la notación decimal para fracciones con de
359nominadores 10 o 100, y ubicar estos decimales en una recta numérica."},category:"Number and OperationsâFractions"},{code:"4.NF.7",focus:{en:"Compare two decimals to hundredths by reasoning about their size, recognizing that comparisons are valid only when the two decimals refer to the same whole; record results with >, =, or < and justify the conclusions.",es:"Comparar dos decimales hasta centésimas razonando sobre su tamaño, reconociendo que las comparaciones solo son válidas cuando los dos decimales se refieren al mismo entero; registrar los resultados con >, = o < y justificar las conclusiones."},category:"Number and OperationsâFractions"},{code:"4.MD.1",focus:{en:"Know relative sizes of measurement units within one system (km, m, cm; kg, g; lb, oz; L, mL; hr, min, sec); express measurements in a larger unit in terms of a smaller unit and record equivalences in a two-column table.",es:"Conocer los tamaños relativos de las unidades de medida dentro de un sistema (km, m, cm; kg, g; lb, oz; L, mL; h, min, s); expresar medidas de una unidad mayor en términos de una menor y registrar las equivalencias en una tabla de dos columnas."},category:"Measurement and Data"},{code:"4.MD.2",focus:{en:"Use the four operations to solve word problems involving distances, intervals of time, liquid volumes, masses of objects, and money, including problems with simple fractions or decimals.",es:"Usar las cuatro operaciones para resolver problemas verbales sobre distancias, intervalos de tiempo, volúmenes de lÃquidos, masas de objetos y dinero, incluyendo problemas con fracciones o decimales simples."},category:"Measurement and Data"},{code:"4.MD.3",focus:{en:"Apply the area and perimeter formulas for rectangles in real-world and mathematical problems.",es:"Aplicar las fórmulas de área y perÃmetro de rectángulos en problemas del mundo real y matemáticos."},category:"Measurement and Data"},{code:"4.MD.4",focus:{en:"Make a line plot to display a data set of measurements in fractions of a unit (1/2, 1/4, 1/8); solve problems involving addition and subtraction of fractions using information presented in line plots.",es:"Hacer un diagrama de puntos para mostrar un conjunto de datos de medidas en fracciones de unidad (1/2, 1/4, 1/8); resolver problemas de suma y resta de fracciones usando la información de los diagramas de puntos."},category:"Measurement and Data"},{code:"4.MD.5",focus:{en:"Recognize angles as geometric figures formed where two rays share a common endpoint, and understand concepts of angle measurement: a degree as 1/360 of a circle, and angle measure as additive.",es:"Reconocer los ángulos como figuras geométricas formadas donde dos rayos comparten un extremo común, y comprender los conceptos de la medición de ángulos: un grado como 1/360 de un cÃrculo y la medida de ángulos como aditiva."},category:"Measurement and Data"},{code:"4.MD.6",focus:{en:"Measure angles in whole-number degrees using a protractor, and sketch angles of a specified measure.",es:"Medir ángulos en grados enteros usando un transportador, y dibujar ángulos de una medida especÃfica."},category:"Measurement and Data"},{code:"4.MD.7",focus:{en:"Recognize angle measure as additive; solve addition and subtraction problems to find unknown angles on a diagram in real-world and mathematical problems.",es:"Reconocer la medida de ángulos como aditiva; resolver problemas de suma y resta para hallar ángulos desconocidos en un diagrama en problemas del mundo real y matemáticos."},category:"Measurement and Data"},{code:"4.G.1",focus:{en:"Draw points, lines, line segments, rays, angles (right, acute, obtuse), and perpendicular and parallel lines; identify these in two-dimensional figures.",es:"Dibujar puntos, rectas, segmentos, rayos, ángulos (rectos, agudos, obtusos) y rectas perpendiculares y paralelas; identificarlos en figuras bidimensionales."},category:"Geometry"},{code:"4.G.2",focus:{en:"Classify two-dimensional figures based on the presence or absence of parallel or perpendicular lines, or the presence or absence of angles of a specified size; recognize right triangles as a category.",es:"Clasificar figuras bidimensionales según la presencia o ausencia de rectas paralelas o perpendiculares, o la presencia o ausencia de ángulos de un tamaño dado;
359 reconocer los triángulos rectángulos como una categorÃa."},category:"Geometry"},{code:"4.G.3",focus:{en:"Recognize a line of symmetry for a two-dimensional figure as a line across which the figure can be folded so that the two parts match; identify line-symmetric figures and draw lines of symmetry.",es:"Reconocer un eje de simetrÃa de una figura bidimensional como una recta a lo largo de la cual la figura se puede doblar para que las dos partes coincidan; identificar figuras con simetrÃa axial y dibujar ejes de simetrÃa."},category:"Geometry"}];function PO({unit:e}){const{t}=sa(),{lang:r}=_e();return o.jsxs("div",{className:"group relative rounded-xl border border-border bg-card overflow-hidden shadow-sm hover:shadow-md transition-all duration-300 flex flex-col h-full",children:[o.jsxs("div",{className:"aspect-[16/9] overflow-hidden relative",children:[o.jsx("div",{className:"absolute inset-0 bg-primary/10 mix-blend-multiply z-10"}),o.jsx("img",{src:`/${e.coverImageUrl.replace(/^\//,"")}`,alt:t(e.title),className:"object-cover w-full h-full group-hover:scale-105 transition-transform duration-500"})]}),o.jsxs("div",{className:"p-6 flex flex-col flex-1",children:[o.jsx("div",{className:"text-accent font-bold text-sm tracking-wider uppercase mb-2",children:r==="en"?`Unit ${e.id}`:`Unidad ${e.id}`}),o.jsx("h3",{className:"font-serif text-xl font-bold text-card-foreground mb-3 line-clamp-2",children:t(e.title)}),o.jsx("p",{className:"text-muted-foreground text-sm mb-6 line-clamp-3 flex-1",children:t(e.description)}),o.jsxs(Te,{href:`/units/${e.id}`,className:"inline-flex items-center justify-between w-full px-4 py-2 bg-secondary/10 hover:bg-secondary/20 text-primary font-medium rounded-md transition-colors",children:[o.jsx("span",{children:r==="en"?"View Unit":"Ver Unidad"}),o.jsx(Do,{className:"h-4 w-4 transition-transform group-hover:translate-x-1"})]})]})]})}function _O(){const{lang:e}=_e(),t="/images/hero.png",r={eyebrow:{en:"Woodbridge Academy · Guatemala",es:"Woodbridge Academy · Guatemala"},title:{en:"Grade 4 Mathematics",es:"Matemáticas de 4.º Grado"},subtitle:{en:"A year-long course aligned to the California Common Core State Standards for Mathematics (Grade 4): place value and whole-number operations, multiplication and division, fractions and decimals, and measurement, data, and geometry.",es:"Un curso de un año alineado con los Estándares Estatales Comunes de Matemáticas de California (4.º grado): valor posicional y operaciones con números enteros, multiplicación y división, fracciones y decimales, y medición, datos y geometrÃa."},begin:{en:"Begin Course",es:"Comenzar Curso"},syllabus:{en:"View Standards",es:"Ver Estándares"},unitsHeading:{en:"Four Units, Thirty-Six Weeks",es:"Cuatro Unidades, Treinta y Seis Semanas"},unitsLead:{en:"Each unit unfolds across nine weekly lessons that move from exploration to a performance task.",es:"Cada unidad se desarrolla en nueve lecciones semanales que van desde la exploración hasta una tarea de desempeño."},pillars:{en:"Course Pillars",es:"Pilares del Curso"},standardsHeading:{en:"Aligned to the California Common Core State Standards for Mathematics",es:"Alineado con los Estándares Estatales Comunes de Matemáticas de California"},standardsLead:{en:"Every lesson explicitly cites the Common Core mathematics standards it addresses, so students, teachers, and families can see exactly what is being learned.",es:"Cada lección cita explÃcitamente los estándares de matemáticas de Common Core que aborda, para que estudiantes, docentes y familias vean exactamente qué se está aprendiendo."},aboutTeacher:{en:"About the Course",es:"Sobre el Curso"},teacherBio:{en:"This course is offered to 4th-grade students at Woodbridge Academy. It combines guided exploration, structured practice, and modeling tasks rooted in real-world problems. Students keep a math notebook, complete four culminating performance tasks, and learn to communicate their reasoning clearly in both English and Spanish.",es:"Este curso se ofrece a estudiantes de 4.º grado en Woodbridge Academy. Combina exploración guiada, práctica estructurada y tareas de modelación basadas en problemas reales. Los estudiantes llevan un cuaderno de matemáticas, completan cuatro tareas de desempeño culminantes y aprenden a comunicar su razonamiento con claridad en inglés y español."}},s=[{icon:kM,en:{t:"Explore",d:"Investigate patterns and ask mathematical questions."},es:{t:"Explorar",d:"Investiga patrones y formula preguntas matemáticas."}},{icon:sM,en:{t:"Reason",d:"Build and critique logical arguments from evidence."},es:{t:"Razonar",d:"Construye y critica argumentos lógicos a partir de evidencia."}},{icon:oM,en:{t:"Model",d:"Represent real-world problems with math and check your results."},es:{t:"Modelar",d:"Representa problemas reales con matemáticas y verifica tus resultados."}},{icon:bf,en:{t:"Communicate",d:"Explain your thinking with precision in words, symbols, and visuals."}
359,es:{t:"Comunicar",d:"Explica tu pensamiento con precisión en palabras, sÃmbolos e imágenes."}}];return o.jsxs("div",{children:[o.jsx("section",{className:"relative overflow-hidden",children:o.jsxs("div",{className:"container mx-auto px-4 lg:px-8 grid lg:grid-cols-2 gap-12 items-center py-12 lg:py-20",children:[o.jsxs(pd.div,{initial:{opacity:0,y:24},animate:{opacity:1,y:0},transition:{duration:.6},children:[o.jsx("p",{className:"text-xs font-semibold uppercase tracking-[0.2em] text-accent mb-4",children:r.eyebrow[e]}),o.jsx("h1",{className:"font-serif text-5xl md:text-6xl lg:text-7xl font-bold text-primary leading-[1.05] mb-6",children:r.title[e]}),o.jsx("p",{className:"text-lg md:text-xl text-muted-foreground leading-relaxed mb-8 max-w-xl",children:r.subtitle[e]}),o.jsxs("div",{className:"flex flex-wrap gap-3",children:[o.jsxs(Te,{href:"/lesson/1",className:"inline-flex items-center gap-2 bg-primary text-primary-foreground hover:bg-primary/90 transition-colors px-6 py-3 rounded-md font-medium shadow-sm",children:[r.begin[e]," ",o.jsx(Do,{className:"h-4 w-4"})]}),o.jsx(Te,{href:"/about",className:"inline-flex items-center gap-2 border border-border bg-card hover:bg-secondary/5 text-foreground transition-colors px-6 py-3 rounded-md font-medium",children:r.syllabus[e]})]})]}),o.jsx(pd.div,{initial:{opacity:0,scale:.95},animate:{opacity:1,scale:1},transition:{duration:.7,delay:.1},className:"relative aspect-[4/3] rounded-2xl overflow-hidden shadow-xl border border-border bg-card",children:o.jsx("img",{src:t,alt:"Matemáticas en Woodbridge Academy",className:"w-full h-full object-cover"})})]})}),o.jsx("section",{className:"bg-sidebar/50 border-y border-border py-12",children:o.jsxs("div",{className:"container mx-auto px-4 lg:px-8",children:[o.jsx("h2",{className:"font-serif text-xl font-semibold text-primary mb-6 text-center",children:r.pillars[e]}),o.jsx("div",{className:"grid sm:grid-cols-2 lg:grid-cols-4 gap-6",children:s.map(({icon:c,en:d,es:m},h)=>{const f=e==="en"?d:m;return o.jsxs("div",{className:"bg-card border border-border rounded-xl p-6 text-center",children:[o.jsx("div",{className:"inline-flex h-11 w-11 items-center justify-center rounded-full bg-accent/15 text-accent mb-3",children:o.jsx(c,{className:"h-5 w-5"})}),o.jsx("h3",{className:"font-serif text-lg font-semibold text-primary mb-1",children:f.t}),o.jsx("p",{className:"text-sm text-muted-foreground",children:f.d})]},h)})})]})}),o.jsxs("section",{className:"container mx-auto px-4 lg:px-8 py-16",children:[o.jsxs("div",{className:"max-w-2xl mb-10",children:[o.jsx("h2",{className:"font-serif text-3xl md:text-4xl font-bold text-primary mb-3",children:r.unitsHeading[e]}),o.jsx("p",{className:"text-muted-foreground text-lg",children:r.unitsLead[e]})]}),o.jsx("div",{className:"grid sm:grid-cols-2 gap-6",children:Qo.map(c=>o.jsx(PO,{unit:c},c.id))})]}),o.jsx("section",{className:"bg-primary text-primary-foreground py-16",children:o.jsxs("div",{className:"container mx-auto px-4 lg:px-8 grid md:grid-cols-2 gap-10 items-start",children:[o.jsxs("div",{children:[o.jsx("h2",{className:"font-serif text-3xl md:text-4xl font-bold mb-4",children:r.standardsHeading[e]}),o.jsx("p",{className:"text-primary-foreground/80 text-lg leading-relaxed mb-6",children:r.standardsLead[e]}),o.jsxs(Te,{href:"/about",className:"inline-flex items-center gap-2 bg-accent text-accent-foreground hover:bg-accent/90 transition-colors px-5 py-2.5 rounded-md font-medium",children:[r.syllabus[e]," ",o.jsx(Do,{className:"h-4 w-4"})]})]}),o.jsx("div",{className:"grid grid-cols-2 sm:grid-cols-3 gap-2 text-sm",children:Vd.map(c=>o.jsx("div",{className:"bg-primary-foreground/5 border border-primary-foreground/15 px-3 py-2 rounded-md font-mono text-primary-foreground/90",children:c.code},c.code))})]})}),o.jsx("section",{className:"container mx-auto px-4 lg:px-8 py-16",children:o.jsxs("div",{className:"max-w-3xl",children:[o.jsx("h2",{className:"font-serif text-3xl md:text-4xl font-bold text-primary mb-4",children:r.aboutTeacher[e]}),o.jsx("p",{className:"text-lg text-foreground leading-relaxed",children:r.teacherBio[e]})]})})]})}const RO=Ld("whitespace-nowrap inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 hover-elevate ",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground shadow-xs",secondary:"border-transparent bg-secondary text-secondary-foreground",destructive:"border-transparent bg-destructive text-destructive-foreground shadow-xs",outline:"text-foreground border [border-color:var(--badge-outline)]"}},defaultVariants:{variant:"default"}});function IO({className:e,variant:t,...r}){return o.jsx("div",{className:Ye(RO({variant:t}),e),...r})}function hS({codes:e}){const{lang:t}=_e();return o.jsxs("div",{className:"flex flex-wrap gap-2 items-center",children:[o.jsx("span",{className:"text-xs font-semibold text-muted-foreground uppercase tracking-wider",children:t==="en"?"Standards:":"Estándares:"}),e.map(r=>{const s=Vd.find(c=>c.code===r);return o.jsx(IO,{variant:"outline",className:"bg-secondary/5 text-primary border-primary/20",title:s?s.focus[t]:r,children:r},r)})]})}function UO({statements:e}){const{tList:t}=sa(),r=t(e);return!r||r.length===0?null:o.jsxs("div",{className:"bg-accent/10 border border-accent/20 rounded-lg p-5",children:[o.jsx("h3",{className:"font-serif text-lg font-semibold text-primary mb-3",children:r[0]?.startsWith("Yo puedo")?"Objetivos de Aprendizaje":"Learning Targets"}),o.jsx("ul",{className:"space-y-2",children:r.map((s,c)=>o.jsxs("li",{className:"flex gap-3 text-foreground",children:[o.jsx("span",{className:"text-accent font-bold mt-0.5",children:"â¢"}),o.jsx("span",{children:s})]},c))})]})}function rg(){const{lang:e}=_e();return o.jsx("div",{className:"min-h-[70vh] flex items-center justify-center px-4 py-12",children:o.jsxs("div",{className:"max-w-md w-full text-center space-y-6",children:[o.jsx("div",{className:"inline-flex items-center justify-center w-16 h-16 rounded-full bg-accent/10",children:o.jsx(pM,{className:"h-8 w-8 text-accent","aria-hidden":"true"})}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("p",{className:"text-sm uppercase tracking-wider text-muted-foreground",children:"Error 404"}),o.jsx("h1",{className:"font-serif text-3xl text-primary",children:e==="en"?"We couldn't find that page":"No pudimos encontrar esa página"}),o.jsx("p",{className:"text-muted-foreground",children:e==="en"?"The link may have moved, or the lesson hasn't been published yet.":"El enlace puede haber cambiado o la lección aún no está publicada."})]}),o.jsxs("div",{className:"flex flex-wrap items-center justify-center gap-3",children:[o.jsx(Te,{href:"/",children:o.jsx(ue,{children:e==="en"?"Back to home":"Volver al inicio"})}),o.jsx(Te,{href:"/about",children:o.jsx(ue,{variant:"outline",children:e==="en"?"Course overview":"Acerca del curso"})})]})]})})}function DO(){const[,e]=cw("/units/:id"),{lang:t}=_e(),{t:r}=sa(),s=Number(e?.id),c=Qo.find(h=>h.id===s);if(!c)return o.jsx(rg,{});const d=ra.filter(h=>h.unitId===c.id).sort((h,f)=>h.week-f.week),m=`/${c.coverImageUrl.replace(/^\//,"")}`;return o.jsxs("div",{className:"container mx-auto px-4 lg:px-8 py-10",children:[o.jsxs(Te,{href:"/",className:"inline-flex items-center gap-1 text-sm text-muted-foreground hover:text-primary mb-6",children:[o.jsx(gf,{className:"h-4 w-4"})," ",t==="en"?"Back to course home":"Volver al inicio del curso"]}
359),o.jsxs("div",{className:"grid lg:grid-cols-[1fr_1.2fr] gap-10 items-start mb-12",children:[o.jsx("div",{className:"rounded-2xl overflow-hidden aspect-[4/3] border border-border shadow-md",children:o.jsx("img",{src:m,alt:r(c.title),className:"w-full h-full object-cover"})}),o.jsxs("div",{children:[o.jsx("p",{className:"text-xs font-bold tracking-[0.2em] uppercase text-accent mb-3",children:t==="en"?`Unit ${c.id}`:`Unidad ${c.id}`}),o.jsx("h1",{className:"font-serif text-4xl md:text-5xl font-bold text-primary leading-tight mb-4",children:r(c.title)}),o.jsx("p",{className:"text-lg text-muted-foreground leading-relaxed mb-6",children:r(c.description)}),o.jsxs("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[o.jsx(mi,{className:"h-4 w-4"}),o.jsxs("span",{children:[d.length," ",t==="en"?"weekly lessons":"lecciones semanales"]})]})]})]}),o.jsx("h2",{className:"font-serif text-2xl font-bold text-primary mb-6",children:t==="en"?"Weekly Lessons":"Lecciones Semanales"}),o.jsx("div",{className:"space-y-4",children:d.map((h,f)=>o.jsx(pd.div,{initial:{opacity:0,y:12},animate:{opacity:1,y:0},transition:{duration:.35,delay:f*.04},children:o.jsxs(Te,{href:`/lesson/${h.week}`,className:"group flex items-start gap-5 bg-card border border-border rounded-xl p-5 hover:border-primary/40 hover:shadow-md transition-all",children:[o.jsxs("div",{className:"shrink-0 w-14 h-14 rounded-lg bg-primary/10 text-primary font-serif text-lg font-bold flex flex-col items-center justify-center leading-tight",children:[o.jsx("span",{className:"text-[10px] uppercase tracking-wider font-sans font-semibold text-muted-foreground",children:t==="en"?"Week":"Sem."}),o.jsx("span",{children:h.week})]}),o.jsxs("div",{className:"flex-1 min-w-0",children:[o.jsx("h3",{className:"font-serif text-xl font-semibold text-primary group-hover:text-accent transition-colors mb-2",children:r(h.title)}),o.jsx("p",{className:"text-sm text-muted-foreground line-clamp-2 mb-3",children:r(h.ageAppropriateExplanation)}),o.jsx(hS,{codes:h.standards})]}),o.jsx(Do,{className:"h-5 w-5 text-muted-foreground group-hover:text-primary shrink-0 self-center transition-colors"})]})},h.week))})]})}function OO({vocabulary:e}){const{t}=sa(),{lang:r}=_e();return!e||e.length===0?null:o.jsxs("div",{className:"my-8",children:[o.jsx("h3",{className:"font-serif text-2xl font-bold text-primary mb-4",children:r==="en"?"Key Vocabulary":"Vocabulario Clave"}),o.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:e.map((s,c)=>o.jsxs("div",{className:"bg-card border border-border p-4 rounded-lg shadow-sm",children:[o.jsx("h4",{className:"font-bold text-lg text-primary mb-1",children:t(s.term)}),o.jsx("p",{className:"text-muted-foreground text-sm",children:t(s.definition)})]},c))})]})}function LO({resources:e,mapping:t}){const{t:r}=sa(),{lang:s}=_e();return!e||e.length===0?null:o.jsxs("div",{className:"my-8 p-6 bg-secondary/5 rounded-xl border border-secondary/10",children:[o.jsx("h3",{className:"font-serif text-2xl font-bold text-primary mb-2",children:s==="en"?"Resources & References":"Recursos y Referencias"}),t&&o.jsx("p",{className:"text-sm text-muted-foreground mb-4 italic",children:r(t)}),o.jsx("ul",{className:"space-y-3",children:e.map((c,d)=>o.jsxs("li",{className:"flex flex-col sm:flex-row sm:items-center gap-1 sm:gap-2",children:[o.jsx("a",{href:c.url,target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:text-accent font-medium underline underline-offset-4 decoration-primary/30 transition-colors",children:r(c.title)}),o.jsx("span",{className:"text-xs text-muted-foreground px-2 py-0.5 bg-secondary/10 rounded-full w-fit",children:c.source})]},d))})]})}function fS(e){const t=e+"CollectionProvider",[r,s]=ss(t),[c,d]=r(t,{collectionRef:{current:null},itemMap:new Map}),m=C=>{const{scope:N,children:q}=C,R=_.useRef(null),I=_.useRef(new Map).current;return o.jsx(c,{scope:N,itemMap:I,collectionRef:R,children:q})};m.displayName=t;const h=e+"CollectionSlot",f=ed(h),y=_.forwardRef((C,N)=>{const{scope:q,children:R}=C,I=d(h,q),$=ha(N,I.collectionRef);return o.jsx(f,{ref:$,children:R})});y.displayName=h;const b=e+"CollectionItemSlot",v="data-radix-collection-item",x=ed(b),k=_.forwardRef((C,N)=>{const{scope:q,children:R,...I}=C,$=_.useRef(null),z=ha(N,$),G=d(b,q);return _.useEffect(()=>(G.itemMap.set($,{ref:$,...I}
359),()=>{G.itemMap.delete($)})),o.jsx(x,{[v]:"",ref:z,children:R})});k.displayName=b;function E(C){const N=d(e+"CollectionConsumer",C);return _.useCallback(()=>{const R=N.collectionRef.current;if(!R)return[];const I=Array.from(R.querySelectorAll(`[${v}]`));return Array.from(N.itemMap.values()).sort((G,L)=>I.indexOf(G.ref.current)-I.indexOf(L.ref.current))},[N.collectionRef,N.itemMap])}return[{Provider:m,Slot:y,ItemSlot:k},E,s]}var zO=S.createContext(void 0);function sg(e){const t=S.useContext(zO);return e||t||"ltr"}var Ya="Accordion",FO=["Home","End","ArrowDown","ArrowUp","ArrowLeft","ArrowRight"],[ig,$O,BO]=fS(Ya),[Wd]=ss(Ya,[BO,k2]),og=k2(),gS=_.forwardRef((e,t)=>{const{type:r,...s}=e,c=s,d=s;return o.jsx(ig.Provider,{scope:e.__scopeAccordion,children:r==="multiple"?o.jsx(KO,{...d,ref:t}):o.jsx(GO,{...c,ref:t})})});gS.displayName=Ya;var[yS,VO]=Wd(Ya),[bS,WO]=Wd(Ya,{collapsible:!1}),GO=_.forwardRef((e,t)=>{const{value:r,defaultValue:s,onValueChange:c=()=>{},collapsible:d=!1,...m}=e,[h,f]=is({prop:r,defaultProp:s??"",onChange:c,caller:Ya});return o.jsx(yS,{scope:e.__scopeAccordion,value:_.useMemo(()=>h?[h]:[],[h]),onItemOpen:f,onItemClose:_.useCallback(()=>d&&f(""),[d,f]),children:o.jsx(bS,{scope:e.__scopeAccordion,collapsible:d,children:o.jsx(vS,{...m,ref:t})})})}),KO=_.forwardRef((e,t)=>{const{value:r,defaultValue:s,onValueChange:c=()=>{},...d}=e,[m,h]=is({prop:r,defaultProp:s??[],onChange:c,caller:Ya}),f=_.useCallback(b=>h((v=[])=>[...v,b]),[h]),y=_.useCallback(b=>h((v=[])=>v.filter(x=>x!==b)),[h]);return o.jsx(yS,{scope:e.__scopeAccordion,value:m,onItemOpen:f,onItemClose:y,children:o.jsx(bS,{scope:e.__scopeAccordion,collapsible:!0,children:o.jsx(vS,{...d,ref:t})})})}),[HO,Gd]=Wd(Ya),vS=_.forwardRef((e,t)=>{const{__scopeAccordion:r,disabled:s,dir:c,orientation:d="vertical",...m}=e,h=_.useRef(null),f=ha(h,t),y=$O(r),v=sg(c)==="ltr",x=jt(e.onKeyDown,k=>{if(!FO.includes(k.key))return;const E=k.target,C=y().filter(D=>!D.ref.current?.disabled),N=C.findIndex(D=>D.ref.current===E),q=C.length;if(N===-1)return;k.preventDefault();let R=N;const I=0,$=q-1,z=()=>{R=N+1,R>$&&(R=I)},G=()=>{R=N-1,R<I&&(R=$)};switch(k.key){case"Home":R=I;break;case"End":R=$;break;case"ArrowRight":d==="horizontal"&&(v?z():G());break;case"ArrowDown":d==="vertical"&&z();break;case"ArrowLeft":d==="horizontal"&&(v?G():z());break;case"ArrowUp":d==="vertical"&&G();break}const L=R%q;C[L].ref.current?.focus()});return o.jsx(HO,{scope:r,disabled:s,direction:c,orientation:d,children:o.jsx(ig.Slot,{scope:r,children:o.jsx(bt.div,{...m,"data-orientation":d,ref:f,onKeyDown:s?void 0:x})})})}),hd="AccordionItem",[QO,lg]=Wd(hd),xS=_.forwardRef((e,t)=>{const{__scopeAccordion:r,value:s,...c}=e,d=Gd(hd,r),m=VO(hd,r),h=og(r),f=Xr(),y=s&&m.value.includes(s)||!1,b=d.disabled||e.disabled;return o.jsx(QO,{scope:r,open:y,disabled:b,triggerId:f,children:o.jsx(j2,{"data-orientation":d.orientation,"data-state":AS(y),...h,...c,ref:t,disabled:b,open:y,onOpenChange:v=>{v?m.onItemOpen(s):m.onItemClose(s)}})})});xS.displayName=hd;var wS="AccordionHeader",kS=_.forwardRef((e,t)=>{const{__scopeAccordion:r,...s}=e,c=Gd(Ya,r),d=lg(wS,r);return o.jsx(bt.h3,{"data-orientation":c.orientation,"data-state":AS(d.open),"data-disabled":d.disabled?"":void 0,...s,ref:t})});kS.displayName=wS;var Wh="AccordionTrigger",SS=_.forwardRef((e,t)=>{const{__scopeAccordion:r,...s}=e,c=Gd(Ya,r),d=lg(Wh,r),m=WO(Wh,r),h=og(r);return o.jsx(ig.ItemSlot,{scope:r,children:o.jsx(r_,{"aria-disabled":d.open&&!m.collapsible||void 0,"data-orientation":c.orientation,id:d.triggerId,...h,...s,ref:t})})});SS.displayName=Wh;var CS="AccordionContent",jS=_.forwardRef((e,t)=>{const{__scopeAccordion:r,...s}=e,c=Gd(Ya,r),d=lg(CS,r),m=og(r);return o.jsx(s_,{role:"region","aria-labelledby":d.triggerId,"data-orientation":c.orientation,...m,...s,ref:t,style:{"--radix-accordion-content-height":"var(--radix-collapsible-content-height)","--radix-accordion-content-width":"var(--radix-collapsible-content-width)",...e.style}})});jS.displayName=CS;function AS(e){return e?"open":"closed"}var YO=gS,XO=xS,ZO=kS,qS=SS,ES=jS;const NS=YO,cg=S.forwardRef(({className:e,...t},r)=>o.jsx(XO,{ref:r,className:Ye("border-b",e),...t}));cg.displayName="AccordionItem";const dg=S.forwardRef(({className:e,children:t,...r},s)=>o.jsx(ZO,{className:"flex",children:o.jsxs(qS,{ref:s,className:Ye("flex flex-1 items-center justify-between py-4 text-sm font-medium transition-all hover:underline text-left [&[data-state=open]>svg]:rotate-180",e),...r,children:[t,o.jsx(f2,{className:"h-4 w-4 shrink-0 text-muted-foreground transition-transform duration-200"})]})}));dg.displayName=qS.displayName;const ug=S.forwardRef(({className:e,children:t,...r},s)=>o.jsx(ES,{ref:s,className:"overflow-hidden text-sm data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down",...r,children:o.jsx("div",{className:Ye("pb-4 pt-0",e),children:t})}));ug.displayName=ES.displayName;function Vc({className:e=""}){const{lang:t}=_e();return o.jsxs("div",{className:`rounded-lg border border-amber-300 bg-amber-50 px-4 py-3 text-sm text-amber-900 flex gap-3 items-start ${e}`,children:[o.jsx(HM,{className:"h-5 w-5 shrink-0 mt-0.5","aria-hidden":"true"}),o.jsxs("div",{children:[o.jsx("p",{className:"font-semibold mb-1",children:t==="en"?"Sign in with a student account to submit your work.":"Inicia sesión con una cuenta de estudiante para enviar tu trabajo."}),o.jsxs("p",{children:[t==="en"?"Any student account for this course can submit; no group assignment is required. Need help? Contact ":"Cualquier cuenta de estudiante de este curso puede enviar trabajos; no se requiere asignación de grupo. ¿Necesitas ayuda? Contacta a ",o.jsx("a",{href:"mailto:[email protected]",className:"font-semibold underline",children:"[email protected]"}),"."]})]})]})}function JO({lessonId:e,questions:t}){const{t:r}=sa(),{lang:s}=_e(),{isSignedIn:c,user:d}=fa(),m=Ut(),{data:h}=hf(e,{query:{enabled:!!d?.id,queryKey:[...Yr(e),d?.id]}}),{data:f}=mn({query:{enabled:!!d?.id,retry:!1,queryKey:[...Ht(),d?.id]}}),y=c?f?.enrolled??!1:!1,b=bN(),v=S.useMemo(()=>IP(t,`${d?.id??"guest"}:${e}`),[t,d?.id,e]),[x,k]=S.useState({}),[E,C]=S.useState({}),[N,q]=S.useState(!1),[R,I]=S.useState(null),[$,z]=S.useState(0),[G,L]=S.useState(!1),[D,ee]=S.useState(null),ne=_.useRef(null),me=v.filter(W=>W.type==="multipleChoice"||W.type==="trueFalse");S.useEffect(()=>{if(c===void 0)return;const W=`${d?.id?`user:${d.id}`:"guest"}:${e}`;if(ne.current===W)return;
359if(c){if(!h)return;const oe=h.assessmentAnswers??{};k(oe);const we={};for(const fe of me)oe[fe.id]!==void 0&&(we[fe.id]={isCorrect:pe(fe,oe[fe.id]),show:!0});C(we),q(!!h.assessmentSubmittedAt),z(h.attemptCount??(h.assessmentSubmittedAt?1:0)),ne.current=W;return}const ie=localStorage.getItem(`assessment-${e}`);if(ie)try{const oe=JSON.parse(ie);k(oe.answers||{}),C(oe.results||{}),q(oe.submitted||!1),z(oe.attemptCount??(oe.submitted?1:0))}catch{}ne.current=W},[c,d?.id,h,e,me]),S.useEffect(()=>{c||Object.keys(x).length>0&&localStorage.setItem(`assessment-${e}`,JSON.stringify({answers:x,results:E,submitted:N,attemptCount:$}))},[x,E,N,$,e,c]);function pe(W,ie){return ie===W.correctAnswer}const Re=(W,ie)=>{N||k(oe=>({...oe,[W.id]:ie}))},Ee=me.filter(W=>pe(W,x[W.id])).length,Ae=N?Ee:0,V=Math.max(h?.bestScore??h?.assessmentScore??0,Ae),Y=me.length>0&&me.every(W=>x[W.id]!==void 0&&x[W.id]!==""),ce=async()=>{I(null);const W={};for(const ie of me)W[ie.id]={isCorrect:pe(ie,x[ie.id]),show:!0};if(!c){C(W),q(!0),z(ie=>ie+1);return}try{await b.mutateAsync({week:e,data:{answers:x,autoScore:Ee,totalQuestions:me.length}}),C(W),q(!0),z(ie=>ie+1),m.invalidateQueries({queryKey:Yr(e)}),m.invalidateQueries({queryKey:Ro()})}catch(ie){ie?.response?.status===403?I(s==="en"?"To submit evaluations, please contact your school or teacher, or write to [email protected]. Your school must be registered with EDU-24.":"Para enviar evaluaciones contacta con tu escuela o profesor o escribe a [email protected]. Tu escuela debe estar registrada en EDU-24."):ie?.response?.status===409?I(s==="en"?"You have used all three quiz attempts.":"Ya usaste los tres intentos del cuestionario."):I(s==="en"?"We couldn't save your answers. Please check your connection and try again.":"No pudimos guardar tus respuestas. Revisa tu conexión e inténtalo de nuevo.")}},de=(W,ie)=>o.jsxs("div",{className:Ye("mt-4 p-4 rounded-lg border flex gap-3",ie.isCorrect?"bg-green-50 border-green-200":"bg-red-50 border-red-200"),children:[ie.isCorrect?o.jsx(In,{className:"h-6 w-6 text-green-600 shrink-0"}):o.jsx(sx,{className:"h-6 w-6 text-red-600 shrink-0"}),o.jsxs("div",{children:[o.jsx("p",{className:"font-semibold text-foreground mb-1",children:ie.isCorrect?r(W.feedbackCorrect):r(W.feedbackIncorrect)}),(G||$>1)&&o.jsx("p",{className:"text-sm text-muted-foreground mb-2",children:r(W.explanation)}),o.jsxs("p",{className:"text-xs font-medium text-muted-foreground flex items-center gap-1",children:["ð ",s==="en"?"Answer locked":"Respuesta bloqueada"]})]})]}),T=()=>{k({}),C({}),q(!1),L(!1),ee(null),I(null)};return me.length===0?null:o.jsxs("div",{className:"my-12",children:[o.jsxs("div",{className:"border-b border-border pb-4 mb-8 flex items-center justify-between",children:[o.jsx("h3",{className:"font-serif text-3xl font-bold text-primary",children:s==="en"?"Knowledge Check":"Verificación de Conocimientos"}),N&&o.jsxs("div",{className:"text-right",children:[o.jsx("div",{className:"text-lg font-bold text-accent",children:s==="en"?`Attempt ${$}: ${Ae} / ${me.length}`:`Intento ${$}: ${Ae} / ${me.length}`}),o.jsx("div",{className:"text-sm font-medium text-muted-foreground",children:s==="en"?`Best score: ${V} / ${me.length}`:`Mejor puntaje: ${V} / ${me.length}`})]})]}),!c&&o.jsx("div",{className:"mb-6 rounded-lg border border-amber-300 bg-amber-50 px-4 py-3 text-sm text-amber-900",children:s==="en"?"Sign in to save your answers and have your work counted toward lesson completion.":"Inicia sesión para guardar tus respuestas y que tu trabajo cuente para completar la lección."}),c&&!y&&o.jsx(Vc,{className:"mb-6"}),o.jsx("div",{className:"mb-10 bg-card border border-border rounded-xl shadow-sm overflow-hidden",children:o.jsx(NS,{type:"multiple",className:"w-full",children:me.map((W,ie)=>{const oe=E[W.id],we=x[W.id]!==void 0&&x[W.id]!=="",fe=oe?.show?oe.isCorrect?"correct":"incorrect":we?"answered":"pending";return o.jsxs(cg,{value:W.id,className:"border-b last:border-b-0",children:[o.jsx(dg,{className:"px-5 py-4 hover:no-underline",children:o.jsxs("div",{className:"flex items-center gap-4 flex-1 min-w-0",children:[o.jsx("div",{className:"flex-shrink-0 w-8 h-8 rounded-full bg-secondary/10 flex items-center justify-center font-bold text-primary text-sm",children:ie+1}),o.jsx("span",{className:"text-left text-base font-medium text-foreground flex-1 min-w-0 break-words whitespace-normal",children:r(W.prompt)}),o.jsxs("span",{className:"flex-shrink-0",children:[fe==="correct"&&o.jsx(In,{className:"h-5 w-5 text-green-600"}),fe==="incorrect"&&o.jsx(sx,{className:"h-5 w-5 text-red-600"}),fe==="answered"&&o.jsx("span",{className:"text-xs font-medium text-primary px-2 py-0.5 rounded-full bg-primary/10",children:s==="en"?"Answered":"Respondida"}),fe==="pending"&&o.jsx("span",{className:"text-xs font-medium text-muted-foreground px-2 py-0.5 rounded-full bg-secondary/20",children:s==="en"?"Not answered":"Sin responder"})]})]})}),o.jsx(ug,{className:"px-5 pb-5",children:o.jsxs("div",{className:"pl-12 space-y-4",children:[W.imageUrl&&o.jsx("img",{src:W.imageUrl,alt:r(W.imageAlt),className:"rounded-lg max-h-64 object-cover"}),o.jsx("div",{className:"flex flex-col gap-2",children:W.options?.map((he,ze)=>{const Ie=he.en,et=r(he),ia=x[W.id]===Ie,oa=N,Ea=G&&he.en===W.correctAnswer;return o.jsxs("label",{className:Ye("flex items-center gap-3 p-3 rounded-lg border cursor-pointer transition-colors",ia?"border-primary bg-primary/5":"border-border hover:bg-secondary/5",oe?.show&&ia&&oe.isCorrect&&"border-green-500 bg-green-50",oe?.show&&ia&&!oe.isCorrect&&"border-red-500 bg-red-50",Ea&&"border-green-500 bg-green-50",oa&&!ia&&"opacity-50 cursor-default"),children:[o.jsx("input",{type:"radio",name:`q-${W.id}`,value:Ie,checked:ia,onChange:za=>Re(W,za.target.value),disabled:oa,className:"w-4 h-4 text-primary accent-primary disabled:opacity-100"}),o.jsx("span",{className:"text-foreground",children:et})]},ze)}
359)}),oe?.show&&de(W,oe),G&&!N&&o.jsxs("p",{className:"text-sm font-medium text-green-700",children:[s==="en"?"Correct answer":"Respuesta correcta",": ",r(W.options?.find(he=>he.en===W.correctAnswer)??{en:"",es:""})]})]})})]},W.id)})})}),R&&o.jsx("p",{role:"alert",className:"mt-6 text-sm text-red-700 bg-red-50 border border-red-200 rounded-md px-3 py-2",children:R}),o.jsx("div",{className:"mt-8 flex flex-col items-center gap-3",children:N?o.jsxs("div",{className:"flex flex-col items-center gap-3",children:[o.jsx("p",{className:"text-sm text-green-700 font-medium",children:s==="en"?c?"Your answers have been saved.":"Submitted locally. Sign in to save and complete the lesson.":c?"Tus respuestas han sido guardadas.":"Enviado localmente. Inicia sesión para guardar y completar la lección."}),$===1&&D===null&&o.jsxs("div",{className:"max-w-xl rounded-lg border border-amber-300 bg-amber-50 p-4 text-center",children:[o.jsx("p",{className:"mb-3 text-sm font-medium text-amber-950",children:s==="en"?"Before your second attempt: seeing the correct answers may make the next score less useful as a measure of what you know. Do you want to see them?":"Antes del segundo intento: ver las respuestas correctas puede hacer que el siguiente puntaje mida menos lo que sabes. ¿Quieres verlas?"}),o.jsxs("div",{className:"flex justify-center gap-3",children:[o.jsx(ue,{variant:"outline",onClick:()=>{L(!0),ee(!0)},children:s==="en"?"Yes, show answers":"SÃ, mostrar respuestas"}),o.jsx(ue,{variant:"outline",onClick:()=>{L(!1),ee(!1)},children:s==="en"?"No, keep them hidden":"No, mantenerlas ocultas"})]})]}),$<3&&($!==1||D!==null)?o.jsxs(ue,{size:"lg",variant:"outline",onClick:T,className:"gap-2",children:[o.jsx(cP,{className:"h-4 w-4"}),s==="en"?`Repeat quiz (attempt ${$+1} of 3)`:`Repetir (intento ${$+1} de 3)`]}):$>=3?o.jsx("p",{className:"text-sm text-muted-foreground",children:s==="en"?"All three attempts are complete.":"Completaste los tres intentos."}):null]}):o.jsxs(ue,{size:"lg",onClick:ce,disabled:!Y||b.isPending||c&&!y,className:"w-full sm:w-auto gap-2",children:[o.jsx(Ho,{className:"h-4 w-4"}),b.isPending?s==="en"?"Savingâ¦":"Guardandoâ¦":s==="en"?"Submit all answers":"Enviar todas las respuestas"]})})]})}function eL(e){const t=S.useRef({value:e,previous:e});return S.useMemo(()=>(t.current.value!==e&&(t.current.previous=t.current.value,t.current.value=e),t.current.previous),[e])}function tL(e){const[t,r]=S.useState(void 0);return ts(()=>{if(e){r({width:e.offsetWidth,height:e.offsetHeight});const s=new ResizeObserver(c=>{if(!Array.isArray(c)||!c.length)return;const d=c[0];let m,h;if("borderBoxSize"in d){const f=d.borderBoxSize,y=Array.isArray(f)?f[0]:f;m=y.inlineSize,h=y.blockSize}else m=e.offsetWidth,h=e.offsetHeight;r({width:m,height:h})});return s.observe(e,{box:"border-box"}),()=>s.unobserve(e)}else r(void 0)},[e]),t}var Kd="Checkbox",[aL]=ss(Kd),[nL,mg]=aL(Kd);function rL(e){const{__scopeCheckbox:t,checked:r,children:s,defaultChecked:c,disabled:d,form:m,name:h,onCheckedChange:f,required:y,value:b="on",internal_do_not_use_render:v}=e,[x,k]=is({prop:r,defaultProp:c??!1,onChange:f,caller:Kd}),[E,C]=S.useState(null),[N,q]=S.useState(null),R=S.useRef(!1),I=E?!!m||!!E.closest("form"):!0,$={checked:x,disabled:d,setChecked:k,control:E,setControl:C,name:h,form:m,value:b,hasConsumerStoppedPropagationRef:R,required:y,defaultChecked:gr(c)?!1:c,isFormControl:I,bubbleInput:N,setBubbleInput:q};return o.jsx(nL,{scope:t,...$,children:sL(v)?v($):s})}var TS="CheckboxTrigger",MS=S.forwardRef(({__scopeCheckbox:e,onKeyDown:t,onClick:r,...s},c)=>{const{control:d,value:m,disabled:h,checked:f,required:y,setControl:b,setChecked:v,hasConsumerStoppedPropagationRef:x,isFormControl:k,bubbleInput:E}=mg(TS,e),C=ha(c,b),N=S.useRef(f);return S.useEffect(()=>{const q=d?.form;if(q){const R=()=>v(N.current);return q.addEventListener("reset",R),()=>q.removeEventListener("reset",R)}},[d,v]),o.jsx(bt.button,{type:"button",role:"checkbox","aria-checked":gr(f)?"mixed":f,"aria-required":y,"data-state":US(f),"data-disabled":h?"":void 0,disabled:h,value:m,...s,ref:C,onKeyDown:jt(t,q=>{q.key==="Enter"&&q.preventDefault()}),onClick:jt(r,q=>{v(R=>gr(R)?!0:!R),E&&k&&(x.current=q.isPropagationStopped(),x.current||q.stopPropagation())})})});MS.displayName=TS;var pg=S.forwardRef((e,t)=>
359{const{__scopeCheckbox:r,name:s,checked:c,defaultChecked:d,required:m,disabled:h,value:f,onCheckedChange:y,form:b,...v}=e;return o.jsx(rL,{__scopeCheckbox:r,checked:c,defaultChecked:d,disabled:h,required:m,onCheckedChange:y,name:s,form:b,value:f,internal_do_not_use_render:({isFormControl:x})=>o.jsxs(o.Fragment,{children:[o.jsx(MS,{...v,ref:t,__scopeCheckbox:r}),x&&o.jsx(IS,{__scopeCheckbox:r})]})})});pg.displayName=Kd;var PS="CheckboxIndicator",_S=S.forwardRef((e,t)=>{const{__scopeCheckbox:r,forceMount:s,...c}=e,d=mg(PS,r);return o.jsx(os,{present:s||gr(d.checked)||d.checked===!0,children:o.jsx(bt.span,{"data-state":US(d.checked),"data-disabled":d.disabled?"":void 0,...c,ref:t,style:{pointerEvents:"none",...e.style}})})});_S.displayName=PS;var RS="CheckboxBubbleInput",IS=S.forwardRef(({__scopeCheckbox:e,...t},r)=>{const{control:s,hasConsumerStoppedPropagationRef:c,checked:d,defaultChecked:m,required:h,disabled:f,name:y,value:b,form:v,bubbleInput:x,setBubbleInput:k}=mg(RS,e),E=ha(r,k),C=eL(d),N=tL(s);S.useEffect(()=>{const R=x;if(!R)return;const I=window.HTMLInputElement.prototype,z=Object.getOwnPropertyDescriptor(I,"checked").set,G=!c.current;if(C!==d&&z){const L=new Event("click",{bubbles:G});R.indeterminate=gr(d),z.call(R,gr(d)?!1:d),R.dispatchEvent(L)}},[x,C,d,c]);const q=S.useRef(gr(d)?!1:d);return o.jsx(bt.input,{type:"checkbox","aria-hidden":!0,defaultChecked:m??q.current,required:h,disabled:f,name:y,value:b,form:v,...t,tabIndex:-1,ref:E,style:{...t.style,...N,position:"absolute",pointerEvents:"none",opacity:0,margin:0,transform:"translateX(-100%)"}})});IS.displayName=RS;function sL(e){return typeof e=="function"}function gr(e){return e==="indeterminate"}function US(e){return gr(e)?"indeterminate":e?"checked":"unchecked"}const DS=S.forwardRef(({className:e,...t},r)=>o.jsx(pg,{ref:r,className:Ye("grid place-content-center peer h-4 w-4 shrink-0 rounded-sm border border-primary shadow focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground",e),...t,children:o.jsx(_S,{className:Ye("grid place-content-center text-current"),children:o.jsx(pi,{className:"h-4 w-4"})})}));DS.displayName=pg.displayName;function iL({project:e,lessonId:t,bibleConnection:r}){const{t:s,tList:c}=sa(),{lang:d}=_e(),{isSignedIn:m,user:h}=fa(),f=Ut(),{data:y}=hf(t,{query:{enabled:!!h?.id,queryKey:[...Yr(t),h?.id]}}),{data:b}=mn({query:{enabled:!!h?.id,retry:!1,queryKey:[...Ht(),h?.id]}}),v=m?b?.enrolled??!1:!1,x=dN(),k=hN(),[E,C]=_.useState({}),[N,q]=_.useState(""),[R,I]=_.useState(null),[$,z]=_.useState(null),[G,L]=_.useState(""),[D,ee]=_.useState(null),[ne,me]=_.useState(!1),pe=_.useRef(null);if(_.useEffect(()=>{if(m===void 0)return;const de=`${h?.id?`user:${h.id}`:"guest"}:${t}`;if(pe.current===de)return;if(m){if(!y)return;q(y.reflectionText??""),C(y.checklist??{}),I(y.reflectionSubmittedAt??null),L(y.performanceTaskGoogleUrl??""),pe.current=de;return}const T=localStorage.getItem(`project-${t}`);if(T)try{const W=JSON.parse(T);C(W.checklist||{}),q(W.reflection||"")}catch{}pe.current=de},[m,h?.id,y,t]),_.useEffect(()=>{m||localStorage.setItem(`project-${t}`,JSON.stringify({checklist:E,reflection:N}))},[E,N,t,m]),!e)return null;const Re=async()=>{if(m&&N.trim()){z(null);try{const de=await x.mutateAsync({week:t,data:{reflectionText:N,checklist:Object.fromEntries(Object.entries(E).map(([T,W])=>[T,!!W]))}});I(de.reflectionSubmittedAt??new Date().toISOString()),f.invalidateQueries({queryKey:Yr(t)}),f.invalidateQueries({queryKey:Ro()})}catch(de){de?.response?.status===403?z(d==="en"?"To submit evaluations, please contact your school or teacher, or write to [email protected]. Your school must be registered with EDU-24.":"Para enviar evaluaciones contacta con tu escuela o profesor o escribe a [email protected]. Tu escuela debe estar registrada en EDU-24."):z(d==="en"?"We couldn't save your reflection. Please check your connection and try again.":"No pudimos guardar tu reflexión. Revisa tu conexión e inténtalo de nuevo.")}}},Ee=de=>{if(!de)return!1;try{const T=new URL(de);return T.protocol==="http:"||T.protocol==="https:"}catch{return!1}},Ae=async()=>
359{if(m){if(ee(null),!Ee(G)){ee(d==="en"?"Please provide a valid http or https link.":"Por favor proporciona un enlace válido http o https.");return}try{await k.mutateAsync({week:t,data:{googleUrl:G,accessConfirmed:!0}}),me(!1),f.invalidateQueries({queryKey:Yr(t)}),f.invalidateQueries({queryKey:Ro()})}catch(de){de?.response?.status===403?ee(d==="en"?"To submit evaluations, please contact your school or teacher, or write to [email protected]. Your school must be registered with EDU-24.":"Para enviar evaluaciones contacta con tu escuela o profesor o escribe a [email protected]. Tu escuela debe estar registrada en EDU-24."):ee(d==="en"?"We couldn't save your performance task. Please check your connection and try again.":"No pudimos guardar tu tarea de desempeño. Revisa tu conexión e inténtalo de nuevo.")}}},V=!!y?.completedAt,Y=!!y?.performanceTaskGoogleUrl,ce=y?.performanceTaskStatus;return o.jsx("div",{className:"my-12 border-t-4 border-accent pt-8",children:o.jsxs("div",{className:"bg-primary/5 rounded-2xl p-8 border border-primary/10",children:[o.jsxs("div",{className:"flex items-center justify-between mb-4 flex-wrap gap-2",children:[o.jsx("div",{className:"inline-block px-3 py-1 bg-accent text-accent-foreground text-xs font-bold uppercase tracking-wider rounded-full",children:d==="en"?"Performance Task":"Tarea de Desempeño"}),V&&o.jsxs("div",{className:"inline-flex items-center gap-2 text-green-700 font-semibold",children:[o.jsx(In,{className:"h-5 w-5"}),d==="en"?"Lesson completed":"Lección completada"]})]}),o.jsx("h2",{className:"font-serif text-3xl font-bold text-primary mb-4",children:s(e.title)}),o.jsx("p",{className:"text-lg text-foreground mb-8 leading-relaxed",children:s(e.description)}),e.steps&&o.jsxs("div",{className:"mb-8 bg-card border border-border rounded-xl p-6",children:[o.jsx("h4",{className:"font-bold text-lg text-primary mb-4",children:d==="en"?"How to complete it â step by step":"Cómo completarla â paso a paso"}),o.jsx("ol",{className:"list-decimal list-outside ml-6 space-y-2 text-foreground",children:c(e.steps).map((de,T)=>o.jsx("li",{className:"text-base leading-relaxed pl-1",children:de},T))})]}),e.expectedProduct&&o.jsxs("div",{className:"mb-8 bg-accent/10 border border-accent/30 rounded-xl p-6",children:[o.jsx("h4",{className:"font-bold text-lg text-primary mb-2",children:d==="en"?"Expected Product":"Producto Esperado"}),o.jsx("p",{className:"text-base text-foreground leading-relaxed",children:s(e.expectedProduct)})]}),o.jsxs("div",{className:"grid md:grid-cols-2 gap-8 mb-8",children:[o.jsxs("div",{children:[o.jsx("h4",{className:"font-bold text-lg text-primary mb-3",children:d==="en"?"Materials Needed:":"Materiales Necesarios:"}),o.jsx("ul",{className:"list-disc list-inside space-y-1 text-foreground ml-4",children:c(e.materials).map((de,T)=>o.jsx("li",{children:de},T))})]}),o.jsxs("div",{children:[o.jsx("h4",{className:"font-bold text-lg text-primary mb-3",children:d==="en"?"Submission Requirements:":"Requisitos de Entrega:"}),o.jsx("ul",{className:"list-disc list-inside space-y-1 text-foreground ml-4",children:c(e.submissionRequirements).map((de,T)=>o.jsx("li",{children:de},T))})]})]}),o.jsxs("div",{className:"my-10",children:[o.jsx("h4",{className:"font-bold text-2xl text-primary mb-4 font-serif",children:d==="en"?"Evaluation Rubric":"Rúbrica de Evaluación"}),o.jsx("div",{className:"overflow-x-auto",children:o.jsxs("table",{className:"w-full text-sm text-left border-collapse min-w-[800px]",children:[o.jsx("thead",{className:"bg-primary text-primary-foreground",children:o.jsxs("tr",{children:[o.jsx("th",{className:"p-3 border border-primary/20 w-1/5",children:d==="en"?"Criterion":"Criterio"}),o.jsxs("th",{className:"p-3 border border-primary/20 w-1/5",children:["1 - ",d==="en"?"Beginning":"Principiante"]}),o.jsxs("th",{className:"p-3 border border-primary/20 w-1/5",children:["2 - ",d==="en"?"Developing":"En Desarrollo"]}),o.jsxs("th",{className:"p-3 border border-primary/20 w-1/5",children:["3 - ",d==="en"?"Proficient":"Competente"]}),o.jsxs("th",{className:"p-3 border border-primary/20 w-1/5",children:["4 - ",d==="en"?"Exemplary":"Ejemplar"]})]})}),o.jsx("tbody",{children:e.rubric.map((de,T)=>o.jsxs("tr",{className:"border-b border-border bg-card",children:[o.jsx("td",{className:"p-3 border-r border-border font-bold text-primary align-top",children:s(de.name)}
359),de.levels.map((W,ie)=>o.jsxs("td",{className:"p-3 border-r border-border align-top",children:[o.jsx("div",{className:"font-semibold text-xs text-muted-foreground uppercase mb-1",children:s(W.level)}),o.jsx("div",{className:"text-foreground",children:s(W.description)})]},ie))]},T))})]})})]}),o.jsxs("div",{className:"mb-10 bg-card rounded-xl p-6 border border-border shadow-sm",children:[o.jsxs("h4",{className:"font-bold text-xl text-primary mb-4 flex items-center gap-2",children:[o.jsx(LM,{className:"h-5 w-5 text-accent"}),d==="en"?"Submit Performance Task":"Entregar Tarea de Desempeño"]}),!m&&o.jsx(Vc,{className:"mb-4 print:hidden"}),m&&!v&&o.jsx(Vc,{className:"mb-4 print:hidden"}),m&&(!Y||ne)?o.jsxs("div",{className:"space-y-4 max-w-3xl",children:[o.jsxs("div",{children:[o.jsx("label",{className:"block text-sm font-medium text-foreground mb-1",children:d==="en"?"Link to your work":"Enlace a tu trabajo"}),o.jsx("input",{type:"url",placeholder:"https://...",value:G,onChange:de=>L(de.target.value),className:"w-full p-3 rounded-lg border border-border bg-background text-sm focus:ring-2 focus:ring-primary/20 focus:border-primary transition-all"})]}),D&&o.jsx("p",{className:"text-sm text-red-700 bg-red-50 border border-red-200 rounded-md px-3 py-2",children:D}),o.jsxs("div",{className:"flex gap-3",children:[o.jsxs(ue,{onClick:Ae,disabled:!v||!G||k.isPending,className:"gap-2",children:[o.jsx(ii,{className:"h-4 w-4"}),k.isPending?d==="en"?"Submittingâ¦":"Enviandoâ¦":d==="en"?"Submit Task":"Enviar Tarea"]}),ne&&o.jsx(ue,{variant:"ghost",onClick:()=>{me(!1),L(y?.performanceTaskGoogleUrl||"")},children:d==="en"?"Cancel":"Cancelar"})]}),ne&&Y&&o.jsx("p",{className:"text-xs text-muted-foreground mt-2",children:d==="en"?"Note: Updating your link will reset your teacher's review status to Pending.":"Nota: Actualizar tu enlace restablecerá el estado de revisión de tu profesor a Pendiente."})]}):m&&Y?o.jsxs("div",{className:"bg-secondary/5 rounded-lg p-5 border border-border",children:[o.jsxs("div",{className:"flex flex-wrap gap-x-6 gap-y-4 mb-4",children:[o.jsxs("div",{children:[o.jsx("p",{className:"text-xs font-bold uppercase tracking-wider text-muted-foreground mb-1",children:d==="en"?"Submitted Link":"Enlace Enviado"}),o.jsxs("a",{href:G,target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1.5 text-primary hover:text-accent font-medium underline underline-offset-2 break-all",children:[d==="en"?"Open Document":"Abrir Documento",o.jsx(yh,{className:"h-3 w-3"})]})]}),o.jsxs("div",{children:[o.jsx("p",{className:"text-xs font-bold uppercase tracking-wider text-muted-foreground mb-1",children:d==="en"?"Review Status":"Estado de Revisión"}),o.jsx("div",{className:"inline-flex items-center gap-1.5",children:ce==="complete"?o.jsxs("span",{className:"text-green-700 font-semibold flex items-center gap-1",children:[o.jsx(In,{className:"h-4 w-4"}),d==="en"?"Complete":"Completada"]}):ce==="incomplete"?o.jsxs("span",{className:"text-red-700 font-semibold flex items-center gap-1",children:[o.jsx(In,{className:"h-4 w-4"}),d==="en"?"Incomplete (Needs Revision)":"Incompleta (Necesita Revisión)"]}):o.jsxs("span",{className:"text-amber-700 font-semibold flex items-center gap-1",children:[o.jsx("div",{className:"h-2 w-2 rounded-full bg-amber-500 animate-pulse"}),d==="en"?"Pending Teacher Review":"Pendiente de Revisión"]})})]})]}),o.jsx(ue,{variant:"outline",size:"sm",onClick:()=>me(!0),children:d==="en"?"Replace Link":"Reemplazar Enlace"})]}):o.jsx("p",{className:"text-sm text-muted-foreground",children:d==="en"?"Sign in to submit your Performance Task link.":"Inicia sesión para enviar el enlace de tu Tarea de Desempeño."})]}),o.jsxs("div",{className:"grid md:grid-cols-2 gap-8 bg-card rounded-xl p-6 border border-border shadow-sm",children:[o.jsxs("div",{children:[o.jsx("h4",{className:"font-bold text-lg text-primary mb-4",children:d==="en"?"Self-Assessment Checklist":"Lista de Autoevaluación"}),o.jsx("div",{className:"space-y-3",children:c(e.selfAssessmentChecklist).map((de,T)=>o.jsxs("div",{className:"flex items-start gap-3",children:[o.jsx(DS,{id:`check-${T}`,checked:E[T]||!1,onCheckedChange:W=>C(ie=>({...ie,[T]:!!W})),className:"mt-1 print:hidden"}),o.jsx("span",{"aria-hidden":"true",className:"hidden print:inline-block h-4 w-4 mt-0.5 border-2 border-black rounded-sm shrink-0"}),o.jsx("label",{htmlFor:`check-${T}`,className:"text-sm leading-tight text-foreground cursor-pointer",children:de})]},T))})]}),o.jsxs("div",{children:[o.jsx("h4",{className:"font-bold text-lg text-primary mb-4",children:d==="en"?"Final Reflection":"Reflexión Final"}),m&&!v&&o.jsx(Vc,{className:"mb-3 print:hidden"}),o.jsx("p",{className:"text-sm text-muted-foreground mb-3 font-medium",children:s(e.reflectionPrompt)}),o.jsx("textarea",{value:N,onChange:de=>q(de.target.value),placeholder:d==="en"?"Write your reflection here...":"Escribe tu reflexión aquÃ...",className:"print:hidden w-full h-32 p-3 rounded-lg border border-border bg-background resize-y text-sm focus:ring-2 focus:ring-primary/20 focus:border-primary transition-all"}),o.jsx("div",{"aria-hidden":"true",className:"hidden print:block mt-1",children:Array.from({length:5}).map((de,T)=>o.jsx("div",{className:"h-7 border-b border-black/50"},T))}),o.jsxs("div",{className:"print:hidden mt-4 flex items-center justify-between flex-wrap gap-3",children:[o.jsx("div",{className:"text-xs text-muted-foreground",children:m?R?d==="en"?`Saved ${new Date(R).toLocaleStr
359ing()}`:`Guardado ${new Date(R).toLocaleString()}`:d==="en"?"Not yet submitted.":"Aún no enviado.":d==="en"?"Sign in to submit your reflection.":"Inicia sesión para enviar tu reflexión."}),o.jsxs(ue,{onClick:Re,disabled:!m||!v||!N.trim()||x.isPending,className:"gap-2",children:[o.jsx(Ho,{className:"h-4 w-4","aria-hidden":"true"}),x.isPending?d==="en"?"Savingâ¦":"Guardandoâ¦":d==="en"?"Submit Reflection":"Enviar Reflexión"]})]}),$&&o.jsx("p",{role:"alert",className:"print:hidden mt-3 text-sm text-red-700 bg-red-50 border border-red-200 rounded-md px-3 py-2",children:$})]})]}),r&&o.jsxs("div",{className:"mt-8 bg-card rounded-xl p-6 border border-border shadow-sm",children:[o.jsxs("h4",{className:"flex items-center gap-2 font-bold text-lg text-primary mb-3",children:[o.jsx(mi,{className:"h-5 w-5 text-accent","aria-hidden":"true"}),d==="en"?"Bible Connection":"Conexión BÃblica"]}),o.jsx("p",{className:"text-base text-foreground leading-relaxed mb-4",children:s(r.explanation)}),o.jsxs("a",{href:s(r.url),target:"_blank",rel:"noopener noreferrer",className:"print:hidden inline-flex items-center gap-2 text-sm font-semibold text-primary hover:text-accent underline underline-offset-2 transition-colors",children:[o.jsx("span",{children:s(r.reference)}),o.jsx(yh,{className:"h-4 w-4","aria-hidden":"true"}),o.jsx("span",{className:"sr-only",children:d==="en"?"(opens Bible Gateway in a new tab)":"(abre Bible Gateway en una pestaña nueva)"})]}),o.jsxs("p",{className:"hidden print:block text-sm font-semibold text-primary",children:[s(r.reference),": ",o.jsx("span",{className:"font-normal break-all",children:s(r.url)})]}),o.jsx("p",{className:"mt-5 pt-4 border-t border-border text-xs text-muted-foreground leading-relaxed",children:d==="en"?"Woodbridge Academy is registered with the California Education Department as a Non-Denominational Christian School. We provide this section as context for our Christian students.":"Woodbridge Academy está registrada ante el Departamento de Educación de California como una Escuela Cristiana No Denominacional. Ofrecemos esta sección como contexto para nuestros estudiantes cristianos."})]})]})})}const Zp=1;function oL({week:e}){const{lang:t}=_e(),{isSignedIn:r}=fa(),s=Ut(),{data:c}=hf(e,{query:{enabled:!!r,queryKey:Yr(e)}}),d=!!c?.reflectionSubmittedAt,m=q6({week:e},{query:{enabled:!!r&&d,queryKey:fh({week:e})}}),h=I6({week:e},{query:{enabled:!!r&&d,queryKey:gh({week:e})}}),f=L6({week:e},{query:{enabled:!!r&&d,queryKey:p2({week:e})}}),y=M6(),[b,v]=_.useState(""),[x,k]=_.useState(""),[E,C]=_.useState(""),[N,q]=_.useState(null),R=m.data,I=h.data?.length??0,$=I>=Zp,z=async()=>{if(R?.targetUserId){q(null);try{await y.mutateAsync({data:{targetUserId:R.targetUserId,week:e,strengths:b.trim(),wonderings:x.trim(),suggestion:E.trim()}}),v(""),k(""),C(""),s.invalidateQueries({queryKey:gh({week:e})}),s.invalidateQueries({queryKey:fh({week:e})})}catch(G){const L=G?.message||"submit_failed";q(t==="en"?`We couldn't save the critique (${L}). Try again.`:`No pudimos guardar la crÃtica (${L}). Intenta de nuevo.`)}}};return r?o.jsxs("section",{className:"my-10 bg-secondary/10 border border-border rounded-xl p-6",children:[o.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[o.jsx(br,{className:"h-5 w-5 text-accent"}),o.jsx("h2",{className:"font-serif text-2xl text-primary",children:t==="en"?"Peer critique (this week)":"CrÃtica entre pares (esta semana)"})]}),o.jsx("p",{className:"text-sm text-muted-foreground mb-5",children:t==="en"?'Give one classmate a focused, kind, and specific critique. Use "I"-statements. Stay on the work, not the person.':'Da a un/a compañero/a una crÃtica enfocada, amable y especÃfica. Usa frases en primera persona ("yoâ¦"). Habla de la obra, no de la persona.'}),!d&&o.jsx("div",{className:"rounded-md border border-accent/30 bg-accent/10 text-foreground px-4 py-3 text-sm",children:t==="en"?"Submit your own reflection above first â then you'll be paired with a classmate to critique.":"Primero envÃa tu propia reflexión arriba; después se te asignará un/a compañero/a para criticar."}),d&&o.jsxs(o.Fragment,{children:[!$&&o.jsxs("div",{className:"bg-card border border-border rounded-lg p-5 mb-6",children:[o.jsxs("h3",{className:"font-serif text-lg text-primary mb-3 flex items-center gap-2",children:[o.jsx(bf,{className:"h-4 w-4 text-accent"}),t==="en"?`Critique a classmate (${I}/${Zp} done)`:`Critica a un/a compañero/a (${I}/${Zp} hecho)`]}),m.isLoading&&o.jsx("p",{className:"text-sm text-muted-foreground",children:t==="en"?"Finding a classmateâ¦":"Buscando compañero/aâ¦"}),m.isError&&o.jsx("p",{className:"text-sm text-red-700 bg-red-50 border border-red-200 rounded px-3 py-2",children:t==="en"?"We couldn't load a classmate to critique. Try refreshing.":"No pudimos cargar un/a compañero/a para criticar. Intenta recargar."}),!m.isLoading&&!m.isError&&!R?.targetUserId&&o.jsx("p",{className:"text-sm text-muted-foreground",children:t==="en"?"No classmate has submitted a reflection for this week yet. Check back soon.":"Aún no hay compañeros/as con reflexión enviada para esta semana. Vuelve pronto."}),R?.targetUserId&&o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{children:[o.jsx("div",{className:"text-xs font-bold uppercase tracking-wider text-muted-foreground mb-1",children:t==="en"?"Classmate's reflection (anonymous)":"Reflexión del compañero/a (anónima)"}),o.jsx("blockquote",{className:"text-sm whitespace-pre-wrap bg-background border-l-4 border-accent/40 px-4 py-3 rounded",children:R.reflectionText})]}),o.jsxs("div",{children:[o.jsx("label",{className:"block text-sm font-semibold text-primary mb-1",children:t==="en"?"1. What is working in this work?":"1. ¿Qué está funcionando en esta obra?"}),o.jsx("textarea",{value:b,onChange:G=>v(G.target.value),rows:2,className:"w-full p-2 rounded border border-border bg-background focus:ring-2 focus:ring-primary/20 focus:border-primary text-sm",placeholder:t==="en"?"I notice⦠I seeâ¦":"Noto que⦠Veo queâ¦"})]}),o.jsxs("div",{children:[o.jsx("label",{className:"block text-sm font-semibold text-primary mb-1",children:t==="en"?"2. What do you wonder about?":"2. ¿Qué te preguntas?"}),o.jsx("textarea",{value:x,onChange:G=>k(G.target.value),rows:2,className:"w-full p-2 rounded border border-border bg-background focus:ring-2 focus:ring-primary/20 focus:border-primary text-sm",placeholder:t==="en"?"I wonder why⦠I'd like to know more aboutâ¦":"Me pregunto por qué⦠Me gustarÃa saber más sobreâ¦"})]}),o.jsxs("div",{children:[o.jsx("label",{className:"block text-sm font-semibold text-primary mb-1",children:t==="en"?"3. One suggestion (in first person)":"3. Una sugerencia (en primera persona)"}),o.jsx("textarea",{value:E,onChange:G=>C(G.target.value),rows:2,className:"w-full p-2 rounded border border-border bg-background focus:ring-2 focus:ring-primary/20 focus:border-primary text-sm",placeholder:t==="en"?"If this were mine, I would tryâ¦":"Si esta obra fuera mÃa, yo intentarÃaâ¦"})]}),N&&o.jsx("p",{className:"text-sm text-red-600",children:N}),o.jsx("div",{className:"flex justify-end",children:o.jsxs(ue,{onClick:z,disabled:y.isPending||b.trim().length<3||x.trim().length<3||E.trim().length<3,className:"gap-2",children:[o.jsx(ii,{className:"h-4 w-4"}),y.isPending?t==="en"?"Sendingâ¦":"Enviandoâ¦":t==="en"?"Send critique":"Enviar crÃtica"]})})]})]}),$&&o.jsxs("div",{className:"rounded-md border border-green-200 bg-green-50 text-green-900 px-4 py-3 text-sm mb-6 flex items-center gap-2",children:[o.jsx(In,{className:"h-4 w-4"}),t==="en"?"Thanks for critiquing a classmate this week.":"Gracias por criticar a un/a compañero/a esta semana."]}),o.jsxs("div",{className:"bg-card border border-border rounded-lg p-5",children:[o.jsx("h3",{className:"font-serif text-lg text-primary mb-3",children:t==="en"?"Critiques you received":"CrÃticas que recibiste"}),f.isLoading&&o.jsx("p",{className:"text-sm text-muted-foreground",children:t==="en"?"Loadingâ¦":"Cargandoâ¦"}),f.isError&&o.jsx("p",{className:"text-sm text-red-700 bg-red-50 border border-red-200 rounded px-3 py-2",children:t==="en"?"We couldn't load your received critiques.":"No pudimos cargar las crÃticas recibidas."}),!f.isLoading&&!f.isError&&(f.data??[]).length===0&&o.jsx("p",{className:"text-sm text-muted-foreground",children:t==="en"?"No critiques yet. Classmates will appear here as they submit theirs.":"Aún no hay crÃticas. Tus compañeros/as aparecerán aquà a medida que envÃen las suyas."}),o.jsx("ul",{className:"space-y-4",children:(f.data??[]).map((G,L)=>o.jsxs("li",{className:"border-l-4 border-accent/40 pl-4",children:[o.jsx("div",{className:"text-xs font-bold uppercase tracking-wider text-muted-foreground mb-2",children:t==="en"?`Classmate ${G.label}`:`Compañero/a ${G.label}`}),o.jsxs("p",{className:"text-sm mb-1",children:[o.jsx("span",{className:"font-semibold text-primary",children:t==="en"?"Working: ":"Funciona: "}),G.strengths]}),o.jsxs("p",{className:"text-sm mb-1",children:[o.jsx("span",{className:"font-semibold text-primary",children:t==="en"?"Wondering: ":"Me pregunto: "}),G.wonderings]}),o.jsxs("p",{className:"text-sm",children:[o.jsx("span",{className:"font-semibold text-primary",children:t==="en"?"Suggestion: ":"Sugerencia: "}),G.suggestion]})]},L))})]})]})]}):o.jsxs("section",{className:"my-10 bg-secondary/10 border border-border rounded-xl p-6",children:[o.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[o.jsx(br,{className:"h-5 w-5 text-accent"}),o.jsx("h2",{className:"font-serif text-2xl text-primary",children:t==="en"?"Peer critique (this week)":"CrÃtica entre pares (esta semana)"})]}),o.jsx("p",{className:"text-sm text-muted-foreground",children:t==="en"?"Sign in with your school account to give and receive a peer critique this week.":"Inicia sesión con tu cuenta escolar para dar y recibir una crÃtica entre pares esta semana."})]})}function lL({getText:e,audioSrc:t}){const{lang:r}=_e(),[s,c]=_.useState("idle"),[d,m]=_.useState(1),h=_.useRef(null),f=_.useRef(null),y=typeof window<"u"&&"speechSynthesis"in window,b=_.useCallback(()=>
359{if(!y)return null;const z=window.speechSynthesis.getVoices(),G=r==="en"?"en":"es";return z.find(L=>L.lang.toLowerCase().startsWith(G)&&/female|google|microsoft/i.test(L.name))||z.find(L=>L.lang.toLowerCase().startsWith(G))||null},[r,y]),v=_.useCallback(()=>{y&&window.speechSynthesis.cancel(),f.current&&(f.current.pause(),f.current.src="",f.current=null),h.current=null},[y]);_.useEffect(()=>v,[v]),_.useEffect(()=>{v(),c("idle")},[r,t,v]);const x=_.useCallback(()=>{if(!y){c("idle");return}window.speechSynthesis.cancel();const z=e();if(!z.trim())return;const G=z.match(/[^.!?]+[.!?]+|\S[^.!?]*$/g)??[z],L=b();G.forEach((D,ee)=>{const ne=new SpeechSynthesisUtterance(D.trim());ne.lang=r==="en"?"en-US":"es-ES",L&&(ne.voice=L),ne.rate=.95,ne.pitch=1,ne.volume=d,ee===G.length-1&&(ne.onend=()=>{h.current=null,c("idle")}),window.speechSynthesis.speak(ne)}),h.current="speech",c("playing")},[e,r,b,y,d]),k=()=>{if(s==="paused"){h.current==="audio"&&f.current?f.current.play():h.current==="speech"&&y&&window.speechSynthesis.resume(),c("playing");return}if(v(),t){const z=new Audio(t);z.volume=d,f.current=z,z.onended=()=>{f.current===z&&(h.current=null,c("idle"))},z.onerror=()=>{f.current===z&&(f.current=null,x())},z.play().then(()=>{f.current===z&&(h.current="audio",c("playing"))}).catch(()=>{f.current===z&&(f.current=null,x())});return}x()},E=()=>{h.current==="audio"&&f.current?f.current.pause():y&&window.speechSynthesis.pause(),c("paused")},C=()=>{v(),c("idle")};if(!t&&!y)return null;const N=r==="en"?"Listen":"Escuchar",q=r==="en"?"Pause":"Pausar",R=r==="en"?"Resume":"Continuar",I=r==="en"?"Stop":"Detener",$=r==="en"?"Volume":"Volumen";return o.jsxs("div",{className:"inline-flex items-center gap-2 rounded-full border border-border bg-card px-3 py-1.5 shadow-sm print:hidden",children:[o.jsx(AP,{className:"h-4 w-4 text-accent","aria-hidden":!0}),o.jsx("label",{htmlFor:"lesson-audio-volume",className:"sr-only",children:$}),o.jsx("input",{id:"lesson-audio-volume",type:"range",min:"0",max:"1",step:"0.01",value:d,onChange:z=>{const G=Number(z.target.value);m(G),f.current&&(f.current.volume=G)},"aria-label":$,className:"w-20 accent-primary"}),s==="playing"?o.jsxs(o.Fragment,{children:[o.jsxs("button",{type:"button",onClick:E,className:"inline-flex items-center gap-1.5 text-sm font-semibold text-primary hover:text-accent transition-colors",children:[o.jsx(aP,{className:"h-4 w-4"})," ",q]}),o.jsx("button",{type:"button",onClick:C,className:"inline-flex items-center gap-1.5 text-sm font-semibold text-muted-foreground hover:text-destructive transition-colors","aria-label":I,children:o.jsx(ox,{className:"h-4 w-4"})})]}):o.jsxs(o.Fragment,{children:[o.jsxs("button",{type:"button",onClick:k,className:"inline-flex items-center gap-1.5 text-sm font-semibold text-primary hover:text-accent transition-colors",children:[o.jsx(iP,{className:"h-4 w-4"})," ",s==="paused"?R:N]}),s==="paused"&&o.jsx("button",{type:"button",onClick:C,className:"inline-flex items-center gap-1.5 text-sm font-semibold text-muted-foreground hover:text-destructive transition-colors","aria-label":I,children:o.jsx(ox,{className:"h-4 w-4"})})]})]})}function cL(e,t){const r=c=>c[t],s=[];return s.push(r(e.title)),s.push(t==="en"?"Opening scenario.":"Escenario de apertura."),s.push(r(e.story)),s.push(t==="en"?"What we are exploring.":"Lo que estamos explorando."),s.push(r(e.ageAppropriateExplanation)),s.push(t==="en"?"Deeper dive.":"Exploración profunda."),s.push(r(e.extendedExplanation)),e.vocabulary?.length&&(s.push(t==="en"?"Key vocabulary.":"Vocabulario clave."),e.vocabulary.forEac
359h(c=>s.push(`${r(c.term)}: ${r(c.definition)}`))),e.bibleConnection&&(s.push(t==="en"?"Bible Connection.":"Conexión BÃblica."),s.push(r(e.bibleConnection.explanation)),s.push(r(e.bibleConnection.reference))),s.join(". ")}function dL(e,t){return`/api/storage/public-objects/audio/lesson-${e}-${t}.mp3`}const fd=e=>`/${e.replace(/^\//,"")}`;function uL({clip:e}){const{t}=sa();return o.jsxs("figure",{className:"mt-5 not-italic",children:[o.jsx("div",{className:"overflow-hidden rounded-xl border border-border shadow-sm bg-black",children:o.jsx("video",{src:fd(e.url),poster:e.poster?fd(e.poster):void 0,className:"w-full h-auto",autoPlay:!0,muted:!0,loop:!0,playsInline:!0,controls:!0})}),e.caption&&o.jsx("figcaption",{className:"mt-2 text-sm text-muted-foreground italic",children:t(e.caption)})]})}function mL({illustration:e}){const{t}=sa();return o.jsxs("figure",{className:"not-prose my-6",children:[o.jsx("img",{src:fd(e.url),alt:t(e.alt),className:"w-full h-auto rounded-xl border border-border shadow-sm",loading:"lazy"}),e.caption&&o.jsx("figcaption",{className:"mt-2 text-sm text-muted-foreground",children:t(e.caption)})]})}function pL({video:e}){const{t}=sa();return o.jsxs("figure",{className:"not-prose",children:[o.jsx("div",{className:"relative w-full overflow-hidden rounded-xl border border-border shadow-sm bg-black",style:{aspectRatio:"16 / 9"},children:o.jsx("iframe",{className:"absolute inset-0 h-full w-full",src:`https://www.youtube-nocookie.com/embed/${e.youtubeId}?rel=0`,title:t(e.title),loading:"lazy",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowFullScreen:!0})}),o.jsxs("figcaption",{className:"mt-2 text-sm text-muted-foreground",children:[t(e.title),e.source?` · ${e.source}`:""]})]})}function hL({vimeoId:e,title:t}){return o.jsx("figure",{className:"not-prose",children:o.jsx("div",{className:"relative w-full overflow-hidden rounded-xl border border-border shadow-sm bg-black",style:{aspectRatio:"16 / 9"},children:o.jsx("iframe",{className:"absolute inset-0 h-full w-full",src:`https://player.vimeo.com/video/${e}`,title:t||"Lesson video",loading:"lazy",allow:"autoplay; fullscreen; picture-in-picture; clipboard-write; encrypted-media",allowFullScreen:!0})})})}function fL({commands:e,coords:t}){const s="ggb"+S.useId().replace(/[^a-zA-Z0-9]/g,""),c=S.useRef(null),d=S.useRef(null);return S.useEffect(()=>{let m=!1,h=null;const f=()=>{const v=c.current?.clientWidth||600;return{width:v,height:Math.round(v*.62)}},y=()=>{if(m||!window.GGBApplet||!c.current||c.current.childElementCount>0)return;const{width:v,height:x}=f();new window.GGBApplet({appName:"geometry",width:v,height:x,showToolBar:!1,showAlgebraInput:!1,showMenuBar:!1,showResetIcon:!0,showZoomButtons:!0,enableShiftDragZoom:!0,enableRightClick:!1,enableLabelDrags:!1,appletOnLoad:E=>{d.current=E,e.forEach(C=>E.evalCommand(C)),t&&E.setCoordSystem(t[0],t[1],t[2],t[3])}},!0).inject(s)};window.GGBApplet?y():(h=document.querySelector('script[data-ggb="1"]'),h||(h=document.createElement("script"),h.src="https://www.geogebra.org/apps/deployggb.js",h.async=!0,h.dataset.ggb="1",document.body.appendChild(h)),h.addEventListener("load",y));const b=new ResizeObserver(()=>{const v=d.current;if(!v)return;const{width:x,height:k}=f();v.setWidth?.(x),v.setHeight?.(k)});return c.current&&b.observe(c.current),()=>{m=!0,h&&h.removeEventListener("load",y),b.disconnect(),d.current=null}},[s,e,t]),o.jsx("div",{id:s,ref:c,className:"w-full overflow-hidden rounded-lg"})}function gL({diagram:e}){const{t}=sa();return o.jsxs("figure",{className:"not-prose my-6 rounded-xl border border-border bg-card p-4 shadow-sm",children:[o.jsx("figcaption",{className:"mb-3 text-sm font-bold uppercase tracking-wider text-accent",children:t(e.title)}),e.kind==="svg"?o.jsx("img",{src:fd(e.src),alt:t(e.title),className:"h-auto w-full",loading:"lazy"}):o.jsx(fL,{commands:e.commands,coords:e.coords}),e.caption&&o.jsx("p",{className:"mt-3 text-sm text-muted-foreground",children:t(e.caption)})]})}const yL={1:{video:{youtubeId:"zVhQY173Yyo",title:{en:"Place value blocks",es:"Bloques de valor posicional"},source:"Khan Academy"}}
359,2:{video:{youtubeId:"nrOA1U5jH6Q",title:{en:"Comparing multi-digit numbers",es:"Comparar números de varios dÃgitos"},source:"Khan Academy"}},3:{video:{youtubeId:"_qzs1zozTBo",title:{en:"Rounding whole numbers",es:"Redondear números enteros"},source:"Khan Academy"}},4:{video:{youtubeId:"DqaHhReVpZI",title:{en:"Adding multi-digit numbers with place value",es:"Sumar números de varios dÃgitos con valor posicional"},source:"Khan Academy"}},5:{video:{youtubeId:"3lHBgFvr3yE",title:{en:"Subtracting: regrouping from zero",es:"Restar: reagrupar desde el cero"},source:"Khan Academy"}},6:{video:{youtubeId:"UKYjhM_c_7s",title:{en:"Comparing with multiplication",es:"Comparar con la multiplicación"},source:"Khan Academy"}},7:{video:{youtubeId:"iNPc_UPwEM0",title:{en:"Multiplicative comparison word problems",es:"Problemas verbales de comparación multiplicativa"},source:"Khan Academy"}},8:{video:{youtubeId:"-sSDb_wZqKQ",title:{en:"Multi-step word problems",es:"Problemas verbales de varios pasos"},source:"Khan Academy"}},10:{video:{youtubeId:"UvAOynxGfIU",title:{en:"Multiplying 4 digits by 1 digit with a grid",es:"Multiplicar 4 dÃgitos por 1 dÃgito con una cuadrÃcula"},source:"Khan Academy"}},11:{video:{youtubeId:"DaQlieZH1kk",title:{en:"Multiplying two-digit numbers",es:"Multiplicar números de dos dÃgitos"},source:"Khan Academy"}},12:{video:{youtubeId:"BIGX05Mp5nw",title:{en:"Division: intro to remainders",es:"División: introducción a los residuos"},source:"Khan Academy"}},13:{video:{youtubeId:"KFzcwWTEDDI",title:{en:"Intro to long division",es:"Introducción a la división larga"},source:"Khan Academy"}}
359,14:{video:{youtubeId:"3fWW5SsvPq0",title:{en:"Solving multi-step problems with division",es:"Resolver problemas de varios pasos con división"},source:"Khan Academy"}},15:{video:{youtubeId:"5xe-6GPR_qQ",title:{en:"Finding factors and multiples",es:"Hallar factores y múltiplos"},source:"Khan Academy"}},16:{video:{youtubeId:"3h4UK62Qrbo",title:{en:"Recognizing prime and composite numbers",es:"Reconocer números primos y compuestos"},source:"Khan Academy"}},17:{video:{youtubeId:"KSrnZMAfwTM",title:{en:"Math patterns",es:"Patrones matemáticos"},source:"Khan Academy"}},19:{video:{youtubeId:"N1X0vf5PUz4",title:{en:"Intro to equivalent fractions",es:"Introducción a las fracciones equivalentes"},source:"Khan Academy"}},20:{video:{youtubeId:"WPimvspI0_c",title:{en:"Fractions in lowest terms",es:"Fracciones en su forma más simple"},source:"Khan Academy"}},21:{video:{youtubeId:"zRjLZROI7wc",title:{en:"Comparing fractions with different denominators",es:"Comparar fracciones con distintos denominadores"},source:"Khan Academy"}},22:{video:{youtubeId:"EJjnEau6aeI",title:{en:"Adding fractions with like denominators",es:"Sumar fracciones con igual denominador"},source:"Khan Academy"}},23:{video:{youtubeId:"TQEg9dMIWFU",title:{en:"Subtracting mixed numbers with regrouping",es:"Restar números mixtos reagrupando"},source:"Khan Academy"}},24:{video:{youtubeId:"4PlkCiEXBQI",title:{en:"Multiplying unit fractions and whole numbers",es:"Multiplicar fracciones unitarias y números enteros"},source:"Khan Academy"}},25:{video:{youtubeId:"zEd67cLFnuQ",title:{en:"Visually converting from tenths to hundredths",es:"Convertir visualmente de décimas a centésimas"},source:"Khan Academy"}},26:{video:{youtubeId:"ftEVCrKfIVM",title:{en:"Comparing decimals visually",es:"Comparar decimales visualmente"},source:"Khan Academy"}},28:{video:{youtubeId:"w0nqd_HXHPQ",title:{en:"Unit conversion within the metric system",es:"Conversión de unidades en el sistema métrico"},source:"Khan Academy"}}
359,29:{video:{youtubeId:"_YXF7WDpWpg",title:{en:"Word problem: making change",es:"Problema verbal: dar el cambio"},source:"Khan Academy"}},30:{video:{youtubeId:"LoaBd-sPzkU",title:{en:"Perimeter and area: the basics",es:"PerÃmetro y área: lo básico"},source:"Khan Academy"}},31:{video:{youtubeId:"4smVBLi3DxU",title:{en:"How to read a line plot that uses fractions",es:"Cómo leer un diagrama de puntos con fracciones"},source:"Khan Academy"}},32:{video:{youtubeId:"Ttji2_wBSEo",title:{en:"Measuring angles with a protractor",es:"Medir ángulos con un transportador"},source:"Khan Academy"}},33:{video:{youtubeId:"lshlkVC57uQ",title:{en:"Finding an unknown angle measure",es:"Hallar la medida de un ángulo desconocido"},source:"Khan Academy"}},34:{video:{youtubeId:"JcqCf762y9w",title:{en:"Intro to lines, line segments, and rays",es:"Introducción a rectas, segmentos y rayos"},source:"Khan Academy"}},35:{video:{youtubeId:"59s_CQjTD6w",title:{en:"Identifying symmetrical figures",es:"Identificar figuras simétricas"},source:"Khan Academy"}}},bL={1:"1204006068",2:"1204327885",3:"1204346371",4:"1204352114",5:"1204373704",6:"1204566186",7:"1204566186",8:"1204569929",9:"1204573109",10:"1204575481",11:"1204578327",12:"1204581422",13:"1204584855",14:"1204594898",15:"1204599602",16:"1204604664",17:"1204607231",18:"1204610397",19:"1204613145",20:"1204616764",21:"1204619361",22:"1204645088",23:"1204627298",24:"1204648292",25:"1204650466",26:"1204653331",27:"1204915324",28:"1204915327",29:"1204656319",30:"1204658340",31:"1204659742",32:"1204661047",33:"1204663432",34:"1204664712",35:"1204666494",36:"1204666601"};function vL(){const[,e]=cw("/lesson/:week"),{lang:t}=_e(),{t:r,tList:s}=sa(),c=Number(e?.week),d=ra.find(k=>k.week===c);if(!d)return o.jsx(rg,{});const m=ra.find(k=>k.week===d.week-1),h=ra.find(k=>k.week===d.week+1),f=`/${d.headerImageUrl.replace(/^\//,"")}`,y=yL[d.week],b=bL[d.week],v=()=>cL(d,t),x=dL(d.week,t);return o.jsxs("article",{className:"pb-16",children:[o.jsxs("header",{className:"relative",children:[o.jsxs("div",{className:"aspect-[21/9] md:aspect-[21/7] overflow-hidden",children:[o.jsx("img",{src:f,alt:r(d.headerImageAlt),className:"w-full h-full object-cover"}),o.jsx("div",{className:"absolute inset-0 bg-gradient-to-t from-background via-background/40 to-transparent"})]}),o.jsx("div",{className:"container mx-auto px-4 lg:px-8 -mt-24 md:-mt-32 relative",children:o.jsxs(pd.div,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.5},className:"bg-card border border-border rounded-2xl shadow-lg p-6 md:p-10",children:[o.jsxs("div",{className:"flex items-center gap-3 text-xs font-semibold uppercase tracking-[0.2em] text-accent mb-3",children:[o.jsx("span",{children:t==="en"?`Unit ${d.unitId} · Week ${d.week}`:`Unidad ${d.unitId} · Semana ${d.week}`}),o.jsx("span",{className:"text-border",children:"/"}),o.jsx(Te,{href:`/units/${d.unitId}`,className:"text-muted-foreground hover:text-primary normal-case tracking-normal font-normal text-xs",children:r(d.unitName)})]}),o.jsx("h1",{className:"font-serif text-3xl md:text-5xl font-bold text-primary leading-tight mb-5",children:r(d.title)}),o.jsx("div",{className:"flex flex-wrap items-center gap-3 mb-5 print:hidden",children:o.jsx(lL,{getText:v,audioSrc:x})}),o.jsx(hS,{codes:d.standards})]})})]}),o.jsxs("div",{className:"container mx-auto px-4 lg:px-8 mt-12 grid lg:grid-cols-[1fr_320px] gap-10",children:[o.jsxs("div",{className:"min-w-0",children:[o.jsx("section",{className:"mb-10",children:o.jsx(UO,{statements:d.iCanStatements})}),b&&o.jsxs("section",{className:"mb-10",children:[o.jsxs("h2",{className:"font-serif text-2xl md:text-3xl font-bold text-primary mb-4 flex items-center gap-2",children:[o.jsx(rx,{className:"h-6 w-6 text-accent"}),t==="en"?"Lesson Video":"Video de la Lección"]}),o.jsx(hL,{vimeoId:b,title:r(d.title)})]}),o.jsxs("section",{className:"mb-10 bg-secondary/10 border-l-4 border-accent rounded-r-xl p-6",children:[o.jsxs("h2",{className:"font-serif text-2xl md:text-3xl font-bold text-primary mb-4 flex items-center gap-2",children:[o.jsx(mi,{className:"h-6 w-6 text-accent"}),t==="en"?"Opening Scenario":"Escenario de Apertura"]}),r(d.story).split(/\n\n+/).map((k,E)=>o.jsx("p",{className:"text-base md:text-lg text-foreground leading-relaxed mb-3 italic",children:k},E)),y?.clip&&o.jsx(uL,{clip:y.clip})]}),o.jsxs("section",{className:"prose prose-lg max-w-none mb-10",children:[o.jsxs("h2",{className:"font-serif text-2xl md:text-3xl font-bold text-primary mb-4 flex items-center gap-2",children:[o.jsx(IM,{className:"h-6 w-6 text-accent"}),t==="en"?"What we're exploring":"Lo que estamos explorando"]}),r(d.ageAppropriateExplanation).split(/\n+/).map((k,E)=>o.jsx("p",{className:"text-lg text-foreground leading-relaxed mb-4",children:k},E)),y?.illustration&&o.jsx(mL,{illustration:y.illustration}),o.jsxs("div",{className:"mt-6 pt-6 border-t border-border",children:[o.jsx("h3",{className:"font-serif text-xl font-bold text-primary mb-3",children:t==="en"?"Deeper dive â tied to this week's learning objective":"Exploración profunda â vinculada al objetivo de la semana"}),r(d.extendedExplanation).split(/\n\n+/).map((k,E)=>o.jsx("p",{className:"text-base text-foreground leading-relaxed mb-4",children:k},E)),y?.diagram&&o.jsx(gL,{diagram:y.diagram})]})]}),o.jsx(OO,{vocabulary:d.vocabulary}),o.jsxs("section",{className:"my-10",children:[o.jsxs("h2",{className:"font-serif text-2xl md:text-3xl font-bold text-primary mb-4 flex items-center gap-2",children:[o.jsx(FM,{className:"h-6 w-6 text-accent"}),t==="en"?"This Week's Activities â Step by Step":"Actividades de la Semana â Paso a Paso"]}),o.jsx(NS,{type:"single",collapsible:!0,className:"w-full bg-card border border-border rounded-xl px-4",children:d.activitySteps.map((k,E)=>o.jsxs(cg,{value:`act-${E}`,children:[o.jsx(dg,{className:"text-left hover:no-underline",children:o.jsxs("span",{className:"flex items-center gap-3",children:[o.jsx("span",{className:"inline-flex h-7 w-7 items-center justify-center rounded-full bg-accent text-accent-foreground text-sm font-bold shrink-0",children:E+1}),o.jsx("span",{className:"font-serif text-base md:text-lg text-primary",children:r(k.title)})]})}),o.jsx(ug,{children:o.jsx("ol",{className:"list-decimal list-outside ml-10 space-y-2 text-foreground",children:s(k.steps).map((C,N)=>o.jsx("li",{className:"text-sm md:text-base leading-relaxed pl-1",children:C},N))})})]},E))})]}),y?.video&&o.jsxs("section",{className:"my-10",children:[o.jsxs("h2",{className:"font-serif text-2xl md:text-3xl font-bold text-primary mb-4 flex items-center gap-2",children:[o.jsx(rx,{className:"h-6 w-6 text-accent"}),t==="en"?"Watch & Learn":"Mira y Aprende"]}),o.jsx(pL,{video:y.video})]}),o.jsx(LO,{resources:d.resources,mapping:d.resourcesAssessmentMapping}),d.practiceWorksheets&&d.practiceWorksheets.length>0&&o.jsxs("div",{className:"my-6",children:[o.jsx("div",{className:"flex flex-wrap gap-3",children:d.practiceWorksheets.map((k,E)=>o.jsx("a",{href:k.url,target:"_blank",rel:"noopener noreferrer",className:k.variant==="outline"?"inline-flex items-center gap-2 px-5 py-3 rounded-lg bg-white text-primary border border-primary font-medium shadow-sm hover:bg-primary/5 transition-colors":"inline-flex items-center gap-2 px-5 py-3 rounded-lg bg-primary text-primary-foreground font-medium shadow-sm hover:bg-primary/90 transition-colors",children:r(k.label)},E))}),o.jsx("p",{className:"mt-3 text-sm text-muted-foreground",children:t==="en"?"These worksheets are optional practice resources and are not required for lesson completion.":"Estas hojas de trabajo son recursos de práctica opcionales y no son necesarias para completar la lección."})]}),o.jsxs("section",{className:"my-10 bg-accent/10 border border-accent/30 rounded-xl p-6",children:[o.jsxs("h2",{className:"font-serif text-2xl font-bold text-primary mb-3 flex items-center gap-2",children:[o.jsx(gP,{className:"h-5 w-5 text-accent"}),t==="en"?"Optional: AI & Digital Studio Tasks":"Opcional: Tareas con IA y Estudio Digital"]}),o.jsx("p",{className:"text-sm text-muted-foreground mb-4",children:t==="en"?"Use these tools to extend â not replace â your mathematical thinking. Always disclose AI assistance and cite any tool you used to check or visualize your work.":"Usa estas herramientas para ampliar â no reemplazar â tu pensamiento matemático. Siempre indica el uso de IA y cita cualquier herramienta que uses para verificar o visualizar tu trabajo."}),o.jsx("ul",{className:"space-y-2 list-disc list-inside text-foreground mb-5",children:s(d.aiTaskOptions).map((k,E)=>o.jsx("li",{className:"text-base leading-relaxed",children:k},E))}),o.jsxs("div",{className:"bg-primary/5 border border-primary/15 rounded-lg p-4",children:[o.jsxs("div",{className:"flex items-center gap-2 text-xs font-bold uppercase tracking-wider text-primary mb-2",children:[o.jsx(wP,{className:"h-4 w-4"}),t==="en"?"Example prompt you can copy":"Ejemplo de indicación que puedes copiar"]}),o.jsx("pre",{className:"whitespace-pre-wrap text-sm font-mono text-foreground bg-background border border-border rounded-md p-3 overflow-x-auto",children:r(d.aiPromptExample)})]})]}),o.jsxs("section",{className:"my-10",children:[o.jsxs("h2",{className:"font-serif text-2xl md:text-3xl font-bold text-primary mb-4 flex items-center gap-2",children:[o.jsx(vP,{className:"h-6 w-6 text-accent"}),t==="en"?"Teacher Objectives":"Objetivos del Docente"]}),o.jsx("ul",{className:"space-y-2 list-disc list-inside text-foreground bg-secondary/5 border border-border rounded-lg p-5",children:s(d.teacherObjectives).map((k,E)=>o.jsx("li",{className:"text-base leading-relaxed",children:k},E))})]}),o.jsx(JO,{lessonId:d.week,questions:d.assessment},`a-${d.week}`),o.jsx(iL,{project:d.project,lessonId:d.week,bibleConnection:d.bibleConnection},`p-${d.week}`),d.peerCritique&&o.jsx(oL,{week:d.week},`pc-${d.week}`),o.jsxs("nav",{className:"mt-16 flex items-center justify-between gap-4 border-t border-border pt-8",children:[m?o.jsxs(Te,{href:`/lesson/${m.week}`,className:"group flex items-center gap-3 text-left max-w-[45%]",children:[o.jsx(gf,{className:"h-5 w-5 text-muted-foreground group-hover:text-primary shrink-0"}),o.jsxs("div",{className:"min-w-0",children:[o.jsx("div",{className:"text-xs text-muted-foreground",children:t==="en"?`Week ${m.week}`:`Semana ${m.week}`}),o.jsx("div",{className:"font-serif text-base text-primary group-hover:text-accent truncate",children:r(m.title)})]})]}):o.jsx("span",{}),h&&o.jsxs(Te,{href:`/lesson/${h.week}`,className:"group flex items-center gap-3 text-right max-w-[45%] ml-auto",children:[o.jsxs("div",{className:"min-w-0",children:[o.jsx("div",{className:"text-xs text-muted-foreground",children:t==="en"?`Week ${h.week}`:`Semana ${h.week}`}),o.jsx("div",{className:"font-serif text-base text-primary group-hover:text-accent truncate",children:r(h.title)})]}
359),o.jsx(Do,{className:"h-5 w-5 text-muted-foreground group-hover:text-primary shrink-0"})]})]})]}),o.jsx("aside",{className:"hidden lg:block",children:o.jsxs("div",{className:"sticky top-24 space-y-4",children:[o.jsxs("div",{className:"bg-card border border-border rounded-xl p-5",children:[o.jsx("div",{className:"text-xs font-bold uppercase tracking-wider text-muted-foreground mb-2",children:t==="en"?"On this page":"En esta página"}),o.jsxs("ul",{className:"space-y-2 text-sm text-primary",children:[o.jsx("li",{children:t==="en"?"Learning Targets":"Objetivos de Aprendizaje"}),b&&o.jsx("li",{children:t==="en"?"Lesson Video":"Video de la Lección"}),o.jsx("li",{children:t==="en"?"Overview":"Visión General"}),o.jsx("li",{children:t==="en"?"Vocabulary":"Vocabulario"}),o.jsx("li",{children:t==="en"?"Activities":"Actividades"}),o.jsx("li",{children:t==="en"?"Resources":"Recursos"}),o.jsx("li",{children:t==="en"?"Knowledge Check":"Verificación de Conocimientos"}),o.jsx("li",{children:t==="en"?"Performance Task":"Tarea de Desempeño"})]})]}),o.jsx(Te,{href:`/units/${d.unitId}`,children:o.jsx(ue,{variant:"outline",className:"w-full",children:t==="en"?"View full unit":"Ver unidad completa"})})]})})]})]})}const xL="/assets/una_mujer_joven_con_cabello_rizado_y_(2)_1779728600446-3qoiuvuj.jpeg",ge={netiquette:{en:"Communicate with respect, kindness, and curiosity. When you give feedback on a classmate's solution, name what is working before suggesting what to change, and use 'I' statements ('I noticedâ¦', 'I wonderâ¦'). A wrong answer is part of learning math â never mock it. Always credit the source of any reasoning, diagram, or AI assistance you use.",es:"ComunÃcate con respeto, amabilidad y curiosidad. Cuando des retroalimentación sobre la solución de un compañero, primero nombra lo que está funcionando antes de sugerir cambios, y usa frases en primera persona ('Me di cuenta deâ¦', 'Me preguntoâ¦'). Una respuesta incorrecta es parte de aprender matemáticas â nunca se burla. Siempre atribuye las fuentes de cualquier razonamiento, diagrama o asistencia de IA que utilices."},policies:[{name:{en:"Academic integrity",es:"Integridad académica"}
359,description:{en:"All work submitted must be your own. Cite every source you use, including AI tools and online problem solvers. Copying another student's solutions â or letting AI write your reasoning for you â will be treated as a violation of the Woodbridge Academy honor code.",es:"Todo trabajo entregado debe ser tuyo. Cita cada fuente que uses, incluyendo herramientas de IA y resolvedores de problemas en lÃnea. Copiar las soluciones de otro estudiante â o dejar que la IA escriba tu razonamiento â será tratado como una violación al código de honor de Woodbridge Academy."}},{name:{en:"Late work",es:"Trabajos tardÃos"},description:{en:"Weekly problem sets and reflections are due by 11:59 PM Sunday of the same week. You may request a one-week extension before the deadline; late work submitted without an approved extension is accepted with a rubric ceiling of 'Proficient'.",es:"Las tareas semanales y reflexiones se entregan a más tardar el domingo de la misma semana a las 11:59 p. m. Puedes pedir una prórroga de una semana antes de la fecha lÃmite; los trabajos tardÃos sin prórroga aprobada se aceptan con un techo de rúbrica de 'Competente'."}},{name:{en:"Use of AI tools and helpers",es:"Uso de IA y ayudas"},description:{en:"AI tutors, online practice sites, and hands-on tools (base-ten blocks, number lines, fraction strips) may be used to check work or get unstuck â but the written reasoning and final answer must be yours. Always tell your teacher which tool you used and what part of the work it helped with. On in-class assessments, only the tools the teacher allows may be used.",es:"Tutores de IA, sitios de práctica en lÃnea y materiales manipulables (bloques de base diez, rectas numéricas, tiras de fracciones) pueden usarse para verificar o desatorarse â pero el razonamiento escrito y la respuesta final deben ser tuyos. Siempre dile a tu docente qué herramienta usaste y en qué parte del trabajo te ayudó. En las evaluaciones en clase solo pueden usarse las herramientas que la o el docente autorice."}}],techRequirements:{en:"A modern web browser (latest Chrome, Edge, Safari, or Firefox), a stable internet connection, and a device to watch videos and submit work. A notebook and pencil for handwritten work are required, and simple hands-on materials (base-ten blocks, a ruler, and a protractor) are helpful. Headphones are recommended when watching videos or using the read-aloud audio.",es:"Un navegador web moderno (Chrome, Edge, Safari o Firefox actualizados), una conexión estable a internet y un dispositivo para ver videos y entregar el trabajo. Se requiere un cuaderno y lápiz para el trabajo a mano, y ayudan algunos materiales sencillos (bloques de base diez, una regla y un transportador). Se recomienda usar audÃfonos al ver videos o usar el audio de lectura en voz alta."},prerequisites:{en:"Designed for Grade 4. You should be comfortable with Grade 3 mathematics: reading and writing numbers within 1,000, adding and subtracting within 1,000, knowing multiplication and division facts within 100, and understanding simple fractions. Curiosity, perseverance with multi-step problems, and a willingness to explain your thinking are most important.",es:"Diseñado para 4° grado. Debes manejar con soltura las matemáticas de 3° grado: leer y escribir números hasta 1,000, sumar y restar hasta 1,000, conocer las tablas de multiplicar y dividir hasta 100, y comprender fracciones simples. Lo más importante son la curiosidad, la perseverancia ante problemas de varios pasos y la disposición a explicar tu razonamiento."},digitalLiteracy:{en:"You should be comfortable opening web links, submitting online forms, watching videos in your browser, and using the read-aloud audio button. No software installation is required, and a parent or teacher can help you sign in.",es:"Debes sentirte cómodo abriendo enlaces web, enviando formularios en lÃnea, viendo videos en tu navegador y usando el botón de audio de lectura en voz alta. No se requiere instalar software, y un familiar o docente puede ayudarte a iniciar sesión."},teacher:{name:"Bárbara",title:{en:"Grade 4 Mathematics Teacher",es:"Docente de Matemáticas de 4° Grado"},photoUrl:xL,bio:{en:`Hello and welcome! I'm Bárbara, your Grade 4 Mathematics teacher at Woodbridge Academy. I'm your virtual teacher! I'm an AI-powered bot. If talking to me sounds too "robotic," you can schedule a session with a real human teacher using the button below this text box. 360 361My goal this year is for you to become a confident mathematician: understand place value, add, subtract, multiply, and divi
361de with care, make sense of fractions and decimals, and explain your thinking clearly. Throughout the year I'll respond to every reflection you submit and give you specific, kind, useful feedback. Reach out any time through the inbox.`,es:`¡Hola y bienvenidos! Soy Bárbara, tu docente de Matemáticas de 4° grado en Woodbridge Academy. ¡Soy tu profesora virtual! Soy un bot que funciona con IA. Si crees que hablar conmigo suena "robótico" puedes agendar una cita con un profesor de carne y hueso presionando el botón abajo de este cuadro de texto. 362 363Mi meta este año es que te conviertas en un matemático seguro: comprende el valor posicional, suma, resta, multiplica y divide con cuidado, dale sentido a las fracciones y los decimales, y explica tu razonamiento con claridad. Durante el año responderé a cada reflexión que envÃes con retroalimentación especÃfica, amable y útil. EscrÃbeme cuando quieras por la bandeja de entrada.`}},teacherResponsePlan:{en:"Reflections and problem-set submissions receive feedback within 48 hours on school days. Messages sent to the inbox are answered the same school day when received before 3:00 PM, and the next morning otherwise.",es:"Las reflexiones y entregas de tareas reciben retroalimentación en 48 horas en dÃas lectivos. Los mensajes a la bandeja se responden el mismo dÃa lectivo cuando llegan antes de las 3:00 p. m., y a la mañana siguiente en caso contrario."},interactionExpectations:{en:"Check the inbox at least twice a week. Submit each week's reflection and problem set before Sunday at 11:59 PM. Read every piece of feedback you receive and apply at least one correction or extension before the next week's submission.",es:"Revisa la bandeja al menos dos veces por semana. Entrega la reflexión y la tarea de cada semana antes del domingo a las 11:59 p. m. Lee toda la retroalimentación que recibas y aplica al menos una corrección o extensión antes de la entrega de la semana siguiente."},privacyStatement:{en:"Your sign-in is handled by Clerk; the school does not see or store your password. Session cookies are httpOnly. The work and reflections you submit are visible only to you, your teacher, and (if you have linked them) your parent or guardian.",es:"Tu inicio de sesión lo maneja Clerk; la escuela no ve ni guarda tu contraseña. Las cookies de sesión son httpOnly. Los trabajos y reflexiones que entregas solo son visibles para ti, tu docente y (si lo vinculaste) tu madre, padre o tutor."}
363,technicalSupport:{description:{en:"If something in the website isn't working â a button doesn't respond, an upload fails, a page won't load â write to Woodbridge Academy IT support and your teacher will help follow up.",es:"Si algo del sitio no funciona â un botón no responde, no carga una página, falla una subida â escribe al soporte de TI de Woodbridge Academy y tu docente dará seguimiento."}},academicSupport:[{name:{en:"Office hours",es:"Horario de tutorÃa"},url:"https://english.woodbridge.gt/contact/",description:{en:"Drop-in office hours every week with the teacher to talk through ideas, get extra feedback, or troubleshoot a project.",es:"TutorÃas semanales abiertas con la docente para conversar ideas, recibir retroalimentación extra o resolver dudas sobre un proyecto."}},{name:{en:"Math resource library",es:"Biblioteca de recursos matemáticos"},description:{en:"The Woodbridge Academy library has reference books, problem-solving collections, hands-on manipulatives, and access to Khan Academy for additional practice and visualization.",es:"La biblioteca de Woodbridge Academy tiene libros de referencia, colecciones de problemas, materiales manipulables y acceso a Khan Academy para práctica y visualización adicional."}}],nonAcademicSupport:[{name:{en:"School counselor",es:"ConsejerÃa escolar"},url:"https://english.woodbridge.gt/contact/",description:{en:"If you're feeling overwhelmed, anxious, or just need to talk, the school counselor is available during school hours and by appointment.",es:"Si te sientes abrumado, ansioso o simplemente necesitas hablar, la consejerÃa está disponible en horario escolar y con cita."}},{name:{en:"Family liaison",es:"Enlace con la familia"},url:"https://english.woodbridge.gt/contact/",description:{en:"Your family can stay informed through the parent portal and weekly email reports, and contact the school directly to coordinate support at home.",es:"Tu familia puede mantenerse informada por el portal de madres y padres y los reportes semanales por correo, y comunicarse con la escuela para coordinar apoyo en casa."}}],accessibility:{statement:{en:"Woodbridge Academy is committed to making this course accessible to every learner. The site uses semantic HTML, high-contrast colors, alt text on images, and keyboard-navigable controls. If you encounter a barrier, please tell us so we can fix it.",es:"Woodbridge Academy está comprometida con hacer este curso accesible para cada estudiante. El sitio usa HTML semántico, colores de alto contraste, texto alternativo en imágenes y controles navegables con teclado. Si encuentras una barrera, avÃsanos para corregirla."},accommodationsContact:{description:{en:"To request an accommodation (extended time, alternative formats, assistive technology, etc.), contact the Woodbridge Academy accessibility coordinator.",es:"Para solicitar una adecuación (tiempo extendido, formatos alternativos, tecnologÃa asistiva, etc.), comunÃcate con la coordinación de accesibilidad de Woodbridge Academy."}}}
363,vendorAccessibility:[{label:{en:"Clerk (authentication)",es:"Clerk (autenticación)"},url:"https://clerk.com/legal/accessibility"},{label:{en:"Mailgun (email delivery)",es:"Mailgun (envÃo de correos)"},url:"https://www.mailgun.com/legal/accessibility/"},{label:{en:"Replit (hosting)",es:"Replit (alojamiento)"},url:"https://replit.com/site/accessibility"},{label:{en:"Khan Academy (resources)",es:"Khan Academy (recursos)"},url:"https://support.khanacademy.org/hc/en-us/articles/115001386546-Web-accessibility"}]};function st(e){return!!e&&!!e.en?.trim()&&!!e.es?.trim()}function OS(e){return Array.isArray(e)&&e.length>0}function pr(e){return OS(e)&&e.every(t=>st(t.name)&&st(t.description))}function Gh(e){return OS(e)&&e.every(t=>st(t.label)&&!!t.url?.trim())}const wL={netiquette:st(ge.netiquette),policies:pr(ge.policies),techRequirements:st(ge.techRequirements),prerequisites:st(ge.prerequisites),digitalLiteracy:st(ge.digitalLiteracy),teacherBio:st(ge.teacher?.bio),teacherResponsePlan:st(ge.teacherResponsePlan),interactionExpectations:st(ge.interactionExpectations),privacyStatement:st(ge.privacyStatement),technicalSupp
vendor: 4,371 bytes, line 363
363ort:st(ge.technicalSupport?.description),academicSupport:pr(ge.academicSupport),nonAcademicSupport:pr(ge.nonAcademicSupport),accessibility:st(ge.accessibility?.statement),vendorAccessibility:Gh(ge.vendorAccessibility)};var Jp="rovingFocusGroup.onEntryFocus",kL={bubbles:!1,cancelable:!0},el="RovingFocusGroup",[Kh,LS,SL]=fS(el),[CL,zS]=ss(el,[SL]),[jL,AL]=CL(el),FS=S.forwardRef((e,t)=>o.jsx(Kh.Provider,{scope:e.__scopeRovingFocusGroup,children:o.jsx(Kh.Slot,{scope:e.__scopeRovingFocusGroup,children:o.jsx(qL,{...e,ref:t})})}));FS.displayName=el;var qL=S.forwardRef((e,t)=>{const{__scopeRovingFocusGroup:r,orientation:s,loop:c=!1,dir:d,currentTabStopId:m,defaultCurrentTabStopId:h,onCurrentTabStopIdChange:f,onEntryFocus:y,preventScrollOnEntryFocus:b=!1,...v}=e,x=S.useRef(null),k=ha(t,x),E=sg(d),[C,N]=is({prop:m,defaultProp:h??null,onChange:f,caller:el}),[q,R]=S.useState(!1),I=oi(y),$=LS(r),z=S.useRef(!1),[G,L]=S.useState(0);return S.useEffect(()=>{const D=x.current;if(D)return D.addEventListener(Jp,I),()=>D.removeEventListener(Jp,I)},[I]),o.jsx(jL,{scope:r,orientation:s,dir:E,loop:c,currentTabStopId:C,onItemFocus:S.useCallback(D=>N(D),[N]),onItemShiftTab:S.useCallback(()=>R(!0),[]),onFocusableItemAdd:S.useCallback(()=>L(D=>D+1),[]),onFocusableItemRemove:S.useCallback(()=>L(D=>D-1),[]),children:o.jsx(bt.div,{tabIndex:q||G===0?-1:0,"data-orientation":s,...v,ref:k,style:{outline:"none",...e.style},onMouseDown:jt(e.onMouseDown,()=>{z.current=!0}),onFocus:jt(e.onFocus,D=>{const ee=!z.current;if(D.target===D.currentTarget&&ee&&!q){const ne=new CustomEvent(Jp,kL);if(D.currentTarget.dispatchEvent(ne),!ne.defaultPrevented){const me=$().filter(V=>V.focusable),pe=me.find(V=>V.active),Re=me.find(V=>V.id===C),Ae=[pe,Re,...me].filter(Boolean).map(V=>V.ref.current);VS(Ae,b)}}z.current=!1}),onBlur:jt(e.onBlur,()=>R(!1))})})}),$S="RovingFocusGroupItem",BS=S.forwardRef((e,t)=>{const{__scopeRovingFocusGroup:r,focusable:s=!0,active:c=!1,tabStopId:d,children:m,...h}=e,f=Xr(),y=d||f,b=AL($S,r),v=b.currentTabStopId===y,x=LS(r),{onFocusableItemAdd:k,onFocusableItemRemove:E,currentTabStopId:C}=b;return S.useEffect(()=>{if(s)return k(),()=>E()},[s,k,E]),o.jsx(Kh.ItemSlot,{scope:r,id:y,focusable:s,active:c,children:o.jsx(bt.span,{tabIndex:v?0:-1,"data-orientation":b.orientation,...h,ref:t,onMouseDown:jt(e.onMouseDown,N=>{s?b.onItemFocus(y):N.preventDefault()}),onFocus:jt(e.onFocus,()=>b.onItemFocus(y)),onKeyDown:jt(e.onKeyDown,N=>{if(N.key==="Tab"&&N.shiftKey){b.onItemShiftTab();return}if(N.target!==N.currentTarget)return;const q=TL(N,b.orientation,b.dir);if(q!==void 0){if(N.metaKey||N.ctrlKey||N.altKey||N.shiftKey)return;N.preventDefault();let I=x().filter($=>$.focusable).map($=>$.ref.current);if(q==="last")I.reverse();else if(q==="prev"||q==="next"){q==="prev"&&I.reverse();const $=I.indexOf(N.currentTarget);I=b.loop?ML(I,$+1):I.slice($+1)}setTimeout(()=>VS(I))}}),children:typeof m=="function"?m({isCurrentTabStop:v,hasTabStop:C!=null}):m})})});BS.displayName=$S;var EL={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function NL(e,t){return t!=="rtl"?e:e==="ArrowLeft"?"ArrowRight":e==="ArrowRight"?"ArrowLeft":e}function TL(e,t,r){const s=NL(e.key,r);if(!(t==="vertical"&&["ArrowLeft","ArrowRight"].includes(s))&&!(t==="horizontal"&&["ArrowUp","ArrowDown"].includes(s)))return EL[s]}function VS(e,t=!1){const r=document.activeElement;for(const s of e)if(s===r||(s.focus({preventScroll:t}),document.activeElement!==r))return}function ML(e,t){return e.map((r,s)=>e[(t+s)%e.length])}var PL=FS,_L=BS,Hd="Tabs",[RL]=ss(Hd,[zS]),WS=zS(),[IL,hg]=RL(Hd),GS=S.forwardRef((e,t)=>{const{__scopeTabs:r,value:s,onValueChange:c,defaultValue:d,orientation:m="horizontal",dir:h,activationMode:f="automatic",...y}=e,b=sg(h),[v,x]=is({prop:s,onChange:c,defaultProp:d??"",caller:Hd});return o.jsx(IL,{scope:r,baseId:Xr(),value:v,onValueChange:x,orientation:m,dir:b,activationMode:f,children:o.jsx(bt.div,{dir:b,"data-orientation":m,...y,ref:t})})});GS.displayName=Hd;var KS="TabsList",HS=S.forwardRef((e,t)=>{const{__scopeTabs:r,loop:s=!0,...c}=e,d=hg(KS,r),m=WS(r);return o.jsx(PL,{asChild:!0,...m,orientation:d.orientation,dir:d.dir,loop:s,children:o.jsx(bt.div,{role:"tablist","aria-orientation":d.orientation,...c,ref:t})})});HS.displayName=KS;var QS="TabsTrigger",YS=S.forwardRef((e,t)=>
363{const{__scopeTabs:r,value:s,disabled:c=!1,...d}=e,m=hg(QS,r),h=WS(r),f=JS(m.baseId,s),y=eC(m.baseId,s),b=s===m.value;return o.jsx(_L,{asChild:!0,...h,focusable:!c,active:b,children:o.jsx(bt.button,{type:"button",role:"tab","aria-selected":b,"aria-controls":y,"data-state":b?"active":"inactive","data-disabled":c?"":void 0,disabled:c,id:f,...d,ref:t,onMouseDown:jt(e.onMouseDown,v=>{!c&&v.button===0&&v.ctrlKey===!1?m.onValueChange(s):v.preventDefault()}),onKeyDown:jt(e.onKeyDown,v=>{[" ","Enter"].includes(v.key)&&m.onValueChange(s)}),onFocus:jt(e.onFocus,()=>{const v=m.activationMode!=="manual";!b&&!c&&v&&m.onValueChange(s)})})})});YS.displayName=QS;var XS="TabsContent",ZS=S.forwardRef((e,t)=>{const{__scopeTabs:r,value:s,forceMount:c,children:d,...m}=e,h=hg(XS,r),f=JS(h.baseId,s),y=eC(h.baseId,s),b=s===h.value,v=S.useRef(b);return S.useEffect(()=>{const x=requestAnimationFrame(()=>v.current=!1);return()=>cancelAnimationFrame(x)},[]),o.jsx(os,{present:c||b,children:({present:x})=>o.jsx(bt.div,{"data-state":b?"active":"inactive","data-orientation":h.orientation,role:"tabpanel","aria-labelledby":f,hidden:!x,id:y,tabIndex:0,...m,ref:t,style:{...e.style,animationDuration:v.current?"0s":void 0},children:x&&d})})});ZS.displayName=XS;function JS(e,t){return`${e}-trigger-${t}`}function eC(e,t){return`${e}-content-${t}`}var UL=GS,tC=HS,aC=YS,nC=ZS;const DL=UL,rC=S.forwardRef(({className:e,...t},r)=>o.jsx(tC,{ref:r,className:Ye("inline-flex h-9 items-center justify-center rounded-lg bg-muted p-1 text-muted-foreground",e),...t}));rC.displayName=tC.displayName;const sC=S.forwardRef(({className:e,...t},r)=>o.jsx(aC,{ref:r,className:Ye("inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow",e),...t}));sC.displayName=aC.displayName;const iC=S.forwardRef(({className:e,...t},r)=>o.jsx(nC,{ref:r,className:Ye("mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",e),...t}));iC.displayName=nC.displayName;function OL(){const{lang:e}=_e(),t=Vd.reduce((s,c)=>(s[c.category]=s[c.category]||[],s[c.category].push(c),s),{}
363),r={Creating:{en:"Creating",es:"Creando"},Presenting:{en:"Presenting",es:"Presentando"},Responding:{en:"Responding",es:"Respondiendo"},Connecting:{en:"Connecting",es:"Conectando"}};return o.jsxs("div",{className:"container mx-auto px-4 lg:px-8 py-12 max-w-4xl",children:[o.jsx("p",{className:"text-xs font-semibold uppercase tracking-[0.2em] text-accent mb-3",children:e==="en"?"Course Reference":"Referencia del Curso"}),o.jsx("h1",{className:"font-serif text-4xl md:text-5xl font-bold text-primary mb-4",children:e==="en"?"About this Course":"Sobre este Curso"}),o.jsx("p",{className:"text-lg text-muted-foreground leading-relaxed mb-10",children:e==="en"?"Grade 4 Mathematics at Woodbridge Academy is a year-long course aligned to the California Common Core State Standards for Mathematics. Students move through four units (thirty-six weekly lessons) that build from place value and whole-number operations, to multiplication, division, factors, and patterns, to fractions and decimals, to measurement, data, and geometry with a culminating modeling project.":"Matemáticas de 4.º Grado en Woodbridge Academy es un curso de un año alineado con los Estándares Estatales Comunes de Matemáticas de California. Los estudiantes avanzan por cuatro unidades (treinta y seis lecciones semanales) que van desde el valor posicional y las operaciones con números enteros, a la multiplicación, división, factores y patrones, a las fracciones y los decimales, hasta la medición, los datos y la geometrÃa con un proyecto culminante de modelación."}),o.jsxs("div",{className:"bg-sidebar/50 border border-border rounded-xl p-6 mb-10",children:[o.jsx("h2",{className:"font-serif text-xl font-bold text-primary mb-3",children:e==="en"?"Course at a Glance":"Curso en Resumen"}),o.jsxs("ul",{className:"space-y-2 text-foreground",children:[o.jsxs("li",{children:[o.jsx("strong",{children:e==="en"?"4 Units":"4 Unidades"})," · ",e==="en"?"36 weekly lessons (9 per unit)":"36 lecciones semanales (9 por unidad)"]}),o.jsxs("li",{children:[o.jsx("strong",{children:e==="en"?"Bilingual":"Bilingüe"})," · ",e==="en"?"All student-facing content available in English and Spanish":"Todo el contenido para estudiantes disponible en inglés y español"]}),o.jsxs("li",{children:[o.jsx("strong",{children:e==="en"?"Performance Tasks":"Tareas de Desempeño"})," · ",e==="en"?"Four culminating performance tasks plus a year-end modeling project":"Cuatro tareas de desempeño culminantes y un proyecto de modelación al final del año"]}),o.jsxs("li",{children:[o.jsx("strong",{children:e==="en"?"Weekly Assessments":"Evaluaciones Semanales"})," · ",e==="en"?"Ten varied questions per week with immediate feedback":"Diez preguntas variadas por semana con retroalimentación inmediata"]})]})]}),st(ge.teacher?.bio)&&o.jsxs("section",{className:"mb-10",children:[o.jsx("h2",{className:"font-serif text-2xl font-bold text-primary mb-3",children:e==="en"?"Meet your teacher":"Conoce a tu docente"}),o.jsx("div",{className:"border border-border rounded-xl p-6 bg-card",children:o.jsxs("div",{className:"flex flex-col md:flex-row md:items-start md:gap-6",children:[o.jsx("img",{src:ge.teacher.photoUrl,alt:ge.teacher.name,className:"w-32 h-32 rounded-full object-cover border-4 border-accent/30 shadow-md mb-4 md:mb-0 shrink-0"}),o.jsxs("div",{className:"space-y-1",children:[o.jsxs("div",{className:"font-serif text-lg text-primary",children:[ge.teacher?.name,ge.teacher?.title&&" â ",ge.teacher?.title?.[e]]}),ge.teacher?.bio?.[e]?.split(/\n\n+/).map((s,c)=>o.jsx("p",{className:"text-foreground leading-relaxed mb-3 last:mb-0",children:s},c)),ge.teacher?.email&&o.jsx("p",{className:"text-sm text-muted-foreground mt-2",children:o.jsx("a",{href:`mailto:${ge.teacher.email}`,className:"text-primary underline",children:ge.teacher.email})}),o.jsxs("div",{className:"mt-4 space-y-3",children:[o.jsxs("div",{className:"flex flex-wrap items-center gap-3",children:[o.jsx("a",{href:"https://tutoria.gt/tareas",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center justify-center rounded-md bg-primary text-primary-foreground hover:bg-primary/90 px-4 py-2 text-sm font-semibold transition-colors shrink-0",children:"BarbaraIA"}),o.jsx("p",{className:"text-sm text-muted-foreground leading-snug flex-1 min-w-[200px]",children:e==="en"?"Bárbara is Woodbridge Academy's virtual tutor, powered by AI â available 24/7 for quick help with your work.":"Bárbara es la tutora virtual de Woodbridge Academy, impulsada por inteligencia artificial â disponible 24/7 para ayudarte con tus tareas."})]}),o.jsx("a",{href:"https://english.woodbridge.gt/contact/",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center justify-center rounded-md border border-primary text-primary hover:bg-primary/10 px-4 py-2 text-sm font-semibold transition-colors",children:e==="en"?"Want to talk to a human teacher? Just book an appointment online here":"¿Quieres hablar con un/a docente humano/a? Agenda una cita en lÃnea aquÃ"})]})]})]})})]}),(st(ge.prerequisites)||st(ge.techRequirements)||st(ge.digitalLiteracy))&&o.jsxs("section",{className:"mb-10",children:[o.jsx("h2",{className:"font-serif text-2xl font-bold text-primary mb-3",children:e==="en"?"Before you begin":"Antes de empezar"}),o.jsxs("div",{className:"space-y-4",children:[st(ge.prerequisites)&&o.jsxs("div",{children:[o.jsx("h3",{className:"font-semibold text-primary mb-1",children:e==="en"?"Who this course is for":"Para quién es este curso"}),o.jsx("p",{className:"text-foreground",children:ge.prerequisites[e]})]}),st(ge.techRequirements)&&o.jsxs("div",{children:[o.jsx("h3",{className:"font-semibold text-primary mb-1",children:e==="en"?"What you'll need":"Qué vas a necesitar"}),o.jsx("p",{className:"text-foreground",children:ge.techRequirements[e]})]}),st(ge.digitalLiteracy)&&o.jsxs("div",{children:[o.jsx("h3",{className:"font-semibold text-primary mb-1",children:e==="en"?"Digital skills":"Habilidades digitales"}),o.jsx("p",{className:"text-foreground",children:ge.digitalLiteracy[e]})]})]})]}),(()=>{const s=[];
363return(st(ge.technicalSupport?.description)||pr(ge.academicSupport)||pr(ge.nonAcademicSupport))&&s.push({value:"support",label:e==="en"?"Support and help":"Apoyo y ayuda",body:o.jsxs("div",{className:"space-y-4",children:[st(ge.technicalSupport?.description)&&o.jsxs("div",{children:[o.jsx("h4",{className:"font-semibold text-primary mb-1",children:e==="en"?"Technical support":"Soporte técnico"}),o.jsx("p",{className:"text-foreground",children:ge.technicalSupport.description[e]}),ge.technicalSupport.email&&o.jsx("a",{href:`mailto:${ge.technicalSupport.email}`,className:"text-primary underline text-sm",children:ge.technicalSupport.email}),o.jsxs("div",{className:"flex flex-wrap gap-2 mt-3",children:[o.jsxs("a",{href:"https://wa.me/19496104641",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-2 rounded-md bg-[#25D366] px-4 py-2 text-sm font-semibold text-white shadow-sm hover:bg-[#1ebe5b] transition-colors",children:[o.jsx("svg",{viewBox:"0 0 24 24",className:"w-4 h-4 fill-current","aria-hidden":"true",children:o.jsx("path",{d:"M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.967-.94 1.164-.173.198-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.095 3.2 5.076 4.487.71.306 1.263.489 1.695.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347zM12.04 21.785h-.003a9.87 9.87 0 01-5.03-1.378l-.36-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c0-5.45 4.434-9.884 9.886-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.886 9.884zm8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 005.683 1.448h.005c6.555 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.49-8.413z"})}),e==="en"?"Report by WhatsApp":"Reportar por WhatsApp"]}),o.jsx("a",{href:"https://woodbridge.gt/support/",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-2 rounded-md border border-primary bg-background px-4 py-2 text-sm font-semibold text-primary hover:bg-primary/10 transition-colors",children:e==="en"?"Online chat":"Chat en lÃnea"})]})]}),pr(ge.academicSupport)&&o.jsxs("div",{children:[o.jsx("h4",{className:"font-semibold text-primary mb-2",children:e==="en"?"Academic support":"Apoyo académico"}),o.jsx("ul",{className:"space-y-2",children:ge.academicSupport.map((c,d)=>o.jsxs("li",{className:"text-foreground",children:[c.url?o.jsx("a",{href:c.url,target:"_blank",rel:"noopener noreferrer",className:"font-bold text-primary underline hover:no-underline",children:c.name[e]}):o.jsx("strong",{className:"text-primary",children:c.name[e]}),o.jsx("strong",{className:"text-primary",children:"."})," ",c.description[e]]},d))})]}),pr(ge.nonAcademicSupport)&&o.jsxs("div",{children:[o.jsx("h4",{className:"font-semibold text-primary mb-2",children:e==="en"?"Wellness and family support":"Bienestar y apoyo familiar"}),o.jsx("ul",{className:"space-y-2",children:ge.nonAcademicSupport.map((c,d)=>o.jsxs("li",{className:"text-foreground",children:[c.url?o.jsx("a",{href:c.url,target:"_blank",rel:"noopener noreferrer",className:"font-bold text-primary underline hover:no-underline",children:c.name[e]}):o.jsx("strong",{className:"text-primary",children:c.name[e]}),o.jsx("strong",{className:"text-primary",children:"."})," ",c.description[e]]},d))})]})]})}),st(ge.netiquette)&&s.push({value:"netiquette",label:e==="en"?"Online etiquette":"Etiqueta en lÃnea",body:o.jsx("p",{className:"text-foreground leading-relaxed",children:ge.netiquette[e]})}),st(ge.interactionExpectations)&&s.push({value:"expectations",label:e==="en"?"What is expected of you":"Lo que se espera de ti",body:o.jsx("p",{className:"text-foreground leading-relaxed",children:ge.interactionExpectations[e]})}),s.push({value:"peer-critique",label:e==="en"?"Peer critique":"CrÃtica entre pares",body:o.jsx("p",{className:"text-foreground leading-relaxed",children:e==="en"?"On designated weeks marked with peer critique, after you submit your own reflection you are paired with an anonymous classmate from your group. You exchange a three-prompt critique â what's working in their reasoning, what you wonder, and one suggestion phrased in first person â that follows the netiquette above.":"En las semanas designadas con crÃtica entre pares, después de enviar tu reflexión se te empareja con un/a compañero/a anónimo/a de tu grupo. Intercambian una crÃtica de tres pasos âqué funciona en su razonamiento, qué te preguntas y una sugerencia en primera personaâ siguiendo la netiqueta de arriba."})}),st(ge.teacherResponsePlan)&&s.push({value:"teacher-response",label:e==="en"?"What you can expect from your teacher":"Lo que puedes esperar de tu docente",body:o.jsx("p",{className:"text-foreground leading-relaxed",children:ge.teacherResponsePlan[e]})}),pr(ge.policies)&&s.push({value:"policies",label:e==="en"?"Course policies":"PolÃticas del curso",body:o.jsx("div",{className:"space-y-3",children:ge.policies.map((c,d)=>o.jsxs("div",{className:"border border-border bg-background rounded-lg p-4",children:[o.jsx("div",{className:"font-semibold text-primary mb-1",children:c.name[e]}),o.jsx("p",{className:"text-sm text-foreground leading-relaxed",children:c.description[e]})]},d))})}),(st(ge.accessibility?.statement)||Gh(ge.vendorAccessibility))&&s.push({value:"accessibility",label:e==="en"?"Accessibility":"Acce
363sibilidad",body:o.jsxs("div",{className:"space-y-3",children:[st(ge.accessibility?.statement)&&o.jsx("p",{className:"text-foreground",children:ge.accessibility.statement[e]}),st(ge.accessibility?.accommodationsContact?.description)&&o.jsxs("div",{children:[o.jsx("p",{className:"text-foreground",children:ge.accessibility.accommodationsContact.description[e]}),ge.accessibility.accommodationsContact.email&&o.jsx("a",{href:`mailto:${ge.accessibility.accommodationsContact.email}`,className:"text-primary underline text-sm",children:ge.accessibility.accommodationsContact.email})]}),Gh(ge.vendorAccessibility)&&o.jsxs("div",{children:[o.jsx("h4",{className:"font-semibold text-primary mb-2",children:e==="en"?"Accessibility statements from the technologies we use":"Declaraciones de accesibilidad de las tecnologÃas que usamos"}),o.jsx("ul",{className:"space-y-1 text-sm",children:ge.vendorAccessibility.map((c,d)=>o.jsx("li",{children:o.jsx("a",{href:c.url,target:"_blank",rel:"noopener noreferrer",className:"text-primary underline",children:c.label[e]})},d))})]})]})}),s.push({value:"california",label:e==="en"?"California Standards":"Estándares de California",body:o.jsxs("div",{className:"space-y-6",children:[o.jsx("p",{className:"text-foreground leading-relaxed",children:e==="en"?"This course is aligned to the California Common Core State Standards for Mathematics â Grade 4, organized by the domains of operations and algebraic thinking, number and operations in base ten, number and operationsâfractions, measurement and data, and geometry, together with the Standards for Mathematical Practice.":"Este curso está alineado con los Estándares Estatales Comunes de Matemáticas de California para 4.º grado, organizados en los dominios: operaciones y pensamiento algebraico, números y operaciones en base diez, números y operaciones con fracciones, medición y datos, y geometrÃa, junto con los Estándares de Práctica Matemática."}),Object.entries(t).map(([c,d])=>o.jsxs("div",{children:[o.jsx("h4",{className:"font-serif text-base font-semibold text-accent mb-2 uppercase tracking-wide",children:r[c]?.[e]??c}),o.jsx("div",{className:"space-y-2",children:d.map(m=>o.jsxs("div",{className:"border border-border bg-background rounded-lg p-3",children:[o.jsx("div",{className:"font-mono text-xs font-bold text-primary mb-1",children:m.code}),o.jsx("p",{className:"text-sm text-foreground leading-relaxed",children:m.focus[e]})]},m.code))})]},c))]})}),s.push({value:"qm",label:"Quality Matters",body:o.jsxs("div",{className:"space-y-3",children:[o.jsx("p",{className:"text-foreground leading-relaxed",children:e==="en"?"This course is designed against the Quality Matters (QM) K-12 Secondary Rubric â an internationally recognized standard for online and blended course quality. The self-assessment shows how each QM standard is met in this course.":"Este curso está diseña
363do siguiendo la rúbrica K-12 Secundaria de Quality Matters (QM) â un estándar reconocido internacionalmente para la calidad de cursos en lÃnea y mixtos. La autoevaluación muestra cómo se cumple cada estándar QM en este curso."}),o.jsx(Te,{href:"/qm",className:"inline-flex items-center justify-center rounded-md bg-primary text-primary-foreground hover:bg-primary/90 px-4 py-2 text-sm font-semibold transition-colors",children:e==="en"?"Open the Quality Matters self-assessment":"Ver la autoevaluación Quality Matters"})]})}),s.length===0?null:o.jsxs("section",{className:"mb-10",children:[o.jsx("h2",{className:"font-serif text-2xl font-bold text-primary mb-3",children:e==="en"?"Course information":"Información del curso"}),o.jsxs(DL,{defaultValue:s[0].value,orientation:"vertical",className:"flex flex-col md:flex-row gap-4",children:[o.jsx(rC,{className:"h-auto flex md:flex-col md:items-stretch flex-wrap md:flex-nowrap bg-sidebar/50 border border-border rounded-lg p-1 md:w-64 md:shrink-0",children:s.map(c=>o.jsx(sC,{value:c.value,className:"justify-start text-left px-3 py-2 whitespace-normal h-auto data-[state=active]:bg-card data-[state=active]:text-primary data-[state=active]:font-semibold",children:c.label},c.value))}),o.jsx("div",{className:"flex-1 border border-border bg-card rounded-lg p-5",children:s.map(c=>o.jsxs(iC,{value:c.value,className:"mt-0 focus-visible:ring-0",children:[o.jsx("h3",{className:"font-serif text-lg text-primary mb-2",children:c.label}),c.body]},c.value))})]})]})})(),st(ge.privacyStatement)&&o.jsxs("section",{className:"mb-10",children:[o.jsx("h2",{className:"font-serif text-2xl font-bold text-primary mb-3",children:e==="en"?"Privacy":"Privacidad"}),o.jsx("p",{className:"text-foreground",children:ge.privacyStatement[e]})]})]})}function LL(){const{lang:e}=_e(),{t}=sa(),r=m=>{const h=ra.filter(b=>b.unitId===m).map(b=>b.week);if(h.length===0)return"â";const f=Math.min(...h),y=Math.max(...h);return f===y?`${f}`:`${f}â${y}`},s=new Set(ra.flatMap(m=>m.standards)),c=Vd.filter(m=>s.has(m.code)),d=Array.from(new Set(c.map(m=>m.category)));return o.jsxs("div",{className:"max-w-5xl mx-auto px-6 py-10 space-y-8",children:[o.jsxs("header",{className:"space-y-3",children:[o.jsx("h1",{className:"font-serif text-3xl text-primary",children:e==="en"?"Curriculum Map":"Mapa Curricular"}),o.jsx("p",{className:"text-muted-foreground leading-relaxed",children:e==="en"?"A week-by-week reference for students and parents. The Grade 4 Mathematics course runs for 36 weeks across four units. Each week below lists its lesson and the California Common Core State Standards (CCSS) it targets. Click any lesson to open it.":"Una referencia semana por semana para estudiantes y familias. El curso de Matemáticas de 4.º grado dura 36 semanas distribuidas en cuatro unidades. Cada semana indica su lección y los California Common Core State Standards (CCSS) que aborda. Haz clic en cualquier lección para abrirla."}),o.jsx("p",{className:"text-sm text-muted-foreground",children:e==="en"?o.jsxs(o.Fragment,{children:["See the full standards details on the"," ",o.jsx(Te,{href:"/qm",className:"text-primary underline",children:"QM"})," ","page."]}):o.jsxs(o.Fragment,{children:["Consulta los detalles completos de los estándares en la página"," ",o.jsx(Te,{href:"/qm",className:"text-primary underline",children:"QM"}),"."]})})]}),Qo.map(m=>{const h=ra.filter(f=>f.unitId===m.id).sort((f,y)=>f.week-y.week);return o.jsxs("section",{className:"space-y-3",children:[o.jsxs("div",{className:"space-y-1",children:[o.jsxs("h2",{className:"font-serif text-2xl text-primary",children:[e==="en"?`Unit ${m.id}: ${m.title.en}`:`Unidad ${m.id}: ${m.title.es}`," ",o.jsxs("span",{className:"text-base font-sans text-accent font-semibold",children:["(",e==="en"?"Weeks":"Semanas"," ",r(m.id),")"]})]}),o.jsx("p",{className:"text-sm text-muted-foreground leading-relaxed",children:e==="en"?m.description.en:m.description.es})]}),o.jsx("div",{className:"overflow-x-auto border border-border rounded-md",children:o.jsxs("table",{className:"w-full text-sm",children:[o.jsx("thead",{className:"bg-secondary/30 text-left",children:o.jsxs("tr",{children:[o.jsx("th",{className:"px-3 py-2 font-semibold w-16",children:e==="en"?"Week":"Semana"}),o.jsx("th",{className:"px-3 py-2 font-semibold",children:e==="en"?"Lesson":"Lección"}),o.jsx("th",{className:"px-3 py-2 font-semibold w-44",children:e==="en"?"California CCSS":"CCSS de California"})]})}),o.jsx("tbody",{children:h.map(f=>o.jsxs("tr",{className:"border-t border-border align-top hover:bg-secondary/10",children:[o.jsx("td",{className:"px-3 py-3 font-medium",children:f.week}),o.jsx("td",{className:"px-3 py-3",children:o.jsx(Te,{href:`/lesson/${f.week}`,className:"text-primary hover:underline",children:t(f.title)})}),o.jsx("td",{className:"px-3 py-3",children:o.jsx("span",{className:"text-xs text-foreground",children:f.standards.join(", ")})})]},f.week))})]})})]},m.id)}),o.jsxs("section",{className:"space-y-3",children:[o.jsx("h2",{className:"font-serif text-2xl text-primary",children:e==="en"?"Standards reference (California CCSS)":"Referencia de estándares (CCSS de California)"}),o.jsx("div",{className:"space-y-4",children:d.map(m=>o.jsxs("div",{className:"space-y-1",children:[o.jsx("h3",{className:"font-semibold text-accent",children:m}),o.jsx("ul",{className:"space-y-1",children:c.filter(h=>h.category===m).map(h=>o.jsxs("li",{className:"text-sm",children:[o.jsx("span",{className:"font-semibold text-primary",children:h.code})," ","â ",e==="en"?h.focus.en:h.focus.es]},h.code))})]},m))}),o.jsx("p",{className:"text-xs text-muted-foreground",children:e==="en"?"SMP = Standards for Mathematical Practice. Domain codes (e.g., 4.NBT, 4.OA, 4.NF, 4.MD, 4.G) follow the California Common Core State Standards for Mathematics, Grade 4.":"SMP = Estándares de Práctica Matemática. Los códigos de dominio (p. ej., 4.NBT, 4.OA, 4.NF, 4.MD, 4.G) siguen los Estándares Estatales Comunes de Matemáticas de California para 4.º grado."})]})]})}function zL(){const{lang:e}=_e(),{t}=sa(),r=e==="en",s=d=>{const m=ra.filter(y=>y.unitId===d).map(y=>y.week);if(m.length===0)return"â";const h=Math.min(...m),f=Math.max(...m);return h===f?`${h}`:`${h}â${f}`},c=r?["Create a new Google Docs or Google Slides file for your performance task.","Ensure your document includes your labeled work showing each step, your final answer with units or labels, and your short written explanation.","Click 'Share' in the top right corner of your Google document.","Under 'General access', change the setting from 'Restricted' to 'Anyone with the link' and ensure the role is set to 'Viewer'.","Click 'Copy link'.","Return to the lesson page on this platform, paste the link in the Performance Task submission box, confirm access, and click submit."]:["Crea un nuevo archivo de Google Docs o Google Slides para tu tarea de desempeño.","Asegúrate de que tu documento incluya tu trabajo etiquetado mostrando cada paso, tu respuesta final con unidades o etiquetas, y tu breve explicación escrita.","Haz clic en 'Compartir' en la esquina superior derecha de tu documento de Google.","En 'Acceso general', cambia la configuración de 'Restringido' a 'Cualquier persona con el enlace' y asegúrate de que el rol sea 'Lector'.","Haz clic en 'Copiar enlace'.","Regresa a la página de la lección en esta plataforma, pega el enlace en el cuadro de envÃo de la Tarea de Desempeño, confirma el acceso y haz clic en enviar."];return o.jsxs("div",{className:"max-w-5xl mx-auto px-6 py-10 space-y-10",children:[o.jsxs("header",{className:"space-y-3",children:[o.jsx("h1",{className:"font-serif text-3xl text-primary",children:r?"Course Deliverables":"Entregables del Curso"}),o.jsx("p",{className:"text-muted-foreground leading-relaxed",children:r?"This page summarizes every deliverable you must submit to complete the Grade 4 Mathematics course, organized by unit. For each of the 36 weeks you complete three deliverables: the weekly Performance Task, the Final Reflection, and the auto-graded Assessment. All three deliverables are submitted directly inside this platform. Performance Tasks must be submitted as a Google Docs or Google Slides link.":"Esta página resume todos los entregables que debes enviar para completar el curso de Matemáticas de 4.º grado, organizados por unidad. En cada una de las 36 semanas completas tres entregables: la Tarea de Desempeño semanal, la Reflexión Final y la Evaluación autocalificada. Los tres entregables se envÃan directamente dentro de esta plataforma. Las Tareas de Desempeño deben enviarse como un enlace de Google Docs o Google Slides."})]}),Qo.map(d=>{const m=ra.filter(h=>h.unitId===d.id).sort((h,f)=>h.week-f.week);return o.jsxs("section",{className:"space-y-3",children:[o.jsxs("h2",{className:"font-serif text-2xl text-primary",children:[r?`Unit ${d.id}: ${d.title.en}`:`Unidad ${d.id}: ${d.title.es}`," ",o.jsxs("span",{className:"text-base font-sans text-accent font-semibold",children:["(",r?"Weeks":"Semanas"," ",s(d.id),")"]})]}),o.jsx("div",{className:"overflow-x-auto border border-border rounded-md",children:o.jsxs("table",{className:"w-full text-sm",children:[o.jsx("thead",{className:"bg-secondary/30 text-left",children:o.jsxs("tr",{children:[o.jsx("th",{className:"px-3 py-2 font-semibold w-16",children:r?"Week":"Semana"}),o.jsx("th",{className:"px-3 py-2 font-semibold",children:r?"Lesson":"Lección"}),o.jsx("th",{className:"px-3 py-2 font-semibold",children:r?"Performance Task":"Tarea de Desempeño"}),o.jsx("th",{className:"px-3 py-2 font-semibold w-40",children:r?"Final Reflection":"Reflexión Final"}),o.jsx("th",{className:"px-3 py-2 font-semibold w-32",children:r?"Assessment":"Evaluación"})]})}),o.jsx("tbody",{children:m.map(h=>o.jsxs("tr",{className:"border-t border-border align-top hover:bg-secondary/10",children:[o.jsx("td",{className:"px-3 py-3 font-medium",children:h.week}),o.jsx("td",{className:"px-3 py-3",children:o.jsx(Te,{href:`/lesson/${h.week}`,className:"text-primary hover:underline",children:t(h.title)})}),o.jsxs("td",{className:"px-3 py-3 text-foreground",children:[t(h.project.title),o.jsx("div",{className:"text-xs text-muted-foreground mt-1",children:r?"Google Docs / Slides Link":"Enlace de Google Docs / Slides"})]}),o.jsx("td",{className:"px-3 py-3 text-xs text-muted-foreground",children:r?"In the platform":"En la plataforma"}),o.jsx("td",{className:"px-3 py-3 text-xs text-muted-foreground",children:r?"Auto-graded, in the platform":"Autocalificada, en la plataforma"})]},h.week))})]})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:r?"Every week has three deliverables: the Performance Task, the Final Reflection, and the Assessment. The Final Reflection and the auto-graded Assessment are completed inside this platform. The Performance Task must be a Google Docs or Google Slides link.":"Cada semana tiene tres entregables: la Tarea de Desempeño, la Reflexión Final y la Evaluación. La Reflexión Final y la Evaluación autocalificada se completan dentro de esta plataforma. La Tarea de Desempeño debe ser un enlace de Google Docs o Google Slides."})]},d.id)}),o.jsxs("section",{className:"space-y-4 border border-border rounded-lg bg-sidebar/40 p-6",children:[o.jsx("h2",{className:"font-serif text-2xl text-primary",children:r?"How to submit your Performance Task":"Cómo entregar tu Tarea de Desempeño"}),o.jsx("p",{className:"text-sm text-muted-foreground leading-relaxed",children:r?"You must submit your performance task as a Google Docs or Google Slides link directly on the lesson page. Follow these steps in order:":"Debes enviar tu tarea de desempeño como un enlace de Google Docs o Google Slides directamente en la página de la lección. Sigue estos pasos en orden:"}),o.jsx("ol",{className:"list-decimal space-y-3 pl-6 text-sm leading-relaxed",children:c.map((d,m)=>o.jsx("li",{children:d},m))}),o.jsx("p",{className:"text-xs text-muted-foreground",children:r?"Tip: Always double-check that your sharing permissions are set to 'Anyone with the link can view' before submitting. If your teacher cannot access your document, they will mark it incomplete.":"Consejo: Siempre verifica dos veces que tus permisos de uso compartido estén configurados en 'Cualquier persona con el enlace puede ver' antes de enviar. Si tu profesor no puede acceder a tu documento, lo marcará como incompleto."})]})]})}const FL=3;function $L(){return ra.filter(e=>e.peerCritique).length>=FL}
363const K1="https://www.qualitymatters.org/qa-resources/rubric-standards/k-12-secondary-rubric",H1="K-12 Secondary, Sixth Edition",Hh=[{id:1,name:{en:"Course Overview and Introduction",es:"Visión general e introducción al curso"},intent:{en:"Help learners get started, understand the course structure, and know what is expected.",es:"Ayudar a las y los estudiantes a empezar, comprender la estructura del curso y saber qué se espera de ellos."}},{id:2,name:{en:"Learning Objectives (Competencies)",es:"Objetivos de aprendizaje (competencias)"},intent:{en:"State measurable objectives at the course and module level and align them with learner expectations.",es:"Plantear objetivos medibles a nivel de curso y de módulo, alineados con lo que se espera de los estudiantes."}},{id:3,name:{en:"Assessment and Measurement",es:"Evaluación y medición"},intent:{en:"Use assessments that measure the stated objectives, with clear criteria and multiple opportunities for feedback.",es:"Usar evaluaciones que midan los objetivos planteados, con criterios claros y múltiples oportunidades de retroalimentación."}},{id:4,name:{en:"Instructional Materials",es:"Materiales de instrucción"},intent:{en:"Provide current, varied, and clearly attributed materials that support the stated objectives.",es:"Proveer materiales actuales, variados y con atribución clara, que sostengan los objetivos planteados."}},{id:5,name:{en:"Learning Activities and Learner Interaction",es:"Actividades de aprendizaje e interacción"},intent:{en:"Engage learners in active learning and provide opportunities for interaction with content, peers, and the teacher.",es:"Involucrar a los estudiantes en aprendizaje activo y dar oportunidades de interacción con el contenido, sus pares y el docente."}},{id:6,name:{en:"Course Technology",es:"TecnologÃa del curso"},intent:{en:"Use technologies that support the objectives and are easy for learners to access and operate.",es:"Usar tecnologÃas que apoyen los objetivos y sean fáciles de acceder y operar para los estudiantes."}},{id:7,name:{en:"Learner Support",es:"Apoyo al estudiante"},intent:{en:"Provide clear information about academic, technical, and accessibility supports available to learners.",es:"Brindar información clara sobre los apoyos académicos, técnicos y de accesibilidad disponibles para los estudiantes."}},{id:8,name:{en:"Accessibility and Usability",es:"Accesibilidad y usabilidad"},intent:{en:"Design the course so all learners, including those with disabilities, can access and use the materials.",es:"Diseñar el curso para que todos los estudiantes, incluyendo aquellos con discapacidad, puedan acceder y usar los materiales."}}],BL=[{code:"1.1",generalId:1,points:3,name:{en:"Instructions make clear how to get started and where to find course components.",es:"Las instrucciones aclaran cómo empezar y dónde encontrar los componentes del curso."},evidence:{en:"The Home page surfaces a 'Start here' entry point with the four units and links to week-by-week lessons. The persistent sidebar shows all weeks grouped by unit and the current location.",es:"La página de inicio expone un punto de entrada con las cuatro unidades y enlaces semana a semana. El sidebar persistente muestra todas las semanas agrupadas por unidad y la ubicación actual."},alignment:"met"},{code:"1.2",generalId:1,points:3,name:{en:"An introduction to the course and its structure is provided.",es:"Se incluye una introducción al curso y a su estructura."},evidence:{en:"The Home and 'Standards & About' pages introduce the course, its four-unit arc, and its 36-week pacing.",es:"Las páginas de inicio y 'Estándares y Acerca de' presentan el curso, su arco de cuatro unidades y la planificación de 36 semanas."},alignment:"met"},{code:"1.3",generalId:1,points:2,name:{en:"Etiquette expectations (netiquette) for online communication are clearly stated.",es:"Se indican con claridad las expectativas de etiqueta (netiqueta) para la comunicación en lÃnea."},evidence:{en:"About page > 'How we work together' renders the netiquette block from `schoolInfo.netiquette`.",es:"La página Acerca de >
363 'Cómo trabajamos juntos' muestra el bloque de netiqueta desde `schoolInfo.netiquette`."},alignment:"not-met",dependsOn:"netiquette"},{code:"1.4",generalId:1,points:2,name:{en:"Course, institutional, and program policies are clearly stated or linked.",es:"Las polÃticas del curso, la institución y el programa se enuncian o enlazan con claridad."},evidence:{en:"About page > 'Course policies' lists each entry of `schoolInfo.policies` (integrity, late work, AI use).",es:"Acerca de > 'PolÃticas del curso' lista cada entrada de `schoolInfo.policies` (integridad, trabajos tardÃos, uso de IA)."},alignment:"partial",dependsOn:"policies"},{code:"1.5",generalId:1,points:2,name:{en:"Minimum technology requirements and how to obtain them are clearly stated.",es:"Se indican con claridad los requisitos mÃnimos de tecnologÃa y cómo obtenerlos."},evidence:{en:"About page > 'Before you begin > What you'll need' renders `schoolInfo.techRequirements`.",es:"Acerca de > 'Antes de empezar > Qué vas a necesitar' muestra `schoolInfo.techRequirements`."},alignment:"partial",dependsOn:"techRequirements"},{code:"1.6",generalId:1,points:1,name:{en:"Prerequisite knowledge and competencies are clearly stated.",es:"Los conocimientos y competencias previas se indican con claridad."},evidence:{en:"About page > 'Before you begin > Who this course is for' renders `schoolInfo.prerequisites`.",es:"Acerca de > 'Antes de empezar > Para quién es este curso' muestra `schoolInfo.prerequisites`."},alignment:"partial",dependsOn:"prerequisites"},{code:"1.7",generalId:1,points:1,name:{en:"Minimum digital information literacy skills expected of the learner are clearly stated.",es:"Se indican con claridad las habilidades mÃnimas de alfabetización digital esperadas."},evidence:{en:"About page > 'Before you begin > Digital skills' renders `schoolInfo.digitalLiteracy`.",es:"Acerca de > 'Antes de empezar > Habilidades digitales' muestra `schoolInfo.digitalLiteracy`."},alignment:"partial",dependsOn:"digitalLiteracy"},{code:"1.8",generalId:1,points:1,name:{en:"A self-introduction by the teacher is available and is welcoming.",es:"Hay una autopresentación de la o el docente con tono cálido."},evidence:{en:"About page > 'Meet your teacher' renders the bio from `schoolInfo.teacher.bio` (plus name, title, email when present).",es:"Acerca de > 'Conoce a tu docente' muestra la bio desde `schoolInfo.teacher.bio` (más nombre, cargo y correo si están)."},alignment:"not-met",dependsOn:"teacherBio"},{code:"1.9",generalId:1,points:1,name:{en:"Learners are asked to introduce themselves.",es:"Se invita a las y los estudiantes a presentarse."},evidence:{en:"Week 1 includes an introductory math-notebook entry, but a dedicated 'introduce yourself' prompt is recommended.",es:"La Semana 1 incluye una entrada introductoria, pero conviene un prompt explÃcito de presentación personal."},alignment:"partial"},{code:"2.1",generalId:2,points:3,name:{en:"Course-level objectives describe what learners will be able to do.",es:"Los objetivos del curso describen lo que las y los estudiantes podrán hacer."},evidence:{en:"Each unit and lesson lists 'I canâ¦' statements that describe observable, learner-focused outcomes.",es:"Cada unidad y lección incluye enunciados 'Puedoâ¦' que describen logros observables y centrados en el estudiante."},alignment:"met"},{code:"2.2",generalId:2,points:3,name:{en:"Module-level objectives describe what learners will be able to do and align with course objectives.",es:"Los objetivos por módulo describen logros del estudiante y se alinean con los del curso."},evidence:{en:"Each of the 36 weekly lessons declares its own 'I canâ¦' statements explicitly tied to its unit theme (place value & whole-number operations; multiplication, division, factors & patterns; fractions & decimals; measurement, data & geometry).",es:"Cada una de las 36 lecciones semanales declara sus 'Puedoâ¦' propios, ligados explÃcitamente al tema de su unidad (valor posicional y operaciones con números enteros; multiplicación, división, factores y patrones; fracciones y decimales; medición, datos y geometrÃa)."},alignment:"met",linkedWeeks:[1,10,19,28]},{code:"2.3",generalId:2,points:3,name:{en:"Objectives are stated clearly and written from the learner's perspective.",es:"Los objetivos están redactados con claridad y desde la perspectiva del estudiante."},evidence:{en:"All objectives use 'I canâ¦' phrasing in both English and Spanish.",es:"Todos los objetivos usan la frase 'Puedoâ¦' en inglés y español."},alignment:"met"},{code:"2.4",generalId:2,points:3,name:{en:"Relationship between objectives, activities, and assessments is clear.",es:"Es clara la relación entre objetivos, actividades y evaluaciones."},evidence:{en:"Each lesson exposes 'I canâ¦' statements, activities, project rubric, and assessment side-by-side, plus a 'resourcesâassessment mapping' line.",es:"Cada lección muestra los 'Puedoâ¦', actividades, rúbrica del proyecto y evaluación juntos, además de un mapeo 'recursosâevaluación'."},alignment:"met"},{code:"2.5",generalId:2,points:3,name:{en:"Objectives are suited to the level of the course.",es:"Los objetivos son apropiados al nivel del curso."},evidence:{en:"Objectives are scoped for Grade 4 Mathematics and explicitly anchored on the California Common Core State Standards for Mathematics, Grade 4 (4.OA, 4.NBT, 4.NF, 4.MD, 4.G) and the Standards for Mathematical Practice.",es:"Los objetivos están dimensionados para Matemáticas de 4° grado y anclados explÃcitamente en los California Common Core State Standards de Matemáticas, Grado 4 (4.OA, 4.NBT, 4.NF, 4.MD, 4.G) y los Estándares de Práctica Matemática."},alignment:"met"},{code:"3.1",generalId:3,points:3,name:{en:"Assessments measure the stated learning objectives.",es:"Las evaluaciones miden los objetivos de aprendizaje planteados."},evidence:{en:"Each week's auto-graded assessment is built from the same standards and 'I canâ¦' statements declared at the top of the lesson.",es:"La evaluación semanal con calificación automática se construye sobre los mismos estándares y 'Puedoâ¦' declarados al inicio de la lección."},alignment:"met",linkedWeeks:[9,18,27,36]},{code:"3.2",generalId:3,points:3,name:{en:"The grading policy is transparent and easy to understand.",es:"La polÃtica de calificación es transparente y fácil de entender."},evidence:{en:"Each project includes a four-level rubric (Beginning/Developing/Proficient/Exemplary) per criterion, and the Gradebook shows per-week scores to students, teachers, and parents.",es:"Cada proyecto incluye una rúbrica de cuatro niveles (Pr
363incipiante/En Desarrollo/Competente/Ejemplar) por criterio, y el Libro de Calificaciones muestra puntajes semanales a estudiantes, docentes y madres/padres."},alignment:"met"},{code:"3.3",generalId:3,points:3,name:{en:"Assessments are sequenced, varied, and suited to the level of the course.",es:"Las evaluaciones están secuenciadas, son variadas y apropiadas al nivel del curso."},evidence:{en:"Each week mixes multiple-choice, short-answer reflection, and a problem-solving / modeling task. Units 1â4 build from number sense to a culminating modeling project, with performance tasks at weeks 9, 18, 27, and 36.",es:"Cada semana combina selección múltiple, respuesta breve de reflexión y una tarea de resolución de problemas o modelación. Las Unidades 1â4 avanzan del sentido numérico a un proyecto de modelación culminante, con tareas de desempeño en las semanas 9, 18, 27 y 36."},alignment:"met"},{code:"3.4",generalId:3,points:2,name:{en:"Assessment instruments selected are sequenced, varied, and align with objectives.",es:"Los instrumentos de evaluación están secuenciados, son variados y se alinean con los objetivos."},evidence:{en:"Rubrics, self-assessment checklists, and reflection prompts complement the auto-graded assessment.",es:"Las rúbricas, listas de autoevaluación y prompts de reflexión complementan la evaluación automática."},alignment:"met"},{code:"3.5",generalId:3,points:2,name:{en:"Learners have multiple opportunities to track their progress.",es:"Las y los estudiantes tienen múltiples oportunidades para monitorear su progreso."},evidence:{en:"The student Gradebook, the weekly completion badges, and the parent dashboard show progress in real time. Weekly PDF progress reports can be emailed to parents.",es:"El Libro de Calificaciones, las insignias de semanas completadas y el panel de madres/padres muestran el progreso en tiempo real. Se pueden enviar reportes PDF semanales por correo."},alignment:"met"},{code:"4.1",generalId:4,points:3,name:{en:"Instructional materials support the stated objectives.",es:"Los materiales de instrucción apoyan los objetivos planteados."},evidence:{en:"Each lesson curates vocabulary, age-appropriate explanations, activities, and a 'resourcesâassessment mapping' that ties materials back to the 'I canâ¦' statements.",es:"Cada lección reúne vocabulario, explicaciones apropiadas a la edad, actividades y un mapeo 'recursosâevaluación' que conecta los materiales con los 'Puedoâ¦'."},alignment:"met"},{code:"4.2",generalId:4,points:3,name:{en:"The relationship between materials and learning activities is clearly explained.",es:"La relación entre materiales y actividades de aprendizaje se explica con claridad."},evidence:{en:"The 'resourcesâassessment mapping' field on every lesson states how each curated resource feeds the activity and the assessment.",es:"El campo 'mapeo recursosâevaluación' de cada lección explica cómo cada recurso alimenta la actividad y la evaluación."},alignment:"met"},{code:"4.3",generalId:4,points:2,name:{en:"Materials represent current scholarship and practice.",es:"Los materiales reflejan investigación y práctica actuales."},evidence:{en:"Default resources include Khan Academy (4th grade math), Math Learning Center free apps, and Illustrative Mathematics â actively maintained, authoritative sources.",es:"Los recursos por defecto incluyen Khan Academy (Matemáticas de 4° grado), las aplicaciones gratuitas de Math Learning Center e Illustrative Mathematics: fuentes vigentes y de autoridad."},alignment:"met"},{code:"4.4",generalId:4,points:2,name:{en:"All materials used in the course are appropriately cited.",es:"Todos los materiales del curso están citados apropiadamente."},evidence:{en:"Each external resource (Khan Academy, Math Learning Center, Illustrative Mathematics, CCSS) lists title, URL, and source attribution. The 'Use of AI tools and helpers' policy on the About page tells students to disclose any AI assistance and to cite tools used to check or visualize work.",es:"Cada recurso externo (Khan Academy, Math Learning Center, Illustrative Mathematics, CCSS) lista tÃtulo, URL y fuente. La polÃtica 'Uso de IA y ayudas' en Acerca de exige a las y los estudiantes declarar cualquier asistencia de IA y citar las herramientas que usen para verificar o visualizar."},alignment:"met"},{code:"4.5",generalId:4,points:2,name:{en:"A variety of instructional materials is used in the course.",es:"Se usa una variedad de materiales de instrucción."},evidence:{en:"Lessons combine text, vocabulary cards, curated video/article links, downloadable rubrics, and worked-example walkthroughs.",es:"Las lecciones combinan texto, tarjetas de vocabulario, enlaces a video/artÃculo, rúbricas descargables y ejemplos resueltos paso a paso."},alignment:"met"},{code:"5.1",generalId:5,points:3,name:{en:"Learning activities promote achievement of stated objectives.",es:"Las actividades promueven el logro de los objetivos planteados."},evidence:{en:"Each week pairs short activities with a culminating creative project keyed to that week's 'I canâ¦' statements.",es:"Cada semana combina actividades breves con un proyecto creativo culminante ligado a los 'Puedoâ¦' de la semana."},alignment:"met"},{code:"5.2",generalId:5,points:3,name:{en:"Learning activities provide opportunities for interaction.",es:"Las actividades ofrecen oportunidades de interacción."},evidence:{en:'Learnerâteacher and learnerâfamily interaction run through reflection submissions, inbox feedback, and bilingual parentâteacher messaging. Learnerâlearner interaction is structured by an anonymous peer-critique workflow on designated weeks (weeks marked `peerCritique: true` in `data/lessons.ts`): the student submits a reflection, is paired with an anonymized classmate from the same group, and exchanges a three-prompt critique ("what\'s working / what I wonder / one suggestion in first person") rooted in the netiquette section of the About page.',es:'La interacción estudianteâdocente y estudianteâfamilia se da por reflexiones, retroalimentación en la bandeja y mensajes bilingües docenteâfamilia. La interacción estudianteâestudiante está estructurada por un flujo anónimo de crÃtica entre pares en las semanas designadas (marcadas como `peerCritique: true` en `data/lessons.ts`): el o la estudiante envÃa su reflexión, se le empareja con un/a compañero/a anónimo/a del mismo grupo y se intercambia una crÃtica de tres pasos ("qué funciona / qué me pregunto / una sugerencia en primera persona") basada en la netiqueta de la página Acerca de.'},alignment:"partial",linkedWeeks:[8,17,27,36]},{code:"5.3",generalId:5,points:3,name:{en:"The teacher's plan for responding to learners is clearly stated.",es:"Se enuncia con claridad el plan del docente para responder a las y los estudiantes."},evidence:{en:"About page > 'How we work together > What you can expect from your teacher' renders `schoolInfo.teacherResponsePlan` with explicit turn-around times.",es:"Acerca de > 'Cómo trabajamos juntos > Lo que puedes esperar de tu docente' muestra `schoolInfo.teacherResponsePlan` con tiempos de respuesta explÃcitos."}
363,alignment:"partial",dependsOn:"teacherResponsePlan"},{code:"5.4",generalId:5,points:2,name:{en:"The requirements for learner interaction are clearly stated.",es:"Los requisitos de interacción se enuncian con claridad."},evidence:{en:"About page > 'How we work together > What is expected of you' renders `schoolInfo.interactionExpectations` (inbox frequency, weekly submissions, revising on feedback).",es:"Acerca de > 'Cómo trabajamos juntos > Lo que se espera de ti' muestra `schoolInfo.interactionExpectations` (frecuencia de bandeja, entregas semanales, revisar con la retroalimentación)."},alignment:"partial",dependsOn:"interactionExpectations"},{code:"6.1",generalId:6,points:3,name:{en:"Tools used support the learning objectives.",es:"Las herramientas tecnológicas apoyan los objetivos de aprendizaje."},evidence:{en:"Web app delivers lessons, assessments, rubrics, image uploads, and progress reports â all aligned to course objectives.",es:"La app web entrega lecciones, evaluaciones, rúbricas, subida de imágenes y reportes de progreso, todo alineado a los objetivos."},alignment:"met"},{code:"6.2",generalId:6,points:3,name:{en:"Tools promote learner engagement and active learning.",es:"Las herramientas promueven la participación y el aprendizaje activo."},evidence:{en:"Math-notebook entries, reflections, problem-set submissions, and modeling tasks invite active production rather than passive consumption.",es:"Las entradas del cuaderno de matemáticas, reflexiones, entregas de tareas y proyectos de modelación invitan a producir activamente más que a consumir."},alignment:"met"},{code:"6.3",generalId:6,points:2,name:{en:"A variety of technologies is used.",es:"Se usa una variedad de tecnologÃas."},evidence:{en:"Web platform plus external tools (Khan Academy, Math Learning Center, Illustrative Mathematics) and hands-on manipulatives. Add an explicit tools-by-week summary on About.",es:"Plataforma web más herramientas externas (Khan Academy, Math Learning Center, Illustrative Mathematics) y materiales manipulables. Agregar en Acerca de un resumen explÃcito de herramientas por semana."},alignment:"met"},{code:"6.4",generalId:6,points:1,name:{en:"The course provides learners with information on protecting their data and privacy.",es:"El curso brinda información para proteger los datos y la privacidad del estudiante."},evidence:{en:"About page > 'Privacy' renders `schoolInfo.privacyStatement` (Clerk-managed auth, httpOnly sessions, visibility of submissions to teacher and linked parent).",es:"Acerca de > 'Privacidad' muestra `schoolInfo.privacyStatement` (autenticación con Clerk, sesiones httpOnly, visibilidad de entregas para docente y padre/madre vinculados)."},alignment:"partial",dependsOn:"privacyStatement"},{code:"7.1",generalId:7,points:3,name:{en:"The course instructions explain how to obtain technical support.",es:"Las instrucciones del curso explican cómo obtener soporte técnico."},evidence:{en:"About page > 'Support and help >
363 Technical support' renders `schoolInfo.technicalSupport.description` so learners know how to ask for help when something breaks.",es:"Acerca de > 'Apoyo y ayuda > Soporte técnico' muestra `schoolInfo.technicalSupport.description` para que las y los estudiantes sepan a quién pedir ayuda cuando algo falla."},alignment:"not-met",dependsOn:"technicalSupport"},{code:"7.2",generalId:7,points:3,name:{en:"Course instructions list accessibility policies and services.",es:"Las instrucciones del curso listan polÃticas y servicios de accesibilidad."},evidence:{en:"About page > 'Accessibility' renders `schoolInfo.accessibility.statement` plus the accommodations contact, so accessibility services are listed in the course instructions.",es:"Acerca de > 'Accesibilidad' muestra `schoolInfo.accessibility.statement` y el contacto para adecuaciones, por lo que los servicios de accesibilidad quedan listados en las instrucciones del curso."},alignment:"not-met",dependsOn:"accessibility"},{code:"7.3",generalId:7,points:2,name:{en:"Course instructions describe academic support services available.",es:"Las instrucciones describen los servicios de apoyo académico disponibles."},evidence:{en:"About page > 'Support and help > Academic support' iterates `schoolInfo.academicSupport` (office hours, library, etc.).",es:"Acerca de > 'Apoyo y ayuda > Apoyo académico' itera `schoolInfo.academicSupport` (tutorÃas, biblioteca, etc.)."},alignment:"partial",dependsOn:"academicSupport"},{code:"7.4",generalId:7,points:1,name:{en:"Course instructions describe non-academic student support services.",es:"Las instrucciones describen servicios de apoyo no académicos."},evidence:{en:"About page > 'Support and help > Wellness and family support' iterates `schoolInfo.nonAcademicSupport` (counselor, family liaison).",es:"Acerca de > 'Apoyo y ayuda > Bienestar y apoyo familiar' itera `schoolInfo.nonAcademicSupport` (consejerÃa, enlace con la familia)."},alignment:"not-met",dependsOn:"nonAcademicSupport"},{code:"8.1",generalId:8,points:3,name:{en:"Course employs accessible technologies and provides an accessibility statement.",es:"El curso emplea tecnologÃas accesibles y publica una declaración de accesibilidad."},evidence:{en:"Site is built with semantic HTML and accessible primitives, and About > 'Accessibility' renders the Woodbridge Academy accessibility statement from `schoolInfo.accessibility.statement`.",es:"El sitio usa HTML semántico y primitivas accesibles, y Acerca de > 'Accesibilidad' muestra la declaración de accesibilidad de Woodbridge Academy desde `schoolInfo.accessibility.statement`."},alignment:"partial",dependsOn:"accessibility"},{code:"8.2",generalId:8,points:3,name:{en:"Navigation throughout the course is logical, consistent, and efficient.",es:"La navegación del curso es lógica, consistente y eficiente."},evidence:{en:"Persistent sidebar, breadcrumbs by unit, consistent lesson template, and a top-level menu (Home, Units, About, QM).",es:"Sidebar persistente, navegación por unidades, plantilla consistente de lección y menú superior (Inicio, Unidades, Acerca de, QM)."},alignment:"met"},{code:"8.3",generalId:8,points:3,name:{en:"Course design facilitates readability.",es:"El diseño del curso facilita la legibilidad."},evidence:{en:"Serif headings + sans body, generous spacing, restricted line length, high-contrast palette. Bilingual content keeps each language as a single coherent block.",es:"Encabezados serif + cuerpo sans, espaciado generoso, ancho de lÃnea limitado y paleta de alto contraste. El contenido bilingüe presenta cada idioma como bloque coherente."},alignment:"met"},{code:"8.4",generalId:8,points:2,name:{en:"Multimedia is accessible to all learners.",es:"El contenido multimedia es accesible para todas y todos."},evidence:{en:"Header images include alt text in both languages. When embedding video, ensure captions and transcripts â currently relies on external providers' captions.",es:"Las imágenes de encabezado incluyen texto alternativo en ambos idiomas. Al insertar video, asegurar subtÃtulos y transcripciones; hoy se depende de los proveedores externos."},alignment:"partial"},{code:"8.5",generalId:8,points:2,name:{en:"Vendor accessibility statements are provided for all technologies used.",es:"Se proveen las declaraciones de accesibilidad de cada tecnologÃa usada."},evidence:{en:"About page > 'Accessibility > Accessibility statements from the technologies we use' renders `schoolInfo.vendorAccessibility` as a list of external links.",es:"Acerca de > 'Accesibilidad > Declaraciones de accesibilidad de las tecnologÃas que usamos' muestra `schoolInfo.vendorAccessibility` como una lista de enlaces externos."}
363,alignment:"partial",dependsOn:"vendorAccessibility"}];function oC(){return BL.map(e=>e.code==="5.2"?{...e,alignment:$L()?"met":e.alignment}:e.dependsOn?wL[e.dependsOn]?{...e,alignment:"met"}:{...e,alignment:"not-met",evidence:{en:`Field \`schoolInfo.${e.dependsOn}\` is empty. Fill it in \`artifacts/geo-g10/src/data/schoolInfo.ts\` and the About page will render the corresponding section automatically.`,es:`El campo \`schoolInfo.${e.dependsOn}\` está vacÃo. Complétalo en \`artifacts/geo-g10/src/data/schoolInfo.ts\` y la página Acerca de mostrará la sección correspondiente automáticamente.`}}:e)}function VL(){const e=oC(),t=Hh.map(c=>{const d=e.filter(m=>m.generalId===c.id);return{id:c.id,met:d.filter(m=>m.alignment==="met").length,partial:d.filter(m=>m.alignment==="partial").length,notMet:d.filter(m=>m.alignment==="not-met").length,na:d.filter(m=>m.alignment==="n/a").length,total:d.length}}),r=t.reduce((c,d)=>({met:c.met+d.met,partial:c.partial+d.partial,notMet:c.notMet+d.notMet,na:c.na+d.na,total:c.total+d.total}),{met:0,partial:0,notMet:0,na:0,total:0}),s=e.filter(c=>c.points===3);return{general:t,totals:r,essentialMet:s.filter(c=>c.alignment==="met").length,essentialTotal:s.length}}function WL(e,t){return t==="en"?e==="met"?"Met":e==="partial"?"Partial":e==="not-met"?"Not yet":"N/A":e==="met"?"Cumplido":e==="partial"?"Parcial":e==="not-met"?"Pendiente":"N/A"}function GL(e){switch(e){case"met":return"bg-emerald-100 text-emerald-800 border-emerald-200";case"partial":return"bg-amber-100 text-amber-800 border-amber-200";case"not-met":return"bg-red-100 text-red-800 border-red-200";default:return"bg-secondary text-muted-foreground border-border"}}function KL(e,t){return e===3?t==="en"?"Essential (3 pts)":"Esencial (3 pts)":e===2?t==="en"?"Very important (2 pts)":"Muy importante (2 pts)":t==="en"?"Important (1 pt)":"Importante (1 pt)"}function HL(){const{lang:e}=_e(),t=VL(),r=oC();return o.jsxs("div",{className:"max-w-5xl mx-auto px-6 py-10 space-y-10",children:[o.jsxs("header",{className:"space-y-3",children:[o.jsx("h1",{className:"font-serif text-3xl text-primary",children:e==="en"?"Alignment with the Quality Matters K-12 Rubric":"Alineación con la rúbrica K-12 de Quality Matters"}),o.jsx("p",{className:"text-muted-foreground leading-relaxed",children:e==="en"?o.jsxs(o.Fragment,{children:["This page is informational only. It documents how the Woodbridge Academy Grade 4 Mathematics course self-assesses against the"," ",o.jsx("em",{children:H1})," rubric published by"," ",o.jsx("a",{href:K1,target:"_blank",rel:"noopener noreferrer",className:"text-primary underline",children:"Quality Matters"}),". Standard names are short paraphrases for documentation; the official annotations are copyrighted by MarylandOnline / Quality Matters and the canonical text lives at the link above."]}):o.jsxs(o.Fragment,{children:["Esta página es solo informativa. Documenta cómo el curso de Matemáticas de 4.º grado de Woodbridge Academy se autoevalúa frente a la rúbrica ",o.jsx("em",{children:H1})," publicada por"," ",o.jsx("a",{href:K1,target:"_blank",rel:"noopener noreferrer",className:"text-primary underline",children:"Quality Matters"}),". Los nombres son paráfrasis breves con fines documentales; las anotaciones oficiales están protegidas por MarylandOnline / Quality Matters y el texto canónico vive en el enlace anterior."]})})]}),o.jsxs("section",{className:"space-y-4",children:[o.jsx("h2",{className:"font-serif text-2xl text-primary",children:e==="en"?"Overall self-assessment":"Autoevaluación general"}),o.jsxs("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4",children:[o.jsxs("div",{className:"rounded-md border border-border p-4",children:[o.jsx("div",{className:"text-xs uppercase text-muted-foreground tracking-wide",children:e==="en"?"Essential standards met":"Estándares esenciales cumplidos"}),o.jsxs("div",{className:"mt-1 text-2xl font-serif text-primary",children:[t.essentialMet," / ",t.essentialTotal]}),o.jsx("div",{className:"text-xs text-muted-foreground mt-1",children:e==="en"?"Required for QM certification":"Requeridos para certificación QM"})]}),o.jsxs("div",{className:"rounded-md border border-emerald-200 bg-emerald-50/50 p-4",children:[o.jsx("div",{className:"text-xs uppercase text-emerald-800 tracking-wide",children:e==="en"?"Met":"Cumplidos"}),o.jsxs("div",{className:"mt-1 text-2xl font-serif text-emerald-800",children:[t.totals.met," / ",t.totals.total]})]}),o.jsxs("div",{className:"rounded-md border border-amber-200 bg-amber-50/50 p-4",children:[o.jsx("div",{className:"text-xs uppercase text-amber-800 tracking-wide",children:e==="en"?"Partial":"Parciales"}),o.jsx("div",{className:"mt-1 text-2xl font-serif text-amber-800",children:t.totals.partial})]}),o.jsxs("div",{className:"rounded-md border border-red-200 bg-red-50/50 p-4",children:[o.jsx("div",{className:"text-xs uppercase text-red-800 tracking-wide",children:e==="en"?"Not yet":"Pendientes"}),o.jsx("div",{className:"mt-1 text-2xl font-serif text-red-800",children:t.totals.notMet})]})]})]}),o.jsxs("section",{className:"space-y-3",children:[o.jsx("h2",{className:"font-serif text-2xl text-primary",children:e==="en"?"The 8 General Standards":"Los 8 estándares generales"}),o.jsx("ul",{className:"space-y-2",children:Hh.map(s=>{const c=t.general.find(d=>d.id===s.id);return o.jsxs("li",{className:"flex flex-col gap-1 border-b border-border py-2 last:border-b-0",children:[o.jsxs("div",{className:"flex items-baseline justify-between gap-3",children:[o.jsx("span",{className:"font-semibold text-primary",children:e==="en"?`Standard ${s.id}: ${s.name.en}`:`Estándar ${s.id}: ${s.name.es}`}),o.jsxs("span",{className:"text-xs text-muted-foreground whitespace-nowrap",children:[c.met,"/",c.total," ",e==="en"?"met":"cumplidos",c.partial>0&&` · ${c.partial} ${e==="en"?"partial":"parciales"}`,c.notMet>0&&` · ${c.notMet} ${e==="en"?"not yet":"pendientes"}`]})]}
363),o.jsx("p",{className:"text-sm text-foreground/80",children:e==="en"?s.intent.en:s.intent.es})]},s.id)})})]}),o.jsxs("section",{className:"space-y-6",children:[o.jsx("h2",{className:"font-serif text-2xl text-primary",children:e==="en"?"Specific Review Standards â alignment evidence":"Estándares especÃficos â evidencia de alineación"}),Hh.map(s=>{const c=r.filter(d=>d.generalId===s.id);return o.jsxs("div",{className:"space-y-2",children:[o.jsx("h3",{className:"font-serif text-xl text-primary",children:e==="en"?`Standard ${s.id}: ${s.name.en}`:`Estándar ${s.id}: ${s.name.es}`}),o.jsx("div",{className:"overflow-x-auto border border-border rounded-md",children:o.jsxs("table",{className:"w-full text-sm",children:[o.jsx("thead",{className:"bg-secondary/30 text-left",children:o.jsxs("tr",{children:[o.jsx("th",{className:"px-3 py-2 font-semibold w-16",children:e==="en"?"Code":"Código"}),o.jsx("th",{className:"px-3 py-2 font-semibold",children:e==="en"?"Specific Review Standard":"Estándar especÃfico"}),o.jsx("th",{className:"px-3 py-2 font-semibold w-36",children:e==="en"?"Weight":"Peso"}),o.jsx("th",{className:"px-3 py-2 font-semibold",children:e==="en"?"Evidence in this course":"Evidencia en este curso"}),o.jsx("th",{className:"px-3 py-2 font-semibold w-28",children:e==="en"?"Status":"Estado"})]})}),o.jsx("tbody",{children:c.map(d=>o.jsxs("tr",{className:"border-t border-border align-top hover:bg-secondary/10",children:[o.jsx("td",{className:"px-3 py-3 font-medium",children:d.code}),o.jsx("td",{className:"px-3 py-3",children:e==="en"?d.name.en:d.name.es}),o.jsx("td",{className:"px-3 py-3 text-xs text-muted-foreground whitespace-nowrap",children:KL(d.points,e)}),o.jsxs("td",{className:"px-3 py-3",children:[o.jsx("p",{children:e==="en"?d.evidence.en:d.evidence.es}),d.linkedWeeks&&d.linkedWeeks.length>0&&o.jsxs("p",{className:"mt-1 text-xs text-muted-foreground",children:[e==="en"?"See: ":"Ver: ",d.linkedWeeks.map((m,h)=>{const f=ra.find(y=>y.week===m);return o.jsxs("span",{children:[h>0&&", ",f?o.jsx(Te,{href:`/lesson/${m}`,className:"text-primary hover:underline",children:e==="en"?`Week ${m}`:`Semana ${m}`}):o.jsx("span",{children:e==="en"?`Week ${m}`:`Semana ${m}`})]},m)})]})]}),o.jsx("td",{className:"px-3 py-3 whitespace-nowrap",children:o.jsx("span",{className:`inline-block text-xs font-semibold px-2 py-1 rounded border ${GL(d.alignment)}`,children:WL(d.alignment,e)})})]},d.code))})]})})]},s.id)}),o.jsx("p",{className:"text-xs text-muted-foreground",children:e==="en"?"Status is a self-assessment, not a Quality Matters certification. Formal certification requires an official QM-managed review.":"El estado es una autoevaluación, no una certificación de Quality Matters. La certificación formal requiere una revisión oficial gestionada por QM."})]})]})}const kt=S.forwardRef(({className:e,...t},r)=>o.jsx("div",{ref:r,className:Ye("rounded-xl border bg-card text-card-foreground shadow",e),...t}));kt.displayName="Card";const Wc=S.forwardRef(({className:e,...t},r)=>o.jsx("div",{ref:r,className:Ye("flex flex-col space-y-1.5 p-6",e),...t}));Wc.displayName="CardHeader";const Gc=S.forwardRef(({className:e,...t},r)=>o.jsx("div",{ref:r,className:Ye("font-semibold leading-none tracking-tight",e),...t}));Gc.displayName="CardTitle";const Kc=S.forwardRef(({className:e,...t},r)=>o.jsx("div",{ref:r,className:Ye("text-sm text-muted-foreground",e),...t}));Kc.displayName="CardDescription";const Hc=S.forwardRef(({className:e,...t},r)=>o.jsx("div",{ref:r,className:Ye("p-6 pt-0",e),...t}));Hc.displayName="CardContent";const QL=S.forwardRef(({className:e,...t},r)=>o.jsx("div",{ref:r,className:Ye("flex items-center p-6 pt-0",e),...t}));QL.displayName="CardFooter";function YL(){const{lang:e}=_e(),t=Ut(),{data:r,isLoading:s}=ff({query:{queryKey:Io()}}),c=aT(),d=iT(),m=dT(),[h,f]=_.useState(""),[y,b]=_.useState(24),[v,x]=_.useState(null),[k,E]=_.useState(""),[C,N]=_.useState(24),[q,R]=_.useState(null),I=()=>{t.invalidateQueries({queryKey:Io()}),t.invalidateQueries({queryKey:Td()})},$=async D=>{if(D.preventDefault(),R(null),!!h.trim())try{const ee=Math.max(1,Math.min(60,Math.round(y||24)));await c.mutateAsync({data:{name:h.trim(),weekCount:ee}}),f(""),b(24),I()}catch{R(e==="en"?"Could not create group.":"No se pudo crear el grupo.")}},z=(D,ee,ne)=>{x(D),E(ee),N(ne)},G=async D=>{if(k.trim())try{const ee=Math.max(1,Math.min(60,Math.round(C||24)));await d.mutateAsync({id:D,data:{name:k.trim(),weekCount:ee}}),x(null),I()}catch{R(e==="en"?"Could not save group.":"No se pudo guardar el grupo.")}},L=async(D,ee,ne)=>{if(ne>0){window.alert(e==="en"?`Group "${ee}" has ${ne} student(s). Move them to another group before deleting.`:`El grupo "${ee}" tiene ${ne} estudiante(s). Muévelos a otro grupo antes de eliminarlo.`);return}if(window.confirm(e==="en"?`Delete group "${ee}"?`:`¿Eliminar el grupo "${ee}"?`))try{await m.mutateAsync({id:D}),I()}catch{R(e==="en"?"Could not delete group.":"No se pudo eliminar el grupo.")}};return o.jsxs(kt,{className:"p-5 mb-8",children:[o.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[o.jsx(EM,{className:"h-5 w-5 text-accent"}),o.jsx("h2",{className:"font-serif text-xl text-primary",children:e==="en"?"My groups":"Mis grupos"})]}),o.jsx("p",{className:"text-sm text-muted-foreground mb-4",children:e==="en"?"Organize students into groups (for example: 10th Grade A, 10th Grade B). Each student invitation belongs to one group.":"Organiza a tus estudiantes en grupos (por ejemplo: 10.º A, 10.º B). Cada invitación de estudiante pertenece a un grupo."}),o.jsxs("form",{onSubmit:$,className:"flex flex-col sm:flex-row gap-2 mb-3",children:[o.jsx("input",{type:"text",value:h,onChange:D=>f(D.target.value),placeholder:e==="en"?"New group name":"Nombre del nuevo grupo",className:"flex-1 p-2 rounded-lg border border-border bg-background focus:ring-2 focus:ring-primary/20 focus:border-primary"}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx("label",{className:"text-xs uppercase tracking-wider text-muted-foreground whitespace-nowrap",children:e==="en"?"Weeks":"Semanas"}),o.jsx("input",{type:"number",min:1,max:60,value:y,onChange:D=>b(Number(D.target.value)),className:"w-20 p-2 rounded-lg border border-border bg-background text-center",title:e==="en"?"Course length in weeks":"Duración del curso en semanas"})]}),o.jsxs(ue,{type:"submit",disabled:!h.trim()||c.isPending,className:"gap-1",children:[o.jsx(x2,{className:"h-4 w-4"}),e==="en"?"Create":"Crear"]})]}),q&&o.jsx("p",{className:"text-sm text-red-600 mb-2",children:q}),s?o.jsx("p",{className:"text-sm text-muted-foreground",children:e==="en"?"Loadingâ¦":"Cargandoâ¦"}):!r||r.length===0?o.jsx("p",{className:"text-sm text-muted-foreground",children:e==="en"?"No groups yet. Create your first one above.":"Aún no hay grupos. Crea el primero arriba."}):o.jsx("ul",{className:"divide-y divide-border border border-border rounded-lg",children:r.map(D=>o.jsx("li",{className:"flex items-center justify-between gap-3 px-3 py-2 text-sm",children:v===D.id?o.jsxs(o.Fragment,{children:[o.jsx("input",{value:k,onChange:ee=>E(ee.target.value),className:"flex-1 p-1.5 rounded border border-border bg-background",autoF
363ocus:!0}),o.jsx("input",{type:"number",min:1,max:60,value:C,onChange:ee=>N(Number(ee.target.value)),className:"w-20 p-1.5 rounded border border-border bg-background text-center",title:e==="en"?"Weeks":"Semanas"}),o.jsx(ue,{size:"sm",variant:"ghost",onClick:()=>G(D.id),disabled:!k.trim(),children:o.jsx(pi,{className:"h-4 w-4"})}),o.jsx(ue,{size:"sm",variant:"ghost",onClick:()=>x(null),children:o.jsx(rs,{className:"h-4 w-4"})})]}):o.jsxs(o.Fragment,{children:[o.jsxs("div",{className:"min-w-0 flex-1",children:[o.jsx("div",{className:"font-medium text-foreground truncate",children:D.name}),o.jsxs("div",{className:"text-xs text-muted-foreground",children:[D.studentCount??0," ",e==="en"?"student(s)":"estudiante(s)"," · ",D.weekCount," ",e==="en"?"weeks":"semanas",D.ownerName?` · ${e==="en"?"owned by":"responsable"} ${D.ownerName}`:""]})]}),o.jsx(ue,{size:"sm",variant:"ghost",onClick:()=>z(D.id,D.name,D.weekCount),title:e==="en"?"Edit":"Editar",children:o.jsx(rP,{className:"h-4 w-4"})}),o.jsx(ue,{size:"sm",variant:"ghost",onClick:()=>L(D.id,D.name,D.studentCount??0),title:e==="en"?"Delete":"Eliminar",children:o.jsx(vf,{className:"h-4 w-4 text-red-600"})})]})},D.id))})]})}function XL(){const{lang:e}=_e(),t=Ut(),{data:r}=ff({query:{queryKey:Io()}}),{data:s,isLoading:c}=hT({query:{queryKey:hh()}}),d=bT(),{data:m,isLoading:h}=kT({query:{queryKey:_c()}}),f=AT(),y=TT(),[b,v]=_.useState(""),[x,k]=_.useState(""),[E,C]=_.useState(null),[N,q]=_.useState(null),[R,I]=_.useState(null);_.useEffect(()=>{!x&&r&&r.length>0&&k(r[0].id)},[r,x]);const $=async L=>{L.preventDefault(),q(null),I(null);const D=b.trim();if(!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(D)){q(e==="en"?"Please enter a valid email.":"Ingresa un correo válido.");return}if(!x){q(e==="en"?"Please pick a group.":"Selecciona un grupo.");return}try{await d.mutateAsync({data:{email:D,groupId:x}}),I(e==="en"?`Invitation sent to ${D}.`:`Invitación enviada a ${D}.`),v(""),t.invalidateQueries({queryKey:hh()})}catch{q(e==="en"?"We couldn't send the invitation. Please try again.":"No pudimos enviar la invitación. Intenta de nuevo.")}},z=async()=>{if(x){q(null),I(null);try{const L=await f.mutateAsync({data:{groupId:x}});await navigator.clipboard.writeText(L.url),I(e==="en"?"Link created and copied.":"Enlace creado y copiado."),t.invalidateQueries({queryKey:_c()})}catch{q(e==="en"?"We couldn't create the link.":"No pudimos crear el enlace.")}}},G=async L=>{q(null),I(null);try{await y.mutateAsync({id:L}),C(null),I(e==="en"?"Link revoked.":"Enlace revocado."),t.invalidateQueries({queryKey:_c()})}catch{q(e==="en"?"We couldn't revoke the link.":"No pudimos revocar el enlace.")}};return o.jsxs(kt,{className:"p-5 mb-8",children:[o.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[o.jsx(yr,{className:"h-5 w-5 text-accent"}),o.jsx("h2",{className:"font-serif text-xl text-primary",children:e==="en"?"Invite a student":"Invitar a un estudiante"})]}),o.jsx("p",{className:"text-sm text-muted-foreground mb-4",children:e==="en"?"Create an optional shareable group link or send an invitation by email.":"Crea un enlace opcional para compartir con el grupo o envÃa una invitación por correo."}),!r||r.length===0?o.jsx("p",{className:"text-sm text-amber-700 bg-amber-50 border border-amber-200 rounded-md px-3 py-2",children:e==="en"?"Create at least one group above before inviting students.":"Crea al menos un grupo arriba antes de invitar estudiantes."}):o.jsxs(o.Fragment,{children:[o.jsxs("div",{className:"rounded-lg border border-border p-4 mb-5",children:[o.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[o.jsx(DM,{className:"h-4 w-4 text-accent"}),o.jsx("h3",{className:"font-semibold",children:e==="en"?"Group invitation links":"Enlaces de invitación al grupo"})]}),o.jsx("p",{className:"text-xs text-muted-foreground mb-3",children:e==="en"?"Links expire automatically after 90 days. Creating one is optional.":"Los enlaces vencen automáticamente después de 90 dÃas. Crear uno es opcional."}),o.jsxs("div",{className:"flex flex-col sm:flex-row gap-2 mb-4",children:[o.jsx("select",{value:x,onChange:L=>k(L.target.value),className:"flex-1 p-2 rounded-lg border border-border bg-background",children:r.map(L=>o.jsx("option",{value:L.id,children:L.name},L.id))}),o.jsx(ue,{type:"button",onClick:z,disabled:f.isPending,children:f.isPending?e==="en"?"Creatingâ¦":"Creandoâ¦":e==="en"?"Create and copy link":"Crear y copiar enlace"})]}),h?o.jsx("p",{className:"text-sm text-muted-foreground",children:e==="en"?"Loadingâ¦":"Cargandoâ¦"}):m?.length?o.jsx("ul",{className:"space-y-2",children:m.map(L=>o.jsxs("li",{className:"rounded-md border border-border p-3",children:[o.jsxs("div",{className:"flex items-center justify-between gap-3",children:[o.jsxs("div",{className:"min-w-0",children:[o.jsx("p",{className:"font-medium text-sm",children:L.groupName}),o.jsxs("p",{className:"text-xs text-muted-foreground truncate",children:[e==="en"?"Expires":"Vence",": ",new Date(L.expiresAt).toLocaleDateString()]})]}),o.jsxs("div",{className:"flex gap-2",children:[o.jsxs(ue,{type:"button",size:"sm",variant:"outline",onClick:()=>navigator.clipboard.writeText(L.url),children:[o.jsx(y2,{className:"h-3.5 w-3.5 mr-1"}),e==="en"?"Copy":"Copiar"]}),o.jsxs(ue,{type:"button",size:"sm",variant:"outline",onClick:()=>C(L.id),children:[o.jsx(vf,{className:"h-3.5 w-3.5 mr-1"}),e==="en"?"Revoke":"Revocar"]})]})]}),E===L.id&&o.jsxs("div",{className:"mt-3 rounded-md bg-amber-50 border border-amber-200 p-3",children:[o.jsx("p",{className:"text-sm font-medium text-amber-900 mb
363-2",children:e==="en"?"Are you sure you want to delete the link?":"¿Estás seguro de eliminar el enlace?"}),o.jsxs("div",{className:"flex gap-2",children:[o.jsx(ue,{type:"button",size:"sm",onClick:()=>G(L.id),disabled:y.isPending,children:e==="en"?"Yes":"SÃ"}),o.jsx(ue,{type:"button",size:"sm",variant:"outline",onClick:()=>C(null),children:"No"})]})]})]},L.id))}):o.jsx("p",{className:"text-sm text-muted-foreground",children:e==="en"?"No active links.":"No hay enlaces activos."})]}),o.jsxs("form",{onSubmit:$,className:"flex flex-col sm:flex-row gap-2 mb-3",children:[o.jsx("input",{type:"email",value:b,onChange:L=>v(L.target.value),placeholder:e==="en"?"[email protected]":"[email protected]",className:"flex-1 p-2 rounded-lg border border-border bg-background focus:ring-2 focus:ring-primary/20 focus:border-primary"}),o.jsx("select",{value:x,onChange:L=>k(L.target.value),className:"p-2 rounded-lg border border-border bg-background focus:ring-2 focus:ring-primary/20 focus:border-primary",children:r.map(L=>o.jsx("option",{value:L.id,children:L.name},L.id))}),o.jsx(ue,{type:"submit",disabled:!b.trim()||!x||d.isPending,children:d.isPending?e==="en"?"Sendingâ¦":"Enviandoâ¦":e==="en"?"Send invite":"Enviar invitación"})]})]}),N&&o.jsx("p",{className:"text-sm text-red-600 mb-2",children:N}),R&&o.jsx("p",{className:"text-sm text-green-700 mb-2",children:R}),o.jsxs("div",{className:"mt-4",children:[o.jsx("h3",{className:"text-xs uppercase tracking-wider text-muted-foreground mb-2",children:e==="en"?"Recent student invitations":"Invitaciones recientes de estudiantes"}),c?o.jsx("p",{className:"text-sm text-muted-foreground",children:e==="en"?"Loadingâ¦":"Cargandoâ¦"}):!s||s.length===0?o.jsx("p",{className:"text-sm text-muted-foreground",children:e==="en"?"No invitations yet.":"Aún no hay invitaciones."}):o.jsx("ul",{className:"divide-y divide-border border border-border rounded-lg",children:s.slice(0,15).map(L=>{const D=new Date(L.expiresAt).getTime()<Date.now(),ee=!!L.acceptedAt;return o.jsxs("li",{className:"flex items-center justify-between gap-3 px-3 py-2 text-sm",children:[o.jsxs("div",{className:"min-w-0",children:[o.jsx("div",{className:"truncate text-foreground",children:L.email}),o.jsx("div",{className:"text-xs text-muted-foreground",children:L.groupName??L.groupId})]}),ee?o.jsxs("span",{className:"inline-flex items-center gap-1 text-green-700 text-xs",children:[o.jsx(pi,{className:"h-3.5 w-3.5"}),e==="en"?"Accepted":"Aceptada"]}):D?o.jsx("span",{className:"text-xs text-muted-foreground",children:e==="en"?"Expired":"Vencida"}):o.jsxs("span",{className:"inline-flex items-center gap-1 text-amber-700 text-xs",children:[o.jsx(yf,{className:"h-3.5 w-3.5"}),e==="en"?"Pending":"Pendiente"]})]},L.id)})})]})]})}function ZL({isAdmin:e,onClose:t}){const{lang:r}=_e(),s=Ut(),c=GT(),[d,m]=_.useState("my_students"),[h,f]=_.useState(""),[y,b]=_.useState(""),[v,x]=_.useState(null),[k,E]=_.useState(null),C=async q=>{if(q.preventDefault(),x(null),E(null),!(!h.trim()||!y.trim()))try{const R=await c.mutateAsync({data:{audience:d,subject:h.trim(),body:y.trim()}});E({count:R.recipientCount,emailed:R.emailedCount??0}),f(""),b(""),s.invalidateQueries({queryKey:Jc()})}catch(R){const I=R?.data?.error??R?.response?.data?.error;x(I==="No recipients in this audience"?r==="en"?"No recipients in this audience.":"No hay destinatarios en este público.":r==="en"?"We couldn't send the message. Please try again.":"No pudimos enviar el mensaje. Intenta de nuevo.")}},N=[{value:"my_students",label:{en:"My students",es:"Mis estudiantes"}},{value:"my_parents",label:{en:"My parents",es:"Mis padres"}},{value:"all_students",label:{en:"All students (course-wide)",es:"Todos los estudiantes (todo el curso)"},adminOnly:!0},{value:"all_parents",label:{en:"All parents (course-wide)",es:"Todos los padres (todo el curso)"},adminOnly:!0},{value:"all",label:{en:"Everyone (course-wide)",es:"Todos (todo el curso)"},adminOnly:!0}];return o.jsx("div",{className:"fixed inset-0 z-50 bg-black/50 flex items-start justify-center overflow-y-auto p-4 pt-12",children:o.jsxs("div",{className:"bg-card border border-border rounded-2xl max-w-xl w-full p-6 shadow-2xl",children:[o.jsxs("div",{className:"flex items-center justify-between mb-4",children:[o.jsx("h3",{className:"font-serif text-2xl text-primary",children:r==="en"?"Compose message":"Redactar mensaje"}),o.jsx(ue,{variant:"ghost",size:"sm",onClick:t,children:o.jsx(rs,{className:"h-4 w-4"})})]}),o.jsxs("form",{onSubmit:C,className:"space-y-4",children:[o.jsxs("div",{children:[o.jsx("label",{className:"block text-sm font-medium text-foreground mb-1",children:r==="en"?"Audience":"Público"}),o.jsx("select",{value:d,onChange:q=>m(q.target.value),className:"w-full p-2 rounded-lg border border-border bg-background focus:ring-2 focus:ring-primary/20 focus:border-primary",children:N.filter(q=>!q.adminOnly||e).map(q=>o.jsx("option",{value:q.value,children:r==="en"?q.label.en:q.label.es},q.value))})]}),o.jsxs("div",{children:[o.jsx("label",{className:"block text-sm font-medium text-foreground mb-1",children:r==="en"?"Subject":"Asunto"}),o.jsx("input",{type:"text",value:h,onChange:q=>f(q.target.value),maxLength:200,className:"w-full p-2 rounded-lg border border-border bg-background focus:ring-2 focus:ring-primary/20 focus:border-primary"})]}),o.jsxs("div",{children:[o.jsx("label",{className:"block text-sm font-medium text-foreground mb-1",children:r==="en"?"Message":"Mensaje"}),o.jsx("textarea",{value:y,onChange:q=>b(q.target.value),rows:8,maxLength:5e3,className:"w-full p-2 rounded-lg border border-border bg-background focus:ring-2 focus:ring-primary/20 focus:border-primary resize-y"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:r==="en"?"Recipients will get this in their app inbox and an email copy.":"Los destinatarios lo recibirán en su bandeja de entrada y por correo."})]}),v&&o.jsx("p",{className:"text-sm text-red-600",children:v}),k&&o.jsx("p",{className:"text-sm text-green-700",children:r==="en"?`Sent to ${k.count} recipient(s). ${k.emailed} email copy(ies) are being delivered in the background.`:`Enviado a ${k.count} destinatario(s). ${k.emailed} copia(s) por correo se están entregando en segundo plano.`}),o.jsxs("div",{className:"flex justify-end gap-2 pt-2",children:[o.jsx(ue,{type:"button",variant:"ghost",onClick:t,children:r==="en"?"Close"
363:"Cerrar"}),o.jsxs(ue,{type:"submit",disabled:!h.trim()||!y.trim()||c.isPending,className:"gap-2",children:[o.jsx(ii,{className:"h-4 w-4"}),c.isPending?r==="en"?"Sendingâ¦":"Enviandoâ¦":r==="en"?"Send":"Enviar"]})]})]})]})})}const JL={not_started:{es:"No iniciado",en:"Not started"},pending:{es:"Pendiente: faltan entregables",en:"Pending: missing deliverables"},pending_review:{es:"Pendiente de revisión",en:"Pending review"},needs_improvement:{es:"Necesita mejorar",en:"Needs improvement"},approved:{es:"Aprobado",en:"Approved"}},ez={not_submitted:{es:"Falta entregar",en:"Missing"},pending_review:{es:"Pendiente de revisión",en:"Pending review"},accepted:{es:"Presentado y aceptado",en:"Submitted and accepted"},needs_improvement:{es:"Necesita mejorar",en:"Needs improvement"}};function lC({report:e,studentUserId:t}){const{lang:r}=_e(),s=(G,L)=>r==="es"?G:L,c=s("No registrado","Not recorded"),[d,m]=S.useState(""),[h,f]=S.useState(!1),[y,b]=S.useState(null),[v,x]=S.useState(null),k=t?`/api/teacher/students/${encodeURIComponent(t)}`:null,E=k?`${k}/progress-report.pdf`:"/api/student/profile/report.pdf",C=k?`${k}/academic-report-email`:"/api/student/profile/report-email",N=G=>G==null?c:String(G),q=G=>G==null?c:`${G.toFixed(2)} %`,R=G=>G?new Date(G).toLocaleString(r==="es"?"es-GT":"en-US",{dateStyle:"medium",timeStyle:"short"}):c,I=[...new Set(e.rows.map(G=>G.unitId))],$=async()=>{b("download"),x(null);try{const G=await je(E,{responseType:"blob"}),L=URL.createObjectURL(G),D=document.createElement("a");D.href=L,D.download="reporte-academico.pdf",D.click(),window.setTimeout(()=>URL.revokeObjectURL(L),1e3),x({error:!1,text:s("PDF descargado. Puedes abrirlo e imprimirlo en tamaño Carta.","PDF downloaded. Open it to print on Letter paper.")})}catch(G){x({error:!0,text:`${s("No se pudo descargar el PDF.","The PDF could not be downloaded.")} ${G instanceof Error?G.message:""}`})}finally{b(null)}},z=async G=>{if(G.preventDefault(),!h||y)return;const L=d.trim();if(window.confirm(s(`¿Compartir el PDF académico de ${e.student.displayName||"este estudiante"} con ${L}? Incluye identificación disponible, calificaciones, asistencia y comentarios docentes.`,`Share the academic PDF for ${e.student.displayName||"this student"} with ${L}? It includes available identification, grades, attendance, and teacher comments.`))){b("share"),x(null);try{const D=await je(C,{method:"POST",body:JSON.stringify({to:L,confirmed:!0}),responseType:"json"});if(!D.accepted)throw new Error(s("El servicio no confirmó el envÃo.","The service did not confirm acceptance."));x({error:!1,text:s(`El servicio de correo aceptó el reporte para ${D.to}. La recepción en el buzón no está confirmada.`,`The mail service accepted the report for ${D.to}. Mailbox receipt is not confirmed.`)}),f(!1)}catch(D){x({error:!0,text:`${s("No se confirmó el envÃo. Revisa el destinatario; el lÃmite es 5 intentos por hora.","Sending was not confirmed. Check the recipient; the limit is 5 attempts per hour.")} ${D instanceof Error?D.message:""}`})}finally{b(null)}}};return o.jsxs("section",{className:"space-y-5","data-testid":"academic-report",children:[o.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-3",children:[o.jsxs("div",{children:[o.jsx("h2",{className:"font-serif text-2xl text-primary",children:s("Reporte académico completo","Complete academic report")}),o.jsxs("p",{className:"text-sm text-muted-foreground",children:["Woodbridge Academy · ",s("Matemáticas â 4.º grado","Mathematics â Grade 4")]})]}),o.jsxs(ue,{onClick:$,disabled:!!y,variant:"outline",className:"gap-2","data-testid":"download-academic-report",children:[o.jsx(b2,{className:"h-4 w-4"}),y==="download"?s("Generandoâ¦","Generatingâ¦"):s("Descargar PDF","Download PDF")]})]}),o.jsxs("dl",{className:"grid gap-3 rounded-xl border border-border bg-card p-4 text-sm sm:grid-cols-2",children:[o.jsxs("div",{children:[o.jsx("dt",{className:"text-muted-foreground",children:s("Estudiante","Student")}),o.jsx("dd",{children:e.student.displayName||c})]}),o.jsxs("div",{children:[o.jsx("dt",{className:"text-muted-foreground",children:s("Docente","Teacher")}),o.jsx("dd",{children:e.student.teacherName||c})]}),o.jsxs("div",{children:[o.jsx("dt",{className:"text-muted-foreground",children:s("Año escolar","School year")}),o.jsx("dd",{children:e.metadata.schoolYear||c})]}),o.jsxs("div",{children:[o.jsx("dt",{className:"text-muted-foreground",children:s("PerÃodo","Report period")}),o.jsx("dd",{children:e.metadata.reportPeriod||c})]}),o.jsxs("div",{children:[o.jsx("dt",{className:"text-muted-foreground",children:s("Cr
363éditos","Credits")}),o.jsx("dd",{children:N(e.metadata.credits)})]}),o.jsxs("div",{children:[o.jsx("dt",{className:"text-muted-foreground",children:s("Asistencia: presentes / total","Attendance: present / total")}),o.jsxs("dd",{children:[N(e.metadata.attendancePresent)," / ",N(e.metadata.attendanceTotal)]})]})]}),o.jsxs("div",{className:"grid gap-3 sm:grid-cols-3",children:[o.jsxs("div",{className:"rounded-xl border border-border bg-card p-4",children:[o.jsx("p",{className:"text-sm text-muted-foreground",children:s("Promedio de calificaciones","Grade average")}),o.jsx("p",{className:"mt-1 text-xl font-semibold",children:q(e.averagePercent)}),o.jsx("p",{className:"mt-1 text-xs text-muted-foreground",children:s("Solo notas registradas; las provisionales esperan revisión.","Recorded grades only; provisional grades await review.")})]}),o.jsxs("div",{className:"rounded-xl border border-border bg-card p-4",children:[o.jsx("p",{className:"text-sm text-muted-foreground",children:s("Porcentaje del curso aprobado","Course approval percentage")}),o.jsx("p",{className:"mt-1 text-xl font-semibold",children:q(e.approvedPercent)}),o.jsxs("p",{className:"mt-1 text-xs text-muted-foreground",children:[e.approvedCount," / ",e.totalWeeks," ",s("semanas aprobadas","approved weeks")]})]}),o.jsxs("div",{className:"rounded-xl border border-border bg-card p-4",children:[o.jsx("p",{className:"text-sm text-muted-foreground",children:s("TodavÃa no aprobado","N
363ot yet approved")}),o.jsxs("p",{className:"mt-1 text-xl font-semibold",children:[e.notApprovedCount," / ",e.totalWeeks]}),o.jsx("p",{className:"mt-1 text-xs text-muted-foreground",children:s("Incluye trabajo faltante, en revisión o que necesita mejorar; no implica reprobación automática.","Includes missing work, pending review, or work needing improvement; it does not mean automatic failure.")})]})]}),o.jsxs("p",{className:"text-sm text-muted-foreground",children:[s(`Aprobación por semana: nota exacta â¥${e.passingPercent} %, tres entregables y revisiones requeridas aceptadas. Los porcentajes mostrados se redondean solo para presentación.`,`Weekly approval: exact grade â¥${e.passingPercent}%, all three deliverables, and accepted required reviews. Displayed percentages are rounded only for presentation.`)," ",s("Escala: A â¥90 %, B â¥80 %, C â¥70 %, D â¥60 %, F <60 %.","Scale: A â¥90%, B â¥80%, C â¥70%, D â¥60%, F <60%.")]}),e.generalFeedback&&o.jsxs("div",{className:"rounded-xl bg-blue-50 p-4 text-sm",children:[o.jsx("h3",{className:"font-semibold",children:s("Comentario general del docente","General teacher comment")}),o.jsx("p",{className:"mt-1 whitespace-pre-wrap break-words",children:e.generalFeedback})]}),!t&&o.jsx(Te,{href:"/my-progress",className:"inline-block text-sm text-blue-700 underline",children:s("Ver historial detallado de intentos y respuestas","View detailed attempts and answers")}),o.jsx("div",{className:"space-y-4",children:I.map((G,L)=>{const D=e.rows.filter(ee=>ee.unitId===G);return o.jsxs("details",{open:L===0,className:"rounded-xl border border-border bg-card",children:[o.jsxs("summary",{className:"cursor-pointer px-4 py-3 font-semibold text-primary",children:[s("Unidad","Unit")," ",G,": ",D[0]?.unitTitle[r]," · ",D.length," ",s("semanas","weeks")]}),o.jsx("div",{className:"space-y-4 px-4 pb-4",children:D.map(ee=>o.jsxs("article",{className:"rounded-lg border border-border p-3 text-sm","data-testid":`academic-week-${ee.week}`,children:[o.jsxs("div",{className:"flex flex-wrap items-start justify-between gap-2",children:[o.jsxs("h4",{className:"font-semibold",children:[s("Semana","Week")," ",ee.week,": ",ee.lessonTitle[r]]}),o.jsx("span",{className:ee.status==="approved"?"font-semibold text-green-700":"font-semibold text-amber-800",children:JL[ee.status][r]})]}),o.jsxs("p",{className:"mt-1",children:[s("Nota","Grade"),": ",ee.score==null?c:`${ee.score} / ${ee.total??"â"}`," · ",q(ee.pct)," · ",ee.letterGrade??c,ee.provisional&&o.jsx("strong",{className:"ml-2 text-amber-800",children:s("Provisional","Provisional")})]}),o.jsx("p",{className:"mt-2 font-medium",children:ee.taskTitle[r]}),o.jsx("p",{className:"whitespace-pre-wrap break-words text-muted-foreground",children:ee.expectedProduct[r]}),o.jsx("ul",{className:"mt-3 space-y-1",children:ee.deliverables.map(ne=>o.jsxs("li",{className:"flex flex-wrap justify-between gap-x-4 gap-y-1 border-t border-border py-2",children:[o.jsxs("span",{children:[ne.title[r]," · ",s("Obligatorio","Required")]}),o.jsxs("span",{className:ne.reviewStatus==="accepted"?"text-green-700":"text-amber-800",children:[ez[ne.reviewStatus][r],ne.submittedAt?` · ${R(ne.submittedAt)}`:""]})]},ne.id))}),ee.performanceTaskUrl&&o.jsx("a",{href:ee.performanceTaskUrl,target:"_blank",rel:"noopener noreferrer",className:"inline-block break-all text-blue-700 underline",children:s("Abrir enlace entregado","Open submitted link")}),ee.performanceTaskFeedback&&o.jsxs("p",{className:"mt-2 whitespace-pre-wrap break-words",children:[s("Comentario sobre la tarea","Task feedback"),": ",ee.performanceTaskFeedback]}),ee.feedback&&o.jsxs("p",{className:"mt-2 whitespace-pre-wrap break-words",children:[s("Retroalimentación docente","Teacher feedback"),": ",ee.feedback]})]},ee.week))})]},G)})}),o.jsxs("form",{onSubmit:z,className:"space-y-3 rounded-xl border border-border bg-card p-4",children:[o.jsxs("h3",{className:"flex items-center gap-2 font-semibold",children:[o.jsx(yr,{className:"h-4 w-4"}),s("Compartir el PDF por correo","Share the PDF by email")]}),o.jsxs("label",{className:"block text-sm",children:[s("Correo del destinatario (no necesita una cuenta)","Recipient email (no account required)"),o.jsx("input",{type:"email",required:!0,maxLength:254,value:d,onChange:G=>{m(G.target.value),f(!1)},className:"mt-1 block w-full rounded-md border border-border bg-background p-2","data-testid":"academic-report-recipient",autoComplete:"off"})]}),o.jsxs("label",{className:"flex items-start gap-2 text-sm",children:[o.jsx("input",{type:"checkbox",checked:h,onChange:G=>f(G.target.checked),className:"mt-1","data-testid":"academic-report-consent"}),o.jsx("span",{children:s("Autorizo compartir los datos personales y académicos incluidos en este reporte con ese destinatario.","I authorize sharing the personal and academic data in this report with that recipient.")})]}),o.jsx(ue,{type:"submit",disabled:!h||!!y,"data-testid":"academic-report-send",children:y==="share"?s("Enviandoâ¦","Sendingâ¦"):s("Confirmar y enviar PDF","Confirm and send PDF")}),o.jsx("p",{className:"text-xs text-muted-foreground",children:s("Máximo 5
363intentos de envÃo por hora.","Maximum 5 sending attempts per hour.")})]}),v&&o.jsx("p",{role:v.error?"alert":"status",className:`rounded-lg p-3 text-sm ${v.error?"bg-red-50 text-red-700":"bg-green-50 text-green-800"}`,children:v.text})]})}const ti=S.forwardRef(({className:e,type:t,...r},s)=>o.jsx("input",{type:t,className:Ye("flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",e),ref:s,...r}));ti.displayName="Input";var tz=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],az=tz.reduce((e,t)=>{const r=Ak(`Primitive.${t}`),s=S.forwardRef((c,d)=>{const{asChild:m,...h}=c,f=m?r:t;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),o.jsx(f,{...h,ref:d})});return s.displayName=`Primitive.${t}`,{...e,[t]:s}},{}),nz="Label",cC=S.forwardRef((e,t)=>o.jsx(az.label,{...e,ref:t,onMouseDown:r=>{r.target.closest("button, input, select, textarea")||(e.onMouseDown?.(r),!r.defaultPrevented&&r.detail>1&&r.preventDefault())}}));cC.displayName=nz;var dC=cC;const rz=Ld("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"),Gr=S.forwardRef(({className:e,...t},r)=>o.jsx(dC,{ref:r,className:Ye(rz(),e),...t}));Gr.displayName=dC.displayName;const uC=S.forwardRef(({className:e,...t},r)=>o.jsx("textarea",{className:Ye("flex min-h-[60px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-base shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",e),ref:r,...t}));uC.displayName="Textarea";const sz=vk,iz=xk,mC=S.forwardRef(({className:e,...t},r)=>o.jsx(Id,{ref:r,className:Ye("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",e),...t}));mC.displayName=Id.displayName;const pC=S.forwardRef(({className:e,children:t,...r},s)=>o.jsxs(iz,{children:[o.jsx(mC,{}),o.jsxs(Ud,{ref:s,className:Ye("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",e),...r,children:[t,o.jsxs(wk,{className:"absolute right-4 top-4 roun
363ded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground",children:[o.jsx(rs,{className:"h-4 w-4"}),o.jsx("span",{className:"sr-only",children:"Close"})]})]})]}));pC.displayName=Ud.displayName;const hC=({className:e,...t})=>o.jsx("div",{className:Ye("flex flex-col space-y-1.5 text-center sm:text-left",e),...t});hC.displayName="DialogHeader";const fC=S.forwardRef(({className:e,...t},r)=>o.jsx(Dd,{ref:r,className:Ye("text-lg font-semibold leading-none tracking-tight",e),...t}));fC.displayName=Dd.displayName;const gC=S.forwardRef(({className:e,...t},r)=>o.jsx(Od,{ref:r,className:Ye("text-sm text-muted-foreground",e),...t}));gC.displayName=Od.displayName;const oz={schoolYear:"",reportPeriod:"",credits:"",attendancePresent:"",attendanceTotal:"",teacherComment:""};function Q1(e){return{schoolYear:e.schoolYear??"",reportPeriod:e.reportPeriod??"",credits:e.credits==null?"":String(e.credits),attendancePresent:e.attendancePresent==null?"":String(e.attendancePresent),attendanceTotal:e.attendanceTotal==null?"":String(e.attendanceTotal),teacherComment:e.teacherComment??""}}function Tc(e){return e instanceof Error?e.message:String(e)}function eh(e){const t=e.trim();return t||null}function th(e,t,r){if(e.trim()==="")return null;const s=Number(e);if(!Number.isFinite(s)||s<0||r&&!Number.isInteger(s))throw new Error(t);return s}function lz({studentUserId:e,studentName:t,open:r,onOpenChange:s}){const{lang:c}=_e(),d=Ut(),m=_.useMemo(()=>["teacher-academic-report",e],[e]),{data:h,isLoading:f,isError:y,error:b,refetch:v}=At({queryKey:m,queryFn:()=>je(`/api/teacher/students/${encodeURIComponent(e)}/academic-report`,{responseType:"json"}),enabled:r&&!!e,staleTime:0,refetchOnMount:"always"}),[x,k]=_.useState(oz),[E,C]=_.useState(!1),[N,q]=_.useState(null),[R,I]=_.useState(null),$=(L,D)=>{k(ee=>({...ee,[L]:D})),q(null),I(null)};_.useEffect(()=>{h&&k(Q1(h.metadata))},[h]);const z=async L=>{L.preventDefault(),q(null),I(null);const D=new FormData(L.currentTarget),ee=eh(String(D.get("schoolYear")??"")),ne=eh(String(D.get("reportPeriod")??"")),me=String(D.get("teacherComment")??"");if(me.length>1e4){q(c==="en"?"Teacher comment must be 10,000 characters or fewer.":"El comentario del docente debe tener 10,000 caracteres o menos.");return}let pe,Re,Ee;try{if(pe=th(String(D.get("credits")??""),c==="en"?"Credits must be a nonnegative number.":"Los créditos deben ser un número no negativo.",!1),Re=th(String(D.get("attendancePresent")??""),c==="en"?"Days present must be a nonnegative whole number.":"Los dÃas presentes deben ser un número entero no negativo.",!0),Ee=th(String(D.get("attendanceTotal")??""),c==="en"?"Total attendance days must be a nonnegative whole number.":"El total de dÃas debe ser un número entero no negativo.",!0),Re!==null&&Ee===null)throw new Error(c==="en"?"Enter a total attendance value when days present are recorded.":"Ingresa el total de dÃas cuando se registren los dÃas presentes.");if(Re!==null&&Ee!==null&&Re>Ee)throw new Error(c==="en"?"Days present cannot exceed total attendance days.":"Los dÃas presentes no pueden superar el total de dÃas.")}catch(V){q(Tc(V));return}const Ae={schoolYear:ee,reportPeriod:ne,credits:pe,attendancePresent:Re,attendanceTotal:Ee,teacherComment:eh(me)};C(!0);try{const V=await je(`/api/teacher/students/${encodeURIComponent(e)}/report-metadata`,{method:"PUT",body:JSON.stringify(Ae),responseType:"json"});k(Q1(V)),I(c==="en"?"Report information saved.":"Información del reporte guardada."),await d.invalidateQueries({queryKey:m})}catch(V){q(c==="en"?`Could not save report information: ${Tc(V)}`:`No se pudo guardar la información del reporte: ${Tc(V)}`)}finally{C(!1)}},G=h;return o.jsx(sz,{open:r,onOpenChange:s,children:o.jsxs(pC,{className:"flex max-h-[calc(100dvh-1rem)] w-[calc(100vw-1rem)] max-w-5xl flex-col gap-0 overflow-hidden p-0 sm:max-h-[calc(100dvh-2rem)]","data-testid":"dialog-academic-report",children:[o.jsxs(hC,{className:"shrink-0 border-b border-border px-4 py-4 pr-12 text-left sm:px-6",children:[o.jsx(fC,{children:c==="en"?"Academic report":"Reporte académico"}),o.jsxs(gC,{children:[t," · ",c==="en"?"Review the full course report and edit its school information.":"Consulta el reporte completo del curso y edita sus datos escolares."]})]}),o.jsxs("div",{className:"min-h-0 flex-1 overflow-y-auto overscroll-contain px-4 py-4 sm:px-6",children:[o.jsxs("section",{"aria-labelledby":"academic-report-metadata-heading",className:"mb-6",children:[o.jsx("h3",{id:"academic-report-metadata-heading",className:"mb-3 font-semibold text-primary",children:c==="en"?"Report metadata":"Datos del reporte"}),f&&o.jsxs("div",{className:"flex items-center gap-2 py-4 text-sm text-muted-foreground",role:"status","data-testid":"status-academic-report-loading",children:[o.jsx(mr,{className:"h-4 w-4 animate-spin"}),c==="en"?"Loading the complete academic reportâ¦":"Cargando el reporte académico completoâ¦"]}),!f&&y&&o.jsxs("div",{className:"rounded-md border border-destructive/40 bg-destructive/5 p-3 text-sm",role:"alert","data-testid":"error-academic-report-load",children:[o.jsxs("p",{children:[c==="en"?"The academic report could not be loaded.":"No se pudo cargar el reporte académico."," ",Tc(b)]}),o.jsx(ue,{type:"button",size:"sm",variant:"outline",className:"mt-3",onClick:()=>v(),"data-testid":"button-retry-academic-report",children:c==="en"?"Try again":"Reintentar"})]}),!f&&!y&&h&&o.jsxs("form",{onSubmit:z,className:"space-y-4","data-testid":"form-academic-report-metadata",children:[o.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx(Gr,{htmlFor:"academic-school-year",children:c==="en"?"School year":"Año escolar"}),o.jsx(ti,{id:"academic-school-year",name:"schoolYear",value:x.schoolYear??"",onChange:L=>$("schoolYear",L.target.value),disabled:E,placeholder:c==="en"?"Not recorded":"No registrado","data-testid":"input-academic-school-year"})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(Gr,{htmlFor:"academic-report-period",children:c==="en"?"Report period":"PerÃodo del reporte"}),o.jsx(ti,{id:"academic-report-period",name:"reportPeriod",value:x.reportPeriod??"",onChange:L=>$("reportPeriod",L.target.value),disabled:E,placeholder:c==="en"?"Not recorded":"No registrado","data-testid":"input-academic-report-period"})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(Gr,{htmlFor:"academic-credits",children:c==="en"?"Credits":"Créditos"}),o.jsx(ti,{id:"academic-credits",name:"credits",type:"number",min:"0",step:"any",value:x.credits??"",onChange:L=>$("credits",L.target.value),disabled:E,placeholder:c==="en"?"Not recorded":"No registrado","data-testid":"input-academic-credits"})]}),o.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx(Gr,{htmlFor:"academic-attendance-present",children:c==="en"?"Present":"Presentes"}),o.jsx(ti,{id:"academic-attendance-present",name:"attendancePresent",type:"number",min:"0",step:"1",value:x.attendancePresent??"",onChange:L=>$("attendancePresent",L.target.value),disabled:E,placeholder:c==="en"?"Not recorded":"No registrado","data-testid":"input-academic-attendance-present"})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(Gr,{htmlFor:"academic-attendance-total",children:c==="en"?"Total days":"Total de dÃas"}),o.jsx(ti,{id:"academic-attendance-total",name:"attendanceTotal",type:"number",min:"0",step:"1",value:x.attendanceTotal??"",onChange:L=>$("attendanceTotal",L.target.value),disabled:E,placeholder:c==="en"?"Not recorded":"No registrado","data-testid":"input-academic-attendance-total"})]})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(Gr,{htmlFor:"academic-teacher-comment",children:c==="en"?"General teacher comment":"Comentario general del docente"}),o.jsx(uC,{id:"academic-teacher-comment",name:"teacherComment",value:x.teacherComment??"",onChange:L=>$("teacherComment",L.target.value),maxLength:1e4,rows:4,placeholder:c==="en"?"Optional comment":"Comentario opcional",disabled:E,"data-testid":"textarea-academic-teacher-comment"}),o.jsxs("p",{className:"text-right text-xs text-muted-foreground",children:[x.teacherComment.length,"/10,000"]})]}),N&&o.jsx("p",{className:"text-sm text-destructive",role:"alert","data-testid":"error-academic-report-save",children:N}),R&&o.jsx("p",{className:"text-sm text-green-700",role:"status","aria-live":"polite","data-testid":"status-academic-report-saved",children:R}),o.jsx("div",{className:"flex justify-end",children:o.jsxs(ue,{type:"submit",disabled:E,"data-testid":"button-save-academic-report-metadata",children:[E?o.jsx(mr,{className:"mr-2 h-4 w-4 animate-spin"}):o.jsx(Ho,{className:"mr-2 h-4 w-4"}),E?c==="en"?"Savingâ¦":"Guardandoâ¦":c==="en"?"Save report information":"Guardar datos del reporte"]})})]})]}),!f&&!y&&G&&o.jsxs("section",{"aria-labelledby":"full-academic-report-heading",className:"border-t border-border pt-5",children:[o.jsx("h3",{id:"full-academic-report-heading",className:"sr-only",children:c==="en"?"Full academic report":"Reporte académico completo"}),o.jsx(lC,{report:G,studentUserId:e})]})]})]})})}const ah=[{minPct:93,points:4,letter:"A"},{minPct:90,points:3.7,letter:"A-"},{minPct:87,points:3.3,letter:"B+"},{minPct:83,points:3,letter:"B"},{minPct:80,points:2.7,letter:"B-"},{minPct:77,points:2.3,letter:"C+"},{minPct:73,points:2,letter:"C"},{minPct:70,points:1.7,letter:"C-"},{minPct:67,points:1.3,letter:"D+"},{minPct:63,points:1,letter:"D"},{minPct:60,points:.7,letter:"D-"},{minPct:0,points:0,letter:"F"}];function cz(e){for(const t of ah)if(e>=t.minPct)return t;return ah[ah.length-1]}function dz(e){let t=0,r=0,s=0,c=0;for(const h of e)h.completedAt&&c++,h.score!=null&&h.total!=null&&h.total>0&&(t+=h.score,r+=h.total,s++);if(s===0||r===0)return{gradedWeeks:0,completedWeeks:c,avgPct:null,gpa:null,letter:null};const d=t/r*100,m=cz(d);return{gradedWeeks:s,completedWeeks:c,avgPct:d,gpa:m.points,letter:m.letter}}function Y1(e){return e==null?"â":`${e.toFixed(1)}%`}function X1(e){return e==null?"â":e.toFixed(2)}function uz(e){if(e==null)return"";const t=String(e);return/[",\n\r]/.test(t)?`"${t.replace(/"/g,'""')}"`:t}function mz(e,t){const r=t.map(m=>m.map(uz).join(",")).join(` 364`),s=new Blob(["\uFEFF"+r],{type:"text/csv;charset=utf-8"}),c=URL.createObjectURL(s),d=document.createElement("a");d.href=c,d.download=e,document.body.appendChild(d),d.click(),document.body.removeChild(d),URL.revokeObjectURL(c)}function Z1(e){return e.score==null||e.total==null||e.total<=0?null:e.score/e.total*100}function pz(e){return!!e.performanceTaskSubmittedAt&&e.performanceTaskStatus==="pending"}function hz(){const{lang:e}=_e(),[t,r]=_.useState(""),[s,c]=_.useState("parents"),[d,m]=_.useState([]),[h,f]=_.useState(!1),[y,b]=_.useState(null),[v,x]=_.useState({}),[k,E]=_.useState(""),[C,N]=_.useState(null),[q,R]=_.useState(!1),[I,$]=_.useState(null),[z,G]=_.useState(null),[L,D]=_.useState(null),[ee,ne]=_.useState(null),[me,pe]=_.useState({}),[Re,Ee]=_.useState({}),[Ae,V]=_.useState(!1),[Y,ce]=_.useState(null),de=g6(),{data:T}=ff({query:{queryKey:Io()}}),{data:W,isLoading:ie,isError:oe,refetch:we}=e6(t?{groupId:t}:void 0,{query:{queryKey:Uo(t?{groupId:t}:void 0)}}),fe=W?.totalWeeks??36,he=_.useMemo(()=>W?.students??[],[W]),ze=_.useMemo(()=>he.map(le=>({s:le,summary:dz(le.weeks)})),[he]),Ie=_.useMemo(()=>ze.map(({s:le})=>le).filter(le=>
364d.includes(le.userId)),[ze,d]);_.useEffect(()=>{if(s!=="student"||!t){N(null),$(null),R(!1);return}let le=!0;return N(null),$(null),R(!0),je(`/api/teacher/groups/${encodeURIComponent(t)}/student-progress-reports/preview`,{responseType:"json"}).then(Ue=>{le&&N(Ue)}).catch(Ue=>{le&&$(Ue instanceof Error?Ue.message:String(Ue))}).finally(()=>{le&&R(!1)}),()=>{le=!1}},[s,t]);const et=async()=>{const le=Array.from(new Set(Ie.map(Ze=>Ze.userId)));if(s!=="student"||le.length===0)return;const Ue=Ie.map(Ze=>Ze.displayName||(e==="en"?"Student":"Estudiante")),Ce=e==="en"?`Send individual student progress reports to ${le.length} student${le.length===1?"":"s"}? 365 366${Ue.join(` 367`)}${k.trim()?` 368 369Additional message: 370${k.trim()}`:""} 371 372Each student will receive a separate email. No student addresses will be shared with other recipients.`:`¿Enviar reportes individuales a ${le.length} estudiante(s)? 373 374${Ue.join(` 375`)}${k.trim()?` 376 377Mensaje adicional: 378${k.trim()}`:""} 379 380Cada estudiante recibirá un correo separado. No se compartirán direcciones con otros destinatarios.`;if(window.confirm(Ce)){f(!0),b(null);try{const Ze=await je("/api/teacher/progress-reports/students",{method:"POST",body:JSON.stringify({userIds:le,message:k.trim()}),responseType:"json"});b({sent:Ze.sent,failed:Ze.failed}),m([])}catch(Ze){b({error:Ze instanceof Error?Ze.message:String(Ze)})}finally{f(!1)}}},ia=async()=>{const le=C;if(s!=="student"||!t||!le||le.groupId!==t||le.total===0)return;const Ue=le.groupName,Ce=le.students.map(Pe=>Pe.displayName||(e==="en"?"Student":"Estudiante")),Ze=e==="en"?`Send individual progress reports to all ${le.total} student${le.total===1?"":"s"} in ${Ue}? 381 382${Ce.join(` 383`)}${k.trim()?` 384 385Additional message: 386${k.trim()}`:""} 387 388Each student will receive their own email; addresses will not be shared.`:`¿Enviar reportes individuales a los ${le.total} estudiante(s) de ${Ue}? 389 390${Ce.join(` 391`)}${k.trim()?` 392 393Mensaje adicional: 394${k.trim()}`:""} 395 396Cada estudiante recibirá su propio correo; las direcciones no se compartirán.`;if(window.confirm(Ze)){f(!0),b(null);try{const Pe=await je(`/api/teacher/groups/${encodeURIComponent(t)}/student-progress-reports`,{method:"POST",body:JSON.stringify({message:k.trim(),expectedUserIds:le.students.map(Qe=>Qe.userId)}),responseType:"json"});b({sent:Pe.sent,failed:Pe.failed})}catch(Pe){b({error:Pe instanceof Error?Pe.message:String(Pe)})}finally{f(!1)}}},oa=async le=>{const Ue=he.find(Ce=>Ce.userId===le);if(!(!Ue||!window.confirm(e==="en"?`Send 1 individual progress report to ${Ue.displayName||"this student"}?${k.trim()?` 397 398Additional message: 399${k.trim()}`:""}`:`¿Enviar 1 reporte individual a ${Ue.displayName||"este estudiante"}?${k.trim()?` 400 401Mensaje adicional: 402${k.trim()}`:""}`))){x(Ce=>({...Ce,[le]:!0}));try{const Ce=await je(`/api/teacher/students/${encodeURIComponent(le)}/progress-report`,{method:"POST",body:JSON.stringify({recipientMode:"student",message:k.trim()}),responseType:"json"});pe(Ze=>({...Ze,[le]:{kind:"ok",msg:e==="en"?`Sent to student (${Ce.sentCount})`:`Enviado al estudiante (${Ce.sentCount})`}}))}catch(Ce){pe(Ze=>({...Ze,[le]:{kind:"err",msg:e==="en"?`Failed: ${Ce instanceof Error?Ce.message:String(Ce)}`:`Error: ${Ce instanceof Error?Ce.message:String(Ce)}`}}))}finally{x(Ce=>{const{[le]:Ze,...Pe}=Ce;return Pe})}}},{groupAvgPct:Ea,groupAvgGpa:za}=_.useMemo(()=>{const le=ze.map(Ce=>Ce.summary.avgPct).filter(Ce=>Ce!=null),Ue=ze.map(Ce=>Ce.summary.gpa).filter(Ce=>Ce!=null);return{groupAvgPct:le.length?le.reduce((Ce,Ze)=>Ce+Ze,0)/le.length:null,groupAvgGpa:Ue.length?Ue.reduce((Ce,Ze)=>Ce+Ze,0)/Ue.length:null}},[ze]),Xa=()=>{const le=[e==="en"?"Student":"Estudiante",e==="en"?"Email":"Correo",e==="en"?"Group":"Grupo",e==="en"?"Completed":"Completadas",e==="en"?"Graded weeks":"Semanas calificadas",e==="en"?"Average %":"Promedio %","GPA (4.0)",e==="en"?"Letter":"Letra",...Array.from({length:fe},(Pe,Qe)=>e==="en"?`Week ${Qe+1} %`:`Semana ${Qe+1} %`)],Ue=ze.map(({s:Pe,summary:Qe})=>[Pe.displayName??"",Pe.email??"",Pe.groupName??"",`${Qe.completedWeeks}/${fe}`,String(Qe.gradedWeeks),Qe.avgPct==null?"":Qe.avgPct.toFixed(1),Qe.gpa==null?"":Qe.gpa.toFixed(2),Qe.letter??"",...Pe.weeks.map(pt=>{const Za=Z1(pt);return Za==null?"":`${Za.toFixed(0)}%`})]),Ce=t?(T?.find(Pe=>Pe.id===t)?.name??"group").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,""):e==="en"?"all-students":"todos-los-estudiantes",Ze=new Date().toISOString().slice(0,10);mz(`gradebook-${Ce}-${Ze}.csv`,[le,...Ue])};return o.jsxs(kt,{className:"p-5 mb-8",children:[o.jsxs("div",{className:"flex items-center gap-2 mb-3 flex-wrap",children:[o.jsx(TM,{className:"h-5 w-5 text-accent"}),o.jsx("h2",{className:"font-serif text-xl text-primary",children:e==="en"?"Gradebook":"Calificaciones"}),o.jsxs("div",{className:"ml-auto flex items-center gap-2 flex-wrap",children:[o.jsx("label",{className:"text-xs uppercase tracking-wider text-muted-foreground",children:e==="en"?"Group":"Grupo"}),o.jsxs("select",{value:t,onChange:le=>r(le.target.value),className:"p-2 rounded-lg border border-border bg-background text-sm focus:ring-2 focus:ring-primary/20 focus:border-primary",children:[o.jsx("option",{value:"",children:e==="en"?"All my students":"Todos mis estudiantes"}),(T??[]).map(le=>o.jsx("option",{value:le.id,children:le.name}
402,le.id))]}),o.jsx("label",{className:"text-xs uppercase tracking-wider text-muted-foreground",children:e==="en"?"Individual report recipient":"Destinatario individual"}),o.jsxs("select",{value:s,onChange:le=>c(le.target.value),className:"p-2 rounded-lg border border-border bg-background text-sm focus:ring-2 focus:ring-primary/20 focus:border-primary",children:[o.jsx("option",{value:"parents",children:e==="en"?"Linked parent(s)":"Padre(s) vinculados"}),o.jsx("option",{value:"student",children:e==="en"?"Student":"Estudiante"})]}),o.jsxs(ue,{variant:"outline",size:"sm",className:"gap-2",onClick:Xa,disabled:ze.length===0,children:[o.jsx(b2,{className:"h-4 w-4"}),e==="en"?"Download CSV":"Descargar CSV"]}),o.jsxs(ue,{variant:"default",size:"sm",className:"gap-2",disabled:!t||Ae||ze.length===0,onClick:async()=>{if(!t)return;const le=e==="en"?"Send a progress report by email to every linked parent in this group?":"¿Enviar reporte de avance por correo a todos los padres vinculados de este grupo?";if(window.confirm(le)){ce(null),V(!0);try{const Ue=await x6(t);ce({kind:"ok",result:Ue})}catch(Ue){const Ce=Ue instanceof Error?Ue.message:String(Ue);ce({kind:"err",msg:Ce})}finally{V(!1)}}},title:t?e==="en"?"Send report to all parents in this group":"Enviar reporte a todos los padres del grupo":e==="en"?"Choose a group first":"Elige un grupo primero",children:[Ae?o.jsx(mr,{className:"h-4 w-4 animate-spin"}):o.jsx(ii,{className:"h-4 w-4"}),e==="en"?"Send report to all parents":"Enviar reporte a todos los padres del grupo"]}),o.jsxs(ue,{variant:"outline",size:"sm",className:"gap-2",disabled:s!=="student"||!t||!C||C.groupId!==t||C.total===0||q||h,onClick:ia,title:e==="en"?"Send an individual progress report to every student in the selected group":"Enviar un reporte individual a cada estudiante del grupo seleccionado",children:[h?o.jsx(mr,{className:"h-4 w-4 animate-spin"}):o.jsx(ii,{className:"h-4 w-4"}),e==="en"?`Email all group students (${C?.groupId===t?C.total:"â¦"})`:`Enviar a estudiantes del grupo (${C?.groupId===t?C.total:"â¦"})`]}),o.jsxs(ue,{variant:"outline",size:"sm",className:"gap-2",disabled:s!=="student"||Ie.length===0||h,onClick:et,title:e==="en"?"Send a separate email to each checked student":"Enviar un correo separado a cada estudiante marcado",children:[h?o.jsx(mr,{className:"h-4 w-4 animate-spin"}):o.jsx(yr,{className:"h-4 w-4"}),e==="en"?`Email selected students (${Ie.length})`:`Enviar a estudiantes (${Ie.length})`]})]})]}),s==="student"&&o.jsxs("div",{className:"mb-3 space-y-1",children:[o.jsx("label",{htmlFor:"student-report-message",className:"text-xs font-medium text-muted-foreground",children:e==="en"?"Optional message included with individual student emails":"Mensaje opcional incluido en los correos individuales"}),o.jsx("textarea",{id:"student-report-message",value:k,onChange:le=>E(le.target.value),rows:2,maxLength:2e3,className:"w-full rounded-md border border-border bg-background p-2 text-sm",placeholder:e==="en"?"Add a personal note for the studentâ¦":"Agrega una nota personal para el estudianteâ¦"}),k.trim()&&o.jsxs("p",{className:"text-xs text-muted-foreground",children:[e==="en"?"Preview:":"Vista previa:"," ",k.trim()]})]}),s==="student"&&t&&q&&o.jsx("p",{className:"mb-3 text-xs text-muted-foreground",children:e==="en"?"Loading group email previewâ¦":"Cargando vista previa del grupoâ¦"}),s==="student"&&I&&o.jsx("p",{role:"alert",className:"mb-3 text-xs text-red-700",children:e==="en"?`Couldn't load group recipients: ${I}`:`No se pudo cargar el grupo: ${I}`}),s==="student"&&t&&C?.groupId===t&&C.total>0&&o.jsxs("div",{className:"mb-3 rounded-md border border-primary/20 bg-primary/5 px-3 py-2 text-xs text-muted-foreground",children:[o.jsx("p",{className:"font-semibold text-foreground",children:e==="en"?`Group email preview · ${C.groupName} · ${C.total} student${C.total===1?"":"s"}`:`Vista previa · ${C.groupName} · ${C.total} estudiante(s)`}),o.jsx("p",{className:"mt-1",children:C.students.map(le=>le.displayName||(e==="en"?"Student":"Estudiante")).join(", ")}),k.trim()&&o.jsxs("p",{className:"mt-1",children:[e==="en"?"Additional message:":"Mensaje adicional:"," ",k.trim()]})]}),Ie.length>0&&o.jsxs("div",{className:"mb-3 rounded-md border border-border bg-secondary/5 px-3 py-2 text-xs text-muted-foreground",children:[o.jsx("span",{className:"font-semibold text-foreground",children:e==="en"?`${Ie.length} selected:`:`${Ie.length} seleccionados:`})," ",Ie.map(le=>
402le.displayName||(e==="en"?"Student":"Estudiante")).join(", ")]}),y&&o.jsxs("div",{className:`mb-3 rounded-md border px-3 py-2 text-sm ${"error"in y?"border-red-200 bg-red-50 text-red-800":"border-green-200 bg-green-50 text-green-800"}`,children:["error"in y?e==="en"?`Student report email failed: ${y.error}`:`Falló el envÃo: ${y.error}`:e==="en"?`Individual student emails sent: ${y.sent}; failed: ${y.failed}.`:`Correos individuales enviados: ${y.sent}; fallidos: ${y.failed}.`,o.jsx("button",{className:"ml-3 underline",onClick:()=>b(null),children:e==="en"?"Dismiss":"Cerrar"})]}),Y&&o.jsx("div",{className:`mb-3 text-sm rounded-md border px-3 py-2 ${Y.kind==="ok"?"bg-green-50 border-green-200 text-green-800":"bg-red-50 border-red-200 text-red-800"}`,children:Y.kind==="ok"?o.jsxs("div",{className:"flex items-start justify-between gap-3",children:[o.jsxs("div",{children:[o.jsx("strong",{children:e==="en"?`Sent ${Y.result.sent} of ${Y.result.totalStudents}`:`Enviados ${Y.result.sent} de ${Y.result.totalStudents}`}),Y.result.skippedNoParent>0&&o.jsx("span",{className:"ml-2 text-muted-foreground",children:e==="en"?`· ${Y.result.skippedNoParent} skipped (no linked parent)`:`· ${Y.result.skippedNoParent} omitidos (sin padre vinculado)`}),Y.result.partial>0&&o.jsx("span",{className:"ml-2 text-amber-700",children:e==="en"?`· ${Y.result.partial} partial (not every parent received it)`:`· ${Y.result.partial} parciales (no todos los padres lo recibieron)`}),Y.result.failed>0&&o.jsx("span",{className:"ml-2 text-red-700",children:e==="en"?`· ${Y.result.failed} failed`:`· ${Y.result.failed} fallidos`})]}),o.jsx("button",{onClick:()=>ce(null),className:"text-xs underline",children:e==="en"?"Dismiss":"Cerrar"})]}):o.jsxs("div",{className:"flex items-start justify-between gap-3",children:[o.jsxs("span",{children:[e==="en"?"Bulk send failed: ":"EnvÃo masivo falló: ",Y.msg]}),o.jsx("button",{onClick:()=>ce(null),className:"text-xs underline",children:e==="en"?"Dismiss":"Cerrar"})]})}),o.jsx("p",{className:"text-sm text-muted-foreground mb-3",children:e==="en"?"Per-lesson cells show the percentage earned. Click a cell with a â³ badge to review and mark a student's Performance Task complete. GPA appears only as the course average.":"Las celdas por lección muestran el porcentaje obtenido. Haz clic en una celda con â³ para revisar y marcar la Tarea de Desempeño como completada. El GPA aparece solo como promedio del curso."}),ze.length>0&&o.jsxs("div",{className:"grid sm:grid-cols-3 gap-3 mb-4",children:[o.jsxs("div",{className:"rounded-lg border border-border p-3 bg-secondary/5",children:[o.jsx("div",{className:"text-xs uppercase tracking-wider text-muted-foreground",children:e==="en"?"Students":"Estudiantes"}),o.jsx("div",{className:"text-2xl font-serif text-primary",children:ze.length})]}),o.jsxs("div",{className:"rounded-lg border border-border p-3 bg-secondary/5",children:[o.jsx("div",{className:"text-xs uppercase tracking-wider text-muted-foreground",children:e==="en"?"Class average":"Promedio de la clase"}),o.jsx("div",{className:"text-2xl font-serif text-primary",children:Y1(Ea)})]}),o.jsxs("div",{className:"rounded-lg border border-border p-3 bg-secondary/5",children:[o.jsx("div",{className:"text-xs uppercase tracking-wider text-muted-foreground",children:e==="en"?"Class GPA (4.0)":"GPA de la clase (4.0)"}),o.jsx("div",{className:"text-2xl font-serif text-primary",children:X1(za)})]})]}),o.jsxs("div",{className:"flex gap-3 mb-2 text-xs",children:[o.jsx("button",{className:"underline disabled:opacity-50",disabled:ze.length===0,onClick:()=>m(ze.map(({s:le})=>le.userId)),children:e==="en"?"Select all":"Seleccionar todos"}),o.jsx("button",{className:"underline disabled:opacity-50",disabled:d.length===0,onClick:()=>m([]),children:e==="en"?"Deselect all":"Deseleccionar todos"})]}),o.jsx("div",{className:"overflow-x-auto rounded-lg border border-border",children:o.jsxs("table",{className:"w-full text-sm",children:[o.jsx("thead",{className:"bg-secondary/10",children:o.jsxs("tr",{children:[o.jsx("th",{className:"p-2 text-center",children:o.jsx("input",{type:"checkbox","aria-label":e==="en"?"Select all students":"Seleccionar todos los estudiantes",checked:ze.length>0&&Ie.length===ze.length,onChange:le=>m(le.target.checked?ze.map(({s:Ue})=>Ue.userId):[])})}),o.jsx("th",{className:"text-left p-2 sticky left-0 bg-secondary/10 z-10",children:e==="en"?"Student":"Estudiante"}),o.jsx("th",{className:"text-left p-2",children:e==="en"?"Group":"Grupo"}),o.jsx("th",{className:"text-left p-2",children:e==="en"?"Completed":"Completadas"}),o.jsx("th",{className:"text-left p-2",children:e==="en"?"Average":"Promedio"}),o.jsx("th",{className:"text-left p-2",children:"GPA"}),o.jsx("th",{className:"text-left p-2",children:e==="en"?"Letter":"Letra"}),o.jsx("th",{className:"text-left p-2",children:e==="en"?"Report":"Reporte"}),Array.from({length:fe},(le,Ue)=>o.jsx("th",{className:"text-center p-2 text-xs text-muted-foreground",children:e==="en"?`W${Ue+1}`:`S${Ue+1}`},Ue))]})}),o.jsxs("tbody",{children:[ie&&o.jsx("tr",{children:o.jsx("td",{colSpan:8+fe,className:"p-4 text-muted-foreground",children:e==="en"?"Loadingâ¦":"Cargandoâ¦"})}),!ie&&oe&&o.jsx("tr",{children:o.jsx("td",{colSpan:8+fe,className:"p-4",children:o.jsxs("div",{className:"flex items-center justify-between gap-3 text-sm text-red-700 bg-red-50 border border-red-200 rounded-md px-3 py-2",children:[o.jsx("span",{children:e==="en"?"We couldn't load the gradebook.":"No pudimos cargar las calificaciones."}),o.jsx(ue,{size:"sm",variant:"outline",onClick:()=>we(),children:e==="en"?"Retry":"Reintentar"})]})})}),!ie&&!oe&&ze.length===0&&o.jsx("tr",{children:o.jsx("td",{colSpan:8+fe,className:"p-4 text-muted-foreground",children:e==="en"?"No students yet.":"Aún no hay estudiantes."})}),ze.map(({s:le,summary:Ue})=>o.jsxs("tr",{className:"border-t border-border",children:[o.jsx("td",{className:"p-2 text-center",children:o.jsx("input",{type:"checkbox","aria-label":e==="en"?`Select ${le.displayName||le.email||"student"}`:`Seleccionar ${le.displayName||le.email||"estudiante"}`,checked:d.includes(le.userId),onChange:Ce=>m(Ze=>Ce.target.checked?Array.from(new Set([...Ze,le.userId])):Ze.filter(Pe=>
402Pe!==le.userId))})}),o.jsx("td",{className:"p-2 font-medium text-primary sticky left-0 bg-card z-10",children:le.displayName||le.email||"â"}),o.jsx("td",{className:"p-2 text-muted-foreground",children:le.groupName||"â"}),o.jsxs("td",{className:"p-2",children:[Ue.completedWeeks,"/",le.weekCount??fe]}),o.jsx("td",{className:"p-2",children:Y1(Ue.avgPct)}),o.jsx("td",{className:"p-2 font-semibold",children:X1(Ue.gpa)}),o.jsx("td",{className:"p-2",children:Ue.letter?o.jsx("span",{className:"inline-block min-w-[2rem] text-center px-1.5 py-0.5 rounded bg-accent/15 text-accent font-semibold text-xs",children:Ue.letter}):"â"}),o.jsx("td",{className:"p-2",children:(()=>{const Ce=me[le.userId],Ze=de.isPending&&de.variables?.userId===le.userId||!!v[le.userId];return o.jsxs("div",{className:"flex flex-col gap-1 items-start",children:[o.jsxs(ue,{size:"sm",variant:"outline",onClick:()=>ne(le),"data-testid":`button-academic-report-${le.userId}`,children:[o.jsx(ix,{className:"h-3 w-3"}),o.jsx("span",{className:"ml-1 text-xs",children:e==="en"?"Academic report":"Reporte académico"})]}),o.jsxs(ue,{size:"sm",variant:"outline",disabled:Ze,onClick:async()=>{if(s==="student"){await oa(le.userId);return}pe(Pe=>{const{[le.userId]:Qe,...pt}=Pe;return pt});try{const Pe=await de.mutateAsync({userId:le.userId}),Qe=Pe.recipientKind==="parent"?e==="en"?"parent":"padre/madre":e==="en"?"student":"alumno";pe(pt=>({...pt,[le.userId]:{kind:"ok",msg:e==="en"?`Sent to ${Qe} (${Pe.sentTo.length})`:`Enviado al ${Qe} (${Pe.sentTo.length})`}}))}catch(Pe){const Qe=Pe instanceof Error?Pe.message:String(Pe);pe(pt=>({...pt,[le.userId]:{kind:"err",msg:e==="en"?`Failed: ${Qe}`:`Error: ${Qe}`}}))}},title:s==="student"?e==="en"?"Send an individual email to this student":"Enviar un correo individual a este estudiante":e==="en"?"Send progress report to linked parent(s)":"Enviar reporte a los padres vinculados",children:[Ze?o.jsx(mr,{className:"h-3 w-3 animate-spin"}):Ce?.kind==="ok"?o.jsx(pi,{className:"h-3 w-3 text-green-700"}):o.jsx(yr,{className:"h-3 w-3"}),o.jsx("span",{className:"ml-1 text-xs",children:s==="student"?e==="en"?"Email student":"Enviar al estudiante":e==="en"?"Send report":"Enviar reporte"})]}),o.jsxs("div",{className:"flex gap-1",children:[o.jsxs(ue,{size:"sm",variant:"ghost",disabled:!!Re[le.userId],onClick:async()=>{Ee(Pe=>({...Pe,[le.userId]:!0}));try{const Pe=await b6(le.userId),Qe=(le.displayName||le.email||"estudiante").normalize("NFD").replace(/[\u0300-\u036f]/g,"").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"")||"estudiante",pt=new Date().toISOString().slice(0,10),Za=URL.createObjectURL(Pe),Ja=document.createElement("a");Ja.href=Za,Ja.download=`reporte-${Qe}-${pt}.pdf`,document.body.appendChild(Ja),Ja.click(),document.body.removeChild(Ja),URL.revokeObjectURL(Za)}catch(Pe){const Qe=Pe instanceof Error?Pe.message:String(Pe);pe(pt=>({...pt,[le.userId]:{kind:"err",msg:e==="en"?`PDF failed: ${Qe}`:`Error PDF: ${Qe}`}}))}finally{Ee(Pe=>{const{[le.userId]:Qe,...pt}=Pe;return pt})}},title:e==="en"?"Download printable PDF report":"Descargar reporte en PDF para imprimir",children:[Re[le.userId]?o.jsx(mr,{className:"h-3 w-3 animate-spin"}):o.jsx(ix,{className:"h-3 w-3"}),o.jsx("span",{className:"ml-1 text-xs",children:"PDF"})]}),o.jsx(ue,{size:"sm",variant:"ghost",onClick:()=>D(le),title:e==="en"?"General Feedback":"Comentario General",children:o.jsx(bf,{className:"h-3 w-3 text-accent"})})]}),Ce&&o.jsx("span",{className:`text-[10px] ${Ce.kind==="ok"?"text-green-700":"text-red-700"}`,children:Ce.msg})]})})()}),Array.from({length:fe},(Ce,Ze)=>{const Pe=Ze+1,Qe=le.weeks.find(Qd=>Qd.week===Pe);if(!Qe)return o.jsx("td",{className:"p-2 text-center text-xs text-muted-foreground/40",title:e==="en"?"Outside this student's course":"Fuera del curso de este estudiante",children:"â"},Pe);const pt=Z1(Qe),Za=pz(Qe),Ja=pt==null?"text-muted-foreground":pt>=90?"text-green-700 font-semibold":pt>=70?"text-foreground":"text-red-700 font-semibold",tl=!!Qe.submittedAt||!!Qe.performanceTaskSubmittedAt;return o.jsxs("td",{className:`p-2 text-center text-xs ${Ja} ${tl?"cursor-pointer hover:bg-secondary/10":""}`,title:Za?e==="en"?"Pending task review â click to review":"Revisión de tarea pendiente â clic para revisar":pt!=null?e==="en"?"Click to review":"Clic para revisar":e==="en"?"No submission":"Sin entrega",onClick:()=>{tl&&G({student:le,week:Qe.week})},children:[pt!=null?`${pt.toFixed(0)}%`:"·",Za&&o.jsx("span",{className:"ml-1 inline-flex items-center text-amber-600","aria-label":"pending",children:o.jsx(yf,{className:"inline h-3 w-3"})})]},Pe)})]}
402,le.userId))]})]})}),z&&o.jsx(gz,{student:z.student,week:z.week,onClose:()=>G(null),groupId:t},`${z.student.userId}-${z.week}`),L&&o.jsx(fz,{student:L,onClose:()=>D(null),groupId:t},L.userId),ee&&o.jsx(lz,{studentUserId:ee.userId,studentName:ee.displayName||ee.email||(e==="en"?"Student":"Estudiante"),open:!0,onOpenChange:le=>{le||ne(null)}})]})}function fz({student:e,onClose:t,groupId:r}){const{lang:s}=_e(),c=Ut(),d=l6(),[m,h]=_.useState(e.generalFeedback||""),[f,y]=_.useState(null),b=async(v=!1)=>{y(null);try{await d.mutateAsync({userId:e.userId,data:{feedback:v?"":m.trim()}}),c.invalidateQueries({queryKey:Uo(r?{groupId:r}:void 0)}),t()}catch{y(s==="en"?"We couldn't save the feedback. Please try again.":"No pudimos guardar el comentario. Inténtalo de nuevo.")}};return o.jsx("div",{className:"fixed inset-0 z-50 bg-black/40 flex items-center justify-center p-4",onClick:t,children:o.jsxs("div",{className:"bg-background rounded-xl border border-border shadow-xl max-w-lg w-full",onClick:v=>v.stopPropagation(),children:[o.jsxs("div",{className:"border-b border-border p-4 flex items-center justify-between",children:[o.jsxs("div",{children:[o.jsx("h3",{className:"font-serif text-lg text-primary",children:s==="en"?"General Feedback":"Comentario General"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:e.displayName||e.email})]}),o.jsx("button",{onClick:t,className:"p-1 rounded hover:bg-secondary/20",children:o.jsx(rs,{className:"h-5 w-5"})})]}),o.jsxs("div",{className:"p-4 space-y-4",children:[o.jsx("p",{className:"text-sm text-muted-foreground leading-relaxed",children:s==="en"?"This feedback appears on the student's progress report. It persists across weeks until you update or clear it.":"Este comentario aparece en el reporte de avance del estudiante. Persiste a través de las semanas hasta que lo actualices o lo borres."}),o.jsx("textarea",{value:m,onChange:v=>h(v.target.value),rows:5,className:"w-full p-3 rounded-lg border border-border bg-background text-sm focus:ring-2 focus:ring-primary/20 focus:border-primary",placeholder:s==="en"?"Excellent progress this month...":"Excelente progreso este mes..."}),f&&o.jsx("p",{className:"text-sm text-red-700 bg-red-50 border border-red-200 rounded-md px-3 py-2",children:f})]}),o.jsxs("div",{className:"border-t border-border p-4 flex items-center justify-between",children:[o.jsx(ue,{variant:"ghost",onClick:()=>b(!0),disabled:d.isPending,children:s==="en"?"Clear":"Borrar"}),o.jsxs("div",{className:"flex gap-2",children:[o.jsx(ue,{variant:"outline",onClick:t,disabled:d.isPending,children:s==="en"?"Cancel":"Cancelar"}),o.jsxs(ue,{onClick:()=>b(!1),disabled:d.isPending||!m.trim(),children:[o.jsx(Ho,{className:"h-4 w-4 mr-2"}),d.isPending?s==="en"?"Savingâ¦":"Guardandoâ¦":s==="en"?"Save":"Guardar"]})]})]})]})})}function J1({answer:e,lang:t,feedback:r,onFeedback:s,onStatus:c}){const d=e.status==="correct"?t==="en"?"1/1 · Correct":"1/1 · Correcta":e.status==="incorrect"?t==="en"?"0/1 · Incorrect":"0/1 · Incorrecta":t==="en"?"0/1 · Incomplete":"0/1 · Incompleta";return o.jsxs("div",{className:"rounded-lg border border-border bg-card p-3 space-y-2",children:[o.jsxs("div",{className:"flex items-start justify-between gap-3",children:[o.jsx("p",{className:"text-sm font-medium",children:t==="en"?e.prompt.en:e.prompt.es}),o.jsx("span",{className:`shrink-0 rounded px-2 py-1 text-xs font-semibold ${e.status==="correct"?"bg-green-50 text-green-700":e.status==="incorrect"?"bg-red-50 text-red-700":"bg-amber-50 text-amber-800"}`,children:d})]}),o.jsxs("p",{className:"text-xs text-muted-foreground",children:[t==="en"?"Selected:":"Elegida:"," ",o.jsx("span",{className:"text-foreground",children:e.selectedAnswer?t==="en"?e.selectedAnswer.en:e.selectedAnswer.es:t==="en"?"No answer":"Sin respuesta"})]}),o.jsxs("p",{className:"text-xs text-muted-foreground",children:[t==="en"?"Correct:":"Correcta:"," ",o.jsx("span",{className:"text-foreground",children:e.correctAnswer?t==="en"?e.correctAnswer.en:e.correctAnswer.es:"â"})]}),c&&o.jsxs("label",{className:"flex items-center gap-2 text-xs text-muted-foreground",children:[t==="en"?"Teacher review:":"Revisión docente:",o.jsxs("select",{value:e.status,onChange:m=>c(m.target.value),className:"rounded border border-border bg-background px-2 py-1 text-xs text-foreground",children:[o.jsx("option",{value:"correct",children:t==="en"?"Correct · 1/1":"Correcta · 1/1"}),o.jsx("option",{value:"incorrect",children:t==="en"?"Incorrect · 0/1":"Incorrecta · 0/1"}),o.jsx("option",{value:"incomplete",children:t==="en"?"Incomplete · 0/1":"Incompleta · 0/1"})]})]}),s&&o.jsx("textarea",{value:r??"",onChange:m=>s(m.target.value),rows:2,maxLength:2e3,className:"w-full p-2 rounded-md border border-border bg-background text-xs focus:ring-2 focus:ring-primary/20 focus:border-primary",placeholder:t==="en"?"Optional feedback on this answerâ¦":"Comentario opcional sobre esta respuestaâ¦","aria-label":t==="en"?`Optional feedback for question ${e.id}`:`Comentario opcional para la pregunta ${e.id}`})]})}function gz({student:e,week:t,onClose:r,groupId:s}){const{lang:c}=_e(),d=Ut(),{data:m,isLoading:h}=m2(e.userId,{query:{queryKey:Ao(e.userId)}}),f=m6(),y=r6(),b=_.useMemo(()=>m?.find(Y=>Y.week===t),[m,t]),[v,x]=_.useState(""),[k,E]=_.useState(""),[C,N]=_.useState({}),[q,R]=_.useState({}),[I,$]=_.useState(null),[z,G]=_.useState(null),L=_.useRef(!1);_.useEffect(()=>{if(!b||L.current)return;x(b.teacherFeedback??""),E(b.performanceTaskFeedback??"");const Y=b;N(Y.assessmentReviewFeedback??{}),R(Y.assessmentReviewStatus??{}),L.current=!0},[b]);
402const D=b?.autoScore??0,ee=b?.assessmentTotal??0,ne=b?.manualScores?Object.entries(b.manualScores):[],me=ne.reduce((Y,[,ce])=>Y+ce,0),pe=b,Re=pe?.assessmentReview??[],Ee=pe?.assessmentAttempts??[],Ae=async()=>{$(null);try{await f.mutateAsync({userId:e.userId,week:t,data:{teacherFeedback:v}}),await je(`/api/teacher/students/${encodeURIComponent(e.userId)}/lessons/${t}/assessment-review-feedback`,{method:"PUT",body:JSON.stringify({feedback:C,status:q}),responseType:"json"}),d.invalidateQueries({queryKey:Ao(e.userId)}),d.invalidateQueries({queryKey:Uo(s?{groupId:s}:void 0)}),r()}catch(Y){$(Y?.response?.status===403?c==="en"?"You don't have permission to update this student.":"No tienes permiso para actualizar a este estudiante.":c==="en"?"We couldn't save your feedback. Please try again.":"No pudimos guardar los comentarios. Inténtalo de nuevo.")}},V=async Y=>{G(null);try{await y.mutateAsync({userId:e.userId,week:t,data:{status:Y,feedback:k}}),d.invalidateQueries({queryKey:Ao(e.userId)}),d.invalidateQueries({queryKey:Uo(s?{groupId:s}:void 0)}),G({kind:"ok",msg:c==="en"?"Status updated successfully.":"Estado actualizado correctamente."})}catch{G({kind:"err",msg:c==="en"?"Failed to update status.":"Fallo al actualizar el estado."})}};return o.jsx("div",{className:"fixed inset-0 z-50 bg-black/40 flex items-center justify-center p-4",onClick:r,children:o.jsxs("div",{className:"bg-background rounded-xl border border-border shadow-xl max-w-2xl w-full max-h-[90vh] overflow-y-auto",onClick:Y=>Y.stopPropagation(),children:[o.jsxs("div",{className:"sticky top-0 bg-background border-b border-border p-4 flex items-center justify-between z-10",children:[o.jsxs("div",{children:[o.jsx("h3",{className:"font-serif text-lg text-primary",children:c==="en"?`Review Week ${t}`:`Revisar Semana ${t}`}),o.jsx("p",{className:"text-xs text-muted-foreground",children:e.displayName||e.email})]}),o.jsx("button",{onClick:r,className:"p-1 rounded hover:bg-secondary/20","aria-label":c==="en"?"Close":"Cerrar",children:o.jsx(rs,{className:"h-5 w-5"})})]}),o.jsxs("div",{className:"p-4 space-y-6",children:[h&&o.jsx("p",{className:"text-sm text-muted-foreground",children:c==="en"?"Loadingâ¦":"Cargandoâ¦"}),!h&&!b&&o.jsx("p",{className:"text-sm text-muted-foreground",children:c==="en"?"No submission found for this week.":"No se encontró entrega para esta semana."}),!h&&b&&o.jsxs(o.Fragment,{children:[o.jsxs("div",{children:[o.jsx("h4",{className:"font-semibold text-sm uppercase tracking-wider text-muted-foreground mb-2",children:c==="en"?"Knowledge Check":"Verificación de Conocimientos"}),o.jsxs("div",{className:"rounded-lg border border-border bg-secondary/5 p-4 text-sm flex items-center justify-between",children:[o.jsxs("span",{children:[c==="en"?"Score":"Puntaje",":"," ",o.jsxs("strong",{children:[D," / ",ee]})]}),b.assessmentSubmittedAt&&o.jsxs("span",{className:"text-muted-foreground text-xs",children:[c==="en"?"Submitted":"Enviado"," ",new Date(b.assessmentSubmittedAt).toLocaleDateString()]})]})]}),(Re.length>0||Ee.length>0)&&o.jsxs("div",{children:[o.jsxs("div",{className:"flex items-center justify-between gap-2 mb-2",children:[o.jsx("h4",{className:"font-semibold text-sm uppercase tracking-wider text-muted-foreground",children:c==="en"?"Answer review":"Revisión de respuestas"}),o.jsx("span",{className:"text-xs text-muted-foreground",children:c==="en"?`${pe?.attemptCount??Ee.length} attempt(s) · selected and correct answers`:`${pe?.attemptCount??Ee.length} intento(s) · respuestas elegida y correcta`})]}),Ee.length>0?o.jsx("div",{className:"space-y-2",children:Ee.map((Y,ce)=>o.jsxs("details",{open:ce===Ee.length-1,className:"rounded-lg border border-border",children:[o.jsxs("summary",{className:"cursor-pointer px-3 py-2 text-sm font-medium",children:[c==="en"?`Attempt ${Y.attemptNumber}: ${Y.score} / ${Y.total}`:`Intento ${Y.attemptNumber}: ${Y.score} / ${Y.total}`,o.jsx("span",{className:"ml-2 text-xs text-muted-foreground",children:new Date(Y.submittedAt).toLocaleDateString()})]}),o.jsx("div",{className:"p-3 pt-0 space-y-3",children:(Y.assessmentReview??[]).map(de=>o.jsx(J1,{answer:{...de,status:ce===Ee.length-1?q[de.id]??de.status:de.status},lang:c,feedback:ce===Ee.length-1?C[de.id]:Y.reviewFeedback?.[de.id],onStatus:ce===Ee.length-1?T=>R(W=>({...W,[de.id]:T})):void 0,onFeedback:ce===Ee.length-1?T=>N(W=>({...W,[de.id]:T})):void 0},`${Y.attemptNumber}-${de.id}`))})]},Y.attemptNumber))}):o.jsx("div",{className:"space-y-3",children:Re.map(Y=>o.jsx(J1,{answer:{...Y,status:q[Y.id]??Y.status},lang:c,feedback:C[Y.id],onStatus:ce=>R(de=>({...de,[Y.id]:ce})),onFeedback:ce=>N(de=>({...de,[Y.id]:ce}))},Y.id))})]}),ne.length>0&&o.jsxs("div",{children:[o.jsx("h4",{className:"font-semibold text-sm uppercase tracking-wider text-muted-foreground mb-2",children:c==="en"?"Historical Manual Grade":"Calificación Manual Histórica"}),o.jsxs("div",{className:"rounded-lg border border-border bg-secondary/5 p-4 text-sm space-y-2",children:[o.jsxs("div",{className:"flex items-center justify-between gap-3",children:[o.jsxs("span",{children:[c==="en"?"Retained final score":"Puntaje final conservado",":"," ",o.jsxs("strong",{children:[b.assessmentScore??"â"," / ",b.assessmentTotal??"â"]})]}),b.manualGradedAt&&o.jsx("span",{className:"text-muted-foreground text-xs",children:new Date(b.manualGradedAt).toLocaleDateString()})]}),o.jsxs("p",{className:"text-xs",children:[c==="en"?"Manual component":"Componente manual",":"," ",o.jsxs("strong",{children:[me," / ",ne.length]})]}),o.jsx("p",{className:"text-xs text-muted-foreground",children:c==="en"?"Read-only historical record. New Knowledge Checks are graded automatically.":"Registro histórico de solo lectura. Las nuevas verificaciones se califican automáticamente."})]})]}),b.performanceTaskGoogleUrl&&o.jsxs("div",{children:[o.jsx("h4",{className:"font-semibold text-sm uppercase tracking-wider text-muted-foreground mb-2",children:c==="en"?"Performance Task":"Tarea de Desempeño"}),o.jsxs("div",{className:"rounded-lg border border-border bg-card p-4 space-y-4",children:[o.jsxs("div",{className:"flex items-start justify-between flex-wrap gap-2",children:[o.jsxs("a",{href:b.performanceTaskGoogleUrl,target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1.5 text-primary hover:text-accent font-medium underline underline-offset-2 break-all",children:[c==="en"?"Open link":"Abrir enlace",o.jsx(yh,{className:"h-4 w-4"})]}),o.jsx("span",{className:"text-xs text-muted-foreground",children:b.performanceTaskSubmittedAt?c==="en"?`Submitted ${new Date(b.performanceTaskSubmittedAt).toLocaleDateString()}`:`Enviado ${new Date(b.performanceTaskSubmittedAt).toLocaleDateString()}
402`:c==="en"?"Submitted":"Enviado"})]}),o.jsxs("div",{className:"pt-4 border-t border-border flex items-center justify-between flex-wrap gap-2",children:[o.jsxs("div",{className:"text-sm",children:[o.jsx("span",{className:"text-muted-foreground mr-2",children:c==="en"?"Status:":"Estado:"}),b.performanceTaskStatus==="complete"||b.performanceTaskStatus==="correct"?o.jsx("strong",{className:"text-green-700",children:c==="en"?"Correct · 1/1":"Correcto â 1/1 pts"}):b.performanceTaskStatus==="incorrect"?o.jsx("strong",{className:"text-red-700",children:c==="en"?"Incorrect · 0/1":"Incorrecto â 0/1 pts"}):b.performanceTaskStatus==="incomplete"?o.jsx("strong",{className:"text-red-700",children:c==="en"?"Incomplete · 0/1":"Incompleto â 0/1 pts"}):o.jsx("strong",{className:"text-amber-700",children:c==="en"?"Pending":"Pendiente"})]}),o.jsxs("div",{className:"flex flex-wrap gap-2",children:[o.jsx(ue,{size:"sm",variant:b.performanceTaskStatus==="incomplete"?"default":"outline",className:b.performanceTaskStatus==="incomplete"?"bg-red-600 hover:bg-red-700":"",onClick:()=>V("incomplete"),disabled:y.isPending,children:c==="en"?"Incomplete · 0/1":"Incompleto â 0/1 pts"}),o.jsx(ue,{size:"sm",variant:b.performanceTaskStatus==="correct"||b.performanceTaskStatus==="complete"?"default":"outline",className:b.performanceTaskStatus==="correct"||b.performanceTaskStatus==="complete"?"bg-green-600 hover:bg-green-700":"",onClick:()=>V("correct"),disabled:y.isPending,children:c==="en"?"Correct · 1/1":"Correcto â 1/1 pts"}),o.jsx(ue,{size:"sm",variant:"outline",onClick:()=>V("incorrect"),disabled:y.isPending,children:c==="en"?"Incorrect · 0/1":"Incorrecto â 0/1 pts"})]})]}),o.jsxs("label",{className:"block text-sm",children:[c==="en"?"Link feedback (optional)":"Retroalimentación del enlace (opcional)",o.jsx("textarea",{value:k,maxLength:2e3,onChange:Y=>E(Y.target.value),rows:2,className:"mt-1 w-full rounded-lg border border-border bg-background p-2"})]}),z&&o.jsx("p",{className:`text-xs p-2 rounded ${z.kind==="ok"?"bg-green-50 text-green-700":"bg-red-50 text-red-700"}`,children:z.msg})]})]}),o.jsxs("div",{children:[o.jsx("h4",{className:"font-semibold text-sm uppercase tracking-wider text-muted-foreground mb-2",children:c==="en"?"Weekly Feedback (Optional)":"Comentario Semanal (Opcional)"}),o.jsx("textarea",{value:v,onChange:Y=>x(Y.target.value),rows:3,className:"w-full p-3 rounded-lg border border-border bg-background text-sm focus:ring-2 focus:ring-primary/20 focus:border-primary",placeholder:c==="en"?"Notes for the student on this week's workâ¦":"Notas para el estudiante sobre el trabajo de esta semanaâ¦"})]}),I&&o.jsx("p",{role:"alert",className:"text-sm text-red-700 bg-red-50 border border-red-200 rounded-md px-3 py-2",children:I})]})]}),o.jsxs("div",{className:"sticky bottom-0 bg-background border-t border-border p-4 flex items-center justify-end gap-2",children:[o.jsx(ue,{variant:"outline",onClick:r,children:c==="en"?"Close":"Cerrar"}),o.jsxs(ue,{onClick:Ae,disabled:!b||f.isPending,className:"gap-2",children:[o.jsx(Ho,{className:"h-4 w-4"}),f.isPending?c==="en"?"Savingâ¦":"Guardandoâ¦":c==="en"?"Save Feedback":"Guardar Comentario"]})]})]})})}const nh=ra.filter(e=>e.peerCritique).map(e=>e.week).sort((e,t)=>e-t);function yz(){const{lang:e}=_e(),[t,r]=_.useState(nh[0]??6),{data:s,isLoading:c,isError:d,refetch:m}=V6({week:t});if(nh.length===0)return null;const h=s?.students??[],f=h.reduce((v,x)=>v+x.givenCount,0),y=h.reduce((v,x)=>v+x.receivedCount,0),b=h.filter(v=>v.hasReflection).length;return o.jsxs(kt,{className:"p-5 mb-8",children:[o.jsxs("div",{className:"flex items-center gap-3 mb-4 flex-wrap",children:[o.jsx(br,{className:"h-5 w-5 text-accent"}),o.jsx("h2",{className:"font-serif text-xl text-primary",children:e==="en"?"Peer critique activity":"Actividad de crÃtica entre pares"}),o.jsxs("div",{className:"ml-auto flex items-center gap-2",children:[o.jsx("label",{className:"text-xs font-bold uppercase tracking-wider text-muted-foreground",children:e==="en"?"Week":"Semana"}),o.jsx("select",{value:t,onChange:v=>r(Number(v.target.value)),className:"border border-border rounded px-2 py-1 bg-background text-sm",children:nh.map(v=>o.jsx("option",{value:v,children:v},v))})]})]}),o.jsxs("div",{className:"grid sm:grid-cols-3 gap-3 mb-4 text-sm",children:[o.jsxs("div",{className:"rounded border border-border bg-secondary/5 px-3 py-2",children:[o.jsx("div",{className:"text-2xl font-serif text-primary",children:b}),o.jsx("div",{className:"text-xs text-muted-foreground uppercase tracking-wider",children:e==="en"?"Reflections submitted":"Reflexiones enviadas"})]}),o.jsxs("div",{className:"rounded border border-border bg-secondary/5 px-3 py-2",children:[o.jsx("div",{className:"text-2xl font-serif text-primary",children:f}),o.jsx("div",{className:"text-xs text-muted-foreground uppercase tracking-wider",children:e==="en"?"Critiques g
402iven":"CrÃticas dadas"})]}),o.jsxs("div",{className:"rounded border border-border bg-secondary/5 px-3 py-2",children:[o.jsx("div",{className:"text-2xl font-serif text-primary",children:y}),o.jsx("div",{className:"text-xs text-muted-foreground uppercase tracking-wider",children:e==="en"?"Critiques received":"CrÃticas recibidas"})]})]}),o.jsx("div",{className:"overflow-x-auto",children:o.jsxs("table",{className:"w-full text-sm",children:[o.jsx("thead",{className:"bg-secondary/10",children:o.jsxs("tr",{children:[o.jsx("th",{className:"text-left p-2",children:e==="en"?"Student":"Estudiante"}),o.jsx("th",{className:"text-left p-2",children:e==="en"?"Reflection":"Reflexión"}),o.jsx("th",{className:"text-left p-2",children:e==="en"?"Given":"Dadas"}),o.jsx("th",{className:"text-left p-2",children:e==="en"?"Received":"Recibidas"})]})}),o.jsxs("tbody",{children:[c&&o.jsx("tr",{children:o.jsx("td",{colSpan:4,className:"p-3 text-muted-foreground",children:e==="en"?"Loadingâ¦":"Cargandoâ¦"})}),!c&&d&&o.jsx("tr",{children:o.jsx("td",{colSpan:4,className:"p-3",children:o.jsxs("div",{className:"flex items-center justify-between gap-3 text-sm text-red-700 bg-red-50 border border-red-200 rounded px-3 py-2",children:[o.jsx("span",{children:e==="en"?"We couldn't load peer critique activity.":"No pudimos cargar la actividad de crÃtica entre pares."}),o.jsx("button",{onClick:()=>m(),className:"px-2 py-1 border border-red-300 rounded text-xs hover:bg-red-100",children:e==="en"?"Retry":"Reintentar"})]})})}),!c&&!d&&h.length===0&&o.jsx("tr",{children:o.jsx("td",{colSpan:4,className:"p-3 text-muted-foreground",children:e==="en"?"No students yet.":"Aún no hay estudiantes."})}),h.map(v=>o.jsxs("tr",{className:"border-t border-border",children:[o.jsx("td",{className:"p-2 text-primary font-medium",children:v.displayName||v.email||"â"}),o.jsx("td",{className:"p-2",children:v.hasReflection?o.jsx("span",{className:"text-green-700",children:e==="en"?"Submitted":"Enviada"}):o.jsx("span",{className:"text-muted-foreground",children:e==="en"?"Pending":"Pendiente"})}),o.jsx("td",{className:"p-2",children:v.givenCount}),o.jsx("td",{className:"p-2",children:v.receivedCount})]},v.userId))]})]})})]})}function bz(){const{lang:e}=_e(),t=Ut(),r=nN(),[s,c]=_.useState(""),[d,m]=_.useState(null),h=async()=>{m(null);try{await r.mutateAsync({data:{teacherInviteCode:s}}),t.invalidateQueries({queryKey:Ht()})}catch{m(e==="en"?"Invalid invite code.":"Código de invitación inválido.")}};return o.jsxs("div",{className:"max-w-xl mx-auto mt-12 p-6 rounded-xl border border-border bg-card",children:[o.jsx("h2",{className:"font-serif text-2xl text-primary mb-2",children:e==="en"?"Teacher access required":"Se requiere acceso de docente"}),o.jsx("p",{className:"text-sm text-muted-foreground mb-4",children:e==="en"?"Ask a current teacher to send you an email invitation, or â if you are the first teacher being set up â enter the bootstrap invite code below.":"Pide a un docente actual que te envÃe una invitación por correo o, si eres el primer docente, ingresa el código de inicio a continuación."}),o.jsxs("div",{className:"flex gap-2",children:[o.jsx("input",{type:"password",value:s,onChange:f=>c(f.target.value),placeholder:e==="en"?"Bootstrap invite code":"Código de inicio",className:"flex-1 p-2 rounded-lg border border-border bg-background focus:ring-2 focus:ring-primary/20 focus:border-primary"}),o.jsx(ue,{onClick:h,disabled:!s.trim()||r.isPending,children:r.isPending?e==="en"?"Verifyingâ¦":"Verificandoâ¦":e==="en"?"Submit":"Enviar"})]}),d&&o.jsx("p",{className:"mt-3 text-sm text-red-600",children:d})]})}function vz(){const{lang:e}=_e(),t=Ut(),[r,s]=_.useState(""),[c,d]=_.useState(null),[m,h]=_.useState(null),f=RN(),{data:y,isLoading:b}=TN({query:{queryKey:ph()}}),v=async x=>{x.preventDefault(),d(null),h(null);const k=r.trim();if(!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(k)){d(e==="en"?"Please enter a valid email.":"Ingresa un correo válido.");return}try{await f.mutateAsync({data:{email:k}}),h(e==="en"?`Invitation sent to ${k}.`:`Invitación enviada a ${k}.`),s(""),t.invalidateQueries({queryKey:ph()})}catch{d(e==="en"?"We couldn't send the invitation. Please try again.":"No pudimos enviar la invitación. Intenta de nuevo.")}};return o.jsxs(kt,{className:"p-5 mb-8",children:[o.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[o.jsx(yr,{className:"h-5 w-5 text-accent"}),o.jsx("h2",{className:"font-serif text-xl text-primary",children:e==="en"?"Invite a teacher":"Invitar a un docente"})]}),o.jsx("p",{className:"text-sm text-muted-foreground mb-4",children:e==="en"?"Send an email invitation. The recipient will receive a one-time link valid for 7 days.":"EnvÃa una invitación por correo. El destinatario recibirá un enlace de un solo uso válido por 7 dÃas."}),o.jsxs("form",{onSubmit:v,className:"flex flex-col sm:flex-row gap-2 mb-3",children:[o.jsx("input",{type:"email",value:r,onChange:x=>s(x.target.value),placeholder:e==="en"?"[email protected]":"[email protected]",className:"flex-1 p-2 rounded-lg border border-border bg-background focus:ring-2 focus:ring-primary/20 focus:border-primary"}),o.jsx(ue,{type:"submit",disabled:!r.trim()||f.isPending,children:f.isPending?e==="en"?"Sendingâ¦":"Enviandoâ¦":e==="en"?"Send invite":"Enviar invitación"})]}),c&&o.jsx("p",{className:"text-sm text-red-600 mb-2",children:c}),m&&o.jsx("p",{className:"text-sm text-green-700 mb-2",children:m}),o.jsxs("div",{className:"mt-4",children:[o.jsx("h3",{className:"text-xs uppercase tracking-wider text-muted-foreground mb-2",children:e==="en"?"Recent invitations":"Invitaciones recientes"}),b?o.jsx("p",{className:"text-sm text-muted-foreground",children:e==="en"?"Loadingâ¦":"Cargandoâ¦"}):!y||y.length===0?o.jsx("p",{className:"text-sm text-muted-foreground",children:e==="en"?"No invitations yet.":"Aún no hay invitaciones."}):o.jsx("ul",{className:"divide-y divide-border border border-border rounded-lg",children:y.slice(0,10).map(x=>{const k=new Date(x.expiresAt).getTime()<Date.now(),E=!!x.acceptedAt;return o.jsxs("li",{className:"flex items-center justify-between gap-3 px-3 py-2 text-sm",children:[o.jsx("span",{className:"truncate text-foreground",children:x.email}),E?o.jsxs("span",{className:"inline-flex items-center gap-1 text-green-700 text-xs",children:[o.jsx(pi,{className:"h-3.5 w-3.5"}),e==="en"?"Accepted":"Aceptada"]}):k?o.jsx("span",{className:"text-xs text-muted-foreground",children:e==="en"?"Expired":"Vencida"}):o.jsxs("span",{className:"inline-flex items-center gap-1 text-amber-700 text-xs",children:[o.jsx(yf,{className:"h-3.5 w-3.5"}),e==="en"?"Pending":"Pendiente"]})]},x.id)})})]})]})}function xz({userId:e,onClose:t}){const{lang:r}=_e(),{data:s,isLoading:c}=m2(e,{query:{queryKey:Ao(e)}});return o.jsx("div",{className:"fixed inset-0 z-50 bg-black/50 flex items-start justify-center overflow-y-auto p-4 pt-12",children:o.jsxs("div",{className:"bg-card border border-border rounded-2xl max-w-3xl w-full p-6 shadow-2xl",children:[o.jsxs("div",{className:"flex items-center justify-between mb-4",children:[o.jsx("h3",{className:"font-serif text-2xl text-primary",children:s?.[0]?.userDisplayName||s?.[0]?.userEmail||(r==="en"?"Student submissions":"Entregas del estudiante")}
402),o.jsx(ue,{variant:"ghost",onClick:t,children:r==="en"?"Close":"Cerrar"})]}),c&&o.jsx("p",{className:"text-sm text-muted-foreground",children:r==="en"?"Loadingâ¦":"Cargandoâ¦"}),!c&&(!s||s.length===0)&&o.jsx("p",{className:"text-sm text-muted-foreground",children:r==="en"?"No submissions yet.":"Aún no hay entregas."}),o.jsx("div",{className:"space-y-4 max-h-[70vh] overflow-y-auto",children:(s??[]).sort((d,m)=>d.week-m.week).map(d=>o.jsxs("div",{className:"border border-border rounded-lg p-4",children:[o.jsxs("div",{className:"flex items-center justify-between mb-2 flex-wrap gap-2",children:[o.jsx("h4",{className:"font-bold text-primary",children:r==="en"?`Week ${d.week}`:`Semana ${d.week}`}),o.jsxs("div",{className:"flex items-center gap-3 text-xs",children:[d.assessmentSubmittedAt&&o.jsxs("span",{className:"px-2 py-1 rounded bg-blue-100 text-blue-800",children:["Quiz",": ",d.assessmentScore,"/",d.assessmentTotal]}),d.reflectionSubmittedAt&&o.jsx("span",{className:"px-2 py-1 rounded bg-amber-100 text-amber-800",children:r==="en"?"Reflection":"Reflexión"}),d.completedAt&&o.jsx("span",{className:"px-2 py-1 rounded bg-green-100 text-green-800 font-semibold",children:r==="en"?"Completed":"Completada"})]})]}),d.reflectionText&&o.jsxs("div",{className:"mt-2",children:[o.jsx("div",{className:"text-xs uppercase tracking-wide text-muted-foreground mb-1",children:r==="en"?"Reflection":"Reflexión"}),o.jsx("p",{className:"text-sm text-foreground whitespace-pre-wrap bg-secondary/5 rounded p-3 border border-border",children:d.reflectionText})]})]},d.week))})]})})}function wz({code:e}){const{lang:t}=_e(),[r,s]=_.useState(!1);if(!e)return o.jsx("span",{className:"text-muted-foreground",children:"â"});const c=typeof window<"u"?window.location.origin:"",d="/".replace(/\/$/,""),m=`${c}${d}/parent/link?code=${encodeURIComponent(e)}`,h=async()=>{try{await navigator.clipboard.writeText(m),s(!0),window.setTimeout(()=>s(!1),1500)}catch{}};return o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx("code",{className:"px-1.5 py-0.5 rounded bg-secondary/15 text-xs font-mono",children:e}),o.jsxs(ue,{variant:"ghost",size:"sm",className:"h-7 gap-1 px-2",onClick:h,title:m,children:[r?o.jsx(pi,{className:"h-3.5 w-3.5"}):o.jsx(y2,{className:"h-3.5 w-3.5"}),o.jsx("span",{className:"text-xs",children:r?t==="en"?"Copied":"Copiado":t==="en"?"Copy link":"Copiar enlace"})]})]})}function kz({currentUserId:e}){const{lang:t}=_e(),r=Ut(),{data:s,isLoading:c,isError:d,refetch:m}=At({queryKey:["adminUsers"],queryFn:async()=>{const q=await fetch("/api/admin/users",{credentials:"same-origin"});if(!q.ok){const R=await q.json().catch(()=>null);throw new Error(R?.error||"Could not load course users.")}return q.json()}}),[h,f]=_.useState(null),[y,b]=_.useState(null),[v,x]=_.useState({}),k=q=>t==="en"?q[0].toUpperCase()+q.slice(1):q==="student"?"Estudiante":q==="parent"?"Padre/madre":q==="teacher"?"Docente":"Administrador",E=q=>{if(t==="en")switch(q){case"student":return"They will have student access only; admin, teacher, and parent controls are removed. Course records remain, but their access changes to the student role.";case"parent":return"They will have parent access to children linked to this account; admin and teacher controls are removed. Course records remain.";case"teacher":return"They will gain teacher tools and access to students/groups assigned to them; admin controls are removed. Existing course records remain.";case"admin":return"They will gain full administrative control of this course, including user management and deletion. Existing course records remain."}switch(q){case"student":return"Tendrá solo acceso de estudiante; se quitarán los controles de administración, docencia y padre/madre. Se conservarán los datos del curso, pero cambiará su acceso.";case"parent":return"Tendrá acceso de padre/madre a los hijos vinculados a esta cuenta; se quitarán los controles de administración y docencia. Se conservarán los datos del curso.";case"teacher":return"Obtendrá herramientas docentes y acceso a estudiantes/grupos asignados; se quitarán los controles administrativos. Se conservarán los datos del curso.";case"admin":return"Obtendrá control administrativo completo de este curso, incluida la gestión y eliminación de usuarios. Se conservarán los datos del curso."}},C=async(q,R)=>{if(R===q.role)return;const I=q.displayName||q.email||q.userId,$=t==="en"?`Change ${I} from ${k(q.role)} to ${k(R)}? 403 404${E(R)}`:`¿Cambiar a ${I} de ${k(q.role)} a ${k(R)}? 405 406${E(R)}`;if(window.confirm($)){f(null),b(q.userId);try{const z=await fetch(`/api/admin/users/${encodeURIComponent(q.userId)}/role`,{method:"PATCH",credentials:"same-origin",headers:{"Content-Type":"application/json"},body:JSON.stringify({role:R})});if(!z.ok){const G=await z.json().catch(()=>null);throw new Error(G?.error||(t==="en"?"Could not change role.":"No se pudo cambiar el rol."))}x(G=>{const L={...G};return delete L[q.userId],L}),await r.invalidateQueries({queryKey:["adminUsers"]})}catch(z){f(z instanceof Error?z.message:t==="en"?"Could not change role.":"No se pudo cambiar el rol.")}finally{b(null)}}},N=async q=>{const R=q.displayName||q.email||q.userId,I=q.email||q.userId,$=t==="en"?`Permanently delete ${R} (${I}), currently ${k(q.role)}, from this course? 407 408This removes their course profile, lesson progress and submissions, peer critiques, parent links, portal progress and report history, invitations sent to or by them, and messages they authored. If they own groups, those groups and their invitation links are deleted and enrolled students become unassigned; the students' accounts and submissions remain. 409 410Their access to this course will be revoked and will remain revoked on future sign-ins. Their Clerk sign-in account is NOT deleted and may still be used outside this course. This course-data deletion cannot be undone.`:`¿Eliminar permanentemente a ${R} (${I}), actualmente ${k(q.role)}, de este curso? 411 412Se eliminarán su perfil del curso, progreso y entregas, crÃticas entre pares, enlaces con padres, progreso del portal e historial de informes, invitaciones enviadas o recibidas y mensajes que haya enviado. Si t
412iene grupos, se eliminarán esos grupos y sus enlaces de invitación; sus estudiantes quedarán sin grupo, pero conservarán sus cuentas y entregas. 413 414Se revocará su acceso a este curso y la revocación seguirá vigente en futuros inicios de sesión. NO se eliminará su cuenta de inicio de sesión de Clerk y podrÃa seguir utilizándose fuera de este curso. Esta eliminación de datos del curso no se puede deshacer.`;if(!(!window.confirm($)||window.prompt(t==="en"?`Final confirmation: type DELETE to permanently remove ${I} from this course.`:`Confirmación final: escribe DELETE para eliminar permanentemente a ${I} de este curso.`)!=="DELETE")){f(null),b(q.userId);try{const G=await fetch(`/api/admin/users/${encodeURIComponent(q.userId)}`,{method:"DELETE",credentials:"same-origin"});if(!G.ok){const L=await G.json().catch(()=>null);throw new Error(L?.error||(t==="en"?"Could not delete this course account.":"No se pudo eliminar la cuenta del curso."))}await r.invalidateQueries({queryKey:["adminUsers"]}),await r.invalidateQueries({queryKey:Td()})}catch(G){f(G instanceof Error?G.message:t==="en"?"Could not delete this course account.":"No se pudo eliminar la cuenta del curso.")}finally{b(null)}}};return o.jsxs(kt,{className:"p-5 mb-8",children:[o.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[o.jsx(hP,{className:"h-5 w-5 text-accent"}),o.jsx("h2",{className:"font-serif text-xl text-primary",children:t==="en"?"Manage course users":"Gestionar usuarios del curso"})]}),o.jsx("p",{className:"text-sm text-muted-foreground mb-4",children:t==="en"?"Manage students, parents, teachers, and administrators. Role changes retain course data. Deletion removes only this course's data; the Clerk sign-in account is preserved.":"Gestiona estudiantes, padres, docentes y administradores. Los cambios de rol conservan los datos del curso. La eliminación solo borra los datos de este curso; la cuenta de Clerk se conserva."}),c?o.jsx("p",{className:"text-sm text-muted-foreground",children:t==="en"?"Loadingâ¦":"Cargandoâ¦"}):d?o.jsxs("div",{className:"flex items-center justify-between gap-3 text-sm text-red-700 bg-red-50 border border-red-200 rounded-md px-3 py-2",children:[o.jsx("span",{children:t==="en"?"We couldn't load course users.":"No pudimos cargar los usuarios del curso."}),o.jsx(ue,{size:"sm",variant:"outline",onClick:()=>m(),children:t==="en"?"Retry":"Reintentar"})]}):!s||s.length===0?o.jsx("p",{className:"text-sm text-muted-foreground",children:t==="en"?"No course users yet.":"Aún no hay usuarios en el curso."}):o.jsx("ul",{className:"divide-y divide-border border border-border rounded-lg",children:s.map(q=>{const R=q.displayName||q.email||q.userId,I=q.userId===e,$=v[q.userId]??q.role;return o.jsxs("li",{className:"flex flex-col lg:flex-row lg:items-center justify-between gap-3 px-3 py-3 text-sm",children:[o.jsxs("div",{className:"min-w-0",children:[o.jsx("div",{className:"font-medium text-foreground truncate",children:R}),q.email&&q.email!==R&&o.jsx("div",{className:"text-xs text-muted-foreground truncate",children:q.email}),I&&o.jsx("div",{className:"text-xs text-muted-foreground",children:t==="en"?"You (role changes and deletion disabled)":"Tú (cambio de rol y eliminación desactivados)"})]}),o.jsxs("div",{className:"flex flex-wrap items-center gap-2 shrink-0",children:[o.jsxs("span",{className:`inline-flex items-center gap-1 px-2 py-0.5 rounded text-xs font-semibold ${q.role==="admin"?"bg-primary text-primary-foreground":"bg-accent/15 text-accent"}`,children:[q.role==="admin"?o.jsx(w2,{className:"h-3 w-3"}):null,k(q.role)]}),!I&&o.jsxs(o.Fragment,{children:[o.jsx("select",{"aria-label":t==="en"?`Role for ${R}`:`Rol de ${R}`,value:$,disabled:y!==null,onChange:z=>x(G=>({...G,[q.userId]:z.target.value})),className:"h-8 rounded-md border border-border bg-background px-2 text-xs",children:["student","parent","teacher","admin"].map(z=>o.jsx("option",{value:z,children:k(z)},z))}),o.jsx(ue,{size:"sm",variant:"outline",disabled:y!==null||$===q.role,onClick:()=>C(q,$),children:y===q.userId?t==="en"?"Savingâ¦":"Guardandoâ¦":t==="en"?"Update role":"Cambiar rol"}),o.jsxs(ue,{size:"sm",variant:"destructive",className:"gap-1",disabled:y!==null,onClick:()=>N(q),children:[o.jsx(vf,{className:"h-3.5 w-3.5"}),y===q.userId?t==="en"?"Workingâ¦":"Procesandoâ¦":t==="en"?"Delete":"Eliminar"]})]})]})]},q.userId)})}),h&&o.jsx("p",{className:"text-sm text-red-600 mt-3",children:h})]})}function Sz(){const{lang:e}=_e(),{isSignedIn:t,isLoaded:r,user:s}=fa(),{data:c,isLoading:d}=mn({query:{enabled:!!t,retry:!1,queryKey:Ht()}}),m=c?.role==="teacher"||c?.role==="admin",h=c?.role==="admin",{data:f,isLoading:y,isError:b,refetch:v}=AN({query:{enabled:!!t&&m,queryKey:Td()}}),[x,k]=_.useState(null),[E,C]=_.useState(!1);return r?o.jsxs("div",{className:"container mx-auto px-4 py-10",children:[o.jsx(pa,{when:"signed-out",children:o.jsxs("div",{className:"max-w-xl mx-auto mt-12 text-center",children:[o.jsx("h1",{className:"font-serif text-3xl text-primary mb-3",children:e==="en"?"Teacher Dashboard":"Panel del Docente"}),o.jsx("p",{className:"text-muted-foreground mb-4",children:e==="en"?"Please sign in to access the dashboard.":"Inicia sesión para acceder al panel."}),o.jsx(Te,{href:"/sign-in",children:o.jsx(ue,{children:e==="en"?"Sign in":"Iniciar sesión"})})]})}),o.jsx(pa,{when:"signed-in",children:d?o.jsx("p",{className:"text-sm text-muted-foreground",children:e==="en"?"Loadingâ¦":"Cargandoâ¦"}):m?o.jsxs(o.Fragment,{children:[o.jsxs("div",{className:"flex items-center gap-3 mb-6 flex-wrap",children:[o.jsx(v2,{className:"h-7 w-7 text-accent"}),o.jsx("h1",{className:"font-serif text-3xl text-primary",children:e==="en"?"Teacher Dashboard":"Panel del Docente"}),o.jsxs("span",{className:`inline-flex items-center gap-1 px-2 py-0.5 rounded text-xs font-semibold ${h?"bg-primary text-primary-foreground":"bg-
414accent/15 text-accent"}`,children:[h?o.jsx(w2,{className:"h-3 w-3"}):null,h?"Admin":e==="en"?"Teacher":"Docente"]}),o.jsx("div",{className:"ml-auto",children:o.jsxs(ue,{onClick:()=>C(!0),className:"gap-2",children:[o.jsx(ii,{className:"h-4 w-4"}),e==="en"?"Send message":"Enviar mensaje"]})})]}),o.jsxs("div",{className:"grid sm:grid-cols-3 gap-4 mb-8",children:[o.jsxs(kt,{className:"p-5",children:[o.jsx(br,{className:"h-5 w-5 text-accent mb-2"}),o.jsx("div",{className:"text-3xl font-serif text-primary",children:f?.length??0}),o.jsx("div",{className:"text-xs uppercase tracking-wider text-muted-foreground",children:e==="en"?"Students":"Estudiantes"})]}),o.jsxs(kt,{className:"p-5",children:[o.jsx(mi,{className:"h-5 w-5 text-accent mb-2"}),o.jsx("div",{className:"text-3xl font-serif text-primary",children:(f??[]).reduce((N,q)=>N+q.completedCount,0)}),o.jsx("div",{className:"text-xs uppercase tracking-wider text-muted-foreground",children:e==="en"?"Lessons completed":"Lecciones completadas"})]}),o.jsxs(kt,{className:"p-5",children:[o.jsx("div",{className:"text-3xl font-serif text-primary",children:"24"}),o.jsx("div",{className:"text-xs uppercase tracking-wider text-muted-foreground",children:e==="en"?"Weeks in course":"Semanas del curso"})]})]}),o.jsx(YL,{}),o.jsx(XL,{}),o.jsx(vz,{}),h&&s?.id&&o.jsx(kz,{currentUserId:s.id}),o.jsx(hz,{}),o.jsx(yz,{}),o.jsx(kt,{className:"overflow-x-auto",children:o.jsxs("table",{className:"w-full text-sm",children:[o.jsx("thead",{className:"bg-secondary/10",children:o.jsxs("tr",{children:[o.jsx("th",{className:"text-left p-3",children:e==="en"?"Student":"Estudiante"}),o.jsx("th",{className:"text-left p-3",children:e==="en"?"Email":"Correo"}),o.jsx("th",{className:"text-left p-3",children:e==="en"?"Group":"Grupo"}),o.jsx("th",{className:"text-left p-3",children:e==="en"?"Completed":"Completadas"}),o.jsx("th",{className:"text-left p-3",children:e==="en"?"Last activity":"Ãltima actividad"}),o.jsx("th",{className:"text-left p-3",children:e==="en"?"Parent link":"Enlace para padres"}),o.jsx("th",{className:"p-3"})]})}),o.jsxs("tbody",{children:[y&&o.jsx("tr",{children:o.jsx("td",{colSpan:7,className:"p-4 text-muted-foreground",children:e==="en"?"Loadingâ¦":"Cargandoâ¦"})}),!y&&b&&o.jsx("tr",{children:o.jsx("td",{colSpan:7,className:"p-4",children:o.jsxs("div",{className:"flex items-center justify-between gap-3 text-sm text-red-700 bg-red-50 border border-red-200 rounded-md px-3 py-2",children:[o.jsx("span",{children:e==="en"?"We couldn't load the student list.":"No pudimos cargar la lista de estudiantes."}),o.jsx(ue,{size:"sm",variant:"outline",onClick:()=>v(),children:e==="en"?"Retry":"Reintentar"})]})})}),!y&&!b&&(f??[]).length===0&&o.jsx("tr",{children:o.jsx("td",{colSpan:7,className:"p-4 text-muted-foreground",children:e==="en"?"No students yet.":"Aún no hay estudiantes."})}),(f??[]).map(N=>o.jsxs("tr",{className:"border-t border-border",children:[o.jsx("td",{className:"p-3 font-medium text-primary",children:N.displayName||"â"}),o.jsx("td",{className:"p-3 text-muted-foreground",children:N.email||"â"}),o.jsx("td",{className:"p-3 text-muted-foreground",children:N.groupName||"â"}),o.jsxs("td",{className:"p-3",children:[N.completedCount," / 24"]}),o.jsx("td",{className:"p-3 text-muted-foreground",children:N.lastActivityAt?new Date(N.lastActivityAt).toLocaleString():"â"}),o.jsx("td",{className:"p-3",children:o.jsx(wz,{code:N.parentLinkCode??null})}),o.jsx("td",{className:"p-3",children:o.jsx(ue,{variant:"outline",size:"sm",onClick:()=>k(N.userId),children:e==="en"?"View":"Ver"})})]},N.userId))]})]})}),x&&o.jsx(xz,{userId:x,onClose:()=>k(null)}),E&&o.jsx(ZL,{isAdmin:h,onClose:()=>C(!1)})]}):o.jsx(bz,{})})]}):null}const Cz="/".replace(/\/$/,"");function jz(){const{lang:e}=_e(),{isSignedIn:t,isLoaded:r}=fa(),[,s]=wr(),c=Zh(),d=_.useMemo(()=>new URLSearchParams(c).get("token")??"",[c]),m=Ut(),h=ON(),[f,y]=_.useState("idle"),[b,v]=_.useState(null);if(_.useEffect(()=>{!r||!t||!d||f!=="idle"||h.isPending||h.mutateAsync({data:{token:d}}).then(()=>{y("ok"),m.invalidateQueries({queryKey:Ht()})}).catch(()=>
414{y("err"),v(e==="en"?"This invitation link is invalid, expired, or already used.":"Este enlace de invitación es inválido, ha vencido o ya fue usado.")})},[r,t,d,f,h,m,e]),!r)return null;const x=`${Cz}/teacher/accept?token=${encodeURIComponent(d)}`;return o.jsx("div",{className:"container mx-auto px-4 py-16 max-w-xl",children:o.jsxs(kt,{className:"p-8 text-center",children:[o.jsx(yr,{className:"h-10 w-10 mx-auto text-accent mb-3"}),o.jsx("h1",{className:"font-serif text-3xl text-primary mb-2",children:e==="en"?"Teacher invitation":"Invitación de docente"}),!d&&o.jsxs(o.Fragment,{children:[o.jsx("p",{className:"text-muted-foreground mb-6",children:e==="en"?"This link is missing an invitation token.":"Este enlace no incluye un token de invitación."}),o.jsx(Te,{href:"/",children:o.jsx(ue,{variant:"outline",children:e==="en"?"Back home":"Volver al inicio"})})]}),d&&o.jsxs(pa,{when:"signed-out",children:[o.jsx("p",{className:"text-muted-foreground mb-6",children:e==="en"?"Please sign in or create an account to accept this invitation.":"Inicia sesión o crea una cuenta para aceptar esta invitación."}),o.jsxs("div",{className:"flex gap-2 justify-center",children:[o.jsx(ue,{onClick:()=>s(`/sign-in?redirect_url=${encodeURIComponent(x)}`),children:e==="en"?"Sign in":"Iniciar sesión"}),o.jsx(ue,{variant:"outline",onClick:()=>s(`/sign-up?redirect_url=${encodeURIComponent(x)}`),children:e==="en"?"Create account":"Crear cuenta"})]})]}),d&&o.jsxs(pa,{when:"signed-in",children:[(f==="idle"||h.isPending)&&o.jsx("p",{className:"text-muted-foreground",children:e==="en"?"Verifying your invitationâ¦":"Verificando tu invitaciónâ¦"}),f==="ok"&&o.jsxs(o.Fragment,{children:[o.jsx(In,{className:"h-10 w-10 mx-auto text-green-600 mb-2"}),o.jsx("p",{className:"text-foreground mb-6",children:e==="en"?"You're in! Your account now has teacher access.":"¡Listo! Tu cuenta ahora tiene acceso de docente."}),o.jsx(Te,{href:"/teacher",children:o.jsx(ue,{children:e==="en"?"Open teacher dashboard":"Abrir panel del docente"})})]}),f==="err"&&o.jsxs(o.Fragment,{children:[o.jsx(Oo,{className:"h-10 w-10 mx-auto text-red-600 mb-2"}),o.jsx("p",{className:"text-red-700 mb-6",children:b}),o.jsx(Te,{href:"/",children:o.jsx(ue,{variant:"outline",children:e==="en"?"Back home":"Volver al inicio"})})]})]})]})})}const yC=24;function Az({onLinked:e}){const{lang:t}=_e(),r=d2(),s=Ut(),[c,d]=_.useState(""),[m,h]=_.useState(null),f=async y=>{y.preventDefault(),h(null);const b=c.trim().toUpperCase();if(b)try{await r.mutateAsync({data:{code:b}}),s.invalidateQueries({queryKey:Md()}),s.invalidateQueries({queryKey:Ht()}),d(""),e()}catch{h(t==="en"?"This code is not valid. Please double-check it with the teacher.":"Este código no es válido. VerifÃcalo con el docente.")}};return o.jsxs(kt,{className:"p-5 mb-6",children:[o.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[o.jsx(x2,{className:"h-5 w-5 text-accent"}),o.jsx("h2",{className:"font-serif text-xl text-primary",children:t==="en"?"Add a child":"Agregar un hijo/a"})]}),o.jsx("p",{className:"text-sm text-muted-foreground mb-3",children:t==="en"?"Enter the 8-character code the teacher gave you for your child.":"Ingresa el código de 8 caracteres que el docente te dio para tu hijo/a."}),o.jsxs("form",{onSubmit:f,className:"flex flex-wrap gap-2",children:[o.jsx("input",{value:c,onChange:y=>d(y.target.value),placeholder:t==="en"?"Code":"Código",className:"flex-1 min-w-[180px] px-3 py-2 border border-border rounded-md text-sm font-mono uppercase tracking-wider",maxLength:64}),o.jsx(ue,{type:"submit",disabled:r.isPending||!c.trim(),children:r.isPending?t==="en"?"Linkingâ¦":"Vinculandoâ¦":t==="en"?"Link":"Vincular"})]}),m&&o.jsx("p",{className:"text-sm text-red-600 mt-3",children:m})]})}function qz({userId:e,onClose:t}){const{lang:r}=_e(),{data:s,isLoading:c}=QN(e,{query:{queryKey:u2(e)}});return o.jsxs(kt,{className:"p-5 mt-6",children:[o.jsxs("div",{className:"flex items-center justify-between mb-4",children:[o.jsx("h3",{className:"font-serif text-lg text-primary",children:r==="en"?"Weekly progress":"Progreso semanal"}),o.jsxs(ue,{variant:"outline",size:"sm",onClick:t,className:"gap-1",children:[o.jsx(gf,{className:"h-3.5 w-3.5"}),r==="en"?"Back":"Volver"]})]}),c?o.jsx("p",{className:"text-sm text-muted-foreground",children:r==="en"?"Loadingâ¦":"Cargandoâ¦"}):o.jsx("div",{className:"overflow-x-auto",children:o.jsxs("table",{className:"w-full text-sm",children:[o.jsx("thead",{className:"bg-secondary/10",children:o.jsxs("tr",{children:[o.jsx("th",{className:"text-left p-2",children:r==="en"?"Week":"Semana"}),o.jsx("th",{className:"text-left p-2",children:r==="en"?"Reflection":"Reflexión"}),o.jsx("th",{className:"text-left p-2",children:r==="en"?"Quiz":"Cuestionario"}),o.jsx("th",{className:"text-left p-2",children:r==="en"?"Completed":"Completada"})]})}),o.jsx("tbody",{children:Array.from({length:yC},(d,m)=>m+1).map(d=>{const m=s?.find(b=>b.week===d),h=!!m?.reflectionSubmittedAt,f=!!m?.assessmentSubmittedAt,y=!!m?.completedAt;return o.jsxs("tr",{className:"border-t border-border",children:[o.jsx("td",{className:"p-2 font-medium",children:d}),o.jsx("td",{className:"p-2",children:h?"â":"â"}),o.jsx("td",{className:"p-2",children:f&&m?.assessmentScore!=null&&m?.assessmentTotal!=null?`${m.asse
414ssmentScore} / ${m.assessmentTotal}`:"â"}),o.jsx("td",{className:"p-2 text-muted-foreground",children:y&&m?.completedAt?new Date(m.completedAt).toLocaleDateString():"â"})]},d)})})]})})]})}function Ez(){const{lang:e}=_e(),{isSignedIn:t,isLoaded:r}=fa(),{data:s,isLoading:c}=mn({query:{enabled:!!t,retry:!1,queryKey:Ht()}}),{data:d,isLoading:m,refetch:h}=WN({query:{enabled:!!t,queryKey:Md(),retry:!1}}),[f,y]=_.useState(null);return r?o.jsxs("div",{className:"container mx-auto px-4 py-10 max-w-4xl",children:[o.jsx(pa,{when:"signed-out",children:o.jsxs(kt,{className:"p-8 text-center",children:[o.jsx(br,{className:"h-10 w-10 mx-auto text-accent mb-3"}),o.jsx("h1",{className:"font-serif text-3xl text-primary mb-2",children:e==="en"?"Parent Dashboard":"Panel de Padres"}),o.jsx("p",{className:"text-muted-foreground mb-6",children:e==="en"?"Sign in or create a parent account to follow your child's progress at Woodbridge Academy.":"Inicia sesión o crea una cuenta de padre/madre para seguir el progreso de tu hijo/a en Woodbridge Academy."}),o.jsxs("div",{className:"flex gap-2 justify-center",children:[o.jsx(Te,{href:"/sign-up",children:o.jsx(ue,{children:e==="en"?"Create account":"Crear cuenta"})}),o.jsx(Te,{href:"/sign-in",children:o.jsx(ue,{variant:"outline",children:e==="en"?"Sign in":"Iniciar sesión"})})]})]})}),o.jsx(pa,{when:"signed-in",children:c?o.jsx("p",{className:"text-sm text-muted-foreground",children:e==="en"?"Loadingâ¦":"Cargandoâ¦"}):o.jsxs(o.Fragment,{children:[o.jsxs("div",{className:"flex items-center gap-3 mb-6 flex-wrap",children:[o.jsx(br,{className:"h-7 w-7 text-accent"}),o.jsx("h1",{className:"font-serif text-3xl text-primary",children:e==="en"?"Parent Dashboard":"Panel de Padres"}),s?.role==="parent"&&o.jsx("span",{className:"inline-flex items-center px-2 py-0.5 rounded text-xs font-semibold bg-accent/15 text-accent",children:e==="en"?"Parent":"Padre/Madre"})]}),o.jsx(Az,{onLinked:()=>h()}),o.jsxs(kt,{className:"overflow-x-auto",children:[o.jsxs("div",{className:"p-5 border-b border-border flex items-center gap-2",children:[o.jsx(mi,{className:"h-5 w-5 text-accent"}),o.jsx("h2",{className:"font-serif text-xl text-primary",children:e==="en"?"My children":"Mis hijos"})]}),o.jsxs("table",{className:"w-full text-sm",children:[o.jsx("thead",{className:"bg-secondary/10",children:o.jsxs("tr",{children:[o.jsx("th",{className:"text-left p-3",children:e==="en"?"Name":"Nombre"}),o.jsx("th",{className:"text-left p-3",children:e==="en"?"Email":"Correo"}),o.jsx("th",{className:"text-left p-3",children:e==="en"?"Completed":"Completadas"}),o.jsx("th",{className:"text-left p-3",children:e==="en"?"Last activity":"Ãltima actividad"}),o.jsx("th",{className:"p-3"})]})}),o.jsxs("tbody",{children:[m&&o.jsx("tr",{children:o.jsx("td",{colSpan:5,className:"p-4 text-muted-foreground",children:e==="en"?"Loadingâ¦":"Cargandoâ¦"})}),!m&&(d??[]).length===0&&o.jsx("tr",{children:o.jsx("td",{colSpan:5,className:"p-4 text-muted-foreground",children:e==="en"?"No children linked yet. Enter a code above to get started.":"Aún no hay hijos vinculados. Ingresa un código arriba para comenzar."})}),(d??[]).map(b=>o.jsxs("tr",{className:"border-t border-border",children:[o.jsx("td",{className:"p-3 font-medium text-primary",children:b.displayName||"â"}),o.jsx("td",{className:"p-3 text-muted-foreground",children:b.email||"â"}),o.jsxs("td",{className:"p-3",children:[b.completedCount," / ",yC]}),o.jsx("td",{className:"p-3 text-muted-foreground",children:b.lastActivityAt?new Date(b.lastActivityAt).toLocaleString():"â"}),o.jsx("td",{className:"p-3",children:o.jsx(ue,{variant:"outline",size:"sm",onClick:()=>y(b.userId),children:e==="en"?"View":"Ver"})})]},b.userId))]})]})]}),f&&o.jsx(qz,{userId:f,onClose:()=>y(null)})]})})]}):null}const Nz="/".replace(/\/$/,"");function Tz(){const{lang:e}=_e(),{isSignedIn:t,isLoaded:r}=fa(),[,s]=wr(),c=Zh(),d=_.useMemo(()=>new URLSearchParams(c).get("code")?.trim().toUpperCase()??"",[c]),m=Ut(),h=d2(),{data:f}=mn({query:{enabled:!!t,retry:!1,queryKey:Ht()}}),[y,b]=_.useState("idle"),[v,x]=_.useState(null),k=f?.role==="teacher"||f?.role==="admin";if(_.useEffect(()=>{if(!(!r||!t||!d||y!=="idle"||h.isPending)&&f){if(k){b("blocked"),x(e==="en"?"Teacher and admin accounts cannot be used as parent accounts. Please sign out and use a separate account for parent access.":"Las cuentas de docente y administrador no pueden usarse como cuenta de padre/madre. Cierra sesión y usa una cuenta separada para el acceso de padres.");return}h.mutateAsync({data:{code:d}}).then(()=>
414{b("ok"),m.invalidateQueries({queryKey:Ht()}),m.invalidateQueries({queryKey:Md()})}).catch(()=>{b("err"),x(e==="en"?"This link is invalid. Please ask the teacher for a new code.":"Este enlace no es válido. Pide al docente un código nuevo.")})}},[r,t,d,y,h,m,e,f,k]),!r)return null;const E=`${Nz}/parent/link?code=${encodeURIComponent(d)}`;return o.jsx("div",{className:"container mx-auto px-4 py-16 max-w-xl",children:o.jsxs(kt,{className:"p-8 text-center",children:[o.jsx(br,{className:"h-10 w-10 mx-auto text-accent mb-3"}),o.jsx("h1",{className:"font-serif text-3xl text-primary mb-2",children:e==="en"?"Link to your child":"Vincular con tu hijo/a"}),o.jsx("p",{className:"text-sm text-muted-foreground mb-6",children:"Woodbridge Academy"}),!d&&o.jsxs(o.Fragment,{children:[o.jsx("p",{className:"text-muted-foreground mb-6",children:e==="en"?"This link is missing a code.":"Este enlace no incluye un código."}),o.jsx(Te,{href:"/parent",children:o.jsx(ue,{variant:"outline",children:e==="en"?"Enter code manually":"Ingresar código manualmente"})})]}),d&&o.jsxs(pa,{when:"signed-out",children:[o.jsx("p",{className:"text-muted-foreground mb-6",children:e==="en"?"Create a parent account or sign in to connect with your child's progress.":"Crea una cuenta de padre/madre o inicia sesión para ver el progreso de tu hijo/a."}),o.jsxs("div",{className:"flex gap-2 justify-center flex-wrap",children:[o.jsx(ue,{onClick:()=>s(`/sign-up?redirect_url=${encodeURIComponent(E)}`),children:e==="en"?"Create account":"Crear cuenta"}),o.jsx(ue,{variant:"outline",onClick:()=>s(`/sign-in?redirect_url=${encodeURIComponent(E)}`),children:e==="en"?"Sign in":"Iniciar sesión"})]})]}),d&&o.jsxs(pa,{when:"signed-in",children:[(y==="idle"||h.isPending)&&o.jsx("p",{className:"text-muted-foreground",children:e==="en"?"Linking your accountâ¦":"Vinculando tu cuentaâ¦"}),y==="ok"&&o.jsxs(o.Fragment,{children:[o.jsx(In,{className:"h-10 w-10 mx-auto text-green-600 mb-2"}),o.jsx("p",{className:"text-foreground mb-6",children:e==="en"?"All set! You can now follow your child's progress.":"¡Listo! Ya puedes seguir el progreso de tu hijo/a."}),o.jsx(Te,{href:"/parent",children:o.jsx(ue,{children:e==="en"?"Open parent dashboard":"Abrir panel de padres"})})]}),y==="err"&&o.jsxs(o.Fragment,{children:[o.jsx(Oo,{className:"h-10 w-10 mx-auto text-red-600 mb-2"}),o.jsx("p",{className:"text-red-700 mb-6",children:v}),o.jsx(Te,{href:"/parent",children:o.jsx(ue,{variant:"outline",children:e==="en"?"Try a different code":"Probar otro código"})})]}),y==="blocked"&&o.jsxs(o.Fragment,{children:[o.jsx(Oo,{className:"h-10 w-10 mx-auto text-amber-600 mb-2"}),o.jsx("p",{className:"text-foreground mb-6",children:v}),o.jsx(Te,{href:"/",children:o.jsx(ue,{variant:"outline",children:e==="en"?"Back home":"Volver al inicio"})})]})]})]})})}const Mz="/".replace(/\/$/,"");function Pz(){const{lang:e}=_e(),{isSignedIn:t,isLoaded:r}=fa(),[,s]=wr(),c=Zh(),d=_.useMemo(()=>new URLSearchParams(c).get("token")??"",[c]),m=_.useMemo(()=>new URLSearchParams(c).get("kind")==="group",[c]),h=Ut(),f=OT(),y=RT(),[b,v]=_.useState("idle"),[x,k]=_.useState(null);if(_.useEffect(()=>{const C=m?y:f;!r||!t||!d||b!=="idle"||C.isPending||C.mutateAsync({data:{token:d}}).then(()=>{v("ok"),h.invalidateQueries({queryKey:Ht()})}).catch(()=>{v("err"),k(e==="en"?"This invitation link is invalid, expired, or for a different email address.":"Este enlace de invitación es inválido, ha vencido o corresponde a otro correo.")})},[r,t,d,b,f,y,m,h,e]),!r)return null;const E=`${Mz}/student/accept?${m?"kind=group&":""}token=${encodeURIComponent(d)}`;return o.jsx("div",{className:"container mx-auto px-4 py-16 max-w-xl",children:o.jsxs(kt,{className:"p-8 text-center",children:[o.jsx(yr,{className:"h-10 w-10 mx-auto text-accent mb-3"}),o.jsx("h1",{className:"font-serif text-3xl text-primary mb-2",children:e==="en"?"Student invitation":"Invitación de estudiante"}),!d&&o.jsxs(o.Fragment,{children:[o.jsx("p",{className:"text-muted-foreground mb-6",children:e==="en"?"This link is missing an invitation token.":"Este enlace no incluye un token de invitación."}),o.jsx(Te,{href:"/",children:o.jsx(ue,{variant:"outline",children:e==="en"?"Back home":"Volver al inicio"})})]}),d&&o.jsxs(pa,{when:"signed-out",children:[o.jsx("p",{className:"text-muted-foreground mb-6",children:e==="en"?m?"Please sign in or create a student account to join this group.":"Please sign in or create an account with the same email address that received the invitation.":m?"Inicia sesión o crea una cuenta de estudiante para unirte a este grupo.":"Inicia sesión o crea una cuenta con el mismo correo al que llegó la invitación."}),o.jsxs("div",{className:"flex gap-2 justify-center",children:[o.jsx(ue,{onClick:()=>s(`/sign-in?redirect_url=${encodeURIComponent(E)}`),children:e==="en"?"Sign in":"Iniciar sesión"}),o.jsx(ue,{variant:"outline",onClick:()=>s(`/sign-up?redirect_url=${encodeURIComponent(E)}`),children:e==="en"?"Create account":"Crear cuenta"})]})]}),d&&o.jsxs(pa,{when:"signed-in",children:[(b==="idle"||f.isPending)&&o.jsx("p",{className:"text-muted-foreground",children:e==="en"?"Verifying your invitationâ¦":"Verificando tu invitaciónâ¦"}),b==="ok"&&o.jsxs(o.Fragment,{children:[o.jsx(In,{className:"h-10 w-10 mx-auto text-green-600 mb-2"}),o.jsx("p",{className:"text-foreground mb-6",children:e==="en"?"Welcome! You're now enrolled and can submit evaluations.":"¡Bienvenido/a! Ahora estás matriculado/a y puedes enviar evaluaciones."}),o.jsx(Te,{href:"/",children:o.jsx(ue,{children:e==="en"?"Go to course":"Ir al curso"})})]}),b==="err"&&o.jsxs(o.Fragment,{children:[o.jsx(Oo,{className:"h-10 w-10 mx-auto text-red-600 mb-2"}),o.jsx("p",{className:"text-red-700 mb-6",children:x}),o.jsx(Te,{href:"/",children:o.jsx(ue,{variant:"outline",children:e==="en"?"Back home":"Volver al inicio"})})]})]})]})})}function _z(){const{lang:e}=_e(),t=Ut(),{data:r,isLoading:s}=$T({query:{queryKey:Jc()}}),c=YT(),[d,m]=_.useState(null),h=async(f,y)=>{if(m(d===f?null:f),!y&&d!==f)try{await c.mutateAsync({id:f}),t.invalidateQueries({queryKey:Jc()}),t.invalidateQueries({queryKey:Ht()})}catch{}};return o.jsxs("div",{className:"container mx-auto px-4 py-10 max-w-3xl",children:[o.jsx(pa,{when:"signed-out",children:o.jsxs("div",{className:"max-w-xl mx-auto mt-12 text-center",children:[o.jsx("h1",{className:"font-serif text-3xl text-primary mb-3",children:e==="en"?"Inbox":"Bandeja de entrada"}),o.jsx("p",{className:"text-muted-foreground mb-4",children:e==="en"?"Please sign in to read your messages.":"Inicia sesión para leer tus mensajes."}),o.jsx(Te,{href:"/sign-in",children:o.jsx(ue,{children:e==="en"?"Sign in":"Iniciar sesión"})})]})}),o.jsxs(pa,{when:"signed-in",children:[o.jsxs("div",{className:"flex items-center gap-3 mb-6",children:[o.jsx(PM,{className:"h-7 w-7 text-accent"}),o.jsx("h1",{className:"font-serif text-3xl text-primary",children:e==="en"?"Inbox":"Bandeja de entrada"})]}),o.jsxs(kt,{className:"overflow-hidden",children:[s&&o.jsx("p",{className:"p-6 text-sm text-muted-foreground",children:e==="en"?"Loadingâ¦":"Cargandoâ¦"}),!s&&(!r||r.length===0)&&o.jsx("p",{className:"p-6 text-sm text-muted-foreground",children:e==="en"?"No messages yet.":"Aún no hay mensajes."}),o.jsx("ul",{className:"divide-y divide-border",children:(r??[]).map(f=>{const y=!f.readAt,b=d===f.id;return o.jsxs("li",{className:y?"bg-amber-50/50":"",children:[o.jsxs("button",{onClick:()=>h(f.id,!y),className:"w-full text-left px-4 py-3 hover:bg-secondary/5 flex items-center gap-3",children:[y?o.jsx(yr,{className:"h-5 w-5 text-amber-600 shrink-0"}):o.jsx(YM,{className:"h-5 w-5 text-muted-foreground shrink-0"}),o.jsxs("div",{className:"min-w-0 flex-1",children:[o.jsxs("div",{className:"flex items-center justify-between gap-2",children:[o.jsx("span",{className:`truncate ${y?"font-semibold text-foreground":"text-foreground"}`,children:f.subject}),o.jsx("span",{className:"text-xs text-muted-foreground shrink-0",children:new Date(f.sentAt).toLocaleDateString()})]}),o.jsxs("div",{className:"text-xs text-muted-foreground truncate",children:[e==="en"?"From ":"De ",f.fromName??f.fromUserId]})]})]}),b&&o.jsx("div",{className:"px-12 pb-5 pt-1",children:o.jsx("div",{className:"whitespace-pre-wrap text-sm text-foreground bg-card border border-border rounded-md p-4",children:f.body})})]},f.id)})})]})]})]})}
414const Rz={correct:{es:"Correcto â 1/1 pts",en:"Correct â 1/1 pt"},incorrect:{es:"Incorrecto â 0/1 pts",en:"Incorrect â 0/1 pt"},incomplete:{es:"Incompleto â 0/1 pts",en:"Incomplete â 0/1 pt"}};function Iz(){const{lang:e}=_e(),{isSignedIn:t,isLoaded:r}=fa(),{data:s,isLoading:c}=mn({query:{enabled:!!t,retry:!1,queryKey:Ht()}}),d=!!t&&s?.role==="student",{data:m,isLoading:h,isError:f}=VE({query:{enabled:d,retry:!1,refetchOnMount:"always",queryKey:c2()}}),y=v=>v?new Date(v).toLocaleString(e==="es"?"es-GT":"en-US",{dateStyle:"medium",timeStyle:"short"}):"â",b=(v,x)=>e==="es"?v:x;return o.jsxs("div",{className:"mx-auto max-w-4xl px-4 py-8",children:[o.jsx("h1",{className:"mb-2 font-serif text-3xl text-primary",children:b("Mi progreso / Libro de calificaciones","My Progress / Gradebook")}),o.jsx("p",{className:"mb-6 text-sm text-muted-foreground",children:b("Historial de tus entregas, evaluaciones y comentarios del curso.","Your course submissions, quizzes, and feedback history.")}),!r||t&&c?o.jsx("p",{children:b("Cargandoâ¦","Loadingâ¦")}):t?d?h?o.jsx("p",{children:b("Cargando historialâ¦","Loading historyâ¦")}):f?o.jsx("p",{role:"alert",className:"text-red-700",children:b("No se pudo cargar tu historial. Intenta de nuevo.","Your history couldn't be loaded. Please try again.")}):o.jsxs(o.Fragment,{children:[m?.generalFeedback&&o.jsxs("section",{className:"mb-5 rounded-xl border border-blue-200 bg-blue-50 p-4",children:[o.jsx("h2",{className:"font-semibold",children:b("Retroalimentación general","General feedback")}),o.jsx("p",{className:"whitespace-pre-wrap text-sm",children:m.generalFeedback})]}),!m?.weeks.length&&o.jsx("p",{children:b("Aún no hay entregas ni evaluaciones registradas.","No submissions or quizzes recorded yet.")}),o.jsx("div",{className:"space-y-4",children:m?.weeks.map(v=>{const x=ra.find(k=>k.week===v.week);return o.jsxs("section",{className:"rounded-xl border border-border bg-card p-4 shadow-sm",children:[o.jsx("h2",{className:"mb-2 font-serif text-xl text-primary",children:o.jsxs(Te,{href:`/lesson/${v.week}`,className:"hover:underline",children:[b("Semana","Week")," ",v.week,": ",x?.title[e]??""]})}),o.jsxs("div",{className:"grid gap-x-4 gap-y-1 text-sm sm:grid-cols-2",children:[o.jsxs("p",{children:[b("Reflexión enviada","Reflection submitted"),": ",y(v.reflectionSubmittedAt)]}),o.jsxs("p",{children:[b("Lección completada","Lesson completed"),": ",y(v.completedAt)]}),o.jsxs("p",{children:[b("Quiz (mejor nota)","Quiz (best score)"),": ",v.assessmentScore??"â"," / ",v.assessmentTotal??"â"]}),o.jsxs("p",{children:[b("Ãltimo quiz","Latest quiz"),": ",y(v.assessmentSubmittedAt)]})]}),v.performanceTaskUrl&&o.jsxs("div",{className:"mt-3 border-t border-border pt-3 text-sm",children:[o.jsx("p",{className:"font-semibold",children:b("Enlace enviado","Submitted link")}),o.jsx("a",{href:v.performanceTaskUrl,target:"_blank",rel:"noopener noreferrer",className:"break-all text-blue-700 underline",children:v.performanceTaskUrl}),o.jsxs("p",{children:[b("Enviado","Submitted"),": ",y(v.performanceTaskSubmittedAt)]}),o.jsxs("p",{children:[b("Estado","Status"),": ",v.performanceTaskStatus??b("Pendiente","Pending")]}),v.performanceTaskFeedback&&o.jsxs("p",{className:"whitespace-pre-wrap",children:[b("Retroalimentación","Feedback"),": ",v.performanceTaskFeedback]}),o.jsxs("p",{children:[b("Revisado","Reviewed"),": ",y(v.performanceTaskReviewedAt)]})]}),v.teacherFeedback&&o.jsxs("div",{className:"mt-3 rounded-lg bg-blue-50 p-3 text-sm",children:[o.jsxs("strong",{children:[b("Retroalimentación","Feedback"),":"]})," ",o.jsx("span",{className:"whitespace-pre-wrap",children:v.teacherFeedback})]}),v.assessmentAttempts.map(k=>o.jsxs("details",{className:"mt-3 rounded-lg border border-border p-3 text-sm",children:[o.jsxs("summary",{className:"cursor-pointer font-medium",children:[b("Intento","Attempt")," ",k.attemptNumber," · ",k.score??"â","/",k.total??"â"," · ",y(k.submittedAt)]}),o.jsx("ol",{className:"mt-3 space-y-3",children:k.questions.map((E,C)=>o.jsxs("li",{className:"border-t border-border pt-2",children:[o.jsxs("p",{className:"font-medium",children:[C+1,". ",E.prompt[e]]}),o.jsxs("p",{children:[b("Elegiste","You selected"),": ",E.selectedAnswer?.[e]??b("Sin respuesta","No answer")]}),o.jsx("p",{className:E.status==="correct"?"text-green-700":"text-amber-800",children:Rz[E.status][e]}),E.feedback&&o.jsxs("p",{className:"whitespace-pre-wrap",children:[b("Comentario","Comment"),": ",E.feedback]})]},E.id))})]},k.attemptNumber))]},v.week)})})]}):o.jsx("p",{children:b("Este historial solo está disponible para estudiantes.","This history is available to students only.")}):o.jsxs("p",{children:[b("Inicia sesión como estudiante para ver tu progreso.","Sign in as a student to see your progress.")," ",o.jsx(Te,{href:"/sign-in",className:"underline",children:b("Iniciar sesión","Sign in")})]})]})}const Uz={cssLayerName:"clerk",elements:{rootBox:"w-full student-account-profile-root",cardBox:"w-full shadow-none"}};function _n(e){return typeof e=="string"&&e.trim()?e.trim():typeof e=="number"&&Number.isFinite(e)?String(e):null}function Dz(){const{lang:e}=_e(),{openUserProfile:t}
414=cf(),{isSignedIn:r,isLoaded:s,user:c}=fa(),{data:d,isLoading:m}=mn({query:{enabled:!!r,retry:!1,queryKey:[...Ht(),c?.id]}}),h=!!r&&d?.role==="student",{data:f,isLoading:y,isError:b}=At({queryKey:["student","profile","report",c?.id],queryFn:()=>je("/api/student/profile"),enabled:h,retry:!1,refetchOnMount:"always"}),v=(R,I)=>e==="es"?R:I,x=_n(f?.student.displayName)??_n(d?.displayName),k=_n(c?.primaryEmailAddress?.emailAddress)??_n(f?.student.email)??_n(d?.email),E=_n(f?.student.identification),C=_n(f?.student.groupName)??_n(d?.groupName),N=_n(f?.student.teacherName),q=v("No registrado","Not recorded");return o.jsxs("div",{className:"mx-auto max-w-5xl px-4 py-8",children:[o.jsxs("header",{className:"mb-6",children:[o.jsxs("div",{className:"mb-2 flex items-center gap-3",children:[o.jsx(g2,{className:"h-8 w-8 text-primary","aria-hidden":"true"}),o.jsx("h1",{className:"font-serif text-3xl text-primary",children:v("Perfil estudiantil","Student profile")})]}),o.jsx("p",{className:"text-sm text-muted-foreground",children:v("Tu identidad académica es de solo lectura y se mantiene según el registro institucional.","Your academic identity is read-only and remains as recorded by your institution.")})]}),!s||r&&m?o.jsx("p",{"data-testid":"status-profile-loading",role:"status",children:v("Cargando perfilâ¦","Loading profileâ¦")}):r?h?o.jsxs("div",{className:"space-y-6",children:[o.jsxs(kt,{children:[o.jsxs(Wc,{children:[o.jsx(Gc,{
414className:"font-serif text-xl text-primary",children:v("Identidad académica","Academic identity")}),o.jsx(Kc,{children:v("Estos datos provienen del registro académico. ComunÃcate con tu institución para solicitar una corrección.","These details come from your academic record. Contact your institution to request a correction.")})]}),o.jsx(Hc,{children:o.jsxs("dl",{className:"grid gap-4 sm:grid-cols-2",children:[o.jsxs("div",{children:[o.jsx("dt",{className:"text-sm text-muted-foreground",children:v("Nombre registrado","Registered name")}),o.jsx("dd",{className:"mt-1 font-medium","data-testid":"text-profile-name",children:x??q})]}),o.jsxs("div",{children:[o.jsx("dt",{className:"text-sm text-muted-foreground",children:v("Correo electrónico","Email address")}),o.jsx("dd",{className:"mt-1 break-all font-medium","data-testid":"text-profile-email",children:k??q})]}),o.jsxs("div",{children:[o.jsx("dt",{className:"text-sm text-muted-foreground",children:v("Identificación","Identification")}),o.jsx("dd",{className:"mt-1 font-medium","data-testid":"text-profile-identification",children:E??q})]}),o.jsxs("div",{children:[o.jsx("dt",{className:"text-sm text-muted-foreground",children:v("Grupo","Group")}),o.jsx("dd",{className:"mt-1 font-medium","data-testid":"text-profile-group",children:C??q})]}),o.jsxs("div",{children:[o.jsx("dt",{className:"text-sm text-muted-foreground",children:v("Docente","Teacher")}),o.jsx("dd",{className:"mt-1 font-medium","data-testid":"text-profile-teacher",children:N??q})]})]})})]}
414),o.jsxs(kt,{children:[o.jsxs(Wc,{children:[o.jsx(Gc,{className:"font-serif text-xl text-primary",children:v("Cuenta y seguridad","Account and security")}),o.jsxs(Kc,{className:"flex items-center gap-2",children:[o.jsx(VM,{className:"h-4 w-4 shrink-0","aria-hidden":"true"}),v("Administra tu correo y contraseña de inicio de sesión de forma segura. El nombre y la foto de cuenta no se pueden editar aquÃ.","Safely manage your sign-in email and password. Your account name and photo cannot be edited here.")]})]}),o.jsx(Hc,{className:"overflow-x-auto",children:o.jsx(ue,{variant:"outline",onClick:()=>t({appearance:Uz}),"data-testid":"manage-student-account",children:v("Administrar correo y contraseña","Manage email and password")})})]}),o.jsxs(kt,{children:[o.jsxs(Wc,{children:[o.jsx(Gc,{className:"font-serif text-xl text-primary",children:v("Reporte académico","Academic report")}),o.jsx(Kc,{children:v("Consulta tus calificaciones, entregas y retroalimentación del curso.","Review your course grades, submissions, and feedback.")})]}),o.jsx(Hc,{children:y?o.jsx("p",{"data-testid":"status-report-loading",role:"status",children:v("Cargando reporteâ¦","Loading reportâ¦")}):b?o.jsx("p",{role:"alert",className:"text-sm text-destructive","data-testid":"status-report-error",children:v("No se pudo cargar tu reporte académico. Intenta actualizar la página.","Your academic report could not be loaded. Please refresh the page.")}):f?o.jsx(lC,{report:f}):o.jsx("p",{"data-testid":"status-report-empty",children:v("Aún no hay un reporte disponible.","No report is available yet.")})})]})]}):o.jsx("p",{"data-testid":"status-profile-student-only",children:v("Este perfil está disponible solamente para estudiantes.","This profile is available to students only.")}):o.jsxs("p",{"data-testid":"status-profile-sign-in",children:[v("Inicia sesión como estudiante para ver tu perfil.","Sign in as a student to view your profile.")," ",o.jsx(Te,{href:"/sign-in",className:"underline","data-testid":"link-profile-sign-in",children:v("Iniciar sesión","Sign in")})]})]})}const bC=CA(window.location.hostname,"pk_live_Y2xlcmsubWF0aGs0LmVkdTI0Lmd0JA"),Oz="/api/__clerk",dn="/".replace(/\/$/,"");function ew(e){return dn&&e.startsWith(dn)?e.slice(dn.length)||"/":e}if(!bC)throw new Error("Missing VITE_CLERK_PUBLISHABLE_KEY");const vC={cssLayerName:"clerk",variables:{colorPrimary:"#1e2a4d",colorForeground:"#0f172a",colorMutedForeground:"#64748b",colorDanger:"#dc2626",colorBackground:"#ffffff",colorInput:"#ffffff",colorInputForeground:"#0f172a",colorNeutral:"#cbd5e1",fontFamily:"Inter, system-ui, sans-serif",borderRadius:"0.75rem"},elements:{rootBox:"w-full flex justify-center",cardBox:"bg-card rounded-2xl w-[440px] max-w-full overflow-hidden border border-border shadow-xl",card:"!shadow-none !border-0 !bg-transparent !rounded-none",footer:"!shadow-none !border-0 !bg-transparent !rounded-none",headerTitle:"font-serif text-primary",headerSubtitle:"text-muted-foreground",formButtonPrimary:"bg-primary hover:bg-primary/90 text-primary-foreground",socialButtonsBlockButtonText:"text-foreground",formFieldLabel:"text-foreground",footerActionLink:"text-accent",footerActionText:"text-muted-foreground",dividerText:"text-muted-foreground"}};function Lz(){return o.jsx("div",{className:"flex min-h-[80vh] items-center justify-center px-4 py-12",children:o.jsx(p5,{routing:"path",path:`${dn}/sign-in`,signUpUrl:`${dn}/sign-up`,appearance:vC})})}function zz(){return o.jsx("div",{className:"flex min-h-[80vh] items-center justify-center px-4 py-12",children:o.jsx(h5,{routing:"path",path:`${dn}/sign-up`,signInUrl:`${dn}/sign-in`,appearance:vC})})}function Fz(){const{isLoaded:e,userId:t}=uf(),r=S.useRef(void 0);return S.useEffect(()=>{if(!e)return;const s=t??null;if(r.current===void 0){r.current=s;return}r.current!==s&&(qk.clear(),r.current=s)},[e,t]),null}function $z(){const[,e]=wr();return o.jsx(Jw,{publishableKey:bC,proxyUrl:Oz,signInUrl:`${dn}/sign-in`,signUpUrl:`${dn}/sign-up`,routerPush:t=>e(ew(t)),routerReplace:t=>e(ew(t),{replace:!0}),children:o.jsxs(pE,{client:qk,children:[o.jsx(Fz,{}),o.jsx(IR,{children:o.jsx(qR,{children:o.jsxs(gA,{children:[o.jsx(Ft,{path:"/",component:_O}),o.jsx(Ft,{path:"/units/:id",component:DO}),o.jsx(Ft,{path:"/lesson/:week",component:vL}),o.jsx(Ft,{path:"/about",component:OL}),o.jsx(Ft,{path:"/curriculum-map",component:LL}),o.jsx(Ft,{path:"/deliverables",component:zL}),o.jsx(Ft,{path:"/qm",component:HL}),o.jsx(Ft,{path:"/teacher",component:Sz}),o.jsx(Ft,{path:"/teacher/accept",component:jz}),o.jsx(Ft,{path:"/parent",component:Ez}),o.jsx(Ft,{path:"/parent/link",component:Tz}),o.jsx(Ft,{path:"/student/accept",component:Pz}),o.jsx(Ft,{path:"/inbox",component:_z}),o.jsx(Ft,{path:"/my-progress",component:Iz}),o.jsx(Ft,{path:"/profile",component:Dz}),o.jsx(Ft,{path:"/sign-in/*?",component:Lz}),o.jsx(Ft,{path:"/sign-up/*?",component:zz}),o.jsx(Ft,{component:rg})]})})})]})})}function Bz(){return o.jsx(jE,{children:o.jsx(dw,{base:dn,children:o.jsx($z,{})})})}EE("math-g4");Qh.createRoot(document.getElementById("root")).render(o.jsx(Bz,{}));
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.