1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[636],{92:(t,r,i)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/_app",function(){return i(25059)}])},1856:(t,r,i)=>{"use strict";function a(t,r){return r?1e3/r*t:0}i.d(r,{f:()=>a})},1960:(t,r,i)=>{"use strict";i.d(r,{S:()=>a});let a=/-?(?:\d+(?:\.\d+)?|\.\d+)/gu},2205:(t,r,i)=>{"use strict";i.d(r,{B:()=>a});let a="undefined"!=typeof window},2589:(t,r,i)=>{"use strict";i.d(r,{q:()=>a});let a=(t,r,i)=>{let a=r-t;return 0===a?1:(i-t)/a}},2703:(t,r,i)=>{"use strict";i.d(r,{J:()=>n});var a=i(14232);let n=t=>{let[r,i]=(0,a.useState)({rating:void 0,lastRating:void 0,session:{gamesPlayed:0,gamesWon:0},lifetime:void 0});return(0,a.useEffect)(()=>{(async()=>{let a=await t();i(t=>({...r,rating:a.rating,lastRating:r.rating,lifetime:{gamesPlayed:a.gamesPlayed,gamesWon:a.gamesWon}}))})()},[]),[r,(0,a.useCallback)((t,r)=>{i(i=>({...i,session:{gamesPlayed:i.session.gamesPlayed+t,gamesWon:i.session.gamesWon+r},lifetime:i.lifetime?{gamesPlayed:i.lifetime.gamesPlayed+t,gamesWon:i.lifetime.gamesWon+r}:{gamesPlayed:t,gamesWon:r}}))},[]),(0,a.useCallback)(t=>{i(r=>({...r,rating:t,lastRating:r.rating}))},[])]}},2926:(t,r,i)=>{"use strict";i.d(r,{F:()=>n});let a=(t,r)=>i=>r(t(i)),n=(...t)=>t.reduce(a)},3717:t=>{"use strict";t.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},3866:(t,r,i)=>{"use strict";i.d(r,{t:()=>a});let a=(0,i(14232).createContext)(null)},5048:(t,r,i)=>{"use strict";i.d(r,{L:()=>a});let a=(0,i(14232).createContext)({})},5897:(t,r,i)=>{"use strict";i.d(r,{u:()=>n});var a=i(12562);let n={test:(0,i(31062).$)("#"),parse:function(t){let r="",i="",a="",n="";return t.length>5?(r=t.substring(1,3),i=t.substring(3,5),a=t.substring(5,7),n=t.substring(7,9)):(r=t.substring(1,2),i=t.substring(2,3),a=t.substring(3,4),n=t.substring(4,5),r+=r,i+=i,a+=a,n+=n),{red:parseInt(r,16),green:parseInt(i,16),blue:parseInt(a,16),alpha:n?parseInt(n,16)/255:1}},transform:a.B.transform}},6162:(t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.ROOKS=r.SQUARES=r.RANKS=r.RANK_8=r.RANK_7=r.RANK_6=r.RANK_5=r.RANK_4=r.RANK_3=r.RANK_2=r.RANK_1=r.BITS=r.FLAGS=r.SHIFTS=r.RAYS=r.ATTACKS=r.PIECE_OFFSETS=r.PAWN_OFFSETS=r.POSSIBLE_RESULTS=r.DEFAULT_POSITION=r.SYMBOLS=r.EMPTY=r.KING=r.QUEEN=r.ROOK=r.BISHOP=r.KNIGHT=r.PAWN=r.BLACK=r.WHITE=void 0,r.WHITE="w",r.BLACK="b",r.PAWN="p",r.KNIGHT="n",r.BISHOP="b",r.ROOK="r",r.QUEEN="q",r.KING="k",r.EMPTY=-1,r.SYMBOLS="pnbrqkPNBRQK",r.DEFAULT_POSITION="rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1",r.POSSIBLE_RESULTS=["1-0","0-1","1/2-1/2","*"],r.PAWN_OFFSETS={b:[16,32,17,15],w:[-16,-32,-17,-15]},r.PIECE_OFFSETS={p:[],n:[-18,-33,-31,-14,18,33,31,14],b:[-17,-15,17,15],r:[-16,1,16,-1],q:[-17,-16,-15,1,17,16,15,-1],k:[-17,-16,-15,1,17,16,15,-1]},r.ATTACKS=[20,0,0,0,0,0,0,24,0,0,0,0,0,0,20,0,0,20,0,0,0,0,0,24,0,0,0,0,0,20,0,0,0,0,20,0,0,0,0,24,0,0,0,0,20,0,0,0,0,0,0,20,0,0,0,24,0,0,0,20,0,0,0,0,0,0,0,0,20,0,0,24,0,0,20,0,0,0,0,0,0,0,0,0,0,20,2,24,2,20,0,0,0,0,0,0,0,0,0,0,0,2,53,56,53,2,0,0,0,0,0,0,24,24,24,24,24,24,56,0,56,24,24,24,24,24,24,0,0,0,0,0,0,2,53,56,53,2,0,0,0,0,0,0,0,0,0,0,0,20,2,24,2,20,0,0,0,0,0,0,0,0,0,0,20,0,0,24,0,0,20,0,0,0,0,0,0,0,0,20,0,0,0,24,0,0,0,20,0,0,0,0,0,0,20,0,0,0,0,24,0,0,0,0,20,0,0,0,0,20,0,0,0,0,0,24,0,0,0,0,0,20,0,0,20,0,0,0,0,0,0,24,0,0,0,0,0,0,20],r.RAYS=[17,0,0,0,0,0,0,16,0,0,0,0,0,0,15,0,0,17,0,0,0,0,0,16,0,0,0,0,0,15,0,0,0,0,17,0,0,0,0,16,0,0,0,0,15,0,0,0,0,0,0,17,0,0,0,16,0,0,0,15,0,0,0,0,0,0,0,0,17,0,0,16,0,0,15,0,0,0,0,0,0,0,0,0,0,17,0,16,0,15,0,0,0,0,0,0,0,0,0,0,0,0,17,16,15,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,-15,-16,-17,0,0,0,0,0,0,0,0,0,0,0,0,-15,0,-16,0,-17,0,0,0,0,0,0,0,0,0,0,-15,0,0,-16,0,0,-17,0,0,0,0,0,0,0,0,-15,0,0,0,-16,0,0,0,-17,0,0,0,0,0,0,-15,0,0,0,0,-16,0,0,0,0,-17,0,0,0,0,-15,0,0,0,0,0,-16,0,0,0,0,0,-17,0,0,-15,0,0,0,0,0,0,-16,0,0,0,0,0,0,-17],r.SHIFTS={p:0,n:1,b:2,r:3,q:4,k:5},r.FLAGS={NORMAL:"n",CAPTURE:"c",BIG_PAWN:"b",EP_CAPTURE:"e",PROMOTION:"p",KSIDE_CASTLE:"k",QSIDE_CASTLE:"q"},r.BITS={NORMAL:1,CAPTURE:2,BIG_PAWN:4,EP_CAPTURE:8,PROMOTION:16,KSIDE_CASTLE:32,QSIDE_CASTLE:64},r.RANK_1=7,r.RANK_2=6,r.RANK_3=5,r.RANK_4=4,r.RANK_5=3,r.RANK_6=2,r.RANK_7=1,r.RANK_8=0,r.RANKS=[r.RANK_8,r.RANK_7,r.RANK_6,r.RANK_5,r.RANK_4,r.RANK_3,r.RANK_2,r.RANK_1],r.SQUARES={a8:0,b8:1,c8:2,d8:3,e8:4,f8:5,g8:6,h8:7,a7:16,b7:17,c7:18,d7:19,e7:20,f7:21,g7:22,h7:23,a6:32,b6:33,c6:34,d6:35,e6:36,f6:37,g6:38,h6:39,a5:48,b5:49,c5:50,d5:51,e5:52,f5:53,g5:54,h5:55,a4:64,b4:65,c4:66,d4:67,e4:68,f4:69,g4:70,h4:71,a3:80,b3:81,c3:82,d3:83,e3:84,f3:85,g3:86,h3:87,a2:96,b2:97,c2:98,d2:99,e2:100,f2:101,g2
1:102,h2:103,a1:112,b1:113,c1:114,d1:115,e1:116,f1:117,g1:118,h1:119},r.ROOKS={w:[{square:r.SQUARES.a1,flag:r.BITS.QSIDE_CASTLE},{square:r.SQUARES.h1,flag:r.BITS.KSIDE_CASTLE}],b:[{square:r.SQUARES.a8,flag:r.BITS.QSIDE_CASTLE},{square:r.SQUARES.h8,flag:r.BITS.KSIDE_CASTLE}]}},6249:(t,r,i)=>{"use strict";i.d(r,{d:()=>a});let a={current:!1}},7862:(t,r,i)=>{"use strict";function a(t){let r;return()=>(void 0===r&&(r=t()),r)}i.d(r,{p:()=>a})},9186:(t,r,i)=>{"use strict";i.d(r,{l:()=>s});var a=i(32711),n=i(98082);class s{setHeader(t,r){this.headers.set(t,r)}getHeader(t){return this.headers.get(t)}toPGN(){return this.toChess().pgn()}toChess(){let t=new a.d$;this.root.fen!==t.fen()&&t.load(this.root.fen),this.headers.forEach((r,i)=>{t.addHeader(i,r)});let r=!1,i=this.root;for(;!r;)i.mainChild?(i=i.mainChild,t.move(i.san||i.move||"")):r=!0;return t}getRoot(){return this.root}getLastMainlineNode(){let t=this.root.getMainLine();return t[t.length-1]}getMainLine(){return this.root.getMainLine()}addMainlineNode(t,r,i,a,n,s){return t.addChild(r,i,a,!0,n,s)}addVariationNode(t,r,i,a,n,s){return t.findVariation(i)?t.findVariation(i):t.addChild(r,i,a,!1,n,s)}toMoveArray(){let t=[],r=this.root;for(;r.mainChild;)(r=r.mainChild).move&&t.push(r.move);return t}toTimeArray(){let t=[],r=this.root;for(;r.mainChild;)t.push((r=r.mainChild).time||0);return t}addMoveToMainLine(t,r){let i=this.getMainLine(),n=i[i.length-1],s=new a.d$(n.fen),o=s.move(t,{sloppy:!0});return o?this.addMainlineNode(n,s.fen(),t,o.san,void 0,r):null}addMovesToMainLine(t,r){let i=null;for(let a=0;a<t.length;a++){let n=t[a],s=null==r?void 0:r[a];if(!(i=this.addMoveToMainLine(n,s)))return null}return i}constructor(t){this.root=new n.R(t),this.headers=new Map,"rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1"!==t&&(this.headers.set("SetUp","1"),this.headers.set("FEN",t))}}},9504:(t,r,i)=>{"use strict";i.d(r,{u:()=>of,t:()=>op});var a,n,s,o,l,u,d,c,h,f,p,m,g,b,y,v,_,w,x,$,S,k,C,E,T,I,A,N,O,M,P,R,j,z=i(37876),D=Object.defineProperty,B=Object.getOwnPropertyDescriptor,L=Object.getOwnPropertyNames,U=Object.prototype.hasOwnProperty,F=(t=>"u">typeof require?require:"u">typeof Proxy?new Proxy(t,{get:(t,r)=>("u">typeof require?require:t)[r]}):t)(function(t){if("u">typeof require)return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')}),q=(t,r)=>()=>(t&&(r=t(t=0)),r),V=(t,r)=>{for(var i in r)D(t,i,{get:r[i],enumerable:!0})},W=t=>((t,r,i,a)=>{if(r&&"object"==typeof r||"function"==typeof r)for(let n of L(r))U.call(t,n)||n===i||D(t,n,{get:()=>r[n],enumerable:!(a=B(r,n))||a.enumerable});return t})(D({},"__esModule",{value:!0}),t),H=q(()=>{a=new Map,n=[],s=(t,r,i)=>{if(r&&"function"==typeof r.init&&"function"==typeof r.createInferenceSessionHandler){let s=a.get(t);if(void 0===s)a.set(t,{backend:r,priority:i});else{if(s.priority>i)return;if(s.priority===i&&s.backend!==r)throw Error(`cannot register backend "${t}" using priority ${i}`)}if(i>=0){let r=n.indexOf(t);-1!==r&&n.splice(r,1);for(let r=0;r<n.length;r++)if(a.get(n[r]).priority<=i)return void n.splice(r,0,t);n.push(t)}return}throw TypeError("not a valid backend")},o=async t=>{let r=a.get(t);if(!r)return"backend not found.";if(r.initialized)return r.backend;if(r.aborted)return r.error;{let i=!!r.initPromise;try{return i||(r.initPromise=r.backend.init(t)),await r.initPromise,r.initialized=!0,r.backend}catch(t){return i||(r.error=`${t}`,r.aborted=!0),r.error}finally{delete r.initPromise}}},l=async t=>{let r=t.executionProviders||[],i=r.map(t=>"string"==typeof t?t:t.name),a=0===i.length?n:i,s,l=[],u=new Set;for(let t of a){let r=await o(t);"string"==typeof r?l.push({name:t,err:r}):(s||(s=r),s===r&&u.add(t))}if(!s)throw Error(`no available backend found. ERR: ${l.map(t=>`[${t.name}] ${t.err}`).join(", ")}`);for(let{name:t,err:r}of l)i.includes(t)&&console.warn(`removing requested execution provider "${t}" from session options because it is not available: ${r}`);let d=r.filter(t=>u.has("string"==typeof t?t:t.name));return[s,new Proxy(t,{get:(t,r)=>"executionProviders"===r?d:Reflect.get(t,r)})]}}),G=q(()=>{H()}),K=q(()=>{u="1.23.0"}),Y=q(()=>{K(),d="warning",Object.defineProperty(c={wasm:{},webgl:{},webgpu:{},versions:{common:u},set logLevel(e){if(void 0!==e){if("string"!=typeof e||-1===["verbose","info","warning","error","fatal"].indexOf(e))throw Error(`Unsupported logging level: ${e}`);d=e}},get logLevel(){return d}},"logLevel",{enumerable:!0})}),Q=q(()=>{Y(),h=c}),X=q(()=>{f=(t,r)=>{let i="u">typeof document?document.createElement("canvas"):new OffscreenCanvas(1,1);i.width=t.dims[3],i.height=t.dims[2];let a=i.getContext("2d");if(null!=a){let n,s;r?.tensorLayout!==void 0&&"NHWC"===r.tensorLayout?(n=t.dims[2],s=t.dims[3]):(n=t.dims[3],s=t.dims[2]);let o=r?.format!==void 0?r.format:"RGB",l=r?.norm,u,d;void 0===l||void 0===l.mean?u=[255,255,255,255]:"number"==typeof l.mean?u=[l.mean,l.mean,l.mean,l.mean]:(u=[l.mean[0],l.mean[1],l.mean[2],0],void 0!==l.mean[3]&&(u[3]=l.mean[3])),void 0===l||void 0===l.bias?d=[0,0,0,0]:"number"==typeof l.bias?d=[l.bias,l.bias,l.bias,l.bias]:(d=[l.bias[0],l.bias[1],l.bias[2],0],void 0!==l.bias[3]&&(d[3]=l.bias[3]));let c=s*n,h=0,f=c,p=2*c,m=-1;"RGBA"===o?(h=0,f=c,p=2*c,m=3*c):"RGB"===o?(h=0,f=c,p=2*c):"RBG"===o&&(h=0,p=c,f=2*c);for(let r=0;r<s;r++)for(let i=0;i<n;i++)a.fillStyle="rgba("+(t.data[h++]-d[0])*u[0]+","+(t.data[f++]-d[1])*u[1]+","+(t.data[p++]-d[2])*u[2]+","+(-1===m?255:(t.data[m++]-d[3])*u[3])+")",a.fillRect(i,r,1,1);if("toDataURL"in i)return i.toDataURL();throw Error("toDataURL is not supported")}throw Error("Can not access image data")},p=(t,r)=>{let i="u">typeof document?document.createElement("canvas").getContext("2d"):new OffscreenCanvas(1,1).getContext("2d"),a;if(null!=i){let n,s,o;r?.tensorLayout!==void 0&&"NHWC"===r.tensorLayout?(n=t.dims[2],s=t.dims[1],o=t.dims[3]):(n=t.dims[3],s=t.dims[2],o=t.dims[1]);let l=void 0!==r&&void 0!==r.format?r.format:"RGB",u=r?.norm,d,c;void 0===u||void 0===u.mean?d=[255,255,255,255]:"number"==typeof u.mean?d=[u.mean,u.mean,u.mean,u.mean]:(d=[u.mean[0],u.mean[1],u.mean[2],255],void 0!==u.mean[3]&&(d[3]=u.mean[3])),void 0===u||void 0===u.bias?c=[0,0,0,0]:"number"==typeof u.bias?c=[u.bias,u.bias,u.bias,u.bias]:(c=[u.bias[0],u.bias[1],u.bias[2],0],void 0!==u.bias[3]&&(c[3]=u.bias[3]));let h=s*n;if(void 0!==r&&(void 0!==r.format&&4===o&&"RGBA"!==r.format||3===o&&"RGB"!==r.format&&"BGR"!==r.format))throw Error("Tensor format doesn't match input tensor dims");let f=0,p=1,m=2,g=3,b=0,y=h,v=2*h,_=-1;"RGBA"===l?(b=0,y=h,v=2*h,_=3*h):"RGB"===l?(b=0,y=h,v=2*h):"RBG"===l&&(b=0,v=h,y=2*h),a=i.createImageData(n,s);for(let r=0;r<s*n;f+=4,p+=4,m+=4,g+=4,r++)a.data[f]=(t.data[b++]-c[0])*d[0],a.data[p]=(t.data[y++]-c[1])*d[1],a.data[m]=(t.data[v
1++]-c[2])*d[2],a.data[g]=-1===_?255:(t.data[_++]-c[3])*d[3]}else throw Error("Can not access image data");return a}}),Z=q(()=>{et(),m=(t,r)=>{if(void 0===t)throw Error("Image buffer must be defined");if(void 0===r.height||void 0===r.width)throw Error("Image height and width must be defined");if("NHWC"===r.tensorLayout)throw Error("NHWC Tensor layout is not supported yet");let{height:i,width:a}=r,n=r.norm??{mean:255,bias:0},s,o;s="number"==typeof n.mean?[n.mean,n.mean,n.mean,n.mean]:[n.mean[0],n.mean[1],n.mean[2],n.mean[3]??255],o="number"==typeof n.bias?[n.bias,n.bias,n.bias,n.bias]:[n.bias[0],n.bias[1],n.bias[2],n.bias[3]??0];let l=void 0!==r.format?r.format:"RGBA",u=void 0!==r.tensorFormat&&void 0!==r.tensorFormat?r.tensorFormat:"RGB",d=i*a,c=new Float32Array("RGBA"===u?4*d:3*d),h=4,f=0,p=1,m=2,g=3,b=0,y=d,v=2*d,_=-1;"RGB"===l&&(h=3,f=0,p=1,m=2,g=-1),"RGBA"===u?_=3*d:"RBG"===u?(b=0,v=d,y=2*d):"BGR"===u&&(v=0,y=d,b=2*d);for(let r=0;r<d;r++,f+=h,m+=h,p+=h,g+=h)c[b++]=(t[f]+o[0])/s[0],c[y++]=(t[p]+o[1])/s[1],c[v++]=(t[m]+o[2])/s[2],-1!==_&&-1!==g&&(c[_++]=(t[g]+o[3])/s[3]);return"RGBA"===u?new E("float32",c,[1,4,i,a]):new E("float32",c,[1,3,i,a])},g=async(t,r)=>{let i="u">typeof HTMLImageElement&&t instanceof HTMLImageElement,a="u">typeof ImageData&&t instanceof ImageData,n="u">typeof ImageBitmap&&t instanceof ImageBitmap,s="string"==typeof t,o,l=r??{},u=()=>{if("u">typeof document)return document.createElement("canvas");if("u">typeof OffscreenCanvas)return new OffscreenCanvas(1,1);throw Error("Canvas is not supported")},d=t=>"u">typeof HTMLCanvasElement&&t instanceof HTMLCanvasElement||t instanceof OffscreenCanvas?t.getContext("2d"):null;if(i){let i=u();i.width=t.width,i.height=t.height;let a=d(i);if(null!=a){let i=t.height,n=t.width;if(void 0!==r&&void 0!==r.resizedHeight&&void 0!==r.resizedWidth&&(i=r.resizedHeight,n=r.resizedWidth),void 0!==r){if(l=r,void 0!==r.tensorFormat)throw Error("Image input config format must be RGBA for HTMLImageElement");l.tensorFormat="RGBA",l.height=i,l.width=n}else l.tensorFormat="RGBA",l.height=i,l.width=n;a.drawImage(t,0,0),o=a.getImageData(0,0,n,i).data}else throw Error("Can not access image data")}else if(a){let i,a;if(void 0!==r&&void 0!==r.resizedWidth&&void 0!==r.resizedHeight?(i=r.resizedHeight,a=r.resizedWidth):(i=t.height,a=t.width),void 0!==r&&(l=r),l.format="RGBA",l.height=i,l.width=a,void 0!==r){let r=u();r.width=a,r.height=i;let n=d(r);if(null!=n)n.putImageData(t,0,0),o=n.getImageData(0,0,a,i).data;else throw Error("Can not access image data")}else o=t.data}else if(n){if(void 0===r)throw Error("Please provide image config with format for Imagebitmap");let i=u();i.width=t.width,i.height=t.height;let a=d(i);if(null!=a){let r=t.height,i=t.width;return a.drawImage(t,0,0,i,r),o=a.getImageData(0,0,i,r).data,l.height=r,l.width=i,m(o,l)}throw Error("Can not access image data")}else{if(s)return new Promise((r,i)=>{let a=u(),n=d(a);if(!t||!n)return i();let s=new Image;s.crossOrigin="Anonymous",s.src=t,s.onload=()=>{a.width=s.width,a.height=s.height,n.drawImage(s,0,0,a.width,a.height);let t=n.getImageData(0,0,a.width,a.height);l.height=a.height,l.width=a.width,r(m(t.data,l))}});throw Error("Input data provided is not supported - aborted tensor creation")}if(void 0!==o)return m(o,l);throw Error("Input data provided is not supported - aborted tensor creation")},b=(t,r)=>{let{width:i,height:a,download:n,dispose:s}=r;return new E({location:"texture",type:"float32",texture:t,dims:[1,a,i,4],download:n,dispose:s})},y=(t,r)=>{let{dataType:i,dims:a,download:n,dispose:s}=r;return new E({location:"gpu-buffer",type:i??"float32",gpuBuffer:t,dims:a,download:n,dispose:s})},v=(t,r)=>{let{dataType:i,dims:a,download:n,dispose:s}=r;return new E({location:"ml-tensor",type:i??"float32",mlTensor:t,dims:a,download:n,dispose:s})},_=(t,r,i)=>new E({location:"cpu-pinned",type:t,data:r,dims:i??[r.length]})}),J=q(()=>{w=new Map([["float32",Float32Array],["uint8",Uint8Array],["int8",Int8Array],["uint16",Uint16Array],["int16",Int16Array],["int32",Int32Array],["bool",Uint8Array],["float64",Float64Array],["uint32",Uint32Array],["int4",Uint8Array],["uint4",Uint8Array]]),x=new Map([[Float32Array,"float32"],[Uint8Array,"uint8"],[Int8Array,"int8"],[Uint16Array,"uint16"],[Int16Array,"int16"],[Int32Array,"int32"],[Float64Array,"float64"],[Uint32Array,"uint32"]]),$=!1,S=()=>
1{if(!$){$=!0;let t="u">typeof BigInt64Array&&BigInt64Array.from,r="u">typeof BigUint64Array&&BigUint64Array.from,i=globalThis.Float16Array,a="u">typeof i&&i.from;t&&(w.set("int64",BigInt64Array),x.set(BigInt64Array,"int64")),r&&(w.set("uint64",BigUint64Array),x.set(BigUint64Array,"uint64")),a?(w.set("float16",i),x.set(i,"float16")):w.set("float16",Uint16Array)}}}),ee=q(()=>{et(),k=t=>{let r=1;for(let i=0;i<t.length;i++){let a=t[i];if("number"!=typeof a||!Number.isSafeInteger(a))throw TypeError(`dims[${i}] must be an integer, got: ${a}`);if(a<0)throw RangeError(`dims[${i}] must be a non-negative integer, got: ${a}`);r*=a}return r},C=(t,r)=>{switch(t.location){case"cpu":return new E(t.type,t.data,r);case"cpu-pinned":return new E({location:"cpu-pinned",data:t.data,type:t.type,dims:r});case"texture":return new E({location:"texture",texture:t.texture,type:t.type,dims:r});case"gpu-buffer":return new E({location:"gpu-buffer",gpuBuffer:t.gpuBuffer,type:t.type,dims:r});case"ml-tensor":return new E({location:"ml-tensor",mlTensor:t.mlTensor,type:t.type,dims:r});default:throw Error(`tensorReshape: tensor location ${t.location} is not supported`)}}}),et=q(()=>{X(),Z(),J(),ee(),E=class{constructor(t,r,i){let a,n;if(S(),"object"==typeof t&&"location"in t)switch(this.dataLocation=t.location,a=t.type,n=t.dims,t.location){case"cpu-pinned":{let r=w.get(a);if(!r)throw TypeError(`unsupported type "${a}" to create tensor from pinned buffer`);if(!(t.data instanceof r))throw TypeError(`buffer should be of type ${r.name}`);this.cpuData=t.data;break}case"texture":if("float32"!==a)throw TypeError(`unsupported type "${a}" to create tensor from texture`);this.gpuTextureData=t.texture,this.downloader=t.download,this.disposer=t.dispose;break;case"gpu-buffer":if("float32"!==a&&"float16"!==a&&"int32"!==a&&"int64"!==a&&"uint32"!==a&&"uint8"!==a&&"bool"!==a&&"uint4"!==a&&"int4"!==a)throw TypeError(`unsupported type "${a}" to create tensor from gpu buffer`);this.gpuBufferData=t.gpuBuffer,this.downloader=t.download,this.disposer=t.dispose;break;case"ml-tensor":if("float32"!==a&&"float16"!==a&&"int32"!==a&&"int64"!==a&&"uint32"!==a&&"uint64"!==a&&"int8"!==a&&"uint8"!==a&&"bool"!==a&&"uint4"!==a&&"int4"!==a)throw TypeError(`unsupported type "${a}" to create tensor from MLTensor`);this.mlTensorData=t.mlTensor,this.downloader=t.download,this.disposer=t.dispose;break;default:throw Error(`Tensor constructor: unsupported location '${this.dataLocation}'`)}else{let s,o;if("string"==typeof t)if(a=t,o=i,"string"===t){if(!Array.isArray(r))throw TypeError("A string tensor's data must be a string array.");s=r}else{let i=w.get(t);if(void 0===i)throw TypeError(`Unsupported tensor type: ${t}.`);if(Array.isArray(r)){if("float16"===t&&i===Uint16Array||"uint4"===t||"int4"===t)throw TypeError(`Creating a ${t} tensor from number array is not supported. Please use ${i.name} as data.`);s="uint64"===t||"int64"===t?i.from(r,BigInt):i.from(r)}else if(r instanceof i)s=r;else if(r instanceof Uint8ClampedArray)if("uint8"===t)s=Uint8Array.from(r);else throw TypeError("A Uint8ClampedArray tensor's data must be type of uint8");else if("float16"===t&&r instanceof Uint16Array&&i!==Uint16Array)s=new globalThis.Float16Array(r.buffer,r.byteOffset,r.length);else throw TypeError(`A ${a} tensor's data must be type of ${i}`)}else if(o=r,Array.isArray(t)){if(0===t.length)throw TypeError("Tensor type cannot be inferred from an empty array.");let r=typeof t[0];if("string"===r)a="string",s=t;else if("boolean"===r)a="bool",s=Uint8Array.from(t);else throw TypeError(`Invalid element type of data array: ${r}.`)}else if(t instanceof Uint8ClampedArray)a="uint8",s=Uint8Array.from(t);else{let r=x.get(t.constructor);if(void 0===r)throw TypeError(`Unsupported type for tensor data: ${t.constructor}.`);a=r,s=t}if(void 0===o)o=[s.length];else if(!Array.isArray(o))throw TypeError("A tensor's dims must be a number array");n=o,this.cpuData=s,this.dataLocation="cpu"}let s=k(n);if(this.cpuData&&s!==this.cpuData.length&&("uint4"!==a&&"int4"!==a||Math.ceil(s/2)!==this.cpuData.length))throw Error(`Tensor's size(${s}) does not match data length(${this.cpuData.length}).`);this.type=a,this.dims=n,this.size=s}static async fromImage(t,r){return g(t,r)}static fromTexture(t,r){return b(t,r)}static fromGpuBuffer(t,r){return y(t,r)}static fromMLTensor(t,r){return v(t,r)}static fromPinnedBuffer(t,r,i){return _(t,r,i)}toDataURL(t){return f(this,t)}toImageData(t){return p(this,t)}get data(){if(this.ensureValid(),!this.cpuData)throw Error("The data is not on CPU. Use `getData()` to download GPU data to CPU, or use `texture` or `gpuBuffer` property to access the GPU data directly.");return this.cpuData}get location(){return this.dataLocation}get texture(){if(this.ensureValid(),!this.gpuTextureData)throw Error("The data is not stored as a WebGL texture.");return this.gpuTextureData}get gpuBuffer(){if(this.ensureValid(),!this.gpuBufferData)throw Error("The data is not stored as a WebGPU buffer.");return this.gpuBufferData}get mlTensor(){if(this.ensureValid(),!this.mlTensorData)throw Error("The data is not stored as a WebNN MLTensor.");return this.mlTensorData}async getData(t){switch(this.ensureValid(),this.dataLocation){case"cpu":case"cpu-pinned":return this.data;case"texture":case"gpu-buffer":case"ml-tensor":if(!this.downloader)throw Error("The current tensor is not created with a specified data downloader.");if(this.isDownloading)throw Error("The current tensor is being downloaded.");try{this.isDownloading=!0;let r=await this.downloader();return this.downloader=void 0,this.dataLocation="cpu",this.cpuData=r,t&&this.disposer&&(this.disposer(),this.disposer=void 0),r}finally{this.isDownloading=!1}default:throw Error(`cannot get data from location: ${this.dataLocation}`)}}dispose(){if(this.isDownloading)throw Error("The current tensor is being downloaded.");this.disposer&&(this.disposer(),this.disposer=void 0),this.cpuData=void 0,this.gpuTextureData=void 0,this.gpuBufferData=void 0,this.mlTensorData=void 0,this.downloader=void 0,this.isDownloading=void 0,this.dataLocation="none"}ensureValid(){if("none"===this.dataLocation)throw Error("The tensor is disposed.")}reshape(t){if(this.ensureValid(),this.downloader||this.disposer)throw Error("Cannot reshape a tensor that owns GPU resource.");return C(this,t)}}}),er=q(()=>{et(),T=E}),ei=q(()=>{Y(),I=(t,r)=>{(typeof c.trace>"u"?c.wasm.trace:c.trace)&&console.timeStamp(`${t}::ORT::${r}`)},A=(t,r)=>{let i=Error().stack?.split(/\r\n|\r|\n/g)||[],a=!1;for(let n=0;n<i.length;n++){if(a&&!i[n].includes("TRACE_FUNC")){let a=`FUNC_${t}::${i[n].trim().split(" ")[1]}`;r&&(a+=`::${r}`),I("CPU",a);return}i[n].includes("TRACE_FUNC")&&(a=!0)}},N=t=>{(typeof c.trace>"u"?c.wasm.trace:c.trace)&&A("BEGIN",t)},O=t=>{(typeof c.trace>"u"?c.wasm.trace:c.trace)&&A("END",t)},M=t=>{(typeof c.trace>"u"?c.wasm.trace:c.trace)&&console.time(`ORT::${t}`)},P=t=>{(typeof c.trace>"u"?c.wasm.trace:c.trace)&&console.timeEnd(`ORT::${t}`)}}),ea=q(()=>{H(),er(),ei(),R=class t{constructor(t){this.handler=t}async run(t,r,i){N(),M("InferenceSession.run");let a={},n={};if("object"!=typeof t||null===t||t instanceof T||Array.isArray(t))throw TypeError("'feeds' must be an object that use input names as keys and OnnxValue as corresponding values.");let s=!0;if("object"==typeof r){if(null===r)throw TypeError("Unexpected argument[1]: cannot be null.");if(r instanceof T)throw TypeError("'fetches' cannot be a Tensor");if(Array.isArray(r)){if(0===r.length)throw TypeError("'fetches' cannot be an empty array.");
1for(let t of(s=!1,r)){if("string"!=typeof t)throw TypeError("'fetches' must be a string array or an object.");if(-1===this.outputNames.indexOf(t))throw RangeError(`'fetches' contains invalid output name: ${t}.`);a[t]=null}if("object"==typeof i&&null!==i)n=i;else if("u">typeof i)throw TypeError("'options' must be an object.")}else{let t=!1,o=Object.getOwnPropertyNames(r);for(let i of this.outputNames)if(-1!==o.indexOf(i)){let n=r[i];(null===n||n instanceof T)&&(t=!0,s=!1,a[i]=n)}if(t){if("object"==typeof i&&null!==i)n=i;else if("u">typeof i)throw TypeError("'options' must be an object.")}else n=r}}else if("u">typeof r)throw TypeError("Unexpected argument[1]: must be 'fetches' or 'options'.");for(let r of this.inputNames)if(typeof t[r]>"u")throw Error(`input '${r}' is missing in 'feeds'.`);if(s)for(let t of this.outputNames)a[t]=null;let o=await this.handler.run(t,a,n),l={};for(let t in o)if(Object.hasOwnProperty.call(o,t)){let r=o[t];r instanceof T?l[t]=r:l[t]=new T(r.type,r.data,r.dims)}return P("InferenceSession.run"),O(),l}async release(){return this.handler.dispose()}static async create(r,i,a,n){N(),M("InferenceSession.create");let s,o={};if("string"==typeof r){if(s=r,"object"==typeof i&&null!==i)o=i;else if("u">typeof i)throw TypeError("'options' must be an object.")}else if(r instanceof Uint8Array){if(s=r,"object"==typeof i&&null!==i)o=i;else if("u">typeof i)throw TypeError("'options' must be an object.")}else if(r instanceof ArrayBuffer||"u">typeof SharedArrayBuffer&&r instanceof SharedArrayBuffer){let t=0,l=r.byteLength;if("object"==typeof i&&null!==i)o=i;else if("number"==typeof i){if(!Number.isSafeInteger(t=i))throw RangeError("'byteOffset' must be an integer.");if(t<0||t>=r.byteLength)throw RangeError(`'byteOffset' is out of range [0, ${r.byteLength}).`);if(l=r.byteLength-t,"number"==typeof a){if(!Number.isSafeInteger(l=a))throw RangeError("'byteLength' must be an integer.");if(l<=0||t+l>r.byteLength)throw RangeError(`'byteLength' is out of range (0, ${r.byteLength-t}].`);if("object"==typeof n&&null!==n)o=n;else if("u">typeof n)throw TypeError("'options' must be an object.")}else if("u">typeof a)throw TypeError("'byteLength' must be a number.")}else if("u">typeof i)throw TypeError("'options' must be an object.");s=new Uint8Array(r,t,l)}else throw TypeError("Unexpected argument[0]: must be 'path' or 'buffer'.");let[u,d]=await l(o),c=await u.createInferenceSessionHandler(s,d);return P("InferenceSession.create"),O(),new t(c)}startProfiling(){this.handler.startProfiling()}endProfiling(){this.handler.endProfiling()}get inputNames(){return this.handler.inputNames}get outputNames(){return this.handler.outputNames}get inputMetadata(){return this.handler.inputMetadata}get outputMetadata(){return this.handler.outputMetadata}}}),en=q(()=>{ea(),j=R}),es=q(()=>{}),eo=q(()=>{}),el=q(()=>{}),eu=q(()=>{});V({},{InferenceSession:()=>j,TRACE:()=>I,TRACE_EVENT_BEGIN:()=>M,TRACE_EVENT_END:()=>P,TRACE_FUNC_BEGIN:()=>N,TRACE_FUNC_END:()=>O,Tensor:()=>T,env:()=>h,registerBackend:()=>s});var ed=q(()=>{G(),Q(),en(),er(),es(),eo(),ei(),el(),eu()}),ec=q(()=>{}),eh={};V(eh,{default:()=>ep});var ef,ep,em=q(()=>{s4(),nh(),nc(),(ef=globalThis.self?.name==="ort-wasm-proxy-worker")&&(self.onmessage=t=>{let{type:r,in:i}=t.data;try{switch(r){case"init-wasm":eP(i.wasm).then(()=>{sk(i).then(()=>{postMessage({type:r})},t=>{postMessage({type:r,err:t})})},t=>{postMessage({type:r,err:t})});break;case"init-ep":{let{epName:t,env:a}=i;sC(a,t).then(()=>{postMessage({type:r})},t=>{postMessage({type:r,err:t})});break}case"copy-from":{let{buffer:t}=i,a=sI(t);postMessage({type:r,out:a});break}case"create":{let{model:t,options:a}=i;sA(t,a).then(t=>{postMessage({type:r,out:t})},t=>{postMessage({type:r,err:t})});break}case"release":sN(i),postMessage({type:r});break;case"run":{let{sessionId:t,inputIndices:a,inputs:n,outputIndices:s,options:o}=i;sM(t,a,n,s,Array(s.length).fill(null),o).then(t=>{t.some(t=>"cpu"!==t[3])?postMessage({type:r,err:"Proxy does not support non-cpu tensor location."}):postMessage({type:r,out:t},sR([...n,...t]))},t=>{postMessage({type:r,err:t})});break}case"end-profiling":sP(i),postMessage({type:r})}}catch(t){postMessage({type:r,err:t})}}),ep=ef?null:t=>new Worker(t??ew,{type:"module",name:"ort-wasm-proxy-worker"})}),eg={};V(eg,{default:()=>ey});var eb,ey,ev,e_,ew,ex,e$,eS,ek,eC,eE,eT,eI,eA,eN,eO,eM,eP,eR,ej,ez,eD,eB,eL,eU,eF,eq,eV,eW,eH,eG,eK,eY,eQ,eX,eZ,eJ,e1,e0,e2,e3,e4,e8,e7,e6,e5,e9,te,tt,tr,ti,ta,tn,ts,to,tl,tu,td,tc,th,tf,tp,tm,tg,tb,ty,tv,t_,tw,tx,t$,tS,tk,tC,tE,tT,tI,tA,tN,tO,tM,tP,tR,tj,tz,tD,tB,tL,tU,tF,tq,tV,tW,tH,tG,tK,tY,tQ,tX,tZ,tJ,t1,t0,t2,t3,t4,t8,t7,t6,t5,t9,re,rt,rr,ri,ra,rn,rs,ro,rl,ru,rd,rc,rh,rf,rp,rm,rg,rb,ry,rv,r_,rw,rx,r$,rS,rk,rC,rE,rT,rI,rA,rN,rO,rM,rP,rR,rj,rz,rD,rB,rL,rU,rF,rq,rV,rW,rH,rG,rK,rY,rQ,rX,rZ,rJ,r1,r0,r2,r3,r4,r8,r7,r6,r5,r9,ie,it,ir,ii,ia,is,io,il,iu,id,ic,ih,ip,im,ig,ib,iy,iv,i_,iw,ix,i$,iS,ik,iC,iE,iT,iI,iA,iN,iO,iM,iP,iR,ij,iz,iD,iB,iL,iU,iF,iq,iV,iW,iH,iG,
1iK,iY,iQ,iX,iZ,iJ,i1,i0,i2,i3,i4,i8,i7,i6,i5,i9,ae,at,ar,ai,aa,an,as,ao,al,au,ad,ac,ah,af,ap,am,ag,ab,ay,av,a_,aw,ax,a$,aS,ak,aC,aE,aT,aI,aA,aN,aO,aM,aP,aR,aj,az,aD,aB,aL,aU,aF,aq,aV,aW,aH,aG,aK,aY,aQ,aX,aZ,aJ,a1,a0,a2,a3,a4,a8,a7,a6,a5,a9,ne,nt,nr,ni,na,nn,ns,no,nl,nu,nd=q(()=>{ey=eb=async function(t={}){var r,a,n=new Promise((t,i)=>{r=t,a=i}),s="object"==typeof window,o="u">typeof WorkerGlobalScope,l=o&&self.name?.startsWith("em-pthread");t.mountExternalData=(r,i)=>{r.startsWith("./")&&(r=r.substring(2)),(t.Fb||(t.Fb=new Map)).set(r,i)},t.unmountExternalData=()=>{delete t.Fb};var u=globalThis.SharedArrayBuffer??new WebAssembly.Memory({initial:0,maximum:0,qc:!0}).buffer.constructor;let d=r=>async(...i)=>{try{if(t.Gb)throw Error("Session already started");let a=t.Gb={ec:i[0],errors:[]},n=await r(...i);if(t.Gb!==a)throw Error("Session mismatch");t.Kb?.flush();let s=a.errors;if(0<s.length){let t=await Promise.all(s);if(t=t.filter(t=>t),0<t.length)throw Error(t.join(` 2`))}return n}finally{t.Gb=null}};t.jsepInit=(r,i)=>{if("webgpu"===r){[t.Kb,t.Vb,t.Zb,t.Lb,t.Yb,t.Ab,t.$b,t.bc,t.Wb,t.Xb,t.ac]=i;let r=t.Kb;t.jsepRegisterBuffer=(t,i,a,n)=>r.registerBuffer(t,i,a,n),t.jsepGetBuffer=t=>r.getBuffer(t),t.jsepCreateDownloader=(t,i,a)=>r.createDownloader(t,i,a),t.jsepOnCreateSession=t=>{r.onCreateSession(t)},t.jsepOnReleaseSession=t=>{r.onReleaseSession(t)},t.jsepOnRunStart=t=>r.onRunStart(t),t.cc=(t,i)=>{r.upload(t,i)}}else if("webnn"===r){let r=i[0];[t.oc,t.Ob,t.webnnEnsureTensor,t.Pb,t.webnnDownloadTensor,t.nc,t.webnnEnableTraceEvent]=i.slice(1),t.webnnReleaseTensorId=t.Ob,t.webnnUploadTensor=t.Pb,t.webnnRegisterMLContext=t.nc,t.webnnOnRunStart=t=>r.onRunStart(t),t.webnnOnRunEnd=r.onRunEnd.bind(r),t.webnnOnReleaseSession=t=>{r.onReleaseSession(t)},t.webnnCreateMLTensorDownloader=(t,i)=>r.createMLTensorDownloader(t,i),t.webnnRegisterMLTensor=(t,i,a,n)=>r.registerMLTensor(t,i,a,n),t.webnnCreateMLContext=t=>r.createMLContext(t),t.webnnRegisterMLConstant=(i,a,n,s,o,l)=>r.registerMLConstant(i,a,n,s,o,t.Fb,l),t.webnnRegisterGraphInput=r.registerGraphInput.bind(r),t.webnnIsGraphInput=r.isGraphInput.bind(r),t.webnnRegisterGraphOutput=r.registerGraphOutput.bind(r),t.webnnIsGraphOutput=r.isGraphOutput.bind(r),t.webnnCreateTemporaryTensor=r.createTemporaryTensor.bind(r),t.webnnIsGraphInputOutputTypeSupported=r.isGraphInputOutputTypeSupported.bind(r)}};let c=()=>{let r=(t,r,i)=>(...a)=>{let n=tC,s=r?.();a=t(...a);let o=r?.();return s!==o&&(t=o,i(s),r=i=null),tC!=n?new Promise((t,r)=>{tO={resolve:t,reject:r}}):a};(()=>{for(let i of["_OrtAppendExecutionProvider","_OrtCreateSession","_OrtRun","_OrtRunWithBinding","_OrtBindInput"])t[i]=r(t[i],()=>t[i],r=>t[i]=r)})(),void 0!==d&&(t._OrtRun=d(t._OrtRun),t._OrtRunWithBinding=d(t._OrtRunWithBinding)),c=void 0};t.asyncInit=()=>{c?.()};var h,f,p=(t,r)=>{throw r},m="";if(s||o){try{m=new URL(".","file:///vercel/path0/node_modules/onnxruntime-web/dist/ort.bundle.min.mjs").href}catch{}o&&(f=t=>{var r=new XMLHttpRequest;return r.open("GET",t,!1),r.responseType="arraybuffer",r.send(null),new Uint8Array(r.response)}),h=async t=>{if(j(t))return new Promise((r,i)=>{var a=new XMLHttpRequest;a.open("GET",t,!0),a.responseType="arraybuffer",a.onload=()=>{200==a.status||0==a.status&&a.response?r(a.response):i(a.status)},a.onerror=i,a.send(null)});var r=await fetch(t,{credentials:"same-origin"});if(r.ok)return r.arrayBuffer();throw Error(r.status+" : "+r.url)}}var g,b,y,v,_,w,x,$,S,k,C,E,T,I,A,N=console.log.bind(console),O=console.error.bind(console),M=N,P=O,R=!1,j=t=>t.startsWith("file://");function z(){return b.buffer!=_.buffer&&H(),_}function D(){return b.buffer!=_.buffer&&H(),w}function B(){return b.buffer!=_.buffer&&H(),x}function L(){return b.buffer!=_.buffer&&H(),$}function U(){return b.buffer!=_.buffer&&H(),S}function F(){return b.buffer!=_.buffer&&H(),k}function q(){return b.buffer!=_.buffer&&H(),C}function V(){return b.buffer!=_.buffer&&H(),I}if(l){let r=function(i){try{var a=i.data,n=a.Db;if("load"===n){let i=[];for(let n of(self.onmessage=t=>i.push(t),self.startWorker=()=>{for(let t of(postMessage({Db:"loaded"}),i))r(t);self.onmessage=r},a.Sb))t[n]&&!t[n].proxy||(t[n]=(...t)=>{postMessage({Db:"callHandler",Rb:n,args:t})},"print"==n&&(M=t[n]),"printErr"==n&&(P=t[n]));b=a.kc,H(),A(a.lc)}else if("run"===n){eb(a.Bb),rq(a.Bb,0,0,1,0,0),ep(),th(a.Bb),W||(rB(),W=!0);try{ey(a.hc,a.Jb)}catch(t){if("unwind"!=t)throw t}}else"setimmediate"!==a.target&&("checkMailbox"===n?W&&tf():n&&(P(`worker: received unknown command ${n}`),P(a)))}catch(t){throw rV(),t}};var W=!1;self.onunhandledrejection=t=>{throw t.reason||t},self.onmessage=r}function H(){var r=b.buffer;t.HEAP8=_=new Int8Array(r),x=new Int16Array(r),t.HEAPU8=w=new Uint8Array(r),$=new Uint16Array(r),t.HEAP32=S=new Int32Array(r),t.HEAPU32
2=k=new Uint32Array(r),C=new Float32Array(r),I=new Float64Array(r),E=new BigInt64Array(r),T=new BigUint64Array(r)}function G(){l?startWorker(t):rz.Da()}var K,Y=0,Q=null;function X(){if(0==--Y&&Q){var t=Q;Q=null,t()}}function Z(t){throw P(t="Aborted("+t+")"),R=!0,t=new WebAssembly.RuntimeError(t+". Build with -sASSERTIONS for more info."),a(t),t}function J(){return{a:{L:rj,Aa:rR,b:e_,$:ex,A:eC,pa:eE,X:eT,Z:eI,qa:eA,na:eN,ga:eO,ma:eM,J:eP,Y:eR,V:ej,oa:ez,W:eD,va:eL,E:eK,Q:eQ,O:e4,D:e8,v:e7,s:e6,P:te,z:tl,R:tu,ja:td,T:tp,aa:tg,M:tb,F:ty,ia:th,sa:tv,r:tx,Ca:t$,w:tR,o:tz,m:tL,c:eJ,Ba:tU,n:tq,j:tV,u:tW,p:tH,f:tG,t:tK,l:tY,e:tQ,k:tX,h:tZ,g:tJ,d:t1,da:t0,ea:t8,fa:t7,ba:t6,ca:t5,N:rt,xa:rr,ua:ra,i:ro,C:rl,G:ru,ta:ri,x:rd,ra:rc,U:rh,q:re,y:rf,K:rp,S:rm,za:rv,ya:r_,ka:rS,la:rk,_:el,B:rC,I:rE,ha:rT,H:rA,a:b,wa:es}}}class ee{name="ExitStatus";constructor(t){this.message=`Program terminated with exit(${t})`,this.status=t}}var et=t=>{t.terminate(),t.onmessage=()=>{}},er=[],ei=t=>{0==eu.length&&(eg(),em(eu[0]));var r=eu.pop();if(!r)return 6;ed.push(r),eh[t.Bb]=r,r.Bb=t.Bb;var i={Db:"run",hc:t.fc,Jb:t.Jb,Bb:t.Bb};return r.postMessage(i,t.Nb),0},ea=0,en=(t,r,...i)=>{for(var a=2*i.length,n=rJ(),s=rZ(8*a),o=s>>>3,l=0;l<i.length;l++){var u=i[l];"bigint"==typeof u?(E[o+2*l]=1n,E[o+2*l+1]=u):(E[o+2*l]=0n,V()[o+2*l+1>>>0]=u)}return t=rW(t,0,a,s,r),rX(n),t};function es(t){if(l)return en(0,1,t);if(v=t,!(0<ea)){for(var r of ed)et(r);for(r of eu)et(r);eu=[],ed=[],eh={},R=!0}p(0,new ee(t))}function eo(t){if(l)return en(1,0,t);el(t)}var el=t=>{if(v=t,l)throw eo(t),"unwind";es(t)},eu=[],ed=[],ec=[],eh={},ef=t=>{var r=t.Bb;delete eh[r],eu.push(t),ed.splice(ed.indexOf(t),1),t.Bb=0,rH(r)};function ep(){ec.forEach(t=>t())}var em=r=>new Promise(i=>{r.onmessage=a=>{var n=(a=a.data).Db;if(a.Hb&&a.Hb!=rL()){var s=eh[a.Hb];s?s.postMessage(a,a.Nb):P(`Internal error! Worker sent a message "${n}" to target pthread ${a.Hb}, but that thread no longer exists!`)}else"checkMailbox"===n?tf():"spawnThread"===n?ei(a):"cleanupThread"===n?ef(eh[a.ic]):"loaded"===n?(r.loaded=!0,i(r)):"setimmediate"===a.target?r.postMessage(a):"callHandler"===n?t[a.Rb](...a.args):n&&P(`worker sent an unknown command ${n}`)},r.onerror=t=>{throw P(`worker sent an error! ${t.filename}:${t.lineno}: ${t.message}`),t};var a,n=[];for(a of[])t.propertyIsEnumerable(a)&&n.push(a);r.postMessage({Db:"load",Sb:n,kc:b,lc:y})});function eg(){var t=new Worker((URL,new i.U(i(17394))),{type:"module",workerData:"em-pthread",name:"em-pthread"});eu.push(t)}var eb=t=>{H();var r=F()[t+52>>>2>>>0];t=F()[t+56>>>2>>>0],rQ(r,r-t),rX(r)},ey=(t,r)=>{ea=0,t=r1(t,r),0<ea?v=t:rG(t)};class ev{constructor(t){this.Ib=t-24}}function e_(t,r,i){var a=new ev(t>>>=0);throw r>>>=0,i>>>=0,F()[a.Ib+16>>>2>>>0]=0,F()[a.Ib+4>>>2>>>0]=r,F()[a.Ib+8>>>2>>>0]=i,t}function ew(t,r,i,a){return l?en(2,1,t,r,i,a):ex(t,r,i,a)}function ex(t,r,i,a){if(t>>>=0,i>>>=0,a>>>=0,void 0===u)return 6;var n=[];return l&&0===n.length?ew(t,r>>>=0,i,a):(t={fc:i,Bb:t,Jb:a,Nb:n},l?(t.Db="spawnThread",postMessage(t,n),0):ei(t))}var e$="u">typeof TextDecoder?new TextDecoder:void 0,eS=(t,r=0,i=NaN)=>{var a=(r>>>=0)+i;for(i=r;t[i]&&!(i>=a);)++i;if(16<i-r&&t.buffer&&e$)return e$.decode(t.buffer instanceof ArrayBuffer?t.subarray(r,i):t.slice(r,i));for(a="";r<i;){var n=t[r++];if(128&n){var s=63&t[r++];if((224&n)==192)a+=String.fromCharCode((31&n)<<6|s);else{var o=63&t[r++];65536>(n=(240&n)==224?(15&n)<<12|s<<6|o:(7&n)<<18|s<<12|o<<6|63&t[r++])?a+=String.fromCharCode(n):(n-=65536,a+=String.fromCharCode(55296|n>>10,56320|1023&n))}}else a+=String.fromCharCode(n)}return a},ek=(t,r)=>(t>>>=0)?eS(D(),t,r):"";function eC(t,r,i){return l?en(3,1,t,r,i):0}function eE(t,r){if(l)return en(4,1,t,r)}function eT(t,r){if(l)return en(5,1,t,r)}function eI(t,r,i){if(l)return en(6,1,t,r,i)}function eA(t,r,i){return l?en(7,1,t,r,i):0}function eN(t,r){if(l)return en(8,1,t,r)}function eO(t,r,i){if(l)return en(9,1,t,r,i)}function eM(t,r,i,a){if(l)return en(10,1,t,r,i,a)}function eP(t,r,i,a){if(l)return en(11,1,t,r,i,a)}function eR(t,r,i,a){if(l)return en(12,1,t,r,i,a)}function ej(t){if(l)return en(13,1,t)}function ez(t,r){if(l)return en(14,1,t,r)}function eD(t,r,i){if(l)return en(15,1,t,r,i)}var eB,eL=()=>Z(""),eU=t=>{for(var r="";D()[t>>>
20];)r+=eB[D()[t++>>>0]];return r},eF={},eq={},eV={},eW=t.BindingError=class extends Error{constructor(t){super(t),this.name="BindingError"}};function eH(t,r,i={}){return function(t,r,i={}){var a=r.name;if(!t)throw new eW(`type "${a}" must have a positive integer typeid pointer`);if(eq.hasOwnProperty(t)){if(i.Tb)return;throw new eW(`Cannot register type '${a}' twice`)}eq[t]=r,delete eV[t],eF.hasOwnProperty(t)&&(r=eF[t],delete eF[t],r.forEach(t=>t()))}(t,r,i)}var eG=(t,r,i)=>{switch(r){case 1:return i?t=>z()[t>>>0]:t=>D()[t>>>0];case 2:return i?t=>B()[t>>>1>>>0]:t=>L()[t>>>1>>>0];case 4:return i?t=>U()[t>>>2>>>0]:t=>F()[t>>>2>>>0];case 8:return i?t=>E[t>>>3]:t=>T[t>>>3];default:throw TypeError(`invalid integer width (${r}): ${t}`)}};function eK(t,r,i){i>>>=0,eH(t>>>=0,{name:r=eU(r>>>0),fromWireType:t=>t,toWireType:function(t,r){if("bigint"!=typeof r&&"number"!=typeof r)throw r=null===r?"null":"object"==(t=typeof r)||"array"===t||"function"===t?r.toString():""+r,TypeError(`Cannot convert "${r}" to ${this.name}`);return"number"==typeof r&&(r=BigInt(r)),r},Cb:eY,readValueFromPointer:eG(r,i,-1==r.indexOf("u")),Eb:null})}var eY=8;function eQ(t,r,i,a){eH(t>>>=0,{name:r=eU(r>>>0),fromWireType:function(t){return!!t},toWireType:function(t,r){return r?i:a},Cb:eY,readValueFromPointer:function(t){return this.fromWireType(D()[t>>>0])},Eb:null})}var eX=[],eZ=[];function eJ(t){9<(t>>>=0)&&0==--eZ[t+1]&&(eZ[t]=void 0,eX.push(t))}var e1=t=>{if(!t)throw new eW(`Cannot use deleted val. handle = ${t}`);return eZ[t]},e0=t=>{switch(t){case void 0:return 2;case null:return 4;case!0:return 6;case!1:return 8;default:let r=eX.pop()||eZ.length;return eZ[r]=t,eZ[r+1]=1,r}};function e2(t){return this.fromWireType(F()[t>>>2>>>0])}var e3={name:"emscripten::val",fromWireType:t=>{var r=e1(t);return eJ(t),r},toWireType:(t,r)=>e0(r),Cb:8,readValueFromPointer:e2,Eb:null};function e4(t){return eH(t>>>0,e3)}function e8(t,r,i){i>>>=0,eH(t>>>=0,{name:r=eU(r>>>0),fromWireType:t=>t,toWireType:(t,r)=>r,Cb:eY,readValueFromPointer:((t,r)=>{switch(r){case 4:return function(t){return this.fromWireType(q()[t>>>2>>>0])};case 8:return function(t){return this.fromWireType(V()[t>>>3>>>0])};default:throw TypeError(`invalid float width (${r}): ${t}`)}})(r,i),Eb:null})}function e7(t,r,i,a,n){if(t>>>=0,i>>>=0,r=eU(r>>>0),-1===n&&(n=0xffffffff),n=t=>t,0===a){var s=32-8*i;n=t=>t<<s>>>s}var o=r.includes("unsigned")?function(t,r){return r>>>0}:function(t,r){return r};eH(t,{name:r,fromWireType:n,toWireType:o,Cb:eY,readValueFromPointer:eG(r,i,0!==a),Eb:null})}function e6(t,r,i){function a(t){var r=F()[t>>>2>>>0];return t=F()[t+4>>>2>>>0],new n(z().buffer,t,r)}var n=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,BigInt64Array,BigUint64Array][r];eH(t>>>=0,{name:i=eU(i>>>0),fromWireType:a,Cb:eY,readValueFromPointer:a},{Tb:!0})}var e5=(t,r,i)=>{var a=D();if(r>>>=0,0<i){var n=r;i=r+i-1;for(var s=0;s<t.length;++s){var o=t.charCodeAt(s);if(55296<=o&&57343>=o&&(o=65536+((1023&o)<<10)|1023&t.charCodeAt(++s)),127>=o){if(r>=i)break;a[r++>>>0]=o}else{if(2047>=o){if(r+1>=i)break;a[r++>>>0]=192|o>>6}else{if(65535>=o){if(r+2>=i)break;a[r++>>>0]=224|o>>12}else{if(r+3>=i)break;a[r++>>>0]=240|o>>18,a[r++>>>0]=128|o>>12&63}a[r++>>>0]=128|o>>6&63}a[r++>>>0]=128|63&o}}a[r>>>0]=0,t=r-n}else t=0;return t},e9=t=>{for(var r=0,i=0;i<t.length;++i){var a=t.charCodeAt(i);127>=a?r++:2047>=a?r+=2:55296<=a&&57343>=a?(r+=4,++i):r+=3}return r};function te(t,r){eH(t>>>=0,{name:r=eU(r>>>0),fromWireType:function(t){for(var r,i=F()[t>>>2>>>0],a=t+4,n=a,s=0;s<=i;++s){var o=a+s;s!=i&&0!=D()[o>>>0]||(n=ek(n,o-n),void 0===r?r=n:(r+="\0",r+=n),n=o+1)}return rU(t),r},toWireType:function(t,r){r instanceof ArrayBuffer&&(r=new Uint8Array(r));var i="string"==typeof r;if(!(i||ArrayBuffer.isView(r)&&1==r.BYTES_PER_ELEMENT))throw new eW("Cannot pass non-string to std::string");var a=i?e9(r):r.length,n=rF(4+a+1),s=n+4;return F()[n>>>2>>>0]=a,i?e5(r,s,a+1):D().set(r,s>>>0),null!==t&&t.push(rU,n),n},Cb:eY,readValueFromPointer:e2,Eb(t){rU(t)}})}var tt="u">typeof TextDecoder?new TextDecoder("utf-16le"):void 0,tr=(t,r)=>{for(var i=t>>1,a=i+r/2;!(i>=a)&&L()[i>>>0];)++i;if(32<(i<<=1)-t&&tt)return tt.decode(D().slice(t,i));for(i="",a=0;!(a>=r/2);++a){var n=B()[t+2*a>>>1>>>0];if(0==n)break;i+=String.fromCharCode(n)}return i},ti=(t,r,i)=>{if(2>(i??=0x7fffffff))return 0;var a=r;
2i=(i-=2)<2*t.length?i/2:t.length;for(var n=0;n<i;++n){var s=t.charCodeAt(n);B()[r>>>1>>>0]=s,r+=2}return B()[r>>>1>>>0]=0,r-a},ta=t=>2*t.length,tn=(t,r)=>{for(var i=0,a="";!(i>=r/4);){var n=U()[t+4*i>>>2>>>0];if(0==n)break;++i,65536<=n?(n-=65536,a+=String.fromCharCode(55296|n>>10,56320|1023&n)):a+=String.fromCharCode(n)}return a},ts=(t,r,i)=>{if(r>>>=0,4>(i??=0x7fffffff))return 0;var a=r;i=a+i-4;for(var n=0;n<t.length;++n){var s=t.charCodeAt(n);if(55296<=s&&57343>=s&&(s=65536+((1023&s)<<10)|1023&t.charCodeAt(++n)),U()[r>>>2>>>0]=s,(r+=4)+4>i)break}return U()[r>>>2>>>0]=0,r-a},to=t=>{for(var r=0,i=0;i<t.length;++i){var a=t.charCodeAt(i);55296<=a&&57343>=a&&++i,r+=4}return r};function tl(t,r,i){if(t>>>=0,r>>>=0,i=eU(i>>>=0),2===r)var a=tr,n=ti,s=ta,o=t=>L()[t>>>1>>>0];else 4===r&&(a=tn,n=ts,s=to,o=t=>F()[t>>>2>>>0]);eH(t,{name:i,fromWireType:t=>{for(var i,n=F()[t>>>2>>>0],s=t+4,l=0;l<=n;++l){var u=t+4+l*r;l!=n&&0!=o(u)||(s=a(s,u-s),void 0===i?i=s:(i+="\0",i+=s),s=u+r)}return rU(t),i},toWireType:(t,a)=>{if("string"!=typeof a)throw new eW(`Cannot pass non-string to C++ string type ${i}`);var o=s(a),l=rF(4+o+r);return F()[l>>>2>>>0]=o/r,n(a,l+4,o+r),null!==t&&t.push(rU,l),l},Cb:eY,readValueFromPointer:e2,Eb(t){rU(t)}})}function tu(t,r){eH(t>>>=0,{Ub:!0,name:r=eU(r>>>0),Cb:0,fromWireType:()=>{},toWireType:()=>{}})}function td(t){rq(t>>>0,!o,1,!s,131072,!1),ep()}var tc=t=>{if(!R)try{if(t(),!(0<ea))try{l?rG(v):el(v)}catch(t){t instanceof ee||"unwind"==t||p(0,t)}}catch(t){t instanceof ee||"unwind"==t||p(0,t)}};function th(t){t>>>=0,"function"==typeof Atomics.jc&&(Atomics.jc(U(),t>>>2,t).value.then(tf),t+=128,Atomics.store(U(),t>>>2,1))}var tf=()=>{var t=rL();t&&(th(t),tc(rY))};function tp(t,r){(t>>>=0)==r>>>0?setTimeout(tf):l?postMessage({Hb:t,Db:"checkMailbox"}):(t=eh[t])&&t.postMessage({Db:"checkMailbox"})}var tm=[];function tg(t,r,i,a,n){for(r>>>=0,tm.length=a/=2,i=n>>>0>>>3,n=0;n<a;n++)tm[n]=E[i+2*n]?E[i+2*n+1]:V()[i+2*n+1>>>0];return(r?rP[r]:rM[t])(...tm)}var tb=()=>{ea=0};function ty(t){t>>>=0,l?postMessage({Db:"cleanupThread",ic:t}):ef(eh[t])}function tv(t){}var t_=(t,r)=>{var i=eq[t];if(void 0===i)throw i=eU(t=rD(t)),rU(t),new eW(`${r} has unknown type ${i}`);return i},tw=(t,r,i)=>{var a=[];return t=t.toWireType(a,i),a.length&&(F()[r>>>2>>>0]=e0(a)),t};function tx(t,r,i){return r>>>=0,i>>>=0,t=e1(t>>>0),tw(r=t_(r,"emval::as"),i,t)}function t$(t,r){return r>>>=0,t=e1(t>>>0),(r=t_(r,"emval::as")).toWireType(null,t)}var tS=t=>{try{t()}catch(t){Z(t)}},tk=0,tC=null,tE=0,tT=[],tI={},tA={},tN=0,tO=null,tM=[];function tP(t){return function(t){if(!R){if(0===tk){var r,i,a,n=!1,s=!1;t((t=0)=>{if(!R&&(tE=t,n=!0,s)){tk=2,tS(()=>r3(tC)),"u">typeof MainLoop&&MainLoop.Qb&&MainLoop.resume(),t=!1;try{var r,i=(r=rz[tA[r=U()[tC+8>>>2>>>0]]],--ea,r())}catch(r){i=r,t=!0}var a=!1;if(!tC){var o=tO;o&&(tO=null,(t?o.reject:o.resolve)(i),a=!0)}if(t&&!a)throw i}}),s=!0,n||(tk=1,i=(r=rF(65548))+12,F()[r>>>2>>>0]=i,F()[r+4>>>2>>>0]=i+65536,void 0===(a=tI[i=tT[0]])&&(a=tN++,tI[i]=a,tA[a]=i),i=a,U()[r+8>>>2>>>0]=i,tC=r,"u">typeof MainLoop&&MainLoop.Qb&&MainLoop.pause(),tS(()=>r0(tC)))}else 2===tk?(tk=0,tS(r4),rU(tC),tC=null,tM.forEach(tc)):Z(`invalid state: ${tk}`);return tE}}(r=>{t().then(r)})}function tR(t){return t>>>=0,tP(async()=>e0(await e1(t)))}var tj=[];function tz(t,r,i,a){return i>>>=0,a>>>=0,(t=tj[t>>>0])(null,r=e1(r>>>0),i,a)}var tD={},tB=t=>{var r=tD[t];return void 0===r?eU(t):r};function tL(t,r,i,a,n){return i>>>=0,a>>>=0,n>>>=0,(t=tj[t>>>0])(r=e1(r>>>0),r[i=tB(i)],a,n)}function tU(t,r){return r>>>=0,(t=e1(t>>>0))==e1(r)}var tF=()=>"object"==typeof globalThis?globalThis:Function("return this")();function tq(t){return 0==(t>>>=0)?e0(tF()):(t=tB(t),e0(tF()[t]))}function tV(t,r,i){var a,n,s=(r=((t,r)=>{for(var i=Array(t),a=0;a<t;++a)i[a]=t_(F()[r+4*a>>>2>>>0],`parameter ${a}`);return i})(t,r>>>0)).shift();t--;var o=`return function (obj, func, destructorsRef, args) { 3`,l=0,u=[];0===i&&u.push("obj");for(var d=["retType"],c=[s],h=0;h<t;++h)u.push(`arg${h}`),d.push(`argType${h}`),c.push(r[h]),o+=` var arg${h} = argType${h}.readValueFromPointer(args${l?"+"+l:""}); 4`,l+=r[h].Cb;return o+=` var rv = ${1===i?"new func":"func.call"}(${u.join(", ")}); 5`,s.Ub||(d.push("emval_returnValue"),c.push(tw),o+=` return emval_returnValue(retType, destructorsRef, rv); 6`),a=Object.defineProperty(t=Function(...d,o+`}; 7`)(...c),"name",{value:i=`methodCaller<(${r.map(t=>t.name).join(", ")}) => ${s.name}>`}),n=tj.length,tj.push(a),n}function tW(r){return e0(t[r=tB(r>>>0)])}function tH(t,r){return r>>>=0,e0((t=e1(t>>>0))[r=e1(r)])}function tG(t){9<(t>>>=0)&&(eZ[t+1]+=1)}function tK(){return e0([])}function tY(t){t=e1(t>>>0);for(var r=Array(t.length),i=0;i<t.length;i++)r[i]=t[i];return e0(r)}function tQ(t){return e0(tB(t>>>0))}function tX(){return e0({})}function tZ(t){for(var r=e1(t>>>=0);r.length;){var i=r.pop();r.pop()(i)}eJ(t)}function tJ(t,r,i){r>>>=0,i>>>=0,t=e1(t>>>0),r=e1(r),i=e1(i),t[r]=i}function t1(t,r){return r>>>=0,e0(t=(t=t_(t>>>0,"_emval_take_value")).readValueFromPointer(r))}function t0(t,r){t=-0x20000000000000>t||0x20000000000000<t?NaN:Number(t),r>>>=0,t=new Date(1e3*t),U()[r>>>2>>>0]=t.getUTCSeconds(),U()[r+4>>>2>>>0]=t.getUTCMinutes(),U()[r+8>>>2>>>0]=t.getUTCHours(),U()[r+12>>>2>>>0]=t.getUTCDate(),U()[r+16>>>2>>>0]=t.getUTCMonth(),U()[r+20>>>2>>>0]=t.getUTCFullYear()-1900,U()[r+24>>>2>>>0]=t.getUTCDay(),t=(t.getTime()-Date.UTC(t.getUTCFullYear(),0,1,0,0,0,0))/864e5|0,U()[r+28>>>2>>>0]=t}var t2=t=>t%4==0&&(t%100!=0||t%400==0),t3=[0,31,60,91,121,152,182,213,244,274,305,335],t4=[0,31,59,90,120,151,181,212,243,273,304,334];function t8(t,r){t=-0x20000000000000>t||0x20000000000000<t?NaN:Number(t),r>>>=0,t=new Date(1e3*t),U()[r>>>2>>>0]=t.getSeconds(),U()[r+4>>>2>>>0]=t.getMinutes(),U()[r+8>>>2>>>0]=t.getHours(),U()[r+12>>>2>>>0]=t.getDate(),U()[r+16>>>2>>>0]=t.getMonth(),U()[r+20>>>2>>>0]=t.getFullYear()-1900,U()[r+24>>>2>>>0]=t.getDay();var i=(t2(t.getFullYear())?t3:t4)[t.getMonth()]+t.getDate()-1|0;U()[r+28>>>2>>>0]=i,U()[r+36>>>2>>>0]=-60*t.getTimezoneOffset(),i=new Date(t.getFullYear(),6,1).getTimezoneOffset();var a=new Date(t.getFullYear(),0,1).getTimezoneOffset();t=0|(i!=a&&t.getTimezoneOffset()==Math.min(a,i)),U()[r+32>>>2>>>0]=t}function t7(t){t>>>=0;var r=new Date(U()[t+20>>>2>>>0]+1900,U()[t+16>>>2>>>0],U()[t+12>>>2>>>0],U()[t+8>>>2>>>0],U()[t+4>>>2>>>0],U()[t>>>2>>>0],0),i=U()[t+32>>>2>>>0],a=r.getTimezoneOffset(),n=new Date(r.getFullYear(),6,1).getTimezoneOffset(),s=new Date(r.getFullYear(),0,1).getTimezoneOffset(),o=Math.min(s,n);return 0>i?U()[t+32>>>2>>>0]=+(n!=s&&o==a):0<i!=(o==a)&&(n=Math.max(s,n),r.setTime(r.getTime()+6e4*((0<i?o:n)-a))),U()[t+24>>>2>>>0]=r.getDay(),i=(t2(r.getFullYear())?t3:t4)[r.getMonth()]+r.getDate()-1|0,U()[t+28>>>2>>>0]=i,U()[t>>>2>>>0]=r.getSeconds(),U()[t+4>>>2>>>0]=r.getMinutes(),U()[t+8>>>2>>>0]=r.getHours(),U()[t+12>>>2>>>0]=r.getDate(),U()[t+16>>>2>>>0]=r.getMonth(),U()[t+20>>>2>>>0]=r.getYear(),BigInt(isNaN(t=r.getTime())?-1:t/1e3)}function t6(t,r,i,a,n,s,o){return l?en(16,1,t,r,i,a,n,s,o):-52}function t5(t,r,i,a,n,s){if(l)return en(17,1,t,r,i,a,n,s)}var t9={},re=()=>performance.timeOrigin+performance.now();function rt(t,r){if(l)return en(18,1,t,r);if(t9[t]&&(clearTimeout(t9[t].id),delete t9[t]),!r)return 0;var i=setTimeout(()=>{delete t9[t],tc(()=>rK(t,performance.timeOrigin+performance.now()))},r);return t9[t]={id:i,rc:r},0}function rr(t,r,i,a){t>>>=0,r>>>=0,i>>>=0,a>>>=0;var n=new Date().getFullYear(),s=new Date(n,0,1).getTimezoneOffset(),o=Math.max(s,n=new Date(n,6,1).getTimezoneOffset());F()[t>>>2>>>0]=60*o,U()[r>>>2>>>0]=+(s!=n),t=(r=t=>{var r=Math.abs(t);return`UTC${0<=t?"-":"+"}${String(Math.floor(r/60)).padStart(2,"0")}${String(r%60).padStart(2,"0")}`})(s),r=r(n),n<s?(e5(t,i,17),e5(r,a,17)):(e5(t,a,17),e5(r,i,17))}var ri=()=>Date.now();function ra(t,r,i){return 0<=t&&3>=t?(t=0===t?Date.now():performance.timeOrigin+performance.now(),E[i>>>0>>>3]=BigInt(Math.round(1e6*t)),0):28}var rn=[],rs=(t,r)=>{rn.length=0;for(var i;i=D()[t++>>>0];){var a=105!=i;r+=(a&=112!=i)&&r%8?4:0,rn.push(112==i?F()[r>>>2>>>0]:106==i?E[r>>>3]:105==i?U()[r>>>2>>>0]:V()[r>>>3>>>
70]),r+=a?8:4}return rn};function ro(t,r,i){return t>>>=0,r=rs(r>>>0,i>>>0),rP[t](...r)}function rl(t,r,i){return t>>>=0,r=rs(r>>>0,i>>>0),rP[t](...r)}var ru=()=>{};function rd(t,r){return P(ek(t>>>0,r>>>0))}var rc=()=>{throw ea+=1,"unwind"};function rh(){return 0xffff0000}var rf=()=>navigator.hardwareConcurrency;function rp(){return Z("Cannot use emscripten_pc_get_function without -sUSE_OFFSET_CONVERTER"),0}function rm(t){t>>>=0;var r=D().length;if(t<=r||0xffff0000<t)return!1;for(var i=1;4>=i;i*=2){var a=r*(1+.2/i);a=Math.min(a,t+0x6000000);e:{a=(Math.min(0xffff0000,65536*Math.ceil(Math.max(t,a)/65536))-b.buffer.byteLength+65535)/65536|0;try{b.grow(a),H();var n=1;break e}catch{}n=void 0}if(n)return!0}return!1}var rg=()=>(Z("Cannot use convertFrameToPC (needed by __builtin_return_address) without -sUSE_OFFSET_CONVERTER"),0),rb={},ry=t=>{t.forEach(t=>{var r=rg();r&&(rb[r]=t)})};function rv(){var t=Error().stack.toString().split(` 8`);return"Error"==t[0]&&t.shift(),ry(t),rb.Mb=rg(),rb.dc=t,rb.Mb}function r_(t,r,i){if(t>>>=0,r>>>=0,rb.Mb==t)var a=rb.dc;else"Error"==(a=Error().stack.toString().split(` 9`))[0]&&a.shift(),ry(a);for(var n=3;a[n]&&rg()!=t;)++n;for(t=0;t<i&&a[t+n];++t)U()[r+4*t>>>2>>>0]=rg();return t}var rw,rx={},r$=()=>{if(!rw){var t,r={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:"./this.program"};for(t in rx)void 0===rx[t]?delete r[t]:r[t]=rx[t];var i=[];for(t in r)i.push(`${t}=${r[t]}`);rw=i}return rw};function rS(t,r){if(l)return en(19,1,t,r);t>>>=0,r>>>=0;var i,a=0,n=0;for(i of r$()){var s=r+a;F()[t+n>>>2>>>0]=s,a+=e5(i,s,1/0)+1,n+=4}return 0}function rk(t,r){if(l)return en(20,1,t,r);t>>>=0,r>>>=0;var i=r$();for(var a of(F()[t>>>2>>>0]=i.length,t=0,i))t+=e9(a)+1;return F()[r>>>2>>>0]=t,0}function rC(t){return l?en(21,1,t):52}function rE(t,r,i,a){return l?en(22,1,t,r,i,a):52}function rT(t,r,i,a){return l?en(23,1,t,r,i,a):70}var rI=[null,[],[]];function rA(t,r,i,a){if(l)return en(24,1,t,r,i,a);r>>>=0,i>>>=0,a>>>=0;for(var n=0,s=0;s<i;s++){var o=F()[r>>>2>>>0],u=F()[r+4>>>2>>>0];r+=8;for(var d=0;d<u;d++){var c=D()[o+d>>>0],h=rI[t];0===c||10===c?((1===t?M:P)(eS(h)),h.length=0):h.push(c)}n+=u}return F()[a>>>2>>>0]=n,0}l||function(){for(var r=t.numThreads-1;r--;)eg();er.push(()=>{var t;Y++,t=()=>X(),l?t():Promise.all(eu.map(em)).then(t)})}();for(var rN=Array(256),rO=0;256>rO;++rO)rN[rO]=String.fromCharCode(rO);eB=rN,eZ.push(0,1,void 0,1,null,1,!0,1,!1,1),t.count_emval_handles=()=>eZ.length/2-5-eX.length,l||(b=new WebAssembly.Memory({initial:256,maximum:65536,shared:!0}),H()),t.wasmBinary&&(g=t.wasmBinary),t.stackSave=()=>rJ(),t.stackRestore=t=>rX(t),t.stackAlloc=t=>rZ(t),t.setValue=function(t,r,i="i8"){switch(i.endsWith("*")&&(i="*"),i){case"i1":case"i8":z()[t>>>0]=r;break;case"i16":B()[t>>>1>>>0]=r;break;case"i32":U()[t>>>2>>>0]=r;break;case"i64":E[t>>>3]=BigInt(r);break;case"float":q()[t>>>2>>>0]=r;break;case"double":V()[t>>>3>>>0]=r;break;case"*":F()[t>>>2>>>0]=r;break;default:Z(`invalid type for setValue: ${i}`)}},t.getValue=function(t,r="i8"){switch(r.endsWith("*")&&(r="*"),r){case"i1":case"i8":return z()[t>>>0];case"i16":return B()[t>>>1>>>0];case"i32":return U()[t>>>2>>>0];case"i64":return E[t>>>3];case"float":return q()[t>>>2>>>0];case"double":return V()[t>>>3>>>0];case"*":return F()[t>>>2>>>0];default:Z(`invalid type for getValue: ${r}`)}},t.UTF8ToString=ek,t.stringToUTF8=e5,t.lengthBytesUTF8=e9;var rM=[es,eo,ew,eC,eE,eT,eI,eA,eN,eO,eM,eP,eR,ej,ez,eD,t6,t5,rt,rS,rk,rC,rE,rT,rA],rP={892060:(r,i,a,n,s)=>{if(void 0===t||!t.Fb)return 1;if((r=ek(Number(r>>>0))).startsWith("./")&&(r=r.substring(2)),!(r=t.Fb.get(r)))return 2;if(i=Number(i>>>0),a=Number(a>>>0),n=Number(n>>>0),i+a>r.byteLength)return 3;try{let o=r.subarray(i,i+a);switch(s){case 0:D().set(o,n>>>0);break;case 1:t.mc?t.mc(n,o):t.cc(n,o);break;default:return 4}return 0}catch{return 4}},892884:(r,i,a)=>{t.Pb(r,D().subarray(i>>>0,i+a>>>0))},892948:()=>t.oc(),892990:r=>{t.Ob(r)},893027:()=>{t.Wb()},893058:()=>{t.Xb()},893087:()=>{t.ac()},893112:r=>t.Vb(r),893145:r=>t.Zb(r),893177:(r,i,a)=>{t.Lb(Number(r),Number(i),Number(a),!0)},893240:(r,i,a)=>{t.Lb(Number(r),Number(i),Number(a))},893297:()=>"u">typeof wasmOffsetConverter,893354:r=>{t.Ab("Abs",r,void 0)},893405:r=>{t.Ab("Neg",r,void 0)},893456:r=>{t.Ab("Floor",r,void 0)},893509:r=>{t.Ab("Ceil",r,void 0)},893561:r=>{t.Ab("Reciprocal",r,void 0)},893619:r=>{t.Ab("Sqrt",r,void 0)},893671:r=>{t.Ab("Exp",r,void 0)},893722:r=>{t.Ab("Erf",r,void 0)},893773:r=>{t.Ab("Sigmoid",r,void 0)},893828:(r,i,a)=>{t.Ab("HardSigmoid",r,{alpha:i,beta:a})},893907:r=>{t.Ab("Log",r,void 0)},893958:r=>{t.Ab("Sin",r,void 0)},894009:r=>{t.Ab("Cos",r,void 0)},894060:r=>{t.Ab("Tan",r,void 0)},894111:r=>{t.Ab("Asin",r,void 0)},894163:r=>{t.Ab("Acos",r,void 0)},894215:r=>{t.Ab("Atan",r,void 0)},894267:r=>{t.Ab("Sinh",r,void 0)},894319:r=>{t.Ab("Cosh",r,void 0)},894371:r=>{t.Ab("Asinh",r,void 0)},894424:r=>{t.Ab("Acosh",r,void 0)},894477:r=>{t.Ab("Atanh",r,void 0)},894530:r=>{t.Ab("Tanh",r,void 0)},894582:r=>{t.Ab("Not",r,void 0)},894633:(r,i,a)=>{t.Ab("Clip",r,{min:i,max:a})},894702:r=>{t.Ab("Clip",r,void 0)}
vendor: 6,220 bytes, line 9
9,894754:(r,i)=>{t.Ab("Elu",r,{alpha:i})},894812:r=>{t.Ab("Gelu",r,void 0)},894864:r=>{t.Ab("Relu",r,void 0)},894916:(r,i)=>{t.Ab("LeakyRelu",r,{alpha:i})},894980:(r,i)=>{t.Ab("ThresholdedRelu",r,{alpha:i})},895050:(r,i)=>{t.Ab("Cast",r,{to:i})},895108:r=>{t.Ab("Add",r,void 0)},895159:r=>{t.Ab("Sub",r,void 0)},895210:r=>{t.Ab("Mul",r,void 0)},895261:r=>{t.Ab("Div",r,void 0)},895312:r=>{t.Ab("Pow",r,void 0)},895363:r=>{t.Ab("Equal",r,void 0)},895416:r=>{t.Ab("Greater",r,void 0)},895471:r=>{t.Ab("GreaterOrEqual",r,void 0)},895533:r=>{t.Ab("Less",r,void 0)},895585:r=>{t.Ab("LessOrEqual",r,void 0)},895644:(r,i,a,n,s)=>{t.Ab("ReduceMean",r,{keepDims:!!i,noopWithEmptyAxes:!!a,axes:n?Array.from(U().subarray(Number(n)>>>0,Number(s)>>>0)):[]})},895819:(r,i,a,n,s)=>{t.Ab("ReduceMax",r,{keepDims:!!i,noopWithEmptyAxes:!!a,axes:n?Array.from(U().subarray(Number(n)>>>0,Number(s)>>>0)):[]})},895993:(r,i,a,n,s)=>{t.Ab("ReduceMin",r,{keepDims:!!i,noopWithEmptyAxes:!!a,axes:n?Array.from(U().subarray(Number(n)>>>0,Number(s)>>>0)):[]})},896167:(r,i,a,n,s)=>{t.Ab("ReduceProd",r,{keepDims:!!i,noopWithEmptyAxes:!!a,axes:n?Array.from(U().subarray(Number(n)>>>0,Number(s)>>>0)):[]})},896342:(r,i,a,n,s)=>{t.Ab("ReduceSum",r,{keepDims:!!i,noopWithEmptyAxes:!!a,axes:n?Array.from(U().subarray(Number(n)>>>0,Number(s)>>>0)):[]})},896516:(r,i,a,n,s)=>{t.Ab("ReduceL1",r,{keepDims:!!i,noopWithEmptyAxes:!!a,axes:n?Array.from(U().subarray(Number(n)>>>0,Number(s)>>>0)):[]})},896689:(r,i,a,n,s)=>{t.Ab("ReduceL2",r,{keepDims:!!i,noopWithEmptyAxes:!!a,axes:n?Array.from(U().subarray(Number(n)>>>0,Number(s)>>>0)):[]})},896862:(r,i,a,n,s)=>{t.Ab("ReduceLogSum",r,{keepDims:!!i,noopWithEmptyAxes:!!a,axes:n?Array.from(U().subarray(Number(n)>>>0,Number(s)>>>0)):[]})},897039:(r,i,a,n,s)=>{t.Ab("ReduceSumSquare",r,{keepDims:!!i,noopWithEmptyAxes:!!a,axes:n?Array.from(U().subarray(Number(n)>>>0,Number(s)>>>0)):[]})},897219:(r,i,a,n,s)=>{t.Ab("ReduceLogSumExp",r,{keepDims:!!i,noopWithEmptyAxes:!!a,axes:n?Array.from(U().subarray(Number(n)>>>0,Number(s)>>>0)):[]})},897399:r=>{t.Ab("Where",r,void 0)},897452:(r,i,a)=>{t.Ab("Transpose",r,{perm:i?Array.from(U().subarray(Number(i)>>>0,Number(a)>>>0)):[]})},897576:(r,i,a,n)=>{t.Ab("DepthToSpace",r,{blocksize:i,mode:ek(a),format:n?"NHWC":"NCHW"})},897709:(r,i,a,n)=>{t.Ab("DepthToSpace",r,{blocksize:i,mode:ek(a),format:n?"NHWC":"NCHW"})},897842:(r,i,a,n,s,o,l,u,d,c,h,f,p,m,g)=>{t.Ab("ConvTranspose",r,{format:d?"NHWC":"NCHW",autoPad:i,dilations:[a],group:n,kernelShape:[s],pads:[o,l],strides:[u],wIsConst:()=>!!z()[c>>>0],outputPadding:h?Array.from(U().subarray(Number(h)>>>0,Number(f)>>>0)):[],outputShape:p?Array.from(U().subarray(Number(p)>>>0,Number(m)>>>0)):[],activation:ek(g)})},898275:(r,i,a,n,s,o,l,u,d,c,h,f,p,m)=>{t.Ab("ConvTranspose",r,{format:u?"NHWC":"NCHW",autoPad:i,dilations:Array.from(U().subarray(Number(a)>>>0,2+(Number(a)>>>0)>>>0)),group:n,kernelShape:Array.from(U().subarray(Number(s)>>>0,2+(Number(s)>>>0)>>>0)),pads:Array.from(U().subarray(Number(o)>>>0,4+(Number(o)>>>0)>>>0)),strides:Array.from(U().subarray(Number(l)>>>0,2+(Number(l)>>>0)>>>0)),wIsConst:()=>!!z()[d>>>0],outputPadding:c?Array.from(U().subarray(Number(c)>>>0,Number(h)>>>0)):[],outputShape:f?Array.from(U().subarray(Number(f)>>>0,Number(p)>>>0)):[],activation:ek(m)})},898936:(r,i,a,n,s,o,l,u,d,c,h,f,p,m,g)=>{t.Ab("ConvTranspose",r,{format:d?"NHWC":"NCHW",autoPad:i,dilations:[a],group:n,kernelShape:[s],pads:[o,l],strides:[u],wIsConst:()=>!!z()[c>>>0],outputPadding:h?Array.from(U().subarray(Number(h)>>>0,Number(f)>>>0)):[],outputShape:p?Array.from(U().subarray(Number(p)>>>0,Number(m)>>>0)):[],activation:ek(g)})},899369:(r,i,a,n,s,o,l,u,d,c,h,f,p,m)=>{t.Ab("ConvTranspose",r,{format:u?"NHWC":"NCHW",autoPad:i,dilations:Array.from(U().subarray(Number(a)>>>0,2+(Number(a)>>>0)>>>0)),group:n,kernelShape:Array.from(U().subarray(Number(s)>>>0,2+(Number(s)>>>0)>>>0)),pads:Array.from(U().subarray(Number(o)>>>0,4+(Number(o)>>>0)>>>0)),strides:Array.from(U().subarray(Number(l)>>>0,2+(Number(l)>>>0)>>>0)),wIsConst:()=>!!z()[d>>>0],outputPadding:c?Array.from(U().subarray(Number(c)>>>0,Number(h)>>>0)):[],outputShape:f?Array.from(U().subarray(Number(f)>>>0,Number(p)>>>0)):[],activation:ek(m)})},900030:(r,i)=>{t.Ab("GlobalAveragePool",r,{format:i?"NHWC":"NCHW"})},900121:(r,i,a,n,s,o,l,u,d,c,h,f,p,m)=>{t.Ab("AveragePool",r,{format:m?"NHWC":"NCHW",auto_pad:i,ceil_mode:a,count_include_pad:n,storage_order:s,dilations:o?Array.from(U().subarray(Number(o)>>>0,Number(l)>>>0)):[],kernel_shape:u?Array.from(U().subarray(Number(u)>>>0,Number(d)>>>0)):[],pads:c?Array.from(U().subarray(Number(c)>>>0,Number(h)>>>0)):[],strides:f?Array.from(U().subarray(Number(f)>>>0,Number(p)>>>0)):[]})},900600:(r,i)=>{t.Ab("GlobalAveragePool",r,{format:i?"NHWC":"NCHW"})},900691:(r,i,a,n,s,o,l,u,d,c,h,f,p,m)=>{t.Ab("AveragePool",r,{format:m?"NHWC":"NCHW",auto_pad:i,ceil_mode:a,count_include_pad:n,storage_order:s,dilations:o?Array.from(U().subarray(Number(o)>>>0,Number(l)>>>0)):[],kernel_shape:u?Array.from(U().subarray(Number(u)>>>0,Number(d)>>>0)):[],pads:c?Array.from(U().subarray(Number(c)>>>0,Number(h)>>>0)):[],strides:f?Array.from(U().subarray(Number(f)>>>0,Number(p)>>>0)):[]})},901170:(r,i)=>{t.Ab("GlobalMaxPool",r,{format:i?"NHWC":"NCHW"})},901257:(r,i,a,n,s,o,l,u,d,c,h,f,p,m)=>{t.Ab("MaxPool",r,{format:m?"NHWC":"NCHW",auto_pad:i,ceil_mode:a,count_include_pad:n,storage_order:s,dilations:o?Array.from(U().subarray(Number(o)>>>0,Number(l)>>>0)):[],kernel_shape:u?Array.from(U().subarray(Number(u)>>>0,Number(d)>>>0)):[],pads:c?Array.from(U().subarray(Number(c)>>>0,Number(h)>>>0)):[],strides:f?Array.from(U().subarray(Number(f)>>>0,Number(p)>>>0)):[]})},901732:(r,i)=>{t.Ab("GlobalMaxPool",r,{format:i?"NHWC":"NCHW"})},901819:(r,i,a,n,s,o,l,u,d,c,h,f,p,m)=>{t.Ab("MaxPool",r,{format:m?"NHWC":"NCHW",auto_pad:i,ceil_mode:a,count_include_pad:n,storage_order:s,dilations:o?Array.from(U().subarray(Number(o)>>>0,Number(l)>>>0)):[],kernel_shape:u?Array.from(U().subarray(Number(u)>>>0,Number(d)>>>0)):[],pads:c?Array.from(U().subarray(Number(c)>>>0,Number(h)>>>0)):[],strides:f?Array.from(U().subarray(Number(f)>>>0,Number(p)>>>0)):[]})},902294:(r,i,a,n,s)=>{t.Ab("Gemm",r,{alpha:i,beta:a,transA:n,transB:s}
9)},902398:r=>{t.Ab("MatMul",r,void 0)},902452:(r,i,a,n)=>{t.Ab("ArgMax",r,{keepDims:!!i,selectLastIndex:!!a,axis:n})},902560:(r,i,a,n)=>{t.Ab("ArgMin",r,{keepDims:!!i,selectLastIndex:!!a,axis:n})},902668:(r,i)=>{t.Ab("Softmax",r,{axis:i})},902731:(r,i)=>{t.Ab("Concat",r,{axis:i})},902791:(r,i,a,n,s)=>{t.Ab("Split",r,{axis:i,numOutputs:a,splitSizes:n?Array.from(U().subarray(Number(n)>>>0,Number(s)>>>0)):[]})},902947:r=>{t.Ab("Expand",r,void 0)},903001:(r,i)=>{t.Ab("Gather",r,{axis:Number(i)})},903072:(r,i)=>{t.Ab("GatherElements",r,{axis:Number(i)})},903151:(r,i)=>{t.Ab("GatherND",r,{batch_dims:Number(i)})},903230:(r,i,a,n,s,o,l,u,d,c,h)=>{t.Ab("Resize",r,{antialias:i,axes:a?Array.from(U().subarray(Number(a)>>>0,Number(n)>>>0)):[],coordinateTransformMode:ek(s),cubicCoeffA:o,excludeOutside:l,extrapolationValue:u,keepAspectRatioPolicy:ek(d),mode:ek(c),nearestMode:ek(h)})},903592:(r,i,a,n,s,o,l)=>{t.Ab("Slice",r,{starts:i?Array.from(U().subarray(Number(i)>>>0,Number(a)>>>0)):[],ends:n?Array.from(U().subarray(Number(n)>>>0,Number(s)>>>0)):[],axes:o?Array.from(U().subarray(Number(o)>>>0,Number(l)>>>0)):[]})},903856:r=>{t.Ab("Tile",r,void 0)},903908:(r,i,a)=>{t.Ab("InstanceNormalization",r,{epsilon:i,format:a?"NHWC":"NCHW"})},904022:(r,i,a)=>{t.Ab("InstanceNormalization",r,{epsilon:i,format:a?"NHWC":"NCHW"})},904136:r=>{t.Ab("Range",r,void 0)},904189:(r,i)=>{t.Ab("Einsum",r,{equation:ek(i)})},904270:(r,i,a,n,s)=>{t.Ab("Pad",r,{mode:i,value:a,pads:n?Array.from(U().subarray(Number(n)>>>0,Number(s)>>>0)):[]})},904413:(r,i,a,n,s,o)=>{t.Ab("BatchNormalization",r,{epsilon:i,momentum:a,spatial:!!s,trainingMode:!!n,format:o?"NHWC":"NCHW"})},904582:(r,i,a,n,s,o)=>{t.Ab("BatchNormalization",r,{epsilon:i,momentum:a,spatial:!!s,trainingMode:!!n,format:o?"NHWC":"NCHW"})},904751:(r,i,a)=>{t.Ab("CumSum",r,{exclusive:Number(i),reverse:Number(a)})},904848:(r,i,a)=>{t.Ab("DequantizeLinear",r,{axis:i,blockSize:a})},904938:(r,i,a,n,s)=>{t.Ab("GridSample",r,{align_corners:i,mode:ek(a),padding_mode:ek(n),format:s?"NHWC":"NCHW"})},905108:(r,i,a,n,s)=>{t.Ab("GridSample",r,{align_corners:i,mode:ek(a),padding_mode:ek(n),format:s?"NHWC":"NCHW"})},905278:(r,i)=>{t.Ab("ScatterND",r,{reduction:ek(i)})},905363:(r,i,a,n,s,o,l,u,d)=>{t.Ab("Attention",r,{numHeads:i,isUnidirectional:a,maskFilterValue:n,scale:s,doRotary:o,qkvHiddenSizes:l?Array.from(U().subarray(Number(u)>>>0,Number(u)+l>>>0)):[],pastPresentShareBuffer:!!d})},905635:r=>{t.Ab("BiasAdd",r,void 0)},905690:r=>{t.Ab("BiasSplitGelu",r,void 0)},905751:r=>{t.Ab("FastGelu",r,void 0)},905807:(r,i,a,n,s,o,l,u,d,c,h,f,p,m,g,b)=>{t.Ab("Conv",r,{format:f?"NHWC":"NCHW",auto_pad:i,dilations:a?Array.from(U().subarray(Number(a)>>>0,Number(n)>>>0)):[],group:s,kernel_shape:o?Array.from(U().subarray(Number(o)>>>0,Number(l)>>>0)):[],pads:u?Array.from(U().subarray(Number(u)>>>0,Number(d)>>>0)):[],strides:c?Array.from(U().subarray(Number(c)>>>0,Number(h)>>>0)):[],w_is_const:()=>!!z()[Number(p)>>>0],activation:ek(m),activation_params:g?Array.from(q().subarray(Number(g)>>>0,Number(b)>>>0)):[]})},906391:r=>{t.Ab("Gelu",r,void 0)},906443:(r,i,a,n,s,o,l,u,d)=>{t.Ab("GroupQueryAttention",r,{numHeads:i,kvNumHeads:a,scale:n,softcap:s,doRotary:o,rotaryInterleaved:l,smoothSoftmax:u,localWindowSize:d})},906660:(r,i,a,n)=>{t.Ab("LayerNormalization",r,{axis:i,epsilon:a,simplified:!!n})},906771:(r,i,a,n)=>{t.Ab("LayerNormalization",r,{axis:i,epsilon:a,simplified:!!n})},906882:(r,i,a,n,s,o)=>{t.Ab("MatMulNBits",r,{k:i,n:a,accuracyLevel:n,bits:s,blockSize:o})},907009:(r,i,a,n,s,o)=>{t.Ab("MultiHeadAttention",r,{numHeads:i,isUnidirectional:a,maskFilterValue:n,scale:s,doRotary:o})},907168:(r,i)=>{t.Ab("QuickGelu",r,{alpha:i})},907232:(r,i,a,n,s)=>{t.Ab("RotaryEmbedding",r,{interleaved:!!i,numHeads:a,rotaryEmbeddingDim:n,scale:s})},907371:(r,i,a)=>{t.Ab("SkipLayerNormalization",r,{epsilon:i,simplified:!!a})},907473:(r,i,a)=>{t.Ab("SkipLayerNormalization",r,{epsilon:i,simplified:!!a})},907575:(r,i,a,n)=>{t.Ab("GatherBlockQuantized",r,{gatherAxis:i,quantizeAxis:a,blockSize:n})},907696:r=>{t.$b(r)},907730:(r,i)=>t.bc(Number(r),Number(i),t.Gb.ec,t.Gb.errors)};function rR(r,i,a){return tP(async()=>{await t.Yb(Number(r),Number(i),Number(a))})}function rj(){return"u">typeof wasmOffsetConverter}var rz=await async function(){function r(t,r){var i,a,n;return rz=t.exports,i=rz=function(){var t={};for(let[r,i]of Object.entries(rz))t[r]="function"==typeof i?(...t)=>{tT.push(r);try{return i(...t)}finally{R||(tT.pop(),tC&&1===tk&&0===tT.length&&(tk=0,ea+=1,tS(r2),"u">typeof Fibers&&Fibers.sc()))}}:i;return t}(),a=t=>r=>t(r)>>>0,n=t=>()=>t()>>>0,(i=Object.assign({},i)).Ea=a(i.Ea),i.gb=n(i.gb),i.ib=a(i.ib),i.tb=a(i.tb),i.ub=n(i.ub),i.__cxa_get_exception_ptr=a(i.__cxa_get_exception_ptr),rz=i,ec.push(rz.jb),y=r,X(),rz}Y++;var n=J();if(t.instantiateWasm)return new Promise(i=>{t.instantiateWasm(n,(t,a)=>{i(r(t,a))})});if(l)return new Promise(t=>{A=i=>{t(r(new WebAssembly.Instance(i,J()),i))}});K??=t.locateFile?t.locateFile?t.locateFile("ort-wasm-simd-threaded.jsep.wasm",m):m+"ort-wasm-simd-threaded.jsep.wasm":new i.U(i(84659)).href;try{var s=await async function(t){if(!g&&"function"==typeof WebAssembly.instantiateStreaming&&!j(K))try{var r=fetch(K,{credentials:"same-origin"});return await WebAssembly.instantiateStreaming(r,t)}catch(t){P(`wasm streaming compile failed: ${t}`),P("falling back to ArrayBuffer instantiation")}return async function(t,r){try{var i=await async function(t){if(!g)try{var r=await h(t);return new Uint8Array(r)}catch{}if(t==K&&g)t=new Uint8Array(g);else{if(!f)throw"both async and sync fetching of the wasm failed";t=f(t)}return t}(t);return await WebAssembly.instantiate(i,r)}catch(t){P(`failed to asynchronously prepare wasm: ${t}`),Z(t)}}(K,t)}(n);return r(s.instance,s.module)}catch(t){return a(t),Promise.reject(t)}}(),rD=t=>(rD=rz.Ea)(t),rB=()=>(rB=rz.Fa)();t._OrtInit=(r,i)=>(t._OrtInit=rz.Ga)(r,i),t._OrtGetLastError=(r,i)=>(t._OrtGetLastError=rz.Ha)(r,i),t._OrtCreateSessionOptions=(r,i,a,n,s,o,l,u,d,c)=>(t._OrtCreateSessionOptions=rz.Ia)(r,i,a,n,s,o,l,u,d,c),t._OrtAppendExecutionProvider=(r,i,a,n,s)=>(t._OrtAppendExecutionProvider=rz.Ja)(r,i,a,n,s),t._OrtAddFreeDimensionOverride=(r,i,a)=>(t._OrtAddFreeDimensionOverride=rz.Ka)(r,i,a),t._OrtAddSessionConfigEntry=(r,i,a)=>(t._OrtAddSessionConfigEntry=rz.La)(r,i,a),t._OrtReleaseSessionOptions=r=>(t._OrtReleaseSessionOptions=rz.Ma)(r),t._OrtCreateSession=(r,i,a)=>(t._OrtCreateSession=rz.Na)(r,i,a),t._OrtReleaseSession=r=>(t._OrtReleaseSession=rz.Oa)(r),t._OrtGetInputOutputCount=(r,i,a)=>(t._OrtGetInputOutputCount=rz.Pa)(r,i,a),t._OrtGetInputOutputMetadata=(r,i,a,n)=>(t._OrtGetInputOutputMetadata=rz.Qa)(r,i,a,n),t._OrtFree=r=>(t._OrtFree=rz.Ra)(r),t._OrtCreateTensor=(r,i,a,n,s,o)=>(t._OrtCreateTensor=rz.Sa)(r,i,a,n,s,o),t._OrtGetTensorData=(r,i,a,n,s)=>(t._OrtGetTensorData=rz.Ta)(r,i,a,n,s),t._OrtReleaseTensor=r=>
vendor: 5,620 bytes, line 9
9(t._OrtReleaseTensor=rz.Ua)(r),t._OrtCreateRunOptions=(r,i,a,n)=>(t._OrtCreateRunOptions=rz.Va)(r,i,a,n),t._OrtAddRunConfigEntry=(r,i,a)=>(t._OrtAddRunConfigEntry=rz.Wa)(r,i,a),t._OrtReleaseRunOptions=r=>(t._OrtReleaseRunOptions=rz.Xa)(r),t._OrtCreateBinding=r=>(t._OrtCreateBinding=rz.Ya)(r),t._OrtBindInput=(r,i,a)=>(t._OrtBindInput=rz.Za)(r,i,a),t._OrtBindOutput=(r,i,a,n)=>(t._OrtBindOutput=rz._a)(r,i,a,n),t._OrtClearBoundOutputs=r=>(t._OrtClearBoundOutputs=rz.$a)(r),t._OrtReleaseBinding=r=>(t._OrtReleaseBinding=rz.ab)(r),t._OrtRunWithBinding=(r,i,a,n,s)=>(t._OrtRunWithBinding=rz.bb)(r,i,a,n,s),t._OrtRun=(r,i,a,n,s,o,l,u)=>(t._OrtRun=rz.cb)(r,i,a,n,s,o,l,u),t._OrtEndProfiling=r=>(t._OrtEndProfiling=rz.db)(r),t._JsepOutput=(r,i,a)=>(t._JsepOutput=rz.eb)(r,i,a),t._JsepGetNodeName=r=>(t._JsepGetNodeName=rz.fb)(r);var rL=()=>(rL=rz.gb)(),rU=t._free=r=>(rU=t._free=rz.hb)(r),rF=t._malloc=r=>(rF=t._malloc=rz.ib)(r),rq=(t,r,i,a,n,s)=>(rq=rz.kb)(t,r,i,a,n,s),rV=()=>(rV=rz.lb)(),rW=(t,r,i,a,n)=>(rW=rz.mb)(t,r,i,a,n),rH=t=>(rH=rz.nb)(t),rG=t=>(rG=rz.ob)(t),rK=(t,r)=>(rK=rz.pb)(t,r),rY=()=>(rY=rz.qb)(),rQ=(t,r)=>(rQ=rz.rb)(t,r),rX=t=>(rX=rz.sb)(t),rZ=t=>(rZ=rz.tb)(t),rJ=()=>(rJ=rz.ub)(),r1=t.dynCall_ii=(r,i)=>(r1=t.dynCall_ii=rz.vb)(r,i);t.dynCall_vii=(r,i,a)=>(t.dynCall_vii=rz.dynCall_vii)(r,i,a),t.dynCall_iiiii=(r,i,a,n,s)=>(t.dynCall_iiiii=rz.dynCall_iiiii)(r,i,a,n,s),t.dynCall_iii=(r,i,a)=>(t.dynCall_iii=rz.dynCall_iii)(r,i,a),t.dynCall_iiiiii=(r,i,a,n,s,o)=>(t.dynCall_iiiiii=rz.dynCall_iiiiii)(r,i,a,n,s,o),t.dynCall_iiiiiiii=(r,i,a,n,s,o,l,u)=>(t.dynCall_iiiiiiii=rz.dynCall_iiiiiiii)(r,i,a,n,s,o,l,u),t.dynCall_iiiiiii=(r,i,a,n,s,o,l)=>(t.dynCall_iiiiiii=rz.dynCall_iiiiiii)(r,i,a,n,s,o,l),t.dynCall_vi=(r,i)=>(t.dynCall_vi=rz.dynCall_vi)(r,i),t.dynCall_iiii=(r,i,a,n)=>(t.dynCall_iiii=rz.dynCall_iiii)(r,i,a,n),t.dynCall_i=r=>(t.dynCall_i=rz.dynCall_i)(r),t.dynCall_viiiiiiii=(r,i,a,n,s,o,l,u,d)=>(t.dynCall_viiiiiiii=rz.dynCall_viiiiiiii)(r,i,a,n,s,o,l,u,d),t.dynCall_viii=(r,i,a,n)=>(t.dynCall_viii=rz.dynCall_viii)(r,i,a,n),t.dynCall_viijj=(r,i,a,n,s)=>(t.dynCall_viijj=rz.dynCall_viijj)(r,i,a,n,s),t.dynCall_viiiiii=(r,i,a,n,s,o,l)=>(t.dynCall_viiiiii=rz.dynCall_viiiiii)(r,i,a,n,s,o,l),t.dynCall_viiii=(r,i,a,n,s)=>(t.dynCall_viiii=rz.dynCall_viiii)(r,i,a,n,s),t.dynCall_viiiii=(r,i,a,n,s,o)=>(t.dynCall_viiiii=rz.dynCall_viiiii)(r,i,a,n,s,o),t.dynCall_vfiii=(r,i,a,n,s)=>(t.dynCall_vfiii=rz.dynCall_vfiii)(r,i,a,n,s),t.dynCall_viiiiff=(r,i,a,n,s,o,l)=>(t.dynCall_viiiiff=rz.dynCall_viiiiff)(r,i,a,n,s,o,l),t.dynCall_viiiiiff=(r,i,a,n,s,o,l,u)=>(t.dynCall_viiiiiff=rz.dynCall_viiiiiff)(r,i,a,n,s,o,l,u),t.dynCall_ffff=(r,i,a,n)=>(t.dynCall_ffff=rz.dynCall_ffff)(r,i,a,n),t.dynCall_viiff=(r,i,a,n,s)=>(t.dynCall_viiff=rz.dynCall_viiff)(r,i,a,n,s),t.dynCall_fffffff=(r,i,a,n,s,o,l)=>(t.dynCall_fffffff=rz.dynCall_fffffff)(r,i,a,n,s,o,l),t.dynCall_jjjjjjj=(r,i,a,n,s,o,l)=>(t.dynCall_jjjjjjj=rz.dynCall_jjjjjjj)(r,i,a,n,s,o,l),t.dynCall_jjjjjj=(r,i,a,n,s,o)=>(t.dynCall_jjjjjj=rz.dynCall_jjjjjj)(r,i,a,n,s,o),t.dynCall_iijjii=(r,i,a,n,s,o)=>(t.dynCall_iijjii=rz.dynCall_iijjii)(r,i,a,n,s,o),t.dynCall_viiiiiiiiiiiii=(r,i,a,n,s,o,l,u,d,c,h,f,p,m)=>(t.dynCall_viiiiiiiiiiiii=rz.dynCall_viiiiiiiiiiiii)(r,i,a,n,s,o,l,u,d,c,h,f,p,m),t.dynCall_viiiiiiiiii=(r,i,a,n,s,o,l,u,d,c,h)=>(t.dynCall_viiiiiiiiii=rz.dynCall_viiiiiiiiii)(r,i,a,n,s,o,l,u,d,c,h),t.dynCall_viiiiiiiiiii=(r,i,a,n,s,o,l,u,d,c,h,f)=>(t.dynCall_viiiiiiiiiii=rz.dynCall_viiiiiiiiiii)(r,i,a,n,s,o,l,u,d,c,h,f),t.dynCall_viiiiiiiiiiii=(r,i,a,n,s,o,l,u,d,c,h,f,p)=>(t.dynCall_viiiiiiiiiiii=rz.dynCall_viiiiiiiiiiii)(r,i,a,n,s,o,l,u,d,c,h,f,p),t.dynCall_viiiiiiiiiiiiiiiiii=(r,i,a,n,s,o,l,u,d,c,h,f,p,m,g,b,y,v,_)=>(t.dynCall_viiiiiiiiiiiiiiiiii=rz.dynCall_viiiiiiiiiiiiiiiiii)(r,i,a,n,s,o,l,u,d,c,h,f,p,m,g,b,y,v,_),t.dynCall_viiiiiiiii=(r,i,a,n,s,o,l,u,d,c)=>(t.dynCall_viiiiiiiii=rz.dynCall_viiiiiiiii)(r,i,a,n,s,o,l,u,d,c),t.dynCall_viiiiiiiiiiiiiiiiiii=(r,i,a,n,s,o,l,u,d,c,h,f,p,m,g,b,y,v,_,w)=>(t.dynCall_viiiiiiiiiiiiiiiiiii=rz.dynCall_viiiiiiiiiiiiiiiiiii)(r,i,a,n,s,o,l,u,d,c,h,f,p,m,g,b,y,v,_,w),t.dynCall_viiiiiii=(r,i,a,n,s,o,l,u)=>(t.dynCall_viiiiiii=rz.dynCall_viiiiiii)(r,i,a,n,s,o,l,u),t.dynCall_viiiiiiiiiiiiiii=(r,i,a,n,s,o,l,u,d,c,h,f,p,m,g,b)=>(t.dynCall_viiiiiiiiiiiiiii=rz.dynCall_viiiiiiiiiiiiiii)(r,i,a,n,s,o,l,u,d,c,h,f,p,m,g,b),t.dynCall_jiji=(r,i,a,n)=>(t.dynCall_jiji=rz.dynCall_jiji)(r,i,a,n),t.dynCall_v=r=>(t.dynCall_v=rz.dynCall_v)(r),t.dynCall_iidiiii=(r,i,a,n,s,o,l)=>(t.dynCall_iidiiii=rz.dynCall_iidiiii)(r,i,a,n,s,o,l),t.dynCall_iiiiiiiii=(r,i,a,n,s,o,l,u,d)=>(t.dynCall_iiiiiiiii=rz.dynCall_iiiiiiiii)(r,i,a,n,s,o,l,u,d),t.dynCall_iiij=(r,i,a,n)=>(t.dynCall_iiij=rz.dynCall_iiij)(r,i,a,n),t.dynCall_iiiiiiiiii=(r,i,a,n,s,o,l,u,d,c)=>(t.dynCall_iiiiiiiiii=rz.dynCall_iiiiiiiiii)(r,i,a,n,s,o,l,u,d,c),t.dynCall_iiiiiiiiiiiii=(r,i,a,n,s,o,l,u,d,c,h,f,p)=>(t.dynCall_iiiiiiiiiiiii=rz.dynCall_iiiiiiiiiiiii)(r,i,a,n,s,o,l,u,d,c,h,f,p),t.dynCall_iiiiiiiiiii=(r,i,a,n,s,o,l,u,d,c,h)=>(t.dynCall_iiiiiiiiiii=rz.dynCall_iiiiiiiiiii)(r,i,a,n,s,o,l,u,d,c,h),t.dynCall_ji=(r,i)=>(t.dynCall_ji=rz.dynCall_ji)(r,i),t.dynCall_iijii=(r,i,a,n,s)=>(t.dynCall_iijii=rz.dynCall_iijii)(r,i,a,n,s),t.dynCall_vij=(r,i,a)=>(t.dynCall_vij=rz.dynCall_vij)(r,i,a),t.dynCall_viiijii=(r,i,a,n,s,o,l)=>(t.dynCall_viiijii=rz.dynCall_viiijii)(r,i,a,n,s,o,l),t.dynCall_viijiiiiiiiiiiiiii=(r,i,a,n,s,o,l,u,d,c,h,f,p,m,g,b,y,v)=>(t.dynCall_viijiiiiiiiiiiiiii=rz.dynCall_viijiiiiiiiiiiiiii)(r,i,a,n,s,o,l,u,d,c,h,f,p,m,g,b,y,v),t.dynCall_viiiji=(r,i,a,n,s,o)=>(t.dynCall_viiiji=rz.dynCall_viiiji)(r,i,a,n,s,o),t.dynCall_fiii=(r,i,a,n)=>
9(t.dynCall_fiii=rz.dynCall_fiii)(r,i,a,n),t.dynCall_viijii=(r,i,a,n,s,o)=>(t.dynCall_viijii=rz.dynCall_viijii)(r,i,a,n,s,o),t.dynCall_viij=(r,i,a,n)=>(t.dynCall_viij=rz.dynCall_viij)(r,i,a,n),t.dynCall_jiij=(r,i,a,n)=>(t.dynCall_jiij=rz.dynCall_jiij)(r,i,a,n),t.dynCall_fi=(r,i)=>(t.dynCall_fi=rz.dynCall_fi)(r,i),t.dynCall_fii=(r,i,a)=>(t.dynCall_fii=rz.dynCall_fii)(r,i,a),t.dynCall_jii=(r,i,a)=>(t.dynCall_jii=rz.dynCall_jii)(r,i,a),t.dynCall_dii=(r,i,a)=>(t.dynCall_dii=rz.dynCall_dii)(r,i,a),t.dynCall_fiiii=(r,i,a,n,s)=>(t.dynCall_fiiii=rz.dynCall_fiiii)(r,i,a,n,s),t.dynCall_fif=(r,i,a)=>(t.dynCall_fif=rz.dynCall_fif)(r,i,a),t.dynCall_jfi=(r,i,a)=>(t.dynCall_jfi=rz.dynCall_jfi)(r,i,a),t.dynCall_viiiiiiiiiiiiii=(r,i,a,n,s,o,l,u,d,c,h,f,p,m,g)=>(t.dynCall_viiiiiiiiiiiiii=rz.dynCall_viiiiiiiiiiiiii)(r,i,a,n,s,o,l,u,d,c,h,f,p,m,g),t.dynCall_viiiiiiiiiiiiiiiiiiii=(r,i,a,n,s,o,l,u,d,c,h,f,p,m,g,b,y,v,_,w,x)=>(t.dynCall_viiiiiiiiiiiiiiiiiiii=rz.dynCall_viiiiiiiiiiiiiiiiiiii)(r,i,a,n,s,o,l,u,d,c,h,f,p,m,g,b,y,v,_,w,x),t.dynCall_viiiiiiiiiiiiiiii=(r,i,a,n,s,o,l,u,d,c,h,f,p,m,g,b,y)=>(t.dynCall_viiiiiiiiiiiiiiii=rz.dynCall_viiiiiiiiiiiiiiii)(r,i,a,n,s,o,l,u,d,c,h,f,p,m,g,b,y),t.dynCall_iif=(r,i,a)=>(t.dynCall_iif=rz.dynCall_iif)(r,i,a),t.dynCall_jiiii=(r,i,a,n,s)=>(t.dynCall_jiiii=rz.dynCall_jiiii)(r,i,a,n,s),t.dynCall_jiii=(r,i,a,n)=>(t.dynCall_jiii=rz.dynCall_jiii)(r,i,a,n),t.dynCall_viif=(r,i,a,n)=>(t.dynCall_viif=rz.dynCall_viif)(r,i,a,n),t.dynCall_viiij=(r,i,a,n,s)=>(t.dynCall_viiij=rz.dynCall_viiij)(r,i,a,n,s),t.dynCall_viiiijii=(r,i,a,n,s,o,l,u)=>(t.dynCall_viiiijii=rz.dynCall_viiiijii)(r,i,a,n,s,o,l,u),t.dynCall_iiiiij=(r,i,a,n,s,o)=>(t.dynCall_iiiiij=rz.dynCall_iiiiij)(r,i,a,n,s,o),t.dynCall_iiiiid=(r,i,a,n,s,o)=>(t.dynCall_iiiiid=rz.dynCall_iiiiid)(r,i,a,n,s,o),t.dynCall_iiiiijj=(r,i,a,n,s,o,l)=>(t.dynCall_iiiiijj=rz.dynCall_iiiiijj)(r,i,a,n,s,o,l),t.dynCall_iiiiiijj=(r,i,a,n,s,o,l,u)=>(t.dynCall_iiiiiijj=rz.dynCall_iiiiiijj)(r,i,a,n,s,o,l,u);var r0=t=>(r0=rz.wb)(t),r2=()=>(r2=rz.xb)(),r3=t=>(r3=rz.yb)(t),r4=()=>(r4=rz.zb)();return function i(){if(0<Y)Q=i;else if(l)r(t),G();else{for(;0<er.length;)er.shift()(t);0<Y?Q=i:(t.calledRun=!0,R||(G(),r(t)))}}(),t.PTR_SIZE=4,n},globalThis.self?.name?.startsWith("em-pthread")&&eb()}),nc=q(()=>{ec(),ev=typeof location>"u"?void 0:location.origin,ew=(e_=!0,URL,new URL(new i.U(i(17394)).href,ev).href),ex=()=>{if(ew&&!ew.startsWith("blob:"))return ew.substring(0,ew.lastIndexOf("/")+1)},e$=(t,r)=>{try{let i=r??ew;return(i?new URL(t,i):new URL(t)).origin===ev}catch{return!1}},eS=async t=>{let r=await (await fetch(t,{credentials:"same-origin"})).blob();return URL.createObjectURL(r)},ek=async t=>(await import(t)).default,eC=(em(),W(eh)).default,eE=async()=>{if(!ew)throw Error("Failed to load proxy worker: cannot determine the script source URL.");if(e$(ew))return[void 0,eC()];let t=await eS(ew);return[t,eC(t)]},eT=(nd(),W(eg)).default,eI=async(t,r,i,a)=>{let n=eT&&!(t||r);if(n)if(ew)n=e$(ew);else if(a&&!i)n=!0;else throw Error("cannot determine the script source URL.");if(n)return[void 0,eT];{let a,n,s="ort-wasm-simd-threaded.jsep.mjs",o=t??((t,r)=>{let i=r??ew;try{return(i?new URL(t,i):new URL(t)).href}catch{return}})(s,r),l=i&&o&&!e$(o,r),u=l?await eS(o):o??(a=s,n=r,`${n??"./"}${a}`);return[l?u:void 0,await ek(u)]}}}),nh=q(()=>{nc(),eN=!1,eO=!1,eM=!1,eP=async t=>{if(eN)return Promise.resolve();if(eO)throw Error("multiple calls to 'initializeWebAssembly()' detected.");if(eM)throw Error("previous call to 'initializeWebAssembly()' failed.");eO=!0;let r=t.initTimeout,i=t.numThreads;if(!1!==t.simd){if("relaxed"===t.simd){if(!(()=>{try{return WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,19,1,17,0,65,1,253,15,65,2,253,15,65,3,253,15,253,147,2,11]))}catch{return!1}})())throw Error("Relaxed WebAssembly SIMD is not supported in the current environment.")}else if(!(()=>{try{return WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,30,1,28,0,65,0,253,15,253,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,186,1,26,11]))}catch{return!1}})())throw Error("WebAssembly SIMD is not supported in the current environment.")}let a=(()=>
9{if(typeof SharedArrayBuffer>"u")return!1;try{return"u">typeof MessageChannel&&new MessageChannel().port1.postMessage(new SharedArrayBuffer(1)),WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,5,4,1,3,1,1,10,11,1,9,0,65,0,254,16,2,0,26,11]))}catch{return!1}})();i>1&&!a&&("u">typeof self&&!self.crossOriginIsolated&&console.warn("env.wasm.numThreads is set to "+i+", but this will not work unless you enable crossOriginIsolated mode. See https://web.dev/cross-origin-isolation-guide/ for more info."),console.warn("WebAssembly multi-threading is not supported in the current environment. Falling back to single-threading."),t.numThreads=i=1);let n=t.wasmPaths,s="string"==typeof n?n:void 0,o=n?.mjs,l=o?.href??o,u=n?.wasm,d=u?.href??u,c=t.wasmBinary,[h,f]=await eI(l,s,i>1,!!c||!!d),p=!1,m=[];if(r>0&&m.push(new Promise(t=>{setTimeout(()=>{p=!0,t()},r)})),m.push(new Promise((t,r)=>{let a={numThreads:i};if(c)a.wasmBinary=c;else if(d||s)a.locateFile=t=>d??s+t;else if(l&&0!==l.indexOf("blob:"))a.locateFile=t=>new URL(t,l).href;else if(h){let t=ex();t&&(a.locateFile=r=>t+r)}f(a).then(r=>{eO=!1,eN=!0,eA=r,t(),h&&URL.revokeObjectURL(h)},t=>{eO=!1,eM=!0,r(t)})})),await Promise.race(m),p)throw Error(`WebAssembly backend initializing failed due to timeout: ${r}ms`)},eR=()=>{if(eN&&eA)return eA;throw Error("WebAssembly is not initialized yet.")}}),nf=q(()=>{nh(),ej=(t,r)=>{let i=eR(),a=i.lengthBytesUTF8(t)+1,n=i._malloc(a);return i.stringToUTF8(t,n,a),r.push(n),n},ez=(t,r,i,a)=>{if("object"==typeof t&&null!==t){if(i.has(t))throw Error("Circular reference in options");
9i.add(t)}Object.entries(t).forEach(([t,n])=>{let s=r?r+t:t;if("object"==typeof n)ez(n,s+".",i,a);else if("string"==typeof n||"number"==typeof n)a(s,n.toString());else if("boolean"==typeof n)a(s,n?"1":"0");else throw Error(`Can't handle extra config type: ${typeof n}`)})},eD=t=>{let r=eR(),i=r.stackSave();try{let i=r.PTR_SIZE,a=r.stackAlloc(2*i);r._OrtGetLastError(a,a+i);let n=Number(r.getValue(a,4===i?"i32":"i64")),s=r.getValue(a+i,"*"),o=s?r.UTF8ToString(s):"";throw Error(`${t} ERROR_CODE: ${n}, ERROR_MESSAGE: ${o}`)}finally{r.stackRestore(i)}}}),np=q(()=>{nh(),nf(),eB=t=>{let r=eR(),i=0,a=[],n=t||{};try{if(t?.logSeverityLevel===void 0)n.logSeverityLevel=2;else if("number"!=typeof t.logSeverityLevel||!Number.isInteger(t.logSeverityLevel)||t.logSeverityLevel<0||t.logSeverityLevel>4)throw Error(`log severity level is not valid: ${t.logSeverityLevel}`);if(t?.logVerbosityLevel===void 0)n.logVerbosityLevel=0;else if("number"!=typeof t.logVerbosityLevel||!Number.isInteger(t.logVerbosityLevel))throw Error(`log verbosity level is not valid: ${t.logVerbosityLevel}`);t?.terminate===void 0&&(n.terminate=!1);let s=0;return t?.tag!==void 0&&(s=ej(t.tag,a)),i=r._OrtCreateRunOptions(n.logSeverityLevel,n.logVerbosityLevel,!!n.terminate,s),0===i&&eD("Can't create run options."),t?.extra!==void 0&&ez(t.extra,"",new WeakSet,(t,n)=>{let s=ej(t,a),o=ej(n,a);0!==r._OrtAddRunConfigEntry(i,s,o)&&eD(`Can't set a run config entry: ${t} - ${n}.`)}),[i,a]}catch(t){throw 0!==i&&r._OrtReleaseRunOptions(i),a.forEach(t=>r._free(t)),t}}}),nm=q(()=>{nh(),nf(),eL=(t,r,i,a)=>{let n=ej(r,a),s=ej(i,a);0!==eR()._OrtAddSessionConfigEntry(t,n,s)&&eD(`Can't set a session config entry: ${r} - ${i}.`)},eU=async(t,r,i)=>{for(let a of r){let r="string"==typeof a?a:a.name,n=[];switch(r){case"webnn":if(r="WEBNN","string"!=typeof a){let r=a?.deviceType;r&&eL(t,"deviceType",r,i)}break;case"webgpu":if(r="JS","string"!=typeof a&&a?.preferredLayout){if("NCHW"!==a.preferredLayout&&"NHWC"!==a.preferredLayout)throw Error(`preferredLayout must be either 'NCHW' or 'NHWC': ${a.preferredLayout}`);eL(t,"preferredLayout",a.preferredLayout,i)}break;case"wasm":case"cpu":continue;default:throw Error(`not supported execution provider: ${r}`)}let s=ej(r,i),o=n.length,l=0,u=0;if(o>0){l=eR()._malloc(o*eR().PTR_SIZE),i.push(l),u=eR()._malloc(o*eR().PTR_SIZE),i.push(u);for(let t=0;t<o;t++)eR().setValue(l+t*eR().PTR_SIZE,n[t][0],"*"),eR().setValue(u+t*eR().PTR_SIZE,n[t][1],"*")}await eR()._OrtAppendExecutionProvider(t,s,l,u,o)!==0&&eD(`Can't append execution provider: ${r}.`)}},eF=async t=>{let r=eR(),i=0,a=[],n=t||{};(t=>{t.extra||(t.extra={}),t.extra.session||(t.extra.session={});let r=t.extra.session;r.use_ort_model_bytes_directly||(r.use_ort_model_bytes_directly="1"),t.executionProviders&&t.executionProviders.some(t=>("string"==typeof t?t:t.name)==="webgpu")&&(t.enableMemPattern=!1)})(n);try{let t=(t=>{switch(t){case"disabled":return 0;case"basic":return 1;case"extended":return 2;case"layout":return 3;case"all":return 99;default:throw Error(`unsupported graph optimization level: ${t}`)}})(n.graphOptimizationLevel??"all"),s=(t=>{switch(t){case"sequential":return 0;case"parallel":return 1;default:throw Error(`unsupported execution mode: ${t}`)}})(n.executionMode??"sequential"),o="string"==typeof n.logId?ej(n.logId,a):0,l=n.logSeverityLevel??2;if(!Number.isInteger(l)||l<0||l>4)throw Error(`log severity level is not valid: ${l}`);let u=n.logVerbosityLevel??0;if(!Number.isInteger(u)||u<0||u>4)throw Error(`log verbosity level is not valid: ${u}`);let d="string"==typeof n.optimizedModelFilePath?ej(n.optimizedModelFilePath,a):0;if(i=r._OrtCreateSessionOptions(t,!!n.enableCpuMemArena,!!n.enableMemPattern,s,!!n.enableProfiling,0,o,l,u,d),0===i&&eD("Can't create session options."),n.executionProviders&&await eU(i,n.executionProviders,a),void 0!==n.enableGraphCapture){if("boolean"!=typeof n.enableGraphCapture)throw Error(`enableGraphCapture must be a boolean value: ${n.enableGraphCapture}`);eL(i,"enableGraphCapture",n.enableGraphCapture.toString(),a)}if(n.freeDimensionOverrides)for(let[t,s]of Object.entries(n.freeDimensionOverrides)){if("string"!=typeof t)throw Error(`free dimension override name must be a string: ${t}`);if("number"!=typeof s||!Number.isInteger(s)||s<0)throw Error(`free dimension override value must be a non-negative integer: ${s}`);let n=ej(t,a);0!==r._OrtAddFreeDimensionOverride(i,n,s)&&eD(`Can't set a free dimension override: ${t} - ${s}.`)}return void 0!==n.extra&&ez(n.extra,"",new WeakSet,(t,r)=>{eL(i,t,r,a)}),[i,a]}catch(t){throw 0!==i&&0!==r._OrtReleaseSessionOptions(i)&&eD("Can't release session options."),a.forEach(t=>r._free(t)),t}}}),ng=q(()=>{eq=t=>{switch(t){case"int8":return 3;case"uint8":return 2;case"bool":return 9;
9case"int16":return 5;case"uint16":return 4;case"int32":return 6;case"uint32":return 12;case"float16":return 10;case"float32":return 1;case"float64":return 11;case"string":return 8;case"int64":return 7;case"uint64":return 13;case"int4":return 22;case"uint4":return 21;default:throw Error(`unsupported data type: ${t}`)}},eV=t=>{switch(t){case 3:return"int8";case 2:return"uint8";case 9:return"bool";case 5:return"int16";case 4:return"uint16";case 6:return"int32";case 12:return"uint32";case 10:return"float16";case 1:return"float32";case 11:return"float64";case 8:return"string";case 7:return"int64";case 13:return"uint64";case 22:return"int4";case 21:return"uint4";default:throw Error(`unsupported data type: ${t}`)}},eW=(t,r)=>{let i=[-1,4,1,1,2,2,4,8,-1,1,2,8,4,8,-1,-1,-1,-1,-1,-1,-1,.5,.5][t],a="number"==typeof r?r:r.reduce((t,r)=>t*r,1);return i>0?Math.ceil(a*i):void 0},eH=t=>{switch(t){case"float16":return"u">typeof Float16Array&&Float16Array.from?Float16Array:Uint16Array;case"float32":return Float32Array;case"uint8":case"bool":return Uint8Array;case"int8":return Int8Array;case"uint16":return Uint16Array;case"int16":return Int16Array;case"int32":return Int32Array;case"float64":return Float64Array;case"uint32":return Uint32Array;case"int64":return BigInt64Array;case"uint64":return BigUint64Array;default:throw Error(`unsupported type: ${t}`)}},eG=t=>{switch(t){case"verbose":return 0;case"info":return 1;case"warning":return 2;case"error":return 3;case"fatal":return 4;default:throw Error(`unsupported logging level: ${t}`)}},eK=t=>"float32"===t||"float16"===t||"int32"===t||"int64"===t||"uint32"===t||"uint8"===t||"bool"===t||"uint4"===t||"int4"===t,eY=t=>"float32"===t||"float16"===t||"int32"===t||"int64"===t||"uint32"===t||"uint64"===t||"int8"===t||"uint8"===t||"bool"===t||"uint4"===t||"int4"===t,eQ=t=>{switch(t){case"none":return 0;case"cpu":return 1;case"cpu-pinned":return 2;case"texture":return 3;case"gpu-buffer":return 4;case"ml-tensor":return 5;default:throw Error(`unsupported data location: ${t}`)}}}),nb=q(()=>{ec(),eX=async t=>{if("string"!=typeof t)return t instanceof Blob?new Uint8Array(await t.arrayBuffer()):t instanceof Uint8Array?t:new Uint8Array(t);{let r=await fetch(t);if(!r.ok)throw Error(`failed to load external data file: ${t}`);let i=r.headers.get("Content-Length"),a=i?parseInt(i,10):0;if(a<0x40000000)return new Uint8Array(await r.arrayBuffer());{if(!r.body)throw Error(`failed to load external data file: ${t}, no response body.`);let i=r.body.getReader(),n;try{n=new ArrayBuffer(a)}catch(t){if(t instanceof RangeError){let t=Math.ceil(a/65536);n=new WebAssembly.Memory({initial:t,maximum:t}).buffer}else throw t}let s=0;for(;;){let{done:t,value:r}=await i.read();if(t)break;let a=r.byteLength;new Uint8Array(n,s,a).set(r),s+=a}return new Uint8Array(n,0,a)}}}}),ny=q(()=>{ng(),eZ=["V","I","W","E","F"],e0=(t,r)=>{eJ=t,e1=r},e2=(...t)=>{e1&&((t,r)=>{var i,a;let n=eG(t);n>=eG(eJ)&&(i=n,a="function"==typeof r?r():r,console.log(`[${eZ[i]},${new Date().toISOString()}]${a}`))})(...t)}}),nv=q(()=>{e3=class{static calcMatMulShape(t,r){return t[1]!==r[0]?void 0:[t[0],r[1]]}},e4=class{static calcShape(t,r,i=!1){let a=t.length,n=r.length;if(0===a)return r;if(0===n)return t;let s=Math.max(t.length,r.length),o=Array(s);if(i){if(a<2||n<2)return;let i=e3.calcMatMulShape([t[a-2],t[a-1]],[r[n-2],r[n-1]]);if(void 0===i)return;[o[s-2],o[s-1]]=i}for(let l=i?3:1;l<=s;l++){let i=a-l<0?1:t[a-l],u=n-l<0?1:r[n-l];if(i!==u&&i>1&&u>1)return;let d=Math.max(i,u);if(i&&u)o[s-l]=Math.max(i,u);else{if(d>1)return;o[s-l]=0}}return o}static isValidBroadcast(t,r){let i=t.length,a=r.length;if(i>a)return!1;for(let n=1;n<=i;n++)if(1!==t[i-n]&&t[i-n]!==r[a-n])return!1;return!0}},e8=class t{static size(r){return t.getSizeFromDimensionRange(r,0,r.length)}static convertShape(t,r=4){let i=t.length;if(0===i)return[];let a=Array(i),n=i-1;for(;n>=0;){if(t[n]%r==0){a[n]=t[n]/r;break}if(r%t[n]!=0)throw Error("cannot convert shape");a[n]=1,r/=t[n],n--}for(n--;n>=0;n--)a[n]=t[n];return a}static sizeFromDimension(r,i){if(i<0||i>r.length)throw Error(`invalid dimension of ${i} for sizeFromDimension as Tensor has ${r.length} dimensions.`);return t.getSizeFromDimensionRange(r,i,r.length)}static sizeToDimension(r,i){if(i<0||i>r.length)throw Error(`invalid dimension of ${i} for sizeToDimension as Tensor has ${r.length} dimensions.`);return t.getSizeFromDimensionRange(r,0,i)}static getSizeFromDimensionRange(t,r,i){let a=1;for(let n=r;n<i;n++){if(t[n]<0)throw Error("cannot get valid size from specified dimension range. Most likely the range contains
9negative values in them.");a*=Number(t[n])}return a}static computeStrides(t){let r=t.length;if(0===r)return[];if(1===r)return[1];let i=Array(r);i[r-1]=1,i[r-2]=t[r-1];for(let a=r-3;a>=0;--a)i[a]=i[a+1]*t[a+1];return i}static normalizeAxis(t,r){if(t<-r&&t>=r)throw Error("unsupported axis for this operation.");return t<0?t+r:t}static normalizeAxes(t,r){return t.map(i=>this.normalizeAxis(i,r??t.length))}static sortBasedOnPerm(t,r){return r?r.map(r=>t[r]):t.slice().reverse()}static padShape(t,r){let i=t.length;return t.map((t,a)=>t+r[a]+r[a+i])}static areEqual(t,r){return t.length===r.length&&t.every((t,i)=>t===r[i])}},e7=class t{static adjustPoolAttributes(t,r,i,a,n,s){if(!t&&i.length!==r.length-2)throw Error("length of specified kernel shapes should be 2 less than length of input dimensions");if(t)for(let t=0;t<r.length-2;t++)t>=i.length?i.push(r[t+2]):i[t]=r[t+2];for(let t=0;t<i.length;t++)if(t<a.length){if(a[t]<0)throw Error("strides should be greater than or equal to 1")}else a.push(1);for(let t=0;t<i.length;t++)if(t<n.length){if(n[t]<0)throw Error("dilations should be greater than or equal to 1")}else n.push(1);for(let t=0;t<2*i.length;t++)if(t<s.length){if(s[t]<0)throw Error("pad should be greater than or equal to 1")}else s.push(0);for(let t=0;t<i.length;t++){if(i[t]<=0)throw Error("kernel shapes need to be greater than 0");if(s[t]>=i[t]||s[t+i.length]>=i[t])throw Error("pads should be smaller than kernel")}}static adjustPadsBasedOnAutoPad(r,i,a,n,s,o,l){if(l){if(s.length!==2*(r.length-2))throw Error("length of pads should be twice the length of data dimensions");if(i.length!==r.length-2)throw Error("length of strides should be the length of data dimensions");if(n.length!==r.length-2)throw Error("length of kernel shapes should be the length of data dimensions");for(let u=0;u<r.length-2;u++)t.adjustPadAndReturnShape(r[u+(o?1:2)],i[u],a[u],n[u],s,u,u+r.length-2,l)}}static computePoolOutputShape(r,i,a,n,s,o,l){if(i.length<=0)throw Error("input shape must be of size greater than 0");let u=[i[0],i[1]];return t.computeShapeHelper(r,i,u,a,n,s,o,l),u}static computeConvOutputShape(r,i,a,n,s,o,l){if(r.length<=0||i.length<=0)throw Error("invalid input tensor dims or invalid filter tensor dims");let u=[r[0],i[0]];return t.computeShapeHelper(!1,r,u,a,n,s,o,l),u}static computeShapeHelper(r,i,a,n,s,o,l,u){if(r)for(let t=0;t<i.length-2;t++)a.push(1);else for(let r=0;r<i.length-2;r++)a.push(t.adjustPadAndReturnShape(i[r+2],n[r],s[r],o[r],l,r,r+i.length-2,u))}static adjustPadAndReturnShape(t,r,i,a,n,s,o,l){let u=i*(a-1)+1;if(!l||"NOTSET"===l)return Math.floor((t+n[s]+n[o]-u)/r+1);switch(l){case"VALID":return n[s]=0,n[o]=0,Math.floor((t-u)/r+1);case"SAME_LOWER":case"SAME_UPPER":if(1!==i)throw Error("Dilation not supported for SAME_UPPER or SAME_LOWER");{let i=((t+r-1)/r-1)*r+a-t;return n[s]=Math.floor("SAME_LOWER"===l?(i+1)/2:i/2),n[o]=i-n[s],Math.floor((t+i-a)/r+1)}default:throw Error("Unsupported AutoPad type")}}},e6=class{static getShapeOfGemmResult(t,r,i,a,n){let s,o,l;if(2!==t.length||2!==i.length)throw Error("shape need to be of size 2");r?(s=t[1],o=t[0]):(s=t[0],o=t[1]);let u=-1;if(a?(l=i[0],u=1):(l=i[1],u=0),i[u]!==o)throw Error("dimension mismatch");if(s<=0||l<=0||o<=0)throw Error("invalid shape specified");if(n&&!e4.isValidBroadcast(n,[s,l]))throw Error("gemm: invalid bias shape for broadcast");return[s,l,o]}},e5=-34028234663852886e22,e9=34028234663852886e22}),n_=q(()=>{ng(),te=(t,r)=>new(eH(r))(t)}),nw=q(()=>{ng(),ny(),tt=new Map([["float32",32],["float16",16],["int32",32],["uint32",32],["int64",64],["uint64",64],["int8",8],["uint8",8],["int4",4],["uint4",4]]),tr=(t,r)=>{if("int32"===r)return t;let i=tt.get(r);if(!i)throw Error(`WebNN backend does not support data type: ${r}`);let a=i/8;if(t.byteLength%a!=0)throw Error(`Invalid Uint8Array length - must be a multiple of ${a}.`);let n=t.byteLength/a,s=new(eH(r))(t.buffer,t.byteOffset,n);switch(r){case"int64":case"uint64":{let t=new Int32Array(n);for(let r=0;r<n;r++){let i=s[r];if(i>2147483647n||i<-2147483648n)throw Error("Can not convert int64 data to int32 - value out of range.");t[r]=Number(i)}return new Uint8Array(t.buffer)}case"int8":case"uint8":case"uint32":if("uint32"===r&&s.some(t=>t>0x7fffffff))throw Error("Can not convert uint32 data to int32 - value out of range.");return new Uint8Array(Int32Array.from(s,Number).buffer);default:throw Error(`Unsupported data conversion from ${r} to 'int32'`)}},ti=(t,r)=>{if("int32"===r)return t;if(t.byteLength%4!=0)throw Error("Invalid Uint8Array length - must be a multiple of 4 (int32).");let i=t.byteLength/4,a=new Int32Array(t.buffer,t.byteOffset,i);switch(r){case"int64":return new Uint8Array(BigInt64Array.from(a,BigInt).buffer);case"uint64":if(a.some(t=>t<0))throw Error("Can not convert int32 data to uin64 - negative value found.");return new Uint8Array(BigUint64Array.from(a,BigInt).buffer);case"int8":if(a.some(t=>t<-128||t>127))throw Error("Can not convert int32 data to int8 - value out of range.");return new Uint8Array(Int8Array.from(a,Number).buffer);case"uint8":if(a.some(t=>t<0||t>255))throw Error("Can not convert int32 data to uint8 - value out of range.");return Uint8Array.from(a,Number);case"uint32":if(a.some(t=>t<0))throw Error("Can not convert int32 data to uint32 - negative value found.");return new Uint8Array(Uint32Array.from(a,Number).buffer);default:throw Error(`Unsupported data conversion from 'int32' to ${r}`)}},ta=1,tn=()=>ta++,ts=new Map([["int8","int32"],["uint8","int32"],["uint32","int32"],["int64","int32"]]),to=(t,r)=>{let i=tt.get(t);if(!i)throw Error(`WebNN backend does not support data type: ${t}`);return r.length>0?Math.ceil(r.reduce((t,r)=>t*r)*i/8):0},tl=class{constructor(t){this.isDataConverted=!1;let{sessionId:r,context:i,tensor:a,dataType:n,shape:s,fallbackDataType:o}=t;this.sessionId=r,this.mlContext=i,this.mlTensor=a,this.dataType=n,this.tensorShape=s,this.fallbackDataType=o}get tensor(){return this.mlTensor}get type(){return this.dataType}get fallbackType(){return this.fallbackDataType}get shape(){return this.tensorShape}get byteLength(){return to(this.dataType,this.tensorShape)}destroy(){e2("verbose",()=>"[WebNN] TensorWrapper.destroy"),this.mlTensor.destroy()}write(t){this.mlContext.writeTensor(this.mlTensor,t)}async read(t){if(!this.fallbackDataType)return t?this.mlContext.readTensor(this.mlTensor,t):this.mlContext.readTensor(this.mlTensor);{let r=ti(new Uint8Array(await this.mlContext.readTensor(this.mlTensor)),this.dataType);return t?void(t instanceof ArrayBuffer?new Uint8Array(t):new Uint8Array(t.buffer,t.byteOffset,t.byteLength)).set(r):r.buffer}}canReuseTensor(t,r,i){return this.mlContext===t&&this.dataType===r&&this.tensorShape.length===i.length&&this.tensorShape.every((t,r)=>t===i[r])}setIsDataConverted(t){this.isDataConverted=t}},tu=class{constructor(t,r){this.tensorManager=t,this.wrapper=r}get tensorWrapper(){return this.wrapper}releaseTensor(){this.tensorWrapper&&(this.tensorManager.releaseTensor(this.tensorWrapper),this.wrapper=void 0)}async ensureTensor(t,r,i,a){let n=this.tensorManager.getMLContext(t),s;if(!n.opSupportLimits().input.dataTypes.includes(r)){if(!(s=ts.get(r))||!n.opSupportLimits().input.dataTypes.includes(s))throw Error(`WebNN backend does not support data type: ${r}`);e2("verbose",()=>`[WebNN] TensorIdTracker.ensureTensor: fallback dataType from ${r} to ${s}`)}if(this.wrapper){if(this.wrapper.canReuseTensor(n,r,i))return this.wrapper.tensor;if(a){if(this.wrapper.byteLength!==to(r,i))throw Error("Unable to copy data to tensor with different size.");this.activeUpload=new Uint8Array(await this.wrapper.read())}this.tensorManager.releaseTensor(this.wrapper)}let o=typeof MLTensorUsage>"u"?void 0:MLTensorUsage.READ|MLTensorUsage.WRITE;return this.wrapper=await this.tensorManager.getCachedTensor(t,r,i,o,!0,!0,s),a&&this.activeUpload&&(this.wrapper.write(this.activeUpload),this.activeUpload=void 0),this.wrapper.tensor}upload(t){let r=t;if(this.wrapper){if(this.wrapper.fallbackType)if("int32"===this.wrapper.fallbackType)r=tr(t,this.wrapper.type),this.wrapper.setIsDataConverted(!0);else throw Error(`Unsupported fallback data type: ${this.wrapper.fallbackType}`);if(t.byteLength===this.wrapper.byteLength)return void this.wrapper.write(r);e2("verbose",()=>"Data size does not match tensor size. Releasing tensor."),this.releaseTensor()}this.activeUpload?this.activeUpload.set(r):this.activeUpload=new Uint8Array(r)}async download(t){if(this.activeUpload){let r=this.wrapper?.isDataConverted?ti(this.activeUpload,this.wrapper?.type):this.activeUpload;return t?void(t instanceof ArrayBuffer?new Uint8Array(t).set(r):new Uint8Array(t.buffer,t.byteOffset,t.byteLength).set(r)):r.buffer}if(!this.wrapper)throw Error("Tensor has not been created.");return t?this.wrapper.read(t):this.wrapper.read()}},td=class{constructor(t){this.backend=t,this.tensorTrackersById=new Map,this.freeTensors=[],this.externalTensors=new Set}getMLContext(t){let r=this.backend.getMLContext(t);if(!r)throw Error("MLContext not found for session.");return r}reserveTensorId(){let t=tn();return this.tensorTrackersById.set(t,new tu(this)),t}releaseTensorId(t){let r=this.tensorTrackersById.get(t);r&&(this.tensorTrackersById.delete(t),r.tensorWrapper&&this.releaseTensor(r.tensorWrapper))}async ensureTensor(t,r,i,a,n){e2("verbose",()=>`[WebNN] TensorManager.ensureTensor {tensorId: ${r}, dataType: ${i}, shape: ${a}, copyOld: ${n}}`);let s=this.tensorTrackersById.get(r);if(!s)throw Error("Tensor not found.");return s.ensureTensor(t,i,a,n)}upload(t,r){let i=this.tensorTrackersById.get(t);if(!i)throw Error("Tensor not found.");i.upload(r)}async download(t,r){e2("verbose",()=>`[WebNN] TensorManager.download {tensorId: ${t}, dstBuffer: ${r?.byteLength}}`);let i=this.tensorTrackersById.get(t);if(!i)throw Error("Tensor not found.");return i.download(r)}releaseTensorsForSession(t){for(let r of this.freeTensors)r.sessionId===t&&r.destroy();this.freeTensors=this.freeTensors.filter(r=>r.sessionId!==t)}registerTensor(t,r,i,a){let n=this.getMLContext(t),s=tn(),o=new tl
9({sessionId:t,context:n,tensor:r,dataType:i,shape:a});return this.tensorTrackersById.set(s,new tu(this,o)),this.externalTensors.add(o),s}async getCachedTensor(t,r,i,a,n,s,o){let l=this.getMLContext(t);for(let[a,n]of this.freeTensors.entries())if(n.canReuseTensor(l,r,i)){e2("verbose",()=>`[WebNN] Reusing tensor {dataType: ${r}, ${o?`fallbackDataType: ${o},`:""} shape: ${i}`);let n=this.freeTensors.splice(a,1)[0];return n.sessionId=t,n}e2("verbose",()=>`[WebNN] MLContext.createTensor {dataType: ${r}, ${o?`fallbackDataType: ${o},`:""} shape: ${i}}`);let u=await l.createTensor({dataType:o??r,shape:i,dimensions:i,usage:a,writable:n,readable:s});return new tl({sessionId:t,context:l,tensor:u,dataType:r,shape:i,fallbackDataType:o})}releaseTensor(t){this.externalTensors.has(t)&&this.externalTensors.delete(t),this.freeTensors.push(t)}},tc=(...t)=>new td(...t)}),nx=q(()=>{ng(),nh(),n_(),nw(),ny(),th=new Map([[1,"float32"],[10,"float16"],[6,"int32"],[12,"uint32"],[7,"int64"],[13,"uint64"],[22,"int4"],[21,"uint4"],[3,"int8"],[2,"uint8"],[9,"uint8"]]),tf=class{constructor(t){this.tensorManager=tc(this),this.mlContextBySessionId=new Map,this.sessionIdsByMLContext=new Map,this.mlContextCache=[],this.sessionGraphInputs=new Map,this.sessionGraphOutputs=new Map,this.temporaryGraphInputs=[],this.temporaryGraphOutputs=[],this.temporarySessionTensorIds=new Map,e0(t.logLevel,!!t.debug)}get currentSessionId(){if(void 0===this.activeSessionId)throw Error("No active session");return this.activeSessionId}onRunStart(t){e2("verbose",()=>`[WebNN] onRunStart {sessionId: ${t}}`),this.activeSessionId=t}onRunEnd(t){e2("verbose",()=>`[WebNN] onRunEnd {sessionId: ${t}}`);let r=this.temporarySessionTensorIds.get(t);if(r){for(let t of r)e2("verbose",()=>`[WebNN] releasing temporary tensor {tensorId: ${t}}`),this.tensorManager.releaseTensorId(t);this.temporarySessionTensorIds.delete(t),this.activeSessionId=void 0}}async createMLContext(t){if(t instanceof GPUDevice){let r=this.mlContextCache.findIndex(r=>r.gpuDevice===t);if(-1!==r)return this.mlContextCache[r].mlContext;{let r=await navigator.ml.createContext(t);return this.mlContextCache.push({gpuDevice:t,mlContext:r}),r}}if(void 0===t){let t=this.mlContextCache.findIndex(t=>void 0===t.options&&void 0===t.gpuDevice);if(-1!==t)return this.mlContextCache[t].mlContext;{let t=await navigator.ml.createContext();return this.mlContextCache.push({mlContext:t}),t}}let r=this.mlContextCache.findIndex(r=>((t,r)=>{if(t===r)return!0;if(void 0===t||void 0===r)return!1;let i=Object.keys(t).sort(),a=Object.keys(r).sort();return i.length===a.length&&i.every((i,n)=>i===a[n]&&t[i]===r[i])})(r.options,t));if(-1!==r)return this.mlContextCache[r].mlContext;{let r=await navigator.ml.createContext(t);return this.mlContextCache.push({options:t,mlContext:r}),r}}registerMLContext(t,r){this.mlContextBySessionId.set(t,r);let i=this.sessionIdsByMLContext.get(r);i||(i=new Set,this.sessionIdsByMLContext.set(r,i)),i.add(t),this.temporaryGraphInputs.length>0&&(this.sessionGraphInputs.set(t,this.temporaryGraphInputs),this.temporaryGraphInputs=[]),this.temporaryGraphOutputs.length>0&&(this.sessionGraphOutputs.set(t,this.temporaryGraphOutputs),this.temporaryGraphOutputs=[])}onReleaseSession(t){this.sessionGraphInputs.delete(t),this.sessionGraphOutputs.delete(t);let r=this.mlContextBySessionId.get(t);if(!r)return;this.tensorManager.releaseTensorsForSession(t),this.mlContextBySessionId.delete(t);let i=this.sessionIdsByMLContext.get(r);if(i.delete(t),0===i.size){this.sessionIdsByMLContext.delete(r);let t=this.mlContextCache.findIndex(t=>t.mlContext===r);-1!==t&&this.mlContextCache.splice(t,1)}}getMLContext(t){return this.mlContextBySessionId.get(t)}reserveTensorId(){return this.tensorManager.reserveTensorId()}releaseTensorId(t){e2("verbose",()=>`[WebNN] releaseTensorId {tensorId: ${t}}`),this.tensorManager.releaseTensorId(t)}async ensureTensor(t,r,i,a,n){let s=th.get(i);if(!s)throw Error(`Unsupported ONNX data type: ${i}`);return this.tensorManager.ensureTensor(t??this.currentSessionId,r,s,a,n)}async createTemporaryTensor(t,r,i){e2("verbose",()=>`[WebNN] createTemporaryTensor {onnxDataType: ${r}, shape: ${i}}`);let a=th.get(r);if(!a)throw Error(`Unsupported ONNX data type: ${r}`);let n=this.tensorManager.reserveTensorId();await this.tensorManager.ensureTensor(t,n,a,i,!1);let s=this.temporarySessionTensorIds.get(t);return s?s.push(n):this.temporarySessionTensorIds.set(t,[n]),n}uploadTensor(t,r){if(!eR().shouldTransferToMLTensor)throw Error("Trying to upload to a MLTensor while shouldTransferToMLTensor is false");e2("verbose",()=>`[WebNN] uploadTensor {tensorId: ${t}, data: ${r.byteLength}}`),this.tensorManager.upload(t,r)}async downloadTensor(t,r){return this.tensorManager.download(t,r)}createMLTensorDownloader(t,r){return async()=>{let i=await this.tensorManager.download(t);return te(i,r)}}registerMLTensor(t,r,i,a){let n=th.get(i);if(!n)throw Error(`Unsupported ONNX data type: ${i}`);let s=this.tensorManager.registerTensor(t,r,n,a);return e2("verbose",()=>`[WebNN] registerMLTensor {tensor: ${r}, dataType: ${n}, dimensions: ${a}} -> {tensorId: ${s}}`),s}registerMLConstant(t,r,i,a,n,s,o=!1){if(!s)throw Error("External mounted files are not available.");let l=t;t.startsWith("./")&&(l=t.substring(2));let u=s.get(l);if(!u)throw Error(`File with name ${l} not found in preloaded files.`);if(r+i>u.byteLength)throw Error("Out of bounds: data offset and length exceed the external file data size.");let d=u.slice(r,r+i).buffer,c;switch(n.dataType){case"float32":c=new Float32Array(d);break;case"float16":c="u">typeof Float16Array&&Float16Array.from?new Float16Array(d):new Uint16Array(d);break;case"int32":c=new Int32Array(d);break;case"uint32":c=new Uint32Array(d);break;case"int64":o?(c=new Int32Array(tr(new Uint8Array(d),"int64").buffer),n.dataType="int32"):c=new BigInt64Array(d);break;case"uint64":c=new BigUint64Array(d);break;case"int8":c=new Int8Array(d);break;case"int4":case"uint4":case"uint8":c=new Uint8Array(d);break;default:throw Error(`Unsupported data type: ${n.dataType} in creating WebNN Constant from external data.`)}return e2("verbose",()=>`[WebNN] registerMLConstant {dataType: ${n.dataType}, shape: ${n.shape}}} ${o?"(Note: it was int64 data type and registered to int32 as workaround)":""}`),a.constant(n,c)}registerGraphInput(t){this.temporaryGraphInputs.push(t)}registerGraphOutput(t){this.temporaryGraphOutputs.push(t)}isGraphInput(t,r){let i=this.sessionGraphInputs.get(t);return!!i&&i.includes(r)}isGraphOutput(t,r){let i=this.sessionGraphOutputs.get(t);return!!i&&i.includes(r)}isGraphInputOutputTypeSupported(t,r,i=!0){let a=this.mlContextBySessionId.get(t),n=th.get(eq(r));return!(typeof n>"u")&&(i?!!a?.opSupportLimits().input.dataTypes.includes(n):!!a?.opSupportLimits().output.dataTypes.includes(n))}flush(){}}}),n$=q(()=>{}),nS=q(()=>{ny(),n$(),tp=new Map([[64,250],[128,200],[256,200],[512,200],[2048,230],[4096,200
9],[8192,50],[16384,50],[32768,50],[65536,50],[131072,50],[262144,50],[524288,50],[1048576,50],[2097152,30],[4194304,20],[8388608,10],[0xc00000,10],[0x1000000,10],[0x1900000,15],[0x2000000,22],[0x2a30000,2],[0x3840000,6],[0x4000000,6],[0x8000000,6],[0xa000000,6]]),tm=[],tg=t=>16*Math.ceil(Number(t)/16),tb=1,ty=()=>tb++,tv=async(t,r,i,a)=>{let n=tg(i),s=t.device.createBuffer({size:n,usage:GPUBufferUsage.COPY_DST|GPUBufferUsage.MAP_READ});try{let o=t.getCommandEncoder();t.endComputePass(),o.copyBufferToBuffer(r,0,s,0,n),t.flush(),await s.mapAsync(GPUMapMode.READ);let l=s.getMappedRange();if(!a)return new Uint8Array(l.slice(0,i));{let t=a();return t.set(new Uint8Array(l,0,i)),t}}finally{s.destroy()}},t_=class{constructor(t){for(let[r]of(this.backend=t,this.storageCache=new Map,this.freeBuffers=new Map,this.freeUniformBuffers=new Map,this.buffersPending=[],this.capturedPendingBuffers=new Map,tp))tm.push(r),this.freeBuffers.set(r,[]),this.freeUniformBuffers.set(r,[]);this.sessionCount=0}upload(t,r){let i=r.buffer,a=r.byteOffset,n=r.byteLength,s=tg(n),o=this.storageCache.get(t);if(!o)throw Error("gpu data for uploading does not exist");if(Number(o.originalSize)!==n)throw Error(`inconsistent data size. gpu data size=${o.originalSize}, data size=${n}`);let l=this.backend.device.createBuffer({mappedAtCreation:!0,size:s,usage:GPUBufferUsage.MAP_WRITE|GPUBufferUsage.COPY_SRC});new Uint8Array(l.getMappedRange()).set(new Uint8Array(i,a,n)),l.unmap();let u=this.backend.device.createCommandEncoder();u.copyBufferToBuffer(l,0,o.gpuData.buffer,0,s),this.backend.device.queue.submit([u.finish()]),l.destroy(),e2("verbose",()=>`[WebGPU] GpuDataManager.upload(id=${t})`)}memcpy(t,r){let i=this.storageCache.get(t);if(!i)throw Error("source gpu data for memcpy does not exist");let a=this.storageCache.get(r);if(!a)throw Error("destination gpu data for memcpy does not exist");if(i.originalSize!==a.originalSize)throw Error("inconsistent source and destination gpu data size");let n=tg(i.originalSize),s=this.backend.getCommandEncoder();this.backend.endComputePass(),s.copyBufferToBuffer(i.gpuData.buffer,0,a.gpuData.buffer,0,n)}registerExternalBuffer(t,r,i){let a;if(i){if(a=i[0],t===i[1])return e2("verbose",()=>`[WebGPU] GpuDataManager.registerExternalBuffer(size=${r}) => id=${a}, buffer is the same, skip.`),a;if(this.backend.capturedCommandList.has(this.backend.currentSessionId))throw Error(`Registering a different external buffer under graph capture mode is not supported yet. 10 Please use the previous external buffer!`)}else a=ty();return this.storageCache.set(a,{gpuData:{id:a,type:0,buffer:t},originalSize:r}),e2("verbose",()=>`[WebGPU] GpuDataManager.registerExternalBuffer(size=${r}) => id=${a}, registered.`),a}unregisterExternalBuffer(t){void 0!==t&&(this.storageCache.delete(t),e2("verbose",()=>`[WebGPU] GpuDataManager.unregisterExternalBuffer() => id=${t}`))}create(t,r=GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_SRC|GPUBufferUsage.COPY_DST){let i=(t=>{for(let r=0;r<tm.length;r++){let i=tm[r];if(t<=i)return i}return 16*Math.ceil(t/16)})(t),a,n=(r&GPUBufferUsage.STORAGE)===GPUBufferUsage.STORAGE,s=(r&GPUBufferUsage.UNIFORM)===GPUBufferUsage.UNIFORM;if(n||s){let t=(n?this.freeBuffers:this.freeUniformBuffers).get(i);a=t&&t.length>0?t.pop():this.backend.device.createBuffer({size:i,usage:r})}else a=this.backend.device.createBuffer({size:i,usage:r});let o={id:ty(),type:0,buffer:a};return this.storageCache.set(o.id,{gpuData:o,originalSize:Number(t)}),e2("verbose",()=>`[WebGPU] GpuDataManager.create(size=${t}) => id=${o.id}`),o}get(t){return this.storageCache.get(t)?.gpuData}release(t){let r="bigint"==typeof t?Number(t):t,i=this.storageCache.get(r);if(!i){if(0===this.storageCache.size)return 0;throw Error("releasing data does not exist")}return e2("verbose",()=>`[WebGPU] GpuDataManager.release(id=${r}), gpuDataId=${i.gpuData.id}`),this.storageCache.delete(r),this.buffersPending.push(i.gpuData.buffer),i.originalSize}async download(t,r){let i=this.storageCache.get(Number(t));if(!i)throw Error("data does not exist");await tv(this.backend,i.gpuData.buffer,i.originalSize,r)}refreshPendingBuffers(){if(0!==this.buffersPending.length)if("default"===this.backend.sessionStatus){for(let t of this.buffersPending){let r=tp.get(t.size);if((t.usage&GPUBufferUsage.STORAGE)===GPUBufferUsage.STORAGE){let i=this.freeBuffers.get(t.size)||[];void 0===r||i.length>=r?t.destroy():i.push(t)}
10else if((t.usage&GPUBufferUsage.UNIFORM)===GPUBufferUsage.UNIFORM){let i=this.freeUniformBuffers.get(t.size)||[];void 0===r||i.length>=r?t.destroy():i.push(t)}else t.destroy()}this.buffersPending=[]}else{let t=this.capturedPendingBuffers.get(this.backend.currentSessionId);for(let r of(t||(t=[],this.capturedPendingBuffers.set(this.backend.currentSessionId,t)),this.buffersPending))t.push(r);this.buffersPending=[]}}dispose(){this.freeBuffers.forEach(t=>{t.forEach(t=>{t.destroy()})}),this.freeUniformBuffers.forEach(t=>{t.forEach(t=>{t.destroy()})}),this.storageCache.forEach(t=>{t.gpuData.buffer.destroy()}),this.capturedPendingBuffers.forEach(t=>{t.forEach(t=>{t.destroy()})}),this.storageCache=new Map,this.freeBuffers=new Map,this.freeUniformBuffers=new Map,this.capturedPendingBuffers=new Map}onCreateSession(){this.sessionCount+=1}onReleaseSession(t){let r=this.capturedPendingBuffers.get(t);r&&(r.forEach(t=>{t.destroy()}),this.capturedPendingBuffers.delete(t)),this.sessionCount-=1,0===this.sessionCount&&(e2("warning",()=>"[WebGPU] Clearing webgpu buffer cache"),this.storageCache.forEach(t=>{t.gpuData.buffer.destroy()}),this.storageCache=new Map)}},tw=(...t)=>new t_(...t)}),nk=q(()=>{tx=class{constructor(t){Object.assign(this,t)}get cacheKey(){return this.key||(this.key=Object.getOwnPropertyNames(this).sort().map(t=>`${this[t]}`).join(";")),this.key}},t$=t=>new tx(t)}),nC=q(()=>{ng(),nv(),tS=64,tk=(t,r)=>{if(3===r)throw Error("vec3 has same alignment as vec4, use vec4 instead");switch(Number(t)){case 10:return r>1?`vec${r}<f16>`:"f16";case 1:return r>1?`vec${r}<f32>`:"f32";case 6:return r>1?`vec${r}<i32>`:"i32";case 12:return r>1?`vec${r}<u32>`:"u32";case 7:if(r>1)throw Error("currently not supported vecX of uint64 yet");return["vec2<u32>","i32"];case 13:if(r>1)throw Error("currently not supported vecX of uint64 yet");return["vec2<u32>","u32"];case 9:if(4!==r)throw Error("bool must be vec4");return["u32","vec4<bool>"];case 22:return"i32";case 21:return"u32";default:throw Error(`Unknown data type: ${t}`)}},tC=(t,r=1)=>{let i=tk(t,r);return"string"==typeof i?i:i[0]},tE=(t,r=1)=>{let i=tk(t,r);return"string"==typeof i?i:i[1]},tT=(...t)=>{let r=[];return t.forEach(t=>{0!==t.length&&r.push({type:12,data:t},{type:12,data:e8.computeStrides(t)})}),r},tI=t=>t%4==0?4:t%2==0?2:1,tA=(t="f32",r,i="0")=>r&&1!==r?`vec${r}<${t}>(${i})`:`${t}(${i})`,tN=(t,r,i)=>"f32"===t?i:1===r?`f32(${i})`:`vec${r}<f32>(${i})`,tO=(t,r)=>4===r?`(${t}.x + ${t}.y + ${t}.z + ${t}.w)`:2===r?`(${t}.x + ${t}.y)`:3===r?`(${t}.x + ${t}.y + ${t}.z)`:t,tM=(t,r,i,a)=>t.startsWith("uniforms.")&&i>4?"string"==typeof r?"f16"===a?`${t}[(${r}) / 8][(${r}) % 8 / 4][(${r}) % 8 % 4]`:`${t}[(${r}) / 4][(${r}) % 4]`:"f16"===a?`${t}[${Math.floor(r/8)}][${Math.floor(r%8/4)}][${r%8%4}]`:`${t}[${Math.floor(r/4)}][${r%4}]`:i>1?`${t}[${r}]`:t,tP=(t,r,i,a,n)=>{let s="number"==typeof i,o=s?i:i.length,l=[...Array(o).keys()],u=o<2?"u32":o<=4?`vec${o}<u32>`:`array<u32, ${o}>`,d=tk(r,n),c="string"==typeof d?d:d[1],h={indices:u,value:c,storage:"string"==typeof d?d:d[0],tensor:r},f=t=>"string"==typeof t?t:`${t}u`,p={offsetToIndices:!1,indicesToOffset:!1,broadcastedIndicesToOffset:!1,set:!1,setByIndices:!1,get:!1,getByIndices:!1},m=s?"uniforms.":"",g=`${m}${t}_shape`,b=`${m}${t}_strides`,y="";for(let t=0;t<o-1;t++)y+=` 11 let dim${t} = current / ${tM(b,t,o)}; 12 let rest${t} = current % ${tM(b,t,o)}; 13 indices[${t}] = dim${t}; 14 current = rest${t}; 15 `;y+=`indices[${o-1}] = current;`;let v=o<2?"":` 16 fn o2i_${t}(offset: u32) -> ${h.indices} { 17 var indices: ${h.indices}; 18 var current = offset; 19 ${y} 20 return indices; 21 }`,_=[];if(o>=2)for(let t=o-1;t>=0;t--)_.push(`${tM(b,t,o)} * (indices[${t}])`);let w=o<2?"":` 22 fn i2o_${t}(indices: ${h.indices}) -> u32 { 23 return ${_.join("+")}; 24 }`,x=(...t)=>0===o?"0u":`${h.indices}(${t.map(f).join(",")})`,$=(t,r)=>o<2?`${t}`:`${tM(t,r,o)}`,S={},k=(r,i)=>(()=>{if(h.storage===h.value)return`${t}[${r}]=${i};`;if("vec2<u32>"===h.storage&&"i32"===h.value)return`${t}[${r}]=vec2<u32>(u32(${i}), select(0u, 0xFFFFFFFFu, ${i} < 0));`;if("vec2<u32>"===h.storage&&"u32"===h.value)return`${t}[${r}]=vec2<u32>(u32(${i}), 0u);`;if("u32"===h.storage&&"vec4<bool>"===h.value)return`${t}[${r}]=dot(vec4<u32>(0x1, 0x100, 0x10000, 0x1000000), vec4<u32>(${i}));`;throw Error(`not supported combination of storage type ${h.storage} and value type ${h.value} yet`)})(),C=r=>(()=>
24{if(h.storage===h.value)return`${t}[${r}]`;if("vec2<u32>"===h.storage&&"i32"===h.value)return`i32(${t}[${r}].x)`;if("vec2<u32>"===h.storage&&"u32"===h.value)return`u32(${t}[${r}].x)`;if("u32"===h.storage&&"vec4<bool>"===h.value)return`vec4<bool>(bool(${t}[${r}] & 0xFFu), bool(${t}[${r}] & 0xFF00u), bool(${t}[${r}] & 0xFF0000u), bool(${t}[${r}] & 0xFF000000u))`;throw Error(`not supported combination of storage type ${h.storage} and value type ${h.value} yet`)})(),E=o<2?"":` 25 fn get_${t}ByIndices(indices: ${h.indices}) -> ${c} { 26 return ${C(`i2o_${t}(indices)`)}; 27 }`,T=o<2?"":(()=>{let r=l.map(t=>`d${t}: u32`).join(", "),i=l.map(t=>`d${t}`).join(", ");return` 28 fn get_${t}(${r}) -> ${c} { 29 return get_${t}ByIndices(${x(i)}); 30 }`})(),I=o<2?"":` 31 fn set_${t}ByIndices(indices: ${h.indices}, value: ${c}) { 32 ${k(`i2o_${t}(indices)`,"value")} 33 }`,A=o<2?"":(()=>{let r=l.map(t=>`d${t}: u32`).join(", "),i=l.map(t=>`d${t}`).join(", ");return` 34 fn set_${t}(${r}, value: ${c}) { 35 set_${t}ByIndices(${x(i)}, value); 36 }`})();return{impl:()=>{let t=[],r=!1;return p.offsetToIndices&&(t.push(v),r=!0),p.indicesToOffset&&(t.push(w),r=!0),p.broadcastedIndicesToOffset&&(Object.values(S).forEac
36h(r=>t.push(r)),r=!0),p.set&&(t.push(A),r=!0),p.setByIndices&&(t.push(I),r=!0),p.get&&(t.push(T),r=!0),p.getByIndices&&(t.push(E),r=!0),!s&&r&&t.unshift(`const ${g} = ${h.indices}(${i.join(",")});`,`const ${b} = ${h.indices}(${e8.computeStrides(i).join(",")});`),t.join(` 37`)},type:h,offsetToIndices:r=>(p.offsetToIndices=!0,o<2?r:`o2i_${t}(${r})`),indicesToOffset:r=>(p.indicesToOffset=!0,o<2?r:`i2o_${t}(${r})`),broadcastedIndicesToOffset:(r,i)=>{p.broadcastedIndicesToOffset=!0;let a=`${i.name}broadcastedIndicesTo${t}Offset`;if(a in S)return`${a}(${r})`;let n=[];for(let t=o-1;t>=0;t--){let r=i.indicesGet("outputIndices",t+i.rank-o);n.push(`${$(b,t)} * (${r} % ${$(g,t)})`)}return S[a]=`fn ${a}(outputIndices: ${i.type.indices}) -> u32 { 38 return ${n.length>0?n.join("+"):"0u"}; 39 }`,`${a}(${r})`},indices:x,indicesGet:$,indicesSet:(t,r,i)=>o<2?`${t}=${i};`:`${tM(t,r,o)}=${i};`,set:(...r)=>{if(r.length!==o+1)throw Error(`indices length must be ${o}`);let i=r[o];if("string"!=typeof i)throw Error("value must be string");let a=r.slice(0,o).map(f).join(",");return 0===o?k("0u",i):1===o?k(a[0],i):(p.set=!0,p.setByIndices=!0,p.indicesToOffset=!0,`set_${t}(${a}, ${i})`)},setByOffset:k,setByIndices:(r,i)=>o<2?k(r,i):(p.setByIndices=!0,p.indicesToOffset=!0,`set_${t}ByIndices(${r}, ${i});`),get:(...r)=>{if(r.length!==o)throw Error(`indices length must be ${o}`);let i=r.map(f).join(",");return 0===o?C("0u"):1===o?C(i[0]):(p.get=!0,p.getByIndices=!0,p.indicesToOffset=!0,`get_${t}(${i})`)},getByOffset:C,getByIndices:r=>o<2?C(r):(p.getByIndices=!0,p.indicesToOffset=!0,`get_${t}ByIndices(${r})`),usage:a,name:t,strides:b,shape:g,rank:o}},tR=(t,r,i,a=1)=>tP(t,r,i,"input",a),tj=(t,r,i,a=1)=>tP(t,r,i,"output",a),tz=(t,r,i)=>tP(t,r,i,"atomicOutput",1),tD=(t,r,i,a=1)=>tP(t,r,i,"internal",a),tB=class{constructor(t,r){this.normalizedDispatchGroup=t,this.limits=r,this.internalVariables=[],this.variables=[],this.uniforms=[],this.variableIndex=0}guardAgainstOutOfBoundsWorkgroupSizes(t){return`if (global_idx >= ${"number"==typeof t?`${t}u`:t}) { return; }`}mainStart(t=tS){let r="number"==typeof t?t:t[0],i="number"==typeof t?1:t[1],a="number"==typeof t?1:t[2];if(r>this.limits.maxComputeWorkgroupSizeX||i>this.limits.maxComputeWorkgroupSizeY||a>this.limits.maxComputeWorkgroupSizeZ)throw Error(`workgroup size [${r}, ${i}, ${a}] exceeds the maximum workgroup size [${this.limits.maxComputeWorkgroupSizeX}, ${this.limits.maxComputeWorkgroupSizeY}, ${this.limits.maxComputeWorkgroupSizeZ}].`);if(r*i*a>this.limits.maxComputeInvocationsPerWorkgroup)throw Error(`workgroup size [${r}, ${i}, ${a}] exceeds the maximum workgroup invocations ${this.limits.maxComputeInvocationsPerWorkgroup}.`);let n=1===this.normalizedDispatchGroup[1]&&1===this.normalizedDispatchGroup[2],s=n?`@builtin(global_invocation_id) global_id : vec3<u32>, 40 @builtin(workgroup_id) workgroup_id : vec3<u32>, 41 @builtin(local_invocation_index) local_idx : u32, 42 @builtin(local_invocation_id) local_id : vec3<u32>`:`@builtin(global_invocation_id) global_id : vec3<u32>, 43 @builtin(local_invocation_id) local_id : vec3<u32>, 44 @builtin(local_invocation_index) local_idx : u32, 45 @builtin(workgroup_id) workgroup_id : vec3<u32>, 46 @builtin(num_workgroups) num_workgroups : vec3<u32>`,o=n?`let global_idx = global_id.x; 47 let workgroup_index = workgroup_id.x;`:`let workgroup_index = workgroup_id.z * num_workgroups[0] * num_workgroups[1] + 48 workgroup_id.y * num_workgroups[0] + workgroup_id.x; 49 let global_idx = workgroup_index * ${r*i*a}u + local_idx;`;return`@compute @workgroup_size(${r}, ${i}, ${a}) 50 fn main(${s}) { 51 ${o} 52 `}appendVariableUniforms(t){0!==t.rank&&(t.shape.startsWith("uniforms.")&&this.uniforms.push({name:t.shape.replace("uniforms.",""),type:"u32",length:t.rank}),t.strides.startsWith("uniforms.")&&this.uniforms.push({name:t.strides.replace("uniforms.",""),type:"u32",length:t.rank}))}declareVariable(t,r){if("internal"===t.usage)throw Error("cannot use internal variable with declareVariable(). use registerInternalVariables() instead.");this.variables.push(t),this.appendVariableUniforms(t);let i="input"===t.usage?"read":"read_write",a="atomicOutput"===t.usage?"atomic<i32>":t.type.storage;return`@group(0) @binding(${r}) var<storage, ${i}> ${t.name}: array<${a}>;`}declareVariables(...t){return t.map(t=>this.declareVariable(t,this.variableIndex++)).join(` 53`)}registerInternalVariable(t){if("internal"!==t.usage)throw Error("cannot use input or output variable with registerInternalVariable(). use declareVariables() instead.");this.internalVariables.push(t),this.appendVariableUniforms(t)}registerInternalVariables(...t){return t.forEach(t=>this.registerInternalVariable(t)),this}registerUniform(t,r,i=1){return this.uniforms.push({name:t,type:r,length:i}),this}registerUniforms(t){return this.uniforms=this.uniforms.concat(t),this}uniformDeclaration(){if(0===this.uniforms.length)return"";let t=[];for(let{name:r,type:i,length:a}of this.uniforms)if(a&&a>4)"f16"===i?t.push(`@align(16) ${r}:array<mat2x4<${i}>, ${Math.ceil(a/8)}>`):t.push(`${r}:array<vec4<${i}>, ${Math.ceil(a/4)}>`);else{let n=null==a||1===a?i:`vec${a}<${i}>`;t.push(`${r}:${n}`)}return` 54 struct Uniforms { ${t.join(", ")} }; 55 @group(0) @binding(${this.variableIndex}) var<uniform> uniforms: Uniforms;`}get additionalImplementations(){return this.uniformDeclaration()+this.variables.map(t=>t.impl()).join(` 56`)+this.internalVariables.map(t=>t.impl()).join(` 57`)}get variablesInfo(){if(0!==this.uniforms.length)return this.uniforms.map(t=>[[12,10,1,6][["u32","f16","f32","i32"].indexOf(t.type)],t.length??1])}},tL=(t,r)=>new tB(t,r)}),nE=q(()=>{ng(),nv(),nk(),nC(),tU=(t,r)=>0!==r.length?r:[...Array(t).keys()].reverse(),tF=(t,r)=>{let i=t.dataType,a=t.dims.length,n=tU(a,r),s=((t,r)=>e8.sortBasedOnPerm(t,tU(t.length,r)))(t.dims,n),o=t.dims,l=s;if(a<2||((t,r)=>{let i=0;for(let a=0;a<t.length;
57++a)if(1!==r[t[a]]){if(t[a]<i)return!1;i=t[a]}return!0})(n,t.dims))return{name:"TransposeCopy",shaderCache:{inputDependencies:["type"]},getRunData:()=>{let r=e8.size(s);return{outputs:[{dims:s,dataType:t.dataType}],dispatchGroup:{x:Math.ceil(r/64/4)},programUniforms:[{type:12,data:Math.ceil(r/4)}]}},getShaderSource:t=>{let r=tR("input",i,o,4),a=tj("output",i,l,4);return` 58 ${t.registerUniform("output_size","u32").declareVariables(r,a)} 59 ${t.mainStart()} 60 ${t.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} 61 output[global_idx] = input[global_idx]; 62 }`}};let{newShape:u,newPerm:d}=((t,r)=>{let i=[],a=[];for(let n=0;n<t.length;++n)1!==t[n]&&i.push(t[n]),1!==t[r[n]]&&a.push(r[n]);return{newShape:i,newPerm:a}})(t.dims,n),c=e8.areEqual(d,[2,3,1]),h=e8.areEqual(d,[3,1,2]);return 2===u.length||c||h?(l=[(o=c?[u[0],u[1]*u[2]]:h?[u[0]*u[1],u[2]]:u)[1],o[0]],{name:"TransposeShared",shaderCache:{inputDependencies:["type"]},getRunData:()=>{let r=e8.size(s);return{outputs:[{dims:s,dataType:t.dataType}],dispatchGroup:{x:Math.ceil(l[1]/16),y:Math.ceil(l[0]/16)},programUniforms:[{type:12,data:r},...tT(o,l)]}},getShaderSource:t=>{let r=tR("a",i,o.length),a=tj("output",i,l.length);return` 63 ${t.registerUniform("output_size","u32").declareVariables(r,a)} 64 var<workgroup> tile : array<array<${a.type.value}, 17>, 16>; 65 ${t.mainStart([16,16,1])} 66 let stride = (uniforms.output_shape[1] - 1) / 16 + 1; 67 let workgroup_id_x = workgroup_index % stride; 68 let workgroup_id_y = workgroup_index / stride; 69 let input_col = workgroup_id_y * 16u + local_id.x; 70 let input_row = workgroup_id_x * 16u + local_id.y; 71 if (input_row < uniforms.a_shape[0] && input_col < uniforms.a_shape[1]) { 72 tile[local_id.y][local_id.x] = ${r.getByIndices(`${r.type.indices}(input_row, input_col)`)}; 73 } 74 workgroupBarrier(); 75 76 let output_col = workgroup_id_x * 16u + local_id.x; 77 let output_row = workgroup_id_y * 16u + local_id.y; 78 if (output_row < uniforms.output_shape[0] && output_col < uniforms.output_shape[1]) { 79 ${a.setByIndices(`${a.type.indices}(output_row, output_col)`,"tile[local_id.x][local_id.y]")} 80 } 81 }`}}):{name:"Transpose",shaderCache:{hint:`${r}`,inputDependencies:["rank"]},getRunData:()=>{let r=e8.size(s);return{outputs:[{dims:s,dataType:t.dataType}],dispatchGroup:{x:Math.ceil(r/64)},programUniforms:[{type:12,data:r},...tT(o,l)]}},getShaderSource:t=>{let r=tR("a",i,o.length),s=tj("output",i,l.length);return` 82 ${t.registerUniform("output_size","u32").declareVariables(r,s)} 83 84 ${((t,r,i,a)=>{let n=`fn perm(i: ${a.type.indices}) -> ${i.type.indices} { 85 var a: ${i.type.indices};`;for(let i=0;i<r;++i)n+=`a[${t[i]}]=i[${i}];`;return n+"return a;}"})(n,a,r,s)} 86 87 ${t.mainStart()} 88 ${t.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} 89 90 let indices = ${s.offsetToIndices("global_idx")}; 91 let aIndices = perm(indices); 92 93 ${s.setByOffset("global_idx",r.getByIndices("aIndices"))} 94 }`}}},tq=(t,r)=>{((t,r)=>{if(!t||1!==t.length)throw Error("Transpose requires 1 input.");if(0!==r.length&&r.length!==t[0].dims.length)throw Error(`perm size ${r.length} does not match input rank ${t[0].dims.length}`)})(t.inputs,r.perm),t.compute(tF(t.inputs[0],r.perm))},tV=t=>t$({perm:t.perm})}),nT=q(()=>{ng(),nv(),nC(),nI(),nE(),tW={max:"select(bestValue, candidate, candidate > bestValue)",min:"select(bestValue, candidate, candidate < bestValue)",mean:"bestValue + candidate",sum:"bestValue + candidate",prod:"bestValue * candidate",sumSquare:"bestValue + candidate * candidate",logSumExp:"bestValue + exp(candidate)",l1:"bestValue + abs(candidate)",l2:"bestValue + candidate * candidate",logSum:"bestValue + candidate"},tH={max:"select(bestValue, candidate, candidate > bestValue)",min:"select(bestValue, candidate, candidate < bestValue)",mean:"bestValue + candidate",sum:"bestValue + candidate",prod:"bestValue * candidate",sumSquare:"bestValue + candidate",logSumExp:"bestValue + candidate",l1:"bestValue + candidate",l2:"bestValue + candidate",logSum:"bestValue + candidate"},tG={max:"_A[offset]",min:"_A[offset]",mean:"0",sum:"0",prod:"1",sumSquare:"
940",logSumExp:"0",l1:"0",l2:"0",logSum:"0"},tK={max:"bestValue",min:"bestValue",sum:"bestValue",prod:"bestValue",sumSquare:"bestValue",logSumExp:"log(bestValue)",l1:"bestValue",l2:"sqrt(bestValue)",logSum:"log(bestValue)"},tY=(t,r,i,a)=>{let n=1===t.inputs.length?i:t9(t.inputs,i),s=n.axes;0!==s.length||n.noopWithEmptyAxes||(s=t.inputs[0].dims.map((t,r)=>r));let o=e8.normalizeAxes(s,t.inputs[0].dims.length),l=o,u=t.inputs[0],d=((t,r)=>{let i=[];if(!((t,r)=>{for(let i=0;i<t.length;++i)if(t[t.length-i-1]!==r-1-i)return!1;return!0})(t,r)){for(let a=0;a<r;++a)-1===t.indexOf(a)&&i.push(a);t.forEach(t=>i.push(t))}return i})(l,t.inputs[0].dims.length);d.length>0&&(u=t.compute(tF(t.inputs[0],d),{inputs:[0],outputs:[-1]})[0],l=((t,r)=>{let i=[];for(let a=r-t;a<r;++a)i.push(a);return i})(l.length,u.dims.length));let[c,h]=((t,r)=>{let i=[],a=t.length;for(let n=0;n<a;n++)-1===r.indexOf(n)&&i.push(t[n]);return[i,r.map(r=>t[r])]})(u.dims,l),f=c;n.keepDims&&(f=((t,r)=>{let i=t.length+r.length,a=[],n=0;for(let s=0;s<i;s++)-1===r.indexOf(s)?a.push(t[n++]):a.push(1);return a})(c,o)),t.compute(((t,r,i,a,n,s,o)=>{let l=i[0].dims,u=e8.size(s),d=e8.size(o),c=tR("_A",i[0].dataType,l),h=tj("output",n,s),f=64;1===u&&(f=256);let p=` 95 var<workgroup> aBestValues : array<f32, ${f}>; 96 `;return{name:t,shaderCache:{hint:`${r};${f}`,inputDependencies:["type"]},getShaderSource:t=>` 97 ${t.registerUniform("reduceSize","u32").declareVariables(c,h)} 98 ${p} 99 fn DIV_CEIL(a : u32, b : u32) -> u32 { 100 return ((a - 1u) / b + 1u); 101 } 102 ${t.mainStart(f)} 103 104 let outputIndex = global_idx / ${f}; 105 let offset = outputIndex * uniforms.reduceSize; 106 107 var bestValue = f32(${tG[a]}); 108 let Length = uniforms.reduceSize; 109 for (var k = local_idx; k < Length; k = k + ${f}) { 110 let candidate = f32(${c.getByOffset("offset + k")}); 111 bestValue = ${tW[a]}; 112 } 113 aBestValues[local_idx] = bestValue; 114 workgroupBarrier(); 115 116 var reduceSize = min(Length, ${f}u); 117 for (var currentSize = reduceSize / 2u; reduceSize > 1u; 118 currentSize = reduceSize / 2u) { 119 let interval = DIV_CEIL(reduceSize, 2u); 120 if (local_idx < currentSize) { 121 let candidate = aBestValues[local_idx + interval]; 122 bestValue = ${tH[a]}; 123 aBestValues[local_idx] = bestValue; 124 } 125 reduceSize = interval; 126 workgroupBarrier(); 127 } 128 129 if (local_idx == 0u) { 130 ${h.setByOffset("outputIndex",`${"mean"===a?`${h.type.storage}(bestValue / f32(uniforms.reduceSize))`:`${h.type.storage}(${tK[a]})`}`)}; 131 } 132 }`,getRunData:()=>({outputs:[{dims:s,dataType:n}],dispatchGroup:{x:u},programUniforms:[{type:12,data:d}]})}})(r,n.cacheKey,[u],a,t.inputs[0].dataType,f,h),{inputs:[u]})},tQ=(t,r)=>{tY(t,"ReduceMeanShared",r,"mean")},tX=(t,r)=>{tY(t,"ReduceL1Shared",r,"l1")},tZ=(t,r)=>{tY(t,"ReduceL2Shared",r,"l2")},tJ=(t,r)=>{tY(t,"ReduceLogSumExpShared",r,"logSumExp")},t1=(t,r)=>{tY(t,"ReduceMaxShared",r,"max")},t0=(t,r)=>{tY(t,"ReduceMinShared",r,"min")},t2=(t,r)=>{tY(t,"ReduceProdShared",r,"prod")},t3=(t,r)=>{tY(t,"ReduceSumShared",r,"sum")},t4=(t,r)=>{tY(t,"ReduceSumSquareShared",r,"sumSquare")},t8=(t,r)=>{tY(t,"ReduceLogSumShared",r,"logSum")}}),nI=q(()=>{ng(),nv(),nk(),nC(),nT(),t7=t=>{if(!t||0===t.length||t.length>2)throw Error("Reduce op requires 1 or 2 inputs.");if(2===t.length&&1!==t[1].dims.length)throw Error("Invalid axes input dims.")},t6=t=>["","",`var value = ${t.getByIndices("input_indices")};`,""],t5=(t,r,i,a,n,s,o=!1,l=!1)=>{let u=[],d=i[0].dims,c=d.length,h=e8.normalizeAxes(n,c),f=!l&&0===h.length;d.forEach((t,r)=>{f||h.indexOf(r)>=0?o&&u.push(1):u.push(t)});let p=u.length,m=e8.size(u);return{name:t,shaderCache:r,getShaderSource:t=>{let r=[],n=tR("_A",i[0].dataType,c),l=tj("output",s,p),u=a(n,l,h),m=u[2];for(let t=0,i=0;t<c;t++)f||h.indexOf(t)>=0?(o&&i++,m=`for(var j${t}: u32 = 0; j${t} < ${d[t]}; j${t}++) { 133 ${u[2].includes("last_index")?`let last_index = j${t};`:""} 134 ${n.indicesSet("input_indices",t,`j${t}`)} 135 ${m} 136 }`):(r.push(`${n.indicesSet("input_indices",t,l.indicesGet("output_indices",
136i))};`),i++);return` 137 138 ${t.registerUniform("output_size","u32").declareVariables(n,l)} 139 140 ${t.mainStart()} 141 ${t.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} 142 var input_indices: ${n.type.indices}; 143 let output_indices = ${l.offsetToIndices("global_idx")}; 144 145 ${r.join(` 146`)} 147 ${u[0]} // init ops for reduce max/min 148 ${u[1]} 149 ${m} 150 ${u[3]} 151 ${4===u.length?l.setByOffset("global_idx","value"):u.slice(4).join(` 152`)} 153 }`},getRunData:()=>({outputs:[{dims:u,dataType:s}],dispatchGroup:{x:Math.ceil(m/64)},programUniforms:[{type:12,data:m},...tT(d,u)]})}},t9=(t,r)=>{let i=[];return t[1].dims[0]>0&&t[1].getBigInt64Array().forEach(t=>i.push(Number(t))),t$({axes:i,keepDims:r.keepDims,noopWithEmptyAxes:r.noopWithEmptyAxes})},re=(t,r,i,a)=>{let n=t.inputs,s=1===n.length?i:t9(n,i);t.compute(t5(r,{hint:s.cacheKey,inputDependencies:["rank"]},[n[0]],s.noopWithEmptyAxes&&0===s.axes.length?t6:a,s.axes,n[0].dataType,s.keepDims,s.noopWithEmptyAxes),{inputs:[0]})},rt=(t,r,i)=>{if(0===r.length)return i;let a=1,n=1;for(let i=0;i<r.length;i++)-1===r.indexOf(i)?a*=t[i]:n*=t[i];return n<32&&a>1024},rr=(t,r)=>{rt(t.inputs[0].dims,r.axes,r.noopWithEmptyAxes)?((t,r)=>{t7(t.inputs),re(t,"ReduceMean",r,(r,i,a)=>{let n=1;for(let i=0;i<r.rank;i++)(a.indexOf(i)>=0||0===a.length)&&(n*=t.inputs[0].dims[i]);return["var sum = f32(0);","",`sum += f32(${r.getByIndices("input_indices")});`,`let value = ${i.type.value}(sum / ${n});`]})})(t,r):tQ(t,r)},ri=(t,r)=>{rt(t.inputs[0].dims,r.axes,r.noopWithEmptyAxes)?((t,r)=>{t7(t.inputs),re(t,"ReduceL1",r,(t,r)=>[`var value = ${r.type.storage}(0);`,"",`value += abs(${t.getByIndices("input_indices")});`,""])})(t,r):tX(t,r)},ra=(t,r)=>{rt(t.inputs[0].dims,r.axes,r.noopWithEmptyAxes)?((t,r)=>{t7(t.inputs),re(t,"ReduceL2",r,(t,r)=>[`var t = ${r.type.value}(0); var value = ${r.type.value}(0);`,"",`t = ${t.getByIndices("input_indices")}; value += (t * t);`,"value = sqrt(value);"])})(t,r):tZ(t,r)},rn=(t,r)=>{rt(t.inputs[0].dims,r.axes,r.noopWithEmptyAxes)?((t,r)=>{t7(t.inputs),re(t,"ReduceLogSumExp",r,(t,r)=>[`var value = ${r.type.storage}(0);`,"",`value += exp(${t.getByIndices("input_indices")});`,"value = log(value);"])})(t,r):tJ(t,r)},rs=(t,r)=>{rt(t.inputs[0].dims,r.axes,r.noopWithEmptyAxes)?((t,r)=>{t7(t.inputs),re(t,"ReduceMax",r,(t,r,i)=>{let a=[];for(let r=0;r<t.rank;r++)(i.indexOf(r)>=0||0===i.length)&&a.push(t.indicesSet("input_indices",r,0));return[`${a.join(` 154`)}`,`var value = ${t.getByIndices("input_indices")};`,`value = max(value, ${t.getByIndices("input_indices")});`,""]})})(t,r):t1(t,r)},ro=(t,r)=>{rt(t.inputs[0].dims,r.axes,r.noopWithEmptyAxes)?((t,r)=>{t7(t.inputs),re(t,"ReduceMin",r,(t,r,i)=>{let a=[];for(let r=0;r<t.rank;r++)(i.indexOf(r)>=0||0===i.length)&&a.push(`input_indices[${r}] = 0;`);return[`${a.join(` 155`)}`,`var value = ${t.getByIndices("input_indices")};`,`value = min(value, ${t.getByIndices("input_indices")});`,""]})})(t,r):t0(t,r)},rl=(t,r)=>{rt(t.inputs[0].dims,r.axes,r.noopWithEmptyAxes)?((t,r)=>{t7(t.inputs),re(t,"ReduceProd",r,(t,r)=>[`var value = ${r.type.storage}(1);`,"",`value *= ${t.getByIndices("input_indices")};`,""])})(t,r):t2(t,r)},ru=(t,r)=>{rt(t.inputs[0].dims,r.axes,r.noopWithEmptyAxes)?((t,r)=>{t7(t.inputs),re(t,"ReduceSum",r,(t,r)=>[`var value = ${r.type.storage}(0);`,"",`value += ${t.getByIndices("input_indices")};`,""])})(t,r):t3(t,r)},rd=(t,r)=>{rt(t.inputs[0].dims,r.axes,r.noopWithEmptyAxes)?((t,r)=>{t7(t.inputs),re(t,"ReduceSumSquare",r,(t,r)=>[`var t = ${r.type.value}(0); var value = ${r.type.value}(0);`,"",`t = ${t.getByIndices("input_indices")}; value += t * t;`,""])})(t,r):t4(t,r)},rc=(t,r)=>{rt(t.inputs[0].dims,r.axes,r.noopWithEmptyAxes)?((t,r)=>{t7(t.inputs),re(t,"ReduceLogSum",r,(t,r)=>[`var value = ${r.type.storage}(0);`,"",`value += ${t.getByIndices("input_indices")};`,"value = log(value);"])})(t,r):t8(t,r)}}),nA=q(()=>{ng(),nk(),nI(),rh=t=>{if(!t||0===t.length||t.length>2)throw Error("ArgMinMaxOp op requires 1 or 2 inputs.");if(1!==t[0].dataType)throw Error("Invalid input type.")},rf=(t,r)=>{rh(t.inputs),t.compute(t5("ArgMin",{hint:r.cacheKey,inputDependencies:["rank"]},[t.inputs[0]],(t,i,a)=>{let n=[];for(let r=0;r<t.rank;r++)(a.indexOf(r)>=0||0===a.length)&&n.push(`input_indices[${r}] = 0;`);return[`${n.join(` 156`)}`,`var value = ${t.getByIndices("input_indices")}; 157var best_index : i32 = 0;`,`if (${t.getByIndices("input_indices")} ${r.selectLastIndex>0?"<=":"<"} value) { 158 value = ${t.getByIndices("input_indices")}; 159 best_index = i32(last_index); 160 }`,"",i.setByOffset("global_idx","best_index")]},[r.axis],7,r.keepDims),{inputs:[0]})},rp=(t,r)=>{rh(t.inputs),t.compute(t5("argMax",{hint:r.cacheKey,inputDependencies:["rank"]},[t.inputs[0]],(t,i,a)=>{let n=[];for(let r=0;r<t.rank;r++)(a.indexOf(r)>=0||0===a.length)&&n.push(`input_indices[${r}] = 0;`);return[`${n.join(` 161`)}`,`var value = ${t.getByIndices("input_indices")}; 162var best_index : i32 = 0;`,`if (${t.getByIndices("input_indices")} ${r.selectLastIndex>0?">=":">"} value) { 163 value = ${t.getByIndices("input_indices")}; 164 best_index = i32(last_index); 165 }`,"",i.setByOffset("global_idx","best_index")]},[r.axis],7,r.keepDims),{inputs:[0]})},rm=t=>t$(t)}),nN=q(()=>{ng(),nv(),n$(),nC(),rg=(t,r,i)=>r&&t?` 166 let total_sequence_length_input = u32(${r.getByOffset("0")}); 167 let present_sequence_length = max(total_sequence_length_input, uniforms.past_sequence_length); 168 let is_subsequent_prompt: bool = sequence_length > 1 && sequence_length != total_sequence_length_input; 169 let is_first_prompt: bool = is_subsequent_prompt == false && sequence_length == total_sequence_length_input; 170 total_sequence_length = u32(${t?.getByOffset("batchIdx")}) + 1; 171 var past_sequence_length: u32 = 0; 172 if (is_first_prompt == false) { 173 past_sequence_length = total_sequence_length - sequence_length; 174 } 175 `:` 176 ${i?"let past_sequence_length = uniforms.past_sequence_length":""}; 177 let present_sequence_length = total_sequence_length; 178 `,rb=(t,r,i,a,n,s,o,l,u,d,c,h)=>{let f=Math.min(t.outputCount,1+ +!!o+ +!!l),p=f>1?d.pastSequenceLength:0,m=p+d.kvSequenceLength,g=u&&e8.size(u.dims)>0?u:void 0,b=[r,i];f>1&&o&&e8.size(o.dims)>0&&b.push(o),g&&b.push(g),c&&b.push(c),h&&b.push(h);let y=t.compute(((t,r,i,a,n,s,o,l,u)=>
vendor: 5,313 bytes, lines 178-235
178{let d=o+s.kvSequenceLength,c=[s.batchSize,s.numHeads,s.sequenceLength,d],h=t>1&&a,f=s.kvNumHeads?s.kvNumHeads:s.numHeads,p=h?[s.batchSize,f,d,s.headSize]:void 0,m=s.nReps?s.nReps:1,g=0===s.scale?1/Math.sqrt(s.headSize):s.scale,b=tI(s.headSize),y=s.headSize/b,v={x:Math.ceil(d/12),y:Math.ceil(s.sequenceLength/12),z:s.batchSize*s.numHeads},_=[{type:12,data:s.sequenceLength},{type:12,data:y},{type:12,data:d},{type:12,data:s.numHeads},{type:12,data:s.headSize},{type:1,data:g},{type:12,data:o},{type:12,data:s.kvSequenceLength},{type:12,data:m}],w=h&&a&&e8.size(a.dims)>0,x=["type","type"];w&&x.push("type"),n&&x.push("type"),l&&x.push("type"),u&&x.push("type");let $=[{dims:c,dataType:r.dataType,gpuDataType:0}];return h&&$.push({dims:p,dataType:r.dataType,gpuDataType:0}),{name:"AttentionProbs",shaderCache:{hint:`${b};${void 0!==n};${void 0!==a};${t}`,inputDependencies:x},getRunData:()=>({outputs:$,dispatchGroup:v,programUniforms:_}),getShaderSource:t=>{let s=tR("q",r.dataType,r.dims,b),o=[s,tR("key",i.dataType,i.dims,b)];if(w){let t=tR("past_key",a.dataType,a.dims,b);o.push(t)}n&&o.push(tR("attention_bias",n.dataType,n.dims));let d=l?tR("seq_lens",l.dataType,l.dims):void 0;d&&o.push(d);let f=u?tR("total_sequence_length_input",u.dataType,u.dims):void 0;f&&o.push(f);let g=tj("output",r.dataType,c),y=[g];h&&y.push(tj("present_key",r.dataType,p,b));let v=tE(1,b);return` 179 const TILE_SIZE = 12u; 180 181 var<workgroup> tileQ: array<${s.type.storage}, 144>; 182 var<workgroup> tileK: array<${s.type.storage}, 144>; 183 ${t.registerUniforms([{name:"M",type:"u32"},{name:"K",type:"u32"},{name:"N",type:"u32"},{name:"num_heads",type:"u32"},{name:"head_size",type:"u32"},{name:"alpha",type:"f32"},{name:"past_sequence_length",type:"u32"},{name:"kv_sequence_length",type:"u32"},{name:"n_reps",type:"u32"}]).declareVariables(...o,...y)} 184 ${t.mainStart([12,12,1])} 185 // x holds the N and y holds the M 186 let headIdx = workgroup_id.z % uniforms.num_heads; 187 let kvHeadIdx = ${1===m?"headIdx":"headIdx / uniforms.n_reps"}; 188 let kv_num_heads = ${1===m?"uniforms.num_heads":"uniforms.num_heads / uniforms.n_reps"}; 189 let batchIdx = workgroup_id.z / uniforms.num_heads; 190 let m = workgroup_id.y * TILE_SIZE; 191 let n = workgroup_id.x * TILE_SIZE; 192 let sequence_length = uniforms.M; 193 var total_sequence_length = uniforms.N; 194 ${rg(d,f,!0)} 195 let absKvHeadIdx = batchIdx * kv_num_heads + kvHeadIdx; 196 let qOffset = workgroup_id.z * uniforms.M * uniforms.K + m * uniforms.K; 197 ${w&&h?"let pastKeyOffset = absKvHeadIdx * uniforms.past_sequence_length * uniforms.K;":""}; 198 let kOffset = absKvHeadIdx * uniforms.kv_sequence_length * uniforms.K; 199 ${h?"let presentKeyOffset = absKvHeadIdx * uniforms.N * uniforms.K;":""} 200 var value = ${v}(0); 201 for (var w: u32 = 0u; w < uniforms.K; w += TILE_SIZE) { 202 if (global_id.y < uniforms.M && w + local_id.x < uniforms.K) { 203 tileQ[TILE_SIZE * local_id.y + local_id.x] = q[qOffset + local_id.y * uniforms.K + w + local_id.x]; 204 } 205 if (n + local_id.y < uniforms.N && w + local_id.x < uniforms.K) { 206 var idx = TILE_SIZE * local_id.y + local_id.x; 207 ${w&&h?` 208 if (n + local_id.y < past_sequence_length) { 209 tileK[idx] = past_key[pastKeyOffset + (n + local_id.y) * uniforms.K + w + local_id.x]; 210 } else if (n + local_id.y - past_sequence_length < uniforms.kv_sequence_length) { 211 tileK[idx] = key[kOffset + (n + local_id.y - past_sequence_length) * uniforms.K + w + local_id.x]; 212 }`:` 213 if (n + local_id.y < uniforms.kv_sequence_length) { 214 tileK[idx] = key[kOffset + (n + local_id.y) * uniforms.K + w + local_id.x]; 215 }`} 216 ${h?`if (n + local_id.y < present_sequence_length) { 217 present_key[presentKeyOffset + (n + local_id.y) * uniforms.K + w + local_id.x] = tileK[idx]; 218 }`:""} 219 } 220 workgroupBarrier(); 221 222 for (var k: u32 = 0u; k < TILE_SIZE && w+k < uniforms.K; k++) { 223 value += ${v}(tileQ[TILE_SIZE * local_id.y + k] * tileK[TILE_SIZE * local_id.x + k]); 224 } 225 226 workgroupBarrier(); 227 } 228 229 if (global_id.y < uniforms.M && global_id.x < total_sequence_length) { 230 let headOffset = workgroup_id.z * uniforms.M * uniforms.N; 231 let outputIdx = headOffset + global_id.y * uniforms.N + global_id.x; 232 var sum: f32 = ${(()=>{switch(b){case 1:return"value";case 2:return"value.x + value.y";case 4:return"value.x + value.y + value.z + value.w";default:throw Error(`Unsupported components: ${b}`)}})()}; 233 output[outputIdx] = ${g.type.value} (sum * uniforms.alpha) + ${n?"attention_bias[outputIdx]":"0.0"}; 234 } 235 }`}}})(f,r,i,o,g,d,p,c,h),{inputs:b,outputs:f>1?[-1,1]:[-1]})[0];t.compute(((t,r,i,a,n,s,o,l)=>{let u=tI(o?1:s),d=64,c=s/u;c<64&&(d=32);let h=[{type:12,data:r},{type:12,data:i},{type:12,data:a},{type:12,data:n},{type:12,data:c},{type:12,data:Math.ceil(s/u/d)}],f=tC(t.dataType,u),p=tE(1,u),m=["type"];return o&&m.push("type"),l&&m.push("type"),{name:"AttentionProbsSoftmax",shaderCache:{hint:`${d};${f};${u}`,inputDependencies:m},getShaderSource:r=>{let i=tj("x",t.dataType,t.dims,u),a=[i],n=o?tR("seq_lens",o.dataType,o.dims):void 0;n&&a.push(n);let s=l?tR("total_sequence_length_input",l.dataType,l.dims):void 0;s&&a.push(s);let c=tE(t.dataType);return`
236 var<workgroup> thread_max: array<f32, ${d}>; 237 var<workgroup> thread_sum: array<f32, ${d}>; 238 ${r.registerUniforms([{name:"batch_size",type:"u32"},{name:"num_heads",type:"u32"},{name:"past_sequence_length",type:"u32"},{name:"sequence_length",type:"u32"},{name:"total_sequence_length",type:"u32"},{name:"elements_per_thread",type:"u32"}]).declareVariables(...a)} 239 ${r.mainStart([d,1,1])} 240 let batchIdx = workgroup_id.z / uniforms.num_heads; 241 let headIdx = workgroup_id.z % uniforms.num_heads; 242 let sequence_length = uniforms.sequence_length; 243 var total_sequence_length = uniforms.total_sequence_length; 244 ${rg(n,s,!1)} 245 let local_offset = local_idx * uniforms.elements_per_thread; 246 let offset = (global_idx / ${d}) * uniforms.total_sequence_length + local_offset; 247 let seq_causal_length = ${o?"u32(past_sequence_length + workgroup_id.y + 1)":"total_sequence_length"}; 248 var thread_max_vector = ${p}(-3.402823e+38f); 249 for (var i: u32 = 0; i < uniforms.elements_per_thread && i + local_offset < seq_causal_length; i++) { 250 thread_max_vector = max(${p}(x[offset + i]), thread_max_vector); 251 } 252 thread_max[local_idx] = ${(()=>{switch(u){case 1:return"thread_max_vector";case 2:return"max(thread_max_vector.x, thread_max_vector.y)";case 4:return"max(max(thread_max_vector.x, thread_max_vector.y), max(thread_max_vector.z, thread_max_vector.w))";default:throw Error(`Unsupported components: ${u}`)}})()}; 253 workgroupBarrier(); 254 255 var max_value = f32(-3.402823e+38f); 256 for (var i = 0u; i < ${d}; i++) { 257 max_value = max(thread_max[i], max_value); 258 } 259 260 var sum_vector = ${p}(0); 261 for (var i: u32 = 0; i < uniforms.elements_per_thread && i + local_offset < seq_causal_length; i++) { 262 sum_vector += exp(${p}(x[offset + i]) - max_value); 263 } 264 thread_sum[local_idx] = ${(()=>{switch(u){case 1:return"sum_vector";case 2:return"sum_vector.x + sum_vector.y";case 4:return"sum_vector.x + sum_vector.y + sum_vector.z + sum_vector.w";default:throw Error(`Unsupported components: ${u}`)}})()}; 265 workgroupBarrier(); 266 267 var sum: f32 = 0; 268 for (var i = 0u; i < ${d}; i++) { 269 sum += thread_sum[i]; 270 } 271 272 if (sum == 0) { 273 for (var i: u32 = 0; i < uniforms.elements_per_thread && i + local_offset < seq_causal_length; i++) { 274 x[offset + i] = ${i.type.value}(${c}(1.0) / ${c}(seq_causal_length)); 275 } 276 } else { 277 for (var i: u32 = 0; i < uniforms.elements_per_thread && i + local_offset < seq_causal_length; i++) { 278 var f32input = ${p}(x[offset + i]); 279 x[offset + i] = ${i.type.value}(exp(f32input - max_value) / sum); 280 } 281 } 282 ${o?` 283 for (var total_seq_id: u32 = seq_causal_length; total_seq_id + local_offset < uniforms.total_sequence_length; total_seq_id++) { 284 x[offset + total_seq_id] = ${i.type.value}(${c}(0)); 285 }`:""}; 286 }`},getRunData:()=>({outputs:[],dispatchGroup:{x:1,y:n,z:r*i},programUniforms:h})}})(y,d.batchSize,d.numHeads,p,d.sequenceLength,m,c,h),{inputs:c&&h?[y,c,h]:[y],outputs:[]});let v=[y,a];f>1&&l&&e8.size(l.dims)>0&&v.push(l),c&&v.push(c),h&&v.push(h),t.compute(((t,r,i,a,n,s,o,l)=>{let u=s+n.kvSequenceLength,d=n.nReps?n.nReps:1,c=n.vHiddenSize*d,h=t>1&&a,f=n.kvNumHeads?n.kvNumHeads:n.numHeads,p=h?[n.batchSize,f,u,n.headSize]:void 0,m=[n.batchSize,n.sequenceLength,c],g={x:Math.ceil(n.vHeadSize/12),y:Math.ceil(n.sequenceLength/12),z:n.batchSize*n.numHeads},b=[{type:12,data:n.sequenceLength},{type:12,data:u},{type:12,data:n.vHeadSize},{type:12,data:n.numHeads},{type:12,data:n.headSize},{type:12,data:c},{type:12,data:s},{type:12,data:n.kvSequenceLength},{type:12,data:d}],y=h&&a&&e8.size(a.dims)>0,v=["type","type"];y&&v.push("type"),o&&v.push("type"),l&&v.push("type");let _=[{dims:m,dataType:r.dataType,gpuDataType:0}];return h&&_.push({dims:p,dataType:r.dataType,gpuDataType:0}),{name:"AttentionScore",shaderCache:{hint:`${void 0!==a};${t}`,inputDependencies:v},getRunData:()=>({outputs:_,dispatchGroup:g,programUniforms:b}),getShaderSource:t=>{let n=tR("probs",r.dataType,r.dims),s=[n,tR("v",i.dataType,i.dims)];y&&s.push(tR("past_value",a.dataType,a.dims));let u=o?tR("seq_lens",o.dataType,o.dims):void 0;o&&s.push(u);let c=l?tR("total_sequence_length_input",l.dataType,l.dims):void 0;l&&s.push(c);let f=[tj("output",r.dataType,m)];return h&&f.push(tj("present_value",r.dataType,p)),` 287 const TILE_SIZE = 12u; 288 var<workgroup> tileQ: array<${n.type.value}, 144>; 289 var<workgroup> tileV: array<${n.type.value}, 144>; 290 ${t.registerUniforms([{name:"M",type:"u32"},{name:"K",type:"u32"},{name:"N",type:"u32"},{name:"num_heads",type:"u32"},{name:"head_size",type:"u32"},{name:"v_hidden_size",type:"u32"},{name:"past_sequence_length",type:"u32"},{name:"kv_sequence_length",type:"u32"},{name:"n_reps",type:"u32"}]).declareVariables(...s,...f)} 291 ${t.mainStart([12,12,1])} 292 let headIdx = workgroup_id.z % uniforms.num_heads; 293 let batchIdx = workgroup_id.z / uniforms.num_heads; 294 let kvHeadIdx = ${1===d?"headIdx":"headIdx / uniforms.n_reps"}; 295 let kv_num_heads = ${1===d?"uniforms.num_heads":"uniforms.num_heads / uniforms.n_reps"}; 296 let m = global_id.y; 297 let n = global_id.x; 298 let sequence_length = uniforms.M; 299 var total_sequence_length = uniforms.K; 300 ${rg(u,c,!0)} 301 let offsetA = workgroup_id.z * uniforms.M * uniforms.K + m * uniforms.K; 302 let absKvHeadIdx = batchIdx * kv_num_heads + kvHeadIdx; // kvHeadIdx is relative to the batch 303 ${y&&h?"let pastValueOffset = absKvHeadIdx * uniforms.N * uniforms.past_sequence_length + n;":""}; 304 let vOffset = absKvHeadIdx * uniforms.N * uniforms.kv_sequence_length + n; 305 ${h?"let presentValueOffset = absKvHeadIdx * uniforms.N * uniforms.K + n;":""} 306 var value = ${n.type.storage}(0); 307 for (var w: u32 = 0u; w < uniforms.K; w += TILE_SIZE) { 308 if (m < uniforms.M && w + local_id.x < uniforms.K) { 309 tileQ[TILE_SIZE * local_id.y + local_id.x] = probs[offsetA + w + local_id.x]; 310 } 311 if (n < uniforms.N && w + local_id.y < uniforms.K) { 312 var idx = TILE_SIZE * local_id.y + local_id.x; 313 ${y&&h?` 314 if (w + local_id.y < past_sequence_length) { 315 tileV[idx] = past_value[pastValueOffset + (w + local_id.y) * uniforms.N]; 316 } else if (w + local_id.y - past_sequence_length < uniforms.kv_sequence_length) { 317 tileV[idx] = v[vOffset + (w + local_id.y - past_sequence_length) * uniforms.N]; 318 } 319 `:` 320 if (w + local_id.y < uniforms.kv_sequence_length) { 321 tileV[idx] = v[vOffset + (w + local_id.y) * uniforms.N]; 322 }`} 323 ${h?` 324 if (w + local_id.y < present_sequence_length) { 325 present_value[presentValueOffset + (w + local_id.y) * uniforms.N] = tileV[idx]; 326 }`:""} 327 } 328 workgroupBarrier(); 329 for (var k: u32 = 0u; k < TILE_SIZE && w+k < total_sequence_length; k++) { 330 value += tileQ[TILE_SIZE * local_id.y + k] * tileV[TILE_SIZE * k + local_id.x]; 331 } 332 workgroupBarrier(); 333 } 334 335 // we need to transpose output from BNSH_v to BSND_v 336 if (m < uniforms.M && n < uniforms.N) { 337 let outputIdx = batchIdx * uniforms.M * uniforms.v_hidden_size + m * uniforms.v_hidden_size 338 + headIdx * uniforms.N + n; 339 output[outputIdx] = value; 340 } 341 }`}}})(f,y,a,l,d,p,c,h),{inputs:v,outputs:f>1?[0,2]:[0]})},ry=(t,r)=>{let i=((t,r)=>{let i=t[0],a=t[1],n=t[2],s=t[3],o=t[4],l=t[5];if(o&&l)throw Error("Attention cannot have both past and attention_bias");if(3!==i.dims.length)throw Error('Input "input" must have 3 dimensions');
341let u=i.dims[0],d=i.dims[1],c=i.dims[2];if(1!==n.dims.length)throw Error('Input "bias" is expected to have 1 dimensions');if(2!==a.dims.length)throw Error('Input "weights" is expected to have 2 dimensions');if(a.dims[0]!==c)throw Error("Input 1 dimension 0 should have same length as dimension 2 of input 0");if(n.dims[0]!==a.dims[1])throw Error('Input "bias" dimension 0 should have same length as dimension 1 of input "weights"');let h=n.dims[0]/3,f=h,p=f;if(r.qkvHiddenSizes.length>0){if(3!==r.qkvHiddenSizes.length)throw Error("qkv_hidden_sizes attribute should have 3 elements");for(let t of r.qkvHiddenSizes)if(t%r.numHeads!=0)throw Error("qkv_hidden_sizes should be divisible by num_heads");h=r.qkvHiddenSizes[0],f=r.qkvHiddenSizes[1],p=r.qkvHiddenSizes[2]}if(h!==f)throw Error("qkv_hidden_sizes first element should be same as the second");if(n.dims[0]!==h+f+p)throw Error('Input "bias" dimension 0 should have same length as sum of Q/K/V hidden sizes');let m=0;if(o){if(f!==p)throw Error('Input "past" expect k_hidden_size == v_hidden_size');if(5!==o.dims.length)throw Error('Input "past" must have 5 dimensions');if(2!==o.dims[0])throw Error('Input "past" first dimension must be 2');if(o.dims[1]!==u)throw Error('Input "past" second dimension must be batch_size');if(o.dims[2]!==r.numHeads)throw Error('Input "past" third dimension must be num_heads');if(o.dims[4]!==f/r.numHeads)throw Error('Input "past" fifth dimension must be k_hidden_size / num_heads');r.pastPresentShareBuffer||(m=o.dims[3])}let g=d+m;if(s)throw Error("Mask not supported");if(o)throw Error("past is not supported");if(l){if(4!==l.dims.length)throw Error('Input "attention_bias" must have 4 dimensions');if(l.dims[0]!==u||l.dims[1]!==r.numHeads||l.dims[2]!==d||l.dims[3]!==g)throw Error('Expect "attention_bias" shape (batch_size, num_heads, sequence_length, total_sequence_length)')}return{batchSize:u,sequenceLength:d,pastSequenceLength:m,kvSequenceLength:d,totalSequenceLength:g,maxSequenceLength:-1,inputHiddenSize:c,hiddenSize:h,vHiddenSize:p,headSize:Math.floor(h/r.numHeads),vHeadSize:Math.floor(p/r.numHeads),numHeads:r.numHeads,isUnidirectional:!1,pastPresentShareBuffer:!1,maskFilterValue:r.maskFilterValue,maskType:0,scale:r.scale,broadcastResPosBias:!1,passPastInKv:!1,qkvFormat:1}})(t.inputs,r),[a,n,s]=((t,r)=>{let i=[r.batchSize,r.numHeads,r.sequenceLength,r.headSize],a=r.sequenceLength,n=r.inputHiddenSize,s=r.headSize,o={x:Math.ceil(r.headSize/12),y:Math.ceil(r.sequenceLength/12),z:r.batchSize*r.numHeads},l=[t.inputs[0],t.inputs[1],t.inputs[2]],u=[{type:12,data:a},{type:12,data:n},{type:12,data:s},{type:12,data:r.numHeads},{type:12,data:r.headSize},{type:12,data:r.hiddenSize},{type:12,data:r.hiddenSize+r.hiddenSize+r.vHiddenSize}];return t.compute({name:"AttentionPrepare",shaderCache:{inputDependencies:["type","type","type"]},getRunData:()=>({outputs:[{dims:i,dataType:t.inputs[0].dataType,gpuDataType:0},{dims:i,dataType:t.inputs[0].dataType,gpuDataType:0},{dims:i,dataType:t.inputs[0].dataType,gpuDataType:0}],dispatchGroup:o,programUniforms:u}),getShaderSource:t=>{let r=tj("output_q",l[0].dataType,i),a=tj("output_k",l[0].dataType,i),n=tj("output_v",l[0].dataType,i),s=tR("input",l[0].dataType,l[0].dims),o=tR("weight",l[1].dataType,l[1].dims),u=tR("bias",l[2].dataType,l[2].dims),d=s.type.storage;return` 342 const TILE_SIZE = 12u; 343 var<workgroup> tileInput: array<${d}, 144>; 344 var<workgroup> tileWeightQ: array<${d}, 144>; 345 var<workgroup> tileWeightK: array<${d}, 144>; 346 var<workgroup> tileWeightV: array<${d}, 144>; 347 ${t.registerUniforms([{name:"M",type:"u32"},{name:"K",type:"u32"},{name:"N",type:"u32"},{name:"num_heads",type:"u32"},{name:"head_size",type:"u32"},{name:"hidden_size",type:"u32"},{name:"ldb",type:"u32"}]).declareVariables(s,o,u,r,a,n)} 348 ${t.mainStart([12,12,1])} 349 let batchIndex = workgroup_id.z / uniforms.num_heads; 350 let headNumber = workgroup_id.z % uniforms.num_heads; 351 let m = global_id.y; 352 let n = global_id.x; 353 354 let inputOffset = batchIndex * (uniforms.M * uniforms.K) + m * uniforms.K; 355 let biasOffsetQ = headNumber * uniforms.head_size; 356 let biasOffsetK = uniforms.hidden_size + biasOffsetQ; 357 let biasOffsetV = uniforms.hidden_size + biasOffsetK; 358 359 var valueQ = ${d}(0); 360 var valueK = ${d}(0); 361 var valueV = ${d}(0); 362 for (var w: u32 = 0u; w < uniforms.K; w += TILE_SIZE) { 363 if (m < uniforms.M && w + local_id.x < uniforms.K) {
364 tileInput[TILE_SIZE * local_id.y + local_id.x] = input[inputOffset + w + local_id.x]; 365 } 366 if (n < uniforms.N && w + local_id.y < uniforms.K) { 367 let offset = n + (w + local_id.y) * uniforms.ldb; 368 tileWeightQ[TILE_SIZE * local_id.y + local_id.x] = weight[biasOffsetQ + offset]; 369 tileWeightK[TILE_SIZE * local_id.y + local_id.x] = weight[biasOffsetK + offset]; 370 tileWeightV[TILE_SIZE * local_id.y + local_id.x] = weight[biasOffsetV + offset]; 371 } 372 workgroupBarrier(); 373 for (var k: u32 = 0u; k<TILE_SIZE && w+k < uniforms.K; k++) { 374 let inputTileOffset = TILE_SIZE * local_id.y + k; 375 let weightTileOffset = TILE_SIZE * k + local_id.x; 376 valueQ += tileInput[inputTileOffset] * tileWeightQ[weightTileOffset]; 377 valueK += tileInput[inputTileOffset] * tileWeightK[weightTileOffset]; 378 valueV += tileInput[inputTileOffset] * tileWeightV[weightTileOffset]; 379 } 380 381 workgroupBarrier(); 382 } 383 384 let headOffset = (m * uniforms.N + n) % uniforms.head_size; 385 valueQ += bias[headOffset + biasOffsetQ]; 386 valueK += bias[headOffset + biasOffsetK]; 387 valueV += bias[headOffset + biasOffsetV]; 388 389 let offset = workgroup_id.z * uniforms.M * uniforms.N; 390 if (m < uniforms.M && n < uniforms.N) { 391 let outputIdx = offset + m * uniforms.N + n; 392 output_q[outputIdx] = valueQ; 393 output_k[outputIdx] = valueK; 394 output_v[outputIdx] = valueV; 395 } 396 }`}},{inputs:l,outputs:[-1,-1,-1]})})(t,i);return rb(t,a,n,s,t.inputs[4],void 0,void 0,void 0,t.inputs[5],i)}}),nO=q(()=>{ed(),ng(),nv(),nk(),nC(),rv=(t,r)=>{let i,{inputs:a,outputCount:n}=t,s=(i={...r,outputCount:n},t$(i));if(h.webgpu.validateInputContent&&((t,r)=>{if(!t||5!==t.length)throw Error("BatchNormalization requires 5 inputs");let i=(t,r,i)=>{let a=r.length;if(a!==t.length)throw Error(`${i}: num dimensions != ${a}`);r.forEach((r,a)=>{if(r!==t[a])throw Error(`${i}: dim[${a}] do not match`)})};if(t[0].dims.length>1){let a="NHWC"===r.format?r.spatial?t[0].dims.slice(-1):t[0].dims.slice(-1).concat(t[0].dims.slice(1,t[0].dims.length-1)):t[0].dims.slice(1,r.spatial?2:void 0);i(t[1].dims,a,"Invalid input scale"),i(t[2].dims,a,"Invalid input B"),i(t[3].dims,a,"Invalid input mean"),i(t[4].dims,a,"Invalid input var")}else i(t[1].dims,[1],"Invalid input scale"),i(t[2].dims,[1],"Invalid input B"),i(t[3].dims,[1],"Invalid input mean"),i(t[4].dims,[1],"Invalid input var")})(a,s),r.trainingMode)throw Error("BatchNormalization trainingMode is not supported yet.");t.compute(((t,r)=>{let{epsilon:i,spatial:a,format:n}=r,s=t[0].dims,o=a?tI(s[s.length-1]):1,l="NHWC"===n&&s.length>1?o:1,u=e8.size(s)/o,d=a?s.length:s,c=tR("x",t[0].dataType,t[0].dims,o),h=tR("scale",t[1].dataType,t[1].dims,l),f=tR("bias",t[2].dataType,t[2].dims,l),p=tR("inputMean",t[3].dataType,t[3].dims,l),m=tR("inputVar",t[4].dataType,t[4].dims,l),g=tj("y",t[0].dataType,d,o);return{name:"BatchNormalization",shaderCache:{hint:`${r.epsilon}_${r.format}_${a}_${o}`,inputDependencies:a?["rank","type","type","type","type"]:void 0},getShaderSource:t=>` 397 const epsilon = ${i}; 398 ${t.registerUniform("outputSize","u32").declareVariables(c,h,f,p,m,g)} 399 ${t.mainStart()} 400 ${t.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")} 401 var outputIndices = ${g.offsetToIndices(`global_idx * ${o}`)}; 402 ${(()=>{let t="";if(a)t=`let cOffset = ${1===s.length?"0u":"NHWC"===n?`outputIndices[${s.length-1}] / ${o}`:"outputIndices[1]"};`;else if("NCHW"===n)t=` 403 ${g.indicesSet("outputIndices","0","0")} 404 let cOffset = ${g.indicesToOffset("outputIndices")};`;else{t=`var cIndices = ${h.type.indices}(0); 405 cIndices[0] = outputIndices[${s.length-1}];`;for(let r=1;r<h.rank;r++)t+=`cIndices[${r}] = outputIndices[${r}];`;t+=`let cOffset = ${h.indicesToOffset("cIndices")};`}return t})()} 406 let scale = ${h.getByOffset("cOffset")}; 407 let bias = ${f.getByOffset("cOffset")}; 408 let inputMean = ${p.getByOffset("cOffset")}; 409 let inputVar = ${m.getByOffset("cOffset")}; 410 let x = ${c.getByOffset("global_idx")}; 411 let value = (x - inputMean) * inverseSqrt(inputVar + epsilon) * scale + bias; 412 ${g.setByOffset("global_idx","value")} 413 }`,getRunData:()=>({outputs:[{dims:t[0].dims,dataType:t[0].dataType}],dispatchGroup:{x:Math.ceil(u/64)},programUniforms:a?[{type:12,data:u},...tT(s)]:[{type:12,data:u}]})}})(a,s))}}),nM=q(()=>{nv(),nC(),r_=t=>{(t=>{if(3!==t[0].dims.length)throw Error("input should have 3 dimensions");if(![320,640,1280].includes(t[0].dims[2]))throw Error("number of channels should be 320, 640 or 1280");if(1!==t[1].dims.length)throw Error("bias is expected to have 1 dimensions");if(t[0].dims[2]!==t[1].dims[0])throw Error("last dimension of input and bias are not the same")}
413)(t.inputs),t.compute((t=>{let r=t[0].dims,i=t[0].dims[2],a=e8.size(r)/4,n=t[0].dataType,s=tR("input",n,r,4),o=tR("bias",n,[i],4),l=tR("residual",n,r,4),u=tj("output",n,r,4);return{name:"BiasAdd",getRunData:()=>({outputs:[{dims:r,dataType:t[0].dataType}],dispatchGroup:{x:Math.ceil(a/64)}}),getShaderSource:t=>` 414 const channels = ${i}u / 4; 415 ${t.declareVariables(s,o,l,u)} 416 417 ${t.mainStart()} 418 ${t.guardAgainstOutOfBoundsWorkgroupSizes(a)} 419 let value = ${s.getByOffset("global_idx")} 420 + ${o.getByOffset("global_idx % channels")} + ${l.getByOffset("global_idx")}; 421 ${u.setByOffset("global_idx","value")} 422 }`}})(t.inputs))}}),nP=q(()=>{ng(),nv(),nk(),nC(),rw=(t,r,i,a,n,s=t.dataType,o,l)=>{let u=[{type:12,data:Math.ceil(e8.size(t.dims)/4)}];return o&&u.push(...o),{name:r,shaderCache:{hint:n,inputDependencies:["type"]},getShaderSource:r=>((t,r,i,a,n,s,o)=>{let l=Math.ceil(r/4),u="";u="string"==typeof n?`${n}(a)`:n("a");let d=tR("inputData",i,[l],4),c=tj("outputData",a,[l],4),h=[{name:"vec_size",type:"u32"}];return o&&h.push(...o),` 423 ${t.registerUniforms(h).declareVariables(d,c)} 424 425 ${s??""} 426 427 ${t.mainStart()} 428 ${t.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.vec_size")} 429 430 let a = ${d.getByOffset("global_idx")}; 431 ${c.setByOffset("global_idx",u)} 432 }`})(r,e8.size(t.dims),t.dataType,s,i,a,l),getRunData:r=>({outputs:[{dims:t.dims,dataType:s}],dispatchGroup:{x:Math.ceil(e8.size(r[0].dims)/64/4)},programUniforms:u})}},rx=t=>{t.compute(rw(t.inputs[0],"Abs","abs"))},r$=t=>{t.compute(rw(t.inputs[0],"Acos","acos"))},rS=t=>{t.compute(rw(t.inputs[0],"Acosh","acosh"))},rk=t=>{t.compute(rw(t.inputs[0],"Asin","asin"))},rC=t=>{t.compute(rw(t.inputs[0],"Asinh","asinh"))},rE=t=>{t.compute(rw(t.inputs[0],"Atan","atan"))},rT=t=>{t.compute(rw(t.inputs[0],"Atanh","atanh"))},rI=t=>t$(t),rA=(t,r)=>{let i;switch(r.to){case 10:i="vec4<f16>";break;case 1:i="vec4<f32>";break;case 12:i="vec4<u32>";break;case 6:i="vec4<i32>";break;case 9:i="vec4<bool>";break;default:throw RangeError(`not supported type (specified in attribute 'to' from 'Cast' operator): ${r.to}`)}t.compute(rw(t.inputs[0],"Cast",i,void 0,r.cacheKey,r.to))},rN=(t,r)=>{let i=r||(t=>{let r,i,a=t.length>=2&&0!==t[1].data,n=t.length>=3&&0!==t[2].data;switch(t[0].dataType){case 1:r=a?t[1].getFloat32Array()[0]:-34028234663852886e22,i=n?t[2].getFloat32Array()[0]:34028234663852886e22;break;case 10:r=a?t[1].getUint16Array()[0]:64511,i=n?t[2].getUint16Array()[0]:31743;break;default:throw Error("Unsupport data type")}return t$({min:r,max:i})})(t.inputs),a=tE(t.inputs[0].dataType);t.compute(rw(t.inputs[0],"Clip",t=>`clamp(${t}, vec4<${a}>(uniforms.min), vec4<${a}>(uniforms.max))`,void 0,i.cacheKey,void 0,[{type:t.inputs[0].dataType,data:i.min},{type:t.inputs[0].dataType,data:i.max}],[{name:"min",type:a},{name:"max",type:a}]),{inputs:[0]})},rO=t=>{t.compute(rw(t.inputs[0],"Ceil","ceil"))},rM=t=>{t.compute(rw(t.inputs[0],"Cos","cos"))},rP=t=>{t.compute(rw(t.inputs[0],"Cosh","cosh"))},rR=t=>t$(t),rj=(t,r)=>{let i=tE(t.inputs[0].dataType);t.compute(rw(t.inputs[0],"Elu",t=>`elu_vf32(${t})`,` 433 const elu_alpha_ = ${i}(${r.alpha}); 434 435 fn elu_f32(a: ${i}) -> ${i} { 436 return select((exp(a) - 1.0) * elu_alpha_, a, a >= 0.0); 437 } 438 439 fn elu_vf32(v: vec4<${i}>) -> vec4<${i}> { 440 return vec4(elu_f32(v.x), elu_f32(v.y), elu_f32(v.z), elu_f32(v.w)); 441 }`,r.cacheKey))},rz=(t="f32")=>` 442const r0: ${t} = 0.3275911; 443const r1: ${t} = 0.254829592; 444const r2: ${t} = -0.284496736; 445const r3: ${t} = 1.421413741; 446const r4: ${t} = -1.453152027; 447const r5: ${t} = 1.061405429; 448 449fn erf_vf32(v: vec4<${t}>) -> vec4<${t}> { 450 let absv = abs(v); 451 let x = 1.0 / (1.0 + r0 * absv); 452 return sign(v) * (1.0 - ((((r5 * x + r4) * x + r3) * x + r2) * x + r1) * x * exp(-absv * absv)); 453}`,rD=t=>{let r=tE(t.inputs[0].dataType);t.compute(rw(t.inputs[0],"Erf",t=>`erf_vf32(${t})`,rz(r)))},rB=t=>{t.compute(rw(t.inputs[0],"Exp","exp"))},rL=t=>{t.compute(rw(t.inputs[0],"Floor","floor"))},rU=t=>{let r=tE(t.inputs[0].dataType);t.compute(rw(t.inputs[0],"Gelu",t=>`0.5 * ${t} * (1.0 + erf_vf32(${t} * 0.7071067811865475))`,rz(r)))},rF=(t,r)=>{let i=tE(t.inputs[0].dataType);t.compute(rw(t.inputs[0],"LeakyRelu",t=>
vendor: 1,657 bytes, lines 453-461
453`select(leaky_relu_alpha_ * ${t}, ${t}, ${t} >= vec4<${i}>(0.0))`,`const leaky_relu_alpha_ = ${i}(${r.alpha});`,r.cacheKey))},rq=t=>{t.compute(rw(t.inputs[0],"Not",t=>`!${t}`))},rV=t=>{t.compute(rw(t.inputs[0],"Neg",t=>`-${t}`))},rW=t=>{t.compute(rw(t.inputs[0],"Reciprocal",t=>`1.0/${t}`))},rH=t=>{let r=tE(t.inputs[0].dataType);t.compute(rw(t.inputs[0],"Relu",t=>`select(vec4<${r}>(0.0), ${t}, ${t} > vec4<${r}>(0.0))`))},rG=t=>{t.compute(rw(t.inputs[0],"Sigmoid",t=>`(1.0 / (1.0 + exp(-${t})))`))},rK=t=>t$(t),rY=(t,r)=>{let i=tE(t.inputs[0].dataType);t.compute(rw(t.inputs[0],"HardSigmoid",t=>`max(vec4<${i}>(0.0), min(vec4<${i}>(1.0), ${r.alpha} * ${t} + vec4<${i}>(${r.beta})))`,void 0,r.cacheKey))},rQ=t=>{t.compute(rw(t.inputs[0],"Sin","sin"))},rX=t=>{t.compute(rw(t.inputs[0],"Sinh","sinh"))},rZ=t=>{t.compute(rw(t.inputs[0],"Sqrt","sqrt"))},rJ=t=>{t.compute(rw(t.inputs[0],"Tan","tan"))},r1=t=>`sign(${t}) * (1 - exp(-2 * abs(${t}))) / (1 + exp(-2 * abs(${t})))`,r0=t=>{t.compute(rw(t.inputs[0],"Tanh",r1))},r2=(t="f32")=>` 454const fast_gelu_a: ${t} = 0.5; 455const fast_gelu_b: ${t} = 0.7978845608028654; 456const fast_gelu_c: ${t} = 0.035677408136300125; 457 458fn tanh_v(v: vec4<${t}>) -> vec4<${t}> { 459 return ${r1("v")}; 460} 461`,r3=t=>`(fast_gelu_a + fast_gelu_a * tanh_v(${t} * (fast_gelu_c * ${t} * ${t} + fast_gelu_b))) * ${t}`,r4=t=>{let r=tE(t.inputs[0].dataType);t.compute(rw(t.inputs[0],"FastGelu",r3,r2(r),void 0,t.inputs[0].dataType))},r8=(t,r)=>{let i=tE(t.inputs[0].dataType);return t.compute(rw(t.inputs[0],"ThresholdedRelu",t=>`select(vec4<${i}>(0.0), ${t}, ${t} > thresholded_relu_alpha_)`,`const thresholded_relu_alpha_ = vec4<${i}>(${r.alpha});
461`,r.cacheKey)),0},r7=t=>{t.compute(rw(t.inputs[0],"Log","log"))},r6=t=>`quick_gelu_impl(${t})`,r5=(t,r)=>{let i=tE(t.inputs[0].dataType);t.compute(rw(t.inputs[0],"QuickGelu",r6,((t,r)=>` 462const alpha = vec4<${t}>(${r}); 463const one = ${t}(1.0); 464const zero = ${t}(0.0); 465 466fn quick_gelu_impl(x: vec4<${t}>) -> vec4<${t}> { 467 let v = x *alpha; 468 var x1 : vec4<${t}>; 469 for (var i = 0; i < 4; i = i + 1) { 470 if (v[i] >= zero) { 471 x1[i] = one / (one + exp(-v[i])); 472 } else { 473 x1[i] = one - one / (one + exp(v[i])); 474 } 475 } 476 return x * x1; 477} 478`)(i,r.alpha),r.cacheKey,t.inputs[0].dataType))}}),nR=q(()=>{nv(),nC(),nP(),r9=t=>{(t=>{if(3!==t[0].dims.length)throw Error("input should have 3 dimensions");if(![2560,5120,10240].includes(t[0].dims[2]))throw Error("hidden state should be 2560, 5120 or 10240");if(1!==t[1].dims.length)throw Error("bias is expected to have 1 dimensions");if(t[0].dims[2]!==t[1].dims[0])throw Error("last dimension of input and bias are not the same")})(t.inputs),t.compute((t=>{let r=t[0].dims.slice();r[2]=r[2]/2;let i=tR("input",t[0].dataType,t[0].dims,4),a=tR("bias",t[0].dataType,[t[0].dims[2]],4),n=tj("output",t[0].dataType,r,4),s=e8.size(r)/4,o=tC(t[0].dataType);return{name:"BiasSplitGelu",getRunData:()=>({outputs:[{dims:r,dataType:t[0].dataType}],dispatchGroup:{x:Math.ceil(s/64)}}),getShaderSource:r=>` 479 const M_SQRT2 = sqrt(2.0); 480 const halfChannels = ${t[0].dims[2]/4/2}u; 481 482 ${r.declareVariables(i,a,n)} 483 484 ${rz(o)} 485 486 ${r.mainStart()} 487 ${r.guardAgainstOutOfBoundsWorkgroupSizes(s)} 488 let biasIdx = global_idx % halfChannels; 489 let batchIndex = global_idx / halfChannels; 490 let inputOffset = biasIdx + batchIndex * halfChannels * 2; 491 let valueLeft = input[inputOffset] + bias[biasIdx]; 492 let valueRight = input[inputOffset + halfChannels] + bias[biasIdx + halfChannels]; 493 let geluRight = valueRight * 0.5 * (erf_vf32(valueRight / M_SQRT2) + 1); 494 495 ${n.setByOffset("global_idx","valueLeft * geluRight")} 496 }`}})(t.inputs))}}),nj=q(()=>{ng(),nv(),nC(),ie=(t,r,i,a,n,s)=>{t.compute(((t,r,i,a,n,s,o=i.dataType)=>{let l=i.dims.map(t=>Number(t)??1),u=a.dims.map(t=>Number(t)??1),d=!e8.areEqual(l,u),c=l,h=e8.size(l),f=!1,p=!1,m=[d];if(d){let t=e4.calcShape(l,u,!1);if(!t)throw Error("Can't perform binary op on the given tensors");c=t.slice(),h=e8.size(c);let r=1===e8.size(l),i=1===e8.size(u),a=l.length>0&&l[l.length-1]%4==0,n=u.length>0&&u[u.length-1]%4==0;m.push(r),m.push(i),m.push(a),m.push(n);let s=1;for(let t=1;t<c.length;t++){let r=l[l.length-t];if(r===u[u.length-t])s*=r;else break}s%4==0?(p=!0,f=!0):(r||i||a||n)&&(f=!0)}else f=!0;return m.push(f),{name:t,shaderCache:{hint:r+m.map(t=>t.toString()).join("_"),inputDependencies:["rank","rank"]},getShaderSource:t=>((t,r,i,a,n,s,o,l,u,d,c,h)=>{let f,p;"string"==typeof l?f=p=(t,r)=>`${l}((${t}),(${r}))`:"function"==typeof l?f=p=l:(f=l.scalar,p=l.vector);let m=tj("outputData",c,a.length,4),g=tR("aData",u,r.length,4),b=tR("bData",d,i.length,4),y;if(n)if(s){let t=1===e8.size(r),a=1===e8.size(i),n=r.length>0&&r[r.length-1]%4==0,s=i.length>0&&i[i.length-1]%4==0;y=t||a?m.setByOffset("global_idx",p(t?`${g.type.value}(${g.getByOffset("0")}.x)`:g.getByOffset("global_idx"),a?`${b.type.value}(${b.getByOffset("0")}.x)`:b.getByOffset("global_idx"))):` 497 let outputIndices = ${m.offsetToIndices("global_idx * 4u")}; 498 let offsetA = ${g.broadcastedIndicesToOffset("outputIndices",m)}; 499 let offsetB = ${b.broadcastedIndicesToOffset("outputIndices",m)}; 500 ${m.setByOffset("global_idx",p(o||n?g.getByOffset("offsetA / 4u"):`${g.type.value}(${g.getByOffset("offsetA / 4u")}[offsetA % 4u])`,o||s?b.getByOffset("offsetB / 4u"):`${b.type.value}(${b.getByOffset("offsetB / 4u")}[offsetB % 4u])`))} 501 `}else y=m.setByOffset("global_idx",p(g.getByOffset("global_idx"),b.getByOffset("global_idx")));else{if(!s)throw Error("no necessary to use scalar implementation for element-wise binary op implementation.");let t=(t,r,i="")=>{let a=`aData[indexA${r}][componentA${r}]`,n=`bData[indexB${r}][componentB${r}]`;return` 502 let outputIndices${r} = ${m.offsetToIndices(`global_idx * 4u + ${r}u`)}; 503 let offsetA${r} = ${g.broadcastedIndicesToOffset(`outputIndices${r}`,m)}; 504 let offsetB${r} = ${b.broadcastedIndicesToOffset(`outputIndices${r}`,m)}; 505 let indexA${r} = offsetA${r} / 4u; 506 let indexB${r} = offsetB${r} / 4u; 507 let componentA${r} = offsetA${r} % 4u; 508 let componentB${r} = offsetB${r} % 4u; 509 ${t}[${r}] = ${i}(${f(a,n)}); 510 `};y=9===c?` 511 var data = vec4<u32>(0); 512 ${t("data",0,"u32")} 513 ${t("data",1,"u32")} 514 ${t("data",2,"u32")} 515 ${t("data",3,"u32")}
516 outputData[global_idx] = dot(vec4<u32>(0x1, 0x100, 0x10000, 0x1000000), vec4<u32>(data));`:` 517 ${t("outputData[global_idx]",0)} 518 ${t("outputData[global_idx]",1)} 519 ${t("outputData[global_idx]",2)} 520 ${t("outputData[global_idx]",3)} 521 `}return` 522 ${t.registerUniform("vec_size","u32").declareVariables(g,b,m)} 523 524 ${h??""} 525 526 ${t.mainStart()} 527 ${t.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.vec_size")} 528 ${y} 529 }`})(t,l,u,c,f,d,p,n,i.dataType,a.dataType,o,s),getRunData:()=>({outputs:[{dims:c,dataType:o}],dispatchGroup:{x:Math.ceil(h/64/4)},programUniforms:[{type:12,data:Math.ceil(e8.size(c)/4)},...tT(l,u,c)]})}})(r,n??"",t.inputs[0],t.inputs[1],i,a,s))},it=t=>{ie(t,"Add",(t,r)=>`${t}+${r}`)},ir=t=>{ie(t,"Div",(t,r)=>`${t}/${r}`)},ii=t=>{ie(t,"Equal",{scalar:(t,r)=>`u32(${t}==${r})`,vector:(t,r)=>`vec4<u32>(${t}==${r})`},void 0,void 0,9)},ia=t=>{ie(t,"Mul",(t,r)=>`${t}*${r}`)},is=t=>{let r=tR("input",t.inputs[0].dataType,t.inputs[0].dims).type.value;ie(t,"Pow",{scalar:(t,r)=>`pow_custom(${t},${r})`,vector:(t,r)=>`pow_vector_custom(${t},${r})`},` 530 fn pow_custom(a : ${r}, b : ${r}) -> ${r} { 531 if (b == ${r}(0.0)) { 532 return ${r}(1.0); 533 } else if (a < ${r}(0.0) && f32(b) != floor(f32(b))) { 534 return ${r}(pow(f32(a), f32(b))); // NaN 535 } 536 return select(sign(a), ${r}(1.0), round(f32(abs(b) % ${r}(2.0))) != 1.0) * ${r}(${"i32"===r?"round":""}(pow(f32(abs(a)), f32(b)))); 537 } 538 fn pow_vector_custom(a : vec4<${r}>, b : vec4<${r}>) -> vec4<${r}> { 539 // TODO: implement vectorized pow 540 return vec4<${r}>(pow_custom(a.x, b.x), pow_custom(a.y, b.y), pow_custom(a.z, b.z), pow_custom(a.w, b.w)); 541 } 542 `)},io=t=>{ie(t,"Sub",(t,r)=>`${t}-${r}`)},il=t=>{ie(t,"Greater",{scalar:(t,r)=>`u32(${t}>${r})`,vector:(t,r)=>`vec4<u32>(${t}>${r})`},void 0,void 0,9)},iu=t=>{ie(t,"Less",{scalar:(t,r)=>`u32(${t}<${r})`,vector:(t,r)=>`vec4<u32>(${t}<${r})`},void 0,void 0,9)},id=t=>{ie(t,"GreaterOrEqual",{scalar:(t,r)=>`u32(${t}>=${r})`,vector:(t,r)=>`vec4<u32>(${t}>=${r})`},void 0,void 0,9)},ic=t=>{ie(t,"LessOrEqual",{scalar:(t,r)=>`u32(${t}<=${r})`,vector:(t,r)=>`vec4<u32>(${t}<=${r})`},void 0,void 0,9)}}),nz=q(()=>{ng(),nv(),nk(),nC(),ih=(t,r)=>{let i=t.inputs,a=i[0].dims,n=e8.normalizeAxis(r.axis,a.length);((t,r)=>{if(!t||t.length<1)throw Error("too few inputs");let i=t[0],a=i.dataType,n=i.dims.length;t.forEach((t,s)=>{if(0!==s){if(t.dataType!==a)throw Error("input tensors should be one type");if(t.dims.length!==n)throw Error("input tensors should have the same shape");t.dims.forEach((t,a)=>{if(a!==r&&t!==i.dims[a])throw Error("non concat dimensions must match")})}})})(i,n);let s=a.slice();s[n]=i.reduce((t,r)=>t+(r.dims.length>n?r.dims[n]:0),0);let o=i.filter(t=>e8.size(t.dims)>0);t.compute(((t,r,i,a)=>{let n=e8.size(i),s=Array(t.length),o=Array(t.length),l=0,u=[],d=[],c=[{type:12,data:n}];for(let i=0;i<t.length;++i)l+=t[i].dims[r],s[i]=l,d.push(t[i].dims.length),o[i]=tR(`input${i}`,a,d[i]),u.push("rank"),c.push({type:12,data:s[i]});for(let r=0;r<t.length;++r)c.push(...tT(t[r].dims));c.push(...tT(i));let h=tj("output",a,i.length),f=h.indicesGet("indices",r),p=Array.from(Array(s.length).keys()).map(t=>`uniforms.sizeInConcatAxis${t}`).join(",");return{name:"Concat",shaderCache:{hint:`${r}`,inputDependencies:u},getRunData:()=>({outputs:[{dims:i,dataType:a}],dispatchGroup:{x:Math.ceil(n/64)},programUniforms:c}),getShaderSource:r=>` 543 544 ${(()=>{r.registerUniform("outputSize","u32");for(let i=0;i<t.length;i++)r.registerUniform(`sizeInConcatAxis${i}`,"u32");return r.declareVariables(...o,h)})()} 545 546 ${((t,r)=>` 547 fn calculateInputIndex(index: u32) -> u32 { 548 let sizeInConcatAxis = array<u32, ${t}u>(${r}); 549 for (var i: u32 = 0u; i < ${t}; i += 1u ) { 550 if (index < sizeInConcatAxis[i]) { 551 return i; 552 } 553 } 554 return ${t}u; 555 }`)(s.length,p)} 556 557 ${r.mainStart()} 558 ${r.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")} 559 560 var indices = ${h.offsetToIndices("global_idx")}; 561 562 let inputIndex = calculateInputIndex(${f}); 563 if (inputIndex != 0u) { 564 let sizeInConcatAxis = array<u32, ${s.length}u>(${p}); 565 ${f} -= sizeInConcatAxis[inputIndex - 1u]; 566 } 567 568 ${((t,r)=>{let i=t.length,a=[];for(let n=0;n<i;++n){let s=r.setByOffset("global_idx",t[n].getByIndices("indices"));1===i?a.push(s):0===n?a.push(`if (inputIndex == ${n}u) { ${s} }`):n===i-1?a.push(`else { ${s} }`):a.push(`else if (inputIndex == ${n}) { ${s} }`)}return a.join(` 569`)})(o,h)} 570 }`}})(o,n,s,i[0].dataType),{inputs:o})},ip=t=>t$({axis:t.axis})}),nD=q(()=>{ng(),nv(),im=(t,r,i="f32")=>{switch(t.activation){case"Relu":return`value = max(value, ${r}(0.0));`;case"Sigmoid":return`value = (${r}(1.0) / (${r}(1.0) + exp(-value)));`;case"Clip":return`value = clamp(value, ${r}(${i}(uniforms.clip_min)), ${r}(${i}(uniforms.clip_max)));`;case"HardSigmoid":return`value = max(${r}(0.0), min(${r}(1.0), ${i}(uniforms.alpha) * value + ${i}(uniforms.beta)));`;case"LeakyRelu":return`value = select(${i}(uniforms.alpha) * value, value, value >= ${r}(0.0));`;case"Tanh":return`let e2x = exp(-2.0 * abs(value)); 571 value = sign(value) * (1.0 - e2x) / (1.0 + e2x); 572 `;case"":return"";default:throw Error(`Unsupported activation ${t.activation}`)}},ig=(t,r)=>{"Clip"===t.activation?r.push({type:1,data:t.clipMax},{type:1,data:t.clipMin}):"HardSigmoid"===t.activation?r.push({type:1,data:t.alpha},{type:1,data:t.beta}):"LeakyRelu"===t.activation&&r.push({type:1,data:t.alpha})},ib=(t,r)=>{"Clip"===t.activation?r.push({name:"clip_max",type:"f32"},{name:"clip_min",type:"f32"}):"HardSigmoid"===t.activation?r.push({name:"alpha",type:"f32"},{name:"beta",type:"f32"}):"LeakyRelu"===t.activation&&r.push({name:"alpha",type:"f32"})},iy=t=>{let r=t?.activation||"";if("HardSigmoid"===r){let[i,a]=t?.activation_params||[.2,.5];return{activation:r,alpha:i,beta:a}}if("Clip"===r){let[i,a]=t?.activation_params||[e5,e9];return{activation:r,clipMax:a,clipMin:i}}if("LeakyRelu"===r){let[i]=t?.activation_params||[.01];return{activation:r,alpha:i}}return{activation:r}}}),nB=q(()=>{iv=(t,r)=>{switch(t){case 1:return r;case 2:return`vec2<${r}>`;case 3:return`vec3<${r}>`;case 4:return`vec4<${r}>`;default:throw Error(`${t}-component is not supported.`)}},i_=t=>` 573 ${t?"value = value + getBiasByOutputCoords(coords);":""} 574 `}),nL=q(()=>{iw=t=>` 575fn getIndexFromCoords4D(coords : vec4<i32>, shape : vec4<i32>) -> i32 { 576 return dot(coords, vec4<i32>( 577 shape.y * shape.z * shape.w, shape.z * shape.w, shape.w, 1)); 578} 579fn getOutputIndexFromCoords(coords : vec4<i32>) -> i32 { 580 return dot(coords, vec4<i32>( 581 i32(${t}.x), i32(${t}.y), i32(${t}.z), 1)); 582} 583`}),nU=q(()=>{ng(),nv(),nC(),nD(),ix=(t,r,i,a,n)=>{let s=a-i;return` 584 ${Array.from({length:i}).map((i,o)=>` 585 if (${tM(r.shape,o,r.rank)} != 1) { 586 ${r.indicesSet(t,o,tM(n,o+s,a))} 587 } else { 588 ${r.indicesSet(t,o,0)} 589 }`).join("")} 590`},i$=(t,r,i,a,n=!1,s)=>{let o=t[0].dims,l=t[1].dims,u=o[o.length-2],d=l[l.length-1],c=o[o.length-1],h=tI(d),f=tI(c),p=tI(u),m=e8.size(i)/h/p,g=t.length>2,b=a?a.slice(0,-2):i.slice(0,-2),y=[e8.size(b),u,d],v=[{type:12,data:m},{type:12,data:u},{type:12,data:d}
vendor: 11,710 bytes, lines 590-834
590,{type:12,data:c}];return ig(r,v),v.push(...tT(b,o,l)),g&&v.push(...tT(t[2].dims)),v.push(...tT(y)),{name:"MatMulNaive",shaderCache:{hint:`${r.activation};${h};${f};${p};${n}`,inputDependencies:g?["rank","rank","rank"]:["rank","rank"]},getRunData:()=>({outputs:[{dims:s?s(i):i,dataType:t[0].dataType}],dispatchGroup:{x:Math.ceil(m/64)},programUniforms:v}),getShaderSource:a=>{let s=tD("batch_dims",t[0].dataType,b.length),u=tR("a",t[0].dataType,o.length,f),d=tR("b",t[1].dataType,l.length,h),c=tj("output",t[0].dataType,y.length,h),m=tC(c.type.tensor),v=im(r,c.type.value,m),_=[u,d],w="";if(g){let r=n?h:1;_.push(tR("bias",t[2].dataType,t[2].dims.length,r)),w=`${n?`value += bias[col / ${r}];`:`value += ${c.type.value}(bias[row + i]);`}`}let x=[{name:"output_size",type:"u32"},{name:"M",type:"u32"},{name:"N",type:"u32"},{name:"K",type:"u32"}];return ib(r,x),` 591 ${a.registerUniforms(x).registerInternalVariables(s).declareVariables(..._,c)} 592 ${a.mainStart()} 593 ${a.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} 594 let col = (global_idx % (uniforms.N / ${h})) * ${h}; 595 var index1 = global_idx / (uniforms.N / ${h}); 596 let stride1 = uniforms.M / ${p}; 597 let row = (index1 % stride1) * ${p}; 598 let batch = index1 / stride1; 599 600 ${2===i.length?"":`let batch_indices = ${s.offsetToIndices("batch")};`} 601 602 var a_indices: ${u.type.indices}; 603 ${ix("a_indices",u,u.rank-2,s.rank,"batch_indices")} 604 ${u.indicesSet("a_indices",u.rank-2,0)} 605 ${u.indicesSet("a_indices",u.rank-1,0)} 606 let a_offset = ${u.indicesToOffset("a_indices")}; 607 608 var b_indices: ${d.type.indices}; 609 ${ix("b_indices",d,d.rank-2,s.rank,"batch_indices")} 610 ${d.indicesSet("b_indices",d.rank-2,0)} 611 ${d.indicesSet("b_indices",d.rank-1,0)} 612 let b_offset = ${d.indicesToOffset("b_indices")}; 613 var values: array<${c.type.value}, ${p}>; 614 for (var k: u32 = 0u; k < uniforms.K; k = k + ${f}) { 615 ${(()=>{let t=`var a_data: ${u.type.value};`;for(let r=0;r<f;r++)t+=` 616 let b_data${r} = b[(b_offset + (k + ${r}) * uniforms.N + col) / ${h}];`;for(let r=0;r<p;r++){t+=`a_data = a[(a_offset + (row + ${r}) * uniforms.K + k) / ${f}];`;for(let i=0;i<f;i++)t+=` 617 values[${r}] = fma(${d.type.value}(a_data${1===f?"":`[${i}]`}), b_data${i}, values[${r}]); 618`}return t})()} 619 } 620 for (var i = 0u; i < ${p}u; i++) { 621 var value = values[i]; 622 ${w} 623 ${v} 624 let cur_indices = ${c.type.indices}(batch, row + i, col); 625 let offset = ${c.indicesToOffset("cur_indices")}; 626 ${c.setByOffset(`offset / ${h}`,"value")}; 627 } 628 } 629 `}}}}),nF=q(()=>{ng(),nv(),nC(),nD(),nU(),nB(),iS=(t,r,i="f32",a,n=!1,s=32,o=!1,l=32)=>{let u=r[1]*t[1],d=r[0]*t[0],c=n?u:s,h=n?s:u,f=c/r[0],p=s/r[1];if(!((n&&4===f&&4===t[1]||!n&&(3===f||4===f))&&c%r[0]==0&&s%r[1]==0&&4===t[0]))throw Error(`If transposeA ${n} is true, innerElementSize ${f} and workPerThread[1] ${t[1]} must be 4. 630 Otherwise, innerElementSize ${f} must be 3 or 4. 631 tileAWidth ${c} must be divisible by workgroupSize[0]${r[0]}. tileInner ${s} must be divisible by workgroupSize[1] ${r[1]}. colPerThread ${t[0]} must be 4.`);return` 632var<workgroup> mm_Asub: array<array<vec${f}<${i}>, ${c/f}>, ${h}>; 633var<workgroup> mm_Bsub: array<array<vec4<${i}>, ${d/t[0]}>, ${s}>; 634 635const rowPerThread = ${t[1]}; 636const colPerThread = ${t[0]}; 637const innerElementSize = ${f}; 638const tileInner = ${s}; 639 640@compute @workgroup_size(${r[0]}, ${r[1]}, ${r[2]}) 641fn main(@builtin(local_invocation_id) localId : vec3<u32>, 642 @builtin(global_invocation_id) globalId : vec3<u32>, 643 @builtin(workgroup_id) workgroupId : vec3<u32>) { 644 let localRow = i32(localId.y); 645 let tileRow = localRow * rowPerThread; 646 let tileCol = i32(localId.x); 647 648 let globalRow =i32(globalId.y) * rowPerThread; 649 let globalCol = i32(globalId.x); 650 let batch = ${o?"0":"i32(globalId.z)"}; 651 ${a?`let batchIndices = ${a.offsetToIndices("u32(batch)")};`:""} 652 let globalRowStart = i32(workgroupId.y) * ${u}; 653 654 let num_tiles = ${o?`${Math.ceil(l/s)}`:"(uniforms.dim_inner - 1) / tileInner + 1"}; 655 var kStart = ${o?`i32(globalId.z) * ${l}`:"0"}; 656 657 var acc: array<vec4<${i}>, rowPerThread>; 658 659 // Loop over shared dimension. 660 let tileRowB = localRow * ${p}; 661 for (var t = 0; t < num_tiles; t = t + 1) { 662 // Load one tile of A into local memory. 663 for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) { 664 let inputRow = tileRow + innerRow; 665 let inputCol = tileCol; 666 ${((t,r)=>t?` 667 mm_Asub[inputRow][inputCol] = mm_readA(batch, 668 kStart + inputRow, 669 globalRowStart / innerElementSize + inputCol${r?", batchIndices":""}); 670 `:` 671 mm_Asub[inputRow][inputCol] = mm_readA(batch, 672 globalRow + innerRow, 673 kStart / innerElementSize + inputCol${r?", batchIndices":""}); 674 `)(n,a)} 675 } 676 677 // Load one tile of B into local memory. 678 for (var innerRow = 0; innerRow < ${p}; innerRow = innerRow + 1) { 679 let inputRow = tileRowB + innerRow; 680 let inputCol = tileCol; 681 mm_Bsub[inputRow][inputCol] = mm_readB(batch, kStart + inputRow, globalCol${a?", batchIndices":""}); 682 } 683 kStart = kStart + tileInner; 684 workgroupBarrier(); 685 686 // Compute acc values for a single thread. 687 for (var k = 0; k < tileInner / innerElementSize; k = k + 1) { 688 let BCached0 = mm_Bsub[k * innerElementSize][tileCol]; 689 let BCached1 = mm_Bsub[k * innerElementSize + 1][tileCol]; 690 let BCached2 = mm_Bsub[k * innerElementSize + 2][tileCol]; 691 ${3===f?"":"let BCached3 = mm_Bsub[k * innerElementSize + 3][tileCol];"} 692 693 ${((t,r)=>t?` 694 let ACached0 = mm_Asub[k * innerElementSize][localRow]; 695 let ACached1 = mm_Asub[k * innerElementSize + 1][localRow]; 696 let ACached2 = mm_Asub[k * innerElementSize + 2][localRow]; 697 ${3===r?"":"let ACached3 = mm_Asub[k * innerElementSize + 3][localRow];"} 698 for (var i = 0; i < rowPerThread; i = i + 1) { 699 acc[i] = BCached0 * ACached0[i] + acc[i]; 700 acc[i] = BCached1 * ACached1[i] + acc[i]; 701 acc[i] = BCached2 * ACached2[i] + acc[i]; 702 ${3===r?"":"acc[i] = BCached3 * ACached3[i] + acc[i];"} 703 }`:` 704 for (var i = 0; i < rowPerThread; i = i + 1) { 705 let ACached = mm_Asub[tileRow + i][k]; 706 acc[i] = BCached0 * ACached.x + acc[i]; 707 acc[i] = BCached1 * ACached.y + acc[i]; 708 acc[i] = BCached2 * ACached.z + acc[i]; 709 ${3===r?"":"acc[i] = BCached3 * ACached.w + acc[i];"} 710 }`)(n,f)} 711 } 712 713 workgroupBarrier(); 714 } 715 716 for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) { 717 mm_write(batch, globalRow + innerRow, globalCol, acc[innerRow]); 718 } 719}`},ik=(t,r)=>t?` 720 mm_Asub[inputRow][inputCol] = mm_readA(batch, 721 kStart + inputRow, 722 globalRowStart + inputCol${r?", batchIndices":""}); 723 `:` 724 mm_Asub[inputRow][inputCol] = mm_readA(batch, 725 globalRowStart + inputRow, 726 kStart + inputCol${r?", batchIndices":""}); 727 `,iC=(t,r,i="f32",a,n=!1,s=32,o=!1,l=32,u=!1)=>{let d=t[1]*r[1],c=t[0]*r[0],h=n?d:s,f=n?s:d;if(f%r[1]!=0||h%r[0]!=0||s%r[1]!=0)throw Error(`tileAHight ${f} must be divisible by workgroupSize[1]${r[1]}, tileAWidth ${h} must be divisible by workgroupSize[0]${r[0]}, tileInner ${s} must be divisible by workgroupSize[1]${r[1]}`);let p=f/r[1],m=h/r[0],g=s/r[1],b=u?` 728 let localRow = i32(localId.y); 729 let localCol = i32(localId.x); 730 let globalRowStart = i32(workgroupId.y) * ${d}; 731 let globalColStart = i32(workgroupId.x) * ${c}; 732 733 // Loop over shared dimension. 734 for (var t = 0; t < num_tiles; t = t + 1) { 735 // Load one tile of A into local memory. 736 for (var inputRow = localRow; inputRow < ${f}; inputRow = inputRow + ${r[1]}) { 737 for (var inputCol = localCol; inputCol < ${h}; inputCol = inputCol + ${r[0]}) { 738 ${ik(n,a)} 739 } 740 } 741 // Load one tile of B into local memory. 742 for (var inputRow = localRow; inputRow < ${s}; inputRow = inputRow + ${r[1]}) { 743 for (var inputCol = localCol; inputCol < ${c}; inputCol = inputCol + ${r[0]}) { 744 mm_Bsub[inputRow][inputCol] = mm_readB(batch, 745 kStart + inputRow, 746 globalColStart + inputCol${a?", batchIndices":""}); 747 } 748 } 749 kStart = kStart + tileInner; 750 workgroupBarrier(); 751 752 // Compute acc values for a single thread. 753 var BCached : array<${i}, colPerThread>; 754 for (var k = 0; k < tileInner; k = k + 1) { 755 for (var inner = 0; inner < colPerThread; inner = inner + 1) { 756 BCached[inner] = mm_Bsub[k][localCol + inner * ${r[0]}]; 757 } 758 for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) { 759 let ACached = ${n?`mm_Asub[k][localRow + innerRow * ${r[1]}];`:`mm_Asub[localRow + innerRow * ${r[1]}][k];`} 760 for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) { 761 acc[innerRow][innerCol] = acc[innerRow][innerCol] + 762 ACached * BCached[innerCol]; 763 } 764 } 765 } 766 workgroupBarrier(); 767 } 768 for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) { 769 let gRow = globalRowStart + localRow + innerRow * ${r[1]}; 770 for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) { 771 let gCol = globalColStart + localCol + innerCol * ${r[0]}; 772 mm_write(batch, gRow, gCol, acc[innerRow][innerCol]); 773 } 774 } 775 `:` 776let tileRow = i32(localId.y) * rowPerThread; 777let tileCol = i32(localId.x) * colPerThread; 778 779let globalRow = i32(globalId.y) * rowPerThread; 780let globalCol = i32(globalId.x) * colPerThread; 781let globalRowStart = i32(workgroupId.y) * ${d}; 782 783let tileRowA = i32(localId.y) * ${p}; 784let tileColA = i32(localId.x) * ${m}; 785let tileRowB = i32(localId.y) * ${g}; 786// Loop over shared dimension. 787for (var t = 0; t < num_tiles; t = t + 1) { 788 // Load one tile of A into local memory. 789 for (var innerRow = 0; innerRow < ${p}; innerRow = innerRow + 1) { 790 for (var innerCol = 0; innerCol < ${m}; innerCol = innerCol + 1) { 791 let inputRow = tileRowA + innerRow; 792 let inputCol = tileColA + innerCol; 793 ${ik(n,a)} 794 } 795 } 796 797 // Load one tile of B into local memory. 798 for (var innerRow = 0; innerRow < ${g}; innerRow = innerRow + 1) { 799 for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) { 800 let inputRow = tileRowB + innerRow; 801 let inputCol = tileCol + innerCol; 802 mm_Bsub[inputRow][inputCol] = mm_readB(batch, 803 kStart + inputRow, 804 globalCol + innerCol${a?", batchIndices":""}); 805 } 806 } 807 kStart = kStart + tileInner; 808 workgroupBarrier(); 809 810 // Compute acc values for a single thread. 811 var BCached : array<${i}, colPerThread>; 812 for (var k = 0; k < tileInner; k = k + 1) { 813 for (var inner = 0; inner < colPerThread; inner = inner + 1) { 814 BCached[inner] = mm_Bsub[k][tileCol + inner]; 815 } 816 817 for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) { 818 ${n?"let ACached = mm_Asub[k][tileRow + innerRow];":"let ACached = mm_Asub[tileRow + innerRow][k];"} 819 for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) { 820 acc[innerRow][innerCol] = acc[innerRow][innerCol] + ACached * BCached[innerCol]; 821 } 822 } 823 } 824 825 workgroupBarrier(); 826} 827 828for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) { 829 for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) { 830 mm_write(batch, globalRow + innerRow, globalCol + innerCol, 831 acc[innerRow][innerCol]); 832 } 833} 834`;return`
835 var<workgroup> mm_Asub : array<array<${i}, ${h}>, ${f}>; 836 var<workgroup> mm_Bsub : array<array<${i}, ${c}>, ${s}>; 837 const rowPerThread = ${t[1]}; 838 const colPerThread = ${t[0]}; 839 const tileInner = ${s}; 840 841@compute @workgroup_size(${r[0]}, ${r[1]}, ${r[2]}) 842fn main(@builtin(local_invocation_id) localId : vec3<u32>, 843 @builtin(global_invocation_id) globalId : vec3<u32>, 844 @builtin(workgroup_id) workgroupId : vec3<u32>) { 845 let batch = ${o?"0":"i32(globalId.z)"}; 846 ${a?`let batchIndices = ${a.offsetToIndices("u32(batch)")};`:""} 847 let num_tiles = ${o?`${Math.ceil(l/s)}`:"(uniforms.dim_inner - 1) / tileInner + 1"}; 848 var kStart = ${o?`i32(globalId.z) * ${l}`:"0"}; 849 850 var acc : array<array<${i}, colPerThread>, rowPerThread>; 851 ${b} 852 } 853`},iE=(t,r,i,a,n=!1,s)=>{let o=t[0].dims,l=t[1].dims,u=o.slice(0,-2),d=l.slice(0,-2),c=a?a.slice(0,-2):i.slice(0,-2),h=e8.size(c),f=o[o.length-2],p=o[o.length-1],m=l[l.length-1],g=p%4==0&&m%4==0,b=f<=8?[4,1,1]:[4,4,1],y=[8,8,1],v=[Math.ceil(m/y[0]/b[0]),Math.ceil(f/y[1]/b[1]),Math.ceil(h/y[2]/b[2])],_=g?4:1,w=[...u,f,p/_],x=w.length,$=[...d,p,m/_],S=$.length,k=[h,f,m/_],C=[{type:6,data:f},{type:6,data:m},{type:6,data:p}];ig(r,C),C.push(...tT(c,w,$));let E=["rank","rank"],T=t.length>2;return T&&(C.push(...tT(t[2].dims)),E.push("rank")),C.push(...tT(k)),{name:"MatMul",shaderCache:{hint:`${b};${r.activation};${g};${n}`,inputDependencies:E},getRunData:()=>({outputs:[{dims:s?s(i):i,dataType:t[0].dataType}],dispatchGroup:{x:v[0],y:v[1],z:v[2]},programUniforms:C}),getShaderSource:i=>{let a=c.length,s=tD("batchDims",t[0].dataType,a,1),o=tC(t[0].dataType),l=tR("a",t[0].dataType,x,_),u=tR("b",t[1].dataType,S,_),d=tj("result",t[0].dataType,k.length,_),h=[l,u];if(T){let r=n?_:1;h.push(tR("bias",t[2].dataType,t[2].dims.length,r))}let f=[{name:"dim_a_outer",type:"i32"},{name:"dim_b_outer",type:"i32"},{name:"dim_inner",type:"i32"}];ib(r,f);let p=tC(d.type.tensor),m=((t,r,i,a,n=!1)=>{let[s,o,l,u]=a,d=tC(a[0].type.tensor);return` 854 fn mm_readA(batch: i32, row: i32, colIn: i32, batchIndices: ${s.type.indices}) -> ${iv(t,d)} { 855 var value = ${iv(t,d)}(0.0); 856 let col = colIn * ${t}; 857 if(row < uniforms.dim_a_outer && col < uniforms.dim_inner) 858 { 859 var aIndices: ${o.type.indices}; 860 ${ix("aIndices",o,o.rank-2,s.rank,"batchIndices")} 861 ${o.indicesSet("aIndices",o.rank-2,"u32(row)")} 862 ${o.indicesSet("aIndices",o.rank-1,"u32(colIn)")} 863 value = ${o.getByIndices("aIndices")}; 864 } 865 return value; 866 } 867 868 fn mm_readB(batch: i32, row: i32, colIn: i32, batchIndices: ${s.type.indices}) -> ${iv(t,d)} { 869 var value = ${iv(t,d)}(0.0); 870 let col = colIn * ${t}; 871 if(row < uniforms.dim_inner && col < uniforms.dim_b_outer) 872 { 873 var bIndices: ${l.type.indices}; 874 ${ix("bIndices",l,l.rank-2,s.rank,"batchIndices")} 875 ${l.indicesSet("bIndices",l.rank-2,"u32(row)")} 876 ${l.indicesSet("bIndices",l.rank-1,"u32(colIn)")} 877 value = ${l.getByIndices("bIndices")}; 878 } 879 return value; 880 } 881 882 fn mm_write(batch: i32, row: i32, colIn: i32, valueIn: ${iv(t,d)}) { 883 let col = colIn * ${t}; 884 if (row < uniforms.dim_a_outer && col < uniforms.dim_b_outer) { 885 var value = valueIn; 886 let coords = vec3<i32>(batch, row, colIn); 887 ${r?`value = value + ${n?"bias[colIn]":`${iv(t,d)}(bias[row])`};`:""} 888 ${i} 889 ${u.setByIndices("vec3<u32>(coords)","value")} 890 } 891 } 892 `})(_,T,im(r,d.type.value,p),[s,l,u,d],n);return` 893 ${i.registerUniforms(f).registerInternalVariables(s).declareVariables(...h,d)} 894 ${m} 895 ${g?iS(b,y,o,s):iC(b,y,o,s)} 896 `}}}}),nq=q(()=>{ng(),ny(),nC(),nD(),nB(),nL(),nF(),iT=(t,r,i,a,n,s,o,l,u)=>{let d="NHWC"===r.format,c=d?t[0].dims[3]:t[0].dims[1],h=i[0],f=d?i[2]:i[3],p=d?i[1]:i[2],m=d?i[3]:i[1],g=d&&(c%4==0||c%3==0)&&m%4==0,b=d?m:f*p,y=d?f*p:m,v=[8,8,1],_=a<=8?[4,1,1]:[4,4,1],w=[Math.ceil(b/v[0]/_[0]),Math.ceil(y/v[1]/_[1]),Math.ceil(h/v[2]/_[2])];e2("verbose",()=>`[conv2d_mm_webgpu] dispatch = ${w}`);let x=g?d&&c%4!=0?3:4:1,$=v[1]*_[1],S=v[0]*_[0],k=Math.max(v[0]*x,v[1]),C=a%$==0,E=n%S==0,T=s%k==0,I=g?[x,4,4]:[1,1,1],A=[{type:6,data:a},{type:6,data:n},{type:6,data:s},{type:6,data:[r.pads[0],r.pads[1]]},{type:6,data:r.strides},{type:6,data:r.dilations}];ig(r,A),A.push(...tT(t[0].dims,t[1].dims));let N=["rank","rank"];
vendor: 4,112 bytes, lines 896-967
896return o&&(A.push(...tT(t[2].dims)),N.push("rank")),A.push(...tT(i)),{name:"Conv2DMatMul",shaderCache:{hint:`${r.cacheKey};${x};${g};${C};${E};${T};${$};${S};${k}`,inputDependencies:N},getRunData:()=>({outputs:[{dims:u?u(i):i,dataType:t[0].dataType}],dispatchGroup:{x:w[0],y:w[1],z:w[2]},programUniforms:A}),getShaderSource:a=>{let n=[{name:"dim_a_outer",type:"i32"},{name:"dim_b_outer",type:"i32"},{name:"dim_inner",type:"i32"},{name:"pad",type:"i32",length:2},{name:"stride",type:"i32",length:2},{name:"dilation",type:"i32",length:2}];ib(r,n);let s=g?4:1,u=tC(t[0].dataType),c=` 897 fn setOutputAtIndex(flatIndex : i32, value : ${g?`vec4<${u}>`:u}) { 898 result[flatIndex] = ${g?`vec4<${u}>`:u}(value); 899 } 900 fn setOutputAtCoords(d0 : i32, d1 : i32, d2 : i32, d3 : i32, value : ${g?`vec4<${u}>`:u}) { 901 let flatIndex = getOutputIndexFromCoords(vec4<i32>(d0, d1, d2, d3)); 902 setOutputAtIndex(flatIndex ${g?"/ 4":""}, value); 903 }`,h=[tR("x",t[0].dataType,t[0].dims.length,3===x?1:x),tR("w",t[1].dataType,t[1].dims.length,s)],f=tj("result",t[0].dataType,i.length,s);if(o){let r=tR("bias",t[2].dataType,t[2].dims.length,s);h.push(r),c+=` 904 fn getBiasByOutputCoords(coords : vec4<i32>) -> ${g?`vec4<${u}>`:u} { 905 return bias[coords.${d?"w":"y"}${g?"/ 4":""}]; 906 }`}return` 907 ${iw("uniforms.result_strides")} 908 //struct Uniforms { xShape : vec4<i32>, wShape : vec4<i32>, outShape : vec4<i32>, 909 // outShapeStrides: vec3<i32>, filterDims : vec2<i32>, pad : vec2<i32>, stride : vec2<i32>, 910 // dilation : vec2<i32>, dimAOuter : i32, dimBOuter : i32, dimInner : i32 }; 911 ${a.registerUniforms(n).declareVariables(...h,f)} 912 ${c} 913 ${((t,r,i,a,n=!1,s,o=4,l=4,u=4,d="f32")=>{let c=t=>{switch(t){case 1:return"return w[row * i32(uniforms.w_shape[3]) + colIn];";case 4:return"return w[row * i32(uniforms.w_shape[3]) / 4 + colIn];";default:throw Error(`innerElementSize ${t} is not supported.`)}},h=t?` 914 let coord = vec4<i32>(batch, xRow, xCol, xCh); 915 `:` 916 let coord = vec4<i32>(batch, xCh, xRow, xCol); 917 `,f=t?` 918 let coords = vec4<i32>( 919 batch, 920 row / outWidth, 921 row % outWidth, 922 col); 923 `:` 924 let coords = vec4<i32>( 925 batch, 926 row, 927 col / outWidth, 928 col % outWidth); 929 `,p=t?"row":"col",m=t?"col":"row",g=` 930 let inChannels = i32(uniforms.w_shape[2]); 931 let outWidth = ${t?"i32(uniforms.result_shape[2])":"i32(uniforms.result_shape[3])"}; 932 let outRow = ${p} / outWidth; 933 let outCol = ${p} % outWidth; 934 935 let WRow = ${m} / (i32(uniforms.w_shape[1]) * inChannels); 936 let WCol = ${m} / inChannels % i32(uniforms.w_shape[1]); 937 let xRow = outRow * uniforms.stride[0] + uniforms.dilation[0] * WRow - uniforms.pad[0]; 938 let xCol = outCol * uniforms.stride[1] + uniforms.dilation[1] * WCol - uniforms.pad[1]; 939 let xCh = ${m} % inChannels; 940 var resData = ${iv(o,d)}(0.0); 941 // The bounds checking is always needed since we use it to pad zero for 942 // the 'same' padding type. 943 if (xRow >= 0 && xRow < ${t?"i32(uniforms.x_shape[1])":"i32(uniforms.x_shape[2])"} && xCol >= 0 && xCol < ${t?"i32(uniforms.x_shape[2])":"i32(uniforms.x_shape[3])"}) { 944 ${h} 945 let xIndex = getIndexFromCoords4D(coord, vec4<i32>(uniforms.x_shape)); 946 ${(t=>{switch(t){case 1:return"resData = x[xIndex];";case 3:return`resData = vec3<${d}>(x[xIndex], x[xIndex + 1], x[xIndex + 2]);`;case 4:return"resData = x[xIndex / 4];";default:throw Error(`innerElementSize ${t} is not supported.`)}})(o)} 947 } 948 return resData;`,b=t?r&&a?` 949 let col = colIn * ${o}; 950 ${g}`:` 951 let col = colIn * ${o}; 952 if (row < uniforms.dim_a_outer && col < uniforms.dim_inner) { 953 ${g} 954 } 955 return ${iv(o,d)}(0.0);`:a&&i?` 956 let col = colIn * ${o}; 957 ${g}`:` 958 let col = colIn * ${o}; 959 if (row < uniforms.dim_inner && col < uniforms.dim_b_outer) { 960 ${g} 961 } 962 return ${iv(o,d)}(0.0);`,y=t?a&&i?c(l):` 963 let col = colIn * ${l}; 964 if (row < uniforms.dim_inner && col < uniforms.dim_b_outer) { 965 ${c(l)} 966 } 967 return ${iv(l,d)}(0.0);`:`
968 let col = colIn * ${l}; 969 if (row < uniforms.dim_inner && col < uniforms.dim_a_outer) { 970 ${c(l)} 971 } 972 return ${iv(l,d)}(0.0);`,v=iv(u,d),_=t?iv(o,d):iv(l,d),w=t?iv(l,d):iv(o,d),x=im(s,v,d);return` 973 fn mm_readA(batch: i32, row : i32, colIn : i32) -> ${_} { 974 ${t?b:y} 975 } 976 977 fn mm_readB(batch: i32, row : i32, colIn : i32) -> ${w} { 978 ${t?y:b} 979 } 980 981 fn mm_write(batch: i32, row : i32, colIn : i32, valueIn : ${v}) { 982 let col = colIn * ${u}; 983 if (row < uniforms.dim_a_outer && col < uniforms.dim_b_outer) 984 { 985 var value = valueIn; 986 let outWidth = ${t?"i32(uniforms.result_shape[2])":"i32(uniforms.result_shape[3])"}; 987 ${f} 988 ${i_(n)} 989 ${x} 990 setOutputAtCoords(coords[0], coords[1], coords[2], coords[3], value); 991 } 992 }`})(d,C,E,T,o,r,I[0],I[1],I[2],u)} 993 ${g?iS(_,v,u,void 0,!d,k):iC(_,v,u,void 0,!d,k,!1,void 0,l)}`}}}}),nV=q(()=>{ng(),ny(),nv(),nC(),nD(),nB(),iI=t=>"number"==typeof t?[t,t,t]:t,iA=(t,r)=>r<=1?t:t+(t-1)*(r-1),iN=(t,r,i,a,n)=>{null==n&&(n=((t,r,i,a=1)=>{let n=iA(r,a);return Math.floor((t[0]*(i-1)-i+n)/2)})(t,r[0],a[0]));let s=[0,0,0,i];for(let i=0;i<3;i++)t[i]+2*n>=r[i]&&(s[i]=Math.trunc((t[i]-r[i]+2*n)/a[i]+1));return s},iO=(t,r,i,a,n,s=!1,o="channelsLast")=>{let l,u,d,c,h;if("channelsLast"===o)[l,u,d,c,h]=t;else if("channelsFirst"===o)[l,h,u,d,c]=t;else throw Error(`Unknown dataFormat ${o}`);let[f,,p,m,g]=r,[b,y,v]=iI(i),[_,w,x]=iI(a),$=iA(p,_),S=iA(m,w),k=iA(g,x),{padInfo:C,outDepth:E,outHeight:T,outWidth:I}=((t,r,i,a,n,s,o,l,u,d)=>{let c,h,f,p;if("VALID"===t&&(t=0),"number"==typeof t){c={top:t,bottom:t,left:t,right:t,front:t,back:t};let m=iN([r,i,a,1],[l,u,d],1,[n,s,o],t);h=m[0],f=m[1],p=m[2]}else if(Array.isArray(t)){if(!t.every((t,r,i)=>t===i[0]))throw Error(`Unsupported padding parameter: ${t}`);c={top:t[0],bottom:t[1],left:t[2],right:t[3],front:t[4],back:t[5]};let m=iN([r,i,a,1],[l,u,d],1,[n,s,o],t[0]);h=m[0],f=m[1],p=m[2]}else if("SAME_UPPER"===t){h=Math.ceil(r/n),f=Math.ceil(i/s),p=Math.ceil(a/o);let t=(h-1)*n+l-r,m=(f-1)*s+u-i,g=(p-1)*o+d-a,b=Math.floor(t/2),y=Math.floor(m/2),v=Math.floor(g/2);c={top:y,bottom:m-y,left:v,right:g-v,front:b,back:t-b}}else throw Error(`Unknown padding parameter: ${t}`);return{padInfo:c,outDepth:h,outHeight:f,outWidth:p}})(n,u,d,c,b,y,v,$,S,k),A=s?f*h:f,N=[0,0,0,0,0];return"channelsFirst"===o?N=[l,A,E,T,I]:"channelsLast"===o&&(N=[l,E,T,I,A]),{batchSize:l,dataFormat:o,inDepth:u,inHeight:d,inWidth:c,inChannels:h,outDepth:E,outHeight:T,outWidth:I,outChannels:A,padInfo:C,strideDepth:b,strideHeight:y,strideWidth:v,filterDepth:p,filterHeight:m,filterWidth:g,effectiveFilterDepth:$,effectiveFilterHeight:S,effectiveFilterWidth:k,dilationDepth:_,dilationHeight:w,dilationWidth:x,inShape:t,outShape:N,filterShape:r}},iM=(t,r,i,a,n,s)=>{let o="channelsLast"===s,l=(o?t[0].dims[3]:t[0].dims[1],[Math.ceil((t=>{let r=1;for(let i=0;i<t.length;i++)r*=t[i];return r})(({x:i.map((t,r)=>r)}).x.map(t=>i[t]))/64),1,1]);e2("verbose",()=>`[conv3d_naive_webgpu] dispatch = ${l}`);let u=[{type:12,data:e8.size(i)},{type:12,data:a},{type:12,data:n},{type:12,data:r.strides},{type:12,data:r.dilations}];ig(r,u),u.push(...tT(t[0].dims,t[1].dims));let d=["rank","rank"],c=3===t.length;return c&&(u.push(...tT(t[2].dims)),d.push("rank")),u.push(...tT(i)),{name:"Conv3DNaive",shaderCache:{hint:`${r.cacheKey};${o};1;${c}`,inputDependencies:d},getRunData:()=>({outputs:[{dims:i,dataType:t[0].dataType}],dispatchGroup:{x:l[0],y:l[1],z:l[2]},programUniforms:u}),getShaderSource:s=>{let l=[{name:"output_size",type:"u32"},{name:"filter_dims",type:"u32",length:a.length},{name:"pads",type:"u32",length:n.length},{name:"strides",type:"u32",length:r.strides.length},{name:"dilations",type:"u32",length:r.dilations.length}];ib(r,l);let u=tC(t[0].dataType),d=tR("x",t[0].dataType,t[0].dims.length,1),h=tR("W",t[1].dataType,t[1].dims.length,1),f=[d,h],p=tj("result",t[0].dataType,i.length,1),m="";if(c){let r=tR("bias",t[2].dataType,t[2].dims.length,1);f.push(r),m+=` 994 fn getBiasByOutputCoords(coords : array<u32, 5>) -> ${u} { 995 return bias[${o?tM("coords",4,5):tM("coords",1,5)}]; 996 }`}let g=iv(1,u),b=im(r,g,u);return` 997 ${m} 998 fn getX(d0 : u32, d1 : u32, d2 : u32, d3 : u32, d4 : u32) -> f32 { 999 let aIndices = array<u32, 5>(d0, d1, d2, d3, d4); 1000 return ${d.getByIndices("aIndices")}; 1001 } 1002 fn getW(d0 : u32, d1 : u32, d2 : u32, d3 : u32, d4 : u32) -> f32 { 1003 let aIndices = array<u32, 5>(d0, d1, d2, d3, d4); 1004 return ${h.getByIndices("aIndices")}; 1005 } 1006 ${s.registerUniforms(l).declareVariables(...f,p)} 1007 ${s.mainStart()} 1008 ${s.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} 1009 let coords = ${p.offsetToIndices("global_idx")}; 1010 let batch = ${tM("coords",0,d.rank)}; 1011 let d2 = ${o?tM("coords",d.rank-1,d.rank):tM("coords",1,d.rank)}; 1012 let xFRCCorner = vec3<u32>(${o?tM("coords",1,d.rank):tM("coords",2,d.rank)}, 1013 ${o?tM("coords",2,d.rank):tM("coords",3,d.rank)}, 1014 ${o?tM("coords",3,d.rank):tM("coords",4,d.rank)}) * uniforms.strides - uniforms.pads; 1015 let xFCorner = xFRCCorner.x; 1016 let xRCorner = xFRCCorner.y; 1017 let xCCorner = xFRCCorner.z; 1018 let xShapeY = ${o?tM("uniforms.x_shape",1,d.rank):tM("uniforms.x_shape",2,d.rank)}; 1019 let xShapeZ = ${o?tM("uniforms.x_shape",2,d.rank):tM("uniforms.x_shape",3,d.rank)}; 1020 let xShapeW = ${o?tM("uniforms.x_shape",3,d.rank):tM("uniforms.x_shape",4,d.rank)}; 1021 let xShapeU = ${o?tM("uniforms.x_shape",4,d.rank):tM("uniforms.x_shape",1,d.rank)};
1022 let inputDepthNearestVec4 = (xShapeU / 4) * 4; 1023 let inputDepthVec4Remainder = xShapeU % 4; 1024 1025 var value = 0.0; 1026 for (var wF = 0u; wF < uniforms.filter_dims[0]; wF++) { 1027 let xF = xFCorner + wF * uniforms.dilations[0]; 1028 if (xF < 0 || xF >= xShapeY) { 1029 continue; 1030 } 1031 1032 for (var wR = 0u; wR < uniforms.filter_dims[1]; wR++) { 1033 let xR = xRCorner + wR * uniforms.dilations[1]; 1034 if (xR < 0 || xR >= xShapeZ) { 1035 continue; 1036 } 1037 1038 for (var wC = 0u; wC < uniforms.filter_dims[2]; wC++) { 1039 let xC = xCCorner + wC * uniforms.dilations[2]; 1040 if (xC < 0 || xC >= xShapeW) { 1041 continue; 1042 } 1043 1044 for (var d1 = 0u; d1 < inputDepthNearestVec4; d1 += 4) { 1045 ${o?`let xValues = vec4<f32>( 1046 getX(batch, xF, xR, xC, d1), 1047 getX(batch, xF, xR, xC, d1 + 1), 1048 getX(batch, xF, xR, xC, d1 + 2), 1049 getX(batch, xF, xR, xC, d1 + 3)); 1050 `:`let xValues = vec4<f32>( 1051 getX(batch, d1, xF, xR, xC), 1052 getX(batch, d1 + 1, xF, xR, xC), 1053 getX(batch, d1 + 2, xF, xR, xC), 1054 getX(batch, d1 + 3, xF, xR, xC)); 1055 `} 1056 let wValues = vec4<f32>( 1057 getW(d2, d1, wF, wR, wC), 1058 getW(d2, d1 + 1, wF, wR, wC), 1059 getW(d2, d1 + 2, wF, wR, wC), 1060 getW(d2, d1 + 3, wF, wR, wC)); 1061 value += dot(xValues, wValues); 1062 } 1063 if (inputDepthVec4Remainder == 1) { 1064 ${o?`value += getX(batch, xF, xR, xC, inputDepthNearestVec4) 1065 * getW(d2, inputDepthNearestVec4, wF, wR, wC);`:`value += getX(batch, inputDepthNearestVec4, xF, xR, xC) 1066 * getW(d2, inputDepthNearestVec4, wF, wR, wC);`} 1067 } else if (inputDepthVec4Remainder == 2) { 1068 ${o?`let xValues = vec2<f32>( 1069 getX(batch, xF, xR, xC, inputDepthNearestVec4), 1070 getX(batch, xF, xR, xC, inputDepthNearestVec4 + 1)); 1071 `:`let xValues = vec2<f32>( 1072 getX(batch, inputDepthNearestVec4, xF, xR, xC), 1073 getX(batch, inputDepthNearestVec4 + 1, xF, xR, xC)); 1074 `} 1075 let wValues = vec2<f32>( 1076 getW(d2, inputDepthNearestVec4, wF, wR, wC), 1077 getW(d2, inputDepthNearestVec4 + 1, wF, wR, wC)); 1078 value += dot(xValues, wValues); 1079 } else if (inputDepthVec4Remainder == 3) { 1080 ${o?`let xValues = vec3<f32>( 1081 getX(batch, xF, xR, xC, inputDepthNearestVec4), 1082 getX(batch, xF, xR, xC, inputDepthNearestVec4 + 1), 1083 getX(batch, xF, xR, xC, inputDepthNearestVec4 + 2)); 1084 `:`let xValues = vec3<f32>( 1085 getX(batch, inputDepthNearestVec4, xF, xR, xC), 1086 getX(batch, inputDepthNearestVec4 + 1, xF, xR, xC), 1087 getX(batch, inputDepthNearestVec4 + 2, xF, xR, xC)); 1088 `} 1089 let wValues = vec3<f32>( 1090 getW(d2, inputDepthNearestVec4, wF, wR, wC), 1091 getW(d2, inputDepthNearestVec4 + 1, wF, wR, wC), 1092 getW(d2, inputDepthNearestVec4 + 2, wF, wR, wC)); 1093 value += dot(xValues, wValues); 1094 } 1095 } 1096 } 1097 } 1098 ${c?"value = value + getBiasByOutputCoords(coords)":""}; 1099 ${b} 1100 result[global_idx] = f32(value); 1101 }`}}}}),nW=q(()=>{ng(),nv(),nC(),nD(),iP=(t,r,i,a)=>{let n=t.length>2,s=n?"value += b[output_channel];":"",o=t[0].dims,l=t[1].dims,u="NHWC"===r.format,d=u?i[3]:i[1],c=d/r.group,h=u&&c>=4?tI(d):1,f=e8.size(i)/h,p=[{type:12,data:f},{type:12,data:r.dilations},{type:12,data:[r.strides[0],r.strides[1]]},{type:12,data:[r.pads[0],r.pads[1]]},{type:12,data:c}];return ig(r,p),p.push(...tT(o,[l[0],l[1],l[2],l[3]/h])),p.push(...tT([i[0],i[1],i[2],i[3]/h])),{name:"GroupedConv",shaderCache:{hint:`${r.cacheKey}_${h}`,inputDependencies:n?["rank","rank","rank"]:["rank","rank"]},getRunData:()=>({outputs:[{dims:a?a(i):i,dataType:t[0].dataType}],dispatchGroup:{x:Math.ceil(f/64)},programUniforms:p}),getShaderSource:a=>{let d=tj("output",t[0].dataType,i.length,h),c=tC(d.type.tensor),f=im(r,d.t
vendor: 4,167 bytes, lines 1101-1170
1101ype.value,c),p=tR("x",t[0].dataType,o.length),m=tR("w",t[1].dataType,l.length,h),g=[p,m];n&&g.push(tR("b",t[2].dataType,t[2].dims,h));let b=[{name:"output_size",type:"u32"},{name:"dilations",type:"u32",length:r.dilations.length},{name:"strides",type:"u32",length:2},{name:"pads",type:"u32",length:2},{name:"output_channels_per_group",type:"u32"}];ib(r,b);let y=u?` 1102 for (var wHeight: u32 = 0u; wHeight < uniforms.w_shape[0]; wHeight++) { 1103 let xHeight = xRCCorner.x + wHeight * uniforms.dilations[0]; 1104 1105 if (xHeight < 0u || xHeight >= uniforms.x_shape[1]) { 1106 continue; 1107 } 1108 1109 for (var wWidth: u32 = 0u; wWidth < uniforms.w_shape[1]; wWidth++) { 1110 let xWidth = xRCCorner.y + wWidth * uniforms.dilations[1]; 1111 if (xWidth < 0u || xWidth >= uniforms.x_shape[2]) { 1112 continue; 1113 } 1114 1115 for (var wInChannel: u32 = 0u; wInChannel < uniforms.w_shape[2]; wInChannel++) { 1116 let input_channel = in_channel_offset + wInChannel; 1117 let xVal = ${p.get("batch","xHeight","xWidth","input_channel")}; 1118 let wVal = ${m.get("wHeight","wWidth","wInChannel","output_channel")}; 1119 value += xVal * wVal; 1120 } 1121 } 1122 } 1123 `:` 1124 for (var wInChannel: u32 = 0u; wInChannel < uniforms.w_shape[1]; wInChannel++) { 1125 let input_channel = in_channel_offset + wInChannel; 1126 for (var wHeight: u32 = 0u; wHeight < uniforms.w_shape[2]; wHeight++) { 1127 let xHeight = xRCCorner.x + wHeight * uniforms.dilations[0]; 1128 1129 if (xHeight < 0u || xHeight >= uniforms.x_shape[2]) { 1130 continue; 1131 } 1132 1133 for (var wWidth: u32 = 0u; wWidth < uniforms.w_shape[3]; wWidth++) { 1134 let xWidth = xRCCorner.y + wWidth * uniforms.dilations[1]; 1135 if (xWidth < 0u || xWidth >= uniforms.x_shape[3]) { 1136 continue; 1137 } 1138 1139 let xVal = ${p.get("batch","input_channel","xHeight","xWidth")}; 1140 let wVal = ${m.get("output_channel","wInChannel","wHeight","wWidth")}; 1141 value += xVal * wVal; 1142 } 1143 } 1144 } 1145 `;return` 1146 ${a.registerUniforms(b).declareVariables(...g,d)} 1147 1148 ${a.mainStart()} 1149 ${a.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} 1150 1151 let outputIndices = ${d.offsetToIndices("global_idx")}; 1152 let batch: u32 = outputIndices[0]; 1153 let output_channel: u32 = outputIndices[${u?3:1}]; 1154 let xRCCorner: vec2<u32> = vec2<u32>(outputIndices[${u?1:2}], outputIndices[${u?2:3}]) * uniforms.strides - uniforms.pads; 1155 let group_id: u32 = output_channel * ${h} / uniforms.output_channels_per_group; 1156 var in_channel_offset = group_id * uniforms.w_shape[${u?2:1}]; 1157 1158 var value: ${d.type.value} = ${d.type.value}(0); 1159 ${y} 1160 ${s} 1161 ${f} 1162 ${d.setByOffset("global_idx","value")} 1163 }`}}},iR=(t,r,i,a)=>{let n=t.length>2,s=tI(i[3]),o=tI(i[2]),l=e8.size(i)/s/o,u=[t[0].dims[0],t[0].dims[1],t[0].dims[2],t[0].dims[3]/s],d=[t[1].dims[0],t[1].dims[1],t[1].dims[2],t[1].dims[3]/s],c=[i[0],i[1],i[2],i[3]/s],h=[{type:12,data:l},{type:6,data:[r.strides[0],r.strides[1]]},{type:6,data:[r.pads[0],r.pads[1]]}];ig(r,h),h.push(...tT(u,d,c));let f=(o-1)*r.strides[1]+d[1];return{name:"GroupedConv-Vectorize",shaderCache:{hint:`${r.cacheKey};${s};${o};${f};${d[0]};${d[1]}`,inputDependencies:n?["rank","rank","type"]:["rank","rank"]},getRunData:()=>({outputs:[{dims:a?a(i):i,dataType:t[0].dataType}],dispatchGroup:{x:Math.ceil(l/64)},programUniforms:h}),getShaderSource:i=>{let a=tj("output",t[0].dataType,c.length,s),l=tC(a.type.tensor),h=im(r,a.type.value,l),p=tR("x",t[0].dataType,u.length,s),m=tR("w",t[1].dataType,d.length,s),g=[p,m];n&&g.push(tR("b",t[2].dataType,t[2].dims,s));let b=[{name:"output_size",type:"u32"},{name:"strides",type:"i32",length:2},{name:"pads",type:"i32",length:2}];return ib(r,b),` 1164 ${i.registerUniforms(b).declareVariables(...g,a)} 1165 ${i.mainStart()} 1166 ${i.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} 1167 let width0 = uniforms.output_shape[3]; 1168 let output_channel = global_idx % width0; 1169 var index1 = global_idx / width0; 1170 let width1 = uniforms.output_shape[2] / ${o}u;
1171 let col = (index1 % width1) * ${o}u; 1172 index1 = index1 / width1; 1173 let row = index1 % uniforms.output_shape[1]; 1174 let batch = index1 / uniforms.output_shape[1]; 1175 1176 let x_corner = vec2<i32>(i32(row), i32(col)) * uniforms.strides - uniforms.pads; 1177 1178 var x_vals: array<${p.type.value}, ${f}>; 1179 var values: array<${a.type.value}, ${o}>; 1180 let input_channel = output_channel; 1181 // Use constant instead of uniform can give better performance for w's height/width. 1182 for (var w_height: u32 = 0u; w_height < ${d[0]}; w_height++) { 1183 let x_height = x_corner.x + i32(w_height); 1184 if (x_height >= 0 && u32(x_height) < uniforms.x_shape[1]) { 1185 for (var i = 0; i < ${f}; i++) { 1186 let x_width = x_corner.y + i; 1187 if (x_width >= 0 && u32(x_width) < uniforms.x_shape[2]) { 1188 x_vals[i] = ${p.get("batch","u32(x_height)","u32(x_width)","input_channel")}; 1189 } else { 1190 x_vals[i] = ${p.type.value}(0); 1191 } 1192 } 1193 for (var w_width: u32 = 0u; w_width < ${d[1]}; w_width++) { 1194 let w_val = ${m.get("w_height","w_width","0","output_channel")}; 1195 for (var i = 0u; i < ${o}u; i++) { 1196 values[i] = fma(x_vals[i * u32(uniforms.strides[1]) + w_width], w_val, values[i]); 1197 } 1198 } 1199 } 1200 } 1201 1202 for (var i = 0u; i < ${o}u; i++) { 1203 var value = values[i]; 1204 ${n?"value += b[output_channel];":""} 1205 ${h} 1206 ${a.set("batch","row","col + i","output_channel","value")}; 1207 } 1208 }`}}}}),nH=q(()=>{nv(),nq(),nV(),nF(),nW(),nD(),nU(),nE(),ij=[2,3,1,0],iz=(t,r)=>{let i=t.kernelShape.slice();i.length<r[1].dims.length-2&&i.push(...Array(r[1].dims.length-2-i.length).fill(0));for(let t=2;t<r[1].dims.length;++t)0===i[t-2]&&(i[t-2]=r[1].dims[t]);let a=t.pads.slice();e7.adjustPadsBasedOnAutoPad(r[0].dims,t.strides,t.dilations,i,a,"NHWC"===t.format,t.autoPad);let n=Object.assign({},t);return Object.assign(n,{kernelShape:i,pads:a}),n},iD=t=>{let r=iy(t),i=t.format;return{autoPad:["NOTSET","VALID","SAME_UPPER","SAME_LOWER"][t.auto_pad],format:i,dilations:t.dilations,group:t.group,kernelShape:t.kernel_shape,pads:t.pads,strides:t.strides,wIsConst:t.w_is_const(),...r,cacheKey:`${t.format};${r.activation};`}},iB=(t,r,i,a)=>{let n="NHWC"===i.format,s=((t,r,i,a,n,s)=>{let o=t[0],l=t.slice(s?1:2,s?3:4),u=l.length,d=r[0],c=r.slice(2).map((t,r)=>t+(t-1)*(i[r]-1)),h=l.map((t,r)=>t+a[r]+a[r+u]).map((t,r)=>Math.floor((t-c[r]+n[r])/n[r]));return h.splice(0,0,o),h.splice(s?3:1,0,d),h})(r[0].dims,r[1].dims,i.dilations,i.pads,i.strides,n);if(1!==i.group){let o=[r[0]];if(n){let a=t.kernelCustomData.wT??t.compute(tF(r[1],ij),{inputs:[1],outputs:[i.wIsConst?-2:-1]})[0];i.wIsConst&&!t.kernelCustomData.wT&&(t.kernelCustomData.wT=a),o.push(a)}else o.push(r[1]);3===r.length&&o.push(r[2]),!t.adapterInfo.isArchitecture("ampere")&&n&&r[1].dims[0]===i.group&&1===r[1].dims[1]&&1===i.dilations[0]&&1===i.dilations[1]?t.compute(iR(o,i,s,a),{inputs:o}):t.compute(iP(o,i,s,a),{inputs:o});return}let o=3===r.length,l=r[0].dims[n?1:2],u=r[0].dims[n?2:3],d=r[0].dims[n?3:1],c=r[1].dims[2],h=r[1].dims[3],f=s[n?1:2],p=s[n?2:3],m=s[n?3:1],g=n&&c===l&&h===u&&0===i.pads[0]&&0===i.pads[1];if(g||1===c&&1===h&&1===i.dilations[0]&&1===i.dilations[1]&&1===i.strides[0]&&1===i.strides[1]&&0===i.pads[0]&&0===i.pads[1]){let c=s[0],h,b,y,v=[];if(n){let a=t.kernelCustomData.wT??t.compute(tF(r[1],ij),{inputs:[1],outputs:[i.wIsConst?-2:-1]})[0];if(i.wIsConst&&!t.kernelCustomData.wT&&(t.kernelCustomData.wT=a),g){let t=l*u*d;h=r[0].reshape([1,c,t]),b=a.reshape([1,t,m]),y=[1,c,m]}else h=r[0].reshape([c,l*u,d]),b=a.reshape([1,d,m]),y=[c,f*p,m];v.push(h),v.push(b)}else h=r[0].reshape([c,d,l*u]),b=r[1].reshape([1,m,d]),y=[c,m,f*p],v.push(b),v.push(h);o&&v.push(r[2]);let _=y[2],w=v[0].dims[v[0].dims.length-1];_<8&&w<8?t.compute(i$(v,i,s,y,n,a),{inputs:v}):t.compute(iE(v,i,s,y,n,a),{inputs:v});return}let b=t.kernelCustomData.wT??t.compute(tF(r[1],ij),{inputs:[1],outputs:[i.wIsConst?-2:-1]})[0];i.wIsConst&&!t.kernelCustomData.wT&&(t.kernelCustomData.wT=b);let y=[r[0],b];o&&y.push(r[2]);let v=n?f*p:m,_=n?m:f*p,w=c*h*d;t.compute(iT(y,i,s,v,_,w,o,!0,a),{inputs:y})},iL=(t,r)=>{if(((t,r)=>{if(!t||2!==t.length&&3!==t.length)throw Error("Conv requires 2 or 3 inputs");if(t[0].dims.length>5)throw Error("greater than 5D is not supported");if(t[0].dims.length!==t[1].dims.length)throw Error("filter does not have same dimension as input");if(t[0].dims["NHWC"===r.format?t[0].dims.length-1:1]!==t[1].dims[1]*r.group)throw Error("FILTER_IN_CHANNEL should be equal to DATA_CHANNEL");if(3===t.length&&(1!==t[2].dims.length||t[1].dims[0]!==t[2].dims[
12080]))throw Error("invalid bias");let i=t[0].dims.length-2;if(r.dilations.length!==i)throw Error(`dilations should be ${i}D`);if(r.strides.length!==i)throw Error(`strides should be ${i}D`);if(r.pads.length!==2*i)throw Error(`pads should be ${2*i}D`);if(0!==r.kernelShape.length&&r.kernelShape.length!==t[1].dims.length-2)throw Error("invalid kernel shape")})(t.inputs,r),3===t.inputs[0].dims.length)((t,r)=>{let i="NHWC"===r.format,a=[t.inputs[0].reshape(i?[t.inputs[0].dims[0],1,t.inputs[0].dims[1],t.inputs[0].dims[2]]:[t.inputs[0].dims[0],t.inputs[0].dims[1],1,t.inputs[0].dims[2]]),t.inputs[1].reshape([t.inputs[1].dims[0],t.inputs[1].dims[1],1,t.inputs[1].dims[2]])];3===t.inputs.length&&a.push(t.inputs[2]);let n=[0,r.pads[0],0,r.pads[1]],s=[1].concat(r.strides),o=[1].concat(r.dilations),l=[1].concat(r.kernelShape),u=iz({...r,pads:n,strides:s,dilations:o,kernelShape:l},a);iB(t,a,u,t=>i?[t[0],t[2],t[3]]:[t[0],t[1],t[3]])})(t,r);else if(5===t.inputs[0].dims.length)((t,r,i)=>{let a="NHWC"===i.format?"channelsLast":"channelsFirst",n=iz(i,r),s="NOTSET"===i.autoPad?i.pads:i.autoPad,o=iO(r[0].dims,r[1].dims,i.strides,i.dilations,s,!1,a);t.compute(iM(r,n,o.outShape,[o.filterDepth,o.filterHeight,o.filterWidth],[o.padInfo.front,o.padInfo.top,o.padInfo.left],a))})(t,t.inputs,r);else{let i=iz(r,t.inputs);iB(t,t.inputs,i)}}}),nG=q(()=>{ng(),ny(),nv(),nC(),iU=(t,r,i)=>{let a=t.length>2,n=r.outputShape,s="NHWC"===r.format,o=r.group,l=t[1].dims,u=l[2]/o,d=l[3],c=s?tI(u):1,h=s&&1===d&&u>=4,f=h?4*Math.floor(u/4):Math.floor(u/c)*c,p=u-f,m=s?tI(d):1,g=s?1===d?c:m:1,b=e8.size(n)/m,y=[Math.ceil(b/64),1,1];e2("verbose",()=>`[conv2d_backprop_webgpu] dispatch = ${y}`);let v=["rank","rank"],_=[r.strides[0],r.strides[1]],w=[r.kernelShape[s?1:2],r.kernelShape[s?2:3]],x=[r.dilations[0],r.dilations[1]],$=[w[0]+(r.dilations[0]<=1?0:(r.kernelShape[s?1:2]-1)*(r.dilations[0]-1)),w[1]+(r.dilations[1]<=1?0:(r.kernelShape[s?2:3]-1)*(r.dilations[1]-1))],S=[$[0]-1-Math.floor((r.pads[0]+r.pads[2])/2),$[1]-1-Math.floor((r.pads[1]+r.pads[3])/2)],k=[{type:12,data:b},{type:12,data:_},{type:12,data:w},{type:12,data:x},{type:12,data:$},{type:6,data:S},{type:12,data:f},{type:12,data:u},{type:12,data:d},...tT(t[0].dims,t[1].dims)];return a&&(k.push(...tT(t[2].dims)),v.push("rank")),k.push(...tT(n)),{name:"ConvTranspose2D",shaderCache:{hint:`${r.cacheKey};${c}${g}${m}${h}${p}`,inputDependencies:v},getRunData:()=>({dispatchGroup:{x:y[0],y:y[1],z:y[2]},outputs:[{dims:i?i(n):n,dataType:t[0].dataType}],programUniforms:k}),getShaderSource:r=>{let i=[{name:"output_size",type:"u32"},{name:"strides",type:"u32",length:_.length},{name:"filter_dims",type:"u32",length:w.length},{name:"dilations",type:"u32",length:w.length},{name:"effective_filter_dims",type:"u32",length:$.length},{name:"pads",type:"i32",length:S.length},{name:"input_channels_per_group_int",type:"u32"},{name:"input_channels_per_group",type:"u32"},{name:"output_channels_per_group",type:"u32"}],o=tC(t[0].dataType),l=s?1:2,u=s?2:3,d=s?3:1,f=tR("W",t[1].dataType,t[1].dims.length,g),b=tR("Dy",t[0].dataType,t[0].dims.length,c),y=[b,f];a&&y.push(tR("bias",t[2].dataType,[n[d]].length,m));let v=tj("result",t[0].dataType,n.length,m),x=` 1209 let outputIndices = ${v.offsetToIndices(`global_idx * ${m}`)}; 1210 let batch = ${v.indicesGet("outputIndices",0)}; 1211 let d1 = ${v.indicesGet("outputIndices",d)}; 1212 let r = ${v.indicesGet("outputIndices",l)}; 1213 let c = ${v.indicesGet("outputIndices",u)}; 1214 let dyCorner = vec2<i32>(i32(r), i32(c)) - uniforms.pads; 1215 let dyRCorner = dyCorner.x; 1216 let dyCCorner = dyCorner.y; 1217 let groupId = d1 / uniforms.output_channels_per_group; 1218 let wOutChannel = d1 - groupId * uniforms.output_channels_per_group; 1219 // Convolve dy(?, ?, d2) with w(:, :, d1, d2) to compute dx(xR, xC, d1). 1220 // ? = to be determined. : = across all values in that axis. 1221 var dotProd = ${v.type.value}(0.0); 1222 var wR: u32 = 0; 1223 if (uniforms.dilations.x == 1) { 1224 // Minimum wR >= 0 that satisfies (dyRCorner + wR) % (uniforms.strides.x) == 0 1225 wR = u32(((dyRCorner + i32(uniforms.strides.x) - 1) / i32(uniforms.strides.x)) * i32(uniforms.strides.x) - dyRCorner); 1226 } 1227 for (; wR < uniforms.effective_filter_dims.x; wR = wR + 1) { 1228 if (wR % uniforms.dilations.x != 0) { 1229 continue; 1230 } 1231 let dyR = (${o}(dyRCorner) + ${o}(wR)) / ${o}(uniforms.strides[0]); 1232 let wRPerm = uniforms.filter_dims.x - 1 - wR / uniforms.dilations.x; 1233 if (dyR < 0.0 || dyR >= ${o}(uniforms.Dy_shape[${l}
1233]) || fract(dyR) > 0.0 || 1234 wRPerm < 0) { 1235 continue; 1236 } 1237 let idyR: u32 = u32(dyR); 1238 var wC: u32 = 0; 1239 if (uniforms.dilations.y == 1) { 1240 // Minimum wC >= 0 that satisfies (dyCCorner + wC) % (uniforms.strides.y) == 0 1241 wC = u32(((dyCCorner + i32(uniforms.strides.y) - 1) / i32(uniforms.strides.y)) * i32(uniforms.strides.y) - dyCCorner); 1242 } 1243 for (; wC < uniforms.effective_filter_dims.y; wC = wC + 1) { 1244 if (wC % uniforms.dilations.y != 0) { 1245 continue; 1246 } 1247 let dyC = (${o}(dyCCorner) + ${o}(wC)) / ${o}(uniforms.strides.y); 1248 let wCPerm = uniforms.filter_dims.y - 1 - wC / uniforms.dilations.y; 1249 if (dyC < 0.0 || dyC >= ${o}(uniforms.Dy_shape[${u}]) || 1250 fract(dyC) > 0.0 || wCPerm < 0) { 1251 continue; 1252 } 1253 let idyC: u32 = u32(dyC); 1254 var inputChannel = groupId * uniforms.input_channels_per_group; 1255 ${h?` 1256 var x_offset = ${b.indicesToOffset(`${b.type.indices}(batch, idyR, idyC, inputChannel)`)} / ${c}; 1257 var w_offset = ${f.indicesToOffset(`${f.type.indices}(wRPerm, wCPerm, inputChannel, wOutChannel)`)} / ${g}; 1258 `:""} 1259 for (var d2: u32 = 0; d2 < uniforms.input_channels_per_group_int; d2 = d2 + ${h?4:c}) { 1260 ${(()=>{let t="";if(h)4===c?t+=` 1261 let xValue = ${b.getByOffset("x_offset")}; 1262 let wValue = ${f.getByOffset("w_offset")}; 1263 dotProd = dotProd + dot(xValue, wValue); 1264 x_offset += 1u; 1265 w_offset += 1u;`:2===c?t+=` 1266 dotProd = dotProd + dot(vec4<${o}>(${b.getByOffset("x_offset")}, ${b.getByOffset("x_offset + 1u")}), vec4<${o}>(${f.getByOffset("w_offset")}, ${f.getByOffset("w_offset + 1u")})); 1267 x_offset += 2u; 1268 w_offset += 2u;`:1===c&&(t+=` 1269 dotProd = dotProd + dot(vec4<${o}>(${b.getByOffset("x_offset")}, ${b.getByOffset("x_offset + 1u")}, ${b.getByOffset("x_offset + 2u")}, ${b.getByOffset("x_offset + 3u")}), vec4<${o}>(${f.getByOffset("w_offset")}, ${f.getByOffset("w_offset + 1u")}, ${f.getByOffset("w_offset + 2u")}, ${f.getByOffset("w_offset + 3u")})); 1270 x_offset += 4u; 1271 w_offset += 4u;`);else if(t+=` 1272 let xValue = ${s?b.getByOffset(`${b.indicesToOffset(`${b.type.indices}(batch, idyR, idyC, inputChannel)`)} / ${c}`):b.get("batch","inputChannel","idyR","idyC")}; 1273 `,1===c)t+=` 1274 let w_offset = ${f.indicesToOffset(`${f.type.indices}(u32(wRPerm), u32(wCPerm), inputChannel, wOutChannel)`)}; 1275 let wValue = ${f.getByOffset(`w_offset / ${g}`)}; 1276 dotProd = dotProd + xValue * wValue;`;else for(let r=0;r<c;r++)t+=` 1277 let wValue${r} = ${f.getByOffset(`${f.indicesToOffset(`${f.type.indices}(u32(wRPerm), u32(wCPerm), inputChannel + ${r}, wOutChannel)`)} / ${g}`)}; 1278 dotProd = dotProd + xValue[${r}] * wValue${r};`;return t})()} 1279 inputChannel = inputChannel + ${h?4:c}; 1280 } 1281 ${(()=>{if(0===p)return"";if(!h)throw Error(`packInputAs4 ${h} is not true.`);let t="";if(1===c){t+="dotProd = dotProd";for(let r=0;r<p;r++)t+=` 1282 + ${b.getByOffset(`x_offset + ${r}`)} * ${f.getByOffset(`w_offset + ${r}`)}`;t+=";"}else if(2===c){if(2!==p)throw Error(`Invalid inputChannelsRemainder ${p}.`);t+=` 1283 let xValue = ${b.getByOffset("x_offset")}; 1284 let wValue = ${f.getByOffset("w_offset")}; 1285 dotProd = dotProd + dot(xValue, wValue);`}return t})()} 1286 wC = wC + uniforms.strides.y - 1; 1287 } 1288 wR = wR + uniforms.strides[0] - 1; 1289 } 1290 let value = dotProd${a?` + bias[d1 / ${m}]`:""}; 1291 ${v.setByOffset("global_idx","value")}; 1292 `;return` 1293 ${r.registerUniforms(i).declareVariables(...y,v)} 1294 ${r.mainStart()} 1295 ${r.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}; 1296 ${x}}`}}}}),nK=q(()=>{nG(),nD(),nE(),iF=(t,r,i,a,n,s)=>(t-1)*r+i+(a-1)*n+1-s,iq=(t,r,i,a,n)=>{let s=Math.floor(t/2);"SAME_UPPER"===r?(i[a]=s,i[n]=t-s):"SAME_LOWER"===r&&(i[a]=t-s,i[n]=s)},iV=(t,r)=>{let i=t.kernelShape.slice();if(0===t.kernelShape.length||0===t.kernelShape.reduce((t,r)=>t*r,1)){i.length=0;for(let t=2;t<r[1].dims.length;++t)i.push(r[1].dims[t])}let a="NHWC"===t.format;i.splice(0,0,r[1].dims[0]),i.splice(a?3:1,0,r[1].dims[1]);let n=t.pads.slice(),s=t.outputShape.slice(),o=t.outputPadding.slice(),l=r[0].dims,u=t.dilations.slice();0===u.reduce((t,r)=>t+r,0)&&(u=Array(r[0].dims.length-2).fill(1));let d=t.strides.slice();0===d.reduce((t,r)=>t+r,0)&&(d=Array(r[0].dims.length-2).fill(1)),((t,r,i,a,n,s,o,l,u,d)=>{let c=t.length-2,h=0===d.length;u.length<c&&u.push(...Array(c-u.length).fill(0));let f=t[0],p=r[l?3:1]*n;for(let n=0,f=t.length-c-!!l;n<c;++n,++f){let l=t[f],p=h?l*o[n]:d[n];iq(iF(l,o[n],s[n],r[f],i[n],p),a,s,n,n+c),h&&d.push(o[n]*(l-1)+u[n]+(r[f]-1)*i[n]+1-s[n]-s[n+c])}d.splice(0,0,f),d.splice(l?3:1,0,p)})(l,i,u,t.autoPad,t.group,n,d,a,o,s);let c=Object.assign({},t);return Object.assign(c,{kernelShape:i,pads:n,outputPadding:o,outputShape:s,dilations:u,strides:d}),c},iW=t=>{let r=iy(t),i=t.format,a=["NOTSET","VALID","SAME_UPPER","SAME_LOWER"][typeof t.autoPad>"u"?0:t.autoPad],n=t.dilations,s=t.group,o=t.kernelShape,l=t.pads,u=t.strides,d=t.wIsConst(
1296);return{autoPad:a,format:i,dilations:n,group:s,kernelShape:o,outputPadding:t.outputPadding,outputShape:t.outputShape,pads:l,strides:u,wIsConst:d,...r,cacheKey:`${t.format};${r.activation};`}},iH=(t,r,i,a)=>{let n=t.kernelCustomData.wT??t.compute(tF(r[1],[2,3,0,1]),{inputs:[1],outputs:[i.wIsConst?-2:-1]})[0];i.wIsConst&&!t.kernelCustomData.wT&&(t.kernelCustomData.wT=n);let s=[r[0],n];3===r.length&&s.push(r[2]),t.compute(iU(s,i,a),{inputs:s})},iG=(t,r)=>{if(((t,r)=>{if(!t||2!==t.length&&3!==t.length)throw Error("Conv requires 2 or 3 inputs");if(4!==t[0].dims.length&&3!==t[0].dims.length)throw Error("currently only support 2-dimensional conv");if(t[0].dims.length!==t[1].dims.length)throw Error("filter does not have same dimension as input");if(t[0].dims["NHWC"===r.format?t[0].dims.length-1:1]!==t[1].dims[0])throw Error("FILTER_IN_CHANNEL should be equal to DATA_CHANNEL");let i=t[1].dims[1]*r.group;if(3===t.length&&(1!==t[2].dims.length||t[2].dims[0]!==i))throw Error("invalid bias");let a=t[0].dims.length-2;if(r.dilations.reduce((t,r)=>t+r,0)>0&&r.dilations.length!==a)throw Error(`dilations should be ${a}D`);if(r.strides.reduce((t,r)=>t+r,0)>0&&r.strides.length!==a)throw Error(`strides should be ${a}D`);if(r.pads.reduce((t,r)=>t+r,0)>0&&r.pads.length!==2*a)throw Error(`pads should be ${2*a}D`);if(r.outputPadding.length!==a&&0!==r.outputPadding.length)throw Error(`output_padding should be ${a}D`);if(r.kernelShape.reduce((t,r)=>t+r,0)>0&&0!==r.kernelShape.length&&r.kernelShape.length!==t[1].dims.length-2)throw Error("invalid kernel shape");if(0!==r.outputShape.length&&r.outputShape.length!==t[0].dims.length-2)throw Error("invalid output shape")})(t.inputs,r),3===t.inputs[0].dims.length)((t,r)=>{let i="NHWC"===r.format,a=[t.inputs[0].reshape(i?[t.inputs[0].dims[0],1,t.inputs[0].dims[1],t.inputs[0].dims[2]]:[t.inputs[0].dims[0],t.inputs[0].dims[1],1,t.inputs[0].dims[2]]),t.inputs[1].reshape([t.inputs[1].dims[0],t.inputs[1].dims[1],1,t.inputs[1].dims[2]])];3===t.inputs.length&&a.push(t.inputs[2]);let n=r.kernelShape;(0===n.length||0===n[0])&&(n=[t.inputs[1].dims[2]]);let s=r.dilations;(0===s.length||0===s[0])&&(s=[1]);let o=r.strides;(0===o.length||0===o[0])&&(o=[1]);let l=r.pads;0===l.length&&(l=[0,0]),l=[0,l[0],0,l[1]],o=[1].concat(o),s=[1].concat(s),n=[1].concat(n);let u=r.outputPadding;u=[0].concat(u);let d=iV({...r,pads:l,strides:o,dilations:s,kernelShape:n,outputPadding:u},a);iH(t,a,d,t=>i?[t[0],t[2],t[3]]:[t[0],t[1],t[3]])})(t,r);else{let i=iV(r,t.inputs);iH(t,t.inputs,i)}}}),nY=q(()=>{ng(),nv(),nk(),nC(),iK=(t,r)=>{let i=t.inputs[0].dims,a=t.inputs[0].dataType,n=t.inputs[1];t.compute(((t,r,i,a)=>{let n=e8.size(r),s=r.length,o=tR("input",t,s),l=tj("output",t,s),u=6===i.dataType?i.getInt32Array()[0]:Number(i.getBigInt64Array()[0]),d=e8.normalizeAxis(u,s);return{name:"CumSum",shaderCache:{hint:a.cacheKey,inputDependencies:["rank"]},getRunData:()=>({outputs:[{dims:r,dataType:t}],dispatchGroup:{x:Math.ceil(n/64)},programUniforms:[{type:12,data:n},{type:12,data:d},...tT(r,r)]}),getShaderSource:t=>{let r=` i32(${o.indicesGet("inputIndices","uniforms.axis")}) `,i=tM("uniforms.input_shape","uniforms.axis",s),n=a.reverse?r+(a.exclusive?" + 1":""):"0",u=a.reverse?i:r+(a.exclusive?"":" + 1");return` 1297 ${t.registerUniform("outputSize","u32").registerUniform("axis","u32").declareVariables(o,l)} 1298 ${t.mainStart()} 1299 ${t.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")} 1300 var inputIndices = ${l.offsetToIndices("global_idx")}; 1301 var sum = ${l.type.value}(0); 1302 let first : i32 = ${n}; 1303 let last : i32 = ${u}; 1304 for (var i : i32 = first; i < last; i++) { 1305 ${o.indicesSet("inputIndices","uniforms.axis","u32(i)")}; 1306 sum = sum + ${o.getByIndices("inputIndices")}; 1307 } 1308 ${l.setByOffset("global_idx","sum")}; 1309 }`}}})(a,i,n,r),{inputs:[0]})},iY=t=>{let r=1===t.exclusive,i=1===t.reverse;return t$({exclusive:r,reverse:i})}}),nQ=q(()=>{ng(),nv(),nk(),nC(),iQ=(t,r)=>{(t=>{if(!t||1!==t.length)throw Error("DepthToSpace requires 1 input.");if(4!==t[0].dims.length)throw Error("DepthToSpace requires 4D input.")})(t.inputs),t.compute(((t,r)=>{let i,a,n,s,o,l,u="NHWC"===r.format,d=r.blocksize,c="DCR"===r.mode;u?([i,a,n,s]=t.dims,o=c?[i,a,n,d,d,s/d**2]:[i,a,n,s/d**2,d,d],l=c?[0,1,3,2,4,5]:[0,1,4,2,5,3]):([i,a,n,s]=[t.dims[0],t.dims[2],t.dims[3],t.dims[1]],o=c?[i,d,d,s/d**2,a,n]:[i,s/d**2,d,d,a,n],l=c?[0,3,4,1,5,2]:[0,1,4,2,5,3]);let h=t.reshape(o),f=h.dims.length,p=t.dataType,m=tR("a",p,f),g=tj("output",p,f);return{name:"DepthToSpace",shaderCache:{hint:`${t.dims};${r.blocksize};${r.mode}`,inputDependencies:["rank"]},getRunData:t=>{let r=u?[i,a*d,n*d,s/d**2]:[i,s/d**2,a*d,n*d],o=e8.size(r),c=h.dims,f=e8.sortBasedOnPerm(c,l);return{outputs:[{dims:r,dataType:t[0].dataType}],dispatchGroup:{x:Math.ceil(o/64)},programUniforms:[{type:12,data:o},...tT(c,f)]}},getShaderSource:t=>` 1310 ${t.registerUniform("output_size","u32").declareVariables(m,g)} 1311 1312 ${((t,r,i,a)=>{let n=[];
1312n.push(`fn perm(i: ${a.type.indices}) -> ${i.type.indices} { 1313 var a: ${i.type.indices};`);for(let a=0;a<r;++a)n.push(i.indicesSet("a",t[a],`i[${a}]`));return n.push("return a;}"),n.join(` 1314`)})(l,f,m,g)} 1315 1316 ${t.mainStart()} 1317 ${t.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} 1318 1319 let indices = ${g.offsetToIndices("global_idx")}; 1320 let aIndices = perm(indices); 1321 1322 ${g.setByOffset("global_idx",m.getByIndices("aIndices"))} 1323 }`}})(t.inputs[0],r))},iX=t=>t$({blocksize:t.blocksize,mode:t.mode,format:t.format})}),nX=q(()=>{ng(),nv(),nk(),nC(),i1="^"+(iJ="("+(iZ="[a-zA-Z]|\\.\\.\\.")+")+")+"$",i0="^"+("("+iJ+",)*")+iJ+"$",i2=class{constructor(t=-1){this.symbolToIndices=new Map,this.inputIndex=t}addSymbol(t,r){let i=this.symbolToIndices.get(t);void 0===i?i=[r]:i.push(r),this.symbolToIndices.set(t,i)}},i3=class{constructor(t,r){this.equation=r,this.hasEllipsis=!1,this.symbolToInfo=new Map,this.lhs=[],this.outputDims=[];let[i,a]=r.includes("->")?r.split("->",2):[r,""];if(!i.match(RegExp(i0)))throw Error("Invalid LHS term");if(i.split(",").forEach((r,i)=>{let a=t[i].dims.slice();if(!r.match(RegExp(i1)))throw Error("Invalid LHS term");let n=this.processTerm(r,!0,a,i);this.lhs.push(n)}),""===a)a+=[...this.symbolToInfo.entries()].filter(([t,r])=>1===r.count||"..."===t).map(([t])=>t).join("");else if(!a.match(RegExp(iJ)))throw Error("Invalid RHS");a.match(RegExp(iZ,"g"))?.forEach(t=>{if("..."===t)this.outputDims=this.outputDims.concat(this.ellipsisDims);else{let r=this.symbolToInfo.get(t);if(void 0===r)throw Error("Invalid RHS symbol");this.outputDims.push(r.dimValue)}}),this.rhs=this.processTerm(a,!1,this.outputDims)}addSymbol(t,r,i){let a=this.symbolToInfo.get(t);if(void 0!==a){if(a.dimValue!==r&&1!==a.count)throw Error("Dimension mismatch");a.count++,a.inputIndices.push(i)}else a={count:1,dimValue:r,inputIndices:[i]};this.symbolToInfo.set(t,a)}processTerm(t,r,i,a=-1){let n=i.length,s=!1,o=[],l=0;if(!t.match(RegExp(i1))&&!r&&""!==t)throw Error("Invalid LHS term");let u=t.match(RegExp(iZ,"g")),d=new i2(a);return u?.forEach((t,c)=>{if("..."===t){if(s)throw Error("Only one ellipsis is allowed per input term");s=!0;let t=n-u.length+1;if(t<0)throw Error("Ellipsis out of bounds");if(o=i.slice(l,l+t),this.hasEllipsis){if(this.ellipsisDims.length!==o.length||this.ellipsisDims.toString()!==o.toString())throw Error("Ellipsis dimensions mismatch")}else if(r)this.hasEllipsis=!0,this.ellipsisDims=o;else throw Error("Ellipsis must be specified in the LHS");for(let t=0;t<o.length;t++){let r=String.fromCharCode(48+t);d.addSymbol(r,c+t),this.addSymbol(r,i[l++],a)}}else d.addSymbol(t,c+(this.hasEllipsis?this.ellipsisDims.length-1:0)),this.addSymbol(t,i[l++],a)}),d}},i4=(t,r)=>{let i=new i3(t.inputs,r.equation),a=i.outputDims,n=t.inputs.map((t,r)=>t.dims);t.compute(((t,r,i,a)=>{let n=t.map(t=>t.length).map((t,i)=>tR(`input${i}`,r,t)),s=e8.size(a),o=tj("output",r,a.length),l=[...i.symbolToInfo.keys()].filter(t=>!i.rhs.symbolToIndices.has(t));return{name:"Einsum",shaderCache:{hint:i.equation,inputDependencies:t.map(()=>"rank")},getRunData:()=>{let n=l.filter(t=>i.symbolToInfo.has(t)).map(t=>({type:12,data:i.symbolToInfo.get(t)?.dimValue||0}));n.push({type:12,data:s});let o=t.map((t,r)=>[...tT(t)]).reduce((t,r)=>t.concat(r),n);return o.push(...tT(a)),{outputs:[{dims:a,dataType:r}],dispatchGroup:{x:Math.ceil(s/64)},programUniforms:o}},getShaderSource:t=>{let r=[],a=[],s=[],u=[],d=[],c=i.symbolToInfo.size===i.rhs.symbolToIndices.size;i.symbolToInfo.forEach((t,l)=>{if(i.rhs.symbolToIndices.has(l)){let a=i.rhs.symbolToIndices.get(l)?.[0];void 0!==a&&i.lhs.forEach((i,s)=>{if(t.inputIndices.includes(s)){let t=i.symbolToIndices.get(l);if(void 0===t)throw Error("Invalid symbol error");t.forEach(t=>{r.push(`${n[s].indicesSet(`input${s}Indices`,t,o.indicesGet("outputIndices",a))}`)})}})}else i.lhs.forEach((r,i)=>{if(t.inputIndices.includes(i)){let t=r.symbolToIndices.get(l);if(void 0===t)throw Error("Invalid symbol error");t.forEach(t=>{a.push(`${n[i].indicesSet(`input${i}Indices`,t,`${l}`)}`)}),d.push(`prod *= ${n[i].getByIndices(`input${i}Indices`)};`)}}),s.push(`for(var ${l}: u32 = 0; ${l} < uniforms.${(t=>t+"_max")(l)}; ${l}++) {`),u.push("}")});let h=c?[...r,`let sum = ${n.map((t,r)=>t.getByIndices(`input${r}Indices`)).join(" * ")};`]:[...r,"var sum = 0.0;",...s,...a,"var prod = 1.0;",...d,"sum += prod;",...u];return` 1324 ${t.registerUniforms(l.map(t=>({name:`${(t=>t+"_max")(t)}`,type:"u32"}))).registerUniform("outputSize","u32").declareVariables(...n,o)} 1325 1326 ${t.mainStart()} 1327 ${t.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")} 1328 var outputIndices = ${o.offsetToIndices("global_idx")}; 1329 ${n.map((t,r)=>`var input${r}Indices: ${n[r].type.indices};`).join(` 1330`)} 1331 ${h.join(` 1332`)}; 1333 ${o.setByOffset("global_idx","sum")}; 1334 }`}}}
1334)(n,t.inputs[0].dataType,i,a))},i8=t=>{let r=t.equation.replace(/\s+/g,"");return t$({equation:r})}}),nZ=q(()=>{ng(),nv(),nC(),i7=(t,r)=>{let i=t.length-r.length,a=[];for(let r=0;r<i;++r)a.push(t[r]);for(let n=0;n<r.length;++n)a.push(1===r[n]?t[n+i]:r[n]);return a},i6=t=>{(t=>{if(!t||2!==t.length)throw Error("Expand requires 2 input.");let r=t[0].dims,i=Array.from(t[1].getBigInt64Array(),Number),a=i.length<r.length?0:i.length-r.length,n=r.length<i.length?0:r.length-i.length;for(;a<i.length&&n<r.length;++a,++n)if(i[a]!==r[n]&&1!==i[a]&&1!==r[n])throw Error("Expand requires shape to be broadcastable to input")})(t.inputs),t.compute((t=>{let r=t[0].dims,i=((t,r)=>t.length>r.length?i7(t,r):i7(r,t))(r,Array.from(t[1].getBigInt64Array(),Number)),a=t[0].dataType,n=9===a||1===e8.size(r),s=9===a||r.length>0&&r[r.length-1]%4==0?4:1,o=n||i.length>0&&i[i.length-1]%4==0?4:1,l=Math.ceil(e8.size(i)/o),u=[{type:12,data:l},...tT(r,i)];return{name:"Expand",shaderCache:{hint:`${i.length};${s}${o}`,inputDependencies:["rank"]},getShaderSource:t=>{let n=tR("input",a,r.length,s),l=tj("output",a,i.length,o),u;if(9===a){let t=(t,r,i="")=>` 1335 let outputIndices${r} = ${l.offsetToIndices(`outputOffset + ${r}u`)}; 1336 let offset${r} = ${n.broadcastedIndicesToOffset(`outputIndices${r}`,l)}; 1337 let index${r} = offset${r} / 4u; 1338 let component${r} = offset${r} % 4u; 1339 ${t}[${r}] = ${i}(${n.getByOffset(`index${r}`)}[component${r}]); 1340 `;u=` 1341 let outputOffset = global_idx * ${o}; 1342 var data = vec4<u32>(0); 1343 ${t("data",0,"u32")} 1344 ${t("data",1,"u32")} 1345 ${t("data",2,"u32")} 1346 ${t("data",3,"u32")} 1347 ${l.setByOffset("global_idx","data")} 1348 }`}else u=` 1349 let outputIndices = ${l.offsetToIndices(`global_idx * ${o}`)}; 1350 let inputOffset = ${n.broadcastedIndicesToOffset("outputIndices",l)}; 1351 let data = ${l.type.value}(${n.getByOffset(`inputOffset / ${s}`)}); 1352 ${l.setByOffset("global_idx","data")} 1353 }`;return` 1354 ${t.registerUniform("vec_size","u32").declareVariables(n,l)} 1355 ${t.mainStart()} 1356 ${t.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.vec_size")} 1357 ${u}`},getRunData:()=>({outputs:[{dims:i,dataType:t[0].dataType}],dispatchGroup:{x:Math.ceil(l/64)},programUniforms:u})}})(t.inputs),{inputs:[0]})}}),nJ=q(()=>{ng(),nv(),nC(),nP(),i5=t=>{t.inputs.length<2||0===e8.size(t.inputs[1].dims)?r4(t):t.compute((t=>{let r=t[0].dataType,i=e8.size(t[0].dims),a=e8.size(t[1].dims),n=a%4==0;return{name:"FastGeluWithBias",shaderCache:{hint:`${n}`,inputDependencies:["type","type"]},getShaderSource:t=>{let i=tR("x",r,[1],4),a=tR("bias",r,[1],4),s=tj("y",r,[1],4),o=t=>` 1358 let bias${t}_offset: u32 = (global_idx * 4 + ${t}) % uniforms.bias_size; 1359 let bias${t} = ${a.getByOffset(`bias${t}_offset / 4`)}[bias${t}_offset % 4];`,l=n?` 1360 let bias = ${a.getByOffset("global_idx % (uniforms.bias_size / 4)")};`:`${o(0)}${o(1)}${o(2)}${o(3)} 1361 let bias = ${i.type.value}(bias0, bias1, bias2, bias3);`;return`${t.registerUniforms([{name:"output_vec_size",type:"u32"},{name:"bias_size",type:"u32"}]).declareVariables(i,a,s)} 1362 1363 ${r2(tE(r))} 1364 1365 ${t.mainStart(tS)} 1366 ${t.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_vec_size")} 1367 1368 let x = ${i.getByOffset("global_idx")}; 1369 ${l} 1370 let x_in = x + bias; 1371 ${s.setByOffset("global_idx",r3("x_in"))} 1372 }`},getRunData:t=>({outputs:[{dims:t[0].dims,dataType:t[0].dataType}],programUniforms:[{type:12,data:Math.ceil(i/4)},{type:12,data:a}],dispatchGroup:{x:Math.ceil(i/tS/4)}})}})(t.inputs))}}),n1=q(()=>{ng(),nv(),nk(),nC(),i9=t=>t$({axis:t.axis}),ae=(t,r)=>{(t=>{if(!t||2!==t.length)throw Error("Gather requires 2 inputs.")})(t.inputs),t.compute(((t,r)=>{let i=t[0].dims,a=t[1].dims,n=i.length,s=e8.normalizeAxis(r.axis,n),o=i.slice(0);o.splice(s,1,...a);let l=i[s],u=9===t[0].dataType?4:1,d=Math.ceil(e8.size(o)/u),c=[{type:12,data:d},{type:6,data:l},{type:12,data:s},...tT(t[0].dims,t[1].dims,o)];return{name:"Gather",shaderCache:{hint:r.cacheKey,inputDependencies:["rank","rank"]},getRunData:()=>({outputs:[{dims:o,dataType:t[0].dataType}],dispatchGroup:{x:Math.ceil(d/64)},programUniforms:c}),getShaderSource:r=>{let i=tR("data",t[0].dataType,t[0].dims.length,u),l=tR("inputIndices",t[1].dataType,t[1].dims.length),d=tj("output",t[0].dataType,o.length,u),c=t=>{let r=a.length,u=`var indicesIndices${t} = ${l.type.indices}(0);`;for(let i=0;i<r;i++)u+=`${r>1?`indicesIndices${t}[${i}]`:`indicesIndices${t}`} = ${o.length>1?`outputIndices${t}[uniforms.axis + ${i}]`:`outputIndices${t}`};`;u+=` 1373 var idx${t} = ${l.getByIndices(`indicesIndices${t}`)}; 1374 if (idx${t} < 0) { 1375 idx${t} = idx${t} + uniforms.axisDimLimit; 1376 } 1377 var dataIndices${t} : ${i.type.indices}; 1378 `;
1378for(let i=0,a=0;i<n;i++)i===s?(u+=`${n>1?`dataIndices${t}[${i}]`:`dataIndices${t}`} = u32(idx${t});`,a+=r):(u+=`${n>1?`dataIndices${t}[${i}]`:`dataIndices${t}`} = ${o.length>1?`outputIndices${t}[${a}]`:`outputIndices${t}`};`,a++);return u},h;if(9===t[0].dataType){let t=(t,r,a="")=>` 1379 let outputIndices${r} = ${d.offsetToIndices(`outputOffset + ${r}u`)}; 1380 ${c(r)}; 1381 let offset${r} = ${i.indicesToOffset(`dataIndices${r}`)}; 1382 let index${r} = offset${r} / 4u; 1383 let component${r} = offset${r} % 4u; 1384 ${t}[${r}] = ${a}(${i.getByOffset(`index${r}`)}[component${r}]); 1385 `;h=` 1386 let outputOffset = global_idx * ${u}; 1387 var value = vec4<u32>(0); 1388 ${t("value",0,"u32")} 1389 ${t("value",1,"u32")} 1390 ${t("value",2,"u32")} 1391 ${t("value",3,"u32")} 1392 ${d.setByOffset("global_idx","value")} 1393 `}else h=` 1394 let outputIndices = ${d.offsetToIndices("global_idx")}; 1395 ${c("")}; 1396 let value = ${i.getByIndices("dataIndices")}; 1397 ${d.setByOffset("global_idx","value")}; 1398 `;return` 1399 ${r.registerUniform("outputSize","u32").registerUniform("axisDimLimit","i32").registerUniform("axis","u32").declareVariables(i,l,d)} 1400 ${r.mainStart()} 1401 ${r.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")} 1402 ${h} 1403 }`}}})(t.inputs,r))}}),n0=q(()=>{ng(),nv(),nC(),at=(t,r)=>{let i=t.inputs,a=i[0].dims,n=i[0].dataType,s=i[1].dims,o=s[s.length-1],l=e8.sizeToDimension(s,s.length-1),u=e8.sizeFromDimension(a,r.batchDims+o),d=e8.sizeToDimension(a,r.batchDims),c=e8.sizeFromDimension(a,r.batchDims),h=Array(o),f=u;for(let t=0;t<o;++t)h[o-1-t]=f,f*=a[r.batchDims+o-1-t];let p=((t,r,i,a,n,s,o,l,u)=>{let d=[{type:12,data:s},{type:12,data:a},{type:12,data:n},{type:12,data:i},{type:12,data:o},{type:12,data:l},{type:12,data:u}],c=[s];return d.push(...tT(r.dims,c)),t.compute({name:"computeSliceOffsets",shaderCache:{hint:`${n.length}_${i.length}`,inputDependencies:["rank"]},getRunData:()=>({outputs:[{dims:c,dataType:t.inputs[1].dataType}],dispatchGroup:{x:Math.ceil(s/64)},programUniforms:d}),getShaderSource:t=>{let a=tR("indices_data",r.dataType,r.dims.length),s=tj("input_slice_offsets_data",12,1,1),o=[{name:"output_size",type:"u32"},{name:"batch_dims",type:"u32"},{name:"input_dims",type:"u32",length:n.length},{name:"sizes_from_slice_dims_data",type:"u32",length:i.length},{name:"num_slices_per_batch",type:"u32"},{name:"input_batch_stride",type:"u32"},{name:"num_slice_dims",type:"u32"}];return` 1404 ${t.registerUniforms(o).declareVariables(a,s)} 1405 ${t.mainStart()} 1406 ${t.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} 1407 let batch_idx = global_idx / uniforms.num_slices_per_batch; 1408 let base_offset = batch_idx * uniforms.input_batch_stride; 1409 1410 let slice_indices_base_offset = global_idx * uniforms.num_slice_dims; 1411 var relative_slice_offset = 0; 1412 for (var dim_idx = 0u; dim_idx < uniforms.num_slice_dims; dim_idx ++) { 1413 var index = i32(indices_data[dim_idx + slice_indices_base_offset].x); 1414 let input_dim_idx = uniforms.batch_dims + dim_idx; 1415 if (index < 0) { 1416 ${1===n.length?"index += i32(uniforms.input_dims);":"index += i32(uniforms.input_dims[input_dim_idx]);"} 1417 } 1418 ${1===i.length?"relative_slice_offset += index * i32(uniforms.sizes_from_slice_dims_data);":"relative_slice_offset += index * i32(uniforms.sizes_from_slice_dims_data[dim_idx]);"} 1419 } 1420 1421 input_slice_offsets_data[global_idx] = base_offset + u32(relative_slice_offset); 1422 }`}},{inputs:[r],outputs:[-1]})[0]})(t,i[1],h,r.batchDims,a,l,l/d,c,o),m=r.batchDims+o;if(m>a.length)throw Error("last dimension of indices must not be larger than rank of input tensor");let g=s.slice(0,-1).concat(a.slice(m)),b=e8.size(g),y=[{type:12,data:b},{type:12,data:u},...tT(i[0].dims,p.dims,g)];t.compute({name:"GatherND",shaderCache:{hint:r.cacheKey,inputDependencies:["rank","rank"]},getRunData:()=>({outputs:[{dims:g,dataType:n}],dispatchGroup:{x:Math.ceil(b/64)},programUniforms:y}),getShaderSource:t=>{let r=tR("data",i[0].dataType,i[0].dims.length),a=tR("slice_offsets",12,p.dims.length),n=tj("output",i[0].dataType,g.length);return` 1423 ${t.registerUniform("output_size","u32").registerUniform("slice_size","u32").declareVariables(r,a,n)} 1424 ${t.mainStart()} 1425 ${t.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} 1426 let slice_offset = slice_offsets[global_idx / uniforms.slice_size];
1427 output[global_idx] = data[u32(slice_offset) + global_idx % uniforms.slice_size]; 1428 }`}},{inputs:[i[0],p]})},ar=t=>({batchDims:t.batch_dims,cacheKey:""})}),n2=q(()=>{ng(),nv(),nk(),nC(),ai=(t,r)=>{((t,r)=>{if(t.length<3||t.length>4)throw Error("GatherBlockQuantized requires 3 or 4 inputs.");let i=e8.normalizeAxis(r.quantizeAxis,t[0].dims.length),a=r.blockSize,n=t[0],s=t[2],o=4===t.length?t[3]:void 0;if(s.dims.length!==n.dims.length||!n.dims.map((t,r)=>r===i?Math.ceil(t/a)===s.dims[r]:t===s.dims[r]).reduce((t,r)=>t&&r,!0))throw Error("Scales must have the same rank as the input tensor and the dims should match except on gatherAxis.");if(o){if(o.dataType!==n.dataType)throw Error("Zero point must have the same data type as the input tensor.");if(o.dims.length!==s.dims.length||!o.dims.map((t,r)=>t===s.dims[r]).reduce((t,r)=>t&&r,!0))throw Error("Zero point must have the same rank as the input tensor and the dims should match except on quantizeAxis.")}})(t.inputs,r),t.compute(((t,r)=>{let i=t[0].dims,a=t[1].dims,n=i.length,s=e8.normalizeAxis(r.gatherAxis,n),o=e8.normalizeAxis(r.quantizeAxis,n),l=i.slice(0);l.splice(s,1,...a);let u=e8.size(l),d=t[2].dataType,c=22===t[0].dataType,h=[{type:12,data:u},{type:12,data:o},{type:12,data:s},{type:12,data:r.blockSize},...tT(...t.map((t,r)=>t.dims),l)];return{name:"GatherBlockQuantized",shaderCache:{hint:`${r.cacheKey};${t.filter((t,r)=>1!==r).map(t=>t.dims.join("_")).join(";")}`,inputDependencies:Array.from({length:t.length},(t,r)=>"rank")},getRunData:()=>({outputs:[{dims:l,dataType:d}],dispatchGroup:{x:Math.ceil(u/64)},programUniforms:h}),getShaderSource:r=>{let n=tR("data",t[0].dataType,t[0].dims.length),o=tR("inputIndices",t[1].dataType,t[1].dims.length),u=tR("scales",t[2].dataType,t[2].dims.length),h=t.length>3?tR("zeroPoint",t[3].dataType,t[3].dims.length):void 0,f=tj("output",d,l.length),p=[n,o,u];return h&&p.push(h),` 1429 ${r.registerUniforms([{name:"output_size",type:"u32"},{name:"quantize_axis",type:"u32"},{name:"gather_axis",type:"u32"},{name:"block_size",type:"u32"}]).declareVariables(...p,f)} 1430 ${r.mainStart()} 1431 let output_indices = ${f.offsetToIndices("global_idx")}; 1432 var indices_indices = ${o.type.indices}(0); 1433 ${a.length>1?` 1434 for (var i: u32 = 0; i < ${a.length}; i++) { 1435 let index = ${f.indicesGet("output_indices","uniforms.gather_axis + i")}; 1436 ${o.indicesSet("indices_indices","i","index")}; 1437 }`:`indices_indices = ${f.indicesGet("output_indices","uniforms.gather_axis")};`}; 1438 var data_indices = ${n.type.indices}(0); 1439 for (var i: u32 = 0; i < uniforms.gather_axis; i++) { 1440 let index = ${f.indicesGet("output_indices","i")}; 1441 ${n.indicesSet("data_indices","i","index")}; 1442 } 1443 var index_from_indices = ${o.getByIndices("indices_indices")}; 1444 if (index_from_indices < 0) { 1445 index_from_indices += ${i[s]}; 1446 } 1447 ${n.indicesSet("data_indices","uniforms.gather_axis","u32(index_from_indices)")}; 1448 for (var i = uniforms.gather_axis + 1; i < ${l.length}; i++) { 1449 let index = ${f.indicesGet("output_indices",`i + ${a.length} - 1`)}; 1450 ${n.indicesSet("data_indices","i","index")}; 1451 } 1452 let data_offset = ${n.indicesToOffset("data_indices")}; 1453 let data_index = data_offset % 8; 1454 // Convert 4-bit packed data to 8-bit packed data. 1455 let packed_4bit_quantized_data = ${n.getByOffset("data_offset / 8")}; 1456 let packed_8bit_quantized_data = (packed_4bit_quantized_data >> (4 * (data_index % 2))) & 0x0f0f0f0f; 1457 let quantized_data_vec = ${c?"unpack4xI8":"unpack4xU8"}(u32(packed_8bit_quantized_data)); 1458 let quantized_data = quantized_data_vec[data_index / 2]; 1459 var scale_indices = data_indices; 1460 let quantize_axis_index = ${u.indicesGet("data_indices","uniforms.quantize_axis")} / uniforms.block_size; 1461 ${u.indicesSet("scale_indices","uniforms.quantize_axis","quantize_axis_index")}; 1462 var scale = ${u.getByIndices("scale_indices")}; 1463 ${h?` 1464 let zero_point_indices = scale_indices; 1465 let zero_point_offset = ${h.indicesToOffset("zero_point_indices")}; 1466 let zero_point_index = zero_point_offset % 8; 1467 let packed_4bit_zero_points = ${h.getByOffset("zero_point_offset / 8")}; 1468 let packed_8bit_zero_points = (packed_4bit_zero_points >> (4 * (zero_point_index % 2))) & 0x0f0f0f0f; 1469 let zero_point_vec = ${c?"unpack4xI8":"unpack4xU8"}(u32(packed_8bit_zero_points)); 1470 let zero_point = zero_point_vec[zero_point_index / 2];`:"var zero_point = 0"}; 1471 let dequantized_data = ${tE(d)}(quantized_data - zero_point) * scale; 1472 ${f.setByOffset("global_idx","dequantized_data")}; 1473 }`}}})(t.inputs,r))},aa=t=>t$({blockSize:t.blockSize,gatherAxis:t.gatherAxis,quantizeAxis:t.quantizeAxis})}),n3=q(()=>{ng(),nv(),nk(),nC(),an=t=>t$({axis:t.axis}),as=(t,r)=>{(t=>{if(!t||2!==t.length)throw Error("GatherElements requires 2 inputs.");if(t[0].dims.length<1)throw Error("GatherElements requires that the data input be rank >= 1.");if(t[0].dims.length!==t[1].dims.length)throw Error(`GatherElements requires that the data input and 1474 indices input tensors be of same rank.`)})(t.inputs),t.compute(((t,r)=>{let i=t[0].dims,a=t[0].dataType,n=i.length,s=t[1].dims,o=t[1].dataType,l=e8.normalizeAxis(r.axis,n),u=i[l],d=s.slice(0),c=e8.size(d),h=tR("input",a,n),f=tR("indicesInput",o,s.length),p=tj("output",a,d.length),m=[{type:12,data:c},{type:6,data:u},{type:12,data:l}];return m.push(...tT(i,s,d)),{name:"GatherElements",shaderCache:{inputDependencies:["rank","rank"]},getRunData:()=>({outputs:[{dims:d,dataType:t[0].dataType}],dispatchGroup:{x:Math.ceil(c/64)},programUniforms:m}),getShaderSource:t=>` 1475 ${t.registerUniform("outputSize","u32").registerUniform("axisDimLimit","i32").registerUniform("axis","u32").declareVariables(h,f,p)} 1476 ${t.mainStart()} 1477 ${t.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")} 1478 1479 let outputIndices = ${p.offsetToIndices("global_idx")}; 1480 1481 var idx = ${f.getByOffset("global_idx")}; 1482 if (idx < 0) { 1483 idx = idx + uniforms.axisDimLimit; 1484 } 1485 var inputIndices = ${h.type.indices}(outputIndices); 1486 ${h.indicesSet("inputIndices","uniforms.axis","u32(idx)")}; 1487 let value = ${h.getByIndices("inputIndices")}; 1488 1489 ${p.setByOffset("global_idx","value")}; 1490 }`}})(t.inputs,r))}}),n4=q(()=>{ng(),nv(),nC(),ao=t=>({transA:t.transA,transB:t.transB,alpha:t.alpha,beta:t.beta,cacheKey:`${t.transA};${t.transB};${1===t.alpha}`}),al=(t,r)=>{(t=>{if(!t)throw Error("Input is missing");if(t.length<2||t.length>3)throw Error("Invaid input number.");if(3===t.length&&t[2].dims.length>2)throw Error("Invalid input shape of C");if(t[0].dataType!==t[1].dataType||3===t.length&&t[0].dataType!==t[2].dataType)throw Error("Input types are mismatched")})(t.inputs),t.compute(((t,r)=>{let i=t[0].dims.slice(),a=t[1].dims.slice(),[n,s,o]=e6.getShapeOfGemmResult(i,r.transA,a,r.transB,3===t.length?t[2].dims:void 0),l=[n,s];if(!l)throw Error("Can't use gemm on the given tensors");let u=Math.ceil(s/16),d=Math.ceil(n/16),c=(e8.size(l),[{type:12,data:u},{type:12,data:n},{type:12,data:s},{type:12,data:o},{type:1,data:r.alpha},{type:1,data:r.beta}]),h=["type","type"];return 3===t.length&&(c.push(...tT(t[2].dims)),h.push("rank")),c.push(...tT(l)),{name:"GemmShared",shaderCache:{hint:`${r.cacheKey}`,inputDependencies:h},getRunData:()=>({outputs:[{dims:l,dataType:t[0].dataType}],dispatchGroup:{x:u*d},programUniforms:c}),getShaderSource:i=>{let a=tR("a",t[0].dataType,t[0].dims),n=tR("b",t[1].dataType,t[1].dims),s=null,o=[a,n];3===t.length&&(s=tR("c",t[2].dataType,t[2].dims.length),o.push(s));let u=tj("output",t[0].dataType,l.length);o.push(u);let d="",c="";r.transA&&r.transB?(c=` 1491 var col = tile_row_start + local_id.x; 1492 var row = k_start + local_id.y; 1493 if (col < uniforms.M && row < uniforms.K) { 1494 tile_a[local_id.y][local_id.x] = a[row * uniforms.M + col]; 1495 } else { 1496 tile_a[local_id.y][local_id.x] = ${a.type.value}(0); 1497 } 1498 1499 col = k_start + local_id.x; 1500 row = tile_col_start + local_id.y; 1501 if (col < uniforms.K && row < uniforms.N) { 1502 tile_b[local_id.y][local_id.x] = b[row * uniforms.K + col]; 1503 } else { 1504 tile_b[local_id.y][local_id.x] = ${n.type.value}(0); 1505 } 1506 `,d="value += tile_a[k][local_id.y] * tile_b[local_id.x][k];"):r.transA&&!r.transB?(c=` 1507 var col = tile_row_start + local_id.x; 1508 var row = k_start + local_id.y; 1509 if (col < uniforms.M && row < uniforms.K) { 1510 tile_a[local_id.y][local_id.x] = a[row * uniforms.M + col]; 1511 } else { 1512 tile_a[local_id.y][local_id.x] = ${a.type.value}(0); 1513 } 1514 1515 col = tile_col_start + local_id.x; 1516 row = k_start + local_id.y; 1517 if (col < uniforms.N && row < uniforms.K) { 1518 tile_b[local_id.y][local_id.x] = b[row * uniforms.N + col]; 1519 } else { 1520 tile_b[local_id.y][local_id.x] = ${n.type.value}(0); 1521 } 1522 `,d="value += tile_a[k][local_id.y] * tile_b[k][local_id.x];"):!r.transA&&r.transB?(c=` 1523 var col = k_start + local_id.x; 1524 var row = tile_row_start + local_id.y; 1525 if (col < uniforms.K && row < uniforms.M) { 1526 tile_a[local_id.y][local_id.x] = a[row * uniforms.K + col]; 1527 } else { 1528 tile_a[local_id.y][local_id.x] = ${a.type.value}(0); 1529 } 1530 1531 col = k_start + local_id.x; 1532 row = tile_col_start + local_id.y; 1533 if (col < uniforms.K && row < uniforms.N) { 1534 tile_b[local_id.y][local_id.x] = b[row * uniforms.K + col]; 1535 } else { 1536 tile_b[local_id.y][local_id.x] = ${n.type.value}(0); 1537 } 1538 `,d="value += tile_a[local_id.y][k] * tile_b[local_id.x][k];"):r.transA||r.transB||(c=` 1539 var col = k_start + local_id.x; 1540 var row = tile_row_start + local_id.y; 1541 if (col < uniforms.K && row < uniforms.M) { 1542 tile_a[local_id.y][local_id.x] = a[row * uniforms.K + col]; 1543 } else { 1544 tile_a[local_id.y][local_id.x] = ${a.type.value}(0); 1545 } 1546 1547 col = tile_col_start + local_id.x; 1548 row = k_start + local_id.y; 1549 if (col < uniforms.N && row < uniforms.K) { 1550 tile_b[local_id.y][local_id.x] = b[row * uniforms.N + col]; 1551 } else { 1552 tile_b[local_id.y][local_id.x] = ${n.type.value}(0); 1553 } 1554 `,d="value += tile_a[local_id.y][k] * tile_b[k][local_id.x];");let h=1===r.alpha?"":"value *= uniforms.alpha;";return` 1555 ${i.registerUniforms([{name:"num_tile_n",type:"u32"},{name:"M",type:"u32"},{name:"N",type:"u32"},{name:"K",type:"u32"},{name:"alpha",type:"f32"},{name:"beta",type:"f32"}]).declareVariables(...o)} 1556 var<workgroup> tile_a: array<array<${a.type.storage}, 16>, 16>;
1557 var<workgroup> tile_b: array<array<${n.type.storage}, 16>, 16>; 1558 ${i.mainStart([16,16,1])} 1559 let tile_col_start = (workgroup_index % uniforms.num_tile_n) * 16; 1560 let tile_row_start = (workgroup_index / uniforms.num_tile_n) * 16; 1561 let num_tiles = (uniforms.K - 1) / 16 + 1; 1562 var k_start = 0u; 1563 var value = ${u.type.value}(0); 1564 for (var t: u32 = 0u; t < num_tiles; t++) { 1565 ${c} 1566 k_start = k_start + 16; 1567 workgroupBarrier(); 1568 1569 for (var k: u32 = 0u; k < 16; k++) { 1570 ${d} 1571 } 1572 workgroupBarrier(); 1573 } 1574 1575 ${h} 1576 let m = tile_row_start + local_id.y; 1577 let n = tile_col_start + local_id.x; 1578 ${null!=s?`let cOffset = ${s.broadcastedIndicesToOffset("vec2(m, n)",u)}; value += ${u.type.value}(uniforms.beta) * ${s.getByOffset("cOffset")};`:""} 1579 if (m < uniforms.M && n < uniforms.N) { 1580 output[m * uniforms.N + n] = value; 1581 } 1582 }`}}})(t.inputs,r))}}),n8=q(()=>{ng(),nv(),nk(),nC(),[au,ad,ac,ah]=[0,1,2,3],af=` 1583 fn gs_get_cubic_coeffs(x: f32) -> vec4<f32> { 1584 let cubic_alpha = -0.75f; 1585 let x_abs = abs(x); 1586 var coeffs: vec4<f32>; 1587 coeffs[0] = (((cubic_alpha * (x_abs + 1) - 5 * cubic_alpha) * (x_abs + 1) + 8 * cubic_alpha) * (x_abs + 1) - 4 * cubic_alpha); 1588 coeffs[1] = (((cubic_alpha + 2) * x_abs - (cubic_alpha + 3)) * x_abs * x_abs + 1); 1589 coeffs[2] = (((cubic_alpha + 2) * (1 - x_abs) - (cubic_alpha + 3)) * (1 - x_abs) * (1 - x_abs) + 1); 1590 coeffs[3] = (((cubic_alpha * (2 - x_abs) - 5 * cubic_alpha) * (2 - x_abs) + 8 * cubic_alpha) * (2 - x_abs) - 4 * cubic_alpha); 1591 return coeffs; 1592 } 1593`,ap=(t,r)=>{(t=>{if(4!==t[0].dims.length)throw Error("only 4-D tensor is supported.");if(t[0].dims.length!==t[1].dims.length)throw Error("input dimensions must be equal to grid dimensions");if(t[0].dims.length-2!==t[1].dims[t[1].dims.length-1])throw Error(`last dimension of grid must be equal to ${t[0].dims.length-2}`);if(t[0].dims[0]!==t[1].dims[0])throw Error("grid batch size must match input batch size")})(t.inputs),t.compute(((t,r)=>{let i=tR("x",t[0].dataType,t[0].dims.length),a=[t[1].dims[0],t[1].dims[1],t[1].dims[2]],n=tR("grid",t[1].dataType,a.length,2),s=[t[0].dims[0],t[0].dims[1],t[1].dims[1],t[1].dims[2]];"NHWC"===r.format&&(s=[t[0].dims[0],t[1].dims[1],t[1].dims[2],t[0].dims[3]],[au,ad,ac,ah]=[0,3,1,2]);let o=tj("output",t[0].dataType,s.length),l=i.type.value,u=[{type:12,data:e8.size(s)},...tT(t[0].dims,a,s)];return{name:"GridSample",shaderCache:{hint:`${r.cacheKey}`,inputDependencies:["type","type"]},getRunData:t=>{let r=e8.size(s);return{outputs:[{dims:s,dataType:t[0].dataType}],dispatchGroup:{x:Math.ceil(r/64)},programUniforms:u}},getShaderSource:t=>{let a,s;return` 1594 ${t.registerUniform("output_size","u32").declareVariables(i,n,o)} 1595 ${af} 1596 ${(t=>` 1597 fn gs_bicubic_interpolate(p: mat4x4<${t}>, x: f32, y: f32) -> ${t} { 1598 var v: vec4<f32>; 1599 var coeffs = gs_get_cubic_coeffs(x); 1600 for (var i = 0; i < 4; i++) { 1601 v[i] = coeffs[0] * p[i][0] + coeffs[1] * p[i][1] + coeffs[2] * p[i][2] + coeffs[3] * p[i][3]; 1602 } 1603 coeffs = gs_get_cubic_coeffs(y); 1604 let pixel = ${t}(coeffs[0] * v[0] + coeffs[1] * v[1] + coeffs[2] * v[2] + coeffs[3] * v[3]); 1605 return pixel; 1606 } 1607`)(l)} 1608 ${a=r,` 1609 fn gs_denormalize(n: f32, length: i32) -> f32 { 1610 ${0===a.alignCorners?` 1611 // alignCorners: false => [-1, 1] to [-0.5, length - 0.5] 1612 return ((n + 1.0) * f32(length) - 1.0) / 2.0; 1613 `:` 1614 // alignCorners: true => [-1, 1] to [0, length - 1] 1615 return (n + 1.0) / 2.0 * (f32(length - 1)); 1616 `} 1617 } 1618`} 1619 ${s=r,` 1620 ${"reflection"===s.paddingMode?` 1621 fn gs_reflect(x: i32, x_min: f32, x_max: f32) -> u32 { 1622 var dx = 0.0; 1623 var fx = f32(x); 1624 let range = x_max - x_min; 1625 if (fx < x_min) { 1626 dx = x_min - fx; 1627 let n = u32(dx / range); 1628 let r = dx - f32(n) * range; 1629 if (n % 2 == 0) { 1630 fx = x_min + r; 1631 } else { 1632 fx = x_max - r; 1633 } 1634 } else if (fx > x_max) { 1635 dx = fx - x_max; 1636 let n = u32(dx / range); 1637 let r = dx - f32(n) * range; 1638 if (n % 2 == 0) { 1639 fx = x_max - r; 1640 } else { 1641 fx = x_min + r; 1642 } 1643 } 1644 return u32(fx); 1645 }`:""} 1646`} 1647 ${((t,r,i)=>` 1648 fn pixel_at_grid(r: i32, c: i32, H: i32, W: i32, batch: u32, channel: u32, border: vec4<f32>) -> ${r} { 1649 var pixel = ${r}(0); 1650 var indices = vec4<u32>(0); 1651 indices[${au}] = batch; 1652 indices[${ad}] = channel;`+(()=>{switch(i.paddingMode){case"zeros":return` 1653 if (r >= 0 && r < H && c >=0 && c < W) { 1654 indices[${ac}] = u32(r); 1655 indices[${ah}] = u32(c); 1656 } else { 1657 return ${r}(0); 1658 } 1659 `;case"border":return` 1660 indices[${ac}] = u32(clamp(r, 0, H - 1)); 1661 indices[${ah}] = u32(clamp(c, 0, W - 1)); 1662 `;case"reflection":return` 1663 indices[${ac}] = gs_reflect(r, border[1], border[3]); 1664 indices[${ah}] = gs_reflect(c, border[0], border[2]); 1665 `;default:throw Error(`padding mode ${i.paddingMode} is not supported`)}})()+` 1666 return ${t.getByIndices("indices")}; 1667 } 1668`)(i,l,r)} 1669 1670 ${t.mainStart()} 1671 ${t.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} 1672 let H_in = i32(uniforms.x_shape[${ac}]); 1673 let W_in = i32(uniforms.x_shape[${ah}]); 1674 1675 ${0===r.alignCorners?` 1676 let x_min = -0.5; 1677 let x_max = f32(W_in) - 0.5; 1678 let y_min = -0.5; 1679 let y_max = f32(H_in) - 0.5; 1680 `:` 1681 let x_min = 0.0; 1682 let x_max = f32(W_in) - 1.0; 1683 let y_min = 0.0; 1684 let y_max = f32(H_in) - 1.0; 1685 `}; 1686 let border = vec4<f32>(x_min, y_min, x_max, y_max); 1687 1688 let indices = ${o.offsetToIndices("global_idx")}; 1689 var grid_indices = vec3<u32>(indices[${au}], indices[${ac}], indices[${ah}]); 1690 let nxy = ${n.getByIndices("grid_indices")}; 1691 var x = gs_denormalize(f32(nxy[0]), W_in); 1692 var y = gs_denormalize(f32(nxy[1]), H_in); 1693 1694 ${((t,r,i)=>(()=>{switch(i.mode){case"nearest":return` 1695 let result = pixel_at_grid(i32(round(y)), i32(round(x)), H_in, W_in, indices[${au}], indices[${ad}], border); 1696 `;case"bilinear":return` 1697 let x1 = i32(floor(x)); 1698 let y1 = i32(floor(y)); 1699 let x2 = x1 + 1; 1700 let y2 = y1 + 1; 1701 1702 let p11 = pixel_at_grid(y1, x1, H_in, W_in, indices[${au}], indices[${ad}], border); 1703 let p12 = pixel_at_grid(y1, x2, H_in, W_in, indices[${au}], indices[${ad}], border); 1704 let p21 = pixel_at_grid(y2, x1, H_in, W_in, indices[${au}], indices[${ad}], border); 1705 let p22 = pixel_at_grid(y2, x2, H_in, W_in, indices[${au}], indices[${ad}], border); 1706 1707 let dx2 = ${r}(f32(x2) - x); 1708 let dx1 = ${r}(x - f32(x1)); 1709 let dy2 = ${r}(f32(y2) - y); 1710 let dy1 = ${r}(y - f32(y1)); 1711 let result = dy2 * (dx2 * p11 + dx1 * p12) + dy1 * (dx2 * p21 + dx1 * p22); 1712 `;case"bicubic":return` 1713 let x0 = i32(floor(x)) - 1; 1714 let y0 = i32(floor(y)) - 1; 1715 var p: mat4x4<${r}>; 1716 for (var h = 0; h < 4; h++) { 1717 for (var w = 0; w < 4; w++) {
1718 p[h][w] = pixel_at_grid(h + y0, w + x0, H_in, W_in, indices[${au}], indices[${ad}], border); 1719 } 1720 } 1721 1722 let dx = x - f32(x0 + 1); 1723 let dy = y - f32(y0 + 1); 1724 let result = gs_bicubic_interpolate(p, dx, dy); 1725 `;default:throw Error(`mode ${i.mode} is not supported`)}})()+`${t.setByOffset("global_idx","result")}`)(o,l,r)} 1726 }`}}})(t.inputs,r))},am=t=>t$({alignCorners:t.align_corners,mode:t.mode,paddingMode:t.padding_mode,format:t.format})}),n7=q(()=>{ng(),nv(),nk(),n$(),nN(),nC(),nE(),ag=(t,r)=>t.length>r&&t[r].dims.length>0?t[r]:void 0,ab=t=>t$({...t}),ay=t$({perm:[0,2,1,3]}),av=(t,r,i,a,n,s,o,l)=>{let u=s;if(!(o&&e8.size(o.dims)>0))return 3===s.dims.length&&(u=s.reshape([r,a,i,n])),1===i||1===a?u:t.compute(tF(u,ay.perm),{inputs:[u],outputs:[-1]})[0];if(1===a)throw Error("AddBiasReshape is not implemented. Please export your model with packed QKV or KV");return u=(u=((t,r,i,a,n,s,o)=>{let l=[a,n,s],u=e8.size(l),d=[{type:12,data:u},{type:12,data:o},{type:12,data:s}];return t.compute({name:"MultiHeadAttentionAddBias",shaderCache:{inputDependencies:["type","type"]},getRunData:()=>({outputs:[{dims:l,dataType:r.dataType,gpuDataType:0}],dispatchGroup:{x:Math.ceil(u/64)},programUniforms:d}),getShaderSource:t=>{let a=tj("qkv_with_bias",r.dataType,l),n=tR("qkv",r.dataType,l),s=tR("bias",i.dataType,l);return` 1727 ${t.registerUniforms([{name:"output_size",type:"u32"},{name:"bias_offset",type:"u32"},{name:"hidden_size",type:"u32"}]).declareVariables(n,s,a)} 1728 ${t.mainStart()} 1729 ${t.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} 1730 let bias_offset_idx = (global_idx % uniforms.hidden_size) + uniforms.bias_offset; 1731 1732 qkv_with_bias[global_idx] = qkv[global_idx] + bias[bias_offset_idx]; 1733 }`}},{inputs:[r,i],outputs:[-1]})[0]})(t,s,o,r,a,i*n,l)).reshape([r,a,i,n]),1===i||1===a?u:t.compute(tF(u,ay.perm),{inputs:[u],outputs:[-1]})[0]},a_=(t,r)=>{let i=((t,r)=>{let i,a=t[0],n=ag(t,1),s=ag(t,2),o=ag(t,3),l=ag(t,4),u=ag(t,5),d=ag(t,6),c=ag(t,7);if(3!==a.dims.length&&5!==a.dims.length)throw Error("Input query is expected to have 3 or 5 dimensions");let h=a.dims[0],f=a.dims[1],p=3===a.dims.length?a.dims[2]:r.numHeads*a.dims[4],m=f,g=0,b=0,y=Math.floor(p/r.numHeads);if(d&&c&&e8.size(d.dims)&&e8.size(c.dims)){if(4!==d.dims.length)throw Error('Input "past_key" is expected to have 4 dimensions');if(d.dims[0]!==h||d.dims[1]!==r.numHeads||d.dims[3]!==y)throw Error('Input "past_key" shape (batch_size, num_heads, past_sequence_length, head_size)');if(c.dims[0]!==h||c.dims[1]!==r.numHeads||c.dims[3]!==y)throw Error('Input "past_value" shape (batch_size, num_heads, past_sequence_length, head_size)');if(d.dims[2]!==c.dims[2])throw Error('Input "past_key" and "past_value" shall have same dim 2 (past_sequence_length)');if(4!==c.dims.length)throw Error('Input "past_value" is expected to have 4 dimensions');g=d.dims[2],b=d.dims[2]}else if(d&&e8.size(d.dims)||c&&e8.size(c.dims))throw Error('Input "past_key" and "past_value" shall be both present or both absent');if(n&&e8.size(n.dims)>0){if(3!==a.dims.length)throw Error('Input "query" is expected to have 3 dimensions when key is given');if(n.dims.length<3||n.dims.length>5)throw Error('Input "key" is expected to have 3, 4, or 5 dimensions');if(a.dims[0]!==n.dims[0])throw Error('Input "query" and "key" shall have same dim 0 (batch size)');if(3===n.dims.length){if(n.dims[2]!==a.dims[2])throw Error('Input "query" and "key" shall have same dim 2 (hidden_size)');i=2,m=n.dims[1]}else if(5===n.dims.length){if(n.dims[2]!==r.numHeads||2!==n.dims[3]||n.dims[4]!==y)throw Error('Expect "key" shape (batch_size, kv_sequence_length, num_heads, 2, head_size) for packed kv');if(s)throw Error('Expect "value" be none when "key" has packed kv format.');i=5,m=n.dims[1]}else{if(n.dims[1]!==r.numHeads||n.dims[3]!==y)throw Error('Expect "key" shape (batch_size, num_heads, kv_sequence_length, head_size) for past_key');i=0,m=n.dims[2]}}else{if(5!==a.dims.length)throw Error('Input "query" is expected to have 5 dimensions when key is empty');if(a.dims[2]!==r.numHeads||3!==a.dims[3])throw Error('Expect "query" shape (batch_size, kv_sequence_length, num_heads, 3, head_size) for packed kv');i=3}if(o&&e8.size(o.dims)>0){if(1!==o.dims.length)throw Error('Input "bias" is expected to have 1 dimension');
1733if(n&&5===n.dims.length&&2===n.dims[3])throw Error("bias is not allowed for packed kv.")}let v=g+m,_=0;if(l&&e8.size(l.dims)>0){_=8;let t=l.dims;throw 1===t.length?t[0]===h?_=1:t[0]===3*h+2&&(_=3):2===t.length&&t[0]===h&&t[1]===v&&(_=5),8===_?Error('Input "key_padding_mask" shape shall be (batch_size) or (batch_size, total_sequence_length)'):Error("Mask not supported")}let w=!1,x=p;if(s&&e8.size(s.dims)>0){if(3!==s.dims.length&&4!==s.dims.length)throw Error('Input "value" is expected to have 3 or 4 dimensions');if(a.dims[0]!==s.dims[0])throw Error('Input "query" and "value" shall have same dim 0 (batch_size)');if(3===s.dims.length){if(m!==s.dims[1])throw Error('Input "key" and "value" shall have the same dim 1 (kv_sequence_length)');x=s.dims[2]}else{if(m!==s.dims[2])throw Error('Input "key" and "value" shall have the same dim 2 (kv_sequence_length)');x=s.dims[1]*s.dims[3],w=!0}}if(l&&e8.size(l.dims)>0)throw Error("Key padding mask is not supported");if(u&&e8.size(u.dims)>0){if(4!==u.dims.length)throw Error('Input "attention_bias" is expected to have 4 dimensions');if(u.dims[0]!==h||u.dims[1]!==r.numHeads||u.dims[2]!==f||u.dims[3]!==v)throw Error('Expect "attention_bias" shape (batch_size, num_heads, sequence_length, total_sequence_length)')}return{batchSize:h,sequenceLength:f,pastSequenceLength:g,kvSequenceLength:m,totalSequenceLength:v,maxSequenceLength:b,inputHiddenSize:0,hiddenSize:p,vHiddenSize:x,headSize:y,vHeadSize:Math.floor(x/r.numHeads),numHeads:r.numHeads,isUnidirectional:!1,pastPresentShareBuffer:!1,maskFilterValue:r.maskFilterValue,maskType:_,scale:r.scale,broadcastResPosBias:!1,passPastInKv:w,qkvFormat:i}})(t.inputs,r),a=t.inputs[0],n=ag(t.inputs,1),s=ag(t.inputs,2),o=ag(t.inputs,3),l=ag(t.inputs,4),u=ag(t.inputs,5),d=ag(t.inputs,6),c=ag(t.inputs,7);if(5===a.dims.length)throw Error("Packed QKV is not implemented");if(n?.dims.length===5)throw Error("Packed KV is not implemented");let h=n&&s&&4===n.dims.length&&4===s.dims.length,f=av(t,i.batchSize,i.numHeads,i.sequenceLength,i.headSize,a,o,0);if(h)return rb(t,f,n,s,l,void 0,d,c,u,i);if(!n||!s)throw Error("key and value must be provided");let p=av(t,i.batchSize,i.numHeads,i.kvSequenceLength,i.headSize,n,o,i.hiddenSize),m=av(t,i.batchSize,i.numHeads,i.kvSequenceLength,i.vHeadSize,s,o,2*i.hiddenSize);rb(t,f,p,m,l,void 0,d,c,u,i)}}),n6=q(()=>{ng(),nv(),nk(),nC(),aw=(t,r)=>{let i=t[0].dims,a=e8.size(i),n=t[0].dataType,s=e8.normalizeAxis(r.axis,i.length),o=Array(r.numOutputs),l=tR("input",n,i.length),u=Array(r.numOutputs),d=[],c=[],h=0,f=[{type:12,data:a}];for(let a=0;a<r.numOutputs;a++){h+=r.splitSizes[a],u[a]=h;let l=i.slice();l[s]=r.splitSizes[a],c.push(l),o[a]=tj(`output${a}`,n,l.length),d.push({dims:c[a],dataType:t[0].dataType})}return f.push({type:12,data:u},...tT(i,...c)),{name:"Split",shaderCache:{hint:r.cacheKey,inputDependencies:["rank"]},getShaderSource:t=>` 1734 ${t.registerUniform("input_size","u32").registerUniform("size_in_split_axis","u32",u.length).declareVariables(l,...o)} 1735 ${(t=>` 1736fn calculateOutputIndex(index: u32) -> u32 { 1737 for (var i: u32 = 0u; i < ${t}u; i += 1u ) { 1738 if (index < ${tM("uniforms.size_in_split_axis","i",t)}) { 1739 return i; 1740 } 1741 } 1742 return ${t}u; 1743}`)(u.length)} 1744 ${(t=>{let r=t.length,i=[];for(let a=0;a<r;++a){let n=t[a].setByIndices("indices","input[global_idx]");1===r?i.push(n):0===a?i.push(`if (output_number == ${a}u) { ${n} }`):a===r-1?i.push(`else { ${n} }`):i.push(`else if (output_number == ${a}) { ${n} }`)}return` 1745 fn writeBufferData(output_number: u32, indices: ${t[0].type.indices}, global_idx: u32) { 1746 ${i.join(` 1747`)} 1748 }`})(o)} 1749 1750 ${t.mainStart()} 1751 ${t.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.input_size")} 1752 1753 var indices = ${l.offsetToIndices("global_idx")}; 1754 var index = ${l.indicesGet("indices",s)}; 1755 let output_number = calculateOutputIndex(index); 1756 if (output_number != 0) { 1757 index -= ${tM("uniforms.size_in_split_axis","output_number - 1u",u.length)}; 1758 ${l.indicesSet("indices",s,"index")}; 1759 } 1760 writeBufferData(output_number, indices, global_idx); 1761 }`,getRunData:()=>({outputs:d,dispatchGroup:{x:Math.ceil(a/64)},programUniforms:f})}},ax=(t,r)=>{(t=>{if(!t||t.length<1)throw Error("too few inputs")})(t.inputs);let i=1===t.inputs.length?r:((t,r)=>{let i=[],a=r.numOutputs;return t[1].dims[0]>
17610&&(t[1].getBigInt64Array().forEach(t=>i.push(Number(t))),a=i.length),t$({numOutputs:a,axis:r.axis,splitSizes:i})})(t.inputs,r);t.compute(aw(t.inputs,i),{inputs:[0]})},a$=t=>{let r=t.axis,i=t.splitSizes,a=t.numOutputs<0?i.length:t.numOutputs;if(a!==i.length)throw Error("numOutputs and splitSizes length must be equal");return t$({axis:r,numOutputs:a,splitSizes:i})}}),n5=q(()=>{ng(),nv(),nk(),nC(),aS=(t,r)=>{let{interleaved:i,numHeads:a,rotaryEmbeddingDim:n,scale:s}=r,o=t[0].dims[0],l=e8.sizeFromDimension(t[0].dims,1),u=t[0].dims[t[0].dims.length-2],d=l/u,c=t[2].dims[1],h=0===n?2*c:d/a,f=[o,u,d/h,h-c],p=e8.computeStrides(f),m=[{type:1,data:s},{type:12,data:f},{type:12,data:p},...3===t[0].dims.length?Array({type:12,data:[l,d,h,1]}):[],...4===t[0].dims.length?Array({type:12,data:[l,h,u*h,1]}):[],...tT(t[0].dims,t[1].dims,t[2].dims,t[3].dims,t[0].dims)];return{name:"RotaryEmbedding",shaderCache:{hint:t$({interleaved:i}).cacheKey,inputDependencies:["rank","rank","rank","rank"]},getShaderSource:r=>{let a=tR("input",t[0].dataType,t[0].dims.length),n=tR("position_ids",t[1].dataType,t[1].dims.length),s=tR("cos_cache",t[2].dataType,t[2].dims.length),o=tR("sin_cache",t[3].dataType,t[3].dims.length),l=tj("output",t[0].dataType,t[0].dims.length);return r.registerUniforms([{name:"scale",type:"f32"},{name:"global_shape",type:"u32",length:f.length},{name:"global_strides",type:"u32",length:p.length},{name:"input_output_strides",type:"u32",length:p.length}]),` 1762 ${r.declareVariables(a,n,s,o,l)} 1763 1764 ${r.mainStart(tS)} 1765 let half_rotary_emb_dim = uniforms.${s.name}_shape[1]; 1766 let bsnh = global_idx / uniforms.global_strides % uniforms.global_shape; 1767 let size = uniforms.global_shape[0] * uniforms.global_strides[0]; 1768 ${r.guardAgainstOutOfBoundsWorkgroupSizes("size")} 1769 1770 if (bsnh[3] < half_rotary_emb_dim) { 1771 let position_ids_idx = 1772 ${n.broadcastedIndicesToOffset("bsnh.xy",tj("",n.type.tensor,2))}; 1773 let position_id = 1774 u32(${n.getByOffset("position_ids_idx")}) + select(0, bsnh[1], position_ids_idx == 0); 1775 let i = dot(bsnh, uniforms.input_output_strides) + select(0, bsnh[3], ${i}); 1776 let j = i + select(half_rotary_emb_dim, 1, ${i}); 1777 let re = ${a.getByOffset("i")} * ${s.get("position_id","bsnh[3]")} - 1778 ${a.getByOffset("j")} * ${o.get("position_id","bsnh[3]")}; 1779 ${l.setByOffset("i","re")} 1780 let im = ${a.getByOffset("i")} * ${o.get("position_id","bsnh[3]")} + 1781 ${a.getByOffset("j")} * ${s.get("position_id","bsnh[3]")}; 1782 ${l.setByOffset("j","im")} 1783 } else { 1784 let k = dot(bsnh, uniforms.input_output_strides) + half_rotary_emb_dim; 1785 ${l.setByOffset("k",a.getByOffset("k"))} 1786 } 1787 }`},getRunData:()=>({outputs:[{dims:t[0].dims,dataType:t[0].dataType}],dispatchGroup:{x:Math.ceil(e8.size(f)/tS)},programUniforms:m})}},ak=(t,r)=>{((t,r)=>{let[i,a,n,s]=t,{numHeads:o,rotaryEmbeddingDim:l}=r;if(3!==i.dims.length&&4!==i.dims.length)throw Error(`Input 'x' is expected to have 3 or 4 dimensions, got ${i.dims.length}`);if(!e8.areEqual(a.dims,[])&&!e8.areEqual(a.dims,[1])&&2!==a.dims.length)throw Error(`Input 'position_ids' is expected to have 0, 1, or 2 dimensions, got ${a.dims.length}`);if(2!==n.dims.length)throw Error(`Input 'cos_cache' is expected to have 2 dimensions, got ${n.dims.length}`);if(2!==s.dims.length)throw Error(`Input 'sin_cache' is expected to have 2 dimensions, got ${s.dims.length}`);if(!e8.areEqual(n.dims,s.dims))throw Error("Inputs 'cos_cache' and 'sin_cache' are expected to have the same shape");if(l>0&&0===o)throw Error("num_heads must be provided if rotary_embedding_dim is specified");let u=i.dims[0],d=i.dims[i.dims.length-2],c=n.dims[0],h=e8.sizeFromDimension(i.dims,1)/d,f=0===l?2*n.dims[1]:h/o;if(l>f)throw Error("rotary_embedding_dim must be less than or equal to head_size");if(2===a.dims.length){if(u!==a.dims[0])throw Error(`Input 'position_ids' dimension 0 should be of size batch_size, got ${a.dims[0]}`);if(d!==a.dims[1])throw Error(`Input 'position_ids' dimension 1 should be of size sequence_length, got ${a.dims[1]}`)}if(f/2!==n.dims[1]&&l/2!==n.dims[1])throw Error(`Input 'cos_cache' dimension 1 should be same as head_size / 2 or rotary_embedding_dim / 2, got ${n.dims[1]}`);if(d>c)throw Error("Updating cos_cache and sin_cache in RotaryEmbedding is not currently supported")})(t.inputs,r),t.compute(aS(t.inputs,r))}}),n9=q(()=>{nk(),ng(),nN(),n7(),n6(),nE(),n5(),nC(),aC=t$({perm:[0,2,1,3]}),aE=(t,r,i)=>{let a=r,n=i.kvNumHeads;return 3===r.dims.length&&0!==i.kvSequenceLength&&(a=r.reshape([i.batchSize,i.kvSequenceLength,n,i.headSize]),a=t.compute(tF(a,aC.perm),{inputs:[a],outputs:[-1]})[0]),a},aT=(t,r)=>{let i=((t,r)=>{if(r.doRotary&&t.length<=7)throw Error("cos_cache and sin_cache inputs are required if do_rotary is specified");let i=t[0],a=t[1],n=t[2],s=t[3],o=t[4];if(0!==r.doRotary&&t.length<=7)throw Error("cos_cast and sin_cache are expected if do_rotary attribute is non-zero");if(-1!==r.localWindowSize)throw Error("Local attention is not supported");if(0!==r.softcap)throw Error("Softcap is not supported");if(0!==r.rotaryInterleaved)throw Error("Rotary interleaved is not supported");if(r.smoothSoftmax)throw Error("Smooth softmax is not supported");if(3!==i.dims.length&&5!==i.dims.length)throw Error("Input query is expected to have 3 or 5 dimensions");
1787let l=i.dims[0],u=i.dims[1],d=3===i.dims.length?i.dims[2]:r.numHeads*i.dims[4],c=u,h=0,f=!a||0===a.dims.length,p=Math.floor(f?d/(r.numHeads+2*r.kvNumHeads):d/r.numHeads);f&&(d=p*r.numHeads);let m=s&&0!==s.dims.length,g=o&&0!==o.dims.length;if(m&&4===s.dims.length&&s.dims[0]===l&&s.dims[1]!==r.kvNumHeads&&s.dims[2]===r.kvNumHeads&&s.dims[3]===p)throw Error("BSNH pastKey/pastValue is not supported");if(m&&g){if(4!==s.dims.length)throw Error('Input "past_key" is expected to have 4 dimensions');if(4!==o.dims.length)throw Error('Input "past_value" is expected to have 4 dimensions');h=s.dims[2]}else if(m||g)throw Error('Input "past_key" and "past_value" shall be both present or both absent');let b=1;if(a&&a.dims.length>0){if(3!==i.dims.length)throw Error('Input "query" is expected to have 3 dimensions when key is given');if(a.dims.length<3||a.dims.length>5)throw Error('Input "key" is expected to have 3, 4, or 5 dimensions');if(i.dims[0]!==a.dims[0])throw Error('Input "query" and "key" shall have same dim 0 (batch size)');if(3===a.dims.length){if(i.dims[2]%a.dims[2]!=0)throw Error('Dimension 2 of "query" should be a multiple of "key"');c=a.dims[1]}else if(5===a.dims.length){if(a.dims[2]!==r.numHeads||2!==a.dims[3]||a.dims[4]!==p)throw Error('Expect "key" shape (batch_size, kv_sequence_length, num_heads, 2, head_size) for packed kv');if(n)throw Error('Expect "value" be none when "key" has packed kv format.');c=a.dims[1]}else{if(a.dims[1]!==r.numHeads||a.dims[3]!==p)throw Error('Expect "key" shape (batch_size, num_heads, kv_sequence_length, head_size) for past_key');c=a.dims[2]}}else{if(3!==i.dims.length&&5!==i.dims.length)throw Error('Input "query" is expected to have 3 or 5 dimensions when key is empty');if(5===i.dims.length&&(i.dims[2]!==r.numHeads||3!==i.dims[3]))throw Error('Expect "query" shape (batch_size, kv_sequence_length, num_heads, 3, head_size) for packed kv');b=3}let y=!1,v=r.kvNumHeads?p*r.kvNumHeads:d;if(n&&n.dims.length>0){if(3!==n.dims.length&&4!==n.dims.length)throw Error('Input "value" is expected to have 3 or 4 dimensions');if(i.dims[0]!==n.dims[0])throw Error('Input "query" and "value" shall have same dim 0 (batch_size)');if(3===n.dims.length){if(c!==n.dims[1])throw Error('Input "key" and "value" shall have the same dim 1 (kv_sequence_length)');v=n.dims[2]}else{if(c!==n.dims[2])throw Error('Input "past_key" and "past_value" shall have the same dim 2 (kv_sequence_length)');v=n.dims[1]*n.dims[3],y=!0}}let _=t.length>4?t[5]:void 0;if(_&&1!==_.dims.length&&_.dims[0]!==l)throw Error('Input "seqlens" is expected to have 1 dimension and the same dim 0 as batch_size');return{batchSize:l,sequenceLength:u,pastSequenceLength:h,kvSequenceLength:c,totalSequenceLength:-1,maxSequenceLength:-1,inputHiddenSize:0,hiddenSize:d,vHiddenSize:v,headSize:p,vHeadSize:Math.floor(v/r.kvNumHeads),numHeads:r.numHeads,kvNumHeads:r.kvNumHeads,nReps:r.numHeads/r.kvNumHeads,pastPresentShareBuffer:!1,maskType:0,scale:r.scale,broadcastResPosBias:!1,passPastInKv:y,qkvFormat:b}})(t.inputs,r);if(5===t.inputs[0].dims.length)throw Error("Packed QKV is not implemented");if(t.inputs[1]?.dims.length===5)throw Error("Packed KV is not implemented");let a=t.inputs[0],n=t.inputs[1]&&t.inputs[1].dims.length>
vendor: 4,882 bytes, lines 1787-1852
17870?t.inputs[1]:void 0,s=t.inputs[2]&&t.inputs[2].dims.length>0?t.inputs[2]:void 0,o=t.inputs[3]&&0!==t.inputs[3].dims.length?t.inputs[3]:void 0,l=t.inputs[4]&&0!==t.inputs[4].dims.length?t.inputs[4]:void 0,u=t.inputs.length>4?t.inputs[5]:void 0,d=t.inputs.length>5?t.inputs[6]:void 0,c=i.kvNumHeads?i.kvNumHeads:i.numHeads,h=t$({axis:2,numOutputs:3,splitSizes:[i.numHeads*i.headSize,c*i.headSize,c*i.headSize]}),[f,p,m]=n||s?[a,n,s]:t.compute(aw([a],h),{inputs:[a],outputs:[-1,-1,-1]}),g,b;if(r.doRotary){let a=t.compute(((t,r,i,a)=>{let n=[t*r],s=t*r,o=[{type:12,data:s},{type:12,data:r},{type:12,data:t}];return{name:"GeneratePositionIds",shaderCache:{hint:`${t};${r}`,inputDependencies:["type","type"]},getRunData:()=>({outputs:[{dims:n,dataType:7}],dispatchGroup:{x:Math.ceil(s/64)},programUniforms:o}),getShaderSource:t=>{let r=tR("seq_lens",i.dataType,i.dims),s=tR("total_seq_lens",a.dataType,a.dims),o=tj("pos_ids",7,n);return` 1788 ${t.registerUniforms([{name:"output_size",type:"u32"},{name:"sequence_length",type:"u32"},{name:"batch_size",type:"u32"}]).declareVariables(r,s,o)} 1789 ${t.mainStart()} 1790 ${t.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} 1791 let total_sequence_length = u32(${s.getByOffset("0")}); 1792 let is_subsequent_prompt = uniforms.sequence_length > 1 && uniforms.sequence_length != total_sequence_length; 1793 let is_first_prompt = !is_subsequent_prompt && uniforms.sequence_length == total_sequence_length; 1794 let batch_idx = global_idx / uniforms.sequence_length; 1795 let sequence_idx = i32(global_idx % uniforms.sequence_length); 1796 var pos_id: i32 = 0; 1797 let seqlen = ${r.getByOffset("batch_idx")}; 1798 let total_seqlen = seqlen + 1; 1799 if (is_first_prompt) { 1800 if (sequence_idx < total_seqlen) { 1801 pos_id = sequence_idx; 1802 } else { 1803 pos_id = 1; 1804 } 1805 ${o.setByOffset("global_idx","pos_id")} 1806 } else if (is_subsequent_prompt) { 1807 let past_seqlen = total_seqlen - i32(uniforms.sequence_length); 1808 if (past_seqlen + sequence_idx < total_seqlen) { 1809 pos_id = past_seqlen + sequence_idx; 1810 } else { 1811 pos_id = 1; 1812 } 1813 ${o.setByOffset("global_idx","pos_id")} 1814 } else if (global_idx < uniforms.batch_size) { 1815 ${o.setByOffset("global_idx","seqlen")} 1816 }; 1817 } 1818 `}}})(i.batchSize,i.sequenceLength,u,d),{inputs:[u,d],outputs:[-1]})[0],n=t.inputs[7],s=t.inputs[8],o=t$({interleaved:0!==r.rotaryInterleaved,numHeads:i.numHeads,rotaryEmbeddingDim:0,scale:r.scale}),l=[f,a,n,s],c=[-1];g=t.compute(aS(l,o),{inputs:l,outputs:c})[0],l.splice(0,1,p);let h=t$({interleaved:0!==r.rotaryInterleaved,numHeads:i.kvNumHeads,rotaryEmbeddingDim:0,scale:r.scale});b=t.compute(aS(l,h),{inputs:l,outputs:c})[0]}let y=av(t,i.batchSize,i.numHeads,i.sequenceLength,i.headSize,r.doRotary?g:f,void 0,0),v=aE(t,r.doRotary?b:p,i),_=aE(t,m,i);rb(t,y,v,_,void 0,void 0,o,l,void 0,i,u,d)}}),se=q(()=>{ng(),nv(),nE(),nC(),aI=(t,r,i,a,n,s,o,l)=>{let u=tI(s),d=1===u?"f32":`vec${u}f`,c=1===u?"vec2f":`mat2x${u}f`,h=n*o,f=64;1===h&&(f=256);let p=[n,o,s/u],m=[n,o,2],g=[];return g.push(...tT(p,m)),t.compute({name:"InstanceNormComputeChannelScaleShift",shaderCache:{hint:`${u};${l};${f}`,inputDependencies:["rank","type","type"]},getRunData:()=>({outputs:[{dims:m,dataType:1}],dispatchGroup:{x:h},programUniforms:g}),getShaderSource:t=>{let n=tR("x",r.dataType,3,u),s=[n,tR("scale",i.dataType,i.dims),tR("bias",a.dataType,a.dims),tj("output",1,3,2)];return` 1819 var<workgroup> workgroup_shared : array<${c}, ${f}>; 1820 const workgroup_size = ${f}u; 1821 ${t.declareVariables(...s)} 1822 ${t.mainStart(f)} 1823 let batch = workgroup_index / uniforms.x_shape[1]; 1824 let channel = workgroup_index % uniforms.x_shape[1]; 1825 let hight = uniforms.x_shape[2]; 1826 // initialize workgroup memory 1827 var sum = ${d}(0); 1828 var squared_sum = ${d}(0); 1829 for (var h = local_idx; h < hight; h += workgroup_size) { 1830 let value = ${d}(${n.get("batch","channel","h")}); 1831 sum += value; 1832 squared_sum += value * value; 1833 } 1834 workgroup_shared[local_idx] = ${c}(sum, squared_sum); 1835 workgroupBarrier(); 1836 1837 for (var currSize = workgroup_size >> 1; currSize > 0; currSize = currSize >> 1) { 1838 if (local_idx < currSize) { 1839 workgroup_shared[local_idx] = workgroup_shared[local_idx] + workgroup_shared[local_idx + currSize]; 1840 } 1841 workgroupBarrier(); 1842 } 1843 if (local_idx == 0) { 1844 let sum_final = ${tO("workgroup_shared[0][0]",u)} / f32(hight * ${u}); 1845 let squared_sum_final = ${tO("workgroup_shared[0][1]",u)} / f32(hight * ${u}); 1846 1847 let inv_std_dev = inverseSqrt(squared_sum_final - sum_final * sum_final + f32(${l})); 1848 let channel_scale = inv_std_dev * f32(scale[channel]); 1849 let channel_shift = f32(bias[channel]) - sum_final * channel_scale; 1850 output[workgroup_index] = vec2f(channel_scale, channel_shift); 1851 } 1852 }`}},{inputs:[r,i,a],outputs:[-1]})[0]}
1852,aA=(t,r)=>{"NHWC"===r.format?((t,r,i)=>{let a=r[0].dims,n=a[0],s=a[a.length-1],o=e8.sizeFromDimension(a,1)/s,l=tI(s),u=e8.size(a)/l,d=[{type:12,data:o},{type:12,data:Math.floor(s/l)}],c=!1,h=[0,a.length-1];for(let t=0;t<a.length-2;t++)c=c||1!==a[t+1],h.push(t+1);let f=(c=c&&1!==a[a.length-1])?t.compute(tF(t.inputs[0],h),{inputs:[t.inputs[0]],outputs:[-1]})[0]:t.inputs[0].reshape(Array.from({length:a.length},(t,r)=>a[h[r]])),p=aI(t,f,r[1],r[2],n,o,s,i.epsilon);t.compute({name:"InstanceNormalizationNHWC",shaderCache:{hint:`${l}`,inputDependencies:["type","type"]},getRunData:()=>({outputs:[{dims:a,dataType:r[0].dataType}],dispatchGroup:{x:Math.ceil(u/64)},programUniforms:d}),getShaderSource:t=>{let i=tC(r[0].dataType),n=1===l?"vec2f":`mat${l}x2f`,s=t=>{let r=0===t?"x":"y",a=1===l?"f32":`vec${l}f`;switch(l){case 1:return`${i}(${a}(scale.${r}))`;case 2:return`vec2<${i}>(${a}(scale[0].${r}, scale[1].${r}))`;case 4:return`vec4<${i}>(${a}(scale[0].${r}, scale[1].${r}, scale[2].${r}, scale[3].${r}))`;default:throw Error(`Not supported compoents ${l}`)}},o=tR("input",r[0].dataType,r[0].dims,l),u=tj("output",r[0].dataType,a,l);return` 1853 @group(0) @binding(0) var<storage, read> input : array<${o.type.storage}>; 1854 @group(0) @binding(1) var<storage, read> scale_input : array<${n}>; 1855 @group(0) @binding(2) var<storage, read_write> output : array<${u.type.storage}>; 1856 struct Uniforms {H: u32, C : u32}; 1857 @group(0) @binding(3) var<uniform> uniforms: Uniforms; 1858 1859 ${t.mainStart()} 1860 let current_image_number = global_idx / (uniforms.C * uniforms.H); 1861 let current_channel_number = global_idx % uniforms.C; 1862 1863 let scale_offset = current_image_number * uniforms.C + current_channel_number; 1864 let scale = scale_input[scale_offset]; 1865 output[global_idx] = fma(input[global_idx], ${s(0)}, ${s(1)}); 1866 }`}},{inputs:[r[0],p]})})(t,t.inputs,r):((t,r,i)=>{let a=r[0].dims,n=a[0],s=a[1],o=e8.sizeFromDimension(a,2),l=tI(o),u=e8.size(a)/l,d=aI(t,r[0],r[1],r[2],n,o,s,i.epsilon),c=[n,s,o/l],h=[n,s];t.compute({name:"InstanceNormalization",shaderCache:{hint:`${l}`,inputDependencies:["type","none"]},getRunData:()=>({outputs:[{dims:a,dataType:r[0].dataType}],dispatchGroup:{x:Math.ceil(u/64)},programUniforms:[{type:12,data:u},...tT(c,h,c)]}),getShaderSource:t=>{let i=tR("x",r[0].dataType,c.length,l),a=tR("scale_shift",1,h.length,2),n=tj("output",r[0].dataType,c.length,l),s=[i,a,n];return` 1867 ${t.registerUniform("output_size","u32").declareVariables(...s)} 1868 ${t.mainStart()} 1869 ${t.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} 1870 let outputIndices = ${n.offsetToIndices("global_idx")}; 1871 let batch = outputIndices[0]; 1872 let channel = outputIndices[1]; 1873 let scale_shift = ${a.getByIndices("vec2<u32>(batch, channel)")}; 1874 let value = ${i.getByOffset("global_idx")} * ${n.type.value}(scale_shift.x) + ${n.type.value}(scale_shift.y); 1875 ${n.setByOffset("global_idx","value")}; 1876 }`}},{inputs:[r[0],d]})})(t,t.inputs,r)}}),st=q(()=>{ng(),nv(),nC(),aN=(t,r)=>{(t=>{if(!t||t.length<2)throw Error("layerNorm requires at least 2 inputs.")})(t.inputs),t.compute(((t,r,i)=>{let a=r.simplified,n=t[0].dims,s=t[1],o=!a&&t[2],l=e8.normalizeAxis(r.axis,n.length),u=e8.sizeToDimension(n,l),d=e8.sizeFromDimension(n,l),c=e8.size(s.dims),h=o?e8.size(o.dims):0;if(c!==d||o&&h!==d)throw Error(`Size of X.shape()[axis:] == ${d}. 1877 Size of scale and bias (if provided) must match this. 1878 Got scale size of ${c} and bias size of ${h}`);let f=[];for(let t=0;t<n.length;++t)t<l?f.push(n[t]):f.push(1);let p=tI(d),m=["type","type"],g=[{type:12,data:u},{type:1,data:d},{type:12,data:Math.floor(d/p)},{type:1,data:r.epsilon}];o&&m.push("type");let b=i>1,y=i>2,v=[{dims:n,dataType:t[0].dataType}];return b&&v.push({dims:f,dataType:1}),y&&v.push({dims:f,dataType:1}),{name:"LayerNormalization",shaderCache:{hint:`${p};${i};${a}`,inputDependencies:m},getRunData:()=>({outputs:v,dispatchGroup:{x:Math.ceil(u/64)},programUniforms:g}),getShaderSource:r=>{let i=tC(t[0].dataType),l=[tR("x",t[0].dataType,t[0].dims,p),tR("scale",s.dataType,s.dims,p)];return o&&l.push(tR("bias",o.dataType,o.dims,p)),l.push(tj("output",t[0].dataType,n,p)),b&&l.push(tj("mean_data_output",1,f)),y&&l.push(tj("inv_std_output",1,f)),` 1879 ${r.registerUniforms([{name:"norm_count",type:"u32"},{name:"norm_size",type:"f32"},{name:"norm_size_vectorized",type:"u32"},{name:"epsilon",type:"f32"}]).declareVariables(...l)} 1880 ${r.mainStart()} 1881 ${r.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.norm_count")} 1882 let offset = global_idx * uniforms.norm_size_vectorized; 1883 var mean_vector = ${tA("f32",p)}; 1884 var mean_square_vector = ${tA("f32",p)}; 1885 1886 for (var h: u32 = 0u; h < uniforms.norm_size_vectorized; h++) { 1887 let value = ${tN(i,p,"x[h + offset]")}; 1888 mean_vector += value; 1889 mean_square_vector += value * value; 1890 } 1891 let mean = ${tO("mean_vector",p)} / uniforms.norm_size; 1892 let inv_std_dev = inverseSqrt(${tO("mean_square_vector",p)} / uniforms.norm_size ${a?"":"- mean * mean"} + uniforms.epsilon); 1893 1894 for (var j: u32 = 0; j < uniforms.norm_size_vectorized; j++) { 1895 let f32input = ${tN(i,p,"x[j + offset]")}; 1896 let f32scale = ${tN(i,p,"scale[j]")}; 1897 output[j + offset] = ${l[0].type.value}((f32input ${a?"":"- mean"}) * inv_std_dev * f32scale 1898 ${o?`+ ${tN(i,p,"bias[j]")}`:""} 1899 ); 1900 } 1901 1902 ${b?"mean_data_output[global_idx] = mean":""}; 1903 ${y?"inv_std_output[global_idx] = inv_std_dev":""}; 1904 }`}}})(t.inputs,r,t.outputCount))}}),sr=q(()=>{nv(),nU(),nF(),aO=t=>{(t=>{if(!t||2!==t.length)throw Error("MatMul requires 2 inputs.");if(t[0].dims[t[0].dims.length-1]!==t[1].dims[t[1].dims.length-2])throw Error("shared dimension does not match.")})(t.inputs);
1904let r=e4.calcShape(t.inputs[0].dims,t.inputs[1].dims,!0);if(!r)throw Error("Can't use matmul on the given tensors");let i=r[r.length-1],a=t.inputs[0].dims[t.inputs[0].dims.length-1];if(i<8&&a<8)t.compute(i$(t.inputs,{activation:""},r));else{let n=r[r.length-2],s=e8.size(t.inputs[0].dims.slice(0,-2)),o=e8.size(t.inputs[1].dims.slice(0,-2));if(1!==s&&1===n&&1===o){let n=t.inputs[0].reshape([1,s,a]),o=t.inputs[1].reshape([1,a,i]),l=[1,s,i],u=[n,o];t.compute(iE(u,{activation:""},r,l),{inputs:u})}else t.compute(iE(t.inputs,{activation:""},r))}}}),si=q(()=>{ng(),nv(),nk(),nC(),aM=(t,r)=>{((t,r)=>{if(t.length<3||t.length>4)throw Error("MatMulNBits requires 3 or 4 inputs");let i=t[0],a=i.dims.length;if(i.dims[a-1]!==r.k)throw Error("The last dim of input shape does not match the k value");let n=Math.floor((r.k+r.blockSize-1)/r.blockSize),s=r.blockSize/8*r.bits,o=t[1];if(!e8.areEqual(o.dims,[r.n,n,s]))throw Error("The second inputs must be 3D tensor with shape N X nBlocksPerCol X blobSize");let l=t[2].dims;if(e8.size(l)!==r.n*n)throw Error("scales input size error.");if(4===t.length){let i=t[3].dims,a=r.n*(8===r.bits?n:Math.floor((n*r.bits+7)/8));if(e8.size(i)!==a)throw Error("zeroPoints input size error.")}})(t.inputs,r),32===r.blockSize&&t.adapterInfo.isVendor("intel")&&t.adapterInfo.isArchitecture("gen-12lp")?t.compute(((t,r)=>{let i=t[0].dims,a=i.length,n=i[a-2],s=r.k,o=r.n,l=i.slice(0,a-2),u=e8.size(l),d=t[1].dims[2]/4,c=t[0].dataType,h=tI(r.k),f=tI(d),p=l.concat([n,o]),m=o%8==0?8:o%4==0?4:1,g=128/m,b=g*f*8,y=b/h,v=b/r.blockSize,_=e8.size(p)/m,w=[],x=[u,n,s/h],$=e8.convertShape(t[1].dims).slice();$.splice(-1,1,d/f),w.push(...tT(x)),w.push(...tT($)),w.push(...tT(t[2].dims)),4===t.length&&w.push(...tT(e8.convertShape(t[3].dims)));let S=[u,n,o];return w.push(...tT(S)),{name:"BlockwiseMatMulNBits32",shaderCache:{hint:`${r.blockSize};${h};${f};${g};${m}`,inputDependencies:Array(t.length).fill("rank")},getRunData:()=>({outputs:[{dims:p,dataType:c}],dispatchGroup:{x:_},programUniforms:w}),getShaderSource:i=>{let a=x.length,n=tR("a",t[0].dataType,a,h),s=tR("b",12,$.length,f),o=tR("scales",t[2].dataType,t[2].dims.length),l=[n,s,o],u=4===t.length?tR("zero_points",12,t[3].dims.length):void 0;u&&l.push(u);let d=S.length,c=tj("output",t[0].dataType,d),p=tC(t[0].dataType);return` 1905 var<workgroup> sub_a: array<${n.type.value}, ${y}>; 1906 var<workgroup> inter_results: array<array<${c.type.value}, ${g}>, ${m}>; 1907 ${i.declareVariables(...l,c)} 1908 ${i.mainStart([g,m,1])} 1909 let output_indices = ${c.offsetToIndices(`workgroup_index * ${m}`)}; 1910 let col = output_indices[2]; 1911 let row = output_indices[1]; 1912 let batch = output_indices[0]; 1913 let n_blocks_per_col = uniforms.b_shape[1]; 1914 let num_tiles = (n_blocks_per_col - 1) / ${v} + 1; 1915 1916 // Loop over shared dimension. 1917 for (var tile: u32 = 0; tile < num_tiles; tile += 1) { 1918 let a_col_start = tile * ${y}; 1919 // load one tile A data into shared memory. 1920 for (var a_offset = local_idx; a_offset < ${y}; a_offset += 128) 1921 { 1922 let a_col = a_col_start + a_offset; 1923 if (a_col < uniforms.a_shape[2]) 1924 { 1925 sub_a[a_offset] = ${n.getByIndices(`${n.type.indices}(batch, row, a_col)`)}; 1926 } else { 1927 sub_a[a_offset] = ${n.type.value}(0); 1928 } 1929 } 1930 workgroupBarrier(); 1931 1932 // each thread process one block 1933 let b_row = col + local_id.y; 1934 let block = tile * ${v} + local_id.x; 1935 ${u?` 1936 let zero_point_bytes_per_col = (n_blocks_per_col + 1) / 2; 1937 let zero_point_byte_count = b_row * zero_point_bytes_per_col + (block >> 0x1u); 1938 let zero_point_word_index = zero_point_byte_count >> 0x2u; 1939 let zero_point_byte_offset = zero_point_byte_count & 0x3u; 1940 let zero_point_nibble_offset: u32 = block & 0x1u; 1941 let zero_point_bits_offset = (zero_point_byte_offset << 3) + (zero_point_nibble_offset << 2); 1942 let zero_point_word = ${u.getByOffset("zero_point_word_index")} >> zero_point_bits_offset; 1943 let zero_point = ${p}((zero_point_word) & 0xFu);`:` 1944 // The default zero point is 8 for unsigned 4-bit quantization. 1945 let zero_point = ${p}(8);`} 1946 let scale = ${o.getByOffset("b_row * n_blocks_per_col + block")}; 1947 let b_data = ${s.getByIndices(`${s.type.indices}(b_row, block, 0)`)}; 1948 var word_offset = local_id.x * ${r.blockSize/h}; 1949 for (var i: u32 = 0; i < ${f}; i++) { 1950 ${(()=>{switch(h){case 1:return` 1951 let a_data0 = vec4<${p}>(sub_a[word_offset], sub_a[word_offset + 1], sub_a[word_offset + 2], sub_a[word_offset + 3]); 1952 let a_data1 = vec4<${p}>(sub_a[word_offset + 4], sub_a[word_offset + 5], sub_a[word_offset + 6], sub_a[word_offset + 7]);`;case 2:return` 1953 let a_data0 = vec4<${p}>(sub_a[word_offset], sub_a[word_offset + 1]); 1954 let a_data1 = vec4<${p}>(sub_a[word_offset + 2], sub_a[word_offset + 3]);`;case 4:return` 1955 let a_data0 = sub_a[word_offset]; 1956 let a_data1 = sub_a[word_offset + 1];`;default:throw Error(`${h}-component is not supported.`)}})()} 1957 let b_value = ${1===f?"b_data":"b_data[i]"}; 1958 let b_value_lower = unpack4xU8(b_value & 0x0F0F0F0Fu); 1959 let b_value_upper = unpack4xU8((b_value >> 4) & 0x0F0F0F0Fu); 1960 let b_quantized_values = mat2x4<${p}>(${Array.from({length:4},(t,r)=>`${p}(b_value_lower[${r}]), ${p}(b_value_upper[${r}])`).join(", ")}); 1961 let b_dequantized_values = (b_quantized_values - mat2x4<${p}>(${Array(8).fill("zero_point").join(",")})) * scale; 1962 inter_results[local_id.y][local_id.x] += ${Array.from({length:2},(t,r)=>`dot(a_data${r}, b_dequantized_values[${r}])`).join(" + ")}; 1963 word_offset += ${8/h}; 1964 } 1965 workgroupBarrier(); 1966 } 1967 1968 if (local_idx < ${m}) { 1969 var output_value: ${c.type.value} = ${c.type.value}(0); 1970 for (var b = 0u; b < ${g}; b++) { 1971 output_value += inter_results[local_idx][b]; 1972 } 1973 if (col + local_idx < uniforms.output_shape[2]) 1974 { 1975 ${c.setByIndices(`${c.type.indices}
vendor: 4,449 bytes, lines 1975-2037
1975(batch, row, col + local_idx)`,"output_value")} 1976 } 1977 } 1978 }`}}})(t.inputs,r)):t.compute(((t,r)=>{let i=t[0].dims,a=i.length,n=i[a-2],s=r.k,o=r.n,l=i.slice(0,a-2),u=e8.size(l),d=t[1].dims[2]/4,c=t[0].dataType,h=tI(r.k),f=tI(d),p=tI(o),m=l.concat([n,o]),g=n>1&&o/p%2==0?2:1,b=e8.size(m)/p/g,y=[],v=[u,n,s/h],_=e8.convertShape(t[1].dims).slice();_.splice(-1,1,d/f),y.push(...tT(v)),y.push(...tT(_)),y.push(...tT(t[2].dims)),4===t.length&&y.push(...tT(e8.convertShape(t[3].dims)));let w=[u,n,o/p];return y.push(...tT(w)),{name:"MatMulNBits",shaderCache:{hint:`${r.blockSize};${r.bits};${h};${f};${p};${g};64`,inputDependencies:Array(t.length).fill("rank")},getRunData:()=>({outputs:[{dims:m,dataType:c}],dispatchGroup:{x:b},programUniforms:y}),getShaderSource:i=>{let a=v.length,n=tR("a",t[0].dataType,a,h),s=tR("b",12,_.length,f),o=tR("scales",t[2].dataType,t[2].dims.length),l=[n,s,o],u=4===t.length?tR("zero_points",12,t[3].dims.length):void 0;u&&l.push(u);let c=w.length,m=tj("output",t[0].dataType,c,p),b=tC(t[0].dataType),y=(()=>{switch(h){case 1:return`array<${b}, 8>`;case 2:return`mat4x2<${b}>`;case 4:return`mat2x4<${b}>`;default:throw Error(`${h}-component is not supported.`)}})();return` 1979 var<workgroup> workgroup_shared: array<${m.type.value}, ${64*g}>; 1980 ${i.declareVariables(...l,m)} 1981 ${i.mainStart([64,1,1])} 1982 let output_indices = ${m.offsetToIndices(`(global_idx / 64) * ${g}`)}; 1983 let col = output_indices[2]; 1984 let row = output_indices[1]; 1985 let batch = output_indices[0]; 1986 let nBlocksPerCol = uniforms.b_shape[1]; 1987 1988 for (var block = local_id.x; block < nBlocksPerCol; block += 64) { 1989 //process one block 1990 var word_offset: u32 = block * ${r.blockSize/h}; 1991 ${(()=>{let t=` 1992 var col_index = col * ${p}; 1993 ${u?` 1994 let zero_point_bytes_per_col = (nBlocksPerCol + 1) / 2; 1995 var zero_point_byte_count: u32; 1996 var zero_point_word_index: u32; 1997 var zero_point_byte_offset: u32; 1998 let zero_point_nibble_offset: u32 = block & 0x1u; 1999 var zero_point_bits_offset: u32; 2000 var zero_point_word: u32;`:` 2001 // The default zero point is 8 for unsigned 4-bit quantization. 2002 let zero_point = ${b}(8);`} 2003 `;for(let r=0;r<p*g;r++)t+=` 2004 let scale${r} = ${o.getByOffset("col_index * nBlocksPerCol + block")}; 2005 ${u?` 2006 zero_point_byte_count = col_index * zero_point_bytes_per_col + (block >> 0x1u); 2007 zero_point_word_index = zero_point_byte_count >> 0x2u; 2008 zero_point_byte_offset = zero_point_byte_count & 0x3u; 2009 zero_point_bits_offset = (zero_point_byte_offset << 3) + (zero_point_nibble_offset << 2); 2010 zero_point_word = ${u.getByOffset("zero_point_word_index")} >> zero_point_bits_offset; 2011 let zero_point${r} = ${b}((zero_point_word) & 0xFu);`:""} 2012 col_index += 1;`;return t})()} 2013 for (var word: u32 = 0; word < ${d}; word += ${f}) { 2014 ${(()=>{let t=`col_index = col * ${p};`;for(let r=0;r<p*g;r++)t+=` 2015 let b${r}_data = ${s.getByIndices(`${s.type.indices}(col_index, block, word)`)}; 2016 col_index += 1;`;return t+` 2017 var b_value: u32; 2018 let b_mask: u32 = 0x0F0F0F0Fu; 2019 var b_value_lower: vec4<u32>; 2020 var b_value_upper: vec4<u32>; 2021 var b_quantized_values: ${y}; 2022 var b_dequantized_values: ${y};`})()} 2023 for (var i: u32 = 0; i < ${f}; i++) { 2024 ${(()=>{let t=` 2025 // reuse a data 2026 var input_offset = ${n.indicesToOffset(`${n.type.indices}(batch, row, word_offset)`)}; 2027 var a_data: ${y}; 2028 for (var j: u32 = 0; j < ${8/h}; j++) { 2029 a_data[j] = ${n.getByOffset("input_offset")}; 2030 input_offset++; 2031 } 2032 `;for(let r=0;r<p*g;r++)t+=` 2033 b_value = ${1===f?`b${r}_data`:`b${r}_data[i]`}; 2034 b_value_lower = unpack4xU8(b_value & b_mask); 2035 b_value_upper = unpack4xU8((b_value >> 4) & b_mask); 2036 b_quantized_values = ${y}(${Array.from({length:4},(t,r)=>`${b}(b_value_lower[${r}]), ${b}(b_value_upper[${r}])`).join(", ")}); 2037 b_dequantized_values = ${1===h?`${y}(${Array.from({length:8},(t,i)=>`(b_quantized_values[${i}] - ${u?`zero_point${r}`:"zero_point"}
2037) * scale${r}`).join(", ")});`:`(b_quantized_values - ${y}(${Array(8).fill(`${u?`zero_point${r}`:"zero_point"}`).join(",")})) * scale${r};`}; 2038 workgroup_shared[local_id.x * ${g} + ${Math.floor(r/p)}]${p>1?`[${r%p}]`:""} += ${Array.from({length:8/h},(t,r)=>`${1===h?`a_data[${r}] * b_dequantized_values[${r}]`:`dot(a_data[${r}], b_dequantized_values[${r}])`}`).join(" + ")}; 2039 `;return t})()} 2040 word_offset += ${8/h}; 2041 } 2042 } 2043 } 2044 workgroupBarrier(); 2045 2046 if (local_id.x < ${g}) { 2047 var output_value: ${m.type.value} = ${m.type.value}(0); 2048 var workgroup_shared_offset: u32 = local_id.x; 2049 for (var b: u32 = 0u; b < 64u; b++) { 2050 output_value += workgroup_shared[workgroup_shared_offset]; 2051 workgroup_shared_offset += ${g}; 2052 } 2053 ${m.setByIndices(`${m.type.indices}(batch, row, col + local_id.x)`,"output_value")}; 2054 } 2055 }`}}})(t.inputs,r))},aP=t=>t$(t)}),sa=q(()=>{ng(),nv(),nC(),aR=(t,r)=>{(t=>{if(!t||t.length<1)throw Error("Too few inputs");if(1!==t[0].dataType&&10!==t[0].dataType)throw Error("Input type must be float or float16.");if(t.length>=2){let r=2*t[0].dims.length===t[1].dims[0];if(4===t.length&&(r=2*t[3].dims[0]===t[1].dims[0]),!r)throw Error("The pads should be a 1D tensor of shape [2 * input_rank] or [2 * num_axes].")}})(t.inputs);let i=((t,r)=>{if(!(t.length>1))return r;{let i=t[1].getBigInt64Array(),a=t.length>=3&&t[2].data?10===t[2].dataType?t[2].getUint16Array()[0]:t[2].getFloat32Array()[0]:0,n=t[0].dims.length,s=new Int32Array(2*n).fill(0);if(t.length>=4){let r=t[3].getBigInt64Array();for(let t=0;t<r.length;t++)s[Number(r[t])]=Number(i[t]),s[Number(r[t])+n]=Number(i[t+r.length])}else i.forEach((t,r)=>s[Number(r)]=Number(t));let o=[];return s.forEach(t=>o.push(t)),{mode:r.mode,value:a,pads:o}}})(t.inputs,r);t.compute(((t,r)=>{let i=e8.padShape(t[0].dims.slice(),r.pads),a=t[0].dims,n=[{type:12,data:e8.size(i)},{type:6,data:r.pads}],s=t.length>=3&&t[2].data;return 0===r.mode&&n.push({type:s?t[2].dataType:1,data:r.value}),n.push(...tT(t[0].dims,i)),{name:"Pad",shaderCache:{hint:`${r.mode}${s}`,inputDependencies:["rank"]},getRunData:()=>({outputs:[{dims:i,dataType:t[0].dataType}],dispatchGroup:{x:Math.ceil(e8.size(i)/64)},programUniforms:n}),getShaderSource:n=>{let o=tj("output",t[0].dataType,i.length),l=tR("x",t[0].dataType,a.length),u=l.type.value,d=((t,r,i)=>{switch(i.mode){case 0:return((t,r,i)=>{let a="";for(let n=r-1;n>=0;--n)a+=` 2056 k = i32(${t.indicesGet("indices",n)}) - ${tM("uniforms.pads",n,i)}; 2057 if (k < 0) { 2058 break; 2059 } 2060 if (k >= i32(${tM("uniforms.x_shape",n,r)})) { 2061 break; 2062 } 2063 offset += k * i32(${tM("uniforms.x_strides",n,r)}); 2064 `;return` 2065 value = ${t.type.value}(uniforms.constant_value); 2066 for (var i = 0; i < 1; i++) { 2067 var offset = 0; 2068 var k = 0; 2069 ${a} 2070 value = x[offset]; 2071 } 2072 `})(t,r,i.pads.length);case 1:return((t,r,i)=>{let a="";for(let n=r-1;n>=0;--n)a+=` 2073 k = i32(${t.indicesGet("indices",n)}) - ${tM("uniforms.pads",n,i)}; 2074 if (k < 0) { 2075 k = -k; 2076 } 2077 { 2078 let _2n_1 = 2 * (i32(${tM("uniforms.x_shape",n,r)}) - 1); 2079 k = k % _2n_1; 2080 if(k >= i32(${tM("uniforms.x_shape",n,r)})) { 2081 k = _2n_1 - k; 2082 } 2083 } 2084 offset += k * i32(${tM("uniforms.x_strides",n,r)}); 2085 `;return` 2086 var offset = 0; 2087 var k = 0; 2088 ${a} 2089 value = x[offset]; 2090 `})(t,r,i.pads.length);case 2:return((t,r,i)=>{let a="";for(let n=r-1;n>=0;--n)a+=` 2091 k = i32(${t.indicesGet("indices",n)}) - ${tM("uniforms.pads",n,i)}; 2092 if (k < 0) { 2093 k = 0; 2094 } 2095 if (k >= i32(${tM("uniforms.x_shape",n,r)})) { 2096 k = i32(${tM("uniforms.x_shape",n,r)}) - 1; 2097 } 2098 offset += k * i32(${tM("uniforms.x_strides",n,r)}); 2099 `;return` 2100 var offset = 0; 2101 var k = 0; 2102 ${a} 2103 value = x[offset]; 2104 `})(t,r,i.pads.length);case 3:return((t,r,i)=>{let a="";for(let n=r-1;n>=0;--n)a+=` 2105 k = i32(${t.indicesGet("indices",n)}) - ${tM("uniforms.pads",n,i)}; 2106 if (k < 0) { 2107 k += i32(${tM("uniforms.x_shape",n,r)}]); 2108 } 2109 if (k >= i32(${tM("uniforms.x_shape",n,r)})) { 2110 k -= i32(${tM("uniforms.x_shape",n,r)}); 2111 } 2112 offset += k * i32(${tM("uniforms.x_strides",n,r)}); 2113 `;return` 2114 var offset = 0; 2115 var k = 0; 2116 ${a} 2117 value = x[offset]; 2118 `})(t,r,i.pads.length);default:throw Error("Invalid mode")}})(o,a.length,r),c=[{name:"output_size",type:"u32"},{name:"pads",type:"i32",length:r.pads.length}];return 0===r.mode&&c.push({name:"constant_value",type:s?u:"f32"}),` 2119 ${n.registerUniforms(c).declareVariables(l,o)} 2120 ${n.mainStart()} 2121 ${n.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} 2122 2123 let indices = ${o.offsetToIndices("global_idx")}; 2124 2125 var value = ${u}(0); 2126 ${d} 2127 output[global_idx] = value; 2128 }`}}})(t.inputs,i),{inputs:[0]})}}),sn=q(()=>{ed(),ng(),nv(),nC(),aj=t=>{if(h.webgpu.validateInputContent&&(!t||1!==t.length))throw Error("Pool ops requires 1 input.")},az=(t,r,i)=>{let a="NHWC"===r.format,n=t.dims.slice();a&&n.splice(1,0,n.pop());let s=Object.hasOwnProperty.call(r,"dilations"),o=r.kernelShape.slice(),l=r.strides.slice(),u=s?r.dilations.slice():[],d=r.pads.slice();e7.adjustPoolAttributes(i,n,o,l,u,d);let c=e7.computePoolOutputShape(i,n,l,u,o,d,r.autoPad),h=Object.assign({},r);s?Object.assign(h,{kernelShape:o,strides:l,pads:d,dilations:u,cacheKey:r.cacheKey}):Object.assign(h,{kernelShape:o,strides:l,pads:d,cacheKey:r.cacheKey});let f=c.slice();return f.push(f.splice(1,1)[0]),[h,a?f:c]},aD=(t,r)=>{let i="NHWC"===r.format,a=[{type:12,data:e8.size(t)}
vendor: 4,242 bytes, lines 2128-2198
2128,{type:12,data:e8.size(r.kernelShape)}],n=[{name:"outputSize",type:"u32"},{name:"kernelSize",type:"u32"}];if(r.kernelShape.length<=2){let t=r.kernelShape[r.kernelShape.length-1],i=r.strides[r.strides.length-1],s=r.pads[r.pads.length/2-1],o=r.pads[r.pads.length-1],l=!!(s+o);a.push({type:12,data:t},{type:12,data:i},{type:12,data:s},{type:12,data:o}),n.push({name:"kw",type:"u32"},{name:"sw",type:"u32"},{name:"pwStart",type:"u32"},{name:"pwEnd",type:"u32"});let u=!1;if(2===r.kernelShape.length){let t=r.kernelShape[r.kernelShape.length-2],i=r.strides[r.strides.length-2],s=r.pads[r.pads.length/2-2],o=r.pads[r.pads.length-2];u=!!(s+o),a.push({type:12,data:t},{type:12,data:i},{type:12,data:s},{type:12,data:o}),n.push({name:"kh",type:"u32"},{name:"sh",type:"u32"},{name:"phStart",type:"u32"},{name:"phEnd",type:"u32"})}return[a,n,!0,l,u]}{if(i)throw Error("Pooling with kernelShape.length > 2 is not supported for NHWC format.");let t=e8.computeStrides(r.kernelShape);return a.push({type:12,data:t},{type:12,data:r.pads},{type:12,data:r.strides}),n.push({name:"kernelStrides",type:"u32",length:t.length},{name:"pads",type:"u32",length:r.pads.length},{name:"strides",type:"u32",length:r.strides.length}),[a,n,!!r.pads.reduce((t,r)=>t+r),!1,!1]}},aB=(t,r,i,a,n,s,o,l,u,d,c,h)=>{let f="NHWC"===n.format,p=r.type.value,m=tj("output",r.type.tensor,a);if(n.kernelShape.length<=2){let a="",d="",g="",b=i-(f?2:1);if(a=c?` 2129 for (var i: u32 = 0u; i < uniforms.kw; i++) { 2130 xIndices[${b}] = indices[${b}] * uniforms.sw - uniforms.pwStart + i; 2131 if (xIndices[${b}] < 0 || xIndices[${b}] 2132 >= uniforms.x_shape[${b}]) { 2133 pad++; 2134 continue; 2135 } 2136 let x_val = x[${r.indicesToOffset("xIndices")}]; 2137 ${s} 2138 }`:` 2139 for (var i: u32 = 0u; i < uniforms.kw; i++) { 2140 xIndices[${b}] = indices[${b}] * uniforms.sw - uniforms.pwStart + i; 2141 let x_val = x[${r.indicesToOffset("xIndices")}]; 2142 ${s} 2143 }`,2===n.kernelShape.length){let t=i-(f?3:2);d=h?` 2144 for (var j: u32 = 0u; j < uniforms.kh; j++) { 2145 xIndices[${t}] = indices[${t}] * uniforms.sh - uniforms.phStart + j; 2146 if (xIndices[${t}] < 0 || xIndices[${t}] >= uniforms.x_shape[${t}]) { 2147 pad += i32(uniforms.kw); 2148 continue; 2149 } 2150 `:` 2151 for (var j: u32 = 0u; j < uniforms.kh; j++) { 2152 xIndices[${t}] = indices[${t}] * uniforms.sh - uniforms.phStart + j; 2153 `,g=` 2154 } 2155 `}return` 2156 ${t.registerUniforms(u).declareVariables(r,m)} 2157 2158 ${t.mainStart()} 2159 ${t.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")} 2160 2161 let indices = ${m.offsetToIndices("global_idx")}; 2162 var xIndices = ${m.offsetToIndices("global_idx")}; 2163 2164 var value = ${p}(${l}); 2165 var pad = 0; 2166 ${d} 2167 ${a} 2168 ${g} 2169 ${o} 2170 2171 output[global_idx] = value; 2172 }`}{if(f)throw Error("Pooling with kernelShape.length > 2 is not supported for NHWC format.");let a=n.kernelShape.length,c=n.pads.length,h="";return h=d?` 2173 if (xIndices[j] >= uniforms.x_shape[j]) { 2174 pad++; 2175 isPad = true; 2176 break; 2177 } 2178 } 2179 if (!isPad) { 2180 let x_val = x[${r.indicesToOffset("xIndices")}]; 2181 ${s} 2182 }`:` 2183 } 2184 let x_val = x[${r.indicesToOffset("xIndices")}]; 2185 ${s} 2186 `,` 2187 ${t.registerUniforms(u).declareVariables(r,m)} 2188 2189 ${t.mainStart()} 2190 ${t.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")} 2191 let indices = ${m.offsetToIndices("global_idx")}; 2192 var xIndices = ${m.offsetToIndices("global_idx")}; 2193 2194 var offsets: array<u32, ${a}>; 2195 2196 var value = ${p}(${l}); 2197 var pad = 0; 2198 var isPad = false;
2199 2200 for (var i: u32 = 0u; i < uniforms.kernelSize; i++) { 2201 var offset = i; 2202 for (var j = 0u; j < ${a-1}u; j++) { 2203 offsets[j] = offset / ${tM("uniforms.kernelStrides","j",a)}; 2204 offset -= offsets[j] * ${tM("uniforms.kernelStrides","j",a)}; 2205 } 2206 offsets[${a-1}] = offset; 2207 2208 isPad = false; 2209 for (var j = ${i-a}u; j < ${i}u; j++) { 2210 xIndices[j] = indices[j] * ${tM("uniforms.strides",`j - ${i-a}u`,a)} 2211 + offsets[j - ${i-a}u] - ${tM("uniforms.pads","j - 2u",c)}; 2212 ${h} 2213 } 2214 ${o} 2215 2216 output[global_idx] = value; 2217 }`}},aL=t=>`${t.format};${t.ceilMode};${t.autoPad};${t.kernelShape.length}`,aU=t=>({format:t.format,autoPad:["NOTSET","VALID","SAME_UPPER","SAME_LOWER"][t.auto_pad],ceilMode:t.ceil_mode,kernelShape:t.kernel_shape,strides:t.strides,pads:t.pads}),aF=(t,r,i,a)=>{let[n,s]=az(r,a,i),o=tR("x",r.dataType,r.dims.length),l=o.type.value,u="";n.countIncludePad?u+=`value /= ${l}(uniforms.kernelSize);`:u+=`value /= ${l}(i32(uniforms.kernelSize) - pad);`;let[d,c,h,f,p]=aD(s,n);return d.push(...tT(r.dims,s)),{name:t,shaderCache:{hint:`${a.cacheKey};${h};${f};${p}`,inputDependencies:["rank"]},getRunData:()=>({outputs:[{dims:s,dataType:r.dataType}],dispatchGroup:{x:Math.ceil(e8.size(s)/64)},programUniforms:d}),getShaderSource:t=>aB(t,o,r.dims.length,s.length,n,"value += x_val;",u,0,c,h,f,p)}},aq=t=>{let r=0!==t.count_include_pad,i=aU(t);if(0!==i.ceilMode)throw Error("using ceil() in shape computation is not yet supported for AveragePool");let a={countIncludePad:r,...i,cacheKey:""};return{...a,cacheKey:(t=>`${aL(t)};${t.countIncludePad}`)(a)}},aV=(t,r)=>{aj(t.inputs),t.compute(aF("AveragePool",t.inputs[0],!1,r))},aW={autoPad:"",ceilMode:0,countIncludePad:!1,kernelShape:[],strides:[],pads:[],storageOrder:0,dilations:[]},aH=t=>{let r=t.format;return{format:r,...aW,cacheKey:r}},aG=(t,r)=>{aj(t.inputs),t.compute(aF("GlobalAveragePool",t.inputs[0],!0,r))},aK=(t,r,i,a)=>{let[n,s]=az(r,a,i),o=` 2218 value = max(x_val, value); 2219 `,l=tR("x",r.dataType,r.dims.length),[u,d,c,h,f]=aD(s,n);return u.push(...tT(r.dims,s)),{name:t,shaderCache:{hint:`${a.cacheKey};${c};${h};${f}`,inputDependencies:["rank"]},getRunData:()=>({outputs:[{dims:s,dataType:r.dataType}],dispatchGroup:{x:Math.ceil(e8.size(s)/64)},programUniforms:u}),getShaderSource:t=>aB(t,l,r.dims.length,s.length,n,o,"",10===r.dataType?-65504:-1e5,d,c,h,f)}},aY=(t,r)=>{aj(t.inputs),t.compute(aK("MaxPool",t.inputs[0],!1,r))},aQ=t=>{let r=t.storage_order,i=t.dilations,a=aU(t);
2219if(0!==r)throw Error("column major storage order is not yet supported for MaxPool");if(0!==a.ceilMode)throw Error("using ceil() in shape computation is not yet supported for MaxPool");let n={storageOrder:r,dilations:i,...a,cacheKey:""};return{...n,cacheKey:(t=>`${aL(t)};${t.storageOrder};${t.dilations}`)(n)}},aX=t=>{let r=t.format;return{format:r,...aW,cacheKey:r}},aZ=(t,r)=>{aj(t.inputs),t.compute(aK("GlobalMaxPool",t.inputs[0],!0,r))}}),ss=q(()=>{ng(),nv(),nk(),nC(),aJ=(t,r)=>{((t,r)=>{if(t.length<2||t.length>3)throw Error("DequantizeLinear requires 2 or 3 inputs.");if(3===t.length&&t[1].dims===t[2].dims)throw Error("x-scale and x-zero-point must have the same shape.");if(3===t.length&&t[0].dataType!==t[2].dataType)throw Error("x and x-zero-point must have the same data type.");if(6===t[0].dataType&&t.length>2)throw Error("In the case of dequantizing int32 there is no zero point.");if(0!==t[1].dims.length&&1!==t[1].dims.length&&t[1].dims.length!==t[0].dims.length)throw Error("scale input must be a scalar, a 1D tensor, or have the same rank as the input tensor.");if(t.length>2){if(t[0].dataType!==t[2].dataType)throw Error("x and x-zero-point must have the same data type.");if(t[1].dims.length!==t[2].dims.length)throw Error("scale and zero-point inputs must have the same rank.");if(!t[1].dims.map((r,i)=>r===t[2].dims[i]).reduce((t,r)=>t&&r,!0))throw Error("scale and zero-point inputs must have the same shape.")}if(r.blockSize>0){if(0===t[1].dims.length||1===t[1].dims.length&&1===t[1].dims[0])throw Error("blockSize must be set only for block quantization.");if(!t[1].dims.map((i,a)=>a===r.axis||i===t[0].dims[a]).reduce((t,r)=>t&&r,!0))throw Error("For block qunatization, scale input shape to match the input shape except for the axis");if(t[1].dims.length!==t[0].dims.length)throw Error("For block qunatization the scale input rank must be the same as the x rank.");let i=t[0].dims[r.axis],a=t[1].dims[r.axis];if(r.blockSize<Math.ceil(i/a)||r.blockSize>Math.ceil(i/(a-1)-1))throw Error("blockSize must be with in the range [ceil(dI / Si), ceil(dI / (Si - 1) - 1)].")}})(t.inputs,r),t.compute(((t,r)=>{let i=e8.normalizeAxis(r.axis,t[0].dims.length),a=t[0].dataType,n=3===a,s=t[0].dims,o=t[1].dataType,l=e8.size(s),u=3===a||2===a,d=u?[Math.ceil(e8.size(t[0].dims)/4)]:t[0].dims,c=t[1].dims,h=t.length>2?t[2]:void 0,f=h?u?[Math.ceil(e8.size(h.dims)/4)]:h.dims:void 0,p=0===c.length||1===c.length&&1===c[0],m=!1===p&&1===c.length,g=tI(l),b=p&&(!u||4===g),y=b?g:1,v=tR("input",u?12:a,d.length,b&&!u?g:1),_=tR("scale",o,c.length),w=h?tR("zero_point",u?12:a,f.length):void 0,x=tj("output",o,s.length,y),$=[v,_];w&&$.push(w);let S=[d,c];h&&S.push(f);let k=[{type:12,data:l/y},{type:12,data:i},{type:12,data:r.blockSize},...tT(...S,s)];return{name:"DequantizeLinear",shaderCache:{hint:r.cacheKey,inputDependencies:w?["rank","rank","rank"]:["rank","rank"]},getShaderSource:t=>` 2220 ${t.registerUniforms([{name:"output_size",type:"u32"},{name:"axis",type:"u32"},{name:"block_size",type:"u32"}]).declareVariables(...$,x)} 2221 ${t.mainStart()} 2222 ${t.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} 2223 let output_indices = ${x.offsetToIndices("global_idx")}; 2224 2225 // Set input x 2226 ${u?` 2227 let input = ${v.getByOffset("global_idx / 4")}; 2228 let x_vec = ${n?"unpack4xI8(input)":"unpack4xU8(input)"}; 2229 let x_value = ${1===y?"x_vec[global_idx % 4]":"x_vec"};`:`let x_value = ${v.getByOffset("global_idx")};`}; 2230 2231 // Set scale input 2232 ${p?`let scale_value= ${_.getByOffset("0")}`:m?` 2233 let scale_index = ${x.indicesGet("output_indices","uniforms.axis")}; 2234 let scale_value= ${_.getByOffset("scale_index")};`:` 2235 var scale_indices: ${_.type.indices} = output_indices; 2236 let index = ${_.indicesGet("scale_indices","uniforms.axis")} / uniforms.block_size; 2237 ${_.indicesSet("scale_indices","uniforms.axis","index")}; 2238 let scale_value= ${_.getByIndices("scale_indices")};`}; 2239 2240 // Set zero-point input 2241 ${w?p?u?` 2242 let zero_point_input = ${w.getByOffset("0")}; 2243 let zero_point_vec = ${n?"unpack4xI8(zero_point_input)":"unpack4xU8(zero_point_input)"}; 2244 let zero_point_value= zero_point_vec[0]`:`let zero_point_value = ${w.getByOffset("0")}`:m?u?` 2245 let zero_point_index = ${x.indicesGet("output_indices","uniforms.axis")}; 2246 let zero_point_input = ${w.getByOffset("zero_point_index / 4")}; 2247 let zero_point_vec = ${n?"unpack4xI8(zero_point_input)":"unpack4xU8(zero_point_input)"}; 2248 let zero_point_value = zero_point_vec[zero_point_index % 4]`:` 2249 let zero_point_index = ${x.indicesGet("output_indices","uniforms.axis")}; 2250 let zero_point_value = ${w.getByOffset("zero_point_index")};`:u?` 2251 let zero_point_offset = ${_.indicesToOffset("scale_indices")}; 2252 let zero_point_input = ${w.getByOffset("zero_point_offset / 4")}; 2253 let zero_point_vec = ${n?"unpack4xI8(zero_point_input)":"unpack4xU8(zero_point_input)"}; 2254 let zero_point_value = zero_point_vec[zero_point_offset % 4];`:`let zero_point_value = ${w.getByIndices("scale_indices")};`:`let zero_point_value = ${u?n?"i32":"u32":v.type.value}(0);`}; 2255 // Compute and write output 2256 ${x.setByOffset("global_idx",`${x.type.value}(x_value - zero_point_value) * scale_value`)}; 2257 }`,getRunData:()=>({outputs:[{dims:s,dataType:o}],dispatchGroup:{x:Math.ceil(l/y/64),y:1,z:1},programUniforms:k})}})(t.inputs,r))},a1=t=>t$({axis:t.axis,blockSize:t.blockSize})}),so=q(()=>{ed(),ng(),nC(),a0=t=>{let r=0,i=0,a=0;6===t.inputs[0].dataType?(r=t.inputs[0].getInt32Array()[0],i=t.inputs[1].getInt32Array()[0],a=t.inputs[2].getInt32Array()[0]):1===t.inputs[0].dataType&&(r=t.inputs[0].getFloat32Array()[0],i=t.inputs[1].getFloat32Array()[0],a=t.inputs[2].getFloat32Array()[0]),h.webgpu.validateInputContent&&((t,r,i)=>{if(t===r||t<r&&i<0||t>r&&i>0)throw Error("Range these inputs' contents are invalid.")})(r,i,a),t.compute(((t,r,i,a)=>{let n=Math.abs(Math.ceil((r-t)/i)),s=[n],o=[{type:12,data:n},{type:a,data:t},{type:a,data:i},...tT(s)];return{name:"Range",shaderCache:{hint:`${a}`}
2257,getShaderSource:t=>{let r=tj("output",a,s.length),i=r.type.value;return` 2258 ${t.registerUniforms([{name:"outputSize",type:"u32"},{name:"start",type:i},{name:"delta",type:i}]).declareVariables(r)} 2259 ${t.mainStart()} 2260 ${t.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")} 2261 output[global_idx] = uniforms.start + ${i}(global_idx) * uniforms.delta; 2262 }`},getRunData:()=>({outputs:[{dims:s,dataType:a}],dispatchGroup:{x:Math.ceil(n/64)},programUniforms:o})}})(r,i,a,t.inputs[0].dataType),{inputs:[]})}}),sl=q(()=>{ng(),nv(),nk(),nC(),a2=t=>t$({reduction:t.reduction}),a3=(t,r)=>{t.compute(((t,r)=>{let i=t[0].dims,a=t[1].dims,n=Math.ceil(e8.sizeToDimension(a,a.length-1)/1),s=a[a.length-1],o=e8.sizeFromDimension(i,s),l=[{type:12,data:n},{type:12,data:s},{type:12,data:o},...tT(t[1].dims,t[2].dims,i)];return{name:"ScatterND",shaderCache:{hint:`${r.cacheKey}_${r.reduction}`,inputDependencies:["rank","rank"]},getRunData:()=>({outputs:[{dims:i,dataType:t[0].dataType}],dispatchGroup:{x:Math.ceil(n/64)},programUniforms:l}),getShaderSource:a=>{let n=tR("indices",t[1].dataType,t[1].dims.length),s=tR("updates",t[2].dataType,t[2].dims.length,1),o="none"!==r.reduction&&""!==r.reduction?tz("output",t[0].dataType,i.length):tj("output",t[0].dataType,i.length,1);return` 2263 ${a.registerUniform("output_size","u32").registerUniform("last_index_dimension","u32").registerUniform("num_updates_elements","u32").declareVariables(n,s,o)} 2264 ${a.mainStart()} 2265 ${a.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} 2266 var data_offset = 0u; 2267 let indices_start = uniforms.last_index_dimension * global_idx; 2268 let indices_end = indices_start + uniforms.last_index_dimension; 2269 for (var i = indices_start; i < indices_end; i++) { 2270 var index = i32(indices[i].x); 2271 ${1===t[0].dims.length?` 2272 let element_count_dim = uniforms.output_strides; 2273 let dim_value = uniforms.output_shape;`:` 2274 let element_count_dim = uniforms.output_strides[i - indices_start]; 2275 let dim_value = uniforms.output_shape[i - indices_start];`} 2276 if (index >= 0) { 2277 if (index >= i32(dim_value)) { 2278 index = i32(dim_value - 1); 2279 } 2280 } else { 2281 if (index < -i32(dim_value)) { 2282 index = 0; 2283 } else { 2284 index += i32(dim_value); 2285 } 2286 } 2287 data_offset += u32((u32(index) * element_count_dim)); 2288 } 2289 2290 for (var i = 0u; i < uniforms.num_updates_elements; i++) { 2291 let value = updates[uniforms.num_updates_elements * global_idx + i]; 2292 ${((t,r,i,a)=>{if("none"!==t&&"i32"!==a&&"u32"!==a&&"f32"!==a)throw Error(`Input ${a} is not supported with reduction ${t}.`);let n=`{ 2293 var oldValue = 0; 2294 loop { 2295 let newValueF32 =`,s=`; 2296 let newValue = bitcast<i32>(newValueF32); 2297 let res = atomicCompareExchangeWeak(&${r}, oldValue, newValue); 2298 if res.exchanged { 2299 break; 2300 } 2301 oldValue = res.old_value; 2302 } 2303 }`;switch(t){case"none":return`${r}=${i};`;case"add":return"i32"===a||"u32"===a?`atomicAdd(&${r}, bitcast<${a}>(${i}));`:` 2304 ${n}bitcast<${a}>(oldValue) + (${i})${s}`;case"max":return"i32"===a||"u32"===a?`atomicMax(&${r}, bitcast<${a}>(${i}));`:` 2305 ${n}max(bitcast<f32>(oldValue), (${i}))${s}`;case"min":return"i32"===a||"u32"===a?`atomicMin(&${r}, bitcast<${a}>(${i}));`:`${n}min(bitcast<${a}>(oldValue), (${i}))${s}`;case"mul":return`${n}(bitcast<${a}>(oldValue) * (${i}))${s}`;default:throw Error(`Reduction ${t} is not supported.`)}})(r.reduction,"output[data_offset + i]","value",o.type.value)} 2306 } 2307 2308 }`}}})(t.inputs,r),{inputs:[t.inputs[1],t.inputs[2]],outputs:[]})}}),su=q(()=>{ng(),nv(),nk(),nC(),a4=(t,r,i,a)=>` 2309 // The whole part and the fractional part are calculated separately due to inaccuracy of floating 2310 // point division. As an example, f32(21) / f32(7) may evaluate to 2.99... instead of 3, causing an 2311 // offset-by-one error later in floor(). 2312 let big = (${t}) * (${r}); 2313 let whole = ${a}(big / (${i})); 2314 let fract = ${a}(big % (${i})) / ${a}(${i}); 2315 return whole + fract; 2316`,a8=(t,r,i,a)=>t.rank>a?` 2317 ${t.indicesSet("input_indices",r,"channel")};
2318 ${t.indicesSet("input_indices",i,"batch")}; 2319`:"",a7=(t,r)=>{let i=[],a=[],n=[],s=(t=>{let r=t.customDataBuffer;return new Uint32Array(r,r.byteOffset,1)[0]})(t);if(0!==r.antialias)throw Error("Only default value (0) for Antialias attribute is supported");((t,r,i,a,n,s)=>{let[o,l,u]=i>10?[1,2,3]:[-1,t.length>1?1:-1,-1],d=t[0].dims.length;if(o>0&&t.length>o&&t[o].dims.length>0)t[o].getFloat32Array().forEach(t=>s.push(t));else if("tf_crop_and_resize"===r.coordinateTransformMode)throw Error("Resize requires RoI input to be specified when coordinateTransformMode is tfCropAndResize");if(l>0&&t.length>l&&1===t[l].dims.length&&t[l].dims[0]>0){if(t[l].getFloat32Array().forEach(t=>a.push(t)),0!==a.length&&a.length!==d&&i>=18&&a.length!==r.axes.length)throw Error("Resize requires scales input size to be same as input rank or axes size for opset 18 and up");((t,r)=>{if(t.every(t=>t>0||(()=>{throw Error("Resize requires scales input values to be positive")})),t.length>0){if("linear"===r.mode){if(2!==t.length&&3!==t.length&&(4!==t.length||1!==t[0]||1!==t[1])&&(4!==t.length||1!==t[0]||1!==t[3])&&(5!==t.length||1!==t[0]||1!==t[1]))throw Error(`For linear mode, Resize requires scales to be 2D, 3D, 4D with either two outermost or one innermost and 2320 one outermost scale values equal to 1, or 5D with two outermost scale values equal to 1`)}else if("cubic"===r.mode&&2!==t.length&&(4!==t.length||1!==t[0]||1!==t[1])&&(4!==t.length||1!==t[0]||1!==t[3]))throw Error("Resize requires scales input size to be 2 or 4 for cubic mode")}})(a,r),r.axes.length>0&&((t,r,i)=>{r.every(t=>t>=0&&t<i||(()=>{throw Error("Resize requires axes input values to be positive and less than rank")}));let a=Array(i).fill(1);return r.forEach((r,i)=>a[r]=t[i]),a})(a,r.axes,d).forEach((t,r)=>a[r]=t)}if(u>0&&t.length>u&&1===t[u].dims.length&&t[u].dims[0]>0&&(t[u].getBigInt64Array().forEach(t=>n.push(Number(t))),0!==n.length&&n.length!==d&&i>=18&&n.length!==r.axes.length))throw Error("Resize requires sizes input size to be same as input rank or axes size for opset 18 and up");if(r.axes.length>0){if(0!==a.length&&a.length!==r.axes.length)throw Error('Resize requires "scales" input size to be of axes rank when axes attributes is specified');if(0!==n.length&&n.length!==r.axes.length)throw Error('Resize requires "sizes" input size to be of rank axes rank when axes attributes is specified')}if("u">typeof a&&"u">typeof n&&a.length>0&&n.length>d)throw Error("Resize requires only of scales or sizes to be specified")})(t.inputs,r,s,i,a,n),t.compute(((t,r,i,a,n,s)=>{let o=t.dims,l=((t,r,i)=>{let a=Array(i).fill(0).concat(Array(i).fill(1)),n=0===t.length?a:t.slice();return r.length>0?(r.forEach((t,s)=>{a[t]=n[s],a[s+i]=n[r.length+s]}),a):n})(s,r.axes,o.length),u=((t,r,i,a)=>{let n=[];if(i.length>0)if(a.length>0){if(t.forEach(t=>n.push(t)),Math.max(...a)>t.length)throw Error("axes is out of bound");a.forEach((t,r)=>n[t]=i[r])}else i.forEach(t=>n.push(t));else{if(0===r.length)throw Error("Resize requires either scales or sizes.");n=t.map((t,i)=>Math.round(t*r[i]))}return n})(o,a,n,r.axes),d=a.slice();0===a.length&&(d=o.map((t,r)=>0===t?1:u[r]/t),"stretch"!==r.keepAspectRatioPolicy&&(u=((t,r,i)=>{let a=(()=>{switch(i.keepAspectRatioPolicy){case"not_larger":return i.axes.length>0?Math.min(...i.axes.map(t=>r[t]),Number.MAX_VALUE):Math.min(...r,Number.MAX_VALUE);case"not_smaller":return i.axes.length>0?Math.max(...i.axes.map(t=>r[t]),5e-324):Math.max(...r,5e-324);default:throw Error(`Keep aspect ratio policy ${i.keepAspectRatioPolicy} is not supported`)}})();r.fill(1,0,r.length);let n=t.slice();return i.axes.length>0?(i.axes.forEach(t=>r[t]=a),i.axes.forEach(i=>n[i]=Math.round(t[i]*r[i]))):(r.fill(a,0,r.length),n.forEach((t,i)=>n[i]=Math.round(t*r[i]))),n})(o,d,r)));let c=tj("output",t.dataType,u.length),h=tR("input",t.dataType,o.length),f=e8.size(u),p=o.length===u.length&&o.every((t,r)=>t===u[r]),m="tf_crop_and_resize"===r.coordinateTransformMode,g=r.extrapolationValue,b=h.type.value;return{name:"Resize",shaderCache:{hint:`${r.cacheKey}|${i}|${d.length>0?"cubic"===r.mode?d:d.length:""}|${n.length>0?n:""}|${l.length>0?l:""}|${p}|${"nearest"===r.mode?o.length:o}`,inputDependencies:["rank"]},getShaderSource:t=>` 2321 ${p?"":` 2322 ${((t,r)=>`fn getOriginalCoordinateFromResizedCoordinate(xResized: u32, xScale: f32, lengthResized: u32, 2323 lengthOriginal: u32, roiStart: f32, roiEnd: f32) -> ${r} { `+(()=>{switch(t){case"asymmetric":return` 2324 if (xScale < 1.0 || floor(xScale) != xScale) { 2325 return ${r}(xResized) / ${r}(xScale); 2326 } else { 2327 ${a4("xResized","lengthOriginal","lengthResized",r)} 2328 } 2329 `;case"pytorch_half_pixel":return`if (lengthResized > 1) { 2330 return (${r}(xResized) + 0.5) / ${r}(xScale) - 0.5; 2331 } else { 2332 return 0.0; 2333 }`;case"tf_half_pixel_for_nn":return`return (${r}(xResized) + 0.5) / ${r}(xScale);`;case"align_corners":return`if (lengthResized == 1) { 2334 return 0.0; 2335 } else { 2336 ${a4("xResized","lengthOriginal - 1","lengthResized - 1",r)} 2337 }`;case"tf_crop_and_resize":return`if (lengthResized > 1) { 2338 return ${r}(roiStart) * ${r}(lengthOriginal - 1) + 2339 (${r}(xResized) * ${r}(roiEnd - roiStart) * ${r}(lengthOriginal - 1)) / 2340 ${r}(lengthResized - 1); 2341 } else { 2342 return 0.5 * ${r}(roiStart + roiEnd) * ${r}(lengthOriginal - 1); 2343 }`;case"half_pixel_symmetric":return`const outputWidth = ${r}xScale * ${r}(lengthResized); 2344 const adjustment = ${r}(lengthResized) / outputWidth; 2345 const center = ${r}(lengthOriginal) / 2; 2346 const offset = center * (1 - adjustment); 2347 return offset + ((${r}(xResized) + 0.5) / ${r}(xScale)) - 0.5;`;case"half_pixel":return`return ((${r}(xResized) + 0.5) / ${r}(xScale)) - 0.5;`;default:throw Error(`Coordinate transform mode ${t} is not supported`)}})()+"}")(r.coordinateTransformMode,b)}; 2348 ${(()=>{switch(r.mode){case"nearest":return` 2349 ${((t,r)=>` 2350 fn checkInputIndices(input_indices: ${t.type.indices}) -> bool { 2351 for (var i:u32 = 0; i < ${r.length}; i++) { 2352 var input_index = ${t.indicesGet("input_indices","i")}; 2353 if (input_index < 0 || input_index >= ${tM("uniforms.input_shape","i",r.length)}) { 2354 return false;
2355 } 2356 } 2357 return true; 2358 }`)(h,o)}; 2359 ${((t,r,i)=>`fn getNearestPixelFromOriginal(xOriginal: ${i}, isDownSample: bool) -> ${i} {`+(()=>{switch(t){case"round_prefer_ceil":return"if (fract(xOriginal) == 0.5) { return ceil(xOriginal); } else { return round(xOriginal); }";case"floor":return"return floor(xOriginal);";case"ceil":return"return ceil(xOriginal);";case"round_prefer_floor":return"if (fract(xOriginal) == 0.5) { return floor(xOriginal); } else { return round(xOriginal); }";default:if(r<11)return"if (isDownSample) { return ceil(xOriginal); } else { return xOriginal; }";throw Error(`Nearest mode ${t} is not supported`)}})()+"}")(r.nearestMode,i,b)}; 2360 ${((t,r,i,a,n,s,o)=>` 2361 fn calculateInputIndicesFromOutputIndices(output_indices: ${r.type.indices}) -> ${t.type.indices} { 2362 var input_indices: ${t.type.indices}; 2363 for (var i:u32 = 0; i < ${a.length}; i++) { 2364 var output_index = ${r.indicesGet("output_indices","i")}; 2365 var input_index: u32; 2366 var scale = ${tM("uniforms.scales","i",n)}; 2367 if (scale == 1.0) { 2368 input_index = output_index; 2369 } else { 2370 var roi_low = ${tM("uniforms.roi","i",s)}; 2371 var roi_hi = ${tM("uniforms.roi",`i + ${i.length}`,s)}; 2372 var input_shape_i = ${tM("uniforms.input_shape","i",i.length)}; 2373 var output_shape_i = ${tM("uniforms.output_shape","i",a.length)}; 2374 var original_idx = getOriginalCoordinateFromResizedCoordinate(output_index, scale, output_shape_i, 2375 input_shape_i, roi_low, roi_hi); 2376 if (!${o} || (original_idx >= 0 && original_idx < ${r.type.value}(input_shape_i))) { 2377 if (original_idx < 0) { 2378 input_index = 0; 2379 } else if (original_idx > ${r.type.value}(input_shape_i - 1)) { 2380 input_index = input_shape_i - 1; 2381 } else { 2382 input_index = u32(getNearestPixelFromOriginal(original_idx, scale < 1)); 2383 } 2384 } else { 2385 input_index = u32(original_idx); 2386 } 2387 } 2388 ${t.indicesSet("input_indices","i","input_index")} 2389 } 2390 return input_indices; 2391 }`)(h,c,o,u,d.length,l.length,m)}; 2392 `;case"linear":return` 2393 ${((t,r,i,a,n)=>` 2394 fn calculateOriginalIndicesFromOutputIndices(output_indices: ${t.type.indices}) -> array<${t.type.value}, ${i.length}> { 2395 var original_indices: array<${t.type.value}, ${i.length}>; 2396 for (var i:u32 = 0; i < ${i.length}; i++) { 2397 var output_index = ${t.indicesGet("output_indices","i")}; 2398 var scale = ${tM("uniforms.scales","i",a)}; 2399 var roi_low = ${tM("uniforms.roi","i",n)}; 2400 var roi_hi = ${tM("uniforms.roi",`i + ${r.length}`,n)}; 2401 if (scale == 1.0) { 2402 original_indices[i] = ${t.type.value}(output_index); 2403 } else { 2404 var input_shape_i = ${tM("uniforms.input_shape","i",r.length)}; 2405 var output_shape_i = ${tM("uniforms.output_shape","i",i.length)}; 2406 original_indices[i] = getOriginalCoordinateFromResizedCoordinate(output_index, scale, output_shape_i, 2407 input_shape_i, roi_low, roi_hi); 2408 } 2409 } 2410 return original_indices; 2411 }`)(c,o,u,d.length,l.length)}; 2412 ${(()=>{if(2===o.length||4===o.length)return`${((t,r,i,a,n)=>{let[s,o,l,u]=2===i.length?[-1,0,1,-1]:[0,2,3,1],d=t.type.value;return` 2413 fn getInputValue(batch: u32, channel: u32, row: u32, col: u32) -> ${d} { 2414 var input_indices: ${t.type.indices}; 2415 ${t.indicesSet("input_indices",o,`max(0, min(row, ${i[o]} - 1))`)}; 2416 ${t.indicesSet("input_indices",l,`max(0, min(col, ${i[l]} - 1))`)}; 2417 ${a8(t,u,s,2)} 2418 return ${t.getByIndices("input_indices")}; 2419 } 2420 2421 fn bilinearInterpolation(output_indices: ${r.type.indices}) -> ${d} { 2422 var originalIndices = calculateOriginalIndicesFromOutputIndices(output_indices); 2423 var row:${d} = originalIndices[${o}]; 2424 var col:${d} = originalIndices[${l}]; 2425 ${a?`if (row < 0 || row > (${i[o]}
2425 - 1) || col < 0 || col > (${i[l]} - 1)) { 2426 return ${n}; 2427 }`:""}; 2428 row = max(0, min(row, ${i[o]} - 1)); 2429 col = max(0, min(col, ${i[l]} - 1)); 2430 var row1: u32 = u32(row); 2431 var col1: u32 = u32(col); 2432 var row2: u32 = u32(row + 1); 2433 var col2: u32 = u32(col + 1); 2434 var channel: u32 = ${i.length>2?`u32(originalIndices[${u}])`:"0"}; 2435 var batch: u32 = ${i.length>2?`u32(originalIndices[${s}])`:"0"}; 2436 var x11: ${d} = getInputValue(batch, channel, row1, col1); 2437 var x12: ${d} = getInputValue(batch, channel, row1, col2); 2438 var x21: ${d} = getInputValue(batch, channel, row2, col1); 2439 var x22: ${d} = getInputValue(batch, channel, row2, col2); 2440 var dx1: ${d} = abs(row - ${d}(row1)); 2441 var dx2: ${d} = abs(${d}(row2) - row); 2442 var dy1: ${d} = abs(col - ${d}(col1)); 2443 var dy2: ${d} = abs(${d}(col2) - col); 2444 if (row1 == row2) { 2445 dx1 = 0.5; 2446 dx2 = 0.5; 2447 } 2448 if (col1 == col2) { 2449 dy1 = 0.5; 2450 dy2 = 0.5; 2451 } 2452 return (x11 * dx2 * dy2 + x12 * dx2 * dy1 + x21 * dx1 * dy2 + x22 * dx1 * dy1); 2453 }`})(h,c,o,m,g)}`;if(3===o.length||5===o.length)return`${((t,r,i,a,n)=>{let[s,o,l,u,d]=3===i.length?[-1,0,1,2,-1]:[0,2,3,4,1],c=t.type.value;return` 2454 fn getInputValue(batch: u32, channel: u32, depth:u32, height: u32, width: u32) -> ${c} { 2455 var input_indices: ${t.type.indices}; 2456 ${t.indicesSet("input_indices",o,`max(0, min(depth, ${i[o]} - 1))`)}; 2457 ${t.indicesSet("input_indices",l,`max(0, min(height, ${i[l]} - 1))`)}; 2458 ${t.indicesSet("input_indices",u,`max(0, min(width, ${i[u]} - 1))`)}; 2459 ${a8(t,d,s,3)} 2460 return ${t.getByIndices("input_indices")}; 2461 } 2462 2463 fn trilinearInterpolation(output_indices: ${r.type.indices}) -> ${c} { 2464 var originalIndices = calculateOriginalIndicesFromOutputIndices(output_indices); 2465 var depth:${c} = originalIndices[${o}]; 2466 var height:${c} = originalIndices[${l}]; 2467 var width:${c} = originalIndices[${u}]; 2468 ${a?`if (depth < 0 || depth > (${i[o]} - 1) || height < 0 || height > (${i[l]} - 1) || width < 0 || (width > ${i[u]} - 1)) { 2469 return ${n}; 2470 }`:""}; 2471 2472 depth = max(0, min(depth, ${i[o]} - 1)); 2473 height = max(0, min(height, ${i[l]} - 1)); 2474 width = max(0, min(width, ${i[u]} - 1)); 2475 var depth1: u32 = u32(depth); 2476 var height1: u32 = u32(height); 2477 var width1: u32 = u32(width); 2478 var depth2: u32 = u32(depth + 1); 2479 var height2: u32 = u32(height + 1); 2480 var width2: u32 = u32(width + 1); 2481 var channel: u32 = ${i.length>3?`u32(originalIndices[${d}])`:"0"}; 2482 var batch: u32 = ${i.length>3?`u32(originalIndices[${s}])`:"0"}; 2483 2484 var x111: ${c} = getInputValue(batch, channel, depth1, height1, width1); 2485 var x112: ${c} = getInputValue(batch, channel, depth1, height1, width2); 2486 var x121: ${c} = getInputValue(batch, channel, depth1, height2, width1); 2487 var x122: ${c} = getInputValue(batch, channel, depth1, height2, width2); 2488 var x211: ${c} = getInputValue(batch, channel, depth2, height1, width1); 2489 var x212: ${c} = getInputValue(batch, channel, depth2, height1, width2); 2490 var x221: ${c} = getInputValue(batch, channel, depth2, height2, width1); 2491 var x222: ${c} = getInputValue(batch, channel, depth2, height2, width2); 2492 var dx1: ${c} = abs(depth - ${c}(depth1)); 2493 var dx2: ${c} = abs(${c}(depth2) - depth); 2494 var dy1: ${c} = abs(height - ${c}(height1)); 2495 var dy2: ${c} = abs(${c}(height2) - height); 2496 var dz1: ${c} = abs(width - ${c}(width1)); 2497 var dz2: ${c} = abs(${c}(width2) - width); 2498 if (depth1 == depth2) { 2499 dx1 = 0.5; 2500 dx2 = 0.5; 2501 } 2502 if (height1 == height2) { 2503 dy1 = 0.5; 2504 dy2 = 0.5; 2505 } 2506 if (width1 == width2) { 2507 dz1 = 0.5; 2508 dz2 = 0.5; 2509 } 2510 return (x111 * dx2 * dy2 * dz2 + x112 * dx2 * dy2 * dz1 + x121 * dx2 * dy1 *dz2 + x122 * dx2 * dy1 * dz1 + 2511 x211 * dx1 * dy2 * dz2 + x212 * dx1 * dy2 * dz1 + x221 * dx1 * dy1 *dz2 + x222 * dx1 * dy1 * dz1); 2512 }`})(h,c,o,m,g)}`;throw Error("Linear mode only supports input dims 2, 3, 4 and 5 are supported in linear mode.")})()}; 2513 `;case"cubic":return` 2514 ${(()=>{if(2===o.length||4===o.length)return`${((t,r,i,a,n,s,o,l,u,d)=>{let[c,h]=2===i.length?[0,1]:[2,3],f=t.type.value,p=o=>{let h=o===c?"row":"col";return` 2515 fn ${h}CubicInterpolation(input_indices: ${t.type.indices}, output_indices: ${r.type.indices}) -> ${f} { 2516 var output_index = ${r.indicesGet("output_indices",o)}; 2517 var originalIdx: ${f} = getOriginalCoordinateFromResizedCoordinate(output_index, ${n[o]}, 2518 ${a[o]}, ${i[o]}, ${s[o]}, ${s[o]} + ${i.length}); 2519 var fractOriginalIdx: ${f} = originalIdx - floor(originalIdx); 2520 var coefs = getCubicInterpolationCoefs(fractOriginalIdx); 2521 2522 if (${l} && (originalIdx < 0 || originalIdx > (${i[o]} - 1))) { 2523 return ${u}; 2524 } 2525 var data: array<${f}, 4> = array<${f}, 4>(0.0, 0.0, 0.0, 0.0); 2526 for (var i: i32 = -1; i < 3; i++) { 2527 var ${h}: ${f} = originalIdx + ${f}(i); 2528 if (${h} < 0 || ${h} >= ${i[o]}) { 2529 ${d?`coefs[i + 1] = 0.0; 2530 continue;`:l?`return ${u};`:`${h} = max(0, min(${h}, ${i[o]} - 1));`}; 2531 } 2532 var input_indices_copy: ${t.type.indices} = input_indices; 2533 ${t.indicesSet("input_indices_copy",o,`u32(${h})`)}; 2534 data[i + 1] = ${o===c?t.getByIndices("input_indices_copy"):"rowCubicInterpolation(input_indices_copy, output_indices)"}; 2535 } 2536 return cubicInterpolation1D(data, coefs); 2537 }`};return` 2538 ${p(c)}; 2539 ${p(h)}; 2540 fn getCubicInterpolationCoefs(s: ${f}) -> array<${f}, 4> { 2541 var absS = abs(s); 2542 var coeffs: array<${f}, 4> = array<${f}, 4>(0.0, 0.0, 0.0, 0.0); 2543 var oneMinusAbsS: ${f} = 1.0 - absS; 2544 var twoMinusAbsS: ${f} = 2.0 - absS; 2545 var onePlusAbsS: ${f} = 1.0 + absS; 2546 coeffs[0] = ((${o}
2546 * onePlusAbsS - 5 * ${o}) * onePlusAbsS + 8 * ${o}) * onePlusAbsS - 4 * ${o}; 2547 coeffs[1] = ((${o} + 2) * absS - (${o} + 3)) * absS * absS + 1; 2548 coeffs[2] = ((${o} + 2) * oneMinusAbsS - (${o} + 3)) * oneMinusAbsS * oneMinusAbsS + 1; 2549 coeffs[3] = ((${o} * twoMinusAbsS - 5 * ${o}) * twoMinusAbsS + 8 * ${o}) * twoMinusAbsS - 4 * ${o}; 2550 return coeffs; 2551 } 2552 2553 fn cubicInterpolation1D(x: array<${f}, 4>, coefs: array<${f}, 4>) -> ${f} { 2554 var coefsSum: ${f} = coefs[0] + coefs[1] + coefs[2] + coefs[3]; 2555 return (x[0] * coefs[0] + x[1] * coefs[1]+ x[2] * coefs[2]+ x[3] * coefs[3]) / coefsSum; 2556 } 2557 2558 fn bicubicInterpolation(output_indices: ${r.type.indices}) -> ${f} { 2559 var input_indices: ${t.type.indices} = output_indices; 2560 return colCubicInterpolation(input_indices, output_indices); 2561 } 2562 `})(h,c,o,u,d,l,r.cubicCoeffA,m,r.extrapolationValue,r.excludeOutside)}`;throw Error("Cubic mode only supports input dims 2 and 4 are supported in linear mode.")})()}; 2563 `;default:throw Error("Invalid resize mode")}})()}; 2564 `} 2565 ${t.registerUniform("output_size","u32").registerUniform("scales","f32",d.length).registerUniform("roi","f32",l.length).declareVariables(h,c)} 2566 ${t.mainStart()} 2567 ${t.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} 2568 ${p?"output[global_idx] = input[global_idx];":` 2569 let output_indices = ${c.offsetToIndices("global_idx")}; 2570 var input_indices: ${h.type.indices}; 2571 ${(()=>{switch(r.mode){case"nearest":return`input_indices = calculateInputIndicesFromOutputIndices(output_indices); 2572 if (checkInputIndices(input_indices)) { 2573 output[global_idx] = ${h.getByIndices("input_indices")}; 2574 } else { 2575 output[global_idx] = ${r.extrapolationValue}; 2576 }`;case"linear":return`output[global_idx] = ${2===o.length||4===o.length?"bilinearInterpolation":"trilinearInterpolation"}(output_indices);`;case"cubic":return"output[global_idx] = bicubicInterpolation(output_indices);";default:throw Error(`Unsupported resize mode: ${r.mode}`)}})()}; 2577`} 2578 }`,getRunData:()=>({outputs:[{dims:u,dataType:t.dataType}],dispatchGroup:{x:Math.ceil(f/64)},programUniforms:[{type:12,data:f},{type:1,data:d},{type:1,data:l},...tT(o,u)]})}})(t.inputs[0],r,s,i,a,n),{inputs:[0]})},a6=t=>{let r=t.antialias,i=t.axes,a=t.coordinateTransformMode,n=t.cubicCoeffA,s=0!==t.excludeOutside,o=t.extrapolationValue,l=t.keepAspectRatioPolicy,u=t.mode,d=""===t.nearestMode?"simple":t.nearestMode;return t$({antialias:r,axes:i,coordinateTransformMode:a,cubicCoeffA:n,excludeOutside:s,extrapolationValue:o,keepAspectRatioPolicy:l,mode:u,nearestMode:d})}}),sd=q(()=>{ng(),nv(),nC(),a5=(t,r)=>{(t=>{if(!t||t.length<3)throw Error("layerNorm requires at least 3 inputs.");let r=t[0],i=t[1],a=t[2];if(r.dataType!==i.dataType||r.dataType!==a.dataType)throw Error("All inputs must have the same data type");if(3!==r.dims.length&&2!==r.dims.length)throw Error("Input must be 2D or 3D");if(3!==i.dims.length&&2!==i.dims.length)throw Error("Skip must be 2D or 3D");let n=r.dims[r.dims.length-1],s=r.dims[r.dims.length-2];if(i.dims[i.dims.length-1]!==n)throw Error("Skip must have the same hidden size as input");if(i.dims[i.dims.length-2]!==s)throw Error("Skip must have the same sequence length as input");if(1!==a.dims.length)throw Error("Gamma must be 1D");if(a.dims[a.dims.length-1]!==n)throw Error("Gamma must have the same hidden size as input");if(t.length>3){let r=t[3];if(1!==r.dims.length)throw Error("Beta must be 1D");if(r.dims[r.dims.length-1]!==n)throw Error("Beta must have the same hidden size as input")}if(t.length>4){let r=t[4];if(1!==r.dims.length)throw Error("Bias must be 1D");if(r.dims[r.dims.length-1]!==n)throw Error("Bias must have the same hidden size as input")}})(t.inputs);let i=[0];t.outputCount>1&&i.push(-3),t.outputCount>2&&i.push(-3),t.outputCount>3&&i.push(3),t.compute(((t,r,i,a)=>{let n=r.simplified,s=t[0].dims,o=e8.size(s),l=s.slice(-1)[0],u=a?s.slice(0,-1).concat(1):[],d=!n&&t.length>3,c=t.length>4,h=a&&i>1,f=a&&i>2,p=i>3,m=tI(l),g=[{type:12,data:o},{type:12,data:m},{type:12,data:l},{type:1,data:r.epsilon}],b=[{dims:s,dataType:t[0].dataType}];return i>1&&b.push({dims:u,dataType:1}),i>2&&b.push({dims:u,dataType:1}),i>3&&b.push({dims:s,dataType:t[0].dataType}),{name:"SkipLayerNormalization",shaderCache:{hint:`${m};${h};${f};${p}`,inputDependencies:t.map((t,r)=>"type")},getShaderSource:r=>{let i=[tR("x",t[0].dataType,t[0].dims,m),tR("skip",t[1].dataType,t[1].dims,m),tR("gamma",t[2].dataType,t[2].dims,m)];d&&i.push(tR("beta",t[3].dataType,t[3].dims,m)),c&&i.push(tR("bias",t[4].dataType,t[4].dims,m)),i.push(tj("output",t[0].dataType,s,m)),h&&i.push(tj("mean_output",1,u)),f&&i.push(tj("inv_std_output",1,u)),p&&i.push(tj("input_skip_bias_sum",t[0].dataType,s,m));let a=tC(t[0].dataType),o=tC(1,m);return` 2579 2580 ${r.registerUniforms([{name:"output_size",type:"u32"},{name:"components",type:"u32"},{name:"hidden_size",type:"u32"},{name:"epsilon",type:"f32"}]).declareVariables(...i)} 2581 var<workgroup> sum_shared : array<${o}, 64>; 2582 var<workgroup> sum_squared_shared : array<${o}, 64>; 2583 2584 ${r.mainStart([64,1,1])} 2585 let ix = local_id.x; 2586 let iy = global_id.x / 64; 2587 2588 let hidden_size_vectorized: u32 = uniforms.hidden_size / uniforms.components; 2589 var stride = hidden_size_vectorized / 64; 2590 let offset = ix * stride + iy * hidden_size_vectorized; 2591 let offset1d = stride * ix; 2592 if (ix == 63) {
2593 stride = hidden_size_vectorized - stride * ix; 2594 } 2595 for (var i: u32 = 0; i < stride; i++) { 2596 let skip_value = skip[offset + i]; 2597 let bias_value = ${c?"bias[offset1d + i]":a+"(0.0)"}; 2598 let input_value = x[offset + i]; 2599 let value = input_value + skip_value + bias_value; 2600 ${p?"input_skip_bias_sum[offset + i] = value;":""} 2601 output[offset + i] = value; 2602 let f32_value = ${tN(a,m,"value")}; 2603 sum_shared[ix] += f32_value; 2604 sum_squared_shared[ix] += f32_value * f32_value; 2605 } 2606 workgroupBarrier(); 2607 2608 var reduce_size : u32 = 64; 2609 for (var curr_size = reduce_size >> 1; curr_size > 0; curr_size = reduce_size >> 1) { 2610 reduce_size = curr_size + (reduce_size & 1); 2611 if (ix < curr_size) { 2612 sum_shared[ix] += sum_shared[ix + reduce_size]; 2613 sum_squared_shared[ix] += sum_squared_shared[ix + reduce_size]; 2614 } 2615 workgroupBarrier(); 2616 } 2617 2618 let sum = sum_shared[0]; 2619 let square_sum = sum_squared_shared[0]; 2620 let mean = ${tO("sum",m)} / f32(uniforms.hidden_size); 2621 let inv_std_dev = inverseSqrt(${tO("square_sum",m)} / f32(uniforms.hidden_size) ${n?"":"- mean * mean"} + uniforms.epsilon); 2622 ${h?"mean_output[global_idx] = mean;":""} 2623 ${f?"inv_std_output[global_idx] = inv_std_dev;":""} 2624 2625 for (var i: u32 = 0; i < stride; i++) { 2626 output[offset + i] = (output[offset + i] ${n?"":`- ${a}(mean)`}) * 2627 ${a}(inv_std_dev) * gamma[offset1d + i] 2628 ${d?"+ beta[offset1d + i]":""}; 2629 } 2630 }`},getRunData:()=>({outputs:b,dispatchGroup:{x:Math.ceil(o/l)},programUniforms:g})}})(t.inputs,r,t.outputCount,!1),{outputs:i})}}),sc=q(()=>{ng(),nv(),nk(),nC(),a9=(t,r)=>{let i=[];if(t.length>r)if(7===t[r].dataType)t[r].getBigInt64Array().forEach(t=>i.push(Number(t)));else if(6===t[r].dataType)t[r].getInt32Array().forEach(t=>i.push(Number(t)));else throw Error(`Input ${r} must be an array of int32 or int64`);return i},ne=(t,r,i,a,n)=>{let s=t;return t<0&&(s+=i[a[r]]),n[r]<0?Math.max(0,Math.min(s,i[a[r]]-1)):Math.max(0,Math.min(s,i[a[r]]))},nt=(t,r)=>{((t,r)=>{if(!t||t.length<1)throw Error("too few inputs");if(0!==r.axes.length){if(r.axes.length!==r.starts.length||r.axes.length!==r.ends.length)throw Error("axes, starts and ends must have the same length")}else if(r.starts.length!==r.ends.length)throw Error("starts and ends must have the same length");t.slice(1).forEach((r,i)=>{if(6!==t[i+1].dataType&&7!==t[i+1].dataType)throw Error(`Input ${i} must be an array of int32 or int64`)})})(t.inputs,r);let i=((t,r)=>{if(!(t.length>1))return r;{let r=a9(t,1),i=a9(t,2),a=a9(t,3);return 0===a.length&&(a=[...Array(t[0].dims.length).keys()]),t$({starts:r,ends:i,axes:a})}})(t.inputs,r);t.compute(((t,r)=>{let i=t[0].dims,a=e8.size(i),n=r.axes.length>0?e8.normalizeAxes(r.axes,i.length):[...Array(i.length).keys()],s=a9(t,4);s.forEach(t=>0!==t||(()=>{throw Error("step cannot be 0")})),0===s.length&&(s=Array(n.length).fill(1));let o=r.starts.map((t,r)=>ne(t,r,i,n,s)),l=r.ends.map((t,r)=>ne(t,r,i,n,s));if(n.length!==o.length||n.length!==l.length)throw Error("start, ends and axes should have the same number of elements");if(n.length!==i.length)for(let t=0;t<i.length;++t)n.includes(t)||(o.splice(t,0,0),l.splice(t,0,i[t]),s.splice(t,0,1));let u=s.map(t=>Math.sign(t));s.forEach((t,r,i)=>{if(t<0){let a=(l[r]-o[r])/t,n=o[r],u=n+a*s[r];o[r]=u,l[r]=n,i[r]=-t}});let d=i.slice(0);n.forEach((t,r)=>{d[t]=Math.ceil((l[t]-o[t])/s[t])});let c={dims:d,dataType:t[0].dataType},h=tj("output",t[0].dataType,d.length),f=tR("input",t[0].dataType,t[0].dims.length),p=e8.size(d),m=[{name:"outputSize",type:"u32"},{name:"starts",type:"u32",length:o.length},{name:"signs",type:"i32",length:u.length},{name:"steps",type:"u32",length:s.length}],g=[{type:12,data:p},{type:12,data:o},{type:6,data:u},{type:12,data:s},...tT(t[0].dims,d)];return{name:"Slice",shaderCache:{hint:`${u.length}_${o.length}_${s.length}`,inputDependencies:["rank"]},getShaderSource:t=>` 2631 ${t.registerUniforms(m).declareVariables(f,h)} 2632 ${((t,r,i)=>`fn calculateInputIndices(output_indices: ${r.type.indices}) -> ${t.type.indices} { 2633 var input_indices: ${t.type.indices}; 2634 var carry = 0u; 2635 for (var i = ${i.length-1}; i >= 0; i--) { 2636 let input_shape_i = ${tM("uniforms.input_shape","i",i.length)}; 2637 let steps_i = ${tM("uniforms.steps","i",i.length)};
2638 let signs_i = ${tM("uniforms.signs","i",i.length)}; 2639 let starts_i = ${tM("uniforms.starts","i",i.length)}; 2640 var output_index = ${r.indicesGet("output_indices","i")}; 2641 var input_index = output_index * steps_i + starts_i + carry; 2642 carry = input_index / input_shape_i; 2643 input_index = input_index % input_shape_i; 2644 if (signs_i < 0) { 2645 input_index = input_shape_i - input_index - 1u + starts_i; 2646 } 2647 ${t.indicesSet("input_indices","i","input_index")}; 2648 } 2649 return input_indices; 2650 }`)(f,h,i)} 2651 ${t.mainStart()} 2652 ${t.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")} 2653 let output_indices = ${h.offsetToIndices("global_idx")}; 2654 let input_indices = calculateInputIndices(output_indices); 2655 ${h.setByOffset("global_idx",f.getByIndices("input_indices"))} 2656 }`,getRunData:()=>({outputs:[c],dispatchGroup:{x:Math.ceil(a/64)},programUniforms:g})}})(t.inputs,i),{inputs:[0]})},nr=t=>{let r=t.starts,i=t.ends,a=t.axes;return t$({starts:r,ends:i,axes:a})}}),sh=q(()=>{ng(),nv(),nk(),nE(),nC(),ni=(t,r)=>{(t=>{if(!t||1!==t.length)throw Error("Softmax op requires 1 input.")})(t.inputs),((t,r)=>{let i=t.inputs[0],a=i.dims,n=e8.size(a),s=a.length,o=e8.normalizeAxis(r.axis,s),l=o<a.length-1,u,d=[];l?((d=Array.from({length:s},(t,r)=>r))[o]=s-1,d[s-1]=o,u=t.compute(tF(i,d),{inputs:[i],outputs:[-1]})[0]):u=i;let c=u.dims,h=c[s-1],f=n/h,p=tI(h),m=h/p,g=64;1===f&&(g=256);let b=tR("x",u.dataType,u.dims,p),y=tj("result",u.dataType,u.dims,p),v=b.type.value,_="f32"===tC(u.dataType)?`var threadMax = ${v}(-3.402823e+38f);`:`var threadMax = ${v}(-65504.0h);`,w=t.compute({name:"Softmax",shaderCache:{hint:`${p};${g}`,inputDependencies:["type"]},getRunData:()=>({outputs:[{dims:c,dataType:u.dataType}],dispatchGroup:{x:f},programUniforms:[{type:6,data:m}]}),getShaderSource:t=>` 2657 var<workgroup> rowMaxShared : ${v}; 2658 var<workgroup> rowSumShared : ${v}; 2659 var<workgroup> threadShared : array<${v}, ${g}>; 2660 2661 fn getValue(row: i32, col: i32, row_stride: i32) -> ${v} { 2662 let index = row * row_stride + col; 2663 return x[index]; 2664 } 2665 2666 fn setValue(row: i32, col: i32, row_stride: i32, value: ${v}) { 2667 let index = row * row_stride + col; 2668 result[index] = value; 2669 } 2670 ${t.registerUniform("packedCols","i32").declareVariables(b,y)} 2671 ${t.mainStart(g)} 2672 let gindex = i32(global_idx); 2673 let lindex = i32(local_idx); 2674 const wg = ${g}; 2675 let row = gindex / wg; 2676 let cols = uniforms.packedCols; 2677 let row_stride : i32 = uniforms.packedCols; 2678 2679 // find the rows max 2680 ${_} 2681 for (var col = lindex; col < cols; col += wg) { 2682 let value = getValue(row, col, row_stride); 2683 threadMax = max(threadMax, value); 2684 } 2685 if (lindex < cols) { 2686 threadShared[lindex] = threadMax; 2687 } 2688 workgroupBarrier(); 2689 2690 var reduceSize = min(cols, wg); 2691 for (var currSize = reduceSize >> 1; currSize > 0; currSize = reduceSize >> 1) { 2692 reduceSize = currSize + (reduceSize & 1); 2693 if (lindex < currSize) { 2694 threadShared[lindex] = max(threadShared[lindex], threadShared[lindex + reduceSize]); 2695 } 2696 workgroupBarrier(); 2697 } 2698 if (lindex == 0) { 2699 rowMaxShared = ${v}(${((t,r)=>4===r?`max(max(${t}.x, ${t}.y), max(${t}.z, ${t}.w))`:2===r?`max(${t}.x, ${t}.y)`:3===r?`max(max(${t}.x, ${t}.y), ${t}.z)`:t)("threadShared[0]",p)}); 2700 } 2701 workgroupBarrier(); 2702 2703 // find the rows sum 2704 var threadSum = ${v}(0.0); 2705 for (var col = lindex; col < cols; col += wg) { 2706 let subExp = exp(getValue(row, col, row_stride) - rowMaxShared); 2707 threadSum += subExp; 2708 } 2709 threadShared[lindex] = threadSum; 2710 workgroupBarrier(); 2711 2712 for (var currSize = wg >> 1; currSize > 0; currSize = currSize >> 1) { 2713 if (lindex < currSize) { 2714 threadShared[lindex] = threadShared[lindex] + threadShared[lindex + currSize]; 2715 } 2716 workgroupBarrier(); 2717 } 2718 if (lindex == 0) { 2719 rowSumShared = ${v}(${tO("threadShared[0]",p)}); 2720 } 2721 workgroupBarrier(); 2722 2723 // calculate final value for each element in the row 2724 for (var col = lindex; col < cols; col += wg) { 2725 var value = exp(getValue(row, col, row_stride) - rowMaxShared) / rowSumShared; 2726 // max operation protects against NaN since all values should be >=0 2727 value = max(value, ${v}(0.0)); 2728 setValue(row, col, row_stride, value); 2729 } 2730 }`},{inputs:[u],outputs:[l?-1:0]})[0];l&&t.compute(tF(w,d),{inputs:[w]})})(t,r)},na=t=>t$({axis:t.axis})}),sf=q(()=>{ng(),nv(),nC(),nn=t=>Array.from(t.getBigInt64Array(),Number),ns=t=>{(t=>{if(!t||2!==t.length)throw Error("Tile requires 2 inputs.");if(1!==t[0].dataType&&10!==t[0].dataType&&6!==t[0].dataType&&12!==t[0].dataType)throw Error("Tile only support float, float16, int32, and uint32 data types");if(7!==t[1].dataType)throw Error("Tile `repeats` input should be of int64 data type");if(1!==t[1].dims.length)throw Error("Tile `repeats` input should be 1-D");if(nn(t[1]).length!==t[0].dims.length)throw Error("Tile `repeats` input should have same number of elements as rank of input data tensor")})(t.inputs),t.compute(((t,r)=>{let i=t[0].dims,a=r??nn(t[1]),n=((t,r)=>{let i=[];for(let a=0;a<t.length;++a)i.push(t[a]*r[a]);return i})(i,a),s=e8.size(n),o=t[0].dataType,l=tR("input",o,i.length),u=tj("output",o,n.length);return{name:"Tile",shaderCache:{hint:`${a}`,inputDependencies:["rank"]},getRunData:()=>({outputs:[{dims:n,dataType:t[0].dataType}],dispatchGroup:{x:Math.ceil(s/64)},programUniforms:[{type:12,data:s},...tT(t[0].dims,n)]}),getShaderSource:t=>` 2731 const inputShape = ${l.indices(...i)}; 2732 ${t.registerUniform("output_size","u32").declareVariables(l,u)} 2733 ${t.mainStart()} 2734 ${t.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")} 2735 let output_indices = ${u.offsetToIndices("global_idx")}; 2736 var input_indices: ${l.type.indices}; 2737 for (var i = 0; i < ${i.length}; i++) { 2738 let input_dim_i = ${l.indicesGet("uniforms.input_shape","i")}; 2739 let input_dim_value = ${u.indicesGet("output_indices","i")} % input_dim_i; 2740 2741 ${l.indicesSet("input_indices","i","input_dim_value")} 2742 } 2743 ${u.setByOffset("global_idx",l.getByIndices("input_indices"))} 2744 }`}})(t.inputs),{inputs:[0]})}}),sp=q(()=>{ng(),nv(),nC(),no=t=>{t.compute((t=>{let r=t[1].dims,i=t[2].dims,a=t[0].dims,n=t[1].dataType,s=!(e8.areEqual(r,i)&&e8.areEqual(i,a)),o=r,l=e8.size(r);
2744if(s){let t=e4.calcShape(e4.calcShape(r,i,!1),a,!1);if(!t)throw Error("Can't perform where op on the given tensors");o=t,l=e8.size(o)}let u=Math.ceil(l/4);return{name:"Where",shaderCache:{inputDependencies:["rank","rank","rank"]},getShaderSource:r=>((t,r,i,a,n)=>{let s=tj("output_data",n,i.length,4),o=tR("a_data",r[1].dataType,r[1].dims.length,4),l=tR("b_data",r[2].dataType,r[2].dims.length,4),u=tR("c_data",r[0].dataType,r[0].dims.length,4),d,c=(t,r,i)=>`select(${r}, ${t}, ${i})`;if(a){let t=(t,r,i="")=>{let a=`a_data[index_a${r}][component_a${r}]`,n=`b_data[index_b${r}][component_b${r}]`,d=`bool(c_data[index_c${r}] & (0xffu << (component_c${r} * 8)))`;return` 2745 let output_indices${r} = ${s.offsetToIndices(`global_idx * 4u + ${r}u`)}; 2746 let offset_a${r} = ${o.broadcastedIndicesToOffset(`output_indices${r}`,s)}; 2747 let offset_b${r} = ${l.broadcastedIndicesToOffset(`output_indices${r}`,s)}; 2748 let offset_c${r} = ${u.broadcastedIndicesToOffset(`output_indices${r}`,s)}; 2749 let index_a${r} = offset_a${r} / 4u; 2750 let index_b${r} = offset_b${r} / 4u; 2751 let index_c${r} = offset_c${r} / 4u; 2752 let component_a${r} = offset_a${r} % 4u; 2753 let component_b${r} = offset_b${r} % 4u; 2754 let component_c${r} = offset_c${r} % 4u; 2755 ${t}[${r}] = ${i}(${c(a,n,d)}); 2756 `};d=9===n?` 2757 var data = vec4<u32>(0); 2758 ${t("data",0,"u32")} 2759 ${t("data",1,"u32")} 2760 ${t("data",2,"u32")} 2761 ${t("data",3,"u32")} 2762 output_data[global_idx] = dot(vec4<u32>(0x1, 0x100, 0x10000, 0x1000000), vec4<u32>(data));`:` 2763 ${t("output_data[global_idx]",0)} 2764 ${t("output_data[global_idx]",1)} 2765 ${t("output_data[global_idx]",2)} 2766 ${t("output_data[global_idx]",3)} 2767 `}else d=s.setByOffset("global_idx",c(o.getByOffset("global_idx"),l.getByOffset("global_idx"),u.getByOffset("global_idx")));return` 2768 ${t.registerUniform("vec_size","u32").declareVariables(u,o,l,s)} 2769 ${t.mainStart()} 2770 ${t.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.vec_size")} 2771 ${d} 2772 }`})(r,t,o,s,n),getRunData:()=>({outputs:[{dims:o,dataType:n}],dispatchGroup:{x:Math.ceil(l/64/4)},programUniforms:[{type:12,data:u},...tT(a,r,i,o)]})}})(t.inputs))}}),sm=q(()=>{nA(),nN(),nO(),nM(),nR(),nj(),nz(),nH(),nK(),nY(),nQ(),nX(),nZ(),nJ(),n1(),n0(),n2(),n3(),n4(),n8(),n9(),se(),st(),sr(),si(),n7(),sa(),sn(),ss(),so(),sl(),nI(),su(),n5(),sd(),sc(),sh(),n6(),sf(),nE(),nP(),sp(),nl=new Map([["Abs",[rx]],["Acos",[r$]],["Acosh",[rS]],["Add",[it]],["ArgMax",[rp,rm]],["ArgMin",[rf,rm]],["Asin",[rk]],["Asinh",[rC]],["Atan",[rE]],["Atanh",[rT]],["Attention",[ry]],["AveragePool",[aV,aq]],["BatchNormalization",[rv]],["BiasAdd",[r_]],["BiasSplitGelu",[r9]],["Cast",[rA,rI]],["Ceil",[rO]],["Clip",[rN]],["Concat",[ih,ip]],["Conv",[iL,iD]],["ConvTranspose",[iG,iW]],["Cos",[rM]],["Cosh",[rP]],["CumSum",[iK,iY]],["DepthToSpace",[iQ,iX]],["DequantizeLinear",[aJ,a1]],["Div",[ir]],["Einsum",[i4,i8]],["Elu",[rj,rR]],["Equal",[ii]],["Erf",[rD]],["Exp",[rB]],["Expand",[i6]],["FastGelu",[i5]],["Floor",[rL]],["FusedConv",[iL,iD]],["Gather",[ae,i9]],["GatherElements",[as,an]],["GatherBlockQuantized",[ai,aa]],["GatherND",[at,ar]],["Gelu",[rU]],["Gemm",[al,ao]],["GlobalAveragePool",[aG,aH]],["GlobalMaxPool",[aZ,aX]],["Greater",[il]],["GreaterOrEqual",[id]],["GridSample",[ap,am]],["GroupQueryAttention",[aT]],["HardSigmoid",[rY,rK]],["InstanceNormalization",[aA]],["LayerNormalization",[aN]],["LeakyRelu",[rF,rR]],["Less",[iu]],["LessOrEqual",[ic]],["Log",[r7]],["MatMul",[aO]],["MatMulNBits",[aM,aP]],["MaxPool",[aY,aQ]],["Mul",[ia]],["MultiHeadAttention",[a_,ab]],["Neg",[rV]],["Not",[rq]],["Pad",[aR]],["Pow",[is]],["QuickGelu",[r5,rR]],["Range",[a0]],["Reciprocal",[rW]],["ReduceMin",[ro]],["ReduceMean",[rr]],["ReduceMax",[rs]],["ReduceSum",[ru]],["ReduceProd",[rl]],["ReduceL1",[ri]],["ReduceL2",[ra]],["ReduceLogSum",[rc]],["ReduceLogSumExp",[rn]],["ReduceSumSquare",[rd]],["Relu",[rH]],["Resize",[a7,a6]],["RotaryEmbedding",[ak]],["ScatterND",[a3,a2]],["Sigmoid",[rG]],["Sin",[rQ]],["Sinh",[rX]],["Slice",[nt,nr]],["Ski
2772pLayerNormalization",[a5]],["Split",[ax,a$]],["Sqrt",[rZ]],["Softmax",[ni,na]],["Sub",[io]],["Tan",[rJ]],["Tanh",[r0]],["ThresholdedRelu",[r8,rR]],["Tile",[ns]],["Transpose",[tq,tV]],["Where",[no]]])}),sg=q(()=>{ed(),ny(),nC(),nu=class{constructor(t){this.backend=t,this.repo=new Map,this.attributesBound=!1}getArtifact(t){return this.repo.get(t)}setArtifact(t,r){this.repo.set(t,r)}run(t,r,i,a,n){N(t.programInfo.name);let s=this.backend.device,o=this.backend.getComputePassEncoder();this.backend.writeTimestamp(2*this.backend.pendingDispatchNumber);let l=[];for(let t of r)l.push({binding:l.length,resource:{buffer:t.buffer}});for(let t of i)l.push({binding:l.length,resource:{buffer:t.buffer}});n&&l.push({binding:l.length,resource:n});let u=s.createBindGroup({layout:t.computePipeline.getBindGroupLayout(0),entries:l,label:t.programInfo.name});if("capturing"===this.backend.sessionStatus){let r={kernelId:this.backend.currentKernelId,computePipeline:t.computePipeline,bindGroup:u,dispatchGroup:a};this.backend.capturedCommandList.get(this.backend.currentSessionId).push(r)}o.setPipeline(t.computePipeline),o.setBindGroup(0,u),o.dispatchWorkgroups(...a),this.backend.writeTimestamp(2*this.backend.pendingDispatchNumber+1),this.backend.pendingDispatchNumber++,(this.backend.pendingDispatchNumber>=this.backend.maxDispatchNumber||"at-passes"===this.backend.queryType)&&this.backend.endComputePass(),this.backend.pendingDispatchNumber>=this.backend.maxDispatchNumber&&this.backend.flush(),O(t.programInfo.name)}dispose(){}build(t,r){N(t.name);let i=this.backend.device,a=[];[{feature:"shader-f16",extension:"f16"},{feature:"subgroups",extension:"subgroups"}].forEach(t=>{i.features.has(t.feature)&&a.push(`enable ${t.extension};`)});let n=tL(r,this.backend.device.limits),s=t.getShaderSource(n),o=`${a.join(` 2773`)} 2774${n.additionalImplementations} 2775${s}`,l=i.createShaderModule({code:o,label:t.name});e2("verbose",()=>`[WebGPU] ${t.name} shader code: ${o}`);let u=i.createComputePipeline({compute:{module:l,entryPoint:"main"},layout:"auto",label:t.name});return O(t.name),{programInfo:t,computePipeline:u,uniformVariablesInfo:n.variablesInfo}}normalizeDispatchGroupSize(t){let r="number"==typeof t?t:t.x,i="number"==typeof t?1:t.y||1,a="number"==typeof t?1:t.z||1,n=this.backend.device.limits.maxComputeWorkgroupsPerDimension;if(r<=n&&i<=n&&a<=n)return[r,i,a];let s=r*i*a,o=Math.ceil(Math.sqrt(s));if(!(o>n))return[o,o,1];if((o=Math.ceil(Math.cbrt(s)))>n)throw Error("Total dispatch size exceeds WebGPU maximum.");return[o,o,o]}}}),sb={};V(sb,{WebGpuBackend:()=>sv});var sy,sv,s_=q(()=>{ed(),ng(),ny(),n_(),nS(),sm(),sg(),sy=class{constructor(t){t&&(this.architecture=t.architecture,this.vendor=t.vendor)}isArchitecture(t){return this.architecture===t}isVendor(t){return this.vendor===t}},sv=class{constructor(){this.currentSessionId=null,this.currentKernelId=null,this.commandEncoder=null,this.computePassEncoder=null,this.maxDispatchNumber=16,this.pendingDispatchNumber=0,this.pendingKernels=[],this.pendingQueries=new Map,this.sessionStatus="default",this.capturedCommandList=new Map,this.capturedPendingKernels=new Map,this.sessionExternalDataMapping=new Map}get currentKernelCustomData(){if(null===this.currentKernelId)throw Error("currentKernelCustomData(): currentKernelId is null. (should not happen)");let t=this.kernelCustomData.get(this.currentKernelId);return t||(t={},this.kernelCustomData.set(this.currentKernelId,t)),t}async initialize(t,r){this.env=t;let i=[],a={requiredLimits:{maxComputeWorkgroupStorageSize:r.limits.maxComputeWorkgroupStorageSize,maxComputeWorkgroupsPerDimension:r.limits.maxComputeWorkgroupsPerDimension,maxStorageBufferBindingSize:r.limits.maxStorageBufferBindingSize,maxBufferSize:r.limits.maxBufferSize,maxComputeInvocationsPerWorkgroup:r.limits.maxComputeInvocationsPerWorkgroup,maxComputeWorkgroupSizeX:r.limits.maxComputeWorkgroupSizeX,maxComputeWorkgroupSizeY:r.limits.maxComputeWorkgroupSizeY,maxComputeWorkgroupSizeZ:r.limits.maxComputeWorkgroupSizeZ},requiredFeatures:i},n=t=>r.features.has(t)&&i.push(t)&&!0;n("chromium-experimental-timestamp-query-inside-passes")||n("timestamp-query"),n("shader-f16"),n("subgroups"),this.device=await r.requestDevice(a),this.adapterInfo=new sy(r.info||await r.requestAdapterInfo()),this.gpuDataManager=tw(this),this.programManager=new nu(this),this.kernels=new Map,this.kernelPersistentData=new Map,this.kernelCustomData=new Map,e0(t.logLevel,!!t.debug),this.device.onuncapturederror=t=>
2775{t.error instanceof GPUValidationError&&console.error(`An uncaught WebGPU validation error was raised: ${t.error.message}`)},Object.defineProperty(this.env.webgpu,"device",{value:this.device,writable:!1,enumerable:!0,configurable:!1}),Object.defineProperty(this.env.webgpu,"adapter",{value:r,writable:!1,enumerable:!0,configurable:!1}),this.setQueryType()}dispose(){"u">typeof this.querySet&&this.querySet.destroy(),this.gpuDataManager.dispose()}getCommandEncoder(){return this.commandEncoder||(this.commandEncoder=this.device.createCommandEncoder()),this.commandEncoder}getComputePassEncoder(){if(!this.computePassEncoder){let t=this.getCommandEncoder(),r={};"at-passes"===this.queryType&&(r.timestampWrites={querySet:this.querySet,beginningOfPassWriteIndex:2*this.pendingDispatchNumber,endOfPassWriteIndex:2*this.pendingDispatchNumber+1}),this.computePassEncoder=t.beginComputePass(r)}return this.computePassEncoder}endComputePass(){this.computePassEncoder&&(this.computePassEncoder.end(),this.computePassEncoder=null)}flush(){let t;this.commandEncoder&&(N(),this.endComputePass(),"none"!==this.queryType&&(this.commandEncoder.resolveQuerySet(this.querySet,0,2*this.pendingDispatchNumber,this.queryResolveBuffer,0),t=this.device.createBuffer({size:2*this.pendingDispatchNumber*8,usage:GPUBufferUsage.MAP_READ|GPUBufferUsage.COPY_DST}),this.pendingQueries.set(t,this.pendingKernels),this.pendingKernels=[],this.commandEncoder.copyBufferToBuffer(this.queryResolveBuffer,0,t,0,2*this.pendingDispatchNumber*8)),this.device.queue.submit([this.commandEncoder.finish()]),this.gpuDataManager.refreshPendingBuffers(),this.commandEncoder=null,this.pendingDispatchNumber=0,"none"!==this.queryType&&t.mapAsync(GPUMapMode.READ).then(()=>{let r=new BigUint64Array(t.getMappedRange()),i=this.pendingQueries.get(t);for(let t=0;t<r.length/2;t++){let a=i[t],n=a.kernelId,s=this.kernels.get(n),o=s.kernelType,l=s.kernelName,u=a.programName,d=a.inputTensorViews,c=a.outputTensorViews,h=r[2*t],f=r[2*t+1];typeof this.queryTimeBase>"u"&&(this.queryTimeBase=h);let p=Number(h-this.queryTimeBase),m=Number(f-this.queryTimeBase);if(!Number.isSafeInteger(p)||!Number.isSafeInteger(m))throw RangeError("incorrect timestamp range");if(this.env.webgpu.profiling?.ondata)this.env.webgpu.profiling.ondata({version:1,inputsMetadata:d.map(t=>({dims:t.dims,dataType:eV(t.dataType)})),outputsMetadata:c.map(t=>({dims:t.dims,dataType:eV(t.dataType)})),kernelId:n,kernelType:o,kernelName:l,programName:u,startTime:p,endTime:m});else{let t="";d.forEach((r,i)=>{t+=`input[${i}]: [${r.dims}] | ${eV(r.dataType)}, `});let r="";c.forEach((t,i)=>{r+=`output[${i}]: [${t.dims}] | ${eV(t.dataType)}, `}),console.log(`[profiling] kernel "${n}|${o}|${l}|${u}" ${t}${r}start time: ${p} ns, execution time: ${m-p} ns`)}I("GPU",`${u}::${h}::${f}`)}t.unmap(),this.pendingQueries.delete(t)}),O())}run(t,r,i,a,n,s){var o,l,u;let d,c;N(t.name);let h=[];for(let t=0;t<r.length;++t){let i=r[t].data;if(0===i)continue;let a=this.gpuDataManager.get(i);
2775if(!a)throw Error(`no GPU data for input: ${i}`);h.push(a)}let{outputs:f,dispatchGroup:p,programUniforms:m}=t.getRunData(r),g=0===i.length?f.map((t,r)=>r):i;if(g.length!==f.length)throw Error(`Output size ${g.length} must be equal to ${f.length}.`);let b=[],y=[];for(let t=0;t<f.length;++t){if(!Number.isInteger(g[t])||g[t]<-3||g[t]>=s)throw Error(`Invalid output index: ${g[t]}`);if(-3===g[t])continue;let r=-1===g[t],i=-2===g[t],o=r||i?n(f[t].dataType,f[t].dims):a(g[t],f[t].dataType,f[t].dims);if(b.push(o),0===o.data)continue;let l=this.gpuDataManager.get(o.data);if(!l)throw Error(`no GPU data for output: ${o.data}`);if(r&&this.temporaryData.push(l),i){let t=this.kernelPersistentData.get(this.currentKernelId);t||(t=[],this.kernelPersistentData.set(this.currentKernelId,t)),t.push(l)}y.push(l)}if(h.length!==r.length||y.length!==b.length){if(0===y.length)return O(t.name),b;throw Error(`Program ${t.name} has zero-sized tensor(s) in inputs or outputs. This is not supported now.`)}if(m){let t=0,r=[];m.forEach(i=>{let a="number"==typeof i.data?[i.data]:i.data;if(0===a.length)return;let n=10===i.type?2:4,s,o;10===i.type?(o=a.length>4?16:a.length>2?8:a.length*n,s=a.length>4?16:n*a.length):(o=a.length<=2?a.length*n:16,s=16),t=Math.ceil(t/o)*o,r.push(t);let l=10===i.type?8:4;t+=a.length>4?Math.ceil(a.length/l)*s:a.length*n});let i=new ArrayBuffer(t=16*Math.ceil(t/16));m.forEach((t,a)=>{let n=r[a],s="number"==typeof t.data?[t.data]:t.data;if(6===t.type)new Int32Array(i,n,s.length).set(s);else if(12===t.type)new Uint32Array(i,n,s.length).set(s);else if(10===t.type)new Uint16Array(i,n,s.length).set(s);else if(1===t.type)new Float32Array(i,n,s.length).set(s);else throw Error(`Unsupported uniform type: ${eV(t.type)}`)});let a=this.gpuDataManager.create(t,GPUBufferUsage.COPY_DST|GPUBufferUsage.UNIFORM);this.device.queue.writeBuffer(a.buffer,0,i,0,t),this.gpuDataManager.release(a.id),d={offset:0,size:t,buffer:a.buffer}}let v=this.programManager.normalizeDispatchGroupSize(p),_=(o=t,l=r,u=1===v[1]&&1===v[2],c=o.name,o.shaderCache?.hint&&(c+="["+o.shaderCache.hint+"]"),c+=":"+u+`:${((t,r)=>{if(r.length!==t.length)throw Error(`inputDependencies length ${r.length} is not equal to inputTensors length ${t.length}.`);let i=[];for(let a=0;a<t.length;++a){let n=t[a].dataType;switch(r[a]){case"none":i.push("");break;case"type":i.push(`${n}`);break;case"rank":{let r=t[a].dims.length;i.push(`${n};${r}`);break}case"dims":{let r=t[a].dims.join(",");i.push(`${n};${r}`);break}default:throw Error(`unsupported input dependency: ${r[a]}`)}}return i.join("|")})(l,o.shaderCache?.inputDependencies??Array(l.length).fill("dims"))}`),w=this.programManager.getArtifact(_);if(w||(w=this.programManager.build(t,v),this.programManager.setArtifact(_,w),e2("info",()=>`[artifact] key: ${_}, programName: ${t.name}`)),m&&w.uniformVariablesInfo){if(m.length!==w.uniformVariablesInfo.length)throw Error(`Uniform variables count mismatch: expect ${w.uniformVariablesInfo.length}, got ${m.length} in program "${w.programInfo.name}".`);for(let t=0;t<m.length;t++){let r=m[t],i=r.type,a="number"==typeof r.data?1:r.data.length,[n,s]=w.uniformVariablesInfo[t];if(i!==n||a!==s)throw Error(`Uniform variable ${t} mismatch: expect type ${n} with size ${s}, got type ${i} with size ${a} in program "${w.programInfo.name}".`)}}if(e2("info",()=>`[ProgramManager] run "${t.name}" (key=${_}) with ${v[0]}x${v[1]}x${v[2]}`),"none"!==this.queryType||"capturing"===this.sessionStatus){let t={kernelId:this.currentKernelId,programName:w.programInfo.name,inputTensorViews:r,outputTensorViews:b};this.pendingKernels.push(t),"capturing"===this.sessionStatus&&this.capturedPendingKernels.get(this.currentSessionId).push(t)}return this.programManager.run(w,h,y,v,d),O(t.name),b}upload(t,r){this.gpuDataManager.upload(t,r)}memcpy(t,r){this.gpuDataManager.memcpy(t,r)}async download(t,r){await this.gpuDataManager.download(t,r)}alloc(t){return this.gpuDataManager.create(t).id}free(t){return this.gpuDataManager.release(t)}createKernel(t,r,i,a){let n=nl.get(t);if(!n)throw Error(`kernel not implemented: ${t}`);let s={kernelType:t,kernelName:a,kernelEntry:n[0],attributes:[n[1],i]};this.kernels.set(r,s)}releaseKernel(t){let r=this.kernelPersistentData.get(t);
2775if(r){for(let t of r)this.gpuDataManager.release(t.id);this.kernelPersistentData.delete(t)}this.kernelCustomData.delete(t),this.kernels.delete(t)}computeKernel(t,r,i){let a=this.kernels.get(t);if(!a)throw Error(`kernel not created: ${t}`);let n=a.kernelType,s=a.kernelName,o=a.kernelEntry,l=a.attributes;if(null!==this.currentKernelId)throw Error(`kernel "[${n}] ${s}" is not allowed to be called recursively`);this.currentKernelId=t,l[0]&&(l[1]=l[0](l[1]),l[0]=void 0),e2("info",()=>`[WebGPU] Start to run kernel "[${n}] ${s}"...`);let u=this.env.debug;this.temporaryData=[];try{return u&&this.device.pushErrorScope("validation"),o(r,l[1]),0}catch(t){return i.push(Promise.resolve(`[WebGPU] Kernel "[${n}] ${s}" failed. ${t}`)),1}finally{for(let t of(u&&i.push(this.device.popErrorScope().then(t=>t?`GPU validation error for kernel "[${n}] ${s}": ${t.message}`:null)),this.temporaryData))this.gpuDataManager.release(t.id);this.temporaryData=[],this.currentKernelId=null}}registerBuffer(t,r,i,a){let n=this.sessionExternalDataMapping.get(t);n||(n=new Map,this.sessionExternalDataMapping.set(t,n));let s=n.get(r),o=this.gpuDataManager.registerExternalBuffer(i,a,s);return n.set(r,[o,i]),o}unregisterBuffers(t){let r=this.sessionExternalDataMapping.get(t);r&&(r.forEach(t=>this.gpuDataManager.unregisterExternalBuffer(t[0])),this.sessionExternalDataMapping.delete(t))}getBuffer(t){let r=this.gpuDataManager.get(t);if(!r)throw Error(`no GPU data for buffer: ${t}`);return r.buffer}createDownloader(t,r,i){return async()=>{let a=await tv(this,t,r);return te(a.buffer,i)}}writeTimestamp(t){"inside-passes"===this.queryType&&this.computePassEncoder.writeTimestamp(this.querySet,t)}setQueryType(){this.queryType="none",(this.env.webgpu.profiling?.mode==="default"||(typeof this.env.trace>"u"?this.env.wasm.trace:this.env.trace))&&(this.device.features.has("chromium-experimental-timestamp-query-inside-passes")?this.queryType="inside-passes":this.device.features.has("timestamp-query")&&(this.queryType="at-passes"),"none"!==this.queryType&&typeof this.querySet>"u"&&(this.querySet=this.device.createQuerySet({type:"timestamp",count:2*this.maxDispatchNumber}),this.queryResolveBuffer=this.device.createBuffer({size:2*this.maxDispatchNumber*8,usage:GPUBufferUsage.COPY_SRC|GPUBufferUsage.QUERY_RESOLVE})))}captureBegin(){e2("info","captureBegin"),this.capturedCommandList.get(this.currentSessionId)||this.capturedCommandList.set(this.currentSessionId,[]),this.capturedPendingKernels.get(this.currentSessionId)||this.capturedPendingKernels.set(this.currentSessionId,[]),this.flush(),this.sessionStatus="capturing"}captureEnd(){e2("info","captureEnd"),this.flush(),this.sessionStatus="default"}replay(){e2("info","replay"),this.sessionStatus="replaying";let t=this.capturedCommandList.get(this.currentSessionId),r=this.capturedPendingKernels.get(this.currentSessionId),i=t.length;this.pendingKernels=[];for(let a=0;a<i;a++){let i=this.getComputePassEncoder(),n=t[a];this.writeTimestamp(2*this.pendingDispatchNumber),i.setPipeline(n.computePipeline),i.setBindGroup(0,n.bindGroup),i.dispatchWorkgroups(...n.dispatchGroup),this.writeTimestamp(2*this.pendingDispatchNumber+1),this.pendingDispatchNumber++,"none"!==this.queryType&&this.pendingKernels.push(r[a]),(this.pendingDispatchNumber>=this.maxDispatchNumber||"at-passes"===this.queryType)&&this.endComputePass(),this.pendingDispatchNumber>=this.maxDispatchNumber&&this.flush()}this.flush(),this.sessionStatus="default"}onCreateSession(){this.gpuDataManager.onCreateSession()}onReleaseSession(t){this.unregisterBuffers(t),this.capturedCommandList.has(t)&&this.capturedCommandList.delete(t),this.capturedPendingKernels.has(t)&&this.capturedPendingKernels.delete(t),this.gpuDataManager.onReleaseSession(t)}onRunStart(t){this.currentSessionId=t,this.setQueryType()}}}),sw={};V(sw,{init:()=>sS});var sx,s$,sS,sk,sC,sE,sT,sI,sA,sN,sO,sM,sP,sR,sj,sz,sD,sB,sL,sU,sF,sq,sV,sW,sH,sG,sK,sY,sQ,sX,sZ,sJ,s1,s0,s2,s3=q(()=>{ng(),ny(),nv(),nx(),sx=class t{constructor(t,r,i,a){this.module=t,this.dataType=r,this.data=i,this.dims=a}getFloat32Array(){if(1!==this.dataType)throw Error("Invalid data type");let t=e8.size(this.dims);return 0===t?new Float32Array:new Float32Array(this.module.HEAP8.buffer,this.data,t)}getBigInt64Array(){if(7!==this.dataType)throw Error("Invalid data type");let t=e8.size(this.dims);return 0===t?new BigInt64Array:new BigInt64Array(this.module.HEAP8.buffer,this.data,t)}getInt32Array(){if(6!==this.dataType)throw Error("Invalid data type");let t=e8.size(this.dims);return 0===t?new Int32Array:new Int32Array(this.module.HEAP8.buffer,this.data,t)}getUint16Array(){if(10!==this.dataType&&4!==this.dataType)throw Error("Invalid data type");let t=e8.size(this.dims);return 0===t?new Uint16Array:new Uint16Array(this.module.HEAP8.buffer,this.data,t)}reshape(r){if(e8.size(r)!==e8.size(this.dims))throw Error("Invalid new shape");return new t(this.module,this.dataType,this.data,r)}},s$=class{constructor(t,r,i){this.module=t,this.backend=r,this.customDataOffset=0,this.customDataSize=0,this.adapterInfo=r.adapterInfo;let a=t.PTR_SIZE,n=i/t.PTR_SIZE,s=4===a?"i32":"i64";this.opKernelContext=Number(t.getValue(a*n++,s));let o=Number(t.getValue(a*n++,s));this.outputCount=Number(t.getValue(a*n++,s)),this.customDataOffset=Number(t.getValue(a*n++,"*")),this.customDataSize=Number(t.getValue(a*n++,s));let l=[];for(let r=0;r<o;r++){let r=Number(t.getValue(a*n++,s)),i=Number(t.getValue(a*n++,"*")),o=Number(t.getValue(a*n++,s)),u=[];for(let r=0;r<o;r++)u.push(Number(t.getValue(a*n++,s)));l.push(new sx(t,r,i,u))}this.inputs=l}get kernelCustomData(){return this.backend.currentKernelCustomData}get customDataBuffer(){return this.module.HEAPU8.subarray(this.customDataOffset,this.customDataOffset+this.customDataSize)}compute(t,r){let i=r?.inputs?.map(t=>"number"==typeof t?this.inputs[t]:t)??this.inputs,a=r?.outputs??[],n=(t,r,i)=>new sx(this.module,r,this.output(t,i),i),s=(t,r)=>{let i=eW(t,r);
2775if(!i)throw Error(`Unsupported data type: ${t}`);let a=i>0?this.backend.gpuDataManager.create(i).id:0;return new sx(this.module,t,a,r)};return this.backend.run(t,i,a,n,s,this.outputCount)}output(t,r){let i=this.module.stackSave();try{let i=this.module.PTR_SIZE,a=4===i?"i32":"i64",n=this.module.stackAlloc((1+r.length)*i);this.module.setValue(n,r.length,a);for(let t=0;t<r.length;t++)this.module.setValue(n+i*(t+1),r[t],a);return this.module._JsepOutput(this.opKernelContext,t,n)}catch(i){throw Error(`Failed to generate kernel's output[${t}] with dims [${r}]. If you are running with pre-allocated output, please make sure the output type/dims are correct. Error: ${i}`)}finally{this.module.stackRestore(i)}}},sS=async(t,r,i,a)=>{let n=r.jsepInit;if(!n)throw Error("Failed to initialize JSEP. The WebAssembly module is not built with JSEP support.");if("webgpu"===t){let t=new(s_(),W(sb)).WebGpuBackend;await t.initialize(i,a),n("webgpu",[t,r=>t.alloc(Number(r)),r=>t.free(r),(i,a,n,s=!1)=>{if(s)e2("verbose",()=>`[WebGPU] jsepCopyGpuToGpu: src=${Number(i)}, dst=${Number(a)}, size=${Number(n)}`),t.memcpy(Number(i),Number(a));else{e2("verbose",()=>`[WebGPU] jsepCopyCpuToGpu: dataOffset=${Number(i)}, gpuDataId=${Number(a)}, size=${Number(n)}`);let s=r.HEAPU8.subarray(Number(i>>>0),Number(i>>>0)+Number(n));t.upload(Number(a),s)}},async(i,a,n)=>{e2("verbose",()=>`[WebGPU] jsepCopyGpuToCpu: gpuDataId=${i}, dataOffset=${a}, size=${n}`),await t.download(Number(i),()=>r.HEAPU8.subarray(Number(a)>>>0,Number(a+n)>>>0))},(i,a,n)=>t.createKernel(i,Number(a),n,r.UTF8ToString(r._JsepGetNodeName(Number(a)))),r=>t.releaseKernel(r),(i,a,n,s)=>{e2("verbose",()=>`[WebGPU] jsepRun: sessionHandle=${n}, kernel=${i}, contextDataOffset=${a}`);let o=new s$(r,t,Number(a));return t.computeKernel(Number(i),o,s)},()=>t.captureBegin(),()=>t.captureEnd(),()=>t.replay()])}else{let t=new tf(i);n("webnn",[t,()=>t.reserveTensorId(),r=>t.releaseTensorId(r),async(r,i,a,n,s)=>t.ensureTensor(r,i,a,n,s),(r,i)=>{t.uploadTensor(r,i)},async(r,i)=>t.downloadTensor(r,i),(r,i)=>t.registerMLContext(r,i),!!i.trace])}}}),s4=q(()=>{ed(),np(),nm(),ng(),nh(),nf(),nb(),sk=async t=>{var r,i;r=t.wasm.numThreads,i=eG(t.logLevel),0!==eR()._OrtInit(r,i)&&eD("Can't initialize onnxruntime.")},sC=async(t,r)=>{eR().asyncInit?.();let i=t.webgpu.adapter;if("webgpu"===r){if(typeof navigator>"u"||!navigator.gpu)throw Error("WebGPU is not supported in current environment");if(i){if("object"!=typeof i.limits||"object"!=typeof i.features||"function"!=typeof i.requestDevice)throw Error("Invalid GPU adapter set in `env.webgpu.adapter`. It must be a GPUAdapter object.")}else{let r=t.webgpu.powerPreference;if(void 0!==r&&"low-power"!==r&&"high-performance"!==r)throw Error(`Invalid powerPreference setting: "${r}"`);let a=t.webgpu.forceFallbackAdapter;if(void 0!==a&&"boolean"!=typeof a)throw Error(`Invalid forceFallbackAdapter setting: "${a}"`);if(!(i=await navigator.gpu.requestAdapter({powerPreference:r,forceFallbackAdapter:a})))throw Error('Failed to get GPU adapter. You may need to enable flag "--enable-unsafe-webgpu" if you are using Chrome.')}}if("webnn"===r&&(typeof navigator>"u"||!navigator.ml))throw Error("WebNN is not supported in current environment");{let a=(s3(),W(sw)).init;"webgpu"===r&&await a("webgpu",eR(),t,i),"webnn"===r&&await a("webnn",eR(),t)}},sE=new Map,sT=(t,r)=>{let i=eR(),a=i.stackSave(),n=0;try{let a=i.PTR_SIZE,s=i.stackAlloc(2*a);0!==i._OrtGetInputOutputMetadata(t,r,s,s+a)&&eD("Can't get session input/output metadata.");let o=Number(i.getValue(s,"*"));n=Number(i.getValue(s+a,"*"));let l=i.HEAP32[n/4];if(0===l)return[o,0];let u=i.HEAPU32[n/4+1],d=[];for(let t=0;t<u;t++){let r=Number(i.getValue(n+8+t*a,"*"));d.push(0!==r?i.UTF8ToString(r):Number(i.getValue(n+8+(t+u)*a,"*")))}return[o,l,d]}finally{i.stackRestore(a),0!==n&&i._OrtFree(n)}},sI=t=>{let r=eR(),i=r._malloc(t.byteLength);if(0===i)throw Error(`Can't create a session. failed to allocate a buffer of size ${t.byteLength}.`);return r.HEAPU8.set(t,i),[i,t.byteLength]},sA=async(t,r)=>{let i,a,n=eR();Array.isArray(t)?[i,a]=t:t.buffer===n.HEAPU8.buffer?[i,a]=[t.byteOffset,t.byteLength]:[i,a]=sI(t);let s=0,o=0,l=0,u=[],d=[],c=[];try{if([o,u]=await eF(r),r?.externalData&&n.mountExternalData){let t=[];for(let i of r.externalData){let r="string"==typeof i?i:i.path;t.push(eX("string"==typeof i?i:i.data).then(t=>{n.mountExternalData(r,t)}))}await Promise.all(t)}
2775for(let t of r?.executionProviders??[])if(("string"==typeof t?t:t.name)==="webnn"){if(n.shouldTransferToMLTensor=!1,"string"!=typeof t){let r=t?.context,i=t?.gpuDevice,a=t?.deviceType,s=t?.powerPreference;r?n.currentContext=r:i?n.currentContext=await n.webnnCreateMLContext(i):n.currentContext=await n.webnnCreateMLContext({deviceType:a,powerPreference:s})}else n.currentContext=await n.webnnCreateMLContext();break}s=await n._OrtCreateSession(i,a,o),n.webgpuOnCreateSession?.(s),0===s&&eD("Can't create a session."),n.jsepOnCreateSession?.(),n.currentContext&&(n.webnnRegisterMLContext(s,n.currentContext),n.currentContext=void 0,n.shouldTransferToMLTensor=!0);let[t,h]=(t=>{let r=eR(),i=r.stackSave();try{let i=r.PTR_SIZE,a=r.stackAlloc(2*i);0!==r._OrtGetInputOutputCount(t,a,a+i)&&eD("Can't get session input/output count.");let n=4===i?"i32":"i64";return[Number(r.getValue(a,n)),Number(r.getValue(a+i,n))]}finally{r.stackRestore(i)}})(s),f=!!r?.enableGraphCapture,p=[],m=[],g=[],b=[],y=[];for(let r=0;r<t;r++){let[t,i,a]=sT(s,r);0===t&&eD("Can't get an input name."),d.push(t);let o=n.UTF8ToString(t);p.push(o),g.push(0===i?{name:o,isTensor:!1}:{name:o,isTensor:!0,type:eV(i),shape:a})}for(let i=0;i<h;i++){let[a,o,l]=sT(s,i+t);0===a&&eD("Can't get an output name."),c.push(a);let u=n.UTF8ToString(a);m.push(u),b.push(0===o?{name:u,isTensor:!1}:{name:u,isTensor:!0,type:eV(o),shape:l});{if(f&&r?.preferredOutputLocation===void 0){y.push("gpu-buffer");continue}let t="string"==typeof r?.preferredOutputLocation?r.preferredOutputLocation:r?.preferredOutputLocation?.[u]??"cpu",i=n.webnnIsGraphOutput;if("cpu"===t&&i&&i(s,u)){y.push("ml-tensor-cpu-output");continue}if("cpu"!==t&&"cpu-pinned"!==t&&"gpu-buffer"!==t&&"ml-tensor"!==t)throw Error(`Not supported preferred output location: ${t}.`);if(f&&"gpu-buffer"!==t)throw Error(`Not supported preferred output location: ${t}. Only 'gpu-buffer' location is supported when enableGraphCapture is true.`);y.push(t)}}let v=null;return y.some(t=>"gpu-buffer"===t||"ml-tensor"===t||"ml-tensor-cpu-output"===t)&&(l=n._OrtCreateBinding(s),0===l&&eD("Can't create IO binding."),v={handle:l,outputPreferredLocations:y,outputPreferredLocationsEncoded:y.map(t=>"ml-tensor-cpu-output"===t?"ml-tensor":t).map(t=>eQ(t))}),sE.set(s,[s,d,c,v,f,!1]),[s,p,m,g,b]}catch(t){throw d.forEach(t=>n._OrtFree(t)),c.forEach(t=>n._OrtFree(t)),0!==l&&0!==n._OrtReleaseBinding(l)&&eD("Can't release IO binding."),0!==s&&0!==n._OrtReleaseSession(s)&&eD("Can't release session."),t}finally{n._free(i),0!==o&&0!==n._OrtReleaseSessionOptions(o)&&eD("Can't release session options."),u.forEach(t=>n._free(t)),n.unmountExternalData?.()}},sN=t=>{let r=eR(),i=sE.get(t);if(!i)throw Error(`cannot release session. invalid session id: ${t}`);let[a,n,s,o,l]=i;o&&(l&&0!==r._OrtClearBoundOutputs(o.handle)&&eD("Can't clear bound outputs."),0!==r._OrtReleaseBinding(o.handle)&&eD("Can't release IO binding.")),r.jsepOnReleaseSession?.(t),r.webnnOnReleaseSession?.(t),r.webgpuOnReleaseSession?.(t),n.forEach(t=>r._OrtFree(t)),s.forEach(t=>r._OrtFree(t)),0!==r._OrtReleaseSession(a)&&eD("Can't release session."),sE.delete(t)},sO=async(t,r,i,a,n,s,o=!1)=>{if(!t)return void r.push(0);let l=eR(),u=l.PTR_SIZE,d=t[0],c=t[1],h=t[3],f=h,p,m;if("string"===d&&("gpu-buffer"===h||"ml-tensor"===h))throw Error("String tensor is not supported on GPU.");if(o&&"gpu-buffer"!==h)throw Error(`External buffer must be provided for input/output index ${s} when enableGraphCapture is true.`);if("gpu-buffer"===h){let r=t[2].gpuBuffer;m=eW(eq(d),c);{let t=l.jsepRegisterBuffer;if(!t)throw Error('Tensor location "gpu-buffer" is not supported without using WebGPU.');p=t(a,s,r,m)}}else if("ml-tensor"===h){let r=t[2].mlTensor;m=eW(eq(d),c);let i=l.webnnRegisterMLTensor;if(!i)throw Error('Tensor location "ml-tensor" is not supported without using WebNN.');p=i(a,r,eq(d),c)}else{let r=t[2];if(Array.isArray(r)){m=u*r.length,p=l._malloc(m),i.push(p);for(let t=0;t<r.length;t++){if("string"!=typeof r[t])throw TypeError(`tensor data at index ${t} is not a string`);l.setValue(p+t*u,ej(r[t],i),"*")}}else{let t=l.webnnIsGraphInput,s=l.webnnIsGraphOutput;if("string"!==d&&t&&s){let o=l.UTF8ToString(n);if(t(a,o)||s(a,o)){let t=eq(d);m=eW(t,c),f="ml-tensor";let i=l.webnnCreateTemporaryTensor,n=l.webnnUploadTensor;if(!i||!n)throw Error('Tensor location "ml-tensor" is not supported without using WebNN.');let s=await i(a,t,c);n(s,new Uint8Array(r.buffer,r.byteOffset,r.byteLength)),p=s}else m=r.byteLength,p=l._malloc(m),i.push(p),l.HEAPU8.set(new Uint8Array(r.buffer,r.byteOffset,m),p)}else m=r.byteLength,p=l._malloc(m),i.push(p),l.HEAPU8.set(new Uint8Array(r.buffer,r.byteOffset,m),p)}}let g=l.stackSave(),b=l.stackAlloc(4*c.length);
2775try{c.forEach((t,r)=>l.setValue(b+r*u,t,4===u?"i32":"i64"));let t=l._OrtCreateTensor(eq(d),p,m,b,c.length,eQ(f));0===t&&eD(`Can't create tensor for input/output. session=${a}, index=${s}.`),r.push(t)}finally{l.stackRestore(g)}},sM=async(t,r,i,a,n,s)=>{let o=eR(),l=o.PTR_SIZE,u=sE.get(t);if(!u)throw Error(`cannot run inference. invalid session id: ${t}`);let d=u[0],c=u[1],h=u[2],f=u[3],p=u[4],m=u[5],g=r.length,b=a.length,y=0,v=[],_=[],w=[],x=[],$=o.stackSave(),S=o.stackAlloc(g*l),k=o.stackAlloc(g*l),C=o.stackAlloc(b*l),E=o.stackAlloc(b*l);try{let u;[y,v]=eB(s),M("wasm prepareInputOutputTensor");for(let a=0;a<g;a++)await sO(i[a],_,x,t,c[r[a]],r[a],p);for(let r=0;r<b;r++)await sO(n[r],w,x,t,h[a[r]],g+a[r],p);P("wasm prepareInputOutputTensor");for(let t=0;t<g;t++)o.setValue(S+t*l,_[t],"*"),o.setValue(k+t*l,c[r[t]],"*");for(let t=0;t<b;t++)o.setValue(C+t*l,w[t],"*"),o.setValue(E+t*l,h[a[t]],"*");if(f&&!m){let{handle:i,outputPreferredLocations:s,outputPreferredLocationsEncoded:l}=f;if(c.length!==g)throw Error(`input count from feeds (${g}
2775) is expected to be always equal to model's input count (${c.length}).`);M("wasm bindInputsOutputs");for(let a=0;a<g;a++){let n=r[a];await o._OrtBindInput(i,c[n],_[a])!==0&&eD(`Can't bind input[${a}] for session=${t}.`)}for(let r=0;r<b;r++){let u=a[r];n[r]?.[3]?0!==o._OrtBindOutput(i,h[u],w[r],0)&&eD(`Can't bind pre-allocated output[${r}] for session=${t}.`):0!==o._OrtBindOutput(i,h[u],0,l[u])&&eD(`Can't bind output[${r}] to ${s[r]} for session=${t}.`)}P("wasm bindInputsOutputs"),sE.set(t,[d,c,h,f,p,!0])}o.jsepOnRunStart?.(d),o.webnnOnRunStart?.(d),u=f?await o._OrtRunWithBinding(d,f.handle,b,C,y):await o._OrtRun(d,k,S,g,E,b,C,y),0!==u&&eD("failed to call OrtRun().");let $=[],T=[];M("wasm ProcessOutputTensor");for(let r=0;r<b;r++){let i=Number(o.getValue(C+r*l,"*"));if(i===w[r]){$.push(n[r]);continue}let s=o.stackSave(),u=o.stackAlloc(4*l),d=!1,c,h=0;try{0!==o._OrtGetTensorData(i,u,u+l,u+2*l,u+3*l)&&eD(`Can't access output tensor data on index ${r}.`);let n=4===l?"i32":"i64",s=Number(o.getValue(u,n));h=o.getValue(u+l,"*");let p=o.getValue(u+2*l,"*"),m=Number(o.getValue(u+3*l,n)),g=[];for(let t=0;t<m;t++)g.push(Number(o.getValue(p+t*l,n)));0!==o._OrtFree(p)&&eD("Can't free memory for tensor dims.");let b=g.reduce((t,r)=>t*r,1);c=eV(s);let y=f?.outputPreferredLocations[a[r]];if("string"===c){if("gpu-buffer"===y||"ml-tensor"===y)throw Error("String tensor is not supported on GPU.");let t=[];for(let r=0;r<b;r++){let i=o.getValue(h+r*l,"*"),a=o.getValue(h+(r+1)*l,"*"),n=r===b-1?void 0:a-i;t.push(o.UTF8ToString(i,n))}$.push([c,g,t,"cpu"])}else if("gpu-buffer"===y&&b>0){let t=o.jsepGetBuffer;if(!t)throw Error('preferredLocation "gpu-buffer" is not supported without using WebGPU.');let r=t(h),a=eW(s,b);if(void 0===a||!eK(c))throw Error(`Unsupported data type: ${c}`);d=!0,$.push([c,g,{gpuBuffer:r,download:o.jsepCreateDownloader(r,a,c),dispose:()=>{0!==o._OrtReleaseTensor(i)&&eD("Can't release tensor.")}},"gpu-buffer"])}else if("ml-tensor"===y&&b>0){let r=o.webnnEnsureTensor,a=o.webnnIsGraphInputOutputTypeSupported;if(!r||!a)throw Error('preferredLocation "ml-tensor" is not supported without using WebNN.');if(void 0===eW(s,b)||!eY(c))throw Error(`Unsupported data type: ${c}`);if(!a(t,c,!1))throw Error(`preferredLocation "ml-tensor" for ${c} output is not supported by current WebNN Context.`);let n=await r(t,h,s,g,!1);d=!0,$.push([c,g,{mlTensor:n,download:o.webnnCreateMLTensorDownloader(h,c),dispose:()=>{o.webnnReleaseTensorId(h),o._OrtReleaseTensor(i)}},"ml-tensor"])}else if("ml-tensor-cpu-output"===y&&b>0){let t=o.webnnCreateMLTensorDownloader(h,c)(),r=$.length;d=!0,T.push((async()=>{let a=[r,await t];return o.webnnReleaseTensorId(h),o._OrtReleaseTensor(i),a})()),$.push([c,g,[],"cpu"])}else{let t=new(eH(c))(b);new Uint8Array(t.buffer,t.byteOffset,t.byteLength).set(o.HEAPU8.subarray(h,h+t.byteLength)),$.push([c,g,t,"cpu"])}}finally{o.stackRestore(s),"string"===c&&h&&o._free(h),d||o._OrtReleaseTensor(i)}}for(let[r,i]of(f&&!p&&(0!==o._OrtClearBoundOutputs(f.handle)&&eD("Can't clear bound outputs."),sE.set(t,[d,c,h,f,p,!1])),await Promise.all(T)))$[r][2]=i;return P("wasm ProcessOutputTensor"),$}finally{o.webnnOnRunEnd?.(d),o.stackRestore($),_.forEach(t=>o._OrtReleaseTensor(t)),w.forEach(t=>o._OrtReleaseTensor(t)),x.forEach(t=>o._free(t)),0!==y&&o._OrtReleaseRunOptions(y),v.forEach(t=>o._free(t))}},sP=t=>{let r=eR(),i=sE.get(t);if(!i)throw Error("invalid session id");let a=i[0],n=r._OrtEndProfiling(a);0===n&&eD("Can't get an profile file name."),r._OrtFree(n)},sR=t=>{let r=[];for(let i of t){let t=i[2];!Array.isArray(t)&&"buffer"in t&&r.push(t.buffer)}return r}}),s8=q(()=>{ed(),s4(),nh(),nc(),sj=()=>!!h.wasm.proxy&&"u">typeof document,sD=!1,sB=!1,sL=!1,sq=new Map,sV=(t,r)=>{let i=sq.get(t);i?i.push(r):sq.set(t,[r])},sW=()=>{if(sD||!sB||sL||!sz)throw Error("worker not ready")},sH=t=>{switch(t.data.type){case"init-wasm":sD=!1,t.data.err?(sL=!0,sF[1](t.data.err)):(sB=!0,sF[0]()),sU&&(URL.revokeObjectURL(sU),sU=void 0);break;case"init-ep":case"copy-from":case"create":case"release":case"run":case"end-profiling":{let r=sq.get(t.data.type);t.data.err?r.shift()[1](t.data.err):r.shift()[0](t.data.out)}}},sG=async()=>
2775{if(!sB){if(sD)throw Error("multiple calls to 'initWasm()' detected.");if(sL)throw Error("previous call to 'initWasm()' failed.");if(sD=!0,sj())return new Promise((t,r)=>{sz?.terminate(),eE().then(([a,n])=>{try{(sz=n).onerror=t=>r(t),sz.onmessage=sH,sF=[t,r];let s={type:"init-wasm",in:h};!s.in.wasm.wasmPaths&&(a||e_)&&(s.in.wasm.wasmPaths={wasm:new i.U(i(84659)).href}),sz.postMessage(s),sU=a}catch(t){r(t)}},r)});try{await eP(h.wasm),await sk(h),sB=!0}catch(t){throw sL=!0,t}finally{sD=!1}}},sK=async t=>{if(sj())return sW(),new Promise((r,i)=>{sV("init-ep",[r,i]);let a={type:"init-ep",in:{epName:t,env:h}};sz.postMessage(a)});await sC(h,t)},sY=async t=>sj()?(sW(),new Promise((r,i)=>{sV("copy-from",[r,i]),sz.postMessage({type:"copy-from",in:{buffer:t}},[t.buffer])})):sI(t),sQ=async(t,r)=>{if(!sj())return sA(t,r);if(r?.preferredOutputLocation)throw Error('session option "preferredOutputLocation" is not supported for proxy.');return sW(),new Promise((i,a)=>{sV("create",[i,a]);let n={type:"create",in:{model:t,options:{...r}}},s=[];t instanceof Uint8Array&&s.push(t.buffer),sz.postMessage(n,s)})},sX=async t=>{if(sj())return sW(),new Promise((r,i)=>{sV("release",[r,i]),sz.postMessage({type:"release",in:t})});sN(t)},sZ=async(t,r,i,a,n,s)=>{if(!sj())return sM(t,r,i,a,n,s);if(i.some(t=>"cpu"!==t[3]))throw Error("input tensor on GPU is not supported for proxy.");if(n.some(t=>t))throw Error("pre-allocated output tensor is not supported for proxy.");return sW(),new Promise((n,o)=>{sV("run",[n,o]),sz.postMessage({type:"run",in:{sessionId:t,inputIndices:r,inputs:i,outputIndices:a,options:s}},sR(i))})},sJ=async t=>{if(sj())return sW(),new Promise((r,i)=>{sV("end-profiling",[r,i]),sz.postMessage({type:"end-profiling",in:t})});sP(t)}}),s7=q(()=>{ed(),s8(),ng(),ec(),nb(),s1=(t,r)=>{switch(t.location){case"cpu":return[t.type,t.dims,t.data,"cpu"];case"gpu-buffer":return[t.type,t.dims,{gpuBuffer:t.gpuBuffer},"gpu-buffer"];case"ml-tensor":return[t.type,t.dims,{mlTensor:t.mlTensor},"ml-tensor"];default:throw Error(`invalid data location: ${t.location} for ${r()}`)}},s0=t=>{switch(t[3]){case"cpu":return new T(t[0],t[2],t[1]);case"gpu-buffer":{let r=t[0];if(!eK(r))throw Error(`not supported data type: ${r} for deserializing GPU tensor`);let{gpuBuffer:i,download:a,dispose:n}=t[2];return T.fromGpuBuffer(i,{dataType:r,dims:t[1],download:a,dispose:n})}case"ml-tensor":{let r=t[0];if(!eY(r))throw Error(`not supported data type: ${r} for deserializing MLTensor tensor`);let{mlTensor:i,download:a,dispose:n}=t[2];return T.fromMLTensor(i,{dataType:r,dims:t[1],download:a,dispose:n})}default:throw Error(`invalid data location: ${t[3]}`)}},s2=class{async fetchModelAndCopyToWasmMemory(t){return sY(await eX(t))}async loadModel(t,r){let i;N(),i="string"==typeof t?await this.fetchModelAndCopyToWasmMemory(t):t,[this.sessionId,this.inputNames,this.outputNames,this.inputMetadata,this.outputMetadata]=await sQ(i,r),O()}async dispose(){return sX(this.sessionId)}async run(t,r,i){N();let a=[],n=[];Object.entries(t).forEach(t=>{let r=t[0],i=t[1],s=this.inputNames.indexOf(r);if(-1===s)throw Error(`invalid input '${r}'`);a.push(i),n.push(s)});let s=[],o=[];Object.entries(r).forEach(t=>{let r=t[0],i=t[1],a=this.outputNames.indexOf(r);if(-1===a)throw Error(`invalid output '${r}'`);s.push(i),o.push(a)});let l=a.map((t,r)=>s1(t,()=>`input "${this.inputNames[n[r]]}"`)),u=s.map((t,r)=>t?s1(t,()=>`output "${this.outputNames[o[r]]}"`):null),d=await sZ(this.sessionId,n,l,o,u,i),c={};for(let t=0;t<d.length;t++)c[this.outputNames[o[t]]]=s[t]??s0(d[t]);return O(),c}startProfiling(){}endProfiling(){sJ(this.sessionId)}}}),s6={};V(s6,{OnnxruntimeWebAssemblyBackend:()=>s9,initializeFlags:()=>s5,wasmBackend:()=>oe});var s5,s9,oe,ot=q(()=>{ed(),s8(),s7(),s5=()=>{("number"!=typeof h.wasm.initTimeout||h.wasm.initTimeout<0)&&(h.wasm.initTimeout=0);let t=h.wasm.simd;if("boolean"!=typeof t&&void 0!==t&&"fixed"!==t&&"relaxed"!==t&&(console.warn(`Property "env.wasm.simd" is set to unknown value "${t}". Reset it to \`false\` and ignore SIMD feature checking.`),h.wasm.simd=!1),"boolean"!=typeof h.wasm.proxy&&(h.wasm.proxy=!1),"boolean"!=typeof h.wasm.trace&&(h.wasm.trace=!1),"number"!=typeof h.wasm.numThreads||!Number.isInteger(h.wasm.numThreads)||h.wasm.numThreads<=0)if("u">typeof self&&!self.crossOriginIsolated)h.wasm.numThreads=1;else{let t=typeof navigator>"u"?F("node:os").cpus().length:navigator.hardwareConcurrency;h.wasm.numThreads=Math.min(4,Math.ceil((t||1)/2))}},oe=new(s9=class{async init(t){s5(),await sG(),await sK(t)}async createInferenceSessionHandler(t,r){let i=new s2;return await i.loadModel(t,r),i}})});ed(),ed(),ed();{let t=(ot(),W(s6)).wasmBackend;s("webgpu",t,5),s("webnn",t,5),s("cpu",t,10),s("wasm",t,10)}Object.defineProperty(h.versions,"web",{value:"1.23.0",enumerable:!0});var or=i(32711);let oi=JSON.parse('{"a1a1":0,"a1b1":1,"a1c1":2,"a1d1":3,"a1e1":4,"a1f1":5,"a1g1":6,"a1h1":7,"a1a2":8,"a1b2":9,"a1c2":10,"a1d2":11,"a1e2":12,"a1f2":13,"a1g2":14,"a1h2":15,"a1a3":16,"a1b3":17,"a1c3":18,"a1d3":19,"a1e3":20,"a1f3":21,"a1g3":22,"a1h3":23,"a1a4":24,"a1b4":25,"a1c4":26,"a1d4":27,"a1e4":28,"a1f4":29,"a1g4":30,"a1h4":31,"a1a5":32,"a1b5":33,"a1c5":34,"a1d5":35,"a1e5":36,"a1f5":37,"a1g5":38,"a1h5":39,"a1a6":40,"a1b6":41,"a1c6":42,"a1d6":43,"a1e6":44,"a1f6":45,"a1g6":46,"a1h6":47,"a1a7":48,"a1b7":49,"a1c7":50,"a1d7":51,"a1e7":52,"a1f7":53,"a1g7":54,"a1h7":55,"a1a8":56,"a1b8":57,"a1c8":58,"a1d8":59,"a1e8":60,"a1f8":61,"a1g8":62,"a1h8":63,"b1a1":64,"b1b1":65,"b1c1":66,"b1d1":67,"b1e1":68,"b1f1":69,"b1g1":70,"b1h1":71,"b1a2":72,"b1b2":73,"b1c2":74,"b1d2":75,"b1e2":76,"b1f2":77,"b1g2":78,"b1h2":79,"b1a3":80,"b1b3":81,"b1c3":82,"b1d3":83,"b1e3":84,"b1f3":85,"b1g3":86,"b1h3":87,"b1a4":88,"b1b4":89,"b1c4":90,"b1d4":91,"b1e4":92,"b1f4":93,"b1g4":94,"b1h4":95,"b1a5":96,"b1b5":97,"b1c5":98,"b1d5":99,"b1e5":100,"b1f5":101,"b1g5":102,"b1h5":103,"b1a6":104,"b1b6":105,"b1c6":106,"b1d6":107,"b1e6":108,"b1f6":109,"b1g6":110,"b1h6":111,"b1a7":112,"b1b7":113,"b1c7":114,"b1d7":115,"b1e7":116,"b1f7":117,"b1g7":118,"b1h7":119,"b1a8":120,"b1b8":121,"b1c8":122,"b1d8":123,"b1e8":124,"b1f8":125,"b1g8":126,"b1h8":127,"c1a1":128,"c1b1":129,"c1c1":130,"c1d1":131,"c1e1":132,"c1f1":133,"c1g1":134,"c1h1":135,"c1a2":136,"c1b2":137,"c1c2":138,"c1d2":139,"c1e2":140,"c1f2":141,"c1g2":142,"c1h2":143,"c1a3":144,"c1b3":145,"c1c3":146,"c1d3":147,"c1e3":148,"c1f3":149,"c1g3":150,"c1h3":151,"c1a4":152,"c1b4":153,"c1c4":154,"c1d4":155,"c1e4":156,"c1f4":157,"c1g4":158,"c1h4":159,"c1a5":160,"c1b5":161,"c1c5":162,"c1d5":163,"c1e5":164,"c1f5":165,"c1g5":166,"c1h5":167,"c1a6":168,"c1b6":169,"c1c6":170,"c1d6":171,"c1e6":172,"c1f6":173,"c1g6":174,"c1h6":175,"c1a7":176,"c1b7":177,"c1c7":178,"c1d7":179,"c1e7":180,"c1f7":181,"c1g7":182,"c1h7":183,"c1a8":184,"c1b8":185,"c1c8":186,"c1d8":187,"c1e8":188,"c1f8":189,"c1g8":190,"c1h8":191,"d1a1":192,"d1b1":193,"d1c1":194,"d1d1":195,"d1e1":196,"d1f1":197,"d1g1":198,"d1h1":199,"d1a2":200,"d1b2":201,"d1c2":202,"d1d2":203,"d1e2":204,"d1f2":205,"d1g2":206,"d1h2":207,"d1a3":208,"d1b3":209,"d1c3":210,"d1d3":211,"d1e3":212,"d1f3":213,"d1g3":214,"d1h3":215,"d1a4":2
277516,"d1b4":217,"d1c4":218,"d1d4":219,"d1e4":220,"d1f4":221,"d1g4":222,"d1h4":223,"d1a5":224,"d1b5":225,"d1c5":226,"d1d5":227,"d1e5":228,"d1f5":229,"d1g5":230,"d1h5":231,"d1a6":232,"d1b6":233,"d1c6":234,"d1d6":235,"d1e6":236,"d1f6":237,"d1g6":238,"d1h6":239,"d1a7":240,"d1b7":241,"d1c7":242,"d1d7":243,"d1e7":244,"d1f7":245,"d1g7":246,"d1h7":247,"d1a8":248,"d1b8":249,"d1c8":250,"d1d8":251,"d1e8":252,"d1f8":253,"d1g8":254,"d1h8":255,"e1a1":256,"e1b1":257,"e1c1":258,"e1d1":259,"e1e1":260,"e1f1":261,"e1g1":262,"e1h1":263,"e1a2":264,"e1b2":265,"e1c2":266,"e1d2":267,"e1e2":268,"e1f2":269,"e1g2":270,"e1h2":271,"e1a3":272,"e1b3":273,"e1c3":274,"e1d3":275,"e1e3":276,"e1f3":277,"e1g3":278,"e1h3":279,"e1a4":280,"e1b4":281,"e1c4":282,"e1d4":283,"e1e4":284,"e1f4":285,"e1g4":286,"e1h4":287,"e1a5":288,"e1b5":289,"e1c5":290,"e1d5":291,"e1e5":292,"e1f5":293,"e1g5":294,"e1h5":295,"e1a6":296,"e1b6":297,"e1c6":298,"e1d6":299,"e1e6":300,"e1f6":301,"e1g6":302,"e1h6":303,"e1a7":304,"e1b7":305,"e1c7":306,"e1d7":307,"e1e7":308,"e1f7":309,"e1g7":310,"e1h7":311,"e1a8":312,"e1b8":313,"e1c8":314,"e1d8":315,"e1e8":316,"e1f8":317,"e1g8":318,"e1h8":319,"f1a1":320,"f1b1":321,"f1c1":322,"f1d1":323,"f1e1":324,"f1f1":325,"f1g1":326,"f1h1":327,"f1a2":328,"f1b2":329,"f1c2":330,"f1d2":331,"f1e2":332,"f1f2":333,"f1g2":334,"f1h2":335,"f1a3":336,"f1b3":337,"f1c3":338,"f1d3":339,"f1e3":340,"f1f3":341,"f1g3":342,"f1h3":343,"f1a4":344,"f1b4"
2775:345,"f1c4":346,"f1d4":347,"f1e4":348,"f1f4":349,"f1g4":350,"f1h4":351,"f1a5":352,"f1b5":353,"f1c5":354,"f1d5":355,"f1e5":356,"f1f5":357,"f1g5":358,"f1h5":359,"f1a6":360,"f1b6":361,"f1c6":362,"f1d6":363,"f1e6":364,"f1f6":365,"f1g6":366,"f1h6":367,"f1a7":368,"f1b7":369,"f1c7":370,"f1d7":371,"f1e7":372,"f1f7":373,"f1g7":374,"f1h7":375,"f1a8":376,"f1b8":377,"f1c8":378,"f1d8":379,"f1e8":380,"f1f8":381,"f1g8":382,"f1h8":383,"g1a1":384,"g1b1":385,"g1c1":386,"g1d1":387,"g1e1":388,"g1f1":389,"g1g1":390,"g1h1":391,"g1a2":392,"g1b2":393,"g1c2":394,"g1d2":395,"g1e2":396,"g1f2":397,"g1g2":398,"g1h2":399,"g1a3":400,"g1b3":401,"g1c3":402,"g1d3":403,"g1e3":404,"g1f3":405,"g1g3":406,"g1h3":407,"g1a4":408,"g1b4":409,"g1c4":410,"g1d4":411,"g1e4":412,"g1f4":413,"g1g4":414,"g1h4":415,"g1a5":416,"g1b5":417,"g1c5":418,"g1d5":419,"g1e5":420,"g1f5":421,"g1g5":422,"g1h5":423,"g1a6":424,"g1b6":425,"g1c6":426,"g1d6":427,"g1e6":428,"g1f6":429,"g1g6":430,"g1h6":431,"g1a7":432,"g1b7":433,"g1c7":434,"g1d7":435,"g1e7":436,"g1f7":437,"g1g7":438,"g1h7":439,"g1a8":440,"g1b8":441,"g1c8":442,"g1d8":443,"g1e8":444,"g1f8":445,"g1g8":446,"g1h8":447,"h1a1":448,"h1b1":449,"h1c1":450,"h1d1":451,"h1e1":452,"h1f1":453,"h1g1":454,"h1h1":455,"h1a2":456,"h1b2":457,"h1c2":458,"h1d2":459,"h1e2":460,"h1f2":461,"h1g2":462,"h1h2":463,"h1a3":464,"h1b3":465,"h1c3":466,"h1d3":467,"h1e3":468,"h1f3":469,"h1g3":470,"h1h3":471,"h1a4":472,"h1b4":473,"h1c4":474,"h1d4":475,"h1e4":476,"h1f4":477,"h1g4":478,"h1h4":479,"h1a5":480,"h1b5":481,"h1c5":482,"h1d5":483,"h1e5":484,"h1f5":485,"h1g5":486,"h1h5":487,"h1a6":488,"h1b6":489,"h1c6":490,"h1d6":491,"h1e6":492,"h1f6":493,"h1g6":494,"h1h6":495,"h1a7":496,"h1b7":497,"h1c7":498,"h1d7":499,"h1e7":500,"h1f7":501,"h1g7":502,"h1h7":503,"h1a8":504,"h1b8":505,"h1c8":506,"h1d8":507,"h1e8":508,"h1f8":509,"h1g8":510,"h1h8":511,"a2a1":512,"a2b1":513,"a2c1":514,"a2d1":515,"a2e1":516,"a2f1":517,"a2g1":518,"a2h1":519,"a2a2":520,"a2b2":521,"a2c2":522,"a2d2":523,"a2e2":524,"a2f2":525,"a2g2":526,"a2h2":527,"a2a3":528,"a2b3":529,"a2c3":530,"a2d3":531,"a2e3":532,"a2f3":533,"a2g3":534,"a2h3":535,"a2a4":536,"a2b4":537,"a2c4":538,"a2d4":539,"a2e4":540,"a2f4":541,"a2g4":542,"a2h4":543,"a2a5":544,"a2b5":545,"a2c5":546,"a2d5":547,"a2e5":548,"a2f5":549,"a2g5":550,"a2h5":551,"a2a6":552,"a2b6":553,"a2c6":554,"a2d6":555,"a2e6":556,"a2f6":557,"a2g6":558,"a2h6":559,"a2a7":560,"a2b7":561,"a2c7":562,"a2d7":563,"a2e7":564,"a2f7":565,"a2g7":566,"a2h7":567,"a2a8":568,"a2b8":569,"a2c8":570,"a2d8":571,"a2e8":572,"a2f8":573,"a2g8":574,"a2h8":575,"b2a1":576,"b2b1":577,"b2c1":578,"b2d1":579,"b2e1":580,"b2f1":581,"b2g1":582,"b2h1":583,"b2a2":584,"b2b2":585,"b2c2":586,"b2d2":587,"b2e2":588,"b2f2":589,"b2g2":590,"b2h2":591,"b2a3":592,"b2b3":593,"b2c3":594,"b2d3":595,"b2e3":596,"b2f3":597,"b2g3":598,"b2h3":599,"b2a4":600,"b2b4":601,"b2c4":602,"b2d4":603,"b2e4":604,"b2f4":605,"b2g4":606,"b2h4":607,"b2a5":608,"b2b5":609,"b2c5":610,"b2d5":611,"b2e5":612,"b2f5":613,"b2g5":614,"b2h5":615,"b2a6":616,"b2b6":617,"b2c6":618,"b2d6":619,"b2e6":620,"b2f6":621,"b2g6":622,"b2h6":623,"b2a7":624,"b2b7":625,"b2c7":626,"b2d7":627,"b2e7":628,"b2f7":629,"b2g7":630,"b2h7":631,"b2a8":632,"b2b8":633,"b2c8":634,"b2d8":635,"b2e8":636,"b2f8":637,"b2g8":638,"b2h8":639,"c2a1":640,"c2b1":641,"c2c1":642,"c2d1":643,"c2e1":644,"c2f1":645,"c2g1":646,"c2h1":647,"c2a2":648,"c2b2":649,"c2c2":650,"c2d2":651,"c2e2":652,"c2f2":653,"c2g2":654,"c2h2":655,"c2a3":656,"c2b3":657,"c2c3":658,"c2d3":659,"c2e3":660,"c2f3":661,"c2g3":662,"c2h3":663,"c2a4":664,"c2b4":665,"c2c4":666,"c2d4":667,"c2e4":668,"c2f4":669,"c2g4":670,"c2h4":671,"c2a5":672,"c2b5":673,"c2c5":674,"c2d5":675,"c2e5":676,"c2f5":677,"c2g5":678,"c2h5":679,"c2a6":680,"c2b6":681,"c2c6":682,"c2d6":683,"c2e6":684,"c2f6":685,"c2g6":686,"c2h6":687,"c2a7":688,"c2b7":689,"c2c7":690,"c2d7":691,"c2e7":692,"c2f7":693,"c2g7":694,"c2h7":695,"c2a8":696,"c2b8":697,"c2c8":698,"c2d8":699,"c2e8":700,"c2f8":701,"c2g8":702,"c2h8":703,"d2a1":704,"d2b1":705,"d2c1":706,"d2d1":707,"d2e1":708,"d2f1":709,"d2g1":710,"d2h1":711,"d2a2":712,"d2b2":713,"d2c2":714,"d2d2":715,"d2e2":716,"d2f2":717,"d2g2":718,"d2h2":719,"d2a3":720,"d2b3":721,"d2c3":722,"d2d3":723,"d2e3":724,"d2f3":725,"d2g3":726,"d2h3"
2775:727,"d2a4":728,"d2b4":729,"d2c4":730,"d2d4":731,"d2e4":732,"d2f4":733,"d2g4":734,"d2h4":735,"d2a5":736,"d2b5":737,"d2c5":738,"d2d5":739,"d2e5":740,"d2f5":741,"d2g5":742,"d2h5":743,"d2a6":744,"d2b6":745,"d2c6":746,"d2d6":747,"d2e6":748,"d2f6":749,"d2g6":750,"d2h6":751,"d2a7":752,"d2b7":753,"d2c7":754,"d2d7":755,"d2e7":756,"d2f7":757,"d2g7":758,"d2h7":759,"d2a8":760,"d2b8":761,"d2c8":762,"d2d8":763,"d2e8":764,"d2f8":765,"d2g8":766,"d2h8":767,"e2a1":768,"e2b1":769,"e2c1":770,"e2d1":771,"e2e1":772,"e2f1":773,"e2g1":774,"e2h1":775,"e2a2":776,"e2b2":777,"e2c2":778,"e2d2":779,"e2e2":780,"e2f2":781,"e2g2":782,"e2h2":783,"e2a3":784,"e2b3":785,"e2c3":786,"e2d3":787,"e2e3":788,"e2f3":789,"e2g3":790,"e2h3":791,"e2a4":792,"e2b4":793,"e2c4":794,"e2d4":795,"e2e4":796,"e2f4":797,"e2g4":798,"e2h4":799,"e2a5":800,"e2b5":801,"e2c5":802,"e2d5":803,"e2e5":804,"e2f5":805,"e2g5":806,"e2h5":807,"e2a6":808,"e2b6":809,"e2c6":810,"e2d6":811,"e2e6":812,"e2f6":813,"e2g6":814,"e2h6":815,"e2a7":816,"e2b7":817,"e2c7":818,"e2d7":819,"e2e7":820,"e2f7":821,"e2g7":822,"e2h7":823,"e2a8":824,"e2b8":825,"e2c8":826,"e2d8":827,"e2e8":828,"e2f8":829,"e2g8":830,"e2h8":831,"f2a1":832,"f2b1":833,"f2c1":834,"f2d1":835,"f2e1":836,"f2f1":837,"f2g1":838,"f2h1":839,"f2a2":840,"f2b2":841,"f2c2":842,"f2d2":843,"f2e2":844,"f2f2":845,"f2g2":846,"f2h2":847,"f2a3":848,"f2b3":849,"f2c3":850,"f2d3":851,"f2e3":852,"f2f3":853,"f2g3":854,"f2h3":855,"f2a4":856,"f2b4":857,"f2c4":858,"f2d4":859,"f2e4":860,"f2f4":861,"f2g4":862,"f2h4":863,"f2a5":864,"f2b5":865,"f2c5":866,"f2d5":867,"f2e5":868,"f2f5":869,"f2g5":870,"f2h5":871,"f2a6":872,"f2b6":873,"f2c6":874,"f2d6":875,"f2e6":876,"f2f6":877,"f2g6":878,"f2h6":879,"f2a7":880,"f2b7":881,"f2c7":882,"f2d7":883,"f2e7":884,"f2f7":885,"f2g7":886,"f2h7":887,"f2a8":888,"f2b8":889,"f2c8":890,"f2d8":891,"f2e8":892,"f2f8":893,"f2g8":894,"f2h8":895,"g2a1":896,"g2b1":897,"g2c1":898,"g2d1":899,"g2e1":900,"g2f1":901,"g2g1":902,"g2h1":903,"g2a2":904,"g2b2":905,"g2c2":906,"g2d2":907,"g2e2":908,"g2f2":909,"g2g2":910,"g2h2":911,"g2a3":912,"g2b3":913,"g2c3":914,"g2d3":915,"g2e3":916,"g2f3":917,"g2g3":918,"g2h3":919,"g2a4":920,"g2b4":921,"g2c4":922,"g2d4":923,"g2e4":924,"g2f4":925,"g2g4":926,"g2h4":927,"g2a5":928,"g2b5":929,"g2c5":930,"g2d5":931,"g2e5":932,"g2f5":933,"g2g5":934,"g2h5":935,"g2a6":936,"g2b6":937,"g2c6":938,"g2d6":939,"g2e6":940,"g2f6":941,"g2g6":942,"g2h6":943,"g2a7":944,"g2b7":945,"g2c7":946,"g2d7":947,"g2e7":948,"g2f7":949,"g2g7":950,"g2h7":951,"g2a8":952,"g2b8":953,"g2c8":954,"g2d8":955,"g2e8":956,"g2f8":957,"g2g8":958,"g2h8":959,"h2a1":960,"h2b1":961,"h2c1":962,"h2d1":963,"h2e1":964,"h2f1":965,"h2g1":966,"h2h1":967,"h2a2":968,"h2b2":969,"h2c2":970,"h2d2":971,"h2e2":972,"h2f2":973,"h2g2":974,"h2h2":975,"h2a3":976,"h2b3":977,"h2c3":978,"h2d3":979,"h2e3":980,"h2f3":981,"h2g3":982,"h2h3":983,"h2a4":984,"h2b4":985,"h2c4":986,"h2d4":987,"h2e4":988,"h2f4":989,"h2g4":990,"h2h4":991,"h2a5":992,"h2b5":993,"h2c5":994,"h2d5":995,"h2e5":996,"h2f5":997,"h2g5":998,"h2h5":999,"h2a6":1000,"h2b6":1001,"h2c6":1002,"h2d6":1003,"h2e6":1004,"h2f6":1005,"h2g6":1006,"h2h6":1007,"h2a7":1008,"h2b7":1009,"h2c7":1010,"h2d7":1011,"h2e7":1012,"h2f7":1013,"h2g7":1014,"h2h7":1015,"h2a8":1016,"h2b8":1017,"h2c8":1018,"h2d8":1019,"h2e8":1020,"h2f8":1021,"h2g8":1022,"h2h8":1023,"a3a1":1024,"a3b1":1025,"a3c1":1026,"a3d1":1027,"a3e1":1028,"a3f1":1029,"a3g1":1030,"a3h1":1031,"a3a2":1032,"a3b2":1033,"a3c2":1034,"a3d2":1035,"a3e2":1036,"a3f2":1037,"a3g2":1038,"a3h2":1039,"a3a3":1040,"a3b3":1041,"a3c3":1042,"a3d3":1043,"a3e3":1044,"a3f3":1045,"a3g3":1046,"a3h3":1047,"a3a4":1048,"a3b4":1049,"a3c4":1050,"a3d4":1051,"a3e4":1052,"a3f4":1053,"a3g4":1054,"a3h4":1055,"a3a5":1056,"a3b5":1057,"a3c5":1058,"a3d5":1059,"a3e5":1060,"a3f5":1061,"a3g5":1062,"a3h5":1063,"a3a6":1064,"a3b6":1065,"a3c6":1066,"a3d6":1067,"a3e6":1068,"a3f6":1069,"a3g6":1070,"a3h6":1071,"a3a7":1072,"a3b7":1073,"a3c7":1074,"a3d7":1075,"a3e7":1076,"a3f7":1077,"a3g7":1078,"a3h7":1079,"a3a8":1080,"a3b8":1081,"a3c8":1082,"a3d8":1083,"a3e8":1084,"a3f8":1085,"a3g8":1086,"a3h8":1087,"b3a1":1088,"b3b1":1089,"b3c1":1090,"b3d1":1091,"b3e1":1092,"b3f1":1093,"b3g1":1094,"b3h1":1095,"b3a2":1096,"b3b2":1097,"b3c2":1098,"b3d2":1099,"b3e2":1100,"b3f2":1101,"b3g2":1102,"b3h2":1103,"b3a3":1104,"b3b3":1105,"b3c3":1106,"b3d3":1107,"b3e3":1108,"b3f3":1109,"b3g3":1110,"b3h3":1111,"b3a4":1112,"b3b4":1113,"b3c4":1114,"b3d4":1115,"b3e4":1116,"b3f4":1117,"b3g4":1118,"b3h4":1119,"b3a5":1120,"b3b5":1121,"b3c5":1122,"b3d5":1123,"b3e5":1124,"b3f5":1125,"b3g5":1126,"b3h5":1127,"b3a6":1128,"b3b6":1129,"b3c6":1130,"b3d6":1131,"b3e6":1132,"b3f6":1133,"b3g6":1134,"b3h6":1135,"b3a7":1136,"b3b7":1137,"b3c7":1138,"b3d7":1139,"b3e7":1140,"b3f7":1141,"b3g7":1142,"b3h7":1143,"b3a8":1144,"b3b8":1145,"b3c8":1146,"b3d8":1147,"b3e8":1148,"b3f8":1149,"b3g8":1150,"b3h8":1151,"c3a1":1152,"c3b1":1153,"c3c1":1154,"c3d1":1155,"c3e1":1156,"c3f1":1157,"c3g1":1158,"c3h1":1159,"c3a2":1160,"c3b2":1161,"c3c2":1162,"c3d2":1163,"c3e2":1164,"c3f2":1165,"c3g2":1166,"c3h2":1167,"c3a3":1168,"c3b3":1169,"c3c3":1170,"c3d3":1171,"c3e3":1172,"c3f3":1173,"c3g3":1174,"c3h3":1175,"c3a4":1176,"c3b4":1177,"c3c4":1178,"c3d4":1179,"c3e4":1180,"c3f4":1181,"c3g4":1182,"c3h4":1183,"c3a5":1184,"c3b5":1185,"c3c5":1186,"c3d5":1187,"c3e5":1188,"c3f5":1189,"c3g5":1190,"c3h5":1191,"c3a6":1192,"c3b6":1193,"c3c6":1194,"c3d6":1195,"c3e6":1196,"c3f6":1197,"c3g6":1198,"c3h6":1199,"c3a7":1200,"c3b7":1201,"c3c7":1202,"c3d7":1203,"c3e7":1204,"c3f7":1205,"c3g7":1206,"c3h7":1207,"c3a8":1208,"c3b8":1209,"c3c8":1210,"c3d8":1211,"c3e8":1212,"c3f8":1213,"c3g8":1214,"c3h8":1215,"d3a1":1216,"d3b1":1217,"d3c1":1218,"d3d1":1219,"d3e1":1220,"d3f1":1221,"d3g1":1222,"d3h1":1223,"d3a2":1224,"d3b2":1225,"d3c2":1226,"d3d2":1227,"d3e2":1228,"d3f2":1229,"d3g2":1230,"d3h2":1231,"d3a3":1232,"d3b3":1233,"d3c3":1234,"d3d3":1235,"d3e3":1236,"d3f3":1237,"d3g3":1238,"d3h3":1239,"d3a4":1240,"d3b4":1241,"d3c4":1242,"d3d4":1243,"d3e4":1244,"d3f4":1245,"d3g4":1246,"d3h4":1247,"d3a5":1248,"d3b5":1249,"d3c5":1250,"d3d5":1251,"d3e5":1252,"d3f5":1253,"d3g5":1254,"d3h5":1255,"d3a6":1256,"d3b6":1257,"d3c6":1258,"d3d6":1259,"d3e6":1260,"d3f6":1261,"d3g6":1262,"d3h6":1263,"d3a7":1264,"d3b7":1265,"d3c7":1266,"d3d7":1267,"d3e7":1268,"d3f7":1269,"d3g7":1270,"d3h7":1271,"d3a8":1272,"d3b8":1273,"d3c8":1274,"d3d8":1275,"d3e8":1276,"d3f8":1277,"d3g8":1278,"d3h8":1279,"e3a1":1280,"e3b1":1281,"e3c1":1282,"e3d1":1283,"e3e1":1284,"e3f1":1285,"e3g1":1286,"e3h1":1287,"e3a2":1288,"e3b2":1289,"e3c2":1290,"e3d2":1291,"e3e2":1292,"e3f2":1293,"e3g2":1294,"e3h2":1295,"e3a3":1296,"e3b3":1297,"e3c3":1298,"e3d3":1299,"e3e3":1300,"e3f3":1301,"e3g3":1302,"e3h3"
2775:1303,"e3a4":1304,"e3b4":1305,"e3c4":1306,"e3d4":1307,"e3e4":1308,"e3f4":1309,"e3g4":1310,"e3h4":1311,"e3a5":1312,"e3b5":1313,"e3c5":1314,"e3d5":1315,"e3e5":1316,"e3f5":1317,"e3g5":1318,"e3h5":1319,"e3a6":1320,"e3b6":1321,"e3c6":1322,"e3d6":1323,"e3e6":1324,"e3f6":1325,"e3g6":1326,"e3h6":1327,"e3a7":1328,"e3b7":1329,"e3c7":1330,"e3d7":1331,"e3e7":1332,"e3f7":1333,"e3g7":1334,"e3h7":1335,"e3a8":1336,"e3b8":1337,"e3c8":1338,"e3d8":1339,"e3e8":1340,"e3f8":1341,"e3g8":1342,"e3h8":1343,"f3a1":1344,"f3b1":1345,"f3c1":1346,"f3d1":1347,"f3e1":1348,"f3f1":1349,"f3g1":1350,"f3h1":1351,"f3a2":1352,"f3b2":1353,"f3c2":1354,"f3d2":1355,"f3e2":1356,"f3f2":1357,"f3g2":1358,"f3h2":1359,"f3a3":1360,"f3b3":1361,"f3c3":1362,"f3d3":1363,"f3e3":1364,"f3f3":1365,"f3g3":1366,"f3h3":1367,"f3a4":1368,"f3b4":1369,"f3c4":1370,"f3d4":1371,"f3e4":1372,"f3f4":1373,"f3g4":1374,"f3h4":1375,"f3a5":1376,"f3b5":1377,"f3c5":1378,"f3d5":1379,"f3e5":1380,"f3f5":1381,"f3g5":1382,"f3h5":1383,"f3a6":1384,"f3b6":1385,"f3c6":1386,"f3d6":1387,"f3e6":1388,"f3f6":1389,"f3g6":1390,"f3h6":1391,"f3a7":1392,"f3b7":1393,"f3c7":1394,"f3d7":1395,"f3e7":1396,"f3f7":1397,"f3g7":1398,"f3h7":1399,"f3a8":1400,"f3b8":1401,"f3c8":1402,"f3d8":1403,"f3e8":1404,"f3f8":1405,"f3g8":1406,"f3h8":1407,"g3a1":1408,"g3b1":1409,"g3c1":1410,"g3d1":1411,"g3e1":1412,"g3f1":1413,"g3g1":1414,"g3h1":1415,"g3a2":1416,"g3b2":1417,"g3c2":1418,"g3d2":1419,"g3e2":1420,"g3f2":1421,"g3g2":1422,"g3h2":1423,"g3a3":1424,"g3b3":1425,"g3c3":1426,"g3d3":1427,"g3e3":1428,"g3f3":1429,"g3g3":1430,"g3h3":1431,"g3a4":1432,"g3b4":1433,"g3c4":1434,"g3d4":1435,"g3e4":1436,"g3f4":1437,"g3g4":1438,"g3h4":1439,"g3a5":1440,"g3b5":1441,"g3c5":1442,"g3d5":1443,"g3e5":1444,"g3f5":1445,"g3g5":1446,"g3h5":1447,"g3a6":1448,"g3b6":1449,"g3c6":1450,"g3d6":1451,"g3e6":1452,"g3f6":1453,"g3g6":1454,"g3h6":1455,"g3a7":1456,"g3b7":1457,"g3c7":1458,"g3d7":1459,"g3e7":1460,"g3f7":1461,"g3g7":1462,"g3h7":1463,"g3a8":1464,"g3b8":1465,"g3c8":1466,"g3d8":1467,"g3e8":1468,"g3f8":1469,"g3g8":1470,"g3h8":1471,"h3a1":1472,"h3b1":1473,"h3c1":1474,"h3d1":1475,"h3e1":1476,"h3f1":1477,"h3g1":1478,"h3h1":1479,"h3a2":1480,"h3b2":1481,"h3c2":1482,"h3d2":1483,"h3e2":1484,"h3f2":1485,"h3g2":1486,"h3h2":1487,"h3a3":1488,"h3b3":1489,"h3c3":1490,"h3d3":1491,"h3e3":1492,"h3f3":1493,"h3g3":1494,"h3h3":1495,"h3a4":1496,"h3b4":1497,"h3c4":1498,"h3d4":1499,"h3e4":1500,"h3f4":1501,"h3g4":1502,"h3h4":1503,"h3a5":1504,"h3b5":1505,"h3c5":1506,"h3d5":1507,"h3e5":1508,"h3f5":1509,"h3g5":1510,"h3h5":1511,"h3a6":1512,"h3b6":1513,"h3c6":1514,"h3d6":1515,"h3e6":1516,"h3f6":1517,"h3g6":1518,"h3h6":1519,"h3a7":1520,"h3b7":1521,"h3c7":1522,"h3d7":1523,"h3e7":1524,"h3f7":1525,"h3g7":1526,"h3h7":1527,"h3a8":1528,"h3b8":1529,"h3c8":1530,"h3d8":1531,"h3e8":1532,"h3f8":1533,"h3g8":1534,"h3h8":1535,"a4a1":1536,"a4b1":1537,"a4c1":1538,"a4d1":1539,"a4e1":1540,"a4f1":1541,"a4g1":1542,"a4h1":1543,"a4a2":1544,"a4b2":1545,"a4c2":1546,"a4d2":1547,"a4e2":1548,"a4f2":1549,"a4g2":1550,"a4h2":1551,"a4a3":1552,"a4b3":1553,"a4c3":1554,"a4d3":1555,"a4e3":1556,"a4f3":1557,"a4g3":1558,"a4h3":1559,"a4a4":1560,"a4b4":1561,"a4c4":1562,"a4d4":1563,"a4e4":1564,"a4f4":1565,"a4g4":1566,"a4h4":1567,"a4a5":1568,"a4b5":1569,"a4c5":1570,"a4d5":1571,"a4e5":1572,"a4f5":1573,"a4g5":1574,"a4h5":1575,"a4a6":1576,"a4b6":1577,"a4c6":1578,"a4d6":1579,"a4e6":1580,"a4f6":1581,"a4g6":1582,"a4h6":1583,"a4a7":1584,"a4b7":1585,"a4c7":1586,"a4d7":1587,"a4e7":1588,"a4f7":1589,"a4g7":1590,"a4h7":1591,"a4a8":1592,"a4b8":1593,"a4c8":1594,"a4d8":1595,"a4e8":1596,"a4f8":1597,"a4g8":1598,"a4h8":1599,"b4a1":1600,"b4b1":1601,"b4c1":1602,"b4d1":1603,"b4e1":1604,"b4f1":1605,"b4g1":1606,"b4h1":1607,"b4a2":1608,"b4b2":1609,"b4c2":1610,"b4d2":1611,"b4e2":1612,"b4f2":1613,"b4g2":1614,"b4h2":1615,"b4a3":1616,"b4b3":1617,"b4c3":1618,"b4d3":1619,"b4e3":1620,"b4f3":1621,"b4g3":1622,"b4h3":1623,"b4a4":1624,"b4b4":1625,"b4c4":1626,"b4d4":1627,"b4e4":1628,"b4f4":1629,"b4g4":1630,"b4h4":1631,"b4a5":1632,"b4b5":1633,"b4c5":1634,"b4d5":1635,"b4e5":1636,"b4f5":1637,"b4g5":1638,"b4h5":1639,"b4a6":1640,"b4b6":1641,"b4c6":1642,"b4d6":1643,"b4e6":1644,"b4f6":1645,"b4g6":1646,"b4h6":1647,"b4a7":1648,"b4b7":1649,"b4c7":1650,"b4d7":1651,"b4e7":1652,"b4f7":1653,"b4g7":1654,"b4h7":1655,"b4a8":1656,"b4b8":1657,"b4c8":1658,"b4d8":1659,"b4e8":1660,"b4f8":1661,"b4g8":1662,"b4h8":1663,"c4a1":1664,"c4b1":1665,"c4c1":1666,"c4d1":1667,"c4e1":1668,"c4f1":1669,"c4g1":1670,"c4h1":1671,"c4a2":1672,"c4b2":1673,"c4c2":1674,"c4d2":1675,"c4e2":1676,"c4f2":1677,"c4g2":1678,"c4h2":1679,"c4a3":1680,"c4b3":1681,"c4c3":1682,"c4d3":1683,"c4e3":1684,"c4f3":1685,"c4g3":1686,"c4h3":1687,"c4a4":1688,"c4b4":1689,"c4c4":1690,"c4d4":1691,"c4e4":1692,"c4f4":1693,"c4g4":1694,"c4h4":1695,"c4a5":1696,"c4b5":1697,"c4c5":1698,"c4d5":1699,"c4e5":1700,"c4f5":1701,"c4g5":1702,"c4h5":1703,"c4a6":1704,"c4b6":1705,"c4c6":1706,"c4d6":1707,"c4e6":1708,"c4f6":1709,"c4g6":1710,"c4h6":1711,"c4a7":1712,"c4b7":1713,"c4c7":1714,"c4d7":1715,"c4e7":1716,"c4f7":1717,"c4g7":1718,"c4h7":1719,"c4a8":1720,"c4b8":1721,"c4c8":1722,"c4d8":1723,"c4e8":1724,"c4f8":1725,"c4g8":1726,"c4h8":1727,"d4a1":1728,"d4b1":1729,"d4
2775c1":1730,"d4d1":1731,"d4e1":1732,"d4f1":1733,"d4g1":1734,"d4h1":1735,"d4a2":1736,"d4b2":1737,"d4c2":1738,"d4d2":1739,"d4e2":1740,"d4f2":1741,"d4g2":1742,"d4h2":1743,"d4a3":1744,"d4b3":1745,"d4c3":1746,"d4d3":1747,"d4e3":1748,"d4f3":1749,"d4g3":1750,"d4h3":1751,"d4a4":1752,"d4b4":1753,"d4c4":1754,"d4d4":1755,"d4e4":1756,"d4f4":1757,"d4g4":1758,"d4h4":1759,"d4a5":1760,"d4b5":1761,"d4c5":1762,"d4d5":1763,"d4e5":1764,"d4f5":1765,"d4g5":1766,"d4h5":1767,"d4a6":1768,"d4b6":1769,"d4c6":1770,"d4d6":1771,"d4e6":1772,"d4f6":1773,"d4g6":1774,"d4h6":1775,"d4a7":1776,"d4b7":1777,"d4c7":1778,"d4d7":1779,"d4e7":1780,"d4f7":1781,"d4g7":1782,"d4h7":1783,"d4a8":1784,"d4b8":1785,"d4c8":1786,"d4d8":1787,"d4e8":1788,"d4f8":1789,"d4g8":1790,"d4h8":1791,"e4a1":1792,"e4b1":1793,"e4c1":1794,"e4d1":1795,"e4e1":1796,"e4f1":1797,"e4g1":1798,"e4h1":1799,"e4a2":1800,"e4b2":1801,"e4c2":1802,"e4d2":1803,"e4e2":1804,"e4f2":1805,"e4g2":1806,"e4h2":1807,"e4a3":1808,"e4b3":1809,"e4c3":1810,"e4d3":1811,"e4e3":1812,"e4f3":1813,"e4g3":1814,"e4h3":1815,"e4a4":1816,"e4b4":1817,"e4c4":1818,"e4d4":1819,"e4e4":1820,"e4f4":1821,"e4g4":1822,"e4h4":1823,"e4a5":1824,"e4b5":1825,"e4c5":1826,"e4d5":1827,"e4e5":1828,"e4f5":1829,"e4g5":1830,"e4h5":1831,"e4a6":1832,"e4b6":1833,"e4c6":1834,"e4d6":1835,"e4e6":1836,"e4f6":1837,"e4g6":1838,"e4h6":1839,"e4a7":1840,"e4b7":1841,"e4c7":1842,"e4d7":1843,"e4e7":1844,"e4f7":1845,"e4g7":1846,"e4h7":1847,"e4a8":1848,"e4b8":1849,"e4c8":1850,"e4d8":1851,"e4e8":1852,"e4f8":1853,"e4g8":1854,"e4h8":1855,"f4a1":1856,"f4b1":1857,"f4c1":1858,"f4d1":1859,"f4e1":1860,"f4f1":1861,"f4g1":1862,"f4h1":1863,"f4a2":1864,"f4b2":1865,"f4c2":1866,"f4d2":1867,"f4e2":1868,"f4f2":1869,"f4g2":1870,"f4h2":1871,"f4a3":1872,"f4b3":1873,"f4c3":1874,"f4d3":1875,"f4e3":1876,"f4f3":1877,"f4g3":1878,"f4h3":1879,"f4a4":1880,"f4b4":1881,"f4c4":1882,"f4d4":1883,"f4e4":1884,"f4f4":1885,"f4g4":1886,"f4h4":1887,"f4a5":1888,"f4b5":1889,"f4c5":1890,"f4d5":1891,"f4e5":1892,"f4f5":1893,"f4g5":1894,"f4h5":1895,"f4a6":1896,"f4b6":1897,"f4c6":1898,"f4d6":1899,"f4e6":1900,"f4f6":1901,"f4g6":1902,"f4h6":1903,"f4a7":1904,"f4b7":1905,"f4c7":1906,"f4d7":1907,"f4e7":1908,"f4f7":1909,"f4g7":1910,"f4h7":1911,"f4a8":1912,"f4b8":1913,"f4c8":1914,"f4d8":1915,"f4e8":1916,"f4f8":1917,"f4g8":1918,"f4h8":1919,"g4a1":1920,"g4b1":1921,"g4c1":1922,"g4d1":1923,"g4e1":1924,"g4f1":1925,"g4g1":1926,"g4h1":1927,"g4a2":1928,"g4b2":1929,"g4c2":1930,"g4d2":1931,"g4e2":1932,"g4f2":1933,"g4g2":1934,"g4h2":1935,"g4a3":1936,"g4b3":1937,"g4c3":1938,"g4d3":1939,"g4e3":1940,"g4f3":1941,"g4g3":1942,"g4h3":1943,"g4a4":1944,"g4b4":1945,"g4c4":1946,"g4d4":1947,"g4e4":1948,"g4f4":1949,"g4g4":1950,"g4h4":1951,"g4a5":1952,"g4b5":1953,"g4c5":1954,"g4d5":1955,"g4e5":1956,"g4f5":1957,"g4g5":1958,"g4h5":1959,"g4a6":1960,"g4b6":1961,"g4c6":1962,"g4d6":1963,"g4e6":1964,"g4f6":1965,"g4g6":1966,"g4h6":1967,"g4a7":1968,"g4b7":1969,"g4c7":1970,"g4d7":1971,"g4e7":1972,"g4f7":1973,"g4g7":1974,"g4h7":1975,"g4a8":1976,"g4b8":1977,"g4c8":1978,"g4d8":1979,"g4e8":1980,"g4f8":1981,"g4g8":1982,"g4h8":1983,"h4a1":1984,"h4b1":1985,"h4c1":1986,"h4d1":1987,"h4e1":1988,"h4f1":1989,"h4g1":1990,"h4h1":1991,"h4a2":1992,"h4b2":1993,"h4c2":1994,"h4d2":1995,"h4e2":1996,"h4f2":1997,"h4g2":1998,"h4h2":1999,"h4a3":2000,"h4b3":2001,"h4c3":2002,"h4d3":2003,"h4e3":2004,"h4f3":2005,"h4g3":2006,"h4h3":2007,"h4a4":2008,"h4b4":2009,"h4c4":2010,"h4d4":2011,"h4e4":2012,"h4f4":2013,"h4g4":2014,"h4h4":2015,"h4a5":2016,"h4b5":2017,"h4c5":2018,"h4d5":2019,"h4e5":2020,"h4f5":2021,"h4g5":2022,"h4h5":2023,"h4a6":2024,"h4b6":2025,"h4c6":2026,"h4d6":2027,"h4e6":2028,"h4f6":2029,"h4g6":2030,"h4h6":2031,"h4a7":2032,"h4b7":2033,"h4c7":2034,"h4d7":2035,"h4e7":2036,"h4f7":2037,"h4g7":2038,"h4h7":2039,"h4a8"
2775:2040,"h4b8":2041,"h4c8":2042,"h4d8":2043,"h4e8":2044,"h4f8":2045,"h4g8":2046,"h4h8":2047,"a5a1":2048,"a5b1":2049,"a5c1":2050,"a5d1":2051,"a5e1":2052,"a5f1":2053,"a5g1":2054,"a5h1":2055,"a5a2":2056,"a5b2":2057,"a5c2":2058,"a5d2":2059,"a5e2":2060,"a5f2":2061,"a5g2":2062,"a5h2":2063,"a5a3":2064,"a5b3":2065,"a5c3":2066,"a5d3":2067,"a5e3":2068,"a5f3":2069,"a5g3":2070,"a5h3":2071,"a5a4":2072,"a5b4":2073,"a5c4":2074,"a5d4":2075,"a5e4":2076,"a5f4":2077,"a5g4":2078,"a5h4":2079,"a5a5":2080,"a5b5":2081,"a5c5":2082,"a5d5":2083,"a5e5":2084,"a5f5":2085,"a5g5":2086,"a5h5":2087,"a5a6":2088,"a5b6":2089,"a5c6":2090,"a5d6":2091,"a5e6":2092,"a5f6":2093,"a5g6":2094,"a5h6":2095,"a5a7":2096,"a5b7":2097,"a5c7":2098,"a5d7":2099,"a5e7":2100,"a5f7":2101,"a5g7":2102,"a5h7":2103,"a5a8":2104,"a5b8":2105,"a5c8":2106,"a5d8":2107,"a5e8":2108,"a5f8":2109,"a5g8":2110,"a5h8":2111,"b5a1":2112,"b5b1":2113,"b5c1":2114,"b5d1":2115,"b5e1":2116,"b5f1":2117,"b5g1":2118,"b5h1":2119,"b5a2":2120,"b5b2":2121,"b5c2":2122,"b5d2":2123,"b5e2":2124,"b5f2":2125,"b5g2":2126,"b5h2":2127,"b5a3":2128,"b5b3":2129,"b5c3":2130,"b5d3":2131,"b5e3":2132,"b5f3":2133,"b5g3":2134,"b5h3":2135,"b5a4":2136,"b5b4":2137,"b5c4":2138,"b5d4":2139,"b5e4":2140,"b5f4":2141,"b5g4":2142,"b5h4":2143,"b5a5":2144,"b5b5":2145,"b5c5":2146,"b5d5":2147,"b5e5":2148,"b5f5":2149,"b5g5":2150,"b5h5":2151,"b5a6":2152,"b5b6":2153,"b5c6":2154,"b5d6":2155,"b5e6":2156,"b5f6":2157,"b5g6":2158,"b5h6":2159,"b5a7":2160,"b5b7":2161,"b5c7":2162,"b5d7":2163,"b5e7":2164,"b5f7":2165,"b5g7":2166,"b5h7":2167,"b5a8":2168,"b5b8":2169,"b5c8":2170,"b5d8":2171,"b5e8":2172,"b5f8":2173,"b5g8":2174,"b5h8":2175,"c5a1":2176,"c5b1":2177,"c5c1":2178,"c5d1":2179,"c5e1":2180,"c5f1":2181,"c5g1":2182,"c5h1":2183,"c5a2":2184,"c5b2":2185,"c5c2":2186,"c5d2":2187,"c5e2":2188,"c5f2":2189,"c5g2":2190,"c5h2":2191,"c5a3":2192,"c5b3":2193,"c5c3":2194,"c5d3":2195,"c5e3":2196,"c5f3":2197,"c5g3":2198,"c5h3":2199,"c5a4":2200,"c5b4":2201,"c5c4":2202,"c5d4":2203,"c5e4":2204,"c5f4":2205,"c5g4":2206,"c5h4":2207,"c5a5":2208,"c5b5":2209,"c5c5":2210,"c5d5":2211,"c5e5":2212,"c5f5":2213,"c5g5":2214,"c5h5":2215,"c5a6":2216,"c5b6":2217,"c5c6":2218,"c5d6":2219,"c5e6":2220,"c5f6":2221,"c5g6":2222,"c5h6":2223,"c5a7":2224,"c5b7":2225,"c5c7":2226,"c5d7":2227,"c5e7":2228,"c5f7":2229,"c5g7":2230,"c5h7":2231,"c5a8":2232,"c5b8":2233,"c5c8":2234,"c5d8":2235,"c5e8":2236,"c5f8":2237,"c5g8":2238,"c5h8":2239,"d5a1":2240,"d5b1":2241,"d5c1":2242,"d5d1":2243,"d5e1":2244,"d5f1":2245,"d5g1":2246,"d5h1":2247,"d5a2":2248,"d5b2":2249,"d5c2":2250,"d5d2":2251,"d5e2":2252,"d5f2":2253,"d5g2":2254,"d5h2":2255,"d5a3":2256,"d5b3":2257,"d5c3":2258,"d5d3":2259,"d5e3":2260,"d5f3":2261,"d5g3":2262,"d5h3":2263,"d5a4":2264,"d5b4":2265,"d5c4":2266,"d5d4":2267,"d5e4":2268,"d5f4":2269,"d5g4":2270,"d5h4":2271,"d5a5":2272,"d5b5":2273,"d5c5":2274,"d5d5":2275,"d5e5":2276,"d5f5":2277,"d5g5":2278,"d5h5":2279,"d5a6":2280,"d5b6":2281,"d5c6":2282,"d5d6":2283,"d5e6":2284,"d5f6":2285,"d5g6":2286,"d5h6":2287,"d5a7":2288,"d5b7":2289,"d5c7":2290,"d5d7":2291,"d5e7":2292,"d5f7":2293,"d5g7":2294,"d5h7":2295,"d5a8":2296,"d5b8":2297,"d5c8":2298,"d5d8":2299,"d5e8":2300,"d5f8":2301,"d5g8":2302,"d5h8":2303,"e5a1":2304,"e5b1":2305,"e5c1":2306,"e5d1":2307,"e5e1":2308,"e5f1":2309,"e5g1":2310,"e5h1":2311,"e5a2":2312,"e5b2":2313,"e5c2":2314,"e5d2":2315,"e5e2":2316,"e5f2":2317,"e5g2":2318,"e5h2":2319,"e5a3":2320,"e5b3":2321,"e5c3":2322,"e5d3":2323,"e5e3":2324,"e5f3":2325,"e5g3":2326,"e5h3":2327,"e5a4":2328,"e5b4":2329,"e5c4":2330,"e5d4":2331,"e5e4":2332,"e5f4":2333,"e5g4":2334,"e5h4":2335,"e5a5":2336,"e5b5":2337,"e5c5":2338,"e5d5":2339,"e5e5":2340,"e5f5":2341,"e5g5":2342,"e5h5":2343,"e5a6":2344,"e5b6":2345,"e5c6":2346,"e5d6":2347,"e5e6":2348,"e5f6":2349,"e5g6":2350,"e5h6":2351,"e5a7":2352,"e5b7":2353,"e5c7":2354,"e5d7":2355,"e5e7":2356,"e5f7":2357,"e5g7":2358,"e5h7":2359,"e5a8":2360,"e5b8":2361,"e5c8":2362,"e5d8":2363,"e5e8":2364,"e5f8":2365,"e5g8":2366,"e5h8":2367,"f5a1":2368,"f5b1":2369,"f5c1":2370,"f5d1":2371,"f5e1":2372,"f5f1":2373,"f5g1":2374,"f5h1":2375,"f5a2":2376,"f5b2":2377,"f5c2":2378,"f5d2":2379,"f5e2":2380,"f5f2":2381,"f5g2":2382,"f5h2":2383,"f5a3":2384,"f5b3":2385,"f5c3":2386,"f5d3":2387,"f5e3":2388,"f5f3":2389,"f5g3":2390,"f5h3":2391,"f5a4":2392,"f5b4":2393,"f5c4":2394,"f5d4":2395,"f5e4":2396,"f5f4":2397,"f5g4":2398,"f5h4":2399,"f5a5":2400,"f5b5":2401,"f5c5":2402,"f5d5":2403,"f5e5":2404,"f5f5":2405,"f5g5":2406,"f5h5":2407,"f5a6":2408,"f5b6":2409,"f5c6":2410,"f5d6":2411,"f5e6":2412,"f5f6":2413,"f5g6":2414,"f5h6":2415,"f5a7":2416,"f5b7":2417,"f5c7":2418,"f5d7":2419,"f5e7":2420,"f5f7":2421,"f5g7":2422,"f5h7":2423,"f5a8":2424,"f5b8":2425,"f5c8":2426,"f5d8":2427,"f5e8":2428,"f5f8":2429,"f5g8":2430,"f5h8":2431,"g5a1":2432,"g5b1":2433,"g5c1":2434,"g5d1":2435,"g5e1":2436,"g5f1":2437,"g5g1":2438,"g5h1":2439,"g5a2":2440,"g5b2":2441,"g5c2":2442,"g5d2":2443,"g5e2":2444,"g5f2":2445,"g5g2":2446,"g5h2":2447,"g5a3":2448,"g5b3":2449,"g5c3":2450,"g5d3":2451,"g5e3":2452,"g5f3":2453,"g5g3":2454,"g5h3":2455,"g5a4":2456,"g5b4":2457,"g5c4":2458,"g5d4":2459,"g5e4":2460,"g5f4":2461,"g5g4":2462,"g5h4":2463,"g5a5":2464,"g5b5":2465,"g5c5":2466,"g5d5":2467,"g5e5":2468,"g5f5":2469,"g5g5":2470,"g5h5":2471,"g5a6":2472,"g5b6":2473,"g5c6":2474,"g5d6":2475,"g5e6":2476,"g5f6":2477,"g5g6":2478,"g5h6":2479,"g5a7":2480,"g5b7":2481,"g5c7":2482,"g5d7":2483,"g5e7":2484,"g5f7":2485,"g5g7":2486,"g5h7":2487,"g5a8":2488,"g5b8":2489,"g5c8":2490,"g5d8":2491,"g5e8":2492,"g5f8":2493,"g5g8":2494,"g5h8":2495,"h5a1":2496,"h5b1":2497,"h5c1":2498,"h5d1":2499,"h5e1":2500,"h5f1":2501,"h5g1":2502,"h5h1":2503,"h5a2":2504,"h5b2":2505,"h5c2":2506,"h5d2":2507,"h5e2":2508,"h5f2":2509,"h5g2":2510,"h5h2":2511,"h5a3":2512,"h5b3":2513,"h5c3":2514,"h5d3":2515,"h5e3":2516,"h5f3":2517,"h5g3":2518,"h5h3":2519,"h5a4":2520,"h5b4":2521,"h5c4":2522,"h5d4":2523,"h5e4":2524,"h5f4":2525,"h5g4":2526,"h5h4":2527,"h5a5":2528,"h5b5":2529,"h5c5":2530,"h5d5":2531,"h5e5":2532,"h5f5":2533,"h5g5":2534,"h5h5":2535,"h5a6":2536,"h5b6":2537,"h5c6":2538,"h5d6":2539,"h5e6":2540,"h5f6":2541,"h5g6":2542,"h5h6":2543,"h5a7":2544,"h5b7":2545,"h5c7":2546,"h5d7":2547,"h5e7":2548,"h5f7":2549,"h5g7":2550,"h5h7":2551,"h5a8":2552,"h5b8":2553,"h5c8":2554,"h5d8":2555,"h5e8":2556,"h5f8":2557,"h5g8":2558,"h5h8":2559,"a6a1":2560,"a6b1":2561,"a6c1":2562,"a6d1":2563,"a6e1":2564,"a6f1":2565,"a6g1":2566,"a6h1":2567,"a6a2":2568,"a6b2":2569,"a6c2":2570,"a6d2":2571,"a6e2":2572,"a6f2":2573,"a6g2":2574,"a6h2":2575,"a6a3":2576,"a6b3":2577,"a6c3":2578,"a6d3":2579,"a6e3":2580,"a6f3":2581,"a6g3":2582,"a6h3":2583,"a6a4":2584,"a6b4":2585,"a6c4":2586,"a6d4":2587,"a6e4":2588,"a6f4":2589,"a6g4":2590,"a6h4":2591,"a6a5":2592,"a6b5":2593,"a6c5":2594,"a6d5":2595,"a6e5":2596,"a6f5":2597,"a6g5":2598,"a6h5":2599,"a6a6":2600,"a6b6":2601,"a6c6":2602,"a6d6":2603,"a6e6":2604,"a6f6":2605,"a6g6":2606,"a6h6":2607,"a6a7":2608,"a6b7":2609,"a6c7":2610,"a6d7":2611,"a6e7":2612,"a6f7":2613,"a6g7":2614,"a6h7":2615,"a6a8":2616,"a6b8":2617,"a6c8":2618,"a6d8":2619,"a6e8":2620,"a6f8":2621,"a6g8":2622,"a6h8":2623,"b6a1":2624,"b6b1":2625,"b6c1":2626,"b6d1":2
2775627,"b6e1":2628,"b6f1":2629,"b6g1":2630,"b6h1":2631,"b6a2":2632,"b6b2":2633,"b6c2":2634,"b6d2":2635,"b6e2":2636,"b6f2":2637,"b6g2":2638,"b6h2":2639,"b6a3":2640,"b6b3":2641,"b6c3":2642,"b6d3":2643,"b6e3":2644,"b6f3":2645,"b6g3":2646,"b6h3":2647,"b6a4":2648,"b6b4":2649,"b6c4":2650,"b6d4":2651,"b6e4":2652,"b6f4":2653,"b6g4":2654,"b6h4":2655,"b6a5":2656,"b6b5":2657,"b6c5":2658,"b6d5":2659,"b6e5":2660,"b6f5":2661,"b6g5":2662,"b6h5":2663,"b6a6":2664,"b6b6":2665,"b6c6":2666,"b6d6":2667,"b6e6":2668,"b6f6":2669,"b6g6":2670,"b6h6":2671,"b6a7":2672,"b6b7":2673,"b6c7":2674,"b6d7":2675,"b6e7":2676,"b6f7":2677,"b6g7":2678,"b6h7":2679,"b6a8":2680,"b6b8":2681,"b6c8":2682,"b6d8":2683,"b6e8":2684,"b6f8":2685,"b6g8":2686,"b6h8":2687,"c6a1":2688,"c6b1":2689,"c6c1":2690,"c6d1":2691,"c6e1":2692,"c6f1":2693,"c6g1":2694,"c6h1":2695,"c6a2":2696,"c6b2":2697,"c6c2":2698,"c6d2":2699,"c6e2":2700,"c6f2":2701,"c6g2":2702,"c6h2":2703,"c6a3":2704,"c6b3":2705,"c6c3":2706,"c6d3":2707,"c6e3":2708,"c6f3":2709,"c6g3":2710,"c6h3":2711,"c6a4":2712,"c6b4":2713,"c6c4":2714,"c6d4":2715,"c6e4":2716,"c6f4":2717,"c6g4":2718,"c6h4":2719,"c6a5":2720,"c6b5":2721,"c6c5":2722,"c6d5":2723,"c6e5":2724,"c6f5":2725,"c6g5":2726,"c6h5":2727,"c6a6":2728,"c6b6":2729,"c6c6":2730,"c6d6":2731,"c6e6":2732,"c6f6":2733,"c6g6":2734,"c6h6":2735,"c6a7":2736,"c6b7":2737,"c6c7":2738,"c6d7":2739,"c6e7":2740,"c6f7":2741,"c6g7":2742,"c6h7":2743,"c6a8":2744,"c6b8":2745,"c6c8":2746,"c6d8":2747,"c6e8":2748,"c6f8":2749,"c6g8":2750,"c6h8":2751,"d6a1":2752,"d6b1":2753,"d6c1":2754,"d6d1":2755,"d6e1":2756,"d6f1":2757,"d6g1":2758,"d6h1":2759,"d6a2":2760,"d6b2":2761,"d6c2":2762,"d6d2":2763,"d6e2":2764,"d6f2":2765,"d6g2":2766,"d6h2":2767,"d6a3":2768,"d6b3":2769,"d6c3":2770,"d6d3":2771,"d6e3":2772,"d6f3":2773,"d6g3":2774,"d6h3":2775,"d6a4":2776,"d6b4":2777,"d6c4":2778,"d6d4":2779,"d6e4":2780,"d6f4":2781,"d6g4":2782,"d6h4":2783,"d6a5":2784,"d6b5":2785,"d6c5":2786,"d6d5":2787,"d6e5":2788,"d6f5":2789,"d6g5":2790,"d6h5":2791,"d6a6":2792,"d6b6":2793,"d6c6":2794,"d6d6":2795,"d6e6":2796,"d6f6":2797,"d6g6":2798,"d6h6":2799,"d6a7":2800,"d6b7":2801,"d6c7":2802,"d6d7":2803,"d6e7":2804,"d6f7":2805,"d6g7":2806,"d6h7":2807,"d6a8":2808,"d6b8":2809,"d6c8":2810,"d6d8":2811,"d6e8":2812,"d6f8":2813,"d6g8":2814,"d6h8":2815,"e6a1":2816,"e6b1":2817,"e6c1":2818,"e6d1":2819,"e6e1":2820,"e6f1":2821,"e6g1":2822,"e6h1":2823,"e6a2":2824,"e6b2":2825,"e6c2":2826,"e6d2":2827,"e6e2":2828,"e6f2":2829,"e6g2":2830,"e6h2":2831,"e6a3":2832,"e6b3":2833,"e6c3":2834,"e6d3":2835,"e6e3":2836,"e6f3":2837,"e6g3":2838,"e6h3":2839,"e6a4":2840,"e6b4":2841,"e6c4":2842,"e6d4":2843,"e6e4":2844,"e6f4":2845,"e6g4":2846,"e6h4":2847,"e6a5":2848,"e6b5":2849,"e6c5":2850,"e6d5":2851,"e6e5":2852,"e6f5":2853,"e6g5":2854,"e6h5":2855,"e6a6":2856,"e6b6":2857,"e6c6":2858,"e6d6":2859,"e6e6":2860,"e6f6":2861,"e6g6":2862,"e6h6":2863,"e6a7":2864,"e6b7":2865,"e6c7":2866,"e6d7":2867,"e6e7":2868,"e6f7":2869,"e6g7":2870,"e6h7":2871,"e6a8":2872,"e6b8":2873,"e6c8":2874,"e6d8":2875,"e6e8":2876,"e6f8":2877,"e6g8":2878,"e6h8":2879,"f6a1":2880,"f6b1":2881,"f6c1":2882,"f6d1":2883,"f6e1":2884,"f6f1":2885,"f6g1":2886,"f6h1":2887,"f6a2":2888,"f6b2":2889,"f6c2":2890,"f6d2":2891,"f6e2":2892,"f6f2":2893,"f6g2":2894,"f6h2":2895,"f6a3":2896,"f6b3":2897,"f6c3":2898,"f6d3":2899,"f6e3":2900,"f6f3":2901,"f6g3":2902,"f6h3":2903,"f6a4":2904,"f6b4":2905,"f6c4":2906,"f6d4":2907,"f6e4":2908,"f6f4":2909,"f6g4":2910,"f6h4":2911,"f6a5":2912,"f6b5":2913,"f6c5":2914,"f6d5":2915,"f6e5":2916,"f6f5":2917,"f6g5":2918,"f6h5":2919,"f6a6":2920,"f6b6":2921,"f6c6":2922,"f6d6":2923,"f6e6":2924,"f6f6":2925,"f6g6":2926,"f6h6":2927,"f6a7":2928,"f6b7":2929,"f6c7":2930,"f6d7":2931,"f6e7":2932,"f6f7":2933,"f6g7":2934,"f6h7":2935,"f6a8":2936,"f6b8":2937,"f6c8":2938,"f6d8":2939,"f6e8":2940,"f6f8":2941,"f6g8":2942,"f6h8":2943,"g6a1":2944,"g6b1":2945,"g6c1":2946,"g6d1":2947,"g6e1":2948,"g6f1":2949,"g6g1":2950,"g6h1":2951,"g6a2":2952,"g6b2":2953,"g6c2":2954,"g6d2":2955,"g6e2":2956,"g6f2":2957,"g6g2":2958,"g6h2":2959,"g6a3":2960,"g6b3":2961,"g6c3":2962,"g6d3":2963,"g6e3":2964,"g6f3":2965,"g6g3":2966,"g6h3":2967,"g6a4":2968,"g6b4":2969,"g6c4":2970,"g6d4":2971,"g6e4":2972,"g6f4":2973,"g6g4"
2775:2974,"g6h4":2975,"g6a5":2976,"g6b5":2977,"g6c5":2978,"g6d5":2979,"g6e5":2980,"g6f5":2981,"g6g5":2982,"g6h5":2983,"g6a6":2984,"g6b6":2985,"g6c6":2986,"g6d6":2987,"g6e6":2988,"g6f6":2989,"g6g6":2990,"g6h6":2991,"g6a7":2992,"g6b7":2993,"g6c7":2994,"g6d7":2995,"g6e7":2996,"g6f7":2997,"g6g7":2998,"g6h7":2999,"g6a8":3000,"g6b8":3001,"g6c8":3002,"g6d8":3003,"g6e8":3004,"g6f8":3005,"g6g8":3006,"g6h8":3007,"h6a1":3008,"h6b1":3009,"h6c1":3010,"h6d1":3011,"h6e1":3012,"h6f1":3013,"h6g1":3014,"h6h1":3015,"h6a2":3016,"h6b2":3017,"h6c2":3018,"h6d2":3019,"h6e2":3020,"h6f2":3021,"h6g2":3022,"h6h2":3023,"h6a3":3024,"h6b3":3025,"h6c3":3026,"h6d3":3027,"h6e3":3028,"h6f3":3029,"h6g3":3030,"h6h3":3031,"h6a4":3032,"h6b4":3033,"h6c4":3034,"h6d4":3035,"h6e4":3036,"h6f4":3037,"h6g4":3038,"h6h4":3039,"h6a5":3040,"h6b5":3041,"h6c5":3042,"h6d5":3043,"h6e5":3044,"h6f5":3045,"h6g5":3046,"h6h5":3047,"h6a6":3048,"h6b6":3049,"h6c6":3050,"h6d6":3051,"h6e6":3052,"h6f6":3053,"h6g6":3054,"h6h6":3055,"h6a7":3056,"h6b7":3057,"h6c7":3058,"h6d7":3059,"h6e7":3060,"h6f7":3061,"h6g7":3062,"h6h7":3063,"h6a8":3064,"h6b8":3065,"h6c8":3066,"h6d8":3067,"h6e8":3068,"h6f8":3069,"h6g8":3070,"h6h8":3071,"a7a1":3072,"a7b1":3073,"a7c1":3074,"a7d1":3075,"a7e1":3076,"a7f1":3077,"a7g1":3078,"a7h1":3079,"a7a2":3080,"a7b2":3081,"a7c2":3082,"a7d2":3083,"a7e2":3084,"a7f2":3085,"a7g2":3086,"a7h2":3087,"a7a3":3088,"a7b3":3089,"a7c3":3090,"a7d3":3091,"a7e3":3092,"a7f3":3093,"a7g3":3094,"a7h3":3095,"a7a4":3096,"a7b4":3097,"a7c4":3098,"a7d4":3099,"a7e4":3100,"a7f4":3101,"a7g4":3102,"a7h4":3103,"a7a5":3104,"a7b5":3105,"a7c5":3106,"a7d5":3107,"a7e5":3108,"a7f5":3109,"a7g5":3110,"a7h5":3111,"a7a6":3112,"a7b6":3113,"a7c6":3114,"a7d6":3115,"a7e6":3116,"a7f6":3117,"a7g6":3118,"a7h6":3119,"a7a7":3120,"a7b7":3121,"a7c7":3122,"a7d7":3123,"a7e7":3124,"a7f7":3125,"a7g7":3126,"a7h7":3127,"a7a8":3128,"a7b8":3129,"a7c8":3130,"a7d8":3131,"a7e8":3132,"a7f8":3133,"a7g8":3134,"a7h8":3135,"b7a1":3136,"b7b1":3137,"b7c1":3138,"b7d1":3139,"b7e1":3140,"b7f1":3141,"b7g1":3142,"b7h1":3143,"b7a2":3144,"b7b2":3145,"b7c2":3146,"b7d2":3147,"b7e2":3148,"b7f2":3149,"b7g2":3150,"b7h2":3151,"b7a3":3152,"b7b3":3153,"b7c3":3154,"b7d3":3155,"b7e3":3156,"b7f3":3157,"b7g3":3158,"b7h3":3159,"b7a4":3160,"b7b4":3161,"b7c4":3162,"b7d4":3163,"b7e4":3164,"b7f4":3165,"b7g4":3166,"b7h4":3167,"b7a5":3168,"b7b5":3169,"b7c5":3170,"b7d5":3171,"b7e5":3172,"b7f5":3173,"b7g5":3174,"b7h5":3175,"b7a6":3176,"b7b6":3177,"b7c6":3178,"b7d6":3179,"b7e6":3180,"b7f6":3181,"b7g6":3182,"b7h6":3183,"b7a7":3184,"b7b7":3185,"b7c7":3186,"b7d7":3187,"b7e7":3188,"b7f7":3189,"b7g7":3190,"b7h7":3191,"b7a8":3192,"b7b8":3193,"b7c8":3194,"b7d8":3195,"b7e8":3196,"b7f8":3197,"b7g8":3198,"b7h8":3199,"c7a1":3200,"c7b1":3201,"c7c1":3202,"c7d1":3203,"c7e1":3204,"c7f1":3205,"c7g1":3206,"c7h1":3207,"c7a2":3208,"c7b2":3209,"c7c2":3210,"c7d2":3211,"c7e2":3212,"c7f2":3213,"c7g2":3214,"c7h2":3215,"c7a3":3216,"c7b3":3217,"c7c3":3218,"c7d3":3219,"c7e3":3220,"c7f3":3221,"c7g3":3222,"c7h3":3223,"c7a4":3224,"c7b4":3225,"c7c4":3226,"c7d4":3227,"c7e4":3228,"c7f4":3229,"c7g4":3230,"c7h4":3231,"c7a5":3232,"c7b5":3233,"c7c5":3234,"c7d5":3235,"c7e5":3236,"c7f5":3237,"c7g5":3238,"c7h5":3239,"c7a6":3240,"c7b6":3241,"c7c6":3242,"c7d6":3243,"c7e6":3244,"c7f6":3245,"c7g6":3246,"c7h6":3247,"c7a7":3248,"c7b7":3249,"c7c7":3250,"c7d7":3251,"c7e7":3252,"c7f7":3253,"c7g7":3254,"c7h7":3255,"c7a8":3256,"c7b8":3257,"c7c8":3258,"c7d8":3259,"c7e8":3260,"c7f8":3261,"c7g8":3262,"c7h8":3263,"d7a1":3264,"d7b1":3265,"d7c1":3266,"d7d1":3267,"d7e1":3268,"d7f1":3269,"d7g1":3270,"d7h1":3271,"d7a2":3272,"d7b2":3273,"d7c2":3274,"d7d2":3275,"d7e2":3276,"d7f2":3277,"d7g2":3278,"d7h2":3279,"d7a3":3280,"d7b3":3281,"d7c3":3282,"d7d3":3283,"d7e3":3284,"d7f3":3285,"d7g3":3286,"d7h3":3287,"d7a4":3288,"d7b4":3289,"d7c4":3290,"d7d4":3291,"d7e4":3292,"d7f4":3293,"d7g4":3294,"d7h4":3295,"d7a5":3296,"d7b5":3297,"d7c5":3298,"d7d5":3299,"d7e5":3300,"d7f5":3301,"d7g5":3302,"d7h5":3303,"d7a6":3304,"d7b6":3305,"d7c6":3306,"d7d6":3307,"d7e6":3308,"d7f6":3309,"d7g6":3310,"d7h6":3311,"d7a7":3312,"d7b7":3313,"d7c7":3314,"d7d7":3315,"d7e7":3316,"d7f7":3317,"d7g7":3318,"d7h7":3319,"d7a8":3320,"d7b8":3321,"d7c8":3322,"d7d8":3323,"d7e8":3324,"d7f8":3325,"d7g8":3326,"d7h8":3327,"e7a1":3328,"e7b1":3329,"e7c1":3330,"e7d1":3331,"e7e1":3332,"e7f1":3333,"e7g1":3334,"e7h1":3335,"e7a2":3336,"e7b2":3337,"e7c2":3338,"e7d2":3339,"e7e2":3340,"e7f2":3341,"e7g2":3342,"e7h2":3343,"e7a3":3344,"e7b3":3345,"e7c3":3346,"e7d3":3347,"e7e3":3348,"e7f3":3349,"e7g3":3350,"e7h3":3351,"e7a4":3352,"e7b4":3353,"e7c4":3354,"e7d4":3355,"e7e4":3356,"e7f4":3357,"e7g4":3358,"e7h4":3359,"e7a5":3360,"e7b5":3361,"e7c5":3362,"e7d5":3363,"e7e5":3364,"e7f5":3365,"e7g5":3366,"e7h5":3367,"e7a6":3368,"e7b6":3369,"e7c6":3370,"e7d6":3371,"e7e6":3372,"e7f6":3373,"e7g6":3374,"e7h6":3375,"e7a7":3376,"e7b7":3377,"e7c7":3378,"e7d7":3379,"e7e7":3380,"e7f7":3381,"e7g7":3382,"e7h7":3383,"e7a8":3384,"e7b8":3385,"e7c8":3386,"e7d8":3387,"e7e8":3388,"e7f8":3389,"e7g8":3390,"e7h8":3391,"f7a1":3392,"f7b1":3393,"f7c1":3394,"f7d1":3395,"f7e1":3396,"f7f1":3397,"f7g1":3398,"f7h1":3399,"f7a2":3400,"f7b2":3401,"f7c2":3402,"f7d2":3403,"f7e2":3404,"f7f2":3405,"f7g2":3406,"f7h2":3407,"f7a3":3408,"f7b3":3409,"f7c3":3410,"f7d3":3411,"f7e3":3412,"f7f3":3413,"f7g3":3414,"f7h3":3415,"f7a4":3416,"f7b4":3417,"f7c4":3418,"f7d4":3419,"f7e4":3420,"f7f4":3421,"f7g4":3422,"f7h4":3423,"f7a5":3424,"f7b5":3425,"f7c5":3426,"f7d5":3427,"f7e5":3428,"f7f5":3429,"f7g5":3430,"f7h5":3431,"f7a6":3432,"f7b6":3433,"f7c6":3434,"f7d6":3435,"f7e6":3436,"f7f6":3437,"f7g6":3438,"f7h6":3439,"f7a7":3440,"f7b7":3441,"f7c7":3442,"f7d7":3443,"f7e7":3444,"f7f7":3445,"f7g7":3446,"f7h7":3447,"f7a8":3448,"f7b8":3449,"f7c8":3450,"f7d8":3451,"f7e8":3452,"f7f8":3453,"f7g8":3454,"f7h8":3455,"g7a1":3456,"g7b1":3457,"g7c1":3458,"g7d1":3459,"g7e1":3460,"g7f1":3461,"g7g1":3462,"g7h1":3463,"g7a2":3464,"g7b2":3465,"g7c2":3466,"g7d2":3467,"g7e2":3468,"g7f2":3469,"g7g2":3470,"g7h2":3471,"g7a3":3472,"g7b3":3473,"g7c3":3474,"g7d3":3475,"g7e3":3476,"g7f3":3477,"g7g3":3478,"g7h3":3479,"g7a4":3480,"g7b4":3481,"g7c4":3482,"g7d4":3483,"g7e4":3484,"g7f4":3485,"g7g4":3486,"g7h4":3487,"g7a5":3488,"g7b5":3489,"g7c5":3490,"g7d5":3491,"g7e5":3492,"g7f5":3493,"g7g5":3494,"g7h5":3495,"g7a6":3496,"g7b6":3497,"g7c6":3498,"g7d6":3499,"g7e6":3500,"g7f6":3501,"g7g6":3502,"g7h6":3503,"g7a7":3504,"g7b7":3505,"g7c7":3506,"g7d7":3507,"g7e7":3508,"g7f7":3509,"g7g7":3510,"g7h7":3511,"g7a8":3512,"g7b8":3513,"g7c8":3514,"g7d8":3515,"g7e8":3516,"g7f8":3517,"g7g8":3518,"g7h8":3519,"h7a1":3520,"h7b1":3521,"h7c1":3522,"h7d1":3523,"h7e1":3524,"h7f1":3525,"h7g1":3526,"h7h1":3527,"h7a2":3528,"h7b2":3529,"h7c2":3530,"h7d2":3531,"h7e2":3532,"h7f2":3533,"h7g2":3534,"h7h2":3535,"h7a3":3536,"h7b3":3537,"h7c3":3538,"h7d3":3539,"h7e3":3540,"h7f3":3541,"h7g3":3542,"h7h3":3543,"h7a4":3544,"h7b4":3545,"h7c4":3546,"h7d4":3547,"h7e4":3548,"h7f4":3549,"h7g4":3550,"h7h4":3551,"h7a5":3552,"h7b5":3553,"h7c5":3554,"h7d5":3555,"h7e5":3556,"h7f5":3557,"h7g5":3558,"h7h5":3559,"h7a6":3560,"h7b6":3561,"h7c6":3562,"h7d6":3563,"h7e6":3564,"h7f6":3565,"h7g6":3566,"h7h6":3567,"h7a7":3568,"h7b7":3569,"h7c7":3570,"h7d7":3571,"h7e7":3572,"h7f7":3573,"h7g7":3574,"h7h7":3575,"h7a8":3576,"h7b8":3577,"h7c8":3578,"h7d8":3579,"h7e8":3580,"h7f8":3581,"h7g8":3582,"h7h8":3583,"a8a1":3584,"a8b1":3585,"a8c1":3586,"a8d1":3587,"a8e1":3588,"a8f1":3589,"a8g1":3590,"a8h1":3591,"a8a2":3592,"a8b2":3593,"a8c2":3594,"a8d2":3595,"a8e2":3596,"a8f2":3597,"a8g2":3598,"a8h2":3599,"a8a3":3600,"a8b3":3601,"a8c3":3602,"a8d3":3603,"a8e3":3604,"a8f3":3605,"a8g3":3606,"a8h3":3607,"a8a4":3608,"a8b4":3609,"a8c4":3610,"a8d4":3611,"a8e4":3612,"a8f4":3613,"a8g4":3614,"a8h4":3615,"a8a5":3616,"a8b5":3617,"a8c5":3618,"a8d5":3619,"a8e5":3620,"a8f5":3621,"a8g5":3622,"a8h5":3623,"a8a6":3624,"a8b6":3625,"a8c6":3626,"a8d6":3627,"a8e
27756":3628,"a8f6":3629,"a8g6":3630,"a8h6":3631,"a8a7":3632,"a8b7":3633,"a8c7":3634,"a8d7":3635,"a8e7":3636,"a8f7":3637,"a8g7":3638,"a8h7":3639,"a8a8":3640,"a8b8":3641,"a8c8":3642,"a8d8":3643,"a8e8":3644,"a8f8":3645,"a8g8":3646,"a8h8":3647,"b8a1":3648,"b8b1":3649,"b8c1":3650,"b8d1":3651,"b8e1":3652,"b8f1":3653,"b8g1":3654,"b8h1":3655,"b8a2":3656,"b8b2":3657,"b8c2":3658,"b8d2":3659,"b8e2":3660,"b8f2":3661,"b8g2":3662,"b8h2":3663,"b8a3":3664,"b8b3":3665,"b8c3":3666,"b8d3":3667,"b8e3":3668,"b8f3":3669,"b8g3":3670,"b8h3":3671,"b8a4":3672,"b8b4":3673,"b8c4":3674,"b8d4":3675,"b8e4":3676,"b8f4":3677,"b8g4":3678,"b8h4":3679,"b8a5":3680,"b8b5":3681,"b8c5":3682,"b8d5":3683,"b8e5":3684,"b8f5":3685,"b8g5":3686,"b8h5":3687,"b8a6":3688,"b8b6":3689,"b8c6":3690,"b8d6":3691,"b8e6":3692,"b8f6":3693,"b8g6":3694,"b8h6":3695,"b8a7":3696,"b8b7":3697,"b8c7":3698,"b8d7":3699,"b8e7":3700,"b8f7":3701,"b8g7":3702,"b8h7":3703,"b8a8":3704,"b8b8":3705,"b8c8":3706,"b8d8":3707,"b8e8":3708,"b8f8":3709,"b8g8":3710,"b8h8":3711,"c8a1":3712,"c8b1":3713,"c8c1":3714,"c8d1":3715,"c8e1":3716,"c8f1":3717,"c8g1":3718,"c8h1":3719,"c8a2":3720,"c8b2":3721,"c8c2":3722,"c8d2":3723,"c8e2":3724,"c8f2":3725,"c8g2":3726,"c8h2":3727,"c8a3":3728,"c8b3":3729,"c8c3":3730,"c8d3":3731,"c8e3":3732,"c8f3":3733,"c8g3":3734,"c8h3":3735,"c8a4":3736,"c8b4":3737,"c8c4":3738,"c8d4":3739,"c8e4":3740,"c8f4":3741,"c8g4":3742,"c8h4":3743,"c8a5":3744,"c8b5":3745,"c8c5":3746,"c8d5":3747,"c8e5":3748,"c8f5":3749,"c8g5":3750,"c8h5":3751,"c8a6":3752,"c8b6":3753,"c8c6":3754,"c8d6":3755,"c8e6":3756,"c8f6":3757,"c8g6":3758,"c8h6":3759,"c8a7":3760,"c8b7":3761,"c8c7":3762,"c8d7":3763,"c8e7":3764,"c8f7":3765,"c8g7":3766,"c8h7":3767,"c8a8":3768,"c8b8":3769,"c8c8":3770,"c8d8":3771,"c8e8":3772,"c8f8":3773,"c8g8":3774,"c8h8":3775,"d8a1":3776,"d8b1":3777,"d8c1":3778,"d8d1":3779,"d8e1":3780,"d8f1":3781,"d8g1":3782,"d8h1":3783,"d8a2":3784,"d8b2":3785,"d8c2":3786,"d8d2":3787,"d8e2":3788,"d8f2":3789,"d8g2":3790,"d8h2":3791,"d8a3":3792,"d8b3":3793,"d8c3":3794,"d8d3":3795,"d8e3":3796,"d8f3":3797,"d8g3":3798,"d8h3":3799,"d8a4":3800,"d8b4":3801,"d8c4":3802,"d8d4":3803,"d8e4":3804,"d8f4":3805,"d8g4":3806,"d8h4":3807,"d8a5":3808,"d8b5":3809,"d8c5":3810,"d8d5":3811,"d8e5":3812,"d8f5":3813,"d8g5":3814,"d8h5":3815,"d8a6":3816,"d8b6":3817,"d8c6":3818,"d8d6":3819,"d8e6":3820,"d8f6":3821,"d8g6":3822,"d8h6":3823,"d8a7":3824,"d8b7":3825,"d8c7":3826,"d8d7":3827,"d8e7":3828,"d8f7":3829,"d8g7":3830,"d8h7":3831,"d8a8":3832,"d8b8":3833,"d8c8":3834,"d8d8":3835,"d8e8":3836,"d8f8":3837,"d8g8":3838,"d8h8":3839,"e8a1":3840,"e8b1":3841,"e8c1":3842,"e8d1":3843,"e8e1":3844,"e8f1":3845,"e8g1":3846,"e8h1":3847,"e8a2":3848,"e8b2":3849,"e8c2":3850,"e8d2":3851,"e8e2":3852,"e8f2":3853,"e8g2":3854,"e8h2":3855,"e8a3":3856,"e8b3":3857,"e8c3":3858,"e8d3":3859,"e8e3":3860,"e8f3":3861,"e8g3":3862,"e8h3":3863,"e8a4":3864,"e8b4":3865,"e8c4":3866,"e8d4":3867,"e8e4":3868,"e8f4":3869,"e8g4":3870,"e8h4":3871,"e8a5":3872,"e8b5":3873,"e8c5":3874,"e8d5":3875,"e8e5":3876,"e8f5":3877,"e8g5":3878,"e8h5":3879,"e8a6":3880,"e8b6":3881,"e8c6":3882,"e8d6":3883,"e8e6":3884,"e8f6":3885,"e8g6":3886,"e8h6":3887,"e8a7":3888,"e8b7":3889,"e8c7":3890,"e8d7":3891,"e8e7":3892,"e8f7":3893,"e8g7":3894,"e8h7":3895,"e8a8":3896,"e8b8":3897,"e8c8":3898,"e8d8":3899,"e8e8":3900,"e8f8":3901,"e8g8":3902,"e8h8":3903,"f8a1":3904,"f8b1":3905,"f8c1":3906,"f8d1":3907,"f8e1":3908,"f8f1":3909,"f8g1":3910,"f8h1":3911,"f8a2":3912,"f8b2":3913,"f8c2":3914,"f8d2":3915,"f8e2":3916,"f8f2":3917,"f8g2":3918,"f8h2":3919,"f8a3":3920,"f8b3":3921,"f8c3":3922,"f8d3":3923,"f8e3":3924,"f8f3":3925,"f8g3":3926,"f8h3":3927,"f8a4":3928,"f8b4":3929,"f8c4":3930,"f8d4":3931,"f8e4":3932,"f8f4":3933,"f8g4":3934,"f8h4":3935,"f8a5":3936,"f8b5":3937,"f8c5":3938,"f8d5":3939,"f8e5":3940,"f8f5":3941,"f8g5":3942,"f8h5":3943,"f8a6":3944,"f8b6":3945,"f8c6":3946,"f8d6":3947,"f8e6":3948,"f8f6":3949,"f8g6":3950,"f8h6":3951,"f8a7":3952,"f8b7":3953,"f8c7":3954,"f8d7":3955,"f8e7":3956,"f8f7":3957,"f8g7":3958,"f8h7":3959,"f8a8":3960,"f8b8":3961,"f8c8":3962,"f8d8":3963,"f8e8":3964,"f8f8":3965,"f8g8":3966,"f8h8":3967,"g8a1":3968,"g8b1":3969,"g8c1":3970,"g8d1":3971,"g8e1":3972,"g8f1":3973,"g8g1":3974,"g8h1":3975,"g8a2":3976,"g8b2":3977,"g8c2":3978,"g8d2":3979,"g8e2":3980,"g8f2":3981,"g8g2":3982,"g8h2":3983,"g8a3":3984,"g8b3":3985,"g8c3":3986,"g8d3":3987,"g8e3":3988,"g8f3":3989,"g8g3":3990,"g8h3":3991,"g8a4":3992,"g8b4":3993,"g8c4":3994,"g8d4":3995,"g8e4":3996,"g8f4":3997,"g8g4":3998,"g8h4":3999,"g8a5":4000,"g8b5":4001,"g8c5":4002,"g8d5":4003,"g8e5":4004,"g8f5":4005,"g8g5":4006,"g8h5":4007,"g8a6":4008,"g8b6":4009,"g8c6":4010,"g8d6":4011,"g8e6":4012,"g8f6":4013,"g8g6":4014,"g8h6":4015,"g8a7":4016,"g8b7":4017,"g8c7":4018,"g8d7":4019,"g8e7":4020,"g8f7":402
27751,"g8g7":4022,"g8h7":4023,"g8a8":4024,"g8b8":4025,"g8c8":4026,"g8d8":4027,"g8e8":4028,"g8f8":4029,"g8g8":4030,"g8h8":4031,"h8a1":4032,"h8b1":4033,"h8c1":4034,"h8d1":4035,"h8e1":4036,"h8f1":4037,"h8g1":4038,"h8h1":4039,"h8a2":4040,"h8b2":4041,"h8c2":4042,"h8d2":4043,"h8e2":4044,"h8f2":4045,"h8g2":4046,"h8h2":4047,"h8a3":4048,"h8b3":4049,"h8c3":4050,"h8d3":4051,"h8e3":4052,"h8f3":4053,"h8g3":4054,"h8h3":4055,"h8a4":4056,"h8b4":4057,"h8c4":4058,"h8d4":4059,"h8e4":4060,"h8f4":4061,"h8g4":4062,"h8h4":4063,"h8a5":4064,"h8b5":4065,"h8c5":4066,"h8d5":4067,"h8e5":4068,"h8f5":4069,"h8g5":4070,"h8h5":4071,"h8a6":4072,"h8b6":4073,"h8c6":4074,"h8d6":4075,"h8e6":4076,"h8f6":4077,"h8g6":4078,"h8h6":4079,"h8a7":4080,"h8b7":4081,"h8c7":4082,"h8d7":4083,"h8e7":4084,"h8f7":4085,"h8g7":4086,"h8h7":4087,"h8a8":4088,"h8b8":4089,"h8c8":4090,"h8d8":4091,"h8e8":4092,"h8f8":4093,"h8g8":4094,"h8h8":4095,"a7a8q":4096,"a7a8r":4097,"a7a8b":4098,"a7a8n":4099,"a7b8q":4100,"a7b8r":4101,"a7b8b":4102,"a7b8n":4103,"a7c8q":4104,"a7c8r":4105,"a7c8b":4106,"a7c8n":4107,"a7d8q":4108,"a7d8r":4109,"a7d8b":4110,"a7d8n":4111,"a7e8q":4112,"a7e8r":4113,"a7e8b":4114,"a7e8n":4115,"a7f8q":4116,"a7f8r":4117,"a7f8b":4118,"a7f8n":4119,"a7g8q":4120,"a7g8r":4121,"a7g8b":4122,"a7g8n":4123,"a7h8q":4124,"a7h8r":4125,"a7h8b":4126,"a7h8n":4127,"b7a8q":4128,"b7a8r":4129,"b7a8b":4130,"b7a8n":4131,"b7b8q":4132,"b7b8r":4133,"b7b8b":4134,"b7b8n":4135,"b7c8q":4136,"b7c8r":4137,"b7c8b":4138,"b7c8n":4139,"b7d8q":4140,"b7d8r":4141,"b7d8b":4142,"b7d8n":4143,"b7e8q":4144,"b7e8r":4145,"b7e8b":4146,"b7e8n":4147,"b7f8q":4148,"b7f8r":4149,"b7f8b":4150,"b7f8n":4151,"b7g8q":4152,"b7g8r":4153,"b7g8b":4154,"b7g8n":4155,"b7h8q":4156,"b7h8r":4157,"b7h8b":4158,"b7h8n":4159,"c7a8q":4160,"c7a8r":4161,"c7a8b":4162,"c7a8n":4163,"c7b8q":4164,"c7b8r":4165,"c7b8b":4166,"c7b8n":4167,"c7c8q":4168,"c7c8r":4169,"c7c8b":4170,"c7c8n":4171,"c7d8q":4172,"c7d8r":4173,"c7d8b":4174,"c7d8n":4175,"c7e8q":4176,"c7e8r":4177,"c7e8b":4178,"c7e8n":4179,"c7f8q":4180,"c7f8r":4181,"c7f8b":4182,"c7f8n":4183,"c7g8q":4184,"c7g8r":4185,"c7g8b":4186,"c7g8n":4187,"c7h8q":4188,"c7h8r":4189,"c7h8b":4190,"c7h8n":4191,"d7a8q":4192,"d7a8r":4193,"d7a8b":4194,"d7a8n":4195,"d7b8q":4196,"d7b8r":4197,"d7b8b":4198,"d7b8n":4199,"d7c8q":4200,"d7c8r":4201,"d7c8b":4202,"d7c8n":4203,"d7d8q":4204,"d7d8r":4205,"d7d8b":4206,"d7d8n":4207,"d7e8q":4208,"d7e8r":4209,"d7e8b":4210,"d7e8n":4211,"d7f8q":4212,"d7f8r":4213,"d7f8b":4214,"d7f8n":4215,"d7g8q":4216,"d7g8r":4217,"d7g8b":4218,"d7g8n":4219,"d7h8q":4220,"d7h8r":4221,"d7h8b":4222,"d7h8n":4223,"e7a8q":4224,"e7a8r":4225,"e7a8b":4226,"e7a8n":4227,"e7b8q":4228,"e7b8r":4229,"e7b8b":4230,"e7b8n":4231,"e7c8q":4232,"e7c8r":4233,"e7c8b":4234,"e7c8n":4235,"e7d8q":4236,"e7d8r":4237,"e7d8b":4238,"e7d8n":4239,"e7e8q":4240,"e7e8r":4241,"e7e8b":4242,"e7e8n":4243,"e7f8q":4244,"e7f8r":4245,"e7f8b":4246,"e7f8n":4247,"e7g8q":4248,"e7g8r":4249,"e7g8b":4250,"e7g8n":4251,"e7h8q":4252,"e7h8r":4253,"e7h8b":4254,"e7h8n":4255,"f7a8q":4256,"f7a8r":4257,"f7a8b":4258,"f7a8n":4259,"f7b8q":4260,"f7b8r":4261,"f7b8b":4262,"f7b8n":4263,"f7c8q":4264,"f7c8r":4265,"f7c8b":4266,"f7c8n":4267,"f7d8q":4268,"f7d8r":4269,"f7d8b":4270,"f7d8n":4271,"f7e8q":4272,"f7e8r":4273,"f7e8b":4274,"f7e8n":4275,"f7f8q":4276,"f7f8r":4277,"f7f8b":4278,"f7f8n":4279,"f7g8q":4280,"f7g8r":4281,"f7g8b":4282,"f7g8n":4283,"f7h8q":4284,"f7h8r":4285,"f7h8b":4286,"f7h8n":4287,"g7a8q":4288,"g7a8r":4289,"g7a8b":4290,"g7a8n":4291,"g7b8q":4292,"g7b8r":4293,"g7b8b":4294,"g7b8n":4295,"g7c8q":4296,"g7c8r":4297,"g7c8b":4298,"g7c8n":4299,"g7d8q":4300,"g7d8r":4301,"g7d8b":4302,"g7d8n":4303,"g7e8q":4304,"g7e8r":4305,"g7e8b":4306,"g7e8n":4307,"g7f8q":4308,"g7f8r":4309,"g7f8b":4310,"g7f8n":4311,"g7g8q":4312,"g7g8r":4313,"g7g8b":4314,"g7g8n":4315,"g7h8q":4316,"g7h8r":4317,"g7h8b":4318,"g7h8n":4319,"h7a8q":4320,"h7a8r":4321,"h7a8b":4322,"h7a8n":4323,"h7b8q":4324,"h7b8r":4325,"h7b8b":4326,"h7b8n":4327,"h7c8q":4328,"h7c8r":4329,"h7c8b":4330,"h7c8n":4331,"h7d8q":4332,"h7d8r":4333,"h7d8b":4334,"h7d8n":4335,"h7e8q":4336,"h7e8r":4337,"h7e8b":4338,"h7e8n":4339,"h7f8q":4340,"h7f8r":4341,"h7f8b":4342,"h7f8n":4343,"h7g8q":4344,"h7g8r":4345,"h7g8b":4346,"h7g8n":4347,"h7h8q":4348,"h7h8r":4349,"h7h8b":4350,"h7h8n":4351}'),oa=JSON.parse('{"0":"a1a1","1":"a1b1","2":"a1c1","3":"a1d1","4":"a1e1","5":"a1f1","6":"a1g1","7":"a1h1","8":"a1a2","9":"a1b2","10":"a1c2","11":"a1d2","12":"a1e2","13":"a1f2","14":"a1g2","15":"a1h2","16":"a1a3","17":"a1b3","18":"a1c3","19":"a1d3","20":"a1e3","21":"a1f3","22":"a1g3","23":"a1h3","24":"a1a4","25":"a1b4","26":"a1c4","27":"a1d4","28":"a1e4","29":"a1f4","30":"a1g4","31":"a1h4","32":"a1a5","33":"a1b5","34":"a1c5","35":"a1d5","36":"a1e5","37":"a1f5","38":"a1g5","39":"a1h5","40":"a1a6","41":"a1b6","42":"a1c6","43":"a1d6","44":"a1e6","45":"a1f6","46":"a1g6","47":"a1h6","48":"a1a7","49":"a1b7","50":"a1c7","51":"a1d7","52":"a1e7","53":"a1f7","54":"a1g7","55":"a1h7","56":"a1a8","57":"a1b8","58":"a1c8","59":"a1d8","60":"a1e8","61":"a1f8","62":"a1g8","63":"a1h8","64":"b1a1","65":"b1b1","66":"b1c1","67":"b1d1","68":"b1e1","69":"b1f1","70":"b1g1","71":"b1h1","72":"b1a2","73":"b1b2","74":"b1c2","75":"b1d2","76":"b1e2","77":"b1f2","78"
2775:"b1g2","79":"b1h2","80":"b1a3","81":"b1b3","82":"b1c3","83":"b1d3","84":"b1e3","85":"b1f3","86":"b1g3","87":"b1h3","88":"b1a4","89":"b1b4","90":"b1c4","91":"b1d4","92":"b1e4","93":"b1f4","94":"b1g4","95":"b1h4","96":"b1a5","97":"b1b5","98":"b1c5","99":"b1d5","100":"b1e5","101":"b1f5","102":"b1g5","103":"b1h5","104":"b1a6","105":"b1b6","106":"b1c6","107":"b1d6","108":"b1e6","109":"b1f6","110":"b1g6","111":"b1h6","112":"b1a7","113":"b1b7","114":"b1c7","115":"b1d7","116":"b1e7","117":"b1f7","118":"b1g7","119":"b1h7","120":"b1a8","121":"b1b8","122":"b1c8","123":"b1d8","124":"b1e8","125":"b1f8","126":"b1g8","127":"b1h8","128":"c1a1","129":"c1b1","130":"c1c1","131":"c1d1","132":"c1e1","133":"c1f1","134":"c1g1","135":"c1h1","136":"c1a2","137":"c1b2","138":"c1c2","139":"c1d2","140":"c1e2","141":"c1f2","142":"c1g2","143":"c1h2","144":"c1a3","145":"c1b3","146":"c1c3","147":"c1d3","148":"c1e3","149":"c1f3","150":"c1g3","151":"c1h3","152":"c1a4","153":"c1b4","154":"c1c4","155":"c1d4","156":"c1e4","157":"c1f4","158":"c1g4","159":"c1h4","160":"c1a5","161":"c1b5","162":"c1c5","163":"c1d5","164":"c1e5","165":"c1f5","166":"c1g5","167":"c1h5","168":"c1a6","169":"c1b6","170":"c1c6","171":"c1d6","172":"c1e6","173":"c1f6","174":"c1g6","175":"c1h6","176":"c1a7","177":"c1b7","178":"c1c7","179":"c1d7","180":"c1e7","181":"c1f7","182":"c1g7","183":"c1h7","184":"c1a8","185":"c1b8","186":"c1c8","187":"c1d8","188":"c1e8","189":"c1f8","190":"c1g8","191":"c1h8","192":"d1a1","193":"d1b1","194":"d1c1","195":"d1d1","196":"d1e1","197":"d1f1","198":"d1g1","199":"d1h1","200":"d1a2","201":"d1b2","202":"d1c2","203":"d1d2","204":"d1e2","205":"d1f2","206":"d1g2","207":"d1h2","208":"d1a3","209":"d1b3","210":"d1c3","211":"d1d3","212":"d1e3","213":"d1f3","214":"d1g3","215":"d1h3","216":"d1a4","217":"d1b4","218":"d1c4","219":"d1d4","220":"d1e4","221":"d1f4","222":"d1g4","223":"d1h4","224":"d1a5","225":"d1b5","226":"d1c5","227":"d1d5","228":"d1e5","229":"d1f5","230":"d1g5","231":"d1h5","232":"d1a6","233":"d1b6","234":"d1c6","235":"d1d6","236":"d1e6","237":"d1f6","238":"d1g6","239":"d1h6","240":"d1a7","241":"d1b7","242":"d1c7","243":"d1d7","244":"d1e7","245":"d1f7","246":"d1g7","247":"d1h7","248":"d1a8","249":"d1b8","250":"d1c8","251":"d1d8","252":"d1e8","253":"d1f8","254":"d1g8","255":"d1h8","256":"e1a1","257":"e1b1","258":"e1c1","259":"e1d1","260":"e1e1","261":"e1f1","262":"e1g1","263":"e1h1","264":"e1a2","265":"e1b2","266":"e1c2","267":"e1d2","268":"e1e2","269":"e1f2","270":"e1g2","271":"e1h2","272":"e1a3","273":"e1b3","274":"e1c3","275":"e1d3","276":"e1e3","277":"e1f3","278":"e1g3","279":"e1h3","280":"e1a4","281":"e1b4","282":"e1c4","283":"e1d4","284":"e1e4","285":"e1f4","286":"e1g4","287":"e1h4","288":"e1a5","289":"e1b5","290":"e1c5","291":"e1d5","292":"e1e5","293":"e1f5","294":"e1g5","295":"e1h5","296":"e1a6","297":"e1b6","298":"e1c6","299":"e1d6","300":"e1e6","301":"e1f6","302":"e1g6","303":"e1h6","304":"e1a7","305":"e1b7","306":"e1c7","307":"e1d7","308":"e1e7","309":"e1f7","310":"e1g7","311":"e1h7","312":"e1a8","313":"e1b8","314":"e1c8","315":"e1d8","316":"e1e8","317":"e1f8","318":"e1g8","319":"e1h8","320":"f1a1","321":"f1b1","322":"f1c1","323":"f1d1","324":"f1e1","325":"f1f1","326":"f1g1","327":"f1h1","328":"f1a2","329":"f1b2","330":"f1c2","331":"f1d2","332":"f1e2","333":"f1f2","334":"f1g2","335":"f1h2","336":"f1a3","337":"f1b3","338":"f1c3","339":"f1d3","340":"f1e3","341":"f1f3","342":"f1g3","343":"f1h3","344":"f1a4","345":"f1b4","346":"f1c4","347":"f1d4","348":"f1e4","349":"f1f4","350":"f1g4","351":"f1h4","352":"f1a5","353":"f1b5","354":"f1c5","355":"f1d5","356":"f1e5","357":"f1f5","358":"f1g5","359":"f1h5","360":"f1a6","361":"f1b6","362":"f1c6","363":"f1d6","364":"f1e6","365":"f1f6","366":"f1g6","367":"f1h6","368":"f1a7","369":"f1b7","370":"f1c7","371":"f1d7","372":"f1e7","373":"f1f7","374":"f1g7","375":"f1h7","376":"f1a8","377":"f1b8","378":"f1c8","379":"f1d8","380":"f1e8","381":"f1f8","382":"f1g8","383":"f1h8","384":"g1a1","385":"g1b1","386":"g1c1","387":"g1d1","388":"g1e1","389":"g1f1","390":"g1g1","391":"g1h1","392":"g1a2","393":"g1b2","394":"g1c2","395":"g1d2","396":"g1e2","397":"g1f2","398":"g1g2","399":"g1h2","400":"g1a3","401":"g1b3","402":"g1c3","403":"g1d3","404":"g1e3","405":"g1f3","406":"g1g3","407":"g1h3","408":"g1a4","409":"g1b4","410":"g1c4","411":"g1d4","412":"g1e4","413":"g1f4","414":"g1g4","415":"g1h4","416":"g1a5","417":"g1b5","418":"g1c5","419":"g1d5","420":"g1e5","421":"g1f5","422":"g1g5","423":"g1h5","424":"g1a6","425":"g1b6","426":"g1c6","427":"g1d6","428":"g1e6","429":"g1f6","430":"g1g6","431":"g1h6","432":"g1a7","433":"g1b7","434":"g1c7","435":"g1d7","436":"g1e7","437":"g1f7","438":"g1g7","439":"g1h7","440":"g1a8","441":"g1b8","442":"g1c8","443":"g1d8","444":"g1e8","445":"g1f8","446":"g1g8","447":"g1h8","448":"h1a1","449":"h1b1","450":"h1c1","451":"h1d1","452":"h1e1","453":"h1f1","454":"h1g1","455":"h1h1","456":"h1a2","457":"h1b2","458":"h1c2","459":"h1d2","460":"h1e2","461":"h1f2","462":"h1g2","463":"h1h2","464":"h1a3","465":"h1b3","466":"h1c3","467":"h1d3","468":"h1e3","469":"h1f3","470":"h1g3","471":"h1h3","472":"h1a4","473":"h1b4","474":"h1c4","475":"h1d4","476":"h1e4","477":"h1f4","478":"h1g4","479":"h1h4","480":"h1a5","481":"h1b5","482":"h1c5","483":"h1d5","484":"h1e5","485":"h1f5","48
27756":"h1g5","487":"h1h5","488":"h1a6","489":"h1b6","490":"h1c6","491":"h1d6","492":"h1e6","493":"h1f6","494":"h1g6","495":"h1h6","496":"h1a7","497":"h1b7","498":"h1c7","499":"h1d7","500":"h1e7","501":"h1f7","502":"h1g7","503":"h1h7","504":"h1a8","505":"h1b8","506":"h1c8","507":"h1d8","508":"h1e8","509":"h1f8","510":"h1g8","511":"h1h8","512":"a2a1","513":"a2b1","514":"a2c1","515":"a2d1","516":"a2e1","517":"a2f1","518":"a2g1","519":"a2h1","520":"a2a2","521":"a2b2","522":"a2c2","523":"a2d2","524":"a2e2","525":"a2f2","526":"a2g2","527":"a2h2","528":"a2a3","529":"a2b3","530":"a2c3","531":"a2d3","532":"a2e3","533":"a2f3","534":"a2g3","535":"a2h3","536":"a2a4","537":"a2b4","538":"a2c4","539":"a2d4","540":"a2e4","541":"a2f4","542":"a2g4","543":"a2h4","544":"a2a5","545":"a2b5","546":"a2c5","547":"a2d5","548":"a2e5","549":"a2f5","550":"a2g5","551":"a2h5","552":"a2a6","553":"a2b6","554":"a2c6","555":"a2d6","556":"a2e6","557":"a2f6","558":"a2g6","559":"a2h6","560":"a2a7","561":"a2b7","562":"a2c7","563":"a2d7","564":"a2e7","565":"a2f7","566":"a2g7","567":"a2h7","568":"a2a8","569":"a2b8","570":"a2c8","571":"a2d8","572":"a2e8","573":"a2f8","574":"a2g8","575":"a2h8","576":"b2a1","577":"b2b1","578":"b2c1","579":"b2d1","580":"b2e1","581":"b2f1","582":"b2g1","583":"b2h1","584":"b2a2","585":"b2b2","586":"b2c2","587":"b2d2","588":"b2e2","589":"b2f2","590":"b2g2","591":"b2h2","592":"b2a3","593":"b2b3","594":"b2c3","595":"b2d3","596":"b2e3","597":"b2f3","598":"b2g3","599":"b2h3","600":"b2a4","601":"b2b4","602":"b2c4","603":"b2d4","604":"b2e4","605":"b2f4","606":"b2g4","607":"b2h4","608":"b2a5","609":"b2b5","610":"b2c5","611":"b2d5","612":"b2e5","613":"b2f5","614":"b2g5","615":"b2h5","616":"b2a6","617":"b2b6","618":"b2c6","619":"b2d6","620":"b2e6","621":"b2f6","622":"b2g6","623":"b2h6","624":"b2a7","625":"b2b7","626":"b2c7","627":"b2d7","628":"b2e7","629":"b2f7","630":"b2g7","631":"b2h7","632":"b2a8","633":"b2b8","634":"b2c8","635":"b2d8","636":"b2e8","637":"b2f8","638":"b2g8","639":"b2h8","640":"c2a1","641":"c2b1","642":"c2c1","643":"c2d1","644":"c2e1","645":"c2f1","646":"c2g1","647":"c2h1","648":"c2a2","649":"c2b2","650":"c2c2","651":"c2d2","652":"c2e2","653":"c2f2","654":"c2g2","655":"c2h2","656":"c2a3","657":"c2b3","658":"c2c3","659":"c2d3","660":"c2e3","661":"c2f3","662":"c2g3","663":"c2h3","664":"c2a4","665":"c2b4","666":"c2c4","667":"c2d4","668":"c2e4","669":"c2f4","670":"c2g4","671":"c2h4","672":"c2a5","673":"c2b5","674":"c2c5","675":"c2d5","676":"c2e5","677":"c2f5","678":"c2g5","679":"c2h5","680":"
2775c2a6","681":"c2b6","682":"c2c6","683":"c2d6","684":"c2e6","685":"c2f6","686":"c2g6","687":"c2h6","688":"c2a7","689":"c2b7","690":"c2c7","691":"c2d7","692":"c2e7","693":"c2f7","694":"c2g7","695":"c2h7","696":"c2a8","697":"c2b8","698":"c2c8","699":"c2d8","700":"c2e8","701":"c2f8","702":"c2g8","703":"c2h8","704":"d2a1","705":"d2b1","706":"d2c1","707":"d2d1","708":"d2e1","709":"d2f1","710":"d2g1","711":"d2h1","712":"d2a2","713":"d2b2","714":"d2c2","715":"d2d2","716":"d2e2","717":"d2f2","718":"d2g2","719":"d2h2","720":"d2a3","721":"d2b3","722":"d2c3","723":"d2d3","724":"d2e3","725":"d2f3","726":"d2g3","727":"d2h3","728":"d2a4","729":"d2b4","730":"d2c4","731":"d2d4","732":"d2e4","733":"d2f4","734":"d2g4","735":"d2h4","736":"d2a5","737":"d2b5","738":"d2c5","739":"d2d5","740":"d2e5","741":"d2f5","742":"d2g5","743":"d2h5","744":"d2a6","745":"d2b6","746":"d2c6","747":"d2d6","748":"d2e6","749":"d2f6","750":"d2g6","751":"d2h6","752":"d2a7","753":"d2b7","754":"d2c7","755":"d2d7","756":"d2e7","757":"d2f7","758":"d2g7","759":"d2h7","760":"d2a8","761":"d2b8","762":"d2c8","763":"d2d8","764":"d2e8","765":"d2f8","766":"d2g8","767":"d2h8","768":"e2a1","769":"e2b1","770":"e2c1","771":"e2d1","772":"e2e1","773":"e2f1","774":"e2g1","775":"e2h1","776":"e2a2","777":"e2b2","778":"e2c2","779":"e2d2","780":"e2e2","781":"e2f2","782":"e2g2","783":"e2h2","784":"e2a3","785":"e2b3","786":"e2c3","787":"e2d3","788":"e2e3","789":"e2f3","790":"e2g3","791":"e2h3","792":"e2a4","793":"e2b4","794":"e2c4","795":"e2d4","796":"e2e4","797":"e2f4","798":"e2g4","799":"e2h4","800":"e2a5","801":"e2b5","802":"e2c5","803":"e2d5","804":"e2e5","805":"e2f5","806":"e2g5","807":"e2h5","808":"e2a6","809":"e2b6","810":"e2c6","811":"e2d6","812":"e2e6","813":"e2f6","814":"e2g6","815":"e2h6","816":"e2a7","817":"e2b7","818":"e2c7","819":"e2d7","820":"e2e7","821":"e2f7","822":"e2g7","823":"e2h7","824":"e2a8","825":"e2b8","826":"e2c8","827":"e2d8","828":"e2e8","829":"e2f8","830":"e2g8","831":"e2h8","832":"f2a1","833":"f2b1","834":"f2c1","835":"f2d1","836":"f2e1","837":"f2f1","838":"f2g1","839":"f2h1","840":"f2a2","841":"f2b2","842":"f2c2","843":"f2d2","844":"f2e2","845":"f2f2","846":"f2g2","847":"f2h2","848":"f2a3","849":"f2b3","850":"f2c3","851":"f2d3","852":"f2e3","853":"f2f3","854":"f2g3","855":"f2h3","856":"f2a4","857":"f2b4","858":"f2c4","859":"f2d4","860":"f2e4","861":"f2f4","862":"f2g4","863":"f2h4","864":"f2a5","865":"f2b5","866":"f2c5","867":"f2d5","868":"f2e5","869":"f2f5","870":"f2g5","871":"f2h5","872":"f2a6","873":"f2b6","874":"f2c6","875":"f2d6","876":"f2e6","877":"f2f6","878":"f2g6","879":"f2h6","880":"f2a7","881":"f2b7","882":"f2c7","883":"f2d7","884":"f2e7","885":"f2f7","886":"f2g7","887":"f2h7","888":"f2a8","889":"f2b8","890":"f2c8","891":"f2d8","892":"f2e8","893":"f2f8","894":"f2g8","895":"f2h8","896":"g2a1","897":"g2b1","898":"g2c1","899":"g2d1","900":"g2e1","901":"g2f1","902":"g2g1","903":"g2h1","904":"g2a2","905":"g2b2","906":"g2c2","907":"g2d2","908":"g2e2","909":"g2f2","910":"g2g2","911":"g2h2","912":"g2a3","913":"g2b3","914":"g2c3","915":"g2d3","916":"g2e3","917":"g2f3","918":"g2g3","919":"g2h3","920":"g2a4","921":"g2b4","922":"g2c4","923":"g2d4","924":"g2e4","925":"g2f4","926":"g2g4","927":"g2h4","928":"g2a5","929":"g2b5","930":"g2c5","931":"g2d5","932":"g2e5","933":"g2f5","934":"g2g5","935":"g2h5","936":"g2a6","937":"g2b6","938":"g2c6","939":"g2d6","940":"g2e6","941":"g2f6","942":"g2g6","943":"g2h6","944":"g2a7","945":"g2b7","946":"g2c7","947":"g2d7","948":"g2e7","949":"g2f7","950":"g2g7","951":"g2h7","952":"g2a8","953":"g2b8","954":"g2c8","955":"g2d8","956":"g2e8","957":"g2f8","958":"g2g8","959":"g2h8","960":"h2a1","961":"h2b1","962":"h2c1","963":"h2d1","964":"h2e1","965":"h2f1","966":"h2g1","967":"h2h1","968":"h2a2","969":"h2b2","970":"h2c2","971":"h2d2","972":"h2e2","973":"h2f2","974":"h2g2","975":"h2h2","976":"h2a3","977":"h2b3","978":"h2c3","979":"h2d3","980":"h2e3","981":"h2f3","982":"h2g3","983":"h2h3","984":"h2a4","985":"h2b4","986":"h2c4","987":"h2d4","988":"h2e4","989":"h2f4","990":"h2g4","991":"h2h4","992":"h2a5","993":"h2b5","994":"h2c5","995":"h2d5","996":"h2e5","997":"h2f5","998":"h2g5","999":"h2h5","1000":"h2a6","1001":"h2b6","1002":"h2c6","1003":"h2d6","1004":"h2e6","1005":"h2f6","1006":"h2g6","1007":"h2h6","1008":"h2a7","1009":"h2b7","1010":"h2c7","1011":"h2d7","1012":"h2e7","1013":"h2f7","1014":"h2g7","1015":"h2h7","1016":"h2a8","1017":"h2b8","1018":"h2c8","1019":"h2d8","1020":"h2e8","1021":"h2f8","1022":"h2g8","1023":"h2h8","1024":"a3a1","1025":"a3b1","1026":"a3c1","1027":"a3d1","1028":"a3e1","1029":"a3f1","1030":"a3g1","1031":"a3h1","1032":"a3a2","1033":"a3b2","1034":"a3c2","1035":"a3d2","1036":"a3e2","1037":"a3f2","1038":"a3g2","1039":"a3h2","1040":"a3a3","1041":"a3b3","1042":"a3c3","1043":"a3d3","1044"
2775:"a3e3","1045":"a3f3","1046":"a3g3","1047":"a3h3","1048":"a3a4","1049":"a3b4","1050":"a3c4","1051":"a3d4","1052":"a3e4","1053":"a3f4","1054":"a3g4","1055":"a3h4","1056":"a3a5","1057":"a3b5","1058":"a3c5","1059":"a3d5","1060":"a3e5","1061":"a3f5","1062":"a3g5","1063":"a3h5","1064":"a3a6","1065":"a3b6","1066":"a3c6","1067":"a3d6","1068":"a3e6","1069":"a3f6","1070":"a3g6","1071":"a3h6","1072":"a3a7","1073":"a3b7","1074":"a3c7","1075":"a3d7","1076":"a3e7","1077":"a3f7","1078":"a3g7","1079":"a3h7","1080":"a3a8","1081":"a3b8","1082":"a3c8","1083":"a3d8","1084":"a3e8","1085":"a3f8","1086":"a3g8","1087":"a3h8","1088":"b3a1","1089":"b3b1","1090":"b3c1","1091":"b3d1","1092":"b3e1","1093":"b3f1","1094":"b3g1","1095":"b3h1","1096":"b3a2","1097":"b3b2","1098":"b3c2","1099":"b3d2","1100":"b3e2","1101":"b3f2","1102":"b3g2","1103":"b3h2","1104":"b3a3","1105":"b3b3","1106":"b3c3","1107":"b3d3","1108":"b3e3","1109":"b3f3","1110":"b3g3","1111":"b3h3","1112":"b3a4","1113":"b3b4","1114":"b3c4","1115":"b3d4","1116":"b3e4","1117":"b3f4","1118":"b3g4","1119":"b3h4","1120":"b3a5","1121":"b3b5","1122":"b3c5","1123":"b3d5","1124":"b3e5","1125":"b3f5","1126":"b3g5","1127":"b3h5","1128":"b3a6","1129":"b3b6","1130":"b3c6","1131":"b3d6","1132":"b3e6","1133":"b3f6","1134":"b3g6","1135":"b3h6","1136":"b3a7","1137":"b3b7","1138":"b3c7","1139":"b3d7","1140":"b3e7","1141":"b3f7","1142":"b3g7","1143":"b3h7","1144":"b3a8","1145":"b3b8","1146":"b3c8","1147":"b3d8","1148":"b3e8","1149":"b3f8","1150":"b3g8","1151":"b3h8","1152":"c3a1","1153":"c3b1","1154":"c3c1","1155":"c3d1","1156":"c3e1","1157":"c3f1","1158":"c3g1","1159":"c3h1","1160":"c3a2","1161":"c3b2","1162":"c3c2","1163":"c3d2","1164":"c3e2","1165":"c3f2","1166":"c3g2","1167":"c3h2","1168":"c3a3","1169":"c3b3","1170":"c3c3","1171":"c3d3","1172":"c3e3","1173":"c3f3","1174":"c3g3","1175":"c3h3","1176":"c3a4","1177":"c3b4","1178":"c3c4","1179":"c3d4","1180":"c3e4","1181":"c3f4","1182":"c3g4","1183":"c3h4","1184":"c3a5","1185":"c3b5","1186":"c3c5","1187":"c3d5","1188":"c3e5","1189":"c3f5","1190":"c3g5","1191":"c3h5","1192":"c3a6","1193":"c3b6","1194":"c3c6","1195":"c3d6","1196":"c3e6","1197":"c3f6","1198":"c3g6","1199":"c3h6","1200":"c3a7","1201":"c3b7","1202":"c3c7","1203":"c3d7","1204":"c3e7","1205":"c3f7","1206":"c3g7","1207":"c3h7","1208":"c3a8","1209":"c3b8","1210":"c3c8","1211":"c3d8","1212":"c3e8","1213":"c3f8","1214":"c3g8","1215":"c3h8","1216":"d3a1","1217":"d3b1","1218":"d3c1","1219":"d3d1","1220":"d3e1","1221":"d3f1","1222":"d3g1","1223":"d3h1","1224":"d3a2","1225":"d3b2","1226":"d3c2","1227":"d3d2","1228":"d3e2","1229":"d3f2","1230":"d3g2","1231":"d3h2","1232":"d3a3","1233":"d3b3","1234":"d3c3","1235":"d3d3","1236":"d3e3","1237":"d3f3","1238":"d3g3","1239":"d3h3","1240":"d3a4","1241":"d3b4","1242":"d3c4","1243":"d3d4","1244":"d3e4","1245":"d3f4","1246":"d3g4","1247":"d3h4","1248":"d3a5","1249":"d3b5","1250":"d3c5","1251":"d3d5","1252":"d3e5","1253":"d3f5","1254":"d3g5","1255":"d3h5","1256":"d3a6","1257":"d3b6","1258":"d3c6","1259":"d3d6","1260":"d3e6","1261":"d3f6","1262":"d3g6","1263":"d3h6","1264":"d3a7","1265":"d3b7","1266":"d3c7","1267":"d3d7","1268":"d3e7","1269":"d3f7","1270":"d3g7","1271":"d3h7","1272":"d3a8","1273":"d3b8","1274":"d3c8","1275":"d3d8","1276":"d3e8","1277":"d3f8","1278":"d3g8","1279":"d3h8","1280":"e3a1","1281":"e3b1","1282":"e3c1","1283":"e3d1","1284":"e3e1","1285":"e3f1","1286":"e3g1","1287":"e3h1","1288":"e3a2","1289":"e3b2","1290":"e3c2","1291":"e3d2","1292":"e3e2","1293":"e3f2","1294":"e3g2","1295":"e3h2","1296":"e3a3","1297":"e3b3","1298":"e3c3","1299":"e3d3","1300":"e3e3","1301":"e3f3","1302":"e3g3","1303":"e3h3","1304":"e3a4","1305":"e3b4","1306":"e3c4","1307":"e3d4","1308":"e3e4","1309":"e3f4","1310":"e3g4","1311":"e3h4","1312":"e3a5","1313":"e3b5","1314":"e3c5","1315":"e3d5","1316":"e3e5","1317":"e3f5","1318":"e3g5","1319":"e3h5","1320":"e3a6","1321":"e3b6","1322":"e3c6","1323":"e3d6","1324":"e3e6","1325":"e3f6","1326":"e3g6","1327":"e3h6","1328":"e3a7","1329":"e3b7","1330":"e3c7","1331":"e3d7","1332":"e3e7","1333":"e3f7","1334":"e3g7","1335":"e3h7","1336":"e3a8","1337":"e3b8","1338":"e3c8","1339":"e3d8","1340":"e3e8","1341":"e3f8","1342"
2775:"e3g8","1343":"e3h8","1344":"f3a1","1345":"f3b1","1346":"f3c1","1347":"f3d1","1348":"f3e1","1349":"f3f1","1350":"f3g1","1351":"f3h1","1352":"f3a2","1353":"f3b2","1354":"f3c2","1355":"f3d2","1356":"f3e2","1357":"f3f2","1358":"f3g2","1359":"f3h2","1360":"f3a3","1361":"f3b3","1362":"f3c3","1363":"f3d3","1364":"f3e3","1365":"f3f3","1366":"f3g3","1367":"f3h3","1368":"f3a4","1369":"f3b4","1370":"f3c4","1371":"f3d4","1372":"f3e4","1373":"f3f4","1374":"f3g4","1375":"f3h4","1376":"f3a5","1377":"f3b5","1378":"f3c5","1379":"f3d5","1380":"f3e5","1381":"f3f5","1382":"f3g5","1383":"f3h5","1384":"f3a6","1385":"f3b6","1386":"f3c6","1387":"f3d6","1388":"f3e6","1389":"f3f6","1390":"f3g6","1391":"f3h6","1392":"f3a7","1393":"f3b7","1394":"f3c7","1395":"f3d7","1396":"f3e7","1397":"f3f7","1398":"f3g7","1399":"f3h7","1400":"f3a8","1401":"f3b8","1402":"f3c8","1403":"f3d8","1404":"f3e8","1405":"f3f8","1406":"f3g8","1407":"f3h8","1408":"g3a1","1409":"g3b1","1410":"g3c1","1411":"g3d1","1412":"g3e1","1413":"g3f1","1414":"g3g1","1415":"g3h1","1416":"g3a2","1417":"g3b2","1418":"g3c2","1419":"g3d2","1420":"g3e2","1421":"g3f2","1422":"g3g2","1423":"g3h2","1424":"g3a3","1425":"g3b3","1426":"g3c3","1427":"g3d3","1428":"g3e3","1429":"g3f3","1430":"g3g3","1431":"g3h3","1432":"g3a4","1433":"g3b4","1434":"g3c4","1435":"g3d4","1436":"g3e4","1437":"g3f4","1438":"g3g4","1439":"g3h4","1440":"g3a5","1441":"g3b5","1442":"g3c5","1443":"g3d5","1444":"g3e5","1445":"g3f5","1446":"g3g5","1447":"g3h5","1448":"g3a6","1449":"g3b6","1450":"g3c6","1451":"g3d6","1452":"g3e6","1453":"g3f6","1454":"g3g6","1455":"g3h6","1456":"g3a7","1457":"g3b7","1458":"g3c7","1459":"g3d7","1460":"g3e7","1461":"g3f7","1462":"g3g7","1463":"g3h7","1464":"g3a8","1465":"g3b8","1466":"g3c8","1467":"g3d8","1468":"g3e8","1469":"g3f8","1470":"g3g8","1471":"g3h8","1472":"h3a1","1473":"h3b1","1474":"h3c1","1475":"h3d1","1476":"h3e1","1477":"h3f1","1478":"h3g1","1479":"h3h1","1480":"h3a2","1481":"h3b2","1482":"h3c2","1483":"h3d2","1484":"h3e2","1485":"h3f2","1486":"h3g2","1487":"h3h2","1488":"h3a3","1489":"h3b3","1490":"h3c3","1491":"h3d3","1492":"h3e3","1493":"h3f3","1494":"h3g3","1495":"h3h3","1496":"h3a4","1497":"h3b4","1498":"h3c4","1499":"h3d4","1500":"h3e4","1501":"h3f4","1502":"h3g4","1503":"h3h4","1504":"h3a5","1505":"h3b5","1506":"h3c5","1507":"h3d5","1508":"h3e5","1509":"h3f5","1510":"h3g5","1511":"h3h5","1512":"h3a6","1513":"h3b6","1514":"h3c6","1515":"h3d6","1516":"h3e6","1517":"h3f6","1518":"h3g6","1519":"h3h6","1520":"h3a7","1521":"h3b7","1522":"h3c7","1523":"h3d7","1524":"h3e7","1525":"h3f7","1526":"h3g7","1527":"h3h7","1528":"h3a8","1529":"h3b8","1530":"h3c8","1531":"h3d8","1532":"h3e8","1533":"h3f8","1534":"h3g8","1535":"h3h8","1536":"a4a1","1537":"a4b1","1538":"a4c1","1539":"a4d1","1540":"a4e1","1541":"a4f1","1542":"a4g1","1543":"a4h1","1544":"a4a2","1545":"a4b2","1546":"a4c2","1547":"a4d2","1548":"a4e2","1549":"a4f2","1550":"a4g2","1551":"a4h2","1552":"a4a3","1553":"a4b3","1554":"a4c3","1555":"a4d3","1556":"a4e3","1557":"a4f3","1558":"a4g3","1559":"a4h3","1560":"a4a4","1561":"a4b4","1562":"a4c4","1563":"a4d4","1564":"a4e4","1565":"a4f4","1566":"a4g4","1567":"a4h4","1568":"a4a5","1569":"a4b5","1570":"a4c5","1571":"a4d5","1572":"a4e5","1573":"a4f5","1574":"a4g5","1575":"a4h5","1576":"a4a6","1577":"a4b6","1578":"a4c6","1579":"a4d6","1580":"a4e6","1581":"a4f6","1582":"a4g6","1583":"a4h6","1584":"a4a7","1585":"a4b7","1586":"a4c7","1587":"a4d7","1588":"a4e7","1589":"a4f7","1590":"a4g7","1591":"a4h7","1592":"a4a8","1593":"a4b8","1594":"a4c8","1595":"a4d8","1596":"a4e8","1597":"a4f8","1598":"a4g8","1599":"a4h8","1600":"b4a1","1601":"b4b1","1602":"b4c1","1603":"b4d1","1604":"b4e1","1605":"b4f1","1606":"b4g1","1607":"b4h1","1608":"b4a2","1609":"b4b2","1610":"b4c2","1611":"b4d2","1612":"b4e2","1613":"b4f2","1614":"b4g2","1615":"b4h2","1616":"b4a3","1617":"b4b3","1618":"b4c3","1619":"b4d3","1620":"b4e3","1621":"b4f3","1622":"b4g3","1623":"b4h3","1624":"b4a4","1625":"b4b4","1626":"b4c4","1627":"b4d4","1628":"b4e4","1629":"b4f4","1630":"b4g4","1631":"b4h4","1632":"b4a5","1633":"b4b5","1634":"b4c5","1635":"b4d5","1636":"b4e5","1637":"b4f5","1638":"b4g5","1639":"b4h5","1640":"b4a6","1641":"b4b6","1642":"b4c6","1643":"b4d6","1644":"b4e6","1645":"b4f6","1646":"b4g6","1647":"b4h6","1648":"b4a7","1649":"b4b7","1650":"b4c7","1651":"b4d7","1652":"b4e7","1653":"b4f7","1654":"b4g7","1655":"b4h7","1656":"b4a8","1657":"b4b8","1658":"b4c8","1659":"b4d8","1660":"b4e8","1661":"b4f8","1662":"b4g8","1663":"b4h8","1664":"c4a1","1665":"c4b1","1666":"c4c1","1667":"c4d1","1668":"c4e1","1669":"c4f1","1670":"c4g1","1671":"c4h1","1672":"c4a2","1673":"c4b2","1674":"c4c2","1675":"c4d2","1676":"c4e2","1677":"c4f2","1678":"c4g2","1679":"c4h2","1680":"c4a3","1681":"c4b3","1682":"c4c3","1683":"c4d3","1684":"c4e3","1685":"c4f3","1686":"c4g3","1687":"c4h3","1688":"c4a4","1689":"c4b4","1690":"
2775c4c4","1691":"c4d4","1692":"c4e4","1693":"c4f4","1694":"c4g4","1695":"c4h4","1696":"c4a5","1697":"c4b5","1698":"c4c5","1699":"c4d5","1700":"c4e5","1701":"c4f5","1702":"c4g5","1703":"c4h5","1704":"c4a6","1705":"c4b6","1706":"c4c6","1707":"c4d6","1708":"c4e6","1709":"c4f6","1710":"c4g6","1711":"c4h6","1712":"c4a7","1713":"c4b7","1714":"c4c7","1715":"c4d7","1716":"c4e7","1717":"c4f7","1718":"c4g7","1719":"c4h7","1720":"c4a8","1721":"c4b8","1722":"c4c8","1723":"c4d8","1724":"c4e8","1725":"c4f8","1726":"c4g8","1727":"c4h8","1728":"d4a1","1729":"d4b1","1730":"d4c1","1731":"d4d1","1732":"d4e1","1733":"d4f1","1734":"d4g1","1735":"d4h1","1736":"d4a2","1737":"d4b2","1738":"d4c2","1739":"d4d2","1740":"d4e2","1741":"d4f2","1742":"d4g2","1743":"d4h2","1744":"d4a3","1745":"d4b3","1746":"d4c3","1747":"d4d3","1748":"d4e3","1749":"d4f3","1750":"d4g3","1751":"d4h3","1752":"d4a4","1753":"d4b4","1754":"d4c4","1755":"d4d4","1756":"d4e4","1757":"d4f4","1758":"d4g4","1759":"d4h4","1760":"d4a5","1761":"d4b5","1762":"d4c5","1763":"d4d5","1764":"d4e5","1765":"d4f5","1766":"d4g5","1767":"d4h5","1768":"d4a6","1769":"d4b6","1770":"d4c6","1771":"d4d6","1772":"d4e6","1773":"d4f6","1774":"d4g6","1775":"d4h6","1776":"d4a7","1777":"d4b7","1778":"d4c7","1779":"d4d7","1780":"d4e7","1781":"d4f7","1782":"d4g7","1783":"d4h7","1784":"d4a8","1785":"d4b8","1786":"d4c8","1787":"d4d8","1788":"d4e8","1789":"d4f8","1790":"d4g8","1791":"d4h8","1792":"e4a1","1793":"e4b1","1794":"e4c1","1795":"e4d1","1796":"e4e1","1797":"e4f1","1798":"e4g1","1799":"e4h1","1800":"e4a2","1801":"e4b2","1802":"e4c2","1803":"e4d2","1804":"e4e2","1805":"e4f2","1806":"e4g2","1807":"e4h2","1808":"e4a3","1809":"e4b3","1810":"e4c3","1811":"e4d3","1812":"e4e3","1813":"e4f3","1814":"e4g3","1815":"e4h3","1816":"e4a4","1817":"e4b4","1818":"e4c4","1819":"e4d4","1820":"e4e4","1821":"e4f4","1822":"e4g4","1823":"e4h4","1824":"e4a5","1825":"e4b5","1826":"e4c5","1827":"e4d5","1828":"e4e5","1829":"e4f5","1830":"e4g5","1831":"e4h5","1832":"e4a6","1833":"e4b6","1834":"e4c6","1835":"e4d6","1836":"e4e6","1837":"e4f6","1838":"e4g6","1839":"e4h6","1840":"e4a7","1841":"e4b7","1842":"e4c7","1843":"e4d7","1844":"e4e7","1845":"e4f7","1846":"e4g7","1847":"e4h7","1848":"e4a8","1849":"e4b8","1850":"e4c8","1851":"e4d8","1852":"e4e8","1853":"e4f8","1854":"e4g8","1855":"e4h8","1856":"f4a1","1857":"f4b1","1858":"f4c1","1859":"f4d1","1860":"f4e1","1861":"f4f1","1862":"f4g1","1863":"f4h1","1864":"f4a2","1865":"f4b2","1866":"f4c2","1867":"f4d2","1868":"f4e2","1869":"f4f2","1870":"f4g2","1871":"f4h2","1872":"f4a3","1873":"f4b3","1874":"f4c3","1875":"f4d3","1876":"f4e3","1877":"f4f3","1878":"f4g3","1879":"f4h3","1880":"f4a4","1881":"f4b4","1882":"f4c4","1883":"f4d4","1884":"f4e4","1885":"f4f4","1886":"f4g4","1887":"f4h4","1888":"f4a5","1889":"f4b5","1890":"f4c5","1891":"f4d5","1892":"f4e5","1893":"f4f5","1894":"f4g5","1895":"f4h5","1896":"f4a6","1897":"f4b6","1898":"f4c6","1899":"f4d6","1900":"f4e6","1901":"f4f6","1902":"f4g6","1903":"f4h6","1904":"f4a7","1905":"f4b7","1906":"f4c7","1907":"f4d7","1908":"f4e7","1909":"f4f7","1910":"f4g7","1911":"f4h7","1912":"f4a8","1913":"f4b8","1914":"f4c8","1915":"f4d8","1916":"f4e8","1917":"f4f8","1918":"f4g8","1919":"f4h8","1920":"g4a1","1921":"g4b1","1922":"g4c1","1923":"g4d1","1924":"g4e1","1925":"g4f1","1926":"g4g1","1927":"g4h1","1928":"g4a2","1929":"g4b2","1930":"g4c2","1931":"g4d2","1932":"g4e2","1933":"g4f2","1934":"g4g2","1935":"g4h2","1936":"g4a3","1937":"g4b3","1938":"g4c3","1939":"g4d3","1940":"g4e3","1941":"g4f3","1942":"g4g3","1943":"g4h3","1944":"g4a4","1945":"g4b4","1946":"g4c4","1947":"g4d4","1948":"g4e4","1949":"g4f4","1950":"g4g4","1951":"g4h4","1952":"g4a5","1953":"g4b5","1954":"g4c5","1955":"g4d5","1956":"g4e5","1957":"g4f5","1958":"g4g5","1959":"g4h5","1960":"g4a6","1961":"g4b6","1962":"g4c6","1963":"g4d6","1964":"g4e6","1965":"g4f6","1966":"g4g6","1967":"g4h6","1968":"g4a7","1969":"g4b7","1970":"g4c7","1971":"g4d7","1972":"g4e7","1973":"g4f7","1974":"g4g7","1975":"g4h7","1976":"g4a8","1977":"g4b8","1978":"g4c8","1979":"g4d8","1980":"g4e8","1981":"g4f8","1982":"g4g8","1983":"g4h8","1984":"h4a1","1985":"h4b1","1986":"h4c1","1987":"h4d1","1988":"h4e1","1989":"h4f1","1990":"h4g1","1991":"h4h1","1992":"h4a2","1993":"h4b2","1994":"h4c2","1995":"h4d2","1996":"h4e2","1997":"h4f2","1998":"h4g2","1999":"h4h2","2000":"h4a3","2001":"h4b3","2002":"h4c3","2003":"h4d3","2004":"h4e3","2005":"h4f3","2006":"h4g3","2007":"h4h3","2008":"h4a4","2009":"h4b4","2010":"h4c4","2011":"h4d4","2012":"h4e4","2013":"h4f4","2014":"h4g4","2015":"h4h4","2016":"h4a5","2017":"h4b5","2018":"h4c5","2019":"h4d5","2020":"h4e5","2021":"h4f5","2022":"h4g5","2023":"h4h5","2024":"h4a6","2025":"h4b6","2026":"h4c6","2027":"h4d6","2028":"h4e6","2029":"h4f6","2030":"h4g6","2031":"h4h6","2032":"h4a7","2033":"h4b7","2034":"h4c7","2035":"h4d7","2036":"h4e7","2037":"h4f7","2038":"h4g7","2039":"h4h7","2040":"h4a8","2041":"h4b8","2042":"h4c8","2043":"h4d8","2044":"h4e8","2045":"h4f8","2046":"h4g8","2047":"h4h8","2048":"a5a1","2049":"a5b1","2050":"a5c1","2051":"a5d1","2052":"a5e1","2053":"a5f1","2054":"a5g1","2055":"a5h1","2056":"a5a2","2057":"a5b2","2058":"a5c2","2059":"a5d2","2060":"a5e2","2061":"a5f2","2062":"a5g2","2063":"a5h2","2064":"a5a3","2065":"a5b3","2066":"a5c3","2067":"a5d3","2068":"a5e3","2069":"a5f3","2070":"a5g3","2071":"a5h3","2072":"a5a4","2073":"a5b4","2074":"a5c4","2075":"a5d4","2076":"a5e4","2077":"a5f4","2078":"a5g4","2079":"a5h4","2080":"a5a5","2081":"a5b5","2082":"a5c5","2083":"a5d5","2084":"a5e5","2085":"a5f5","2086":"a5g5","2087":"a5h5","2088":"a5a6","2089":"a5b6","2090":"a5c6","2091":"a5d6","2092":"a5e6","2093":"a5f6","2094":"a5g6","2095":"a5h6","2096":"a5a7","2097":"a5b7","2098":"a5c7","2099":"a5d7","2100":"a5e7","2101":"a5f7","2102":"a5g7","2103":"a5h7","2104":"a5a8","2105":"a5b8","2106":"a5c8","2107":"a5d8","2108":"a5e8","2109":"a5f8","2110":"a5g8","2111":"a5h8","2112":"b5a1","2113":"b5b1","2114":"b5c1","2115":"b5d1","2116":"b5e1","2117":"b5f1","2118":"b5g1","2119":"b5h1","2120":"b5a2","2121":"b5b2","2122":"b5c2","2123":"b5d2","2124":"b5e2","2125":"b5f2","2126":"b5g2","2127":"b5h2","2128":"b5a3","2129":"b5b3","2130":"b5c3","2131":"b5d3","2132":"b5e3","2133":"b5f3","2134":"b5g3","2135":"b5h3","2136":"b5a4","2137":"b5b4","2138":"b5c4","2139":"b5d4","2140":"b5e4","2141":"b5f4","2142":"b5g4","2143":"b5h4","2144":"b5a5","2145":"b5b5","2146":"b5c5","2147":"b5d5","2148":"b5e5","2149":"b5f5","2150":"b5g5","2151":"b5h5","2152":"b5a6","2153":"b5b6","2154":"b5c6","2155":"b5d6","2156":"b5e6","2157":"b5f6","2158":"b5g6","2159":"b5h6","2160":"b5a7","2161":"b5b7","2162":"b5c7","2163":"b5d7","2164":"b5e7","2165":"b5f7","2166":"b5g7","2167":"b5h7","2168":"b5a8","2169":"b5b8","2170":"b5c8","2171":"b5d8","2172":"b5e8","2173":"b5f8","2174":"b5g8","2175":"b5h8","2176":"c5a1","2177":"c5b1","2178":"c5c1","2179":"c5d1","2180":"
2775c5e1","2181":"c5f1","2182":"c5g1","2183":"c5h1","2184":"c5a2","2185":"c5b2","2186":"c5c2","2187":"c5d2","2188":"c5e2","2189":"c5f2","2190":"c5g2","2191":"c5h2","2192":"c5a3","2193":"c5b3","2194":"c5c3","2195":"c5d3","2196":"c5e3","2197":"c5f3","2198":"c5g3","2199":"c5h3","2200":"c5a4","2201":"c5b4","2202":"c5c4","2203":"c5d4","2204":"c5e4","2205":"c5f4","2206":"c5g4","2207":"c5h4","2208":"c5a5","2209":"c5b5","2210":"c5c5","2211":"c5d5","2212":"c5e5","2213":"c5f5","2214":"c5g5","2215":"c5h5","2216":"c5a6","2217":"c5b6","2218":"c5c6","2219":"c5d6","2220":"c5e6","2221":"c5f6","2222":"c5g6","2223":"c5h6","2224":"c5a7","2225":"c5b7","2226":"c5c7","2227":"c5d7","2228":"c5e7","2229":"c5f7","2230":"c5g7","2231":"c5h7","2232":"c5a8","2233":"c5b8","2234":"c5c8","2235":"c5d8","2236":"c5e8","2237":"c5f8","2238":"c5g8","2239":"c5h8","2240":"d5a1","2241":"d5b1","2242":"d5c1","2243":"d5d1","2244":"d5e1","2245":"d5f1","2246":"d5g1","2247":"d5h1","2248":"d5a2","2249":"d5b2","2250":"d5c2","2251":"d5d2","2252":"d5e2","2253":"d5f2","2254":"d5g2","2255":"d5h2","2256":"d5a3","2257":"d5b3","2258":"d5c3","2259":"d5d3","2260":"d5e3","2261":"d5f3","2262":"d5g3","2263":"d5h3","2264":"d5a4","2265":"d5b4","2266":"d5c4","2267":"d5d4","2268":"d5e4","2269":"d5f4","2270":"d5g4","2271":"d5h4","2272":"d5a5","2273":"d5b5","2274":"d5c5","2275":"d5d5","2276":"d5e5","2277":"d5f5","2278":"d5g5","2279":"d5h5","2280":"d5a6","2281":"d5b6","2282":"d5c6","2283":"d5d6","2284":"d5e6","2285":"d5f6","2286":"d5g6","2287":"d5h6","2288":"d5a7","2289":"d5b7","2290":"d5c7","2291":"d5d7","2292":"d5e7","2293":"d5f7","2294":"d5g7","2295":"d5h7","2296":"d5a8","2297":"d5b8","2298":"d5c8","2299":"d5d8","2300":"d5e8","2301":"d5f8","2302":"d5g8","2303":"d5h8","2304":"e5a1","2305":"e5b1","2306":"e5c1","2307":"e5d1","2308":"e5e1","2309":"e5f1","2310":"e5g1","2311":"e5h1","2312":"e5a2","2313":"e5b2","2314":"e5c2","2315":"e5d2","2316":"e5e2","2317":"e5f2","2318":"e5g2","2319":"e5h2","2320":"e5a3","2321":"e5b3","2322":"e5c3","2323":"e5d3","2324":"e5e3","2325":"e5f3","2326":"e5g3","2327":"e5h3","2328":"e5a4","2329":"e5b4","2330":"e5c4","2331":"e5d4","2332":"e5e4","2333":"e5f4","2334":"e5g4","2335":"e5h4","2336":"e5a5","2337":"e5b5","2338":"e5c5","2339":"e5d5","2340":"e5e5","2341":"e5f5","2342":"e5g5","2343":"e5h5","2344":"e5a6","2345":"e5b6","2346":"e5c6","2347":"e5d6","2348":"e5e6","2349":"e5f6","2350":"e5g6","2351":"e5h6","2352":"e5a7","2353":"e5b7","2354":"e5c7","2355":"e5d7","2356":"e5e7","2357":"e5f7","2358":"e5g7","2359":"e5h7","2360":"e5a8","2361":"e5b8","2362":"e5c8","23
277563":"e5d8","2364":"e5e8","2365":"e5f8","2366":"e5g8","2367":"e5h8","2368":"f5a1","2369":"f5b1","2370":"f5c1","2371":"f5d1","2372":"f5e1","2373":"f5f1","2374":"f5g1","2375":"f5h1","2376":"f5a2","2377":"f5b2","2378":"f5c2","2379":"f5d2","2380":"f5e2","2381":"f5f2","2382":"f5g2","2383":"f5h2","2384":"f5a3","2385":"f5b3","2386":"f5c3","2387":"f5d3","2388":"f5e3","2389":"f5f3","2390":"f5g3","2391":"f5h3","2392":"f5a4","2393":"f5b4","2394":"f5c4","2395":"f5d4","2396":"f5e4","2397":"f5f4","2398":"f5g4","2399":"f5h4","2400":"f5a5","2401":"f5b5","2402":"f5c5","2403":"f5d5","2404":"f5e5","2405":"f5f5","2406":"f5g5","2407":"f5h5","2408":"f5a6","2409":"f5b6","2410":"f5c6","2411":"f5d6","2412":"f5e6","2413":"f5f6","2414":"f5g6","2415":"f5h6","2416":"f5a7","2417":"f5b7","2418":"f5c7","2419":"f5d7","2420":"f5e7","2421":"f5f7","2422":"f5g7","2423":"f5h7","2424":"f5a8","2425":"f5b8","2426":"f5c8","2427":"f5d8","2428":"f5e8","2429":"f5f8","2430":"f5g8","2431":"f5h8","2432":"g5a1","2433":"g5b1","2434":"g5c1","2435":"g5d1","2436":"g5e1","2437":"g5f1","2438":"g5g1","2439":"g5h1","2440":"g5a2","2441":"g5b2","2442":"g5c2","2443":"g5d2","2444":"g5e2","2445":"g5f2","2446":"g5g2","2447":"g5h2","2448":"g5a3","2449":"g5b3","2450":"g5c3","2451":"g5d3","2452":"g5e3","2453":"g5f3","2454":"g5g3","2455":"g5h3","2456":"g5a4","2457":"g5b4","2458":"g5c4","2459":"g5d4","2460":"g5e4","2461":"g5f4","2462":"g5g4","2463":"g5h4","2464":"g5a5","2465":"g5b5","2466":"g5c5","2467":"g5d5","2468":"g5e5","2469":"g5f5","2470":"g5g5","2471":"g5h5","2472":"g5a6","2473":"g5b6","2474":"g5c6","2475":"g5d6","2476":"g5e6","2477":"g5f6","2478":"g5g6","2479":"g5h6","2480":"g5a7","2481":"g5b7","2482":"g5c7","2483":"g5d7","2484":"g5e7","2485":"g5f7","2486":"g5g7","2487":"g5h7","2488":"g5a8","2489":"g5b8","2490":"g5c8","2491":"g5d8","2492":"g5e8","2493":"g5f8","2494":"g5g8","2495":"g5h8","2496":"h5a1","2497":"h5b1","2498":"h5c1","2499":"h5d1","2500":"h5e1","2501":"h5f1","2502":"h5g1","2503":"h5h1","2504":"h5a2","2505":"h5b2","2506":"h5c2","2507":"h5d2","2508":"h5e2","2509":"h5f2","2510":"h5g2","2511":"h5h2","2512":"h5a3","2513":"h5b3","2514":"h5c3","2515":"h5d3","2516":"h5e3","2517":"h5f3","2518":"h5g3","2519":"h5h3","2520":"h5a4","2521":"h5b4","2522":"h5c4","2523":"h5d4","2524":"h5e4","2525":"h5f4","2526":"h5g4","2527":"h5h4","2528":"h5a5","2529":"h5b5","2530":"h5c5","2531":"h5d5","2532":"h5e5","2533":"h5f5","2534":"h5g5","2535":"h5h5","2536":"h5a6","2537":"h5b6","2538":"h5c6","2539":"h5d6","2540":"h5e6","2541":"h5f6","2542":"h5g6","2543":"h5h6","2544":"h5a7","2545":"h5b7","2546":"h5c7","2547":"h5d7","2548":"h5e7","2549":"h5f7","2550":"h5g7","2551":"h5h7","2552":"h5a8","2553":"h5b8","2554":"h5c8","2555":"h5d8","2556":"h5e8","2557":"h5f8","2558":"h5g8","2559":"h5h8","2560":"a6a1","2561":"a6b1","2562":"a6c1","2563":"a6d1","2564":"a6e1","2565":"a6f1","2566":"a6g1","2567":"a6h1","2568":"a6a2","2569":"a6b2","2570":"a6c2","2571":"a6d2","2572":"a6e2","2573":"a6f2","2574":"a6g2","2575":"a6h2","2576":"a6a3","2577":"a6b3","2578":"a6c3","2579":"a6d3","2580":"a6e3","2581":"a6f3","2582":"a6g3","2583":"a6h3","2584":"a6a4","2585":"a6b4","2586":"a6c4","2587":"a6d4","2588":"a6e4","2589":"a6f4","2590":"a6g4","2591":"a6h4","2592":"a6a5","2593":"a6b5","2594":"a6c5","2595":"a6d5","2596":"a6e5","2597":"a6f5","2598":"a6g5","2599":"a6h5","2600":"a6a6","2601":"a6b6","2602":"a6c6","2603":"a6d6","2604":"a6e6","2605":"a6f6","2606":"a6g6","2607":"a6h6","2608":"a6a7","2609":"a6b7","2610":"a6c7","2611":"a6d7","2612":"a6e7","2613":"a6f7","2614":"a6g7","2615":"a6h7","2616":"a6a8","2617":"a6b8","2618":"a6c8","2619":"a6d8","2620":"a6e8","2621":"a6f8","2622":"a6g8","2623":"a6h8","2624":"b6a1","2625":"b6b1","2626":"b6c1","2627":"b6d1","2628":"b6e1","2629":"b6f1","2630":"b6g1","2631":"b6h1","2632":"b6a2","2633":"b6b2","2634":"b6c2","2635":"b6d2","2636":"b6e2","2637":"b6f2","2638":"b6g2","2639":"b6h2","2640":"b6a3","2641":"b6b3","2642":"b6c3","2643":"b6d3","2644":"b6e3","2645":"b6f3","2646":"b6g3","2647":"b6h3","2648":"b6a4","2649":"b6b4","2650":"b6c4","2651":"b6d4","2652":"b6e4","2653":"b6f4","2654":"b6g4","2655":"b6h4","2656":"b6a5","2657":"b6b5","2658":"b6c5","2659":"b6d5","2660":"b6e5","2661":"b6f5","2662":"b6g5","2663":"b6h5","2664":"b6a6","2665":"b6b6","2666":"b6c6","2667":"b6d6","2668":"b6e6","2669":"b6f6","2670":"b6g6","2671":"b6h6","2672":"b6a7","2673":"b6b7","2674":"b6c7","2675":"b6d7","2676":"b6e7","2677":"b6f7","2678":"b6g7","2679":"b6h7","2680":"b6a8","2681":"b6b8","2682":"b6c8","2683":"b6d8","2684":"b6e8","2685":"b6f8","2686":"b6g8","2687":"b6h8","2688":"c6a1","2689":"c6b1","2690":"c6c1","2691":"c6d1","2692":"c6e1","2693":"c6f1","2694":"c6g1","2695":"c6h1","2696":"c6a2","2697":"c6b2","2698":"c6c2","2699":"c6d2","2700":"c6e2","2701":"c6f2","2702":"c6g2","2703":"c6h2","2704":"c6a3","2705":"c6b3","2706":"c6c3","2707":"c6d3","2708":"c6e3","2709":"c6f3","2710":"c6g3","2711":"c6h3","2712":"c6a4","2713":"c6b4","2714":"c6c4","2715":"c6d4","2716":"c6e4","2717":"c6f4","2718"
2775:"c6g4","2719":"c6h4","2720":"c6a5","2721":"c6b5","2722":"c6c5","2723":"c6d5","2724":"c6e5","2725":"c6f5","2726":"c6g5","2727":"c6h5","2728":"c6a6","2729":"c6b6","2730":"c6c6","2731":"c6d6","2732":"c6e6","2733":"c6f6","2734":"c6g6","2735":"c6h6","2736":"c6a7","2737":"c6b7","2738":"c6c7","2739":"c6d7","2740":"c6e7","2741":"c6f7","2742":"c6g7","2743":"c6h7","2744":"c6a8","2745":"c6b8","2746":"c6c8","2747":"c6d8","2748":"c6e8","2749":"c6f8","2750":"c6g8","2751":"c6h8","2752":"d6a1","2753":"d6b1","2754":"d6c1","2755":"d6d1","2756":"d6e1","2757":"d6f1","2758":"d6g1","2759":"d6h1","2760":"d6a2","2761":"d6b2","2762":"d6c2","2763":"d6d2","2764":"d6e2","2765":"d6f2","2766":"d6g2","2767":"d6h2","2768":"d6a3","2769":"d6b3","2770":"d6c3","2771":"d6d3","2772":"d6e3","2773":"d6f3","2774":"d6g3","2775":"d6h3","2776":"d6a4","2777":"d6b4","2778":"d6c4","2779":"d6d4","2780":"d6e4","2781":"d6f4","2782":"d6g4","2783":"d6h4","2784":"d6a5","2785":"d6b5","2786":"d6c5","2787":"d6d5","2788":"d6e5","2789":"d6f5","2790":"d6g5","2791":"d6h5","2792":"d6a6","2793":"d6b6","2794":"d6c6","2795":"d6d6","2796":"d6e6","2797":"d6f6","2798":"d6g6","2799":"d6h6","2800":"d6a7","2801":"d6b7","2802":"d6c7","2803":"d6d7","2804":"d6e7","2805":"d6f7","2806":"d6g7","2807":"d6h7","2808":"d6a8","2809":"d6b8","2810":"d6c8","2811":"d6d8","2812":"d6e8","2813":"d6f8","2814":"d6g8","2815":"d6h8","2816":"e6a1","2817":"e6b1","2818":"e6c1","2819":"e6d1","2820":"e6e1","2821":"e6f1","2822":"e6g1","2823":"e6h1","2824":"e6a2","2825":"e6b2","2826":"e6c2","2827":"e6d2","2828":"e6e2","2829":"e6f2","2830":"e6g2","2831":"e6h2","2832":"e6a3","2833":"e6b3","2834":"e6c3","2835":"e6d3","2836":"e6e3","2837":"e6f3","2838":"e6g3","2839":"e6h3","2840":"e6a4","2841":"e6b4","2842":"e6c4","2843":"e6d4","2844":"e6e4","2845":"e6f4","2846":"e6g4","2847":"e6h4","2848":"e6a5","2849":"e6b5","2850":"e6c5","2851":"e6d5","2852":"e6e5","2853":"e6f5","2854":"e6g5","2855":"e6h5","2856":"e6a6","2857":"e6b6","2858":"e6c6","2859":"e6d6","2860":"e6e6","2861":"e6f6","2862":"e6g6","2863":"e6h6","2864":"e6
2775a7","2865":"e6b7","2866":"e6c7","2867":"e6d7","2868":"e6e7","2869":"e6f7","2870":"e6g7","2871":"e6h7","2872":"e6a8","2873":"e6b8","2874":"e6c8","2875":"e6d8","2876":"e6e8","2877":"e6f8","2878":"e6g8","2879":"e6h8","2880":"f6a1","2881":"f6b1","2882":"f6c1","2883":"f6d1","2884":"f6e1","2885":"f6f1","2886":"f6g1","2887":"f6h1","2888":"f6a2","2889":"f6b2","2890":"f6c2","2891":"f6d2","2892":"f6e2","2893":"f6f2","2894":"f6g2","2895":"f6h2","2896":"f6a3","2897":"f6b3","2898":"f6c3","2899":"f6d3","2900":"f6e3","2901":"f6f3","2902":"f6g3","2903":"f6h3","2904":"f6a4","2905":"f6b4","2906":"f6c4","2907":"f6d4","2908":"f6e4","2909":"f6f4","2910":"f6g4","2911":"f6h4","2912":"f6a5","2913":"f6b5","2914":"f6c5","2915":"f6d5","2916":"f6e5","2917":"f6f5","2918":"f6g5","2919":"f6h5","2920":"f6a6","2921":"f6b6","2922":"f6c6","2923":"f6d6","2924":"f6e6","2925":"f6f6","2926":"f6g6","2927":"f6h6","2928":"f6a7","2929":"f6b7","2930":"f6c7","2931":"f6d7","2932":"f6e7","2933":"f6f7","2934":"f6g7","2935":"f6h7","2936":"f6a8","2937":"f6b8","2938":"f6c8","2939":"f6d8","2940":"f6e8","2941":"f6f8","2942":"f6g8","2943":"f6h8","2944":"g6a1","2945":"g6b1","2946":"g6c1","2947":"g6d1","2948":"g6e1","2949":"g6f1","2950":"g6g1","2951":"g6h1","2952":"g6a2","2953":"g6b2","2954":"g6c2","2955":"g6d2","2956":"g6e2","2957":"g6f2","2958":"g6g2","2959":"g6h2","2960":"g6a3","2961":"g6b3","2962":"g6c3","2963":"g6d3","2964":"g6e3","2965":"g6f3","2966":"g6g3","2967":"g6h3","2968":"g6a4","2969":"g6b4","2970":"g6c4","2971":"g6d4","2972":"g6e4","2973":"g6f4","2974":"g6g4","2975":"g6h4","2976":"g6a5","2977":"g6b5","2978":"g6c5","2979":"g6d5","2980":"g6e5","2981":"g6f5","2982":"g6g5","2983":"g6h5","2984":"g6a6","2985":"g6b6","2986":"g6c6","2987":"g6d6","2988":"g6e6","2989":"g6f6","2990":"g6g6","2991":"g6h6","2992":"g6a7","2993":"g6b7","2994":"g6c7","2995":"g6d7","2996":"g6e7","2997":"g6f7","2998":"g6g7","2999":"g6h7","3000":"g6a8","3001":"g6b8","3002":"g6c8","3003":"g6d8","3004":"g6e8","3005":"g6f8","3006":"g6g8","3007":"g6h8","3008":"h6a1","3009":"h6b1","3010":"h6c1","3011":"h6d1","3012":"h6e1","3013":"h6f1","3014":"h6g1","3015":"h6h1","3016":"h6a2","3017":"h6b2","3018":"h6c2","3019":"h6d2","3020":"h6e2","3021":"h6f2","3022":"h6g2","3023":"h6h2","3024":"h6a3","3025":"h6b3","3026":"h6c3","3027":"h6d3","3028":"h6e3","3029":"h6f3","3030":"h6g3","3031":"h6h3","3032":"h6a4","3033":"h6b4","3034":"h6c4","3035":"h6d4","3036":"h6e4","3037":"h6f4","3038":"h6g4","3039":"h6h4","3040":"h6a5","3041":"h6b5","3042":"h6c5","3043":"h6d5","3044":"h6e5","3045":"h6f5","3046":"h6g5","3047":"h6h5","3048":"h6a6","3049":"h6b6","3050":"h6c6","3051":"h6d6","3052":"h6e6","3053":"h6f6","3054":"h6g6","3055":"h6h6","3056":"h6a7","3057":"h6b7","3058":"h6c7","3059":"h6d7","3060":"h6e7","3061":"h6f7","3062":"h6g7","3063":"h6h7","3064":"h6a8","3065":"h6b8","3066":"h6c8","3067":"h6d8","3068":"h6e8","3069":"h6f8","3070":"h6g8","3071":"h6h8","3072":"a7
2775a1","3073":"a7b1","3074":"a7c1","3075":"a7d1","3076":"a7e1","3077":"a7f1","3078":"a7g1","3079":"a7h1","3080":"a7a2","3081":"a7b2","3082":"a7c2","3083":"a7d2","3084":"a7e2","3085":"a7f2","3086":"a7g2","3087":"a7h2","3088":"a7a3","3089":"a7b3","3090":"a7c3","3091":"a7d3","3092":"a7e3","3093":"a7f3","3094":"a7g3","3095":"a7h3","3096":"a7a4","3097":"a7b4","3098":"a7c4","3099":"a7d4","3100":"a7e4","3101":"a7f4","3102":"a7g4","3103":"a7h4","3104":"a7a5","3105":"a7b5","3106":"a7c5","3107":"a7d5","3108":"a7e5","3109":"a7f5","3110":"a7g5","3111":"a7h5","3112":"a7a6","3113":"a7b6","3114":"a7c6","3115":"a7d6","3116":"a7e6","3117":"a7f6","3118":"a7g6","3119":"a7h6","3120":"a7a7","3121":"a7b7","3122":"a7c7","3123":"a7d7","3124":"a7e7","3125":"a7f7","3126":"a7g7","3127":"a7h7","3128":"a7a8","3129":"a7b8","3130":"a7c8","3131":"a7d8","3132":"a7e8","3133":"a7f8","3134":"a7g8","3135":"a7h8","3136":"b7a1","3137":"b7b1","3138":"b7c1","3139":"b7d1","3140":"b7e1","3141":"b7f1","3142":"b7g1","3143":"b7h1","3144":"b7a2","3145":"b7b2","3146":"b7c2","3147":"b7d2","3148":"b7e2","3149":"b7f2","3150":"b7g2","3151":"b7h2","3152":"b7a3","3153":"b7b3","3154":"b7c3","3155":"b7d3","3156":"b7e3","3157":"b7f3","3158":"b7g3","3159":"b7h3","3160":"b7a4","3161":"b7b4","3162":"b7c4","3163":"b7d4","3164":"b7e4","3165":"b7f4","3166":"b7g4","3167":"b7h4","3168":"b7a5","3169":"b7b5","3170":"b7c5","3171":"b7d5","3172":"b7e5","3173":"b7f5","3174":"b7g5","3175":"b7h5","3176":"b7a6","3177":"b7b6","3178":"b7c6","3179":"b7d6","3180":"b7e6","3181":"b7f6","3182":"b7g6","3183":"b7h6","3184":"b7a7","3185":"b7b7","3186":"b7c7","3187":"b7d7","3188":"b7e7","3189":"b7f7","3190":"b7g7","3191":"b7h7","3192":"b7a8","3193":"b7b8","3194":"b7c8","3195":"b7d8","3196":"b7e8","3197":"b7f8","3198":"b7g8","3199":"b7h8","3200":"c7a1","3201":"c7b1","3202":"c7c1","3203":"c7d1","3204":"c7e1","3205":"c7f1","3206":"c7g1","3207":"c7h1","3208":"c7a2","3209":"c7b2","3210":"c7c2","3211":"c7d2","3212":"c7e2","3213":"c7f2","3214":"c7g2","3215":"c7h2","3216":"c7a3","3217":"c7b3","3218":"c7c3","3219":"c7d3","3220":"c7e3","3221":"c7f3","3222":"c7g3","3223":"c7h3","3224":"c7a4","3225":"c7b4","3226":"c7c4","3227":"c7d4","3228":"c7e4","3229":"c7f4","3230":"c7g4","3231":"c7h4","3232":"c7a5","3233":"c7b5","3234":"c7c5","3235":"c7d5","3236":"c7e5","3237":"c7f5","3238":"c7g5","3239":"c7h5","3240":"c7a6","3241":"c7b6","3242":"c7c6","3243":"c7d6","3244":"c7e6","3245":"c7f6","3246":"c7g6","3247":"c7h6","3248":"c7a7","3249":"c7b7","3250":"c7c7","3251":"c7d7","3252":"c7e7","3253":"c7f7","3254":"c7g7","3255":"c7h7","3256":"c7a8","3257":"c7b8","3258":"c7c8","3259":"c7d8","3260":"c7e8","3261":"c7f8","3262":"c7g8","3263":"c7h8","3264":"d7a1","3265":"d7b1","3266":"d7c1","3267":"d7d1","3268":"d7e1","3269":"d7f1","3270":"d7g1","3271":"d7h1","3272":"d7a2","3273":"d7b2","3274":"d7c2","3275":"d7d2","3276":"d7e2","3277":"d7f2","3278":"d7g2","3279":"d7h2","3280":"d7a3","3281":"d7b3","3282":"d7c3","3283":"d7d3","3284":"d7e3","3285":"d7f3","3286":"d7g3","3287":"d7h3","3288":"d7a4","3289":"d7b4","3290":"d7c4","3291":"d7d4","3292":"d7e4","3293":"d7f4","3294":"d7g4","3295":"d7h4","3296":"d7a5","3297":"d7b5","3298":"d7c5","3299":"d7d5","3300":"d7e5","3301":"d7f5","3302":"d7g5","3303":"d7h5","3304":"d7a6","3305":"d7b6","3306":"d7c6","3307":"d7d6","3308":"d7e6","3309":"d7f6","3310":"d7g6","3311":"d7h6","3312":"d7a7","3313":"d7b7","3314":"d7c7","3315":"d7d7","3316":"d7e7","3317":"d7f7","3318":"d7g7","3319":"d7h7","3320":"d7a8","3321":"d7b8","3322":"d7c8","3323":"d7d8","3324":"d7e8","3325":"d7f8","3326":"d7g8","3327":"d7h8","3328":"e7a1","3329":"e7b1","3330":"e7c1","3331":"e7d1","3332":"e7e1","3333":"e7f1","3334":"e7g1","3335":"e7h1","3336":"e7a2","3337":"e7b2","3338":"e7c2","3339":"e7d2","3340":"e7e2","3341":"e7f2","3342":"e7g2","3343":"e7h2","3344":"e7a3","3345":"e7b3","3346":"e7c3","3347":"e7d3","3348":"e7e3","3349":"e7f3","3350":"e7g3","3351":"e7h3","3352":"e7a4","3353":"e7b4","3354":"e7c4","3355":"e7d4","3356":"e7e4","3357":"e7f4","3358":"e7g4","3359":"e7h4","3360":"e7a5","3361":"e7b5","3362":"e7c5","3363":"e7d5","3364":"e7e5","3365":"e7f5","3366":"e7g5","3367":"e7h5","3368":"e7a6","3369":"e7b6","3370":"e7c6","3371":"e7d6","3372":"e7e6","3373":"e7f6","3374":"e7g6","3375":"e7h6","3376":"e7a7","3377":"e7b7","3378":"e7c7","3379":"e7d7","3380":"e7e7","3381":"e7f7","3382":"e7g7","3383":"e7h7","3384":"e7a8","3385":"e7b8","3386":"e7c8","3387":"e7d8","3388":"e7e8","3389":"e7f8","3390":"e7g8","3391":"e7h8","3392":"f7a1","3393":"f7b1","3394":"f7c1","3395":"f7d1","3396":"f7e1","3397":"f7f1","3398":"f7g1","3399":"f7h1","3400":"f7a2","3401":"f7b2","3402":"f7c2","3403":"f7d2","3404":"f7e2","3405":"f7f2","3406":"f7g2","3407":"f7h2","3408":"f7a3","3409"
2775:"f7b3","3410":"f7c3","3411":"f7d3","3412":"f7e3","3413":"f7f3","3414":"f7g3","3415":"f7h3","3416":"f7a4","3417":"f7b4","3418":"f7c4","3419":"f7d4","3420":"f7e4","3421":"f7f4","3422":"f7g4","3423":"f7h4","3424":"f7a5","3425":"f7b5","3426":"f7c5","3427":"f7d5","3428":"f7e5","3429":"f7f5","3430":"f7g5","3431":"f7h5","3432":"f7a6","3433":"f7b6","3434":"f7c6","3435":"f7d6","3436":"f7e6","3437":"f7f6","3438":"f7g6","3439":"f7h6","3440":"f7a7","3441":"f7b7","3442":"f7c7","3443":"f7d7","3444":"f7e7","3445":"f7f7","3446":"f7g7","3447":"f7h7","3448":"f7a8","3449":"f7b8","3450":"f7c8","3451":"f7d8","3452":"f7e8","3453":"f7f8","3454":"f7g8","3455":"f7h8","3456":"g7a1","3457":"g7b1","3458":"g7c1","3459":"g7d1","3460":"g7e1","3461":"g7f1","3462":"g7g1","3463":"g7h1","3464":"g7a2","3465":"g7b2","3466":"g7c2","3467":"g7d2","3468":"g7e2","3469":"g7f2","3470":"g7g2","3471":"g7h2","3472":"g7a3","3473":"g7b3","3474":"g7c3","3475":"g7d3","3476":"g7e3","3477":"g7f3","3478":"g7g3","3479":"g7h3","3480":"g7a4","3481":"g7b4","3482":"g7c4","3483":"g7d4","3484":"g7e4","3485":"g7f4","3486":"g7g4","3487":"g7h4","3488":"g7a5","3489":"g7b5","3490":"g7c5","3491":"g7d5","3492":"g7e5","3493":"g7f5","3494":"g7g5","3495":"g7h5","3496":"g7a6","3497":"g7b6","3498":"g7c6","3499":"g7d6","3500":"g7e6","3501":"g7f6","3502":"g7g6","3503":"g7h6","3504":"g7a7","3505":"g7b7","3506":"g7c7","3507":"g7d7","3508":"g7e7","3509":"g7f7","3510":"g7g7","3511":"g7h7","3512":"g7a8","3513":"g7b8","3514":"g7c8","3515":"g7d8","3516":"g7e8","3517":"g7f8","3518":"g7g8","3519":"g7h8","3520":"h7a1","3521":"h7b1","3522":"h7c1","3523":"h7d1","3524":"h7e1","3525":"h7f1","3526":"h7g1","3527":"h7h1","3528":"h7a2","3529":"h7b2","3530":"h7c2","3531":"h7d2","3532":"h7e2","3533":"h7f2","3534":"h7g2","3535":"h7h2","3536":"h7a3","3537":"h7b3","3538":"h7c3","3539":"h7d3","3540":"h7e3","3541":"h7f3","3542":"h7g3","3543":"h7h3","3544":"h7a4","3545":"h7b4","3546":"h7c4","3547":"h7d4","3548":"h7e4","3549":"h7f4","3550":"h7g4","3551":"h7h4","3552":"h7a5","3553":"h7b5","3554":"h7c5","3555":"h7d5","3556":"h7e5","3557":"h7f5","3558":"h7g5","3559":"h7h5","3560":"h7a6","3561":"h7b6","3562":"h7c6","3563":"h7d6","3564":"h7e6","3565":"h7f6","3566":"h7g6","3567":"h7h6","3568":"h7a7","3569":"h7b7","3570":"h7c7","3571":"h7d7","3572":"h7e7","3573":"h7f7","3574":"h7g7","3575":"h7h7","3576":"h7a8","3577":"h7b8","3578":"h7c8","3579":"h7d8","3580":"h7e8","3581":"h7f8","3582":"h7g8","3583":"h7h8","3584":"a8a1","3585":"a8b1","3586":"a8c1","3587":"a8d1","3588":"a8e1","3589":"a8f1","3590":"a8g1","3591":"a8h1","3592":"a8a2","3593":"a8b2","3594":"a8c2","3595":"a8d2","3596":"a8e2","3597":"a8f2","3598":"a8g2","3599":"a8h2","3600":"a8a3","3601":"a8b3","3602":"a8c3","3603":"a8d3","3604":"a8e3","3605":"a8f3","3606":"a8g3","3607":"a8h3","3608":"a8a4","3609":"a8b4","3610":"a8c4","3611":"a8d4","3612":"a8e4","3613":"a8f4","3614":"a8g4","3615":"a8h4","3616":"a8a5","3617":"a8b5","3618":"a8c5","3619":"a8d5","3620":"a8e5","3621":"a8f5","3622":"a8g5","3623":"a8h5","3624":"a8a6","3625":"a8b6","3626":"a8c6","3627":"a8d6","3628":"a8e6","3629":"a8f6","3630":"a8g6","3631":"a8h6","3632":"a8a7","3633":"a8b7","3634":"a8c7","3635":"a8d7","3636":"a8e7","3637":"a8f7","3638":"a8g7","3639":"a8h7","3640":"a8a8","3641":"a8b8","3642":"a8c8","3643":"a8d8","3644":"a8e8","3645":"a8f8","3646":"a8g8","3647":"a8h8","3648":"b8a1","3649":"b8b1","3650":"b8c1","3651":"b8d1","3652":"b8e1","3653":"b8f1","3654":"b8g1","3655":"b8h1","3656":"b8a2","3657":"b8b2","3658":"b8c2","3659":"b8d2","3660":"b8e2","3661":"b8f2","3662":"b8g2","3663":"b8h2","3664":"b8a3","3665":"b8b3","3666":"b8c3","3667":"b8d3","3668":"b8e3","3669":"b8f3","3670":"b8g3","3671":"b8h3","3672":"b8a4","3673":"b8b4","3674":"b8c4","3675":"b8d4","3676":"b8e4","3677":"b8f4","3678":"b8g4","3679":"b8h4","3680":"b8a5","3681":"b8b5","3682":"b8c5","3683":"b8d5","3684":"b8e5","3685":"b8f5","3686":"b8g5","3687":"b8h5","3688":"b8a6","3689":"b8b6","3690":"b8c6","3691":"b8d6","3692":"b8e6","3693":"b8f6","3694":"b8g6","3695":"b8h6","3696":"b8a7","3697":"b8b7","3698":"b8c7","3699":"b8d7","3700":"b8e7","3701":"b8f7","3702":"b8g7","3703":"b8h7","3704":"b8a8","3705":"b8b8","3706":"b8c8","3707":"b8d8","3708":"b8e8","3709":"b8f8","3710":"b8g8","3711":"b8h8","3712":"c8a1","3713":"c8b1","3714":"c8c1","3715":"c8d1","3716":"c8e1","3717":"c8f1","3718":"c8g1","3719":"c8h1","3720":"c8a2","3721":"c8b2","3722":"c8c2","3723":"c8d2","3724":"c8e2","3725":"c8f2","3726":"c8g2","3727":"c8h2","3728":"c8a3","3729":"c8b3","3730":"c8c3","3731":"c8d3","3732":"c8e3","3733":"c8f3","3734":"c8g3","3735":"c8h3","3736":"c8a4","3737":"c8b4","3738":"c8c4","3739":"c8d4","3740":"c8e4","3741":"c8f4","3742":"c8g4","3743":"c8h4","3744":"c8a5","3745":"c8b5","3746":"c8c5","3747":"c8d5","3748":"c8e5","3749":"c8f5","3750":"c8g5","3751":"c8h5","3752":"c8a6","3753":"c8b6","3754":"c8c6","3755":"c8d6","3756":"c8e6","3757":"
2775c8f6","3758":"c8g6","3759":"c8h6","3760":"c8a7","3761":"c8b7","3762":"c8c7","3763":"c8d7","3764":"c8e7","3765":"c8f7","3766":"c8g7","3767":"c8h7","3768":"c8a8","3769":"c8b8","3770":"c8c8","3771":"c8d8","3772":"c8e8","3773":"c8f8","3774":"c8g8","3775":"c8h8","3776":"d8a1","3777":"d8b1","3778":"d8c1","3779":"d8d1","3780":"d8e1","3781":"d8f1","3782":"d8g1","3783":"d8h1","3784":"d8a2","3785":"d8b2","3786":"d8c2","3787":"d8d2","3788":"d8e2","3789":"d8f2","3790":"d8g2","3791":"d8h2","3792":"d8a3","3793":"d8b3","3794":"d8c3","3795":"d8d3","3796":"d8e3","3797":"d8f3","3798":"d8g3","3799":"d8h3","3800":"d8a4","3801":"d8b4","3802":"d8c4","3803":"d8d4","3804":"d8e4","3805":"d8f4","3806":"d8g4","3807":"d8h4","3808":"d8a5","3809":"d8b5","3810":"d8c5","3811":"d8d5","3812":"d8e5","3813":"d8f5","3814":"d8g5","3815":"d8h5","3816":"d8a6","3817":"d8b6","3818":"d8c6","3819":"d8d6","3820":"d8e6","3821":"d8f6","3822":"d8g6","3823":"d8h6","3824":"d8a7","3825":"d8b7","3826":"d8c7","3827":"d8d7","3828":"d8e7","3829":"d8f7","3830":"d8g7","3831":"d8h7","3832":"d8a8","3833":"d8b8","3834":"d8c8","3835":"d8d8","3836":"d8e8","3837":"d8f8","3838":"d8g8","3839":"d8h8","3840":"e8a1","3841":"e8b1","3842":"e8c1","3843":"e8d1","3844":"e8e1","3845":"e8f1","3846":"e8g1","3847":"e8h1","3848":"e8a2","3849":"e8b2","3850":"e8c2","3851":"e8d2","3852":"e8e2","3853":"e8f2","3854":"e8g2","3855":"e8h2","3856":"e8a3","3857":"e8b3","3858":"e8c3","3859":"e8d3","3860":"e8e3","3861":"e8f3","3862":"e8g3","3863":"e8h3","3864":"e8a4","3865":"e8b4","3866":"e8c4","3867":"e8d4","3868":"e8e4","3869":"e8f4","3870":"e8g4","3871":"e8h4","3872":"e8a5","3873":"e8b5","3874":"e8c5","3875":"e8d5","3876":"e8e5","3877":"e8f5","3878":"e8g5","3879":"e8h5","3880":"e8a6","3881":"e8b6","3882":"e8c6","3883":"e8d6","3884":"e8e6","3885":"e8f6","3886":"e8g6","3887":"e8h6","3888":"e8a7","3889":"e8b7","3890":"e8c7","3891":"e8d7","3892":"e8e7","3893":"e8f7","3894":"e8g7","3895":"e8h7","3896":"e8a8","3897":"e8b8","3898":"e8c8","3899":"e8d8","3900":"e8e8","3901":"e8f8","3902":"e8g8","3903":"e8h8","3904":"f8a1","3905":"f8b1","3906":"f8c1","3907":"f8d1","3908":"f8e1","3909":"f8f1","3910":"f8g1","3911":"f8h1","3912":"f8a2","3913":"f8b2","3914":"f8c2","3915":"f8d2","3916":"f8e2","3917":"f8f2","3918":"f8g2","3919":"f8h2","3920":"f8a3","3921":"f8b3","3922":"f8c3","3923":"f8d3","3924":"f8e3","3925":"f8f3","3926":"f8g3","3927":"f8h3","3928":"f8a4","3929":"f8b4","3930":"f8c4","3931":"f8d4","3932":"f8e4","3933":"f8f4","3934":"f8g4","3935":"f8h4","3936":"f8a5","3937":"f8b5","3938":"f8c5","3939":"f8d5","3940":"f8e5","3941":"f8f5","3942":"f8g5","3943":"f8h5","3944":"f8a6","3945":"f8b6","3946":"f8c6","3947":"f8d6","3948":"f8e6","3949":"f8f6","3950":"f8g6","3951":"f8h6","3952":"f8a7","3953":"f8b7","3954":"f8c7","3955":"f8d7","3956":"f8e7","3957":"f8f7","3958":"f8g7","3959":"f8h7","3960":"f8a8","3961":"f8b8","3962":"f8c8","3963":"f8d8","3964":"f8e8","3965":"f8f8","3966":"f8g8","3967":"f8h8","3968":"g8a1","3969":"g8b1","3970":"g8c1","3971":"g8d1","3972":"g8e1","3973":"g8f1","3974":"g8g1","3975":"g8h1","3976":"g8a2","3977":"g8b2","3978":"g8c2","3979":"g8d2","3980":"g8e2","3981":"g8f2","3982":"g8g2","3983":"g8h2","3984":"g8a3","3985":"g8b3","3986":"g8c3","3987":"g8d3","3988":"g8e3","3989":"g8f3","3990":"g8g3","3991":"g8h3","3992":"g8a4","3993":"g8b4","3994":"g8c4","3995":"g8d4","3996":"g8e4","3997":"g8f4","3998":"g8g4","3999":"g8h4","4000":"g8a5","4001":"g8b5","4002":"g8c5","4003":"g8d5","4004":"g8e5","4005":"g8f5","4006":"g8g5","4007":"g8h5","4008":"g8a6","4009":"g8b6","4010":"g8c6","4011":"g8d6","4012":"g8e6","4013":"g8f6","4014":"g8g6","4015":"g8h6","4016":"g8a7","4017":"g8b7","4018":"g8c7","4019":"g8d7","4020":"g8e7","4021":"g8f7","4022":"g8g7","4023":"g8h7","4024":"g8a8","4025":"g8b8","4026":"g8c8","4027":"g8d8","4028":"g8e8","4029":"g8f8","4030":"g8g8","4031":"g8h8","4032":"h8a1","4033":"h8b1","4034":"h8c1","4035":"h8d1","4036":"h8e1","4037":"h8f1","4038":"h8g1","4039":"h8h1","4040":"h8a2","4041":"h8b2","4042":"h8c2","4043":"h8d2","4044":"h8e2","4045":"h8f2","4046":"h8g2","4047":"h8h2","4048":"h8a3","4049":"h8b3","4050":"h8c3","4051":"h8d3","4052":"h8e3","4053":"h8f3","4054":"h8g3","4055":"h8h3","4056":"h8a4","4057":"h8b4","4058":"h8c4","4059":"h8d4","4060":"h8e4","4061":"h8f4","4062":"h8g4","4063":"h8h4","4064":"h8a5","4065":"h8b5","4066":"h8c5","4067":"h8d5","4068":"h8e5","4069":"h8f5","4070":"h8g5","4071":"h8h5","4072":"h8a6","4073":"h8b6","4074":"h8c6","4075":"h8d6","4076":"h8e
27756","4077":"h8f6","4078":"h8g6","4079":"h8h6","4080":"h8a7","4081":"h8b7","4082":"h8c7","4083":"h8d7","4084":"h8e7","4085":"h8f7","4086":"h8g7","4087":"h8h7","4088":"h8a8","4089":"h8b8","4090":"h8c8","4091":"h8d8","4092":"h8e8","4093":"h8f8","4094":"h8g8","4095":"h8h8","4096":"a7a8q","4097":"a7a8r","4098":"a7a8b","4099":"a7a8n","4100":"a7b8q","4101":"a7b8r","4102":"a7b8b","4103":"a7b8n","4104":"a7c8q","4105":"a7c8r","4106":"a7c8b","4107":"a7c8n","4108":"a7d8q","4109":"a7d8r","4110":"a7d8b","4111":"a7d8n","4112":"a7e8q","4113":"a7e8r","4114":"a7e8b","4115":"a7e8n","4116":"a7f8q","4117":"a7f8r","4118":"a7f8b","4119":"a7f8n","4120":"a7g8q","4121":"a7g8r","4122":"a7g8b","4123":"a7g8n","4124":"a7h8q","4125":"a7h8r","4126":"a7h8b","4127":"a7h8n","4128":"b7a8q","4129":"b7a8r","4130":"b7a8b","4131":"b7a8n","4132":"b7b8q","4133":"b7b8r","4134":"b7b8b","4135":"b7b8n","4136":"b7c8q","4137":"b7c8r","4138":"b7c8b","4139":"b7c8n","4140":"b7d8q","4141":"b7d8r","4142":"b7d8b","4143":"b7d8n","4144":"b7e8q","4145":"b7e8r","4146":"b7e8b","4147":"b7e8n","4148":"b7f8q","4149":"b7f8r","4150":"b7f8b","4151":"b7f8n","4152":"b7g8q","4153":"b7g8r","4154":"b7g8b","4155":"b7g8n","4156":"b7h8q","4157":"b7h8r","4158":"b7h8b","4159":"b7h8n","4160":"c7a8q","4161":"c7a8r","4162":"c7a8b","4163":"c7a8n","4164":"c7b8q","4165":"c7b8r","4166":"c7b8b","4167":"c7b8n","4168":"c7c8q","4169":"c7c8r","4170":"c7c8b","4171":"c7c8n","4172":"c7d8q","4173":"c7d8r","4174":"c7d8b","4175":"c7d8n","4176":"c7e8q","4177":"c7e8r","4178":"c7e8b","4179":"c7e8n","4180":"c7f8q","4181":"c7f8r","4182":"c7f8b","4183":"c7f8n","4184":"c7g8q","4185":"c7g8r","4186":"c7g8b","4187":"c7g8n","4188":"c7h8q","4189":"c7h8r","4190":"c7h8b","4191":"c7h8n","4192":"d7a8q","4193":"d7a8r","4194":"d7a8b","4195":"d7a8n","4196":"d7b8q","4197":"d7b8r","4198":"d7b8b","4199":"d7b8n","4200":"d7c8q","4201":"d7c8r","4202":"d7c8b","4203":"d7c8n","4204":"d7d8q","4205":"d7d8r","4206":"d7d8b","4207":"d7d8n","4208":"d7e8q","4209":"d7e8r","4210":"d7e8b","4211":"d7e8n","4212":"d7f8q","4213":"d7f8r","4214":"d7f8b","4215":"d7f8n","4216":"d7g8q","4217":"d7g8r","4218":"d7g8b","4219":"d7g8n","4220":"d7h8q","4221":"d7h8r","4222":"d7h8b","4223":"d7h8n","4224":"e7a8q","4225":"e7a8r","4226":"e7a8b","4227":"e7a8n","4228":"e7b8q","4229":"e7b8r","4230":"e7b8b","4231":"e7b8n","4232":"e7c8q","4233":"e7c8r","4234":"e7c8b","4235":"e7c8n","4236":"e7d8q","4237":"e7d8r","4238":"e7d8b","4239":"e7d8n","4240":"e7e8q","4241":"e7e8r","4242":"e7e8b","4243":"e7e8n","4244":"e7f8q","4245":"e7f8r","4246":"e7f8b","4247":"e7f8n","4248":"e7g8q","4249":"e7g8r","4250":"e7g8b","4251":"e7g8n","4252":"e7h8q","4253":"e7h8r","4254":"e7h8b","4255":"e7h8n","4256":"f7a8q","4257":"f7a8r","4258":"f7a8b","4259":"f7a8n","4260":"f7b8q","4261":"f7b8r","4262":"f7b8b","4263":"f7b8n","4264":"f7c8q","4265":"f7c8r","4266":"f7c8b","4267":"f7c8n","4268":"f7d8q","4269":"f7d8r","4270":"f7d8b","4271":"f7d8n","4272":"f7e8q","4273":"f7e8r","4274":"f7e8b","4275":"f7e8n","4276":"f7f8q","4277":"f7f8r","4278":"f7f8b","4279":"f7f8n","4280":"f7g8q","4281":"f7g8r","4282":"f7g8b","4283":"f7g8n","4284":"f7h8q","4285":"f7h8r","4286":"f7h8b","4287":"f7h8n","4288":"g7a8q","4289":"g7a8r","4290":"g7a8b","4291":"g7a8n","4292":"g7b8q","4293":"g7b8r","4294":"g7b8b","4295":"g7b8n","4296":"g7c8q","4297":"g7c8r","4298":"g7c8b","4299":"g7c8n","4300":"g7d8q","4301":"g7d8r","4302":"g7d8b","4303":"g7d8n","4304":"g7e8q","4305":"g7e8r","4306":"g7e8b","4307":"g7e8n","4308":"g7f8q","4309":"g7f8r","4310":"g7f8b","4311":"g7f8n","4312":"g7g8q","4313":"g7g8r","4314":"g7g8b","4315":"g7g8n","4316":"g7h8q","4317":"g7h8r","4318":"g7h8b","4319":"g7h8n","4320":"h7a8q","4321":"h7a8r","4322":"h7a8b","4323":"h7a8n","4324":"h7b8q","4325":"h7b8r","4326":"h7b8b","4327":"h7b8n","4328":"h7c8q","4329":"h7c8r","4330":"h7c8b","4331":"h7c8n","4332":"h7d8q","4333":"h7d8r","4334":"h7d8b","4335":"h7d8n","4336":"h7e8q","4337":"h7e8r","4338":"h7e8b","4339":"h7e8n","4340":"h7f8q","4341":"h7f8r","4342":"h7f8b","4343":"h7f8n","4344":"h7g8q","4345":"h7g8r","4346":"h7g8b","4347":"h7g8n","4348":"h7h8q","4349":"h7h8r","4350":"h7h8b","4351":"h7h8n"}');function on(t){return t.charAt(0)+(9-parseInt(t.charAt(1))).toString()}function os(t){let r=new or.d$(t);if("b"===t.split(" ")[1])r=new or.d$(function(t){let[r,i,a,n,s,o]=t.split(" "),l=r.split("/").slice().reverse().map(t=>(function(t){let r="";for(let i of t)/[A-Z]/.test(i)?r+=i.toLowerCase():/[a-z]/.test(i)?r+=i.toUpperCase():r+=i;return r})(t)).join("/"),u=function(t){if("-"===t)return"-";let r=new Set(t.split("")),i=new Set;r.has("K")&&i.add("k"),r.has("Q")&&i.add("q"),r.has("k")&&i.add("K"),r.has("q")&&i.add("Q");let a="";return i.has("K")&&(a+="K"),i.has("Q")&&(a+="Q"),i.has("k")&&(a+="k"),i.has("q")&&(a+="q"),""===a?"-":a}(a),d="-"!==n?on(n):"-";
2775return"".concat(l," ").concat("w"===i?"b":"w"," ").concat(u," ").concat(d," ").concat(s," ").concat(o)}(r.fen()));else if("w"!==t.split(" ")[1])throw Error("Invalid FEN: ".concat(t));let i=function(t){let r=t.split(" ")[0],i=["P","N","B","R","Q","K","p","n","b","r","q","k"],a=new Float32Array(768),n=r.split("/");for(let t=0;t<8;t++){let r=7-t,s=0;for(let o of n[t])if(isNaN(parseInt(o))){let t=i.indexOf(o);t>=0&&(a[12*(8*r+s)+t]=1),s+=1}else s+=parseInt(o)}return a}(r.fen()),a=new Float32Array(Object.keys(oi).length);for(let t of r.moves({verbose:!0})){let r=t.promotion?t.promotion:"",i=oi[t.from+t.to+r];void 0!==i&&(a[i]=1)}return{boardTokens:i,legalMoves:a}}!function(){let t={["<".concat(1100)]:0},r=1;for(let i=1100;i<2e3;i+=100){let a=i+100;t["".concat(i,"-").concat(a-1)]=r,r+=1}t[">=".concat(2e3)]=r}();var oo=i(57076);class ol{initialize(t,r){"undefined"!=typeof Worker&&(this.worker=new Worker("/maia-worker.js"),this.worker.onmessage=t=>{var r,i;let a=t.data;switch(a.type){case"status":this.options.setStatus(a.status),"ready"===a.status&&(this.options.setProgress(100),null==(r=this.pendingDownload)||r.resolve(),this.pendingDownload=null,this.downloadPromise=null);break;case"progress":this.options.setProgress(a.progress);break;case"error":if(void 0!==a.id){let t=this.pendingInferences.get(a.id);t&&(t.reject(Error(a.message)),this.pendingInferences.delete(a.id))}else this.options.setError(a.message),this.options.setStatus("error"),null==(i=this.pendingDownload)||i.reject(Error(a.message)),this.pendingDownload=null,this.downloadPromise=null;break;case"inference-result":{let t=this.pendingInferences.get(a.id);t&&(t.resolve({logitsMove:new Float32Array(a.logitsMove),logitsValue:new Float32Array(a.logitsValue)}),this.pendingInferences.delete(a.id))}}},this.worker.onerror=t=>{var r;console.error("Maia worker error:",t);let i=Error(t.message||"Worker crashed");this.options.setError(i.message),this.options.setStatus("error"),null==(r=this.pendingDownload)||r.reject(i),this.pendingDownload=null,this.downloadPromise=null},this.worker.postMessage({type:"init",modelUrl:t,modelVersion:r}))}async downloadModel(){if(!this.worker)throw Error("Worker not initialized");return this.downloadPromise||(this.options.setProgress(0),this.downloadPromise=new Promise((t,r)=>{this.pendingDownload={resolve:t,reject:r},this.worker.postMessage({type:"download"})})),this.downloadPromise}async getStorageInfo(){return await this.storage.getStorageInfo()}async clearStorage(){return await this.storage.clearAllStorage()}runInference(t,r,i,a){if(!this.worker)return Promise.reject(Error("Worker not initialized"));let n=this.nextRequestId++;return new Promise((s,o)=>{this.pendingInferences.set(n,{resolve:s,reject:o}),this.worker.postMessage({type:"inference",id:n,tokens:t.buffer,eloSelfs:r.buffer,eloOppos:i.buffer,batchSize:a},[t.buffer,r.buffer,i.buffer])})}async evaluateMaia3(t,r,i){let{boardTokens:a,legalMoves:n}=os(t),{logitsMove:s,logitsValue:o}=await this.runInference(a,Float32Array.from([r]),Float32Array.from([i]),1);return ou(t,new T("float32",s,[s.length]),new T("float32",o,[o.length]),n)}async batchEvaluateMaia3(t,r,i){let a=t.length,n=[],s=[];for(let r=0;r<a;r++){let{boardTokens:i,legalMoves:a}=os(t[r]);n.push(i),s.push(a)}let o=new Float32Array(64*a*12);for(let t=0;t<a;t++)o.set(n[t],64*t*12);let l=performance.now(),{logitsMove:u,logitsValue:d}=await this.runInference(o,Float32Array.from(r),Float32Array.from(i),a),c=performance.now(),h=[];for(let r=0;r<a;r++){let i=4352*r,a=u.slice(i,i+4352),n=new T("float32",a,[4352]),o=3*r,l=d.slice(o,o+3),c=new T("float32",l,[3]),{policy:f,value:p}=ou(t[r],n,c,s[r]);h.push({policy:f,value:p})}return{result:h,time:c-l}}constructor(t){this.worker=null,this.pendingInferences=new Map,this.pendingDownload=null,this.downloadPromise=null,this.nextRequestId=0,this.options=t,this.storage=new oo.l,this.initialize(t.model,t.modelVersion)}}function ou(t,r,i,a){let n=r.data,s=i.data,o=Math.max(s[0],s[1],s[2]),l=Math.exp(s[0]-o),u=Math.exp(s[1]-o),d=Math.exp(s[2]-o),c=(d+.5*u)/(l+u+d),h=!1;"b"===t.split(" ")[1]&&(h=!0,c=1-c),c=Math.round(1e4*c)/1e4;let f=a.map((t,r)=>t>0?r:-1).filter(t=>-1!==t),p=[];for(let t of f){let r=oa[t];h&&(r=function(t){let r=t.length>4,i=t.substring(0,2),a=t.substring(2,4),n=r?t.substring(4):"";return on(i)+on(a)+n}(r)),p.push(r)}let m=f.map(t=>n[t]),g=Math.max(...m),b=m.map(t=>Math.exp(t-g)),y=b.reduce((t,r)=>t+r,0),v=b.map(t=>t/y),_={};for(let t=0;t<f.length;t++)_[p[t]]=v[t];return{policy:Object.keys(_).sort((t,r)=>_[r]-_[t]).reduce((t,r)=>(t[r]=_[r],t),{}),value:c}}var od=i(14232),oc=i(97685),oh=i(65364);let of=od.createContext({maia:void 0,status:"loading",progress:0,downloadModel:async()=>{throw Error("poorly provided MaiaEngineContext, missing downloadModel")}}),op=t=>{let{children:r}
2775=t,[i,a]=(0,od.useState)("loading"),[n,s]=(0,od.useState)(0),[o,l]=(0,od.useState)(null),u=(0,od.useRef)(null),d=(0,od.useRef)(null),c=(0,od.useMemo)(()=>{var t,r;return new ol({model:null!=(t=oh.env.NEXT_PUBLIC_MAIA_MODEL_URL)?t:"/maia3/maia3_simplified.onnx",modelVersion:null!=(r=oh.env.NEXT_PUBLIC_MAIA_MODEL_VERSION)?r:"3",setStatus:a,setProgress:s,setError:l})},[]),h=(0,od.useCallback)(async()=>{try{a("downloading"),await c.downloadModel()}catch(t){l(t instanceof Error?t.message:"Failed to download model"),a("error")}},[c]);return(0,od.useCallback)(async()=>await c.getStorageInfo(),[c]),(0,od.useCallback)(async()=>await c.clearStorage(),[c]),(0,od.useEffect)(()=>()=>{null!==d.current&&(window.clearTimeout(d.current),d.current=null),u.current&&(oc.Ay.dismiss(u.current),u.current=null)},[]),(0,od.useEffect)(()=>{if("loading"===i){if(u.current||null!==d.current)return;d.current=window.setTimeout(()=>{d.current=null,u.current||(u.current=oc.Ay.loading("Loading Maia..."))},800);return}if(null!==d.current&&(window.clearTimeout(d.current),d.current=null),"no-cache"===i||"downloading"===i){u.current&&(oc.Ay.dismiss(u.current),u.current=null);return}if("ready"===i)u.current&&(oc.Ay.success("Loaded Maia! Analysis is ready",{id:u.current}),u.current=null);else if("error"===i){let t=o?"Failed to load Maia model: ".concat(o):"Failed to load Maia model";u.current?(oc.Ay.error(t,{id:u.current}),u.current=null):oc.Ay.error(t)}},[i,o]),(0,z.jsx)(of.Provider,{value:{maia:c,status:i,progress:n,downloadModel:h},children:r})}},10223:(t,r,i)=>{"use strict";i.d(r,{v:()=>n});var a=i(40215);class n{constructor(){this.subscriptions=[]}add(t){return(0,a.Kq)(this.subscriptions,t),()=>(0,a.Ai)(this.subscriptions,t)}notify(t,r,i){let a=this.subscriptions.length;if(a)if(1===a)this.subscriptions[0](t,r,i);else for(let n=0;n<a;n++){let a=this.subscriptions[n];a&&a(t,r,i)}}getSize(){return this.subscriptions.length}clear(){this.subscriptions.length=0}}},11391:(t,r,i)=>{"use strict";i.d(r,{Z:()=>l,t:()=>u});var a=i(37876),n=i(14232),s=i(88593);let o=(0,n.createContext)(void 0),l=t=>{let{children:r}
2775=t,[i,l]=(0,n.useState)(()=>(0,s.h_)());return(0,n.useEffect)(()=>{document.body.className=document.body.className.replace(/theme-\w+/g,""),document.body.classList.add("theme-".concat(i.chessboardTheme))},[]),(0,n.useEffect)(()=>{let t=t=>{if("maia-user-settings"===t.key&&t.newValue)try{let r=JSON.parse(t.newValue);l(r)}catch(t){console.warn("Failed to sync settings from storage change:",t)}};return window.addEventListener("storage",t),()=>window.removeEventListener("storage",t)},[]),(0,a.jsx)(o.Provider,{value:{settings:i,updateSetting:(t,r)=>{let a={...i,[t]:r};l(a),(0,s.uT)(a),"chessboardTheme"===t&&(document.body.className=document.body.className.replace(/theme-\w+/g,""),document.body.classList.add("theme-".concat(r)))},resetSettings:()=>{let t={soundEnabled:!0,chessboardTheme:"brown"};l(t),(0,s.uT)(t)}},children:r})},u=()=>{let t=(0,n.useContext)(o);if(void 0===t)throw Error("useSettings must be used within a SettingsProvider");return t}},11614:(t,r,i)=>{"use strict";i.d(r,{y:()=>o});var a=i(5897),n=i(28670),s=i(12562);let o={test:t=>s.B.test(t)||a.u.test(t)||n.V.test(t),parse:t=>s.B.test(t)?s.B.parse(t):n.V.test(t)?n.V.parse(t):a.u.parse(t),transform:t=>"string"==typeof t?t:t.hasOwnProperty("red")?s.B.transform(t):n.V.transform(t)}},12152:(t,r,i)=>{"use strict";i.d(r,{M:()=>O,Z:()=>M});var a=i(37876),n=i(14232),s=i(97685),o=i(36500),l=i(32711),u=i(88831);class d{async openDB(){return"undefined"==typeof indexedDB?null:this.db?this.db:new Promise((t,r)=>{let i=indexedDB.open(this.dbName,this.version);i.onerror=()=>r(i.error),i.onsuccess=()=>{this.db=i.result,t(i.result)},i.onupgradeneeded=t=>{let r=t.target.result;r.objectStoreNames.contains(this.storeName)||r.createObjectStore(this.storeName,{keyPath:"id"}).createIndex("timestamp","timestamp",{unique:!1})}})}async getModel(t){try{let r=await this.openDB();if(!r)return null;let i=r.transaction([this.storeName],"readonly").objectStore(this.storeName),a=await new Promise((r,a)=>{let n=i.get(t);n.onsuccess=()=>r(n.result||null),n.onerror=()=>a(n.error)});if(!a)return null;if(a.url!==t)return await this.deleteModel(t),null;return a.data.arrayBuffer()}catch(t){return console.warn("Stockfish cache read failed:",t),null}}async storeModel(t,r){try{let i=await this.openDB();if(!i)return;let a=i.transaction([this.storeName],"readwrite").objectStore(this.storeName),n={id:t,url:t,data:new Blob([r]),timestamp:Date.now(),size:r.byteLength};await new Promise((t,r)=>{let i=a.put(n);i.onsuccess=()=>t(),i.onerror=()=>r(i.error)})}catch(t){console.warn("Stockfish cache write failed:",t)}}async deleteModel(t){try{let r=await this.openDB();if(!r)return;let i=r.transaction([this.storeName],"readwrite").objectStore(this.storeName);await new Promise((r,a)=>{let n=i.delete(t);n.onsuccess=()=>r(),n.onerror=()=>a(n.error)})}catch(t){console.warn("Stockfish cache delete failed:",t)}}async requestPersistentStorage(){try{if("undefined"!=typeof navigator&&"storage"in navigator&&"persist"in navigator.storage)return navigator.storage.persist();return!1}catch(t){return console.warn("Failed to request persistent storage:",t),!1}}constructor(){this.dbName="StockfishModels",this.storeName="models",this.version=1,this.db=null}}var c=i(65364);class h{get ready(){return this.isReady&&null!==this.stockfish&&this.nnueLoaded}get initializationError(){return this.initError}get initializing(){return this.initInFlight}get initializationPhase(){return this.initPhase}async *streamEvaluations(t,r){let a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:18,n=arguments.length>3?arguments[3]:void 0;if(this.stockfish&&this.isReady){void 0!==i.g&&"function"==typeof i.g.gc&&i.g.gc(),this.stopEvaluation(),this.store={},this.legalMoveCount=r;let s=new l.d$(t);this.moves=s.moves({verbose:!0}).map(t=>t.from+t.to+(t.promotion||"")),this.fen=t,this.currentPositionId=t+"_"+Date.now(),this.isEvaluating=!0,this.currentTargetDepth=a,this.currentAnalysisStartedAtMs=Date.now(),this.evaluationGenerator=this.createEvaluationGenerator();let o=this.resolveMoveMapStrategy(n);this.currentMoveMapStrategy=o,this.currentDiagnosticsToConsole=this.resolveDiagnosticsToConsole();let u=Array.from(new Set((null==n?void 0:n.maiaCandidateMoves)||[])).filter(t=>this.moves.includes(t)),d=Array.from(new Set((null==n?void 0:n.forcedCandidateMoves)||[])).filter(t=>this.moves.includes(t)),c=Object.fromEntries(Object.entries((null==n?void 0:n.maiaPolicy)||{}).filter(t=>{let[r,i]=t;return this.moves.includes(r)&&Number.isFinite(i)})),h=Number.isFinite(null==n?void 0:n.kSf)?Math.max(1,Math.floor((null==n?void 0:n.kSf)||1)):void 0,f={positionId:this.currentPositionId,fen:t,legalMoves:[...this.moves],legalMoveCount:this.legalMoveCount,maiaCandidateMoves:u,forcedCandidateMoves:d,maiaPolicy:c,kSf:h||0,targetDepth:a,analysisStartedAtMs:this.currentAnalysisStartedAtMs,diagnosticsToConsole:this.currentDiagnosticsToConsole};if("searchmoves-all"===o&&f.legalMoves.length>0)try{yield*this.streamEvaluationsSearchmovesAll(f);return}
2775catch(t){if(console.warn("Searchmoves-all Stockfish analysis failed, falling back to MultiPV-all:",t),this.store={},!this.isActiveRun(f.positionId))return}if("staged-root-probe"===o&&f.legalMoves.length>0)try{yield*this.streamEvaluationsStaged(f);return}catch(t){if(console.warn("Staged Stockfish move-map analysis failed, falling back to MultiPV-all:",t),this.store={},!this.isActiveRun(f.positionId))return}for(this.sendMessage("ucinewgame"),this.sendMessage("position fen ".concat(t)),this.sendMessage("go depth ".concat(a));this.isActiveRun(f.positionId);)try{let t=await this.getNextEvaluation();if(t)yield t;else break}catch(t){console.error("Error in evaluation stream:",t);break}}}async getNextEvaluation(){return new Promise((t,r)=>{this.evaluationResolver=t,this.evaluationRejecter=r})}createEvaluationGenerator(){return null}sendMessage(t){this.stockfish&&this.stockfish.uci(t)}isActiveRun(t){return this.isEvaluating&&this.currentPositionId===t}async waitForReady(){if(this.stockfish)return new Promise(t=>{if(!this.stockfish)return void t();let r=!1,i=this.stockfish.listen,a=a=>{a.includes("readyok")&&!r?(r=!0,this.stockfish&&(this.stockfish.listen=i),t()):i(a)};this.stockfish.listen=a,this.stockfish.uci("isready")})}resolveMoveMapStrategy(t){let r=null==t?void 0:t.moveMapStrategy,i=null;try{var a;i=null!=(a=window.localStorage.getItem("maia.stockfishMoveMapStrategy"))?a:window.localStorage.getItem("stockfishMoveMapStrategy")}catch(t){i=null}let n=r||i||c.env.NEXT_PUBLIC_STOCKFISH_MOVE_MAP_STRATEGY||"staged-root-probe";return"staged-root-probe"===n?"staged-root-probe":"searchmoves-all"===n?"searchmoves-all":"staged-root-probe"}resolveDiagnosticsToConsole(){try{var t;let r=null!=(t=window.localStorage.getItem("maia.stockfishDiagnostics"))?t:window.localStorage.getItem("stockfishDiagnostics");if(r)return["1","true","yes","on"].includes(r.toLowerCase())}catch(t){}let r=c.env.NEXT_PUBLIC_STOCKFISH_DIAGNOSTICS;return!!r&&["1","true","yes","on"].includes(r.toLowerCase())}getRootProbePlan(t,r){let i=Math.max(4,Math.min(10,t-6));return i>=t&&(i=Math.max(1,t-2)),{screeningDepth:i}}async *streamMultiPvSnapshots(t,r,i){if(!this.stockfish||i<=0)return;let a=Math.max(1,Math.min(i,t.legalMoveCount)),n=this.stockfish,s=n.listen;if(await this.waitForReady(),!this.isActiveRun(t.positionId)||(n.uci("setoption name MultiPV value ".concat(a)),await this.waitForReady(),!this.isActiveRun(t.positionId)))return;let o=Date.now(),u="b"===new l.d$(t.fen).turn(),d={},c=0,h=[],f=null,p=!1,m=()=>{if(!p&&(p=!0,f)){let t=f;f=null,t(null)}},g=t=>{let r=d[t];if(!r||t<=c)return;let i=[];for(let t=1;t<=a;t++){let a=r[t];if(!a)return;i.push({move:a.move,cp:a.cp,depth:a.depth,mateIn:a.mateIn})}c=t,(t=>{if(f){let r=f;f=null,r(t);return}h.push(t)})({depth:t,elapsedMs:Date.now()-o,moves:i})},b=r=>{var i,n;let s;if(!r.startsWith("info "))return;let o=r.match(/\bdepth (\d+)\b/),l=r.match(/\bmultipv (\d+)\b/),c=r.match(/\bscore (?:cp (-?\d+)|mate (-?\d+))(?: (upperbound|lowerbound))?\b/);if(!o||!l||!c)return;let h=Number.parseInt(l[1],10);if(h<1||h>a)return;let f=r.match(/\bpv ((?:\S+\s*)+)$/),p=null==f||null==(i=f[1])?void 0:i.trim().split(/\s+/)[0];if(!p||!t.legalMoves.includes(p))return;let m=Number.parseInt(c[1],10),b=Number.parseInt(c[2],10);if(!Number.isFinite(m)&&Number.isFinite(b)&&(s=b,m=b>0?1e4:-1e4),!Number.isFinite(m))return;u&&(m*=-1);let y=Number.parseInt(o[1],10),v={move:p,cp:m,depth:y,mateIn:s,isBound:!!c[3],multipv:h};d[y]||(d[y]={}),n=d[y][h],(!n||(v.depth!==n.depth?v.depth>n.depth:n.isBound===v.isBound||n.isBound&&!v.isBound))&&(d[y][h]=v),g(y)};try{for(n.listen=r=>{if(!this.isActiveRun(t.positionId))return void m();for(let t of r.split(/\r?\n/).map(t=>t.trim()).filter(Boolean))if(b(t),t.startsWith("bestmove ")){for(let t of Object.keys(d).map(t=>Number.parseInt(t,10)).filter(t=>Number.isFinite(t)).sort((t,r)=>t-r))g(t);m();return}},n.uci("position fen ".concat(t.fen)),n.uci("go depth ".concat(r));;){this.isActiveRun(t.positionId)||m();let r=h.length>0?h.shift()||null:await new Promise(t=>{p?t(null):f=t});if(!r)break;yield r}}finally{this.stockfish&&(this.stockfish.listen=s,this.stockfish.uci("setoption name MultiPV value 100"))}}async *streamEvaluationsStaged(t){if(this.stockfish&&0!==t.legalMoves.length)try{let i=t.targetDepth,a=this.getRootProbePlan(i,t.legalMoveCount),n={},s={},o={},l={screening:0,multipv:0,deepening:0},u=new Set,d=(t,r)=>{let i=o[t];if(!i){o[t]=r;return}i!==r&&(o[t]="both")};if(this.sendMessage("ucinewgame"),this.sendMessage("position fen ".concat(t.fen)),await this.waitForReady(),!this.isActiveRun(t.positionId))return;let c=null;for await(let o of this.streamMultiPvSnapshots(t,a.screeningDepth,t.legalMoveCount)){if(!this.isActiveRun(t.positionId))return;c=o,l.screening=o.elapsedMs;let u=Math.max(1,Math.min(a.screeningDepth,o.depth));for(let t of o.moves){var r;n[t.move]={cp:t.cp,depth:Math.max((null==(r=n[t.move])?void 0:r.depth)||0,Math.max(1,Math.min(a.screeningDepth,t.depth))),mateIn:t.mateIn},s[t.move]="screen"}if(Object.keys(n).length===t.legalMoveCount&&u<i){let r=this.buildEvaluationFromRootScores(u,n,t.fen);this.attachDiagnostics(r,{runContext:t,strategy:"staged-root-probe",targetDepth:i,legalMoveCount:t.legalMoveCount,phaseTimesMs:l,rootScores:n,movePhases:s,moveCounts:{screened:t.legalMoveCount,deepened:0,finalAtTargetDepth:Object.values(n).filter(t=>t.depth>=i).length}}),this.maybePublishDiagnostics(r,!1,t.diagnosticsToConsole),yield r}}if(!c||0===c.moves.length)throw Error("Failed to collect staged screening scores");if(Object.keys(n).length!==t.legalMoveCount)throw Error("Incomplete staged screening (".concat(Object.keys(n).length,"/").concat(t.legalMoveCount,")"));let h=Math.max(1,Math.min(t.legalMoveCount,t.kSf>0?t.kSf:4)),f=t.maiaCandidateMoves.slice(0,4),p=Array.from(new Set([...f,...t.forcedCandidateMoves])),m=Math.min(14,i);if(m>a.screeningDepth)for(let r of p){if(!this.isActiveRun(t.positionId))return;if(!n[r])continue;d(r,"maia-95");let a=n[r];if(a&&a.depth>=m)continue;let c=Date.now(),h=await this.runRootSearchWithRetry(t,m,r);
2775if(l.deepening+=Date.now()-c,!h)continue;n[r]={cp:h.cp,depth:Math.max(1,Math.min(m,h.depth)),mateIn:h.mateIn},s[r]="deep",u.add(r);let f=this.buildEvaluationFromRootScores(m,n,t.fen);this.attachDiagnostics(f,{runContext:t,strategy:"staged-root-probe",targetDepth:i,legalMoveCount:t.legalMoveCount,phaseTimesMs:l,rootScores:n,movePhases:s,moveSelectionSources:o,moveCounts:{screened:t.legalMoveCount,deepened:u.size,finalAtTargetDepth:Object.values(n).filter(t=>t.depth>=i).length}}),this.maybePublishDiagnostics(f,!1,t.diagnosticsToConsole),yield f}for await(let r of this.streamMultiPvSnapshots(t,i,h)){if(!this.isActiveRun(t.positionId))return;for(let t of(l.multipv=r.elapsedMs,r.moves)){let r=n[t.move];n[t.move]={cp:t.cp,depth:Math.max((null==r?void 0:r.depth)||0,t.depth),mateIn:t.mateIn},s[t.move]="multipv",u.add(t.move),d(t.move,"sf-top")}let c=this.buildEvaluationFromRootScores(Math.max(a.screeningDepth,r.depth),n,t.fen);this.attachDiagnostics(c,{runContext:t,strategy:"staged-root-probe",targetDepth:i,legalMoveCount:t.legalMoveCount,phaseTimesMs:l,rootScores:n,movePhases:s,moveSelectionSources:o,moveCounts:{screened:t.legalMoveCount,deepened:u.size,finalAtTargetDepth:Object.values(n).filter(t=>t.depth>=i).length}}),this.maybePublishDiagnostics(c,!1,t.diagnosticsToConsole),yield c}for(let r of p){if(!this.isActiveRun(t.positionId))return;if(!n[r])continue;d(r,"maia-95");let a=n[r];if(a&&a.depth>=i)continue;let c=Date.now(),h=await this.runRootSearchWithRetry(t,i,r);if(l.deepening+=Date.now()-c,!h)continue;n[r]={cp:h.cp,depth:Math.max(1,Math.min(i,h.depth)),mateIn:h.mateIn},s[r]="deep",u.add(r);let f=this.buildEvaluationFromRootScores(i,n,t.fen);this.attachDiagnostics(f,{runContext:t,strategy:"staged-root-probe",targetDepth:i,legalMoveCount:t.legalMoveCount,phaseTimesMs:l,rootScores:n,movePhases:s,moveSelectionSources:o,moveCounts:{screened:t.legalMoveCount,deepened:u.size,finalAtTargetDepth:Object.values(n).filter(t=>t.depth>=i).length}}),this.maybePublishDiagnostics(f,!1,t.diagnosticsToConsole),yield f}if(!this.isActiveRun(t.positionId))return;let g=this.buildEvaluationFromRootScores(i,n,t.fen);this.attachDiagnostics(g,{runContext:t,strategy:"staged-root-probe",targetDepth:i,legalMoveCount:t.legalMoveCount,phaseTimesMs:l,rootScores:n,movePhases:s,moveSelectionSources:o,moveCounts:{screened:t.legalMoveCount,deepened:u.size,finalAtTargetDepth:Object.values(n).filter(t=>t.depth>=i).length}}),this.maybePublishDiagnostics(g,!0,t.diagnosticsToConsole),yield g}finally{this.currentPositionId===t.positionId&&(this.isEvaluating=!1)}}async *streamEvaluationsSearchmovesAll(t){if(this.stockfish&&0!==t.legalMoves.length)try{let r=t.targetDepth,i={},a={},n={groundTruth:0};if(this.sendMessage("ucinewgame"),this.sendMessage("position fen ".concat(t.fen)),await this.waitForReady(),!this.isActiveRun(t.positionId))return;for(let s of t.legalMoves){if(!this.isActiveRun(t.positionId))return;let o=Date.now(),l=await this.runRootSearchWithRetry(t,r,s);if(n.groundTruth+=Date.now()-o,!l)throw Error("Failed to analyze root move ".concat(s));i[s]={cp:l.cp,depth:Math.max(1,Math.min(r,l.depth)),mateIn:l.mateIn},a[s]="ground-truth"}let s=this.buildEvaluationFromRootScores(r,i,t.fen);this.attachDiagnostics(s,{runContext:t,strategy:"searchmoves-all",targetDepth:r,legalMoveCount:t.legalMoveCount,phaseTimesMs:n,rootScores:i,movePhases:a,moveCounts:{screened:0,deepened:t.legalMoveCount,finalAtTargetDepth:Object.values(i).filter(t=>t.depth>=r).length}}),this.maybePublishDiagnostics(s,!0,t.diagnosticsToConsole),yield s}finally{this.currentPositionId===t.positionId&&(this.isEvaluating=!1)}}buildEvaluationFromRootScores(t,r,i){let a,n=new l.d$(i),s="b"===n.turn(),o=Object.entries(r).sort((t,r)=>{let[,i]=t,[,a]=r;if(a.cp!==i.cp)return s?i.cp-a.cp:a.cp-i.cp;let n=i.mateIn,o=a.mateIn;return void 0===n&&void 0===o?0:void 0===n?1:void 0===o?-1:Math.abs(n)-Math.abs(o)});if(0===o.length)throw Error("No root move scores available");let[d,c]=o[0],h={},f={},p={},m={};for(let[t,r]of o){h[t]=r.cp,f[t]=s?c.cp-r.cp:r.cp-c.cp;let i=(0,u.zF)(r.cp*(s?-1:1),!1);p[t]=i,m[t]=r.depth,void 0!==r.mateIn&&((a=a||{})[t]=r.mateIn)}let g={sent:!0,depth:t,model_move:d,model_optimal_cp:c.cp,cp_vec:h,cp_relative_vec:f,root_move_depth_vec:m,winrate_vec:p,winrate_loss_vec:{},mate_vec:a,is_checkmate:n.inCheckmate()};return this.finalizeEvaluation(g)}buildMoveDiagnostics(t,r,i,a){let n={};for(let[s,o]of Object.entries(t))n[s]={cp:o.cp,depth:o.depth,mateIn:o.mateIn,phase:null==r?void 0:r[s],selectedBy:null==i?void 0:i[s],maiaProb:null==a?void 0:a[s]};return n}attachDiagnostics(t,r){let{runContext:i}=r;t.diagnostics={positionId:i.positionId,fen:i.fen,strategy:r.strategy,targetDepth:r.targetDepth,legalMoveCount:r.legalMoveCount,totalTimeMs:Date.now()-i.analysisStartedAtMs,phaseTimesMs:r.phaseTimesMs?{...r.phaseTimesMs}
2775:void 0,moveCounts:r.moveCounts?{...r.moveCounts}:void 0,moves:this.buildMoveDiagnostics(r.rootScores,r.movePhases,r.moveSelectionSources,i.maiaPolicy)}}cloneEvaluation(t){return{...t,cp_vec:{...t.cp_vec},cp_relative_vec:{...t.cp_relative_vec},root_move_depth_vec:t.root_move_depth_vec?{...t.root_move_depth_vec}:void 0,winrate_vec:t.winrate_vec?{...t.winrate_vec}:void 0,winrate_loss_vec:t.winrate_loss_vec?{...t.winrate_loss_vec}:void 0,mate_vec:t.mate_vec?{...t.mate_vec}:void 0,diagnostics:t.diagnostics?{...t.diagnostics,phaseTimesMs:t.diagnostics.phaseTimesMs?{...t.diagnostics.phaseTimesMs}:void 0,moveCounts:t.diagnostics.moveCounts?{...t.diagnostics.moveCounts}:void 0,moves:t.diagnostics.moves?Object.fromEntries(Object.entries(t.diagnostics.moves).map(t=>{let[r,i]=t;return[r,{...i}]})):void 0}:void 0}}maybePublishDiagnostics(t,r){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.currentDiagnosticsToConsole;if(!r)return;let a=this.cloneEvaluation(t);try{let t=window,r=t.__maiaStockfishDiagnostics||[];r.push(a),t.__maiaStockfishDiagnostics=r.slice(-50)}catch(t){}if(!i||!a.diagnostics)return;let n=a.diagnostics;console.groupCollapsed("[Stockfish ".concat(n.strategy,"] depth ").concat(a.depth,"/").concat(n.targetDepth," in ").concat(n.totalTimeMs,"ms (").concat(n.legalMoveCount," legal)")),console.log("Summary",{positionId:n.positionId,bestMove:a.model_move,bestCp:a.model_optimal_cp,totalTimeMs:n.totalTimeMs,phaseTimesMs:n.phaseTimesMs,moveCounts:n.moveCounts}),n.moves&&console.table(Object.entries(n.moves).map(t=>{let[r,i]=t;return{move:r,cp:i.cp,depth:i.depth,mateIn:i.mateIn,phase:i.phase,selectedBy:i.selectedBy,maiaProb:i.maiaProb}}).sort((t,r)=>r.cp-t.cp)),console.groupEnd()}finalizeEvaluation(t){let r=-1/0,i=t.winrate_vec;if(i){for(let t in i){let a=i[t];a>r&&(r=a)}let a=t.winrate_loss_vec;if(a)for(let t in i)a[t]=i[t]-r}return t.winrate_vec&&(t.winrate_vec=Object.fromEntries(Object.entries(t.winrate_vec||{}).sort((t,r)=>{let[,i]=t,[,a]=r;return a-i}))),t.winrate_loss_vec&&(t.winrate_loss_vec=Object.fromEntries(Object.entries(t.winrate_loss_vec||{}).sort((t,r)=>{let[,i]=t,[,a]=r;return a-i}))),t.mate_vec&&0===Object.keys(t.mate_vec).length&&delete t.mate_vec,t}async runRootSearchWithRetry(t,r,i){let a=await this.runRootSearch(t,r,i,!1);return a||!i?a:this.runRootSearch(t,r,i,!0)}async runRootSearch(t,r,i){let a=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(!this.stockfish||r<=0||!this.isActiveRun(t.positionId)||(await this.waitForReady(),!this.isActiveRun(t.positionId)))return null;let n=this.stockfish,s=n.listen,o="b"===new l.d$(t.fen).turn(),u=null,d=null,c={},h=(t,r)=>!t||(r.depth!==t.depth?r.depth>t.depth:t.isBound===r.isBound||t.isBound&&!r.isBound),f=r=>{var a,n;let s;if(!r.startsWith("info "))return;let l=r.match(/\bdepth (\d+)\b/),f=r.match(/\bmultipv (\d+)\b/),p=r.match(/\bscore (?:cp (-?\d+)|mate (-?\d+))(?: (upperbound|lowerbound))?\b/);if(!l||!p)return;let m=r.match(/\bpv ((?:\S+\s*)+)$/),g=null==m||null==(a=m[1])?void 0:a.trim().split(/\s+/)[0];if(i){if(!g||g!==i)return}else if(!g)return;let b=i||g;if(!b||!t.legalMoves.includes(b))return;let y=Number.parseInt(p[1],10),v=Number.parseInt(p[2],10);if(!Number.isFinite(y)&&Number.isFinite(v)&&(s=v,y=v>0?1e4:-1e4),!Number.isFinite(y))return;o&&(y*=-1);let _={move:b,cp:y,depth:Number.parseInt(l[1],10),mateIn:s,isBound:!!p[3]};h(u,_)&&(u=_),h(c[b]||null,_)&&(c[b]=_),1===Number.parseInt(null!=(n=null==f?void 0:f[1])?n:"1",10)&&h(d,_)&&(d=_)};return new Promise(o=>{let l=!1,h=t=>{l||(l=!0,this.stockfish&&(this.stockfish.listen=s),o(t))};n.listen=r=>{for(let a of r.split(/\r?\n/).map(t=>t.trim()).filter(Boolean)){f(a);let r=a.match(/^bestmove (\S+)/);if(!r)continue;if(!this.isActiveRun(t.positionId))return void h(null);let n=r[1]&&"(none)"!==r[1]?r[1]:void 0,s=i||n||(null==u?void 0:u.move),o=(s?c[s]:void 0)||(i?u:null)||d||u;if(!o||!s||!t.legalMoves.includes(s))return void h(null);h({move:s,cp:o.cp,depth:o.depth,mateIn:o.mateIn});return}},n.uci("position fen ".concat(t.fen)),n.uci(i?a?"go searchmoves ".concat(i," depth ").concat(r):"go depth ".concat(r," searchmoves ").concat(i):"go depth ".concat(r))})}onMessage(t){let r;if(!this.isEvaluating)return;let i=[...t.matchAll(/info depth (\d+) seldepth (\d+) multipv (\d+) score (?:cp (-?\d+)|mate (-?\d+)).+ pv ((?:\S+\s*)+)/g)][0];if(!i||!i.length)return;let a=parseInt(i[1],10),n=parseInt(i[3],10),s=parseInt(i[4],10),o=parseInt(i[5],10),d=i[6].split(" ")[0];if(!this.moves.includes(d))return;!isNaN(o)&&isNaN(s)&&(r=o,s=o>0?1e4:-1e4);let c="b"===new l.d$(this.fen).turn();if(c&&(s*=-1),this.store[a]){this.store[a].cp_vec[d]=s,this.store[a].cp_relative_vec[d]=c?this.store[a].model_optimal_cp-s:s-this.store[a].model_optimal_cp,this.store[a].root_move_depth_vec||(this.store[a].root_move_depth_vec={}),this.store[a].root_move_depth_vec[d]=a,void 0!==r?(this.store[a].mate_vec||(this.store[a].mate_vec={}),this.store[a].mate_vec[d]=r):this.store[a].mate_vec&&(delete this.store[a].mate_vec[d],0===Object.keys(this.store[a].mate_vec).length&&delete this.store[a].mate_vec);let t=(0,u.zF)(s*(c?-1:1),!1);this.store[a].winrate_vec||(this.store[a].winrate_vec={}),this.store[a].winrate_loss_vec||(this.store[a].winrate_loss_vec={});let i=this.store[a].winrate_vec;i&&(i[d]=t)}else{let t=(0,u.zF)(s*(c?-1:1),!1);this.store[a]={depth:a,model_move:d,model_optimal_cp:s,cp_vec:{[d]:s},cp_relative_vec:{[d]:0},root_move_depth_vec:{[d]:a},winrate_vec:{[d]:t},winrate_loss_vec:{[d]:0},mate_vec:void 0!==r?{[d]:r}:void 0,sent:!1}}if(!this.store[a].sent&&n===this.legalMoveCount){this.store[a]=this.finalizeEvaluation(this.store[a]);let t=new l.d$(this.fen);this.store[a].is_checkmate=t.inCheckmate(),this.attachDiagnostics(this.store[a],{runContext:{positionId:this.currentPositionId,fen:this.fen,legalMoves:[...this.moves],legalMoveCount:this.legalMoveCount,maiaCandidateMoves:[],forcedCandidateMoves:[],maiaPolicy:{},kSf:0,targetDepth:this.currentTargetDepth,analysisStartedAtMs:this.currentAnalysisStartedAtMs,diagnosticsToConsole:this.currentDiagnosticsToConsole},strategy:"multipv-all",targetDepth:this.currentTargetDepth,legalMoveCount:this.legalMoveCount,phaseTimesMs:void 0,rootScores:Object.fromEntries(Object.entries(this.store[a].cp_vec).map(t=>{var r,i,n;let[s,o]=t;return[s,{cp:o,depth:null!=(n=null==(r=this.store[a].root_move_depth_vec)?void 0:r[s])?n:a,mateIn:null==(i=this.store[a].mate_vec)?void 0:i[s]}]})),movePhases:Object.fromEntries(Object.keys(this.store[a].cp_vec).map(t=>[t,"multipv"])),moveCounts:{finalAtTargetDepth:Object.values(this.store[a].root_move_depth_vec||{}).filter(t=>t>=this.currentTargetDepth).length}}),this.store[a].sent=!0,this.maybePublishDiagnostics(this.store[a],a>=this.currentTargetDepth&&this.currentTargetDepth>0),this.evaluationResolver&&(this.evaluationResolver(this.store[a]),this.evaluationResolver=null,this.evaluationRejecter=null),a>=this.currentTargetDepth&&this.currentTargetDepth>0&&this.stopEvaluation()}}onError(t){console.error(t),this.evaluationRejecter&&(this.evaluationRejecter(t),this.evaluationResolver=null,this.evaluationRejecter=null),this.isEvaluating=!1}stopEvaluation(){this.isEvaluating&&(this.isEvaluating=!1,this.sendMessage("stop"))}constructor(){if(this.stockfish=null,this.isReady=!1,this.nnueLoaded=!1,this.currentPositionId="",this.fen="",this.store={},this.moves=[],this.isEvaluating=!1,this.legalMoveCount=0,this.evaluationResolver=null,this.evaluationRejecter=null,this.evaluationPromise=null,this.evaluationGenerator=null,this.initError=null,this.initInFlight=!1,this.initPhase="idle",this.currentTargetDepth=0,this.currentMoveMapStrategy="staged-root-probe",this.currentAnalysisStartedAtMs=0,this.currentDiagnosticsToConsole=!1,this.onMessage=this.onMessage.bind(this),"undefined"==typeof Worker)return;this.initInFlight=!0,this.initPhase="loading-module",b(t=>{this.initPhase=t}).then(t=>{this.stockfish=t,t.uci("uci"),t.uci("isready"),t.uci("setoption name MultiPV value 100"),t.onError=this.onError,t.listen=this.onMessage,this.initError=null,this.isReady=!0,this.nnueLoaded=!0,this.initPhase="ready"}).catch(t=>{console.error("Failed to initialize Stockfish:",t),this.initError=t instanceof Error?t.message:"Unknown initialization error",this.isReady=!1,this.nnueLoaded=!1,this.initPhase="error"}).finally(()=>{this.initInFlight=!1})}}let f=function(t){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:32767,i=4;for(;;)try{return new WebAssembly.Memory({shared:!0,initial:t,maximum:r})}catch(a){if(r<=t||!(a instanceof RangeError))throw a;r=Math.max(t,Math.ceil(r-r/i)),i=4===i?3:4}},p=async(t,r)=>{if("undefined"==typeof AbortController||r<=0)return fetch(t);let i=new AbortController,a=setTimeout(()=>i.abort(),r);try{return await fetch(t,{signal:i.signal})}catch(i){if(i instanceof DOMException&&"AbortError"===i.name)throw Error("Stockfish NNUE fetch timed out after ".concat(r,"ms: ").concat(t));throw i}finally{clearTimeout(a)}},m=async(t,r,i)=>{if(r<=0)return t;let a=null;try{return await Promise.race([t,new Promise((t,n)=>{a=setTimeout(()=>n(Error(i)),r)})])}finally{a&&clearTimeout(a)}},g=async function(t,r,i,a){let n=arguments.length>4&&void 0!==arguments[4]&&arguments[4];if(!n){let i=await m(r.getModel(t),1500,"Timed out while checking cached Stockfish model: ".concat(t)).catch(t=>(console.warn(t),null));if(i)return i}null==a||a();let s=await p(t,i);if(!s.ok)throw Error("Failed to fetch Stockfish NNUE model (".concat(s.status,") from ").concat(t));let o=await s.arrayBuffer();return m(r.storeModel(t,o),5e3,"Timed out while caching Stockfish model: ".concat(t)).catch(t=>{console.warn(t)}),o},b=async t=>{var r;let a=await i.e(35).then(i.bind(i,3035)),n=null!=(r=c.env.NEXT_PUBLIC_STOCKFISH_NNUE_BASE_URL)?r:"https://raw.githubusercontent.com/CSSLab/maia-platform-frontend/e23a50e/public/stockfish",s=new d,o=(()=>{let t=c.env.NEXT_PUBLIC_STOCKFISH_NNUE_FETCH_TIMEOUT_MS,r=t?parseInt(t,10):NaN;return Number.isFinite(r)&&r>0?r:3e4})(),l=(()=>{let t=c.env.NEXT_PUBLIC_STOCKFISH_MODULE_INIT_TIMEOUT_MS,r=t?parseInt(t,10):NaN;return Number.isFinite(r)&&r>0?r:15e3})(),u=null;s.requestPersistentStorage().catch(t=>{console.warn("Failed to request persistent storage for Stockfish:",t)});let h=async()=>(null==t||t("loading-module"),m(a.default({wasmMemory:f(2560),locateFile:t=>"/stockfish/".concat(t)}),l,"Stockfish module initialization timed out after ".concat(l,"ms"))),p=async function(r){let i=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!u)throw Error("Stockfish recommended NNUE URLs were not initialized");let a=!1;null==t||t("checking-cache");let n=await Promise.all([g(u[0],s,o,()=>{a||(a=!0,null==t||t("downloading-nnue"))},i),g(u[1],s,o,()=>{a||(a=!0,null==t||t("downloading-nnue"))},i)]);null==t||t("loading-nnue"),r.setNnueBuffer(new Uint8Array(n[0]),0),r.setNnueBuffer(new Uint8Array(n[1]),1)};try{let t=await h();u=["".concat(n,"/").concat(t.getRecommendedNnue(0)),"".concat(n,"/").concat(t.getRecommendedNnue(1))];try{await p(t)}catch(r){if(!(t=>t instanceof RangeError||t instanceof Error&&(/offset is out of bounds/i.test(t.message)||/could not allocate/i.test(t.message)||/bytes\?/i.test(t.message)))(r))throw r;console.warn("Stockfish NNUE load failed; clearing cached weights and retrying once.",r),await Promise.all(u.map(t=>s.deleteModel(t))),t=await h(),await p(t,!0)}return t}catch(t){throw console.error("Failed to load NNUE models:",t),t}};var y=i(65364);let v="maia.stockfishMoveMapStrategy",_="maia.stockfishDiagnostics",w="maia.stockfishDebugPanel",x=["staged-root-probe","multipv-all","searchmoves-all"],$=t=>!!t&&["1","true","yes","on"].includes(t.toLowerCase()),S=(t,r)=>{if(!r||!t)return"Loading Stockfish...";switch(t.initializationPhase){case"checking-cache":return"Checking local Stockfish cache...";case"downloading-nnue":return"Downloading Stockfish model weights...";case"loading-nnue":return"Loading Stockfish from local cache...";case"loading-module":return"Starting Stockfish engine...";default:return"Loading Stockfish..."}},k=null,C=t=>{let r=t.diagnostics;return r?"".concat(r.positionId,":").concat(r.strategy,":").concat(r.targetDepth):"".concat(t.depth,":").concat(t.model_move,":").concat(Object.keys(t.cp_vec).length)},E=t=>"number"!=typeof t||Number.isNaN(t)?"-":"".concat(Math.round(t)," ms"),T=t=>"number"!=typeof t||Number.isNaN(t)?"-":t>0?"+".concat(t):"".concat(t),I=t=>"number"!=typeof t||Number.isNaN(t)?"-":"".concat((100*t).toFixed(1),"%"),A=()=>{var t,r,i,s,l,u;
2775let[d,c]=(0,n.useState)(!1),[h,f]=(0,n.useState)(!1),[p,m]=(0,n.useState)(!1),[g,b]=(0,n.useState)("staged-root-probe"),[S,k]=(0,n.useState)([]),[A,O]=(0,n.useState)(null),[M,P]=(0,n.useState)({key:"cp",direction:"desc"}),[R,j]=(0,n.useState)({key:"diff",direction:"desc"});(0,n.useEffect)(()=>{let t=()=>{var t,r,i,a,n,s;c($(null!=(t=window.localStorage.getItem(w))?t:y.env.NEXT_PUBLIC_STOCKFISH_DEBUG_PANEL||null));let o=null!=(a=null!=(i=null!=(r=window.localStorage.getItem(v))?r:window.localStorage.getItem("stockfishMoveMapStrategy"))?i:y.env.NEXT_PUBLIC_STOCKFISH_MOVE_MAP_STRATEGY)?a:"staged-root-probe";b(x.includes(o)?o:"staged-root-probe"),m($(null!=(s=null!=(n=window.localStorage.getItem(_))?n:window.localStorage.getItem("stockfishDiagnostics"))?s:y.env.NEXT_PUBLIC_STOCKFISH_DIAGNOSTICS||null)),k([...window.__maiaStockfishDiagnostics||[]].reverse())};t();let r=window.setInterval(t,500);return window.addEventListener("storage",t),()=>{window.clearInterval(r),window.removeEventListener("storage",t)}},[]),(0,n.useEffect)(()=>{if(!S.length)return void O(null);A&&S.some(t=>C(t)===A)||O(C(S[0]))},[S,A]);let z=(0,n.useMemo)(()=>A&&S.find(t=>C(t)===A)||S[0],[S,A]),D=(0,n.useMemo)(()=>(null==z?void 0:z.diagnostics)&&S.find(t=>{var r,i;if(t===z)return!1;let a=t.diagnostics;return!!a&&"searchmoves-all"===a.strategy&&a.fen===(null==(r=z.diagnostics)?void 0:r.fen)&&a.targetDepth===(null==(i=z.diagnostics)?void 0:i.targetDepth)})||null,[S,z]),B=(0,n.useMemo)(()=>{var t,r;if(!z)return[];let i=(null==(t=z.diagnostics)?void 0:t.moves)||{},a=(null==D||null==(r=D.diagnostics)?void 0:r.moves)||{};return Array.from(new Set([...Object.keys(i),...Object.keys(a)])).map(t=>{let r=i[t],n=a[t],s="number"==typeof(null==r?void 0:r.cp)&&"number"==typeof(null==n?void 0:n.cp)?Math.abs(r.cp-n.cp):void 0;return{move:t,selectedCp:null==r?void 0:r.cp,groundTruthCp:null==n?void 0:n.cp,absDiff:s,selectedDepth:null==r?void 0:r.depth,groundTruthDepth:null==n?void 0:n.depth,phase:null==r?void 0:r.phase,mateIn:null==r?void 0:r.mateIn,maiaProb:null==r?void 0:r.maiaProb}})},[z,D]),L=(0,n.useMemo)(()=>{let t=B.map(t=>t.absDiff).filter(t=>"number"==typeof t);return t.length?{mae:t.reduce((t,r)=>t+r,0)/t.length,max:Math.max(...t),comparedMoves:t.length}:null},[B]),U=(0,n.useCallback)(t=>{P(r=>r.key===t?{key:t,direction:"asc"===r.direction?"desc":"asc"}:{key:t,direction:"desc"})},[]),F=(0,n.useMemo)(()=>{var t;let r=Object.entries((null==z||null==(t=z.diagnostics)?void 0:t.moves)||{}).map(t=>{let[r,i]=t;return{move:r,info:i}}),i="asc"===M.direction?1:-1,a=t=>"number"==typeof t&&Number.isFinite(t)?t:-1/0;return r.sort((t,r)=>{let n=0;switch(M.key){case"move":n=t.move.localeCompare(r.move);break;case"cp":n=a(t.info.cp)-a(r.info.cp);break;case"depth":n=a(t.info.depth)-a(r.info.depth);break;case"phase":n=(t.info.phase||"").localeCompare(r.info.phase||"");break;case"selectedBy":n=(t.info.selectedBy||"").localeCompare(r.info.selectedBy||"");break;case"mateIn":n=a(t.info.mateIn)-a(r.info.mateIn);break;case"maiaProb":n=a(t.info.maiaProb)-a(r.info.maiaProb)}return 0===n?t.move.localeCompare(r.move):n*i})},[z,M]),q=(0,n.useCallback)(t=>M.key!==t?"↕":"asc"===M.direction?"↑":"↓",[M]),V=(0,n.useCallback)(t=>{j(r=>r.key===t?{key:t,direction:"asc"===r.direction?"desc":"asc"}:{key:t,direction:"desc"})},[]),W=(0,n.useMemo)(()=>{let t=[...B],r="asc"===R.direction?1:-1,i=t=>"number"==typeof t&&Number.isFinite(t)?t:-1/0;return t.sort((t,a)=>{let n=0;switch(R.key){case"move":n=t.move.localeCompare(a.move);break;case"thisCp":n=i(t.selectedCp)-i(a.selectedCp);break;case"gtCp":n=i(t.groundTruthCp)-i(a.groundTruthCp);break;case"diff":n=i(t.absDiff)-i(a.absDiff);break;case"thisDepth":n=i(t.selectedDepth)-i(a.selectedDepth);break;case"gtDepth":n=i(t.groundTruthDepth)-i(a.groundTruthDepth);break;case"phase":n=(t.phase||"").localeCompare(a.phase||"");break;case"maiaProb":n=i(t.maiaProb)-i(a.maiaProb)}return 0===n?t.move.localeCompare(a.move):n*r})},[B,R]),H=(0,n.useCallback)(t=>R.key!==t?"↕":"asc"===R.direction?"↑":"↓",[R]),G=(0,n.useCallback)(t=>{window.localStorage.setItem(v,t),b(t)},[]),K=(0,n.useCallback)(t=>{window.localStorage.setItem(_,t?"1":"0"),m(t)}
2775,[]),Y=(0,n.useCallback)(()=>{window.__maiaStockfishDiagnostics=[],k([])},[]),Q=(0,n.useCallback)(()=>{window.localStorage.setItem(o.MA,"".concat(Date.now())),window.dispatchEvent(new CustomEvent(o.vJ,{detail:{ts:Date.now()}}))},[]),X=(0,n.useCallback)(()=>{window.localStorage.setItem(w,"0"),c(!1)},[]);return d?(0,a.jsx)("div",{className:"pointer-events-auto fixed bottom-4 right-4 z-[1000] w-[min(92vw,560px)]",children:(0,a.jsxs)("div",{className:"flex max-h-[85vh] flex-col overflow-hidden rounded-xl border border-zinc-300 bg-white/95 shadow-2xl backdrop-blur",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between gap-2 border-b border-zinc-200 px-3 py-2",children:[(0,a.jsxs)("div",{className:"min-w-0",children:[(0,a.jsx)("div",{className:"text-xs font-semibold uppercase tracking-wide text-zinc-500",children:"Stockfish Debug"}),(0,a.jsx)("div",{className:"truncate text-sm text-zinc-700",children:N(z)})]}),(0,a.jsxs)("div",{className:"flex items-center gap-1",children:[(0,a.jsx)("button",{type:"button",onClick:()=>f(t=>!t),className:"rounded border border-zinc-300 px-2 py-1 text-xs hover:bg-zinc-50",children:h?"Open":"Collapse"}),(0,a.jsx)("button",{type:"button",onClick:X,className:"rounded border border-zinc-300 px-2 py-1 text-xs hover:bg-zinc-50",children:"Hide"})]})]}),!h&&(0,a.jsxs)("div",{className:"space-y-3 overflow-y-auto p-3",children:[(0,a.jsxs)("div",{className:"grid grid-cols-1 gap-2 sm:grid-cols-2",children:[(0,a.jsxs)("label",{className:"flex flex-col gap-1 text-xs text-zinc-600",children:["Strategy (global)",(0,a.jsx)("select",{value:g,onChange:t=>G(t.target.value),className:"rounded border border-zinc-300 bg-white px-2 py-1 text-sm text-zinc-900",children:x.map(t=>(0,a.jsx)("option",{value:t,children:t},t))})]}),(0,a.jsxs)("div",{className:"flex flex-col gap-1 text-xs text-zinc-600",children:[(0,a.jsx)("span",{children:"Controls"}),(0,a.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,a.jsxs)("label",{className:"flex items-center gap-1 rounded border border-zinc-300 px-2 py-1 text-xs text-zinc-700",children:[(0,a.jsx)("input",{type:"checkbox",checked:p,onChange:t=>K(t.target.checked)}),"Console logs"]}),(0,a.jsx)("button",{type:"button",onClick:Y,className:"rounded border border-zinc-300 px-2 py-1 text-xs hover:bg-zinc-50",children:"Clear runs"}),(0,a.jsx)("button",{type:"button",onClick:Q,className:"rounded border border-zinc-300 px-2 py-1 text-xs hover:bg-zinc-50",title:"Force re-analyze the currently selected board node",children:"Re-run current node"})]})]})]}),(0,a.jsxs)("div",{className:"grid grid-cols-1 gap-2 sm:grid-cols-[1.1fr_0.9fr]",children:[(0,a.jsxs)("div",{className:"rounded border border-zinc-200 p-2",children:[(0,a.jsxs)("div",{className:"mb-1 text-xs font-medium text-zinc-700",children:["Recent runs (",S.length,")"]}),(0,a.jsxs)("div",{className:"max-h-40 space-y-1 overflow-auto",children:[0===S.length&&(0,a.jsx)("div",{className:"text-xs text-zinc-500",children:"No diagnostics yet. Run analysis on any supported page."}),S.map(t=>{var r;let i=C(t),n=t.diagnostics;return(0,a.jsxs)("button",{type:"button",onClick:()=>O(i),className:"block w-full rounded border px-2 py-1 text-left text-xs ".concat(A===i?"border-red-300 bg-red-50":"border-zinc-200 hover:bg-zinc-50"),children:[(0,a.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,a.jsxs)("span",{className:"truncate font-medium text-zinc-800",children:[(null==n?void 0:n.strategy)||"unknown"," d",null!=(r=null==n?void 0:n.targetDepth)?r:t.depth]}),(0,a.jsx)("span",{className:"text-zinc-500",children:E(null==n?void 0:n.totalTimeMs)})]}),(0,a.jsx)("div",{className:"truncate text-zinc-500",children:(t=>t?t.split(" ").slice(0,2).join(" "):"-")(null==n?void 0:n.fen)})]},i)})]})]}),(0,a.jsxs)("div",{className:"rounded border border-zinc-200 p-2",children:[(0,a.jsx)("div",{className:"mb-1 text-xs font-medium text-zinc-700",children:"Selected summary"}),(null==z?void 0:z.diagnostics)?(0,a.jsxs)("div",{className:"space-y-1 text-xs text-zinc-700",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("span",{className:"font-medium",children:"Strategy:"})," ",z.diagnostics.strategy]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("span",{className:"font-medium",children:"Timing:"})," ",E(z.diagnostics.totalTimeMs)]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("span",{className:"font-medium",children:"Best:"})," ",z.model_move," (",T(z.model_optimal_cp),")"]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("span",{className:"font-medium",children:"Moves:"})," ",Object.keys(z.diagnostics.moves||{}).length,"/",z.diagnostics.legalMoveCount]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("span",{className:"font-medium",children:"Final@target:"})," ",null!=(s=null==(t=z.diagnostics.moveCounts)?void 0:t.finalAtTargetDepth)?s:"-"]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("span",{className:"font-medium",children:"Screened/Deepened:"})," ",null!=(l=null==(r=z.diagnostics.moveCounts)?void 0:r.screened)?l:0,"/",null!=(u=null==(i=z.diagnostics.moveCounts)?void 0:i.deepened)?u:0]})]}):(0,a.jsx)("div",{className:"text-xs text-zinc-500",children:"Select a run."})]})]}),(null==z?void 0:z.diagnostics)&&(0,a.jsxs)("div",{className:"rounded border border-zinc-200 p-2",children:[(0,a.jsx)("div",{className:"mb-1 text-xs font-medium text-zinc-700",children:"Phase timings"}),(0,a.jsx)("div",{className:"flex flex-wrap gap-2 text-xs",children:Object.entries(z.diagnostics.phaseTimesMs||{}).length?Object.entries(z.diagnostics.phaseTimesMs||{}).map(t=>{let[r,i]=t;return(0,a.jsxs)("span",{className:"rounded bg-zinc-100 px-2 py-1 text-zinc-700",children:[r,": ",E(i)]},r)}):(0,a.jsx)("span",{className:"text-zinc-500",children:"Not broken out for this strategy/depth snapshot."})})]}),(0,a.jsxs)("div",{className:"rounded border border-zinc-200 p-2",children:[(0,a.jsxs)("div",{className:"mb-1 flex items-center justify-between gap-2",children:[(0,a.jsx)("div",{className:"text-xs font-medium text-zinc-700",children:"Ground-truth comparison (vs latest `searchmoves-all` same FEN/depth)"}),L&&(0,a.jsxs)("div",{className:"text-xs text-zinc-600",children:["MAE ",L.mae.toFixed(1)," cp | Max"," ",L.max," cp | n=",L.comparedMoves]})]}),D?(0,a.jsx)("div",{className:"max-h-56 overflow-auto",children:(0,a.jsxs)("table",{className:"min-w-full text-left text-xs",children:[(0,a.jsx)("thead",{className:"sticky top-0 bg-white",children:(0,a.jsxs)("tr",{className:"text-zinc-500",children:[(0,a.jsx)("th",{className:"px-1 py-1",children:(0,a.jsxs)("button",{type:"button",onClick:()=>V("move"),children:["Move ",H("move")]})}),(0,a.jsx)("th",{className:"px-1 py-1",children:(0,a.jsxs)("button",{type:"button",onClick:()=>V("thisCp"),children:["This cp ",H("thisCp")]})}),(0,a.jsx)("th",{className:"px-1 py-1",children:(0,a.jsxs)("button",{type:"button",onClick:()=>V("gtCp"),children:["GT cp ",H("gtCp")]})}),(0,a.jsx)("th",{className:"px-1 py-1",children:(0,a.jsxs)("button",{type:"button",onClick:()=>V("diff"),children:["|diff| ",H("diff")]})}),(0,a.jsx)("th",{className:"px-1 py-1",children:(0,a.jsxs)("button",{type:"button",onClick:()=>V("thisDepth"),children:["Depth ",H("thisDepth")]})}),(0,a.jsx)("th",{className:"px-1 py-1",children:(0,a.jsxs)("button",{type:"button",onClick:()=>V("gtDepth"),children:["GT d ",H("gtDepth")]})}),(0,a.jsx)("th",{className:"px-1 py-1",children:(0,a.jsxs)("button",{type:"button",onClick:()=>V("phase"),children:["Phase ",H("phase")]})}),(0,a.jsx)("th",{className:"px-1 py-1",children:(0,a.jsxs)("button",{type:"button",onClick:()=>V("maiaProb"),children:["Maia prob ",H("maiaProb")]})})]})}),(0,a.jsx)("tbody",{children:W.map(t=>{var r,i;return(0,a.jsxs)("tr",{className:"border-t border-zinc-100",children:[(0,a.jsx)("td",{className:"px-1 py-1 font-mono text-zinc-800",children:t.move}),(0,a.jsx)("td",{className:"px-1 py-1",children:T(t.selectedCp)}),(0,a.jsx)("td",{className:"px-1 py-1",children:T(t.groundTruthCp)}),(0,a.jsx)("td",{className:"px-1 py-1",children:"number"==typeof t.absDiff?t.absDiff:"-"}),(0,a.jsx)("td",{className:"px-1 py-1",children:null!=(r=t.selectedDepth)?r:"-"}),(0,a.jsx)("td",{className:"px-1 py-1",children:null!=(i=t.groundTruthDepth)?i:"-"}),(0,a.jsx)("td",{className:"px-1 py-1",children:t.phase||"-"}),(0,a.jsx)("td",{className:"px-1 py-1",children:I(t.maiaProb)})]},t.move)})})]})}):(0,a.jsx)("div",{className:"text-xs text-zinc-500",children:"No matching `searchmoves-all` run found for this FEN/target depth."})]}),(0,a.jsxs)("div",{className:"rounded border border-zinc-200 p-2",children:[(0,a.jsx)("div",{className:"mb-1 text-xs font-medium text-zinc-700",children:"Selected run moves/evals"}),(0,a.jsx)("div",{className:"max-h-56 overflow-auto",children:(0,a.jsxs)("table",{className:"min-w-full text-left text-xs",children:[(0,a.jsx)("thead",{className:"sticky top-0 bg-white",children:(0,a.jsxs)("tr",{className:"text-zinc-500",children:[(0,a.jsx)("th",{className:"px-1 py-1",children:(0,a.jsxs)("button",{type:"button",onClick:()=>U("move"),children:["Move ",q("move")]})}),(0,a.jsx)("th",{className:"px-1 py-1",children:(0,a.jsxs)("button",{type:"button",onClick:()=>U("cp"),children:["CP ",q("cp")]})}),(0,a.jsx)("th",{className:"px-1 py-1",children:(0,a.jsxs)("button",{type:"button",onClick:()=>U("depth"),children:["Depth ",q("depth")]})}),(0,a.jsx)("th",{className:"px-1 py-1",children:(0,a.jsxs)("button",{type:"button",onClick:()=>U("phase"),children:["Phase ",q("phase")]})}),(0,a.jsx)("th",{className:"px-1 py-1",children:(0,a.jsxs)("button",{type:"button",onClick:()=>U("selectedBy"),children:["Selected by ",q("selectedBy")]})}),(0,a.jsx)("th",{className:"px-1 py-1",children:(0,a.jsxs)("button",{type:"button",onClick:()=>U("mateIn"),children:["Mate ",q("mateIn")]})}),(0,a.jsx)("th",{className:"px-1 py-1",children:(0,a.jsxs)("button",{type:"button",onClick:()=>U("maiaProb"),children:["Maia prob ",q("maiaProb")]})})]})}),(0,a.jsx)("tbody",{children:F.map(t=>{let{move:r,info:i}=t;return(0,a.jsxs)("tr",{className:"border-t border-zinc-100",children:[(0,a.jsx)("td",{className:"px-1 py-1 font-mono text-zinc-800",children:r}),(0,a.jsx)("td",{className:"px-1 py-1",children:T(i.cp)}),(0,a.jsx)("td",{className:"px-1 py-1",children:i.depth}),(0,a.jsx)("td",{className:"px-1 py-1",children:i.phase||"-"}),(0,a.jsx)("td",{className:"px-1 py-1",children:(t=>t?"sf-top"===t?"SF top-K":"maia-95"===t?"Maia 95%":"Both":"-")(i.selectedBy)}),(0,a.jsx)("td",{className:"px-1 py-1",children:"number"==typeof i.mateIn?i.mateIn:"-"}),(0,a.jsx)("td",{className:"px-1 py-1",children:I(i.maiaProb)})]},r)})})]})})]}),(0,a.jsx)("div",{className:"text-[11px] text-zinc-500",children:"Global switches are stored in localStorage and apply to all client-side Stockfish anal
2775ysis using this shared engine provider."})]})]})}):null},N=t=>{if(!(null==t?void 0:t.diagnostics))return"No diagnostic snapshots yet";let r=t.diagnostics;return"".concat(r.strategy," • d").concat(t.depth,"/").concat(r.targetDepth," • ").concat(E(r.totalTimeMs)," • ").concat(r.legalMoveCount," legal")},O=n.createContext({streamEvaluations:()=>{throw Error("poorly provided StockfishEngineContext, missing streamEvaluations")},stopEvaluation:()=>{throw Error("poorly provided StockfishEngineContext, missing stopEvaluation")},isReady:()=>{throw Error("poorly provided StockfishEngineContext, missing isReady")},status:"loading",error:null}),M=t=>{let{children:r}=t,i=(0,n.useRef)(null);i.current||(k&&(!k.initializationError||k.ready||k.initializing)||(k=new h),i.current=k);let[o,l]=(0,n.useState)(()=>{var t,r;return(null==(t=i.current)?void 0:t.initializationError)?"error":(null==(r=i.current)?void 0:r.ready)?"ready":"loading"}),[u,d]=(0,n.useState)(()=>{var t,r;return null!=(r=null==(t=i.current)?void 0:t.initializationError)?r:null}),[c]=(0,n.useState)(()=>(()=>{try{let t=window.localStorage.getItem("maia.stockfishDebugLoading");if(null!==t)return $(t)}catch(t){}return $(y.env.NEXT_PUBLIC_STOCKFISH_DEBUG_LOADING)})()),[f,p]=(0,n.useState)(()=>S(i.current,c)),m=(0,n.useRef)(null),g=(0,n.useRef)(null),b=(0,n.useCallback)((t,r,a,n)=>i.current?i.current.streamEvaluations(t,r,a,n):(console.error("Engine not initialized"),null),[]),v=(0,n.useCallback)(()=>{var t;null==(t=i.current)||t.stopEvaluation()},[]),_=(0,n.useCallback)(()=>{var t,r;return null!=(r=null==(t=i.current)?void 0:t.ready)&&r},[]);(0,n.useEffect)(()=>{let t=()=>{let t=i.current;t&&(p(r=>{let i=S(t,c);return r===i?r:i}),t.initializationError?(l("error"),d(t.initializationError)):t.ready?(l("ready"),d(null)):l("loading"))};t();let r=setInterval(t,100);return()=>clearInterval(r)},[c]),(0,n.useEffect)(()=>()=>{null!==g.current&&(window.clearTimeout(g.current),g.current=null),m.current&&(s.Ay.dismiss(m.current),m.current=null)},[]),(0,n.useEffect)(()=>{if("loading"===o){if(m.current){m.current=s.Ay.loading(f,{id:m.current});return}if(null!==g.current)return;g.current=window.setTimeout(()=>{g.current=null,m.current||!i.current||i.current.ready||(m.current=s.Ay.loading(S(i.current,c)))},800);return}if(null!==g.current&&(window.clearTimeout(g.current),g.current=null),"ready"===o)m.current&&(s.Ay.success("Loaded Stockfish! Engine is ready",{id:m.current}),m.current=null);else if("error"===o){let t=u?"Failed to load Stockfish engine: ".concat(u):"Failed to load Stockfish engine";m.current?(s.Ay.error(t,{id:m.current}),m.current=null):s.Ay.error(t)}},[o,u,f,c]);let w=(0,n.useMemo)(()=>({streamEvaluations:b,stopEvaluation:v,isReady:_,status:o,error:u}),[b,v,_,o,u]);return(0,a.jsxs)(O.Provider,{value:w,children:[r,(0,a.jsx)(A,{})]})}},12562:(t,r,i)=>{"use strict";i.d(r,{B:()=>u});var a=i(94349),n=i(49037),s=i(33439),o=i(31062);let l={...n.ai,transform:t=>Math.round((0,a.q)(0,255,t))},u={test:(0,o.$)("rgb","red"),parse:(0,o.q)("red","green","blue"),transform:({red:t,green:r,blue:i,alpha:a=1})=>"rgba("+l.transform(t)+", "+l.transform(r)+", "+l.transform(i)+", "+(0,s.a)(n.X4.transform(a))+")"}},12732:()=>{},15861:t=>{!function(){var r={229:function(t){var r,i,a,n=t.exports={};function s(){throw Error("setTimeout has not been defined")}function o(){throw Error("clearTimeout has not been defined")}try{r="function"==typeof setTimeout?setTimeout:s}catch(t){r=s}try{i="function"==typeof clearTimeout?clearTimeout:o}catch(t){i=o}function l(t){if(r===setTimeout)return setTimeout(t,0);if((r===s||!r)&&setTimeout)return r=setTimeout,setTimeout(t,0);try{return r(t,0)}catch(i){try{return r.call(null,t,0)}catch(i){return r.call(this,t,0)}}}var u=[],d=!1,c=-1;function h(){d&&a&&(d=!1,a.length?u=a.concat(u):c=-1,u.length&&f())}function f(){if(!d){var t=l(h);d=!0;for(var r=u.length;r;){for(a=u,u=[];++c<r;)a&&a[c].run();c=-1,r=u.length}a=null,d=!1,function(t){if(i===clearTimeout)return clearTimeout(t);if((i===o||!i)&&clearTimeout)return i=clearTimeout,clearTimeout(t);try{i(t)}catch(r){try{return i.call(null,t)}catch(r){return i.call(this,t)}}}(t)}}function p(t,r){this.fun=t,this.array=r}function m(){}n.nextTick=function(t){var r=Array(arguments.length-1);if(arguments.length>1)for(var i=1;i<arguments.length;i++)r[i-1]=arguments[i];u.push(new p(t,r)),1!==u.length||d||l(f)},p.prototype.run=function(){this.fun.apply(null,this.array)},n.title="browser",n.browser=!0,n.env={},n.argv=[],n.version="",n.versions={},n.on=m,n.addListener=m,n.once=m,n.off=m,n.removeListener=m,n.removeAllListeners=m,n.emit=m,n.prependListener=m,n.prependOnceListener=m,n.listeners=function(t){return[]},n.binding=function(t){throw Error("process.binding is not supported")},n.cwd=function(){return"/"},n.chdir=function(t){throw Error("process.chdir is not supported")},n.umask=function(){return 0}}},i={};function a(t){var n=i[t];if(void 0!==n)return n.exports;var s=i[t]={exports:{}},o=!0;try{r[t](s,s.exports,a),o=!1}finally{o&&delete i[t]}return s.exports}a.ab="//",t.exports=a(229)}()},17394:(t,r,i)=>{"use strict";
2775t.exports=i.p+"static/media/ort.bundle.min.eb6b9ac5.mjs"},17416:(t,r,i)=>{"use strict";i.d(r,{w:()=>o});var a=i(37876),n=i(54587),s=i.n(n);let o=()=>(0,a.jsx)("div",{className:"flex w-full flex-col items-center justify-center py-4",children:(0,a.jsxs)("div",{className:"flex w-[90%] flex-col items-start justify-center gap-6 bg-transparent md:items-center",children:[(0,a.jsx)("div",{className:"mx-auto mt-1 flex w-full select-none items-center gap-7",children:(0,a.jsx)("div",{className:"h-px flex-1 rounded bg-white/10","aria-hidden":"true"})}),(0,a.jsxs)("div",{className:"flex w-full max-w-4xl flex-col items-start justify-start gap-4 md:flex-row md:items-center md:justify-center md:gap-8",children:[(0,a.jsxs)("div",{className:"mb-2 flex flex-col items-start gap-1 md:mb-0 md:items-center md:gap-0.5",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)(s(),{src:"/maia-ios-icon.png",alt:"Maia Chess",width:26,height:26}),(0,a.jsx)("p",{className:"text-xl font-bold text-primary",children:"Maia Chess"})]}),(0,a.jsxs)("p",{className:"max-w-[200px] text-left text-sm text-secondary md:max-w-[160px] md:text-center md:text-xs",children:["A project by the"," ",(0,a.jsx)("a",{target:"_blank",rel:"noreferrer",href:"http://csslab.cs.toronto.edu/",className:"text-primary",children:"University of Toronto CSSLab"})]})]}),(0,a.jsx)("div",{className:"hidden h-10 w-[1px] rounded-full bg-white/10 md:block"}),(0,a.jsx)("div",{className:"flex flex-col gap-6 md:flex-row md:gap-10",children:[{title:"Research",links:[{href:"https://arxiv.org/abs/2605.19091",text:"Maia-3 Paper (ICLR '26)"},{href:"https://www.cs.toronto.edu/~ashton/pubs/maia2-neurips2024.pdf",text:"Maia-2 Paper (NeurIPS '24)"},{href:"https://arxiv.org/abs/2006.01855",text:"Maia Paper (KDD '20)"},{href:"https://csslab.cs.toronto.edu/research/",text:"CSSLab Research"}]},{title:"Open-Source",links:[{href:"https://github.com/CSSLab/maia3",text:"Maia-3 Model"},{href:"https://github.com/CSSLab/maia2",text:"Maia-2 Model"},{href:"https://github.com/CSSLab/maia-chess",text:"Maia Model"},{href:"https://github.com/csslab/maia-platform-frontend",text:"Maia Web Platform"}]},{title:"Lichess Bots",links:[{href:"https://lichess.org/@/maia1",text:"Maia 1100"},{href:"https://lichess.org/@/maia5",text:"Maia 1500"},{href:"https://lichess.org/@/maia9",text:"Maia 1900"}]},{title:"Contact",links:[{href:"https://discord.gg/hHb6gqFpxZ",text:"Discord Community",icon:"link"},{href:"mailto:[email protected]",text:"[email protected]",icon:"mail"},{href:"https://x.com/maiachess",text:"@maiachess",icon:"link"}]}].map((t,r)=>(0,a.jsxs)("div",{className:"flex flex-col items-start justify-start gap-1.5 md:gap-0.5",children:[(0,a.jsx)("p",{className:"text-base font-medium md:text-sm",children:t.title}),t.links.map((t,r)=>(0,a.jsx)("a",{href:t.href,target:"_blank",rel:"noreferrer",className:"mt-0.5 md:mt-0.5",children:t.icon?(0,a.jsxs)("div",{className:"flex items-center gap-1.5 text-secondary transition duration-200 hover:text-primary/80",children:[(0,a.jsx)("span",{className:"material-symbols-outlined !text-sm md:!text-xs",children:t.icon}),(0,a.jsx)("p",{className:"text-sm md:text-xs",children:t.text})]}):(0,a.jsx)("p",{className:"text-sm text-secondary transition duration-200 hover:text-primary/80 md:text-xs",children:t.text})},r))]},r))})]}),(0,a.jsx)("p",{className:"text-left text-sm text-secondary md:text-center md:text-xs",children:"\xa9 2026 Maia Chess. All rights reserved."})]})})},18722:(t,r,i)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.strippedSan=r.validateFen=r.isFlagKey=r.isSquare=r.isPieceSymbol=r.isColor=r.symbol=r.isDigit=r.swapColor=r.algebraic=r.file=r.rank=void 0;var a=i(6162);function n(t){return t>>4}function s(t){return 15&t}r.rank=n,r.file=s,r.algebraic=function(t){var r=s(t),i=n(t);return"abcdefgh".substring(r,r+1)+"87654321".substring(i,i+1)},r.swapColor=function(t){return t===a.WHITE?a.BLACK:a.WHITE},r.isDigit=function(t){return/^[0-9]$/.test(t)},r.symbol=function(t){var r=t.type;return t.color===a.WHITE?r.toUpperCase():r.toLowerCase()},r.isColor=function(t){return"w"===t||"b"===t},r.isPieceSymbol=function(t){return/^[pnbrqk]$/.test(t)},r.isSquare=function(t){return/^[a-h][1-8]$/.test(t)},r.isFlagKey=function(t){return -1!==["NORMAL","CAPTURE","BIG_PAWN","EP_CAPTURE","PROMOTION","KSIDE_CASTLE","QSIDE_CASTLE"].indexOf(t)},r.validateFen=function(t){var r={0:"No errors.",1:"FEN string must contain six space-delimited fields.",2:"6th field (move number) must be a positive integer.",3:"5th field (half move counter) must be a non-negative integer.",4:"4th field (en-passant square) is invali
2775d.",5:"3rd field (castling availability) is invalid.",6:"2nd field (side to move) is invalid.",7:"1st field (piece positions) does not contain 8 '/'-delimited rows.",8:"1st field (piece positions) is invalid [consecutive numbers].",9:"1st field (piece positions) is invalid [invalid piece].",10:"1st field (piece positions) is invalid [row too large].",11:"Illegal en-passant square"},i=t.split(/\s+/);if(6!==i.length)return{valid:!1,error_number:1,error:r[1]};if(isNaN(i[5])||0>=parseInt(i[5],10))return{valid:!1,error_number:2,error:r[2]};if(isNaN(i[4])||0>parseInt(i[4],10))return{valid:!1,error_number:3,error:r[3]};if(!/^(-|[abcdefgh][36])$/.test(i[3]))return{valid:!1,error_number:4,error:r[4]};if(!/^(KQ?k?q?|Qk?q?|kq?|q|-)$/.test(i[2]))return{valid:!1,error_number:5,error:r[5]};if(!/^(w|b)$/.test(i[1]))return{valid:!1,error_number:6,error:r[6]};var a=i[0].split("/");if(8!==a.length)return{valid:!1,error_number:7,error:r[7]};for(var n=0;n<a.length;n++){for(var s=0,o=!1,l=0;l<a[n].length;l++)if(isNaN(a[n][l])){if(!/^[prnbqkPRNBQK]$/.test(a[n][l]))return{valid:!1,error_number:9,error:r[9]};s+=1,o=!1}else{if(o)return{valid:!1,error_number:8,error:r[8]};s+=parseInt(a[n][l],10),o=!0}if(8!==s)return{valid:!1,error_number:10,error:r[10]}}return"3"==i[3][1]&&"w"==i[1]||"6"==i[3][1]&&"b"==i[1]?{valid:!1,error_number:11,error:r[11]}:{valid:!0,error_number:0,error:r[0]}},r.strippedSan=function(t){return t.replace(/=/,"").replace(/[+#]?[?!]*$/,"")}},18847:(t,r,i)=>{t.exports=i(52496)},18874:()=>{},19583:(t,r,i)=>{"use strict";i.d(r,{t:()=>b});var a=i(37876),n=i(48230),s=i.n(n),o=i(77328),l=i.n(o),u=i(18847),d=i.n(u),c=i(14232),h=i(27942),f=i(17416),p=i(87192);let m=d()(()=>i.e(669).then(i.bind(i,15669)),{loadableGenerated:{webpack:()=>[15669]},ssr:!1,loading:()=>(0,a.jsx)("div",{className:"h-full w-full rounded bg-glass"})}),g="font-sans";class b extends c.Component{static getDerivedStateFromError(t){return console.log("Error caught in getDerivedStateFromError:",t),{hasError:!0,error:t}}componentDidCatch(t,r){console.log("Error caught in componentDidCatch:",t,r);try{let r=window.location.pathname,i=t.name||"Unknown Error",a=t.message||"No message available";(0,p.SH)(i,r,"component_error",a)}catch(t){console.error("Failed to track error:",t)}"Unauthorized"===t.message?this.setState({hasError:!0,isUnauthorized:!0,error:t}):this.setState({hasError:!0,isUnauthorized:!1,error:t})}render(){if(this.state.hasError){var t,r;return this.state.isUnauthorized?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(l(),{children:(0,a.jsx)("link",{rel:"stylesheet",href:"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,[email protected],100..700,0..1,-50..200&display=swap"})}),(0,a.jsx)("div",{className:"".concat(g," app-container"),children:(0,a.jsxs)("div",{className:"flex min-h-screen w-screen flex-col bg-backdrop",children:[(0,a.jsx)(h.Y,{}),(0,a.jsxs)("div",{className:"flex flex-1 flex-col items-center justify-center gap-4",children:[(0,a.jsx)("h2",{className:"text-3xl font-bold text-primary",children:"Unauthorized Access"}),(0,a.jsx)("p",{className:"text-primary",children:"You do not have permission to view this content. Please log in."}),(0,a.jsx)(s(),{href:"/",className:"flex items-center justify-center rounded bg-human-3 px-8 py-2 transition duration-200 hover:bg-human-4",onClick:()=>this.setState({hasError:!1}),children:(0,a.jsx)("span",{className:"text-lg text-primary",children:"Click here to go home"})})]}),(0,a.jsx)(f.w,{})]})})]}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(l(),{children:(0,a.jsx)("link",{rel:"stylesheet",href:"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,[email protected],100..700,0..1,-50..200&display=swap"})}),(0,a.jsxs)("div",{className:"".concat(g," app-container flex min-h-screen w-screen flex-col bg-backdrop"),children:[(0,a.jsx)(h.Y,{}),(0,a.jsxs)("div",{className:"flex flex-1 flex-col items-center justify-center gap-8 p-6",children:[(0,a.jsxs)("div",{className:"flex max-w-2xl flex-col items-center gap-6 text-center",children:[(0,a.jsx)("div",{className:"h-[200px] w-[200px] opacity-75",children:(0,a.jsx)(m,{contained:!0,config:{fen:"r
2775n1qkb1r/ppp1pBpp/5n2/4N3/8/2N5/PPPP1PPP/R1BbK2R b KQkq - 0 7",check:"black"}})}),(0,a.jsxs)("div",{className:"space-y-3",children:[(0,a.jsx)("h2",{className:"text-4xl font-bold text-primary",children:"Oops! Something went wrong"}),(0,a.jsx)("p",{className:"text-lg text-secondary",children:"We're sorry for the inconvenience. An unexpected error occurred while loading the page."})]}),(0,a.jsxs)("div",{className:"flex flex-col gap-4 sm:flex-row",children:[(0,a.jsx)(s(),{href:"/",className:"flex items-center justify-center rounded-lg bg-human-3 px-6 py-3 transition duration-200 hover:bg-human-4",onClick:()=>this.setState({hasError:!1}),children:(0,a.jsx)("span",{className:"font-medium text-primary",children:"Return to Home"})}),(0,a.jsx)(s(),{href:"https://discord.gg/hHb6gqFpxZ",target:"_blank",rel:"noopener noreferrer",className:"flex items-center justify-center rounded-lg border border-human-3 px-6 py-3 transition duration-200 hover:bg-human-3/20",children:(0,a.jsx)("span",{className:"font-medium text-primary",children:"Get Help on Discord"})})]})]}),(0,a.jsx)("div",{className:"w-full max-w-2xl rounded-lg bg-glass p-4",children:(0,a.jsxs)("details",{className:"cursor-pointer",children:[(0,a.jsx)("summary",{className:"mb-3 font-medium text-primary",children:"Technical Details (click to expand)"}),(0,a.jsxs)("div",{className:"space-y-3",children:[(0,a.jsx)("p",{className:"text-sm text-secondary",children:"If you continue to experience this issue, please share the following error details with our support team on Discord:"}),(0,a.jsx)("code",{className:"block overflow-x-auto rounded bg-glass-strong p-3 text-xs text-secondary",children:(null==(t=this.state.error)?void 0:t.stack)||(null==(r=this.state.error)?void 0:r.toString())||"Unknown error"}),(0,a.jsxs)("p",{className:"text-tertiary text-xs",children:["Timestamp: ",new Date().toISOString()]})]})]})})]}),(0,a.jsx)(f.w,{})]})]})}return this.props.children}constructor(t){super(t),this.state={hasError:!1,isUnauthorized:!1,error:null}}}},20254:(t,r,i)=>{"use strict";i.d(r,{U:()=>a,f:()=>n});let a=["transformPerspective","x","y","z","translateX","translateY","translateZ","scale","scaleX","scaleY","rotate","rotateX","rotateY","rotateZ","skew","skewX","skewY"],n=new Set(a)},21300:(t,r,i)=>{"use strict";i.d(r,{KN:()=>s,gQ:()=>d,px:()=>o,uj:()=>n,vh:()=>l,vw:()=>u});let a=t=>({test:r=>"string"==typeof r&&r.endsWith(t)&&1===r.split(" ").length,parse:parseFloat,transform:r=>`${r}${t}`}),n=a("deg"),s=a("%"),o=a("px"),l=a("vh"),u=a("vw"),d={...s,parse:t=>s.parse(t)/100,transform:t=>s.transform(100*t)}},21419:(t,r,i)=>{"use strict";i.d(r,{G:()=>a});let a=t=>r=>1-t(1-r)},21623:(t,r,i)=>{"use strict";let a;i.d(r,{k:()=>l});var n=i(30785),s=i(81461);function o(){a=void 0}let l={now:()=>(void 0===a&&l.set(s.uv.isProcessing||n.W.useManualTiming?s.uv.timestamp:performance.now()),a),set:t=>{a=t,queueMicrotask(o)}}},23408:(t,r,i)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"getImgProps",{enumerable:!0,get:function(){return u}}),i(26201);let a=i(78637),n=i(89161),s=["-moz-initial","fill","none","scale-down",void 0];function o(t){return void 0!==t.default}function l(t){return void 0===t?t:"number"==typeof t?Number.isFinite(t)?t:NaN:"string"==typeof t&&/^[0-9]+$/.test(t)?parseInt(t,10):NaN}function u(t,r){var i,u;let d,c,h,{src:f,sizes:p,unoptimized:m=!1,priority:g=!1,loading:b,className:y,quality:v,width:_,height:w,fill:x=!1,style:$,overrideSrc:S,onLoad:k,onLoadingComplete:C,placeholder:E="empty",blurDataURL:T,fetchPriority:I,decoding:A="async",layout:N,objectFit:O,objectPosition:M,lazyBoundary:P,lazyRoot:R,...j}=t,{imgConf:z,showAltText:D,blurComplete:B,defaultLoader:L}=r,U=z||n.imageConfigDefault;if("allSizes"in U)d=U;else{let t=[...U.deviceSizes,...U.imageSizes].sort((t,r)=>t-r),r=U.deviceSizes.sort((t,r)=>t-r),a=null==(i=U.qualities)?void 0:i.sort((t,r)=>t-r);d={...U,allSizes:t,deviceSizes:r,qualities:a}}if(void 0===L)throw Object.defineProperty(Error("images.loaderFile detected but the file is missing default export.\nRead more: https://nextjs.org/docs/messages/invalid-images-config"),"__NEXT_ERROR_CODE",{value:"E163",enumerable:!1,
2775configurable:!0});let F=j.loader||L;delete j.loader,delete j.srcSet;let q="__next_img_default"in F;if(q){if("custom"===d.loader)throw Object.defineProperty(Error('Image with src "'+f+'" is missing "loader" prop.\nRead more: https://nextjs.org/docs/messages/next-image-missing-loader'),"__NEXT_ERROR_CODE",{value:"E252",enumerable:!1,configurable:!0})}else{let t=F;F=r=>{let{config:i,...a}=r;return t(a)}}if(N){"fill"===N&&(x=!0);let t={intrinsic:{maxWidth:"100%",height:"auto"},responsive:{width:"100%",height:"auto"}}[N];t&&($={...$,...t});let r={responsive:"100vw",fill:"100vw"}[N];r&&!p&&(p=r)}let V="",W=l(_),H=l(w);if((u=f)&&"object"==typeof u&&(o(u)||void 0!==u.src)){let t=o(f)?f.default:f;if(!t.src)throw Object.defineProperty(Error("An object should only be passed to the image component src parameter if it comes from a static image import. It must include src. Received "+JSON.stringify(t)),"__NEXT_ERROR_CODE",{value:"E460",enumerable:!1,configurable:!0});if(!t.height||!t.width)throw Object.defineProperty(Error("An object should only be passed to the image component src parameter if it comes from a static image import. It must include height and width. Received "+JSON.stringify(t)),"__NEXT_ERROR_CODE",{value:"E48",enumerable:!1,configurable:!0});if(c=t.blurWidth,h=t.blurHeight,T=T||t.blurDataURL,V=t.src,!x)if(W||H){
2775if(W&&!H){let r=W/t.width;H=Math.round(t.height*r)}else if(!W&&H){let r=H/t.height;W=Math.round(t.width*r)}}else W=t.width,H=t.height}let G=!g&&("lazy"===b||void 0===b);(!(f="string"==typeof f?f:V)||f.startsWith("data:")||f.startsWith("blob:"))&&(m=!0,G=!1),d.unoptimized&&(m=!0),q&&!d.dangerouslyAllowSVG&&f.split("?",1)[0].endsWith(".svg")&&(m=!0);let K=l(v),Y=Object.assign(x?{position:"absolute",height:"100%",width:"100%",left:0,top:0,right:0,bottom:0,objectFit:O,objectPosition:M}:{},D?{}:{color:"transparent"},$),Q=B||"empty"===E?null:"blur"===E?'url("data:image/svg+xml;charset=utf-8,'+(0,a.getImageBlurSvg)({widthInt:W,heightInt:H,blurWidth:c,blurHeight:h,blurDataURL:T||"",objectFit:Y.objectFit})+'")':'url("'+E+'")',X=s.includes(Y.objectFit)?"fill"===Y.objectFit?"100% 100%":"cover":Y.objectFit,Z=Q?{backgroundSize:X,backgroundPosition:Y.objectPosition||"50% 50%",backgroundRepeat:"no-repeat",backgroundImage:Q}:{},J=function(t){let{config:r,src:i,unoptimized:a,width:n,quality:s,sizes:o,loader:l}=t;if(a)return{src:i,srcSet:void 0,sizes:void 0};let{widths:u,kind:d}=function(t,r,i){let{deviceSizes:a,allSizes:n}=t;if(i){let t=/(^|\s)(1?\d?\d)vw/g,r=[];for(let a;a=t.exec(i);)r.push(parseInt(a[2]));if(r.length){let t=.01*Math.min(...r);return{widths:n.filter(r=>r>=a[0]*t),kind:"w"}}return{widths:n,kind:"w"}}return"number"!=typeof r?{widths:a,kind:"w"}:{widths:[...new Set([r,2*r].map(t=>n.find(r=>r>=t)||n[n.length-1]))],kind:"x"}}(r,n,o),c=u.length-1;return{sizes:o||"w"!==d?o:"100vw",srcSet:u.map((t,a)=>l({config:r,src:i,quality:s,width:t})+" "+("w"===d?t:a+1)+d).join(", "),src:l({config:r,src:i,quality:s,width:u[c]})}}({config:d,src:f,unoptimized:m,width:W,quality:K,sizes:p,loader:F});return{props:{...j,loading:G?"lazy":b,fetchPriority:I,width:W,height:H,decoding:A,className:y,style:{...Y,...Z},sizes:J.sizes,srcSet:J.srcSet,src:S||J.src},meta:{unoptimized:m,priority:g,placeholder:E,fill:x}}}},24044:(t,r,i)=>{"use strict";i.d(r,{i:()=>n});var a=i(42034);let n=async t=>{let r=await fetch((0,a.c)("opening/log_opening_drill"),{method:"POST",headers:{Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify(t)});if(401===r.status)throw Error("Unauthorized");if(!r.ok)throw Error("Failed to log opening drill: ".concat(r.statusText))}},24237:(t,r,i)=>{"use strict";i.d(r,{Sz:()=>o,ZZ:()=>u,dg:()=>l});var a=i(55886),n=i(30904),s=i(21419);let o=(0,a.A)(.33,1.53,.69,.99),l=(0,s.G)(o),u=(0,n.V)(l)},24468:(t,r,i)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),!function(t,r){for(var i in r)Object.defineProperty(t,i,{enumerable:!0,get:r[i]})}(r,{default:function(){return u},getImageProps:function(){return l}});let a=i(64252),n=i(23408),s=i(39420),o=a._(i(75540));function l(t){let{props:r}=(0,n.getImgProps)(t,{defaultLoader:o.default,imgConf:{deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[16,32,48,64,96,128,256,384],path:"/_next/image",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!1}});for(let[t,i]of Object.entries(r))void 0===i&&delete r[t];return{props:r}}let u=s.Image},25059:(t,r,i)=>{"use strict";i.r(r),i.d(r,{default:()=>U});var a=i(37876),n=i(77328),s=i.n(n),o=i(97685),l=i(45105),u=i.n(l),d=i(89099),c=i(14232),h=i(36854),f=i(65364);function p(){return"undefined"!=typeof window}function m(){return"production"}function g(){return"development"===((p()?window.vam:m())||"production")}function b(t){return(0,c.useEffect)(()=>{var r;t.beforeSend&&(null==(r=window.va)||r.call(window,"beforeSend",t.beforeSend))},[t.beforeSend]),(0,c.useEffect)(()=>{!function(t={debug:!0}){var r;if(!p())return;!function(t="auto"){if("auto"===t){window.vam=m();return}window.vam=t}(t.mode),window.va||(window.va=function(...t){(window.vaq=window.vaq||[]).push(t)}),t.beforeSend&&(null==(r=window.va)||r.call(window,"beforeSend",t.beforeSend));let i=t.scriptSrc?t.scriptSrc:g()?"https://va.vercel-scripts.com/v1/script.debug.js":t.basePath?`${t.basePath}/insights/script.js`:"/_vercel/insights/script.js";if(document.head.querySelector(`script[src*="${i}"]`))return;let a=document.createElement("script");
2775a.src=i,a.defer=!0,a.dataset.sdkn="@vercel/analytics"+(t.framework?`/${t.framework}`:""),a.dataset.sdkv="1.5.0",t.disableAutoTrack&&(a.dataset.disableAutoTrack="1"),t.endpoint?a.dataset.endpoint=t.endpoint:t.basePath&&(a.dataset.endpoint=`${t.basePath}/insights`),t.dsn&&(a.dataset.dsn=t.dsn),a.onerror=()=>{let t=g()?"Please check if any ad blockers are enabled and try again.":"Be sure to enable Web Analytics for your project and deploy again. See https://vercel.com/docs/analytics/quickstart for more information.";console.log(`[Vercel Web Analytics] Failed to load script from ${i}. ${t}`)},g()&&!1===t.debug&&(a.dataset.debug="false"),document.head.appendChild(a)}({framework:t.framework||"react",basePath:t.basePath??function(){if(void 0!==f&&void 0!==f.env)return f.env.REACT_APP_VERCEL_OBSERVABILITY_BASEPATH}(),...void 0!==t.route&&{disableAutoTrack:!0},...t})},[]),(0,c.useEffect)(()=>{t.route&&t.path&&function({route:t,path:r}){var i;null==(i=window.va)||i.call(window,"pageview",{route:t,path:r})}({route:t.route,path:t.path})},[t.route,t.path]),null}var y=(0,c.createContext)({client:h.Ay});function v(t){var r=t.children,i=t.client,a=t.apiKey,n=t.options,s=(0,c.useRef)(null),o=(0,c.useMemo)(function(){return i?(a&&console.warn("[PostHog.js] You have provided both `client` and `apiKey` to `PostHogProvider`. `apiKey` will be ignored in favour of `client`."),n&&console.warn("[PostHog.js] You have provided both `client` and `options` to `PostHogProvider`. `options` will be ignored in favour of `client`."),i):(a||console.warn("[PostHog.js] No `apiKey` or `client` were provided to `PostHogProvider`. Using default global `window.posthog` instance. You must initialize it manually. This is not recommended behavior."),h.Ay)},[i,a,JSON.stringify(n)]);return(0,c.useEffect)(function(){if(!i){var t=s.current;t?(a!==t.apiKey&&console.warn("[PostHog.js] You have provided a different `apiKey` to `PostHogProvider` than the one that was already initialized. This is not supported by our provider and we'll keep using the previous key. If you need to toggle between API Keys you need to control the `client` yourself and pass it in as a prop rather than an `apiKey` prop."),n&&!function t(r,i,a){if(void 0===a&&(a=new WeakMap),r===i)return!0;if("object"!=typeof r||null===r||"object"!=typeof i||null===i)return!1;if(a.has(r)&&a.get(r)===i)return!0;a.set(r,i);var n=Object.keys(r),s=Object.keys(i);if(n.length!==s.length)return!1;for(var o=0;o<n.length;o++){var l=n[o];if(!s.includes(l)||!t(r[l],i[l],a))return!1}return!0}(n,t.options)&&h.Ay.set_config(n)):(h.Ay.__loaded&&console.warn("[PostHog.js] `posthog` was already loaded elsewhere. This may cause issues."),h.Ay.init(a,n)),s.current={apiKey:a,options:null!=n?n:{}}}},[i,a,JSON.stringify(n)]),c.createElement(y.Provider,{value:{client:o}},r)}var _=function(t,r){return(_=Object.setPrototypeOf||({__proto__:[]})instanceof Array&&function(t,r){t.__proto__=r}||function(t,r){for(var i in r)Object.prototype.hasOwnProperty.call(r,i)&&(t[i]=r[i])})(t,r)};"function"==typeof SuppressedError&&SuppressedError;var w=function(t){return"function"==typeof t},x={componentStack:null,error:null},$={INVALID_FALLBACK:"[PostHog.js][PostHogErrorBoundary] Invalid fallback prop, provide a valid React element or a function that returns a valid React element."};!function(t){if("function"!=typeof t&&null!==t)throw TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=i}function i(r){var i=t.call(this,r)||this;return i.state=x,i}_(i,t),i.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r),i.prototype.componentDidCatch=function(t,r){var i,a=r.componentStack,n=this.props.additionalProperties;this.setState({error:t,componentStack:a}),w(n)?i=n(t):"object"==typeof n&&(i=n),this.context.client.captureException(t,i)},i.prototype.render=function(){var t=this.props,r=t.children,i=t.fallback,a=this.state;if(null==a.componentStack)return w(r)?r():r;var n=w(i)?c.createElement(i,{error:a.error,componentStack:a.componentStack}):i;return c.isValidElement(n)?n:(console.warn($.INVALID_FALLBACK),c.createElement(c.Fragment,null))},i.contextType=y}(c.Component);var S=i(76123),k=i(85888),C=i(55892),E=i(9504),T=i(91749),I=i(11391),A=i(12152),N=i(87003),O=i(94139);i(18874),i(12732),i(87865),i(26389),i(49574),i(63163);var M=i(41087),P=i(19583),R=i(25968),j=i(17416),z=i(27942),D=i(42246);let B="https://www.maiachess.com/assets/og-maia.png",L="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@24,200..400,0..1,0&display=swap",U=function(t){let{Component:r,pageProps:i}=t,n=(0,d.useRouter)(),l=n.pathname.startsWith("/analysis"),f=["/analysis","/drills","/puzzles","/settings","/broadcast"].some(t=>n.pathname.includes(t)),p=["/analysis","/drills","/puzzles","/broadcast"].some(t=>n.pathname.includes(t));return(0,c.useEffect)(()=>{h.Ay.init("phc_m3vnfVEor992YayqRovInRzEERrYVp7J1HER71ZmgKa",{api_host:"/ingest",ui_host:"https://us.posthog.com",...D.j,capture_exceptions:!0,debug:!1})},[]),(0,c.useEffect)(()=>{let t=document.documentElement,r=()=>{t.classList.add("material-symbols-ready")};if(!("fonts"in document)||document.fonts.check('24px "Material Symbols Outlined"'))return void r();document.fonts.load('24px "Material Symbols Outlined"').then(r).catch(()=>void 0)},[]),(0,a.jsx)(v,{client:h.Ay,children:(0,a.jsx)(N.A,{children:(0,a.jsxs)(M.L,{components:[I.Z,S.d,O.Am,C.h,P.t,T.i,...f?[E.t]:[],...p?[A.Z]:[],...l?[k.h]:[]],children:[(0,a.jsxs)(s(),{children:[(0,a.jsx)("link",{rel:"icon",type:"image/png",href:"/favicon.png"}
2775),(0,a.jsx)("link",{rel:"preconnect",href:"https://fonts.googleapis.com"}),(0,a.jsx)("link",{rel:"preconnect",href:"https://fonts.gstatic.com",crossOrigin:"anonymous"}),(0,a.jsx)("link",{rel:"preload",as:"style",href:L}),(0,a.jsx)("link",{rel:"stylesheet",href:L}),(0,a.jsx)("noscript",{children:(0,a.jsx)("link",{rel:"stylesheet",href:L})}),(0,a.jsx)("style",{dangerouslySetInnerHTML:{__html:"html:not(.material-symbols-ready) .material-symbols-outlined{visibility:hidden}"}}),(0,a.jsx)("meta",{name:"apple-mobile-web-app-capable",content:"yes"}),(0,a.jsx)("meta",{name:"apple-mobile-web-app-status-bar-style",content:"default"}),(0,a.jsx)("meta",{name:"viewport",content:"width=device-width, initial-scale=1"}),(0,a.jsx)("meta",{name:"apple-mobile-web-app-title",content:"Maia Chess"}),(0,a.jsx)("link",{rel:"apple-touch-icon",href:"/maia-ios-icon.png"}),(0,a.jsx)("meta",{property:"og:image",content:B}),(0,a.jsx)("meta",{property:"og:image:url",content:B}),(0,a.jsx)("meta",{property:"og:image:secure_url",content:B}),(0,a.jsx)("meta",{property:"og:image:alt",content:"Maia Chess"}),(0,a.jsx)("meta",{property:"og:image:type",content:"image/png"}),(0,a.jsx)("meta",{property:"og:image:width",content:"1200"}),(0,a.jsx)("meta",{property:"og:image:height",content:"630"}),(0,a.jsx)("meta",{property:"og:site_name",content:"Maia Chess"}),(0,a.jsx)("meta",{name:"twitter:card",content:"summary_large_image"}),(0,a.jsx)("meta",{name:"twitter:image",content:B}),(0,a.jsx)("meta",{name:"twitter:image:src",content:B}),(0,a.jsx)("meta",{name:"twitter:image:alt",content:"Maia Chess"})]}),(0,a.jsxs)("div",{className:"".concat("font-sans"," app-container"),children:[(0,a.jsx)(z.Y,{}),(0,a.jsxs)("div",{className:"content-container",children:[(0,a.jsx)("div",{className:"pointer-events-none fixed inset-0",style:{background:"radial-gradient(ellipse 120% 80% at center top, rgba(239, 68, 68, 0.08) 0%, transparent 75%)"}}),(0,a.jsx)(r,{...i})]}),(0,a.jsx)(j.w,{}),(0,a.jsx)(R.O,{})]}),(0,a.jsx)(o.l$,{position:"bottom-right"}),(0,a.jsx)(b,{}),(0,a.jsx)(u(),{async:!0,src:"/analytics.js?id=G-SNP84LXLKY"}),(0,a.jsx)(u(),{id:"analytics",children:"\n window.dataLayer = window.dataLayer || [];\n function gtag(){dataLayer.push(arguments);}\n gtag('js', new Date());\n\n gtag('config', 'G-SNP84LXLKY');\n "})]})})})}},25968:(t,r,i)=>{"use strict";i.d(r,{O:()=>o});var a=i(37876),n=i(14232),s=i(55892);let o=()=>{let{user:t}=(0,n.useContext)(s.c);return(null==t?void 0:t.lichessId)?(0,a.jsx)("button",{id:"feedback-button",className:"fixed bottom-8 right-8 z-20 flex h-12 w-12 items-center justify-center rounded-full border border-glass-border bg-glass-strong backdrop-blur-md transition-all duration-200 hover:bg-glass-stronger",children:(0,a.jsx)("span",{className:"material-symbols-outlined material-symbols-filled text-primary",children:"feedback"})}):null}},26389:()=>{},26474:(t,r,i)=>{"use strict";i.d(r,{Y:()=>d});var a=i(37876),n=i(14232),s=i(48230),o=i.n(s),l=i(27212),u=i(54256);let d=t=>{let{status:r,loading:i=!1}=t,[s,d]=(0,n.useState)(!1);return!r.isOnLeaderboard||i?null:(0,a.jsxs)("div",{className:"relative",onMouseEnter:()=>d(!0),onMouseLeave:()=>d(!1),children:[(0,a.jsx)("div",{className:"flex cursor-pointer items-center justify-center",children:(0,a.jsxs)("div",{className:"relative",children:[(0,a.jsx)("span",{className:"material-symbols-outlined material-symbols-filled !text-2xl text-yellow-500",children:"trophy"}),r.totalLeaderboards>0&&(0,a.jsx)("span",{className:"absolute right-0 top-0 flex h-3 w-3 items-center justify-center rounded-full bg-green-500 text-[8px] font-semibold text-white",children:r.totalLeaderboards})]})}),(0,a.jsx)(l.N,{children:s&&(0,a.jsxs)(u.P.div,{initial:{opacity:0,y:-10},animate:{opacity:1,y:0},exit:{opacity:0,y:-10},transition:{duration:.2},className:"absolute right-0 top-full z-50 w-64 overflow-hidden rounded-md border border-glass-border text-white/90 shadow-lg",style:{background:"radial-gradient(ellipse 110% 90% at 20% 10%, rgba(239, 68, 68, 0.10) 0%, rgba(239, 68, 68, 0.06) 35%, transparent 75%), #171214"},children:[(0,a.jsx)("div",{className:"border-b border-glass-border px-3 py-2",children:(0,a.jsx)("h3",{className:"text-sm font-medium text-white/90",children:"You're on the leaderboard!"})}),(0,a.jsx)("div",{className:"flex flex-col",children:r.positions.map(t=>(0,a.jsxs)(o(),{href:"/leaderboard",className:"flex items-center justify-between px-3 py-2 text-white/90 transition-colors hover:bg-[rgba(255,255,255,0.04)]",children:[(0,a.jsxs)("div",{className:"flex flex-col",children:[(0,a.jsx)("span",{className:"text-sm font-medium text-white/90",children:t.gameName}),(0,a.jsxs)("span",{className:"text-xs text-secondary",children:["Rating: ",t.elo]})]}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[t.position<=3&&(0,a.jsx)("span",{className:"material-symbols-outlined !text-lg text-yellow-500",children:"workspace_premium"}),(0,a.jsxs)("span",{className:"text-base font-semibold text-yellow-500",children:["#",t.position]})]})]},t.gameType))}),(0,a.jsx)("div",{className:"border-t border-glass-border px-3 py-2",children:(0,a.jsx)(o(),{href:"/leaderboard",className:"text-xs text-secondary hover:text-primary",children:"View full leaderboard →"})})]})})]})}},27212:(t,r,i)=>{"use strict";i.d(r,{N:()=>y});var a=i(37876),n=i(14232),s=i(5048),o=i(91200),l=i(3866),u=i(39751);class d extends n.Component{getSnapshotBeforeUpdate(t){let r=this.props.childRef.current;if(r&&t.isPresent&&!this.props.isPresent){let t=this.props.sizeRef.current;t.height=r.offsetHeight||0,t.width=r.offsetWidth||0,t.top=r.offsetTop,t.left=r.offsetLeft}return null}componentDidUpdate(){}render(){return this.props.children}}function c({children:t,isPresent:r}){let i=(0,n.useId)(),s=(0,n.useRef)(null),o=(0,n.useRef)({width:0,height:0,top:0,left:0}),{nonce:l}=(0,n.useContext)(u.Q);return(0,n.useInsertionEffect)(()=>{let{width:t,height:a,top:n,left:u}=o.current;if(r||!s.current||!t||!a)return;s.current.dataset.motionPopId=i;let d=document.createElement("style");return l&&(d.nonce=l),document.head.appendChild(d),d.sheet&&d.sheet.insertRule(` 2776 [data-motion-pop-id="${i}"] { 2777 position: absolute !important; 2778 width: ${t}px !important; 2779 height: ${a}px !important; 2780 top: ${n}px !important; 2781 left: ${u}px !important; 2782 } 2783 `),()=>{document.head.removeChild(d)}},[r]),(0,a.jsx)(d,{isPresent:r,childRef:s,sizeRef:o,children:n.cloneElement(t,{ref:s})})}let h=({children:t,initial:r,isPresent:i,onExitComplete:s,custom:u,presenceAffectsLayout:d,mode:h})=>{let p=(0,o.M)(f),m=(0,n.useId)(),g=(0,n.useCallback)(t=>
2783{for(let r of(p.set(t,!0),p.values()))if(!r)return;s&&s()},[p,s]),b=(0,n.useMemo)(()=>({id:m,initial:r,isPresent:i,custom:u,onExitComplete:g,register:t=>(p.set(t,!1),()=>p.delete(t))}),d?[Math.random(),g]:[i,g]);return(0,n.useMemo)(()=>{p.forEach((t,r)=>p.set(r,!1))},[i]),n.useEffect(()=>{i||p.size||!s||s()},[i]),"popLayout"===h&&(t=(0,a.jsx)(c,{isPresent:i,children:t})),(0,a.jsx)(l.t.Provider,{value:b,children:t})};function f(){return new Map}var p=i(83885);let m=t=>t.key||"";function g(t){let r=[];return n.Children.forEach(t,t=>{(0,n.isValidElement)(t)&&r.push(t)}),r}var b=i(50181);let y=({children:t,custom:r,initial:i=!0,onExitComplete:l,presenceAffectsLayout:u=!0,mode:d="sync",propagate:c=!1})=>{let[f,y]=(0,p.xQ)(c),v=(0,n.useMemo)(()=>g(t),[t]),_=c&&!f?[]:v.map(m),w=(0,n.useRef)(!0),x=(0,n.useRef)(v),$=(0,o.M)(()=>new Map),[S,k]=(0,n.useState)(v),[C,E]=(0,n.useState)(v);(0,b.E)(()=>{w.current=!1,x.current=v;for(let t=0;t<C.length;t++){let r=m(C[t]);_.includes(r)?$.delete(r):!0!==$.get(r)&&$.set(r,!1)}},[C,_.length,_.join("-")]);let T=[];if(v!==S){let t=[...v];for(let r=0;r<C.length;r++){let i=C[r],a=m(i);_.includes(a)||(t.splice(r,0,i),T.push(i))}"wait"===d&&T.length&&(t=T),E(g(t)),k(v);return}let{forceRender:I}=(0,n.useContext)(s.L);return(0,a.jsx)(a.Fragment,{children:C.map(t=>{let n=m(t),s=(!c||!!f)&&(v===C||_.includes(n));return(0,a.jsx)(h,{isPresent:s,initial:(!w.current||!!i)&&void 0,custom:s?void 0:r,presenceAffectsLayout:u,mode:d,onExitComplete:s?void 0:()=>{if(!$.has(n))return;$.set(n,!0);let t=!0;$.forEach(r=>{r||(t=!1)}),t&&(null==I||I(),E(x.current),c&&(null==y||y()),l&&l())},children:t},n)})})}},27942:(t,r,i)=>{"use strict";i.d(r,{Y:()=>v});var a=i(37876),n=i(48230),s=i.n(n),o=i(54587),l=i.n(o),u=i(89099),d=i(86493),c=i(14232),h=i(54256),f=i(27212),p=i(55892),m=i(91749),g=i(94139),b=i(26474),y=i(30525);let v=()=>{let[t,r]=(0,c.useState)(!1),[i,n]=(0,c.useState)(!1),[o,v]=(0,c.useState)(!1),[_,w]=(0,c.useState)(!1),{isMobile:x,width:$}=(0,c.useContext)(g.lh),{user:S,connectLichess:k,logout:C}=(0,c.useContext)(p.c),{status:E,loading:T}=(0,y.d)(null==S?void 0:S.displayName),I=(0,u.useRouter)(),{setPlaySetupModalProps:A}=(0,c.useContext)(m.V),N=!x&&$>0&&$<1300,O=(0,c.useCallback)(t=>{"undefined"!=typeof document&&document.activeElement instanceof HTMLElement&&document.activeElement.blur(),A({playType:t})},[A]);(0,c.useEffect)(()=>()=>A(void 0),[A]),(0,c.useEffect)(()=>{let t=()=>{r(!1)};return I.events.on("routeChangeStart",t),()=>{I.events.off("routeChangeStart",t)}},[I]),(0,c.useEffect)(()=>(t?document.body.style.overflow="hidden":document.body.style.overflow="unset",()=>{document.body.style.overflow="unset"}),[t]);let M=(null==S?void 0:S.lichessId)?(0,a.jsxs)("div",{className:"relative flex items-center gap-2 rounded-full border border-glass-border bg-backdrop px-3 py-1.5 transition-all duration-200 hover:border-white/20",onMouseEnter:()=>w(!0),onMouseLeave:()=>w(!1),children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-xl text-primary/80",children:"account_circle"}),(0,a.jsx)("span",{className:"text-sm font-medium text-primary/90",children:null==S?void 0:S.displayName}),(0,a.jsx)(h.P.i,{className:"material-symbols-outlined text-sm text-primary/60",animate:{rotate:180*!!_},transition:{duration:.2},children:"arrow_drop_down"}),(0,a.jsx)(f.N,{children:_&&(0,a.jsx)(h.P.div,{initial:{opacity:0,y:-10},animate:{opacity:1,y:0},exit:{opacity:0,y:-10},transition:{duration:.2},className:"absolute bottom-[100%] left-0 z-50 w-full overflow-hidden rounded-md border border-glass-border bg-backdrop md:bottom-auto md:top-[100%]",children:(0,a.jsxs)("div",{className:"divide-y divide-glass-border tracking-wide",children:[(0,a.jsx)(s(),{href:"/profile",className:"flex w-full items-center justify-start px-3 py-2 text-sm text-primary transition-colors hover:bg-glass",children:"Profile"}),(0,a.jsx)(s(),{href:"/settings",className:"flex w-full items-center justify-start px-3 py-2 text-sm text-primary transition-colors hover:bg-glass",children:"Settings"}),(0,a.jsx)("button",{onClick:C,className:"flex w-full items-center justify-start px-3 py-2 text-sm text-primary transition-colors hover:bg-glass",children:"Logout"})]})})})]}):(0,a.jsx)("button",{onClick:k,className:"px-2 py-1 text-sm tracking-wide text-primary/80 transition-all duration-200 hover:text-primary",children:"Sign in"}),P=(0,a.jsxs)("div",{className:"flex w-[90%] flex-row items-center justify-between",children:[(0,a.jsxs)("div",{className:"flex flex-row items-center justify-start gap-6",children:[(0,a.jsxs)(s(),{href:"/",className:"flex flex-row items-center gap-2",children:[(0,a.jsx)(l(),{src:"/maia-ios-icon.png",width:40,height:40,alt:"Maia Logo"}),(0,a.jsx)("h2",{className:"text-2xl font-bold",children:"Maia Chess"})]}),(0,a.jsxs)("div",{className:"hidden flex-row items-center gap-1 text-sm tracking-wider md:flex",children:[(0,a.jsxs)("div",{className:"relative",onMouseEnter:()=>n(!0),onMouseLeave:()=>n(!1),children:[(0,a.jsxs)("button",{className:"-gap-1 flex items-center px-2 py-1 transition-all duration-200 hover:!text-primary ".concat(I.pathname.startsWith("/play")?"!text-primary":"!text-primary/80"),children:[(0,a.jsx)("p",{children:"PLAY"}
2783),(0,a.jsx)(h.P.i,{className:"material-symbols-outlined text-sm",animate:{rotate:180*!!i},transition:{duration:.2},children:"arrow_drop_down"})]}),(0,a.jsx)(f.N,{children:i&&(0,a.jsx)(h.P.div,{initial:{opacity:0,y:-10},animate:{opacity:1,y:0},exit:{opacity:0,y:-10},transition:{duration:.2},className:"absolute left-0 top-[100%] z-30 w-48 overflow-hidden rounded-md border border-glass-border bg-backdrop",children:(0,a.jsxs)("div",{className:"divide-y divide-glass-border tracking-wide",children:[(0,a.jsx)("button",{onClick:()=>O("againstMaia"),className:"flex w-full items-center justify-start px-3 py-2 text-sm text-primary transition-colors hover:bg-glass",children:"Play Maia"}),(0,a.jsx)("button",{onClick:()=>O("handAndBrain"),className:"flex w-full items-center justify-start px-3 py-2 text-sm text-primary transition-colors hover:bg-glass",children:"Play Hand and Brain"}),(0,a.jsx)("a",{className:"flex w-full items-center justify-start px-3 py-2 text-sm text-primary transition-colors hover:bg-glass",href:"https://lichess.org/@/maia1",target:"_blank",rel:"noreferrer",children:"Play Maia on Lichess"})]})})})]}),(0,a.jsx)(s(),{href:"/analysis",className:"px-2 py-1 transition-all duration-200 hover:!text-primary ".concat(I.pathname.startsWith("/analysis")?"!text-primary":"!text-primary/80"),children:"ANALYSIS"}),(0,a.jsx)(s(),{href:"/puzzles",className:"px-2 py-1 transition-all duration-200 hover:!text-primary ".concat(I.pathname.startsWith("/puzzles")?"!text-primary":"!text-primary/80"),children:"PUZZLES"}),(0,a.jsx)(s(),{href:"/drills",className:"px-2 py-1 transition-all duration-200 hover:!text-primary ".concat(I.pathname.startsWith("/drills")?"!text-primary":"!text-primary/80"),children:"DRILLS"}),(0,a.jsx)(s(),{href:"/turing",className:"px-2 py-1 transition-all duration-200 hover:!text-primary ".concat(I.pathname.startsWith("/turing")?"!text-primary":"!text-primary/80"),children:"BOT-OR-NOT"}),!N&&(0,a.jsx)(s(),{href:"/broadcast",className:"px-2 py-1 transition-all duration-200 hover:!text-primary ".concat(I.pathname.startsWith("/broadcast")?"!text-primary":"!text-primary/80"),children:"BROADCASTS"}),(0,a.jsxs)("div",{className:"relative",onMouseEnter:()=>v(!0),onMouseLeave:()=>v(!1),children:[(0,a.jsxs)("button",{className:"-gap-1 flex items-center px-2 py-1 !text-primary/80 transition-all duration-200 hover:!text-primary",children:[(0,a.jsx)("p",{children:"MORE"}),(0,a.jsx)(h.P.i,{className:"material-symbols-outlined text-sm",animate:{rotate:180*!!o},transition:{duration:.2},children:"arrow_drop_down"})]}),(0,a.jsx)(f.N,{children:o&&(0,a.jsx)(h.P.div,{initial:{opacity:0,y:-10},animate:{opacity:1,y:0},exit:{opacity:0,y:-10},transition:{duration:.2},className:"absolute left-0 top-[100%] z-30 w-32 overflow-hidden rounded-md border border-glass-border bg-backdrop",children:(0,a.jsxs)("div",{className:"divide-y divide-glass-border tracking-wide",children:[N&&(0,a.jsx)(s(),{href:"/broadcast",className:"flex w-full items-center justify-start px-3 py-2 text-sm transition-colors hover:bg-glass ".concat(I.pathname.startsWith("/broadcast")?"text-primary":"text-white/90"),children:"Broadcasts"}),(0,a.jsx)(s(),{href:"/leaderboard",className:"flex w-full items-center justify-start px-3 py-2 text-sm transition-colors hover:bg-glass ".concat(I.pathname.startsWith("/leaderboard")?"text-primary":"text-white/90"),children:"Leaderboard"}),(0,a.jsx)(s(),{href:"/blog",className:"flex w-full items-center justify-start px-3 py-2 text-sm text-white/90 transition-colors hover:bg-glass",children:"Maia Blog"})]})})})]})]})]}),(0,a.jsxs)("div",{className:"hidden flex-row items-center gap-3 md:flex",children:[(0,a.jsx)("a",{target:"_blank",rel:"noreferrer",href:"https://discord.gg/Az93GqEAs7",children:d.EI}),(null==S?void 0:S.lichessId)&&(0,a.jsx)(b.Y,{status:E,loading:T}),M]})]}),R=(0,a.jsxs)("div",{className:"flex w-full flex-row justify-between px-4",children:[(0,a.jsx)(s(),{href:"/",passHref:!0,children:(0,a.jsxs)("div",{className:"flex flex-row items-center gap-2",children:[(0,a.jsx)(l(),{src:"/maia-ios-icon.png",width:40,height:40,alt:"Maia Logo"}),(0,a.jsx)("h2",{className:"text-2xl font-bold",children:"Maia Chess"})]})}),(0,a.jsx)("button",{"aria-label":"Open navigation menu",className:"block cursor-pointer *:*:fill-primary",onClick:()=>r(t=>!t),children:(0,a.jsx)("span",{className:"material-symbols-outlined text-3xl",children:"menu"})}),t&&(0,a.jsxs)("div",{className:"fixed left-0 top-0 z-40 flex h-screen w-screen flex-col items-start justify-between overflow-y-auto bg-backdrop py-4",children:[(0,a.jsxs)("div",{className:"flex w-full flex-row justify-between px-4",children:[(0,a.jsx)(s(),{href:"/",passHref:!0,children:(0,a.jsxs)("div",{className:"flex flex-row items-center gap-2",children:[(0,a.jsx)(l(),{src:"/maia-ios-icon.png",width:40,height:40,alt:"Maia Logo"}),(0,a.jsx)("h2",{className:"text-2xl font-bold",children:"Maia Chess"})]})}),(0,a.jsx)("button",{"aria-label":"Close navigation menu",className:"block cursor-pointer *:*:fill-primary",onClick:()=>r(!1),children:(0,a.jsx)("span",{className:"material-symbols-outlined text-3xl",children:"menu"})})]}),(0,a.jsxs)("div",{className:"flex w-full flex-1 flex-col gap-5 overflow-y-auto px-12 py-6 tracking-wider",children:[(0,a.jsxs)("div",{className:"flex flex-col items-start justify-center gap-3",children:[(0,a.jsx)("button",{children:"PLAY"}),(0,a.jsxs)("div",{className:"ml-4 flex flex-col items-start justify-center gap-2",children:[(0,a.jsx)("button",{onClick:()=>{r(!1),O("againstMaia")},children:"Play Maia"}),(0,a.jsx)("button",{onClick:()=>{r(!1),O("handAndBrain")},children:"Play Hand and Brain"}),(0,a.jsx)("a",{href:"https://lichess.org/@/maia1",target:"_blank",rel:"noreferrer",onClick:()=>r(!1),children:"Play Maia on Lichess"})]})]}),(0,a.jsx)(s(),{href:"/analysis",className:"uppercase",children:"Analysis"}),(0,a.jsx)(s(),{href:"/puzzles",className:"uppercase",children:"Puzzles"}),(0,a.jsx)(s(),{href:"/drills",className:"uppercase",children:"Drills"}),(0,a.jsx)(s(),{href:"/turing",className:"uppercase",children:"Bot-or-not"}),(0,a.jsx)(s(),{href:"/broadcast",className:"uppercase",children:"Broadcasts"}),(0,a.jsx)(s(),{href:"/leaderboard",className:"uppercase",children:"Leaderboard"}),(0,a.jsx)(s(),{href:"/blog",className:"uppercase",children:"Maia Blog"}),(0,a.jsx)("a",{target:"_blank",rel:"noreferrer",href:"https://discord.gg/Az93GqEAs7",className:"uppercase",onClick:()=>r(!1),children:"Discord"}),(null==S?void 0:S.lichessId)&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(s(),{href:"/profile",className:"uppercase",children:"Profile"}),(0,a.jsx)(s(),{href:"/settings",className:"uppercase",children:"Settings"}),(0,a.jsx)("button",{onClick:C,className:"text-left uppercase",children:"Logout"})]})]}),(0,a.jsxs)("div",{className:"flex w-full flex-row items-center gap-3 px-12",children:[(null==S?void 0:S.lichessId)&&(0,a.jsx)(b.Y,{status:E,loading:T}),(null==S?void 0:S.lichessId)?(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-2xl text-primary/80",children:"account_circle"}),(0,a.jsx)("span",{className:"text-lg font-medium tracking-wider text-primary/90",children:null==S?void 0:S.displayName})]}):(0,a.jsx)("button",{onClick:k,className:"uppercase",children:"Sign in"})]})]})]});return(0,a.jsx)(a.Fragment,{children:(0,a.jsx)("div",{"data-component":"app-header",className:"flex w-screen flex-row items-center justify-center pb-1 pt-4 md:pb-0",children:x?R:P})})}},28404:(t,r,i)=>{"use strict";i.d(r,{b:()=>n});var a=i(24237);let n=t=>(t*=2)<1?.5*(0,a.dg)(t):.5*(2-Math.pow(2,-10*(t-1)))},28670:(t,r,i)=>{"use strict";i.d(r,{V:()=>l});var a=i(49037),n=i(21300),s=i(33439),o=i(31062);let l={test:(0,o.$)("hsl","hue"),parse:(0,o.q)("hue","saturation","lightness"),transform:({hue:t,saturation:r,lightness:i,alpha:o=1})=>"hsla("+Math.round(t)+", "+n.KN.transform((0,s.a)(r))+", "+n.KN.transform((0,s.a)(i))+", "+(0,s.a)(a.X4.transform(o))+")"}},29610:(t,r,i)=>{"use strict";
2783Object.defineProperty(r,"__esModule",{value:!0}),r.validateMove=r.getBoard=r.ascii=r.buildMove=r.makeMove=r.insufficientMaterial=r.inStalemate=r.inCheckmate=r.inCheck=r.isKingAttacked=r.isAttacked=r.makePretty=r.sanToMove=r.moveToSan=r.generateMoves=r.removePiece=r.putPiece=r.clonePiece=r.cloneMove=r.getPiece=r.loadPgn=r.getPgn=r.loadFen=r.getFen=r.getDisambiguator=void 0;var a=i(6162),n=i(73198),s=i(18722);function o(t,r,i){for(var a=h(t,{legal:!i}),n=r.from,o=r.to,l=r.piece,u=0,d=0,c=0,f=0,p=a.length;f<p;f++){var m=a[f].from,g=a[f].to;l===a[f].piece&&n!==m&&o===g&&(u++,s.rank(n)===s.rank(m)&&d++,s.file(n)===s.file(m)&&c++)}if(u>0)if(d>0&&c>0)return s.algebraic(n);else if(c>0)return s.algebraic(n).charAt(1);else return s.algebraic(n).charAt(0);return""}function l(t){var r=t.split(/\s+/),i=r[0],o=0;if(!s.validateFen(t).valid)return null;for(var l=new n.State,u=0;u<i.length;u++){var d=i.charAt(u);if("/"===d)o+=8;else if(s.isDigit(d))o+=parseInt(d,10);else{var h=d<"a"?a.WHITE:a.BLACK,f=c(l,{type:d.toLowerCase(),color:h},s.algebraic(o));if(!f)return null;l=f,o++}}return l.turn=r[1]===a.BLACK?a.BLACK:a.WHITE,r[2].indexOf("K")>-1&&(l.castling.w|=a.BITS.KSIDE_CASTLE),r[2].indexOf("Q")>-1&&(l.castling.w|=a.BITS.QSIDE_CASTLE),r[2].indexOf("k")>-1&&(l.castling.b|=a.BITS.KSIDE_CASTLE),r[2].indexOf("q")>-1&&(l.castling.b|=a.BITS.QSIDE_CASTLE),l.ep_square="-"===r[3]?a.EMPTY:a.SQUARES[r[3]],l.half_moves=parseInt(r[4],10),l.move_number=parseInt(r[5],10),l}function u(t){return{to:t.to,from:t.from,color:t.color,flags:t.flags,piece:t.piece,captured:t.captured,promotion:t.promotion,san:t.san}}function d(t){return{color:t.color,type:t.type}}function c(t,r,i){var n=r.type,o=r.color;if(!n||!o||!i||(n=n.toLowerCase(),o=o.toLowerCase(),i=i.toLowerCase(),!s.isPieceSymbol(n)||!s.isColor(o)||!s.isSquare(i)))return null;var l=t.clone(),u=a.SQUARES[i];return n===a.KING&&l.kings[o]!==a.EMPTY&&l.kings[o]!==u?null:(l.board[u]={type:n,color:o},n===a.KING&&(l.kings[o]=u),l)}function h(t,r){void 0===r&&(r={});var i,n,o=r.legal,l=function(r,i,n,o,l){var u=r[n];if(u&&u.type===a.PAWN&&(s.rank(o)===a.RANK_8||s.rank(o)===a.RANK_1))for(var d=[a.QUEEN,a.ROOK,a.BISHOP,a.KNIGHT],c=0,h=d.length;c<h;c++)i.push(_(t,n,o,l,d[c]));else i.push(_(t,n,o,l))},u=[],d=t.turn,c=s.swapColor(d),h={b:a.RANK_7,w:a.RANK_2},f=a.SQUARES.a8,p=a.SQUARES.h1,b=!1,y=r.square;if(y){if(y=y.toLowerCase(),!s.isSquare(y))return[];f=p=a.SQUARES[y],b=!0}for(var w=f;w<=p;w++){if(136&w){w+=7;continue}var x=t.board[w];if(x&&x.color===d)if(x.type===a.PAWN){var $=w+a.PAWN_OFFSETS[d][0];if(!t.board[$]){l(t.board,u,w,$,a.BITS.NORMAL);var S=w+a.PAWN_OFFSETS[d][1];h[d]!==s.rank(w)||t.board[S]||l(t.board,u,w,S,a.BITS.BIG_PAWN)}for(var k=2;k<4;k++){var C=w+a.PAWN_OFFSETS[d][k];136&C||(t.board[C]&&(null==(i=t.board[C])?void 0:i.color)===c?l(t.board,u,w,C,a.BITS.CAPTURE):C===t.ep_square&&l(t.board,u,w,t.ep_square,a.BITS.EP_CAPTURE))}}else for(var k=0,E=a.PIECE_OFFSETS[x.type].length;k<E;k++)for(var T=a.PIECE_OFFSETS[x.type][k],I=w;!(136&(I+=T));){if(t.board[I]){if((null==(n=t.board[I])?void 0:n.color)===d)break;l(t.board,u,w,I,a.BITS.CAPTURE);break}if(l(t.board,u,w,I,a.BITS.NORMAL),"n"===x.type||"k"===x.type)break}}if(!b||p===t.kings[d]){if(t.castling[d]&a.BITS.KSIDE_CASTLE){var A=t.kings[d],N=A+2;t.board[A+1]||t.board[N]||m(t,c,t.kings[d])||m(t,c,A+1)||m(t,c,N)||l(t.board,u,t.kings[d],N,a.BITS.KSIDE_CASTLE)}if(t.castling[d]&a.BITS.QSIDE_CASTLE){var A=t.kings[d],N=A-2;t.board[A-1]||t.board[A-2]||t.board[A-3]||m(t,c,t.kings[d])||m(t,c,A-1)||m(t,c,N)||l(t.board,u,t.kings[d],N,a.BITS.QSIDE_CASTLE)}}if(!(void 0===o||o))return u;for(var O=[],w=0,E=u.length;w<E;w++)g(v(t,u[w]),d)||O.push(u[w]);return O}function f(t,r,i){void 0===i&&(i={});var n,l=i.sloppy,u=i.checkPromotion,d="";if(r.flags&a.BITS.KSIDE_CASTLE)d="O-O";else if(r.flags&a.BITS.QSIDE_CASTLE)d="O-O-O";else{var c=o(t,r,void 0!==l&&l);r.piece!==a.PAWN&&(d+=r.piece.toUpperCase()+c),r.flags&(a.BITS.CAPTURE|a.BITS.EP_CAPTURE)&&(r.piece===a.PAWN&&(d+=s.algebraic(r.from)[0]),d+="x"),d+=s.algebraic(r.to),(void 0===u||u)&&r.flags&a.BITS.PROMOTION&&(d+="="+(null==(n=r.promotion)?void 0:n.toUpperCase()))}var h=v(t,r);return b(h)&&(y(h)?d+="#":d+="+"),d}function p(t,r,i){void 0===i&&(i={});var n,o,l,u,d,c=i.sloppy,p=void 0!==c&&c,m=i.checkPromotion,g=void 0===m||m,b=s.strippedSan(r);p&&(n=b.match(/([pnbrqkPNBRQK])?([a-h][1-8])x?-?([a-h][1-8])([qrbnQRBN])?/))&&(o=n[1],l=n[2],u=n[3],d=n[4]);for(var y=h(t,{square:l}),v=0,_=y.length;v<_;v++){var w=f(t,y[v],{checkPromotion:g});if(b===s.strippedSan(w)||p&&b===s.strippedSan(f(t,y[v],i))||l&&u&&s.isSquare(l)&&s.isSquare(u)&&n&&(!o||o.toLowerCase()==y[v].piece)&&a.SQUARES[l]==y[v].from&&a.SQUARES[u]==y[v].to&&(!g||!d||d.toLowerCase()==y[v].promotion))return y[v]}return null}function m(t,r,i){for(var n,s=a.SQUARES.a8;s<=a.SQUARES.h1;s++){if(136&s){s+=7;continue}if(null!=t.board[s]&&(null==(n=t.board[s])?void 0:n.color)===r){var o=t.board[s],l=s-i,u=l+119;if(o&&a.ATTACKS[u]&1<<a.SHIFTS[o.type]){if(o.type===a.PAWN){if(l>0){if(o.color===a.WHITE)return!0}else if(o.color===a.BLACK)return!0;continue}if("n"===o.type||"k"===o.type)return!0;for(var d=a.RAYS[u],c=s+d,h=!1;c!==i;){if(t.board[c]){h=!0;break}c+=d}if(!h)return!0}}}return!1}function g(t,r){return m(t,s.swapColor(r),t.kings[r])}function b(t){return g(t,t.turn)}function y(t){return b(t)&&0===h(t).length}function v(t,r){var i=t.clone(),n=i.turn,o=s.swapColor(n);i.board[r.to]=i.board[r.from],delete i.board[r.from],r.flags&a.BITS.EP_CAPTURE&&(i.turn===a.BLACK?delete i.board[r.to-16]:delete i.board[r.to+16]),r.flags&a.BITS.PROMOTION&&r.promotion&&s.isPieceSymbol(r.promotion)&&(i.board[r.to]={type:r.promotion,color:n});var l=i.board[r.to];if(l&&l.type===a.KING){if(i.kings[l.color]=r.to,r.flags&a.BITS.KSIDE_CASTLE){var u=r.to-1,d=r.to+1;i.board[u]=i.board[d],delete i.board[d]}else if(r.flags&a.BITS.QSIDE_CASTLE){var u=r.to+1,d=r.to-2;i.board[u]=i.board[d],delete i.board[d]}i.castling[n]=0}if(i.castling[n]){for(var c=0,h=a.ROOKS[n].length;c<h;c++)if(r.from===a.ROOKS[n][c].square&&i.castling[n]&a.ROOKS[n][c].flag){i.castling[n]^=a.ROOKS[n][c].flag;break}}if(i.castling[o]){for(var c=0,h=a.ROOKS[o].length;c<h;c++)if(r.to===a.ROOKS[o][c].square&&i.castling[o]&a.ROOKS[o][c].flag){i.castling[o]^=a.ROOKS[o][c].flag;break}}return r.flags&a.BITS.BIG_PAWN?"b"===i.turn?i.ep_square=r.to-16:i.ep_square=r.to+16:i.ep_square=a.E
2783MPTY,r.piece===a.PAWN||r.flags&(a.BITS.CAPTURE|a.BITS.EP_CAPTURE)?i.half_moves=0:i.half_moves++,i.turn===a.BLACK&&i.move_number++,i.turn=s.swapColor(i.turn),i}function _(t,r,i,n,o){var l,u={color:t.turn,from:r,to:i,flags:n,piece:t.board[r].type};return o&&s.isPieceSymbol(o)&&(u.flags|=a.BITS.PROMOTION,u.promotion=o),t.board[i]?u.captured=null==(l=t.board[i])?void 0:l.type:n&a.BITS.EP_CAPTURE&&(u.captured=a.PAWN),u}r.getDisambiguator=o,r.getFen=function(t){for(var r=0,i="",n=a.SQUARES.a8;n<=a.SQUARES.h1;n++){var o=t.board[n];if(o){r>0&&(i+=r,r=0);var l=o.color,u=o.type;i+=l===a.WHITE?u.toUpperCase():u.toLowerCase()}else r++;n+1&136&&(r>0&&(i+=r),n!==a.SQUARES.h1&&(i+="/"),r=0,n+=8)}var d="";t.castling[a.WHITE]&a.BITS.KSIDE_CASTLE&&(d+="K"),t.castling[a.WHITE]&a.BITS.QSIDE_CASTLE&&(d+="Q"),t.castling[a.BLACK]&a.BITS.KSIDE_CASTLE&&(d+="k"),t.castling[a.BLACK]&a.BITS.QSIDE_CASTLE&&(d+="q"),d=d||"-";var c=t.ep_square===a.EMPTY?"-":s.algebraic(t.ep_square);return[i,t.turn,d,c,t.half_moves,t.move_number].join(" ")},r.loadFen=l,r.getPgn=function(t,r,i,n,s){void 0===s&&(s={});var o=s.newline_char,l=void 0===o?"\n":o,u=s.max_width,d=void 0===u?0:u,c=[],h=!1;for(var p in r)c.push("["+p+' "'+r[p]+'"]'+l),h=!0;h&&n.length&&c.push(l);var m=function(r){var a=i[t.fen];if(void 0!==a){var n=r.length>0?" ":"";r=""+r+n+"{"+a+"}"}return r};n[0]&&(t=n[0].state);var g=[],b="";
2783if(0===n.length&&g.push(m("")),n.forEach(function(r,i){var n=r.move;b=m(b),0===i&&n.color===a.BLACK?b=t.move_number+". ...":n.color===a.WHITE&&(b.length&&g.push(b),b=t.move_number+"."),b=b+" "+f(t,n),t=v(t,n)}),b.length&&g.push(m(b)),void 0!==r.Result&&g.push(r.Result),0===d)return c.join("")+g.join(" ");for(var y=function(){return c.length>0&&" "===c[c.length-1]&&(c.pop(),!0)},_=0,p=0;p<g.length;p++){if(_+g[p].length>d&&g[p].includes("{")){_=function(t,r){for(var i=0,a=r.split(" ");i<a.length;i++){var n=a[i];if(n){if(t+n.length>d){for(;y();)t--;c.push(l),t=0}c.push(n),t+=n.length,c.push(" "),t++}}return y()&&t--,t}(_,g[p]);continue}_+g[p].length>d&&0!==p?(" "===c[c.length-1]&&c.pop(),c.push(l),_=0):0!==p&&(c.push(" "),_++),c.push(g[p]),_+=g[p].length}return c.join("")},r.loadPgn=function(t,r){void 0===r&&(r={});var i=r.newline_char,n=void 0===i?"\r?\n":i,s=r.sloppy,o=void 0!==s&&s,u=function(t){return t.replace(/\\/g,"\\")},d=RegExp("^(\\[((?:"+u(n)+")|.)*\\])(?:"+u(n)+"){2}"),c=d.test(t)?d.exec(t)[1]:"",h=l(a.DEFAULT_POSITION),f=function(t,r){for(var i=r.newline_char,a={},n=t.split(new RegExp(u(i))),s="",o="",l=0;l<n.length;l++)s=n[l].replace(/^\[([A-Z][A-Za-z]*)\s.*\]$/,"$1"),o=n[l].replace(/^\[[A-Za-z]+\s"(.*)" *\]$/,"$1"),s.trim().length>0&&(a[s.trim()]=o);return a}(c,{newline_char:n,sloppy:o});if("1"===f.SetUp&&"FEN"in f){var m=l(f.FEN);if(!m)return null;h=m}for(var g=function(t){var r;return 0==t.length?"":decodeURIComponent("%"+(null==(r=null==t?void 0:t.match(/.{1,2}/g))?void 0:r.join("%")))},b=function(t){return"{"+Array.from((t=t.replace(RegExp(u(n),"g")," ")).slice(1,t.length-1)).map(function(t){return 128>t.charCodeAt(0)?t.charCodeAt(0).toString(16):encodeURIComponent(t).replace(/%/g,"").toLowerCase()}).join("")+"}"},y=t.replace(c,"").replace(RegExp("({[^}]*})+?|;([^"+u(n)+"]*)","g"),function(t,r,i){return void 0!==r?b(r):" "+b("{"+i.slice(1)+"}")}).replace(RegExp(u(n),"g")," "),_=/(\([^()]+\))+?/g;_.test(y);)y=y.replace(_,"");for(var w=(y=(y=(y=y.replace(/\d+\.(\.\.)?/g,"")).replace(/\.\.\./g,"")).replace(/\$\d+/g,"")).trim().split(new RegExp(/\s+/)).join(",").replace(/,,+/g,",").split(","),x={},$=[],S=0;S<w.length;S++){var k=w[S],C=function(t){if(t.startsWith("{")&&t.endsWith("}"))return g(t.slice(1,t.length-1))}(k);if(void 0!==C){x[h.fen]=C;continue}if(S===w.length-1&&-1!==a.POSSIBLE_RESULTS.indexOf(k)){Object.keys(f).length&&void 0===f.Result&&(f.Result=k);continue}var E=p(h,w[S],{sloppy:o});if(null===E)return null;$.push({move:E,state:h});var m=v(h,E);if(!m)return null;h=m}return[h,f,x,$]},r.getPiece=function(t,r){if(!r||(r=r.toLowerCase(),!s.isSquare(r)))return null;var i=a.SQUARES[r],n=t.board[i];return n?d(n):null},r.cloneMove=u,r.clonePiece=d,r.putPiece=c,r.removePiece=function(t,r){if(!r||(r=r.toLowerCase(),!s.isSquare(r)))return null;var i=a.SQUARES[r],n=t.board[i];if(!n)return null;var o=t.clone(),l=n.type,u=n.color;return l===a.KING&&(o.kings[u]=a.EMPTY),delete o.board[i],o},r.generateMoves=h,r.moveToSan=f,r.sanToMove=p,r.makePretty=function(t,r){var i=u(r),n="";for(var o in a.BITS)s.isFlagKey(o)&&a.BITS[o]&i.flags&&(n+=a.FLAGS[o]);return{to:s.algebraic(i.to),from:s.algebraic(i.from),color:i.color,flags:n,piece:i.piece,san:f(t,i),captured:i.captured,promotion:i.promotion}},r.isAttacked=m,r.isKingAttacked=g,r.inCheck=b,r.inCheckmate=y,r.inStalemate=function(t){return!b(t)&&0===h(t).length},r.insufficientMaterial=function(t){for(var r={},i=[],n=0,s=0,o=a.SQUARES.a8;o<=a.SQUARES.h1;o++){if(s=(s+1)%2,136&o){o+=7;continue}var l=t.board[o];l&&(r[l.type]=l.type in r?r[l.type]+1:1,l.type===a.BISHOP&&i.push(s),n++)}if(2===n||3===n&&(1===r[a.BISHOP]||1===r[a.KNIGHT]))return!0;if(n===r[a.BISHOP]+2){for(var u=0,d=i.length,o=0;o<d;o++)u+=i[o];if(0===u||u===d)return!0}return!1},r.makeMove=v,r.buildMove=_,r.ascii=function(t,r){return void 0===r&&(r="\n"),[" +------------------------+",a.RANKS.map(function(r){for(var i=t.slice(16*r,16*r+8),a=[],n=0;n<i.length;n++){var o=i[n];a.push(o?" "+s.symbol(o)+" ":" . ")}var l=a.join("");return"87654321"[r]+" |"+l+"|"}).join(r)," +------------------------+"," a b c d e f g h"].join(r)},r.getBoard=function(t){for(var r=[],i=[],n=a.SQUARES.a8;n<=a.SQUARES.h1;n++){var s=t[n];null==s?i.push(null):i.push({type:s.type,color:s.color}),n+1&136&&(r.push(i),i=[],n+=8)}return r},r.validateMove=function(t,r,i){void 0===i&&(i={});var a=i.checkPromotion,n=void 0===a||a;if("string"==typeof r)return p(t,r,i);if("object"==typeof r)for(var o=h(t,{square:r.from}),l=0;l<o.length;l++){var u=o[l];if(r.from===s.algebraic(u.from)&&r.to===s.algebraic(u.to)&&(!n||!("promotion"in u)||r.promotion===u.promotion))return u}return null}},30287:(t,r,i)=>{"use strict";i.d(r,{j:()=>k}
2783);var a=i(90360),n=i(37605);function s(t,r,i){return(i<0&&(i+=1),i>1&&(i-=1),i<1/6)?t+(r-t)*6*i:i<.5?r:i<2/3?t+(r-t)*(2/3-i)*6:t}var o=i(5897),l=i(12562),u=i(28670);function d(t,r){return i=>i>0?r:t}let c=(t,r,i)=>{let a=t*t,n=i*(r*r-a)+a;return n<0?0:Math.sqrt(n)},h=[o.u,l.B,u.V];function f(t){let r=h.find(r=>r.test(t));if((0,n.$)(!!r,`'${t}' is not an animatable color. Use the equivalent color code instead.`),!r)return!1;let i=r.parse(t);return r===u.V&&(i=function({hue:t,saturation:r,lightness:i,alpha:a}){t/=360,i/=100;let n=0,o=0,l=0;if(r/=100){let a=i<.5?i*(1+r):i+r-i*r,u=2*i-a;n=s(u,a,t+1/3),o=s(u,a,t),l=s(u,a,t-1/3)}else n=o=l=i;return{red:Math.round(255*n),green:Math.round(255*o),blue:Math.round(255*l),alpha:a}}(i)),i}let p=(t,r)=>{let i=f(t),n=f(r);if(!i||!n)return d(t,r);let s={...i};return t=>(s.red=c(i.red,n.red,t),s.green=c(i.green,n.green,t),s.blue=c(i.blue,n.blue,t),s.alpha=(0,a.k)(i.alpha,n.alpha,t),l.B.transform(s))};var m=i(2926),g=i(11614),b=i(34474),y=i(40597);let v=new Set(["none","hidden"]);function _(t,r){return i=>(0,a.k)(t,r,i)}function w(t){return"number"==typeof t?_:"string"==typeof t?(0,y.p)(t)?d:g.y.test(t)?p:S:Array.isArray(t)?x:"object"==typeof t?g.y.test(t)?p:$:d}function x(t,r){let i=[...t],a=i.length,n=t.map((t,i)=>w(t)(t,r[i]));return t=>{for(let r=0;r<a;r++)i[r]=n[r](t);return i}}function $(t,r){let i={...t,...r},a={};for(let n in i)void 0!==t[n]&&void 0!==r[n]&&(a[n]=w(t[n])(t[n],r[n]));return t=>{for(let r in a)i[r]=a[r](t);return i}}let S=(t,r)=>{let i=b.f.createTransformer(r),a=(0,b.V)(t),s=(0,b.V)(r);return a.indexes.var.length===s.indexes.var.length&&a.indexes.color.length===s.indexes.color.length&&a.indexes.number.length>=s.indexes.number.length?v.has(t)&&!s.values.length||v.has(r)&&!a.values.length?function(t,r){return v.has(t)?i=>i<=0?t:r:i=>i>=1?r:t}(t,r):(0,m.F)(x(function(t,r){var i;let a=[],n={color:0,var:0,number:0};for(let s=0;s<r.values.length;s++){let o=r.types[s],l=t.indexes[o][n[o]],u=null!=(i=t.values[l])?i:0;a[s]=u,n[o]++}return a}(a,s),s.values),i):((0,n.$)(!0,`Complex values '${t}' and '${r}' too different to mix. Ensure all colors are of the same type, and that each contains the same quantity of number and color values. Falling back to instant transition.`),d(t,r))};function k(t,r,i){return"number"==typeof t&&"number"==typeof r&&"number"==typeof i?(0,a.k)(t,r,i):w(t)(t,r)}},30525:(t,r,i)=>{"use strict";i.d(r,{d:()=>s});var a=i(14232),n=i(32872);let s=t=>{let[r,i]=(0,a.useState)({isOnLeaderboard:!1,positions:[],totalLeaderboards:0}),[s,o]=(0,a.useState)(!1),[l,u]=(0,a.useState)(null),d=(0,a.useRef)({data:null,timestamp:0}),c={play_leaders:{key:"regular",name:"Regular"},puzzles_leaders:{key:"train",name:"Train"},turing_leaders:{key:"turing",name:"Bot/Not"},hand_leaders:{key:"hand",name:"Hand"},brain_leaders:{key:"brain",name:"Brain"}},h=(0,a.useCallback)((t,r)=>{let i=[];return Object.entries(c).forEach(a=>{let[n,{key:s,name:o}]=a,l=t[n];if(Array.isArray(l)){let t=l.findIndex(t=>t.display_name===r);-1!==t&&t<10&&i.push({gameType:s,gameName:o,position:t+1,elo:l[t].elo})}}),{isOnLeaderboard:i.length>0,positions:i,totalLeaderboards:i.length}},[]),f=(0,a.useCallback)(async()=>{if(!t)return void i({isOnLeaderboard:!1,positions:[],totalLeaderboards:0});o(!0),u(null);try{let r=Date.now();if(d.current.data&&r-d.current.timestamp<3e5){let r=h(d.current.data,t);i(r),o(!1);return}let a=await (0,n.kK)();d.current={data:a,timestamp:r};let s=h(a,t);i(s)}catch(t){console.error("Error fetching leaderboard status:",t),u("Failed to fetch leaderboard data"),i({isOnLeaderboard:!1,positions:[],totalLeaderboards:0})}finally{o(!1)}},[t,h]),p=(0,a.useCallback)(()=>{d.current={data:null,timestamp:0},f()},[f]);return(0,a.useEffect)(()=>{f()},[f]),{status:r,loading:s,error:l,refreshStatus:p}}},30785:(t,r,i)=>{"use strict";i.d(r,{W:()=>a});let a={skipAnimations:!1,useManualTiming:!1}},30904:(t,r,i)=>{"use strict";i.d(r,{V:()=>a});let a=t=>r=>r<=.5?t(2*r)/2:(2-t(2*(1-r)))/2},31062:(t,r,i)=>{"use strict";i.d(r,{$:()=>s,q:()=>o});var a=i(1960);let n=/^(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\))$/iu,s=(t,r)=>i=>!!("string"==typeof i&&n.test(i)&&i.startsWith(t)||r&&null!=i&&Object.prototype.hasOwnProperty.call(i,r)),o=(t,r,i)=>n=>{if("string"!=typeof n)return n;let[s,o,l,u]=n.match(a.S);return{[t]:parseFloat(s),[r]:parseFloat(o),[i]:parseFloat(l),alpha:void 0!==u?parseFloat(u):1}}},32711:(t,r,i)=>{"use strict";var a=i(97947);Object.defineProperty(r,"d$",{enumerable:!0,get:function(){return a.Chess}}),i(73198);var n=i(6162);Object.defineProperty(r,"p9",{enumerable:!0,get:function(){return n.SQUARES}}),i(18722)},32872:(t,r,i)=>{"use strict";i.d(r,{nI:()=>n.n,jm:()=>a.jm,mb:()=>d,fD:()=>a.fD,mn:()=>a.mn,Mi:()=>a.Mi,OK:()=>g.OK,kK:()=>h,O:()=>y.O,tY:()=>a.tY,q3:()=>g.q3,sd:()=>a.sd,Z3:()=>g.Z3,lK:()=>b,bm:()=>o,V3:()=>u,CQ:()=>f,CD:()=>m,s4:()=>a.s4,Xw:()=>v,QY:()=>g.QY,Yy:()=>l,BH:()=>c,l2:()=>a.l2,zj:()=>
2783g.zj,xD:()=>a.xD,og:()=>y.og,pG:()=>a.pG,lk:()=>p});var a=i(84547),n=i(42034),s=i(62207);let o=async()=>{let t=await fetch((0,n.c)("puzzle/new_puzzle")),r=await t.json(),i=r.puzzle_id.game_source+"-"+r.puzzle_id.game_id+"-"+r.puzzle_id.move_ply,a=r.puzzle_elo,o={...r.termination,condition:"Normal"},l={name:r.black_player.name,rating:r.black_player.rating},u={name:r.white_player.name,rating:r.white_player.rating},d=r.game_states,c=d.map(t=>{let{last_move:r}=t;return(null!=r?r:[]).join("-")}),h=d.map((t,r)=>{let{last_move:i,fen:a,check:n,last_move_san:s}=t;return{board:a,lastMove:i,movePlayed:c[r],san:s,uci:i?i.join(""):void 0,check:n}});if(0===h.length)throw Error("Moves array is empty. Cannot initialize GameTree.");let f=new s.lr(h[0].board);f.getRoot();for(let t=1;t<h.length;t++){let r=h[t];r.uci&&r.san&&f.getLastMainlineNode().addChild(r.board,r.uci,r.san,!0)}let p=r.target_move_map,m={},g={},b={};return p.forEach(t=>{let{check:r,fen:i,maia_eval:a,move:n,move_san:s,stockfish_eval:o}=t,l=n.join("");m[l]=-1e3===o?-50:o,g[l]=a,b[l]={board:i,lastMove:n,san:s,check:r}}),{id:i,puzzle_elo:a,whitePlayer:u,blackPlayer:l,moves:h,tree:f,maiaEvaluation:g,stockfishEvaluation:m,gameType:"train",termination:o,availableMoves:b,targetIndex:r.target_move_index}},l=async(t,r,i)=>{let a=t.split("-"),s={game_source:a[0],game_id:a[1],move_ply:Number.parseInt(a[2])};return(await fetch((0,n.c)("puzzle/log_puzzle_guesses?"+new URLSearchParams({gave_up:i?"true":"false"})),{method:"POST",headers:{Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify({puzzle_id:s,user_guesses:r})})).json()},u=async()=>{let t=await fetch((0,n.c)("puzzle/get_player_stats")),r=await t.json();return{totalPuzzles:r.total_puzzles,puzzlesSolved:r.puzzles_solved,rating:r.puzzle_elo}},d=async()=>{let t=await fetch((0,n.c)("auth/account"));return(t=>{let r=t.client_id;return{clientId:r,displayName:t.display_name,lichessId:t.lichess_id}})(await t.json())},c=async()=>(await fetch((0,n.c)("auth/logout")),d()),h=async()=>{let t=await fetch((0,n.c)("auth/leaderboard"));return await t.json()},f=async()=>{let t=await fetch((0,n.c)("turing/new_game"));if(401===t.status)throw Error("Unauthorized");let r=await t.json(),i={...r.termination,condition:"Normal"},a=r.game_states,o=r.id,l=a.map(t=>{let{last_move:r,fen:i,check:a,last_move_san:n}=t;return{board:i,lastMove:r,san:n,uci:r?r.join(""):void 0,check:a}});if(0===l.length)throw Error("No moves available to initialize the game tree");let u=new s.lr(l[0].board);u.getRoot();for(let t=1;t<l.length;t++){let r=l[t];r.uci&&r.san&&u.getLastMainlineNode().addChild(r.board,r.uci,r.san,!0)}return{termination:i,id:o,gameStates:a,moves:l,tree:u}},p=async function(t,r){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",a=await fetch((0,n.c)("turing/game_guess"),{body:JSON.stringify({id:t,white_is_bot:"white"===r,black_is_bot:"black"===r,comment:i}),method:"POST",headers:{"Content-Type":"application/json"}}),s=await a.json(),o=s.black_is_bot?"black":"white",l={name:s.black_name,rating:s.black_rating},u={name:s.white_name,rating:s.white_rating},d=s.guess_correct,c=s.game_type,h=s.time_control.split("+"),f=parseInt(h[0],10)/60;return{bot:o,blackPlayer:l,whitePlayer:u,correct:d,gameType:c,timeControl:"".concat(f,"+").concat(h[1]),turingElo:s.turing_elo}},m=async()=>{let t=await fetch((0,n.c)("turing/get_player_stats")),r=await t.json();return{correctGuesses:r.correct_guesses,wrongGuesses:r.wrong_guesses,rating:r.turing_elo}};var g=i(67427);let b=async t=>{let r=await fetch((0,n.c)("auth/get_player_stats".concat(t?"/".concat(t):""))),i=await r.json();return{regularRating:i.play_elo,regularWins:i.play_won,regularDraws:i.play_drawn,regularGames:i.play_games_played,regularMax:i.play_elo_max,regularMin:i.play_elo_min,regularHours:i.play_game_time,handRating:i.hand_elo,handWins:i.hand_won,handDraws:i.hand_drawn,handGames:i.hand_games_played,handMax:i.hand_elo_max,handMin:i.hand_elo_min,handHours:i.hand_game_time,brainRating:i.brain_elo,brainWins:i.brain_won,brainDraws:i.brain_drawn,brainGames:i.brain_games_played,brainMax:i.brain_elo_max,brainMin:i.brain_elo_min,brainHours:i.brain_game_time,trainRating:i.puzzles_elo,trainCorrect:i.puzzles_correct,trainGames:i.puzzles_played,trainMax:i.puzzles_elo_max,trainMin:i.puzzles_elo_min,trainHours:i.puzzle_game_time,botNotRating:i.turing_elo,botNotCorrect:i.tur
2783ing_guesses_correct,botNotWrong:i.turing_guesses_wrong,botNotGames:i.turing_guesses_correct+i.turing_guesses_wrong,botNotMax:i.turing_elo_max,botNotMin:i.turing_elo_min,botNotHours:i.turing_game_time}};i(24044);var y=i(34146);let v=async()=>{let t=await fetch((0,n.c)("auth/global_stats"));return await t.json()};i(69441)},33439:(t,r,i)=>{"use strict";i.d(r,{a:()=>a});let a=t=>Math.round(1e5*t)/1e5},34009:(t,r,i)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),!function(t,r){for(var i in r)Object.defineProperty(t,i,{enumerable:!0,get:r[i]})}(r,{default:function(){return $},useLinkStatus:function(){return x}});let a=i(88365),n=i(37876),s=a._(i(14232)),o=i(84727),l=i(1623),u=i(170),d=i(70464),c=i(20125),h=i(242),f=i(63786),p=i(34327),m=i(9094),g=i(89203);i(35785);let b=new Set;function y(t,r,i,a){if((0,l.isLocalURL)(r)){if(!a.bypassPrefetchedCheck){let n=r+"%"+i+"%"+(void 0!==a.locale?a.locale:"locale"in t?t.locale:void 0);if(b.has(n))return;b.add(n)}t.prefetch(r,i,a).catch(t=>{})}}function v(t){return"string"==typeof t?t:(0,u.formatUrl)(t)}let _=s.default.forwardRef(function(t,r){let i,a,{href:u,as:b,children:_,prefetch:w=null,passHref:x,replace:$,shallow:S,scroll:k,locale:C,onClick:E,onNavigate:T,onMouseEnter:I,onTouchStart:A,legacyBehavior:N=!1,...O}=t;i=_,N&&("string"==typeof i||"number"==typeof i)&&(i=(0,n.jsx)("a",{children:i}));let M=s.default.useContext(h.RouterContext),P=!1!==w,{href:R,as:j}=s.default.useMemo(()=>{if(!M){let t=v(u);return{href:t,as:b?v(b):t}}let[t,r]=(0,o.resolveHref)(M,u,!0);return{href:t,as:b?(0,o.resolveHref)(M,b):r||t}},[M,u,b]),z=s.default.useRef(R),D=s.default.useRef(j);N&&(a=s.default.Children.only(i));let B=N?a&&"object"==typeof a&&a.ref:r,[L,U,F]=(0,f.useIntersection)({rootMargin:"200px"}),q=s.default.useCallback(t=>{(D.current!==j||z.current!==R)&&(F(),D.current=j,z.current=R),L(t)},[j,R,F,L]),V=(0,g.useMergedRef)(q,B);s.default.useEffect(()=>{M&&U&&P&&y(M,R,j,{locale:C})},[j,R,U,C,P,null==M?void 0:M.locale,M]);let W={ref:V,onClick(t){N||"function"!=typeof E||E(t),N&&a.props&&"function"==typeof a.props.onClick&&a.props.onClick(t),M&&(t.defaultPrevented||function(t,r,i,a,n,s,o,u,d){let{nodeName:c}=t.currentTarget;if(!("A"===c.toUpperCase()&&function(t){let r=t.currentTarget.getAttribute("target");return r&&"_self"!==r||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.nativeEvent&&2===t.nativeEvent.which}(t)||t.currentTarget.hasAttribute("download"))){if(!(0,l.isLocalURL)(i)){n&&(t.preventDefault(),location.replace(i));return}t.preventDefault(),(()=>{if(d){let t=!1;if(d({preventDefault:()=>{t=!0}}),t)return}let t=null==o||o;"beforePopState"in r?r[n?"replace":"push"](i,a,{shallow:s,locale:u,scroll:t}):r[n?"replace":"push"](a||i,{scroll:t})})()}}(t,M,R,j,$,S,k,C,T))},onMouseEnter(t){N||"function"!=typeof I||I(t),N&&a.props&&"function"==typeof a.props.onMouseEnter&&a.props.onMouseEnter(t),M&&y(M,R,j,{locale:C,priority:!0,bypassPrefetchedCheck:!0})},onTouchStart:function(t){N||"function"!=typeof A||A(t),N&&a.props&&"function"==typeof a.props.onTouchStart&&a.props.onTouchStart(t),M&&y(M,R,j,{locale:C,priority:!0,bypassPrefetchedCheck:!0})}};if((0,d.isAbsoluteUrl)(j))W.href=j;else if(!N||x||"a"===a.type&&!("href"in a.props)){let t=void 0!==C?C:null==M?void 0:M.locale;W.href=(null==M?void 0:M.isLocaleDomain)&&(0,p.getDomainLocale)(j,t,null==M?void 0:M.locales,null==M?void 0:M.domainLocales)||(0,m.addBasePath)((0,c.addLocale)(j,t,null==M?void 0:M.defaultLocale))}return N?s.default.cloneElement(a,W):(0,n.jsx)("a",{...O,...W,children:i})}),w=(0,s.createContext)({pending:!1}),x=()=>(0,s.useContext)(w),$=_;("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},34146:(t,r,i)=>{"use strict";i.d(r,{O:()=>n,og:()=>s});var a=i(88831);let n=async()=>{let t=await fetch("https://lichess.org/api/tv/channels");if(!t.ok)throw Error("Failed to fetch Lichess TV data");let r=(await t.json()).rapid;if(!(null==r?void 0:r.gameId))throw Error("No TV game available");return{gameId:r.gameId,white:r.user1,black:r.user2}},s=async(t,r,i,n,s)=>{let o=fetch("https://lichess.org/api/stream/game/".concat(t),{signal:s,headers:{Accept:"application/x-ndjson"}});try{let t=await o;
2783if(!t.ok)throw Error("HTTP ".concat(t.status,": ").concat(t.statusText));if(!t.body)throw Error("No response body");await (0,a.g2)(t=>{t.id?r(t):t.uci||t.lm?i({fen:t.fen,uci:t.uci||t.lm,wc:t.wc,bc:t.bc}):console.log("Unknown message format:",t)})(t).then(n)}catch(t){if(null==s?void 0:s.aborted)console.log("Stream aborted");else throw console.error("Stream error:",t),t}}},34327:(t,r,i)=>{"use strict";function a(t,r,i,a){return!1}Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"getDomainLocale",{enumerable:!0,get:function(){return a}}),i(19783),("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},34474:(t,r,i)=>{"use strict";i.d(r,{V:()=>c,f:()=>m});var a=i(11614);let n=/(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\))/giu;var s=i(1960),o=i(33439);let l="number",u="color",d=/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 c(t){let r=t.toString(),i=[],n={color:[],number:[],var:[]},s=[],o=0,c=r.replace(d,t=>(a.y.test(t)?(n.color.push(o),s.push(u),i.push(a.y.parse(t))):t.startsWith("var(")?(n.var.push(o),s.push("var"),i.push(t)):(n.number.push(o),s.push(l),i.push(parseFloat(t))),++o,"${}")).split("${}");return{values:i,split:c,indexes:n,types:s}}function h(t){return c(t).values}function f(t){let{split:r,types:i}=c(t),n=r.length;return t=>{let s="";for(let d=0;d<n;d++)if(s+=r[d],void 0!==t[d]){let r=i[d];r===l?s+=(0,o.a)(t[d]):r===u?s+=a.y.transform(t[d]):s+=t[d]}return s}}let p=t=>"number"==typeof t?0:t,m={test:function(t){var r,i;return isNaN(t)&&"string"==typeof t&&((null==(r=t.match(s.S))?void 0:r.length)||0)+((null==(i=t.match(n))?void 0:i.length)||0)>0},parse:h,createTransformer:f,getAnimatableNone:function(t){let r=h(t);return f(t)(r.map(p))}}},35785:(t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"errorOnce",{enumerable:!0,get:function(){return i}});let i=t=>{}},36072:(t,r,i)=>{"use strict";i.d(r,{D:()=>h});var a=i(89099),n=i(14232),s=i(32711),o=i(2703),l=i(62207),u=i(74279),d=i(32872);let c=async()=>{let t=await (0,d.CD)();return{gamesPlayed:t.correctGuesses+t.wrongGuesses,gamesWon:t.correctGuesses,rating:t.rating}},h=()=>{var t;let r=(0,a.useRouter)(),[i,h]=(0,n.useState)([]),[f,p]=(0,n.useState)(!1),[m,g]=(0,n.useState)(0),[b,y,v]=(0,o.J)(c),_=(0,n.useCallback)(async()=>{let t;p(!0);try{t=await (0,d.CQ)()}catch(t){r.push("/401");return}p(!1),g(i.length),h(i.concat([t]))},[i,r]);(0,n.useEffect)(()=>{0!==i.length||f||_()},[_,i.length,f]);let w=(0,n.useMemo)(()=>i[m],[i,m]),x=(0,n.useMemo)(()=>new l.lr(new s.d$().fen()),[]),$=(0,u.u)(null!=(t=null==w?void 0:w.tree)?t:x,"white");(0,n.useEffect)(()=>{if($.tree&&w){let t=$.tree.getMainLine();$.setCurrentNode(t[0])}},[w]);let S=(0,n.useMemo)(()=>i.map(t=>t.id),[i]),k=(0,n.useCallback)(async function(t){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",a=arguments.length>2?arguments[2]:void 0;if(w&&!w.result){let n=await (0,d.lk)(w.id,t,r);h(i.map((t,r)=>r===m?{...t,result:{...n,ratingDiff:n.turingElo-(a||0)}}:t)),C[1](""),v(n.turingElo),y(1,+!!n.correct)}},[w,y,i,v,m]),C=(0,n.useState)("");return{gameTree:$.tree,currentNode:$.currentNode,setCurrentNode:$.setCurrentNode,goToNode:$.goToNode,goToNextNode:$.goToNextNode,goToPreviousNode:$.goToPreviousNode,goToRootNode:$.goToRootNode,plyCount:$.plyCount,orientation:$.orientation,setOrientation:$.setOrientation,game:w,games:i,getNewGame:_,loading:f,gameIds:S,currentIndex:m,setCurrentIndex:g,submitGuess:k,commentController:C,stats:b}}},36101:(t,r,i)=>{"use strict";i.d(r,{M:()=>o});var a=i(32711),n=i(14232),s=i(74279);let o=t=>{let r=(0,n.useMemo)(()=>"w"===new a.d$(t.tree.getLastMainlineNode().fen).turn()?"white":"black",[t.targetIndex]),i=(0,s.u)(t.tree,r),o=(0,n.useMemo)(()=>{let r=i.tree.getRoot();for(let i=1;i<=t.targetIndex;i++)if(r.mainChild)r=r.mainChild;else break;return r},[i.tree,t.targetIndex]);(0,n.useEffect)(()=>{i.goToNode(o)},[t.id]);let l=(0,n.useMemo)(()=>{let t=new Map,r=i.currentNode.fen;return r===o.fen&&new a.d$(r).moves({verbose:!0}
2783).forEach(r=>{var i;let a=r.from,n=r.to;t.set(a,(null!=(i=t.get(a))?i:[]).concat([n]))}),t},[i.currentNode,o]),u=(0,n.useCallback)(t=>{let r=i.tree.addMoveToMainLine(t);r&&i.setCurrentNode(r)},[i]);return{reset:(0,n.useCallback)(()=>{o.removeAllChildren(),i.goToNode(o)},[i,o]),onPlayerGuess:u,availableMovesMapped:l,puzzleStartingNode:o,gameTree:i.tree,currentNode:i.currentNode,setCurrentNode:i.setCurrentNode,goToNode:i.goToNode,goToNextNode:i.goToNextNode,goToPreviousNode:i.goToPreviousNode,goToRootNode:i.goToRootNode,plyCount:i.plyCount,orientation:i.orientation,setOrientation:i.setOrientation}}},36500:(t,r,i)=>{"use strict";i.d(r,{Ke:()=>n,MA:()=>o,ce:()=>a,lm:()=>l,vJ:()=>s});let a={BLUNDER_THRESHOLD:.1,INACCURACY_THRESHOLD:.05,EXCELLENT_WINRATE_ADVANTAGE_THRESHOLD:.05,MAIA_UNLIKELY_THRESHOLD:.1,GOOD_THRESHOLD:-.05},n=12,s="maia:stockfish-debug-rerun",o="maia.stockfishDebugRerunTs",l={good:["#238b45","#41ab5d","#74c476","#90D289","#AEDFA4"],ok:["#ec7014","#feb24c","#fed976","#ffeda0","#ffffcc"].reverse(),blunder:["#cb181d","#ef3b2c","#fb6a4a","#fc9272","#fcbba1"].reverse()}},37605:(t,r,i)=>{"use strict";i.d(r,{$:()=>n,V:()=>s});var a=i(90620);let n=a.l,s=a.l},38588:(t,r,i)=>{"use strict";i.d(r,{PL:()=>n,Wv:()=>o,np:()=>s});var a=i(32711);let n=t=>t?"w"===new a.d$(t.fen).turn()?"white":"black":"white",s=t=>Array.from(t.entries()).flatMap(t=>{let[r,i]=t;return i.map(t=>({from:r,to:t}))}),o=(t,r)=>r.filter(r=>r.from===t[0]&&r.to===t[1]).length>1},39420:(t,r,i)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"Image",{enumerable:!0,get:function(){return w}});let a=i(64252),n=i(88365),s=i(37876),o=n._(i(14232)),l=a._(i(98477)),u=a._(i(29269)),d=i(23408),c=i(89161),h=i(9263);i(26201);let f=i(242),p=a._(i(75540)),m=i(89203),g={deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[16,32,48,64,96,128,256,384],path:"/_next/image",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!1};function b(t,r,i,a,n,s,o){let l=null==t?void 0:t.src;t&&t["data-loaded-src"]!==l&&(t["data-loaded-src"]=l,("decode"in t?t.decode():Promise.resolve()).catch(()=>{}).then(()=>{if(t.parentElement&&t.isConnected){if("empty"!==r&&n(!0),null==i?void 0:i.current){let r=new Event("load");Object.defineProperty(r,"target",{writable:!1,value:t});let a=!1,n=!1;i.current({...r,nativeEvent:r,currentTarget:t,target:t,isDefaultPrevented:()=>a,isPropagationStopped:()=>n,persist:()=>{},preventDefault:()=>{a=!0,r.preventDefault()},stopPropagation:()=>{n=!0,r.stopPropagation()}})}(null==a?void 0:a.current)&&a.current(t)}}))}function y(t){return o.use?{fetchPriority:t}:{fetchpriority:t}}let v=(0,o.forwardRef)((t,r)=>{let{src:i,srcSet:a,sizes:n,height:l,width:u,decoding:d,className:c,style:h,fetchPriority:f,placeholder:p,loading:g,unoptimized:v,fill:_,onLoadRef:w,onLoadingCompleteRef:x,setBlurComplete:$,setShowAltText:S,sizesInput:k,onLoad:C,onError:E,...T}=t,I=(0,o.useCallback)(t=>{t&&(E&&(t.src=t.src),t.complete&&b(t,p,w,x,$,v,k))},[i,p,w,x,$,E,v,k]),A=(0,m.useMergedRef)(r,I);return(0,s.jsx)("img",{...T,...y(f),loading:g,width:u,height:l,decoding:d,"data-nimg":_?"fill":"1",className:c,style:h,sizes:n,srcSet:a,src:i,ref:A,onLoad:t=>{b(t.currentTarget,p,w,x,$,v,k)},onError:t=>{S(!0),"empty"!==p&&$(!0),E&&E(t)}})});function _(t){let{isAppRouter:r,imgAttributes:i}=t,a={as:"image",imageSrcSet:i.srcSet,imageSizes:i.sizes,crossOrigin:i.crossOrigin,referrerPolicy:i.referrerPolicy,...y(i.fetchPriority)};return r&&l.default.preload?(l.default.preload(i.src,a),null):(0,s.jsx)(u.default,{children:(0,s.jsx)("link",{rel:"preload",href:i.srcSet?void 0:i.src,...a},"__nimg-"+i.src+i.srcSet+i.sizes)})}let w=(0,o.forwardRef)((t,r)=>{let i=(0,o.useContext)(f.RouterContext),a=(0,o.useContext)(h.ImageConfigContext),n=(0,o.useMemo)(()=>{var t;let r=g||a||c.imageConfigDefault,i=[...r.deviceSizes,...r.imageSizes].sort((t,r)=>t-r),n=r.deviceSizes.sort((t,r)=>t-r),s=null==(t=r.qualities)?void 0:t.sort((t,r)=>t-r);return{...r,allSizes:i,deviceSizes:n,qualities:s}},[a]),{onLoad:l,onLoadingComplete:u}=t,m=(0,o.useRef)(l);(0,o.useEffect)(()=>{m.current=l},[l]);let b=(0,o.useRef)(u);(0,o.useEffect)(()=>{b.current=u},[u]);let[y,w]=(0,o.useState)(!1),[x,$]=(0,o.useState)(!1),{props:S,meta:k}=(0,d.getImgProps)(t,{defaultLoader:p.default,imgConf:n,blurComplete:y,showAltText:x});return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(v,{...S,unoptimized:k.unoptimized,placeholder:k.placeholder,fill:k.fill,onLoadRef:m,onLoadingCompleteRef:b,setBlurComplete:w,setShowAltText:$,sizesInput:t.sizes,ref:r}),k.priority?(0,s.jsx)(_,{isAppRouter:!i,imgAttributes:S}):null]})});("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esMo
2783dule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},39751:(t,r,i)=>{"use strict";i.d(r,{Q:()=>a});let a=(0,i(14232).createContext)({transformPagePoint:t=>t,isStatic:!1,reducedMotion:"never"})},40215:(t,r,i)=>{"use strict";function a(t,r){-1===t.indexOf(r)&&t.push(r)}function n(t,r){let i=t.indexOf(r);i>-1&&t.splice(i,1)}i.d(r,{Ai:()=>n,Kq:()=>a})},40597:(t,r,i)=>{"use strict";i.d(r,{j:()=>n,p:()=>o});let a=t=>r=>"string"==typeof r&&r.startsWith(t),n=a("--"),s=a("var(--"),o=t=>!!s(t)&&l.test(t.split("/*")[0].trim()),l=/var\(--(?:[\w-]+\s*|[\w-]+\s*,(?:\s*[^)(\s]|\s*\((?:[^)(]|\([^)(]*\))*\))+\s*)\)$/iu},41087:(t,r,i)=>{"use strict";i.d(r,{L:()=>n});var a=i(37876);let n=t=>{let{components:r=[],children:i}=t;return(0,a.jsx)(a.Fragment,{children:r.reduceRight((t,r)=>(0,a.jsx)(r,{children:t}),i)})}},42034:(t,r,i)=>{"use strict";i.d(r,{c:()=>a,n:()=>n});let a=t=>"".concat("/api/v1/").concat(t),n=a("auth/lichess_login")},43687:(t,r,i)=>{"use strict";i.d(r,{f:()=>s});var a=i(14232),n=i(76123);let s=()=>{let t=(0,a.useContext)(n.j);if(!t)throw Error("useSound must be used within SoundProvider");return t}},45105:(t,r,i)=>{t.exports=i(36758)},45534:t=>{var r=Error("Element already at target scroll position"),i=Error("Scroll cancelled"),a=Math.min,n=Date.now;function s(t){return function(s,u,d,c){"function"==typeof(d=d||{})&&(c=d,d={}),"function"!=typeof c&&(c=l);var h=n(),f=s[t],p=d.ease||o,m=isNaN(d.duration)?350:+d.duration,g=!1;return f===u?c(r,s[t]):requestAnimationFrame(function r(o){if(g)return c(i,s[t]);var l=a(1,(n()-h)/m),d=p(l);s[t]=d*(u-f)+f,l<1?requestAnimationFrame(r):requestAnimationFrame(function(){c(null,s[t])})}),function(){g=!0}}}function o(t){return .5*(1-Math.cos(Math.PI*t))}function l(){}t.exports={left:s("scrollLeft"),top:s("scrollTop")}},47137:(t,r,i)=>{"use strict";i.d(r,{E4:()=>o,Hr:()=>f,W9:()=>h});var a=i(49037),n=i(21300),s=i(20254);let o=t=>t===a.ai||t===n.px,l=(t,r)=>parseFloat(t.split(", ")[r]),u=(t,r)=>(i,{transform:a})=>{if("none"===a||!a)return 0;let n=a.match(/^matrix3d\((.+)\)$/u);if(n)return l(n[1],r);{let r=a.match(/^matrix\((.+)\)$/u);return r?l(r[1],t):0}},d=new Set(["x","y","z"]),c=s.U.filter(t=>!d.has(t));function h(t){let r=[];return c.forEach(i=>{let a=t.getValue(i);void 0!==a&&(r.push([i,a.get()]),a.set(+!!i.startsWith("scale")))}),r}let f={width:({x:t},{paddingLeft:r="0",paddingRight:i="0"})=>t.max-t.min-parseFloat(r)-parseFloat(i),height:({y:t},{paddingTop:r="0",paddingBottom:i="0"})=>t.max-t.min-parseFloat(r)-parseFloat(i),top:(t,{top:r})=>parseFloat(r),left:(t,{left:r})=>parseFloat(r),bottom:({y:t},{top:r})=>parseFloat(r)+(t.max-t.min),right:({x:t},{left:r})=>parseFloat(r)+(t.max-t.min),x:u(4,13),y:u(5,14)};f.translateX=f.x,f.translateY=f.y},47240:(t,r,i)=>{"use strict";i.d(r,{c:()=>u});var a=i(62207),n=i(32711),s=i(74279),o=i(14232);let l=new n.d$().fen(),u=(t,r)=>{let[i,u]=(0,o.useState)(()=>new a.lr(r.startFen||l)),d=(0,s.u)(i,r.player),[c,h]=(0,o.useState)(0),[f,p]=(0,o.useState)(!1),[m,g]=(0,o.useState)(null),[b,y]="unlimited"==r.timeControl?[0,0]:r.timeControl.split("+").map(Number),v=60*b*1e3,[_,w]=(0,o.useState)(v),[x,$]=(0,o.useState)(v),[S,k]=(0,o.useState)(0),C=(0,o.useMemo)(()=>i.toMoveArray(),[i,c]),E=(0,o.useMemo)(()=>i.toTimeArray(),[i,c]),T=(0,o.useMemo)(()=>{let r=i.getMainLine(),a=r[r.length-1].turn,s=i.toChess(),o=m?((t,r)=>t.insufficientMaterial()?{result:"1/2-1/2",winner:"none",type:"time"}:{result:"white"===r?"0-1":"1-0",winner:"white"===r?"black":"white",type:"time"})(s,m):f?{result:"w"==a?"0-1":"1-0",winner:"w"==a?"black":"white",type:"resign"}:(t=>{if(!t.gameOver())return;if(t.inDraw()||t.inStalemate()||t.inThreefoldRepetition())return{result:"1/2-1/2",winner:"none",type:"rules"};let r="w"==t.turn()?"white":"black";if(t.inCheckmate())return{result:"white"==r?"0-1":"1-0",winner:"white"==r?"black":"white",type:"rules"}})(s),l=[],u=i.getRoot(),d=new n.d$(u.fen);l.push({board:u.fen,check:!!d.inCheck()&&("w"===d.turn()?"white":"black")});for(let t=1;t<r.length;t++){let i=r[t],a=new n.d$(i.fen);l.push({board:i.fen,san:i.san||void 0,lastMove:i.move?[i.move.slice(0,2),i.move.
2783slice(2,4)]:void 0,uci:i.move||void 0,check:!!a.inCheck()&&("w"===a.turn()?"white":"black")})}return{id:t,termination:o,tree:i,turn:"b"==a?"black":"white"}},[i,c,f,m,_,x,t]),I=T.termination?null:T.turn,A=I==r.player,{availableMoves:N,pieces:O}=(0,o.useMemo)(()=>{if(!d.currentNode)return{availableMoves:[],pieces:{}};let t=new n.d$(d.currentNode.fen),r=t.moves({verbose:!0}),i=!A||T.termination?[]:r.map(t=>({from:t.from,to:t.to,promotion:t.promotion,piece:t.piece})),a={};for(let[r]of Object.entries(n.p9)){let i=t.get(r);i&&(a[r]=i)}return{availableMoves:i,pieces:a}},[d.currentNode,A,T.termination,c]),M=(0,o.useCallback)(function(t){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0,i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(C.length<2&&!i)return 0;let a=Date.now(),n=void 0===r?a-S:r;return S>0&&("white"==t?w(Math.max(_-n+1e3*y,0)):$(Math.max(x-n+1e3*y,0))),k(a),n},[C.length,S,_,x,y]),P=(0,o.useCallback)(function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:void 0;return I?M(I,t):0},[I,M]),R=(0,o.useCallback)(t=>{let r=Date.now();"white"==t?w(0):$(0),k(r),g(t)},[]);(0,o.useEffect)(()=>{if(!T.termination&&C.length>1&&"unlimited"!=r.timeControl&&I){let t=setTimeout(()=>{R(I)},"white"==I?_:x);return()=>clearTimeout(t)}},[R,T.termination,x,C.length,r.timeControl,I,_]);let j=(0,o.useCallback)((t,r)=>{let a=i.getLastMainlineNode(),s=new n.d$(a.fen),o=s.move(t,{sloppy:!0});if(o){let i=a.addChild(s.fen(),t,o.san,!0,void 0,r);i&&(h(t=>t+1),d.setCurrentNode(i))}},[i,d.setCurrentNode]),z=async(t,r)=>{throw Error("makePlayerMove should be overridden by the consuming component")};return{game:T,gameTree:d.tree,currentNode:d.currentNode,player:r.player,playType:r.playType,maiaVersion:r.maiaVersion,toPlay:I,playerActive:A,moveList:C,moves:C,moveTimes:E,availableMoves:N,pieces:O,timeControl:r.timeControl,whiteClock:_,blackClock:x,lastMoveTime:S,stats:{lifetime:void 0,session:{gamesWon:0,gamesPlayed:0},lastRating:void 0,rating:0},setCurrentNode:d.setCurrentNode,goToNode:d.goToNode,goToNextNode:d.goToNextNode,goToPreviousNode:d.goToPreviousNode,goToRootNode:d.goToRootNode,plyCount:d.plyCount,orientation:d.orientation,setOrientation:d.setOrientation,addMoveWithTime:j,setResigned:p,reset:()=>{u(new a.lr(r.startFen||l)),p(!1),g(null),k(0),w(v),$(v),h(t=>t+1)},makePlayerMove:z,updateClock:P,updateClockForColor:M,premovesEnabled:!1,queuedPremove:null,setPremove:(t,r)=>{},clearPremove:()=>{},premoveResetKey:0}}},48230:(t,r,i)=>{t.exports=i(34009)},49037:(t,r,i)=>{"use strict";i.d(r,{X4:()=>s,ai:()=>n,hs:()=>o});var a=i(94349);let n={test:t=>"number"==typeof t,parse:parseFloat,transform:t=>t},s={...n,transform:t=>(0,a.q)(0,1,t)},o={...n,default:1}},49574:()=>{},50005:(t,r,i)=>{"use strict";i.d(r,{X:()=>n});let a=t=>null!==t;function n(t,{repeat:r,repeatType:i="loop"},n){let s=t.filter(a),o=r&&"loop"!==i&&r%2==1?0:s.length-1;return o&&void 0!==n?n:s[o]}},50181:(t,r,i)=>{"use strict";i.d(r,{E:()=>n});var a=i(14232);let n=i(2205).B?a.useLayoutEffect:a.useEffect},51024:(t,r,i)=>{"use strict";i.d(r,{OF:()=>d,Tf:()=>l,hr:()=>o,nl:()=>u});var a=i(32711),n=i(36500);let s=(t,r)=>{var i,a,n;let s=null==(i=t.winrate_loss_vec)?void 0:i[r];if(void 0!==s)return s;let o=null==(a=t.cp_relative_vec)?void 0:a[r];if(void 0!==o)return o;let l=null==(n=t.cp_vec)?void 0:n[r];return void 0!==l?l:-1/0},o=(t,r)=>[...r].sort((r,i)=>{var a,n,o,l;let u=s(t,i)-s(t,r);if(0!==u)return u;let d=(null!=(o=null==(a=t.cp_vec)?void 0:a[i])?o:-1/0)-(null!=(l=null==(n=t.cp_vec)?void 0:n[r])?l:-1/0);return 0!==d?d:r.localeCompare(i)}),l=(t,r)=>{var i;if(!t)return"#FFF";let a=null==t||null==(i=t.winrate_loss_vec)?void 0:i[r],s=null==t?void 0:t.cp_relative_vec[r];if(void 0!==a)if(a>=-n.ce.INACCURACY_THRESHOLD)return n.lm.good[0];else if(a>=-n.ce.BLUNDER_THRESHOLD)return n.lm.ok[0];else return n.lm.blunder[0];if(void 0!==s)if(s>=-50)return n.lm.good[0];else if(s>=-150)return n.lm.ok[0];else return n.lm.blunder[0];return"#FFF"},u=(t,r)=>{let i={},s=new a.d$(r).moves({verbose:!0}),u=s.map(t=>"".concat(t.from).concat(t.to).concat(t.promotion||""));if(s.forEach(t=>{i["".concat(t.from).concat(t.to).concat(t.promotion||"")]={san:t.san,color:"#FFF"}}),!t)return i;if(s.forEach(r=>{let a="".concat(r.from).concat(r.to).concat(r.promotion||""),n=l(t,a);i[a]={san:r.san,color:n}}),t)if(t.winrate_loss_vec&&Object.keys(t.winrate_loss_vec).length>0){let r=o(t,u.filter(r=>{var i;let a=null==(i=t.winrate_loss_vec)?void 0:i[r];return void 0!==a&&a>=-n.ce.INACCURACY_THRESHOLD})),a=o(t,u.filter(r=>{var i;let a=null==(i=t.winrate_loss_vec)?void 0:i[r];return void 0!==a&&a>=-n.ce.BLUNDER_THRESHOLD&&a<-n.ce.INACCURACY_THRESHOLD})),s=o(t,u.filter(r=>{var i;let a=null==(i=t.winrate_loss_vec)?void 0:i[r];return void 0!==a&&a<-n.ce.BLUNDER_THRESHOLD}));r.forEach((t,r)=>{i[t].color=n.lm.good[Math.min(r,n.lm.good.length-1)]}),a.forEach((t,r)=>{i[t].color=n.lm.ok[Math.min(r,n.lm.ok.length-1)]}
2783),s.forEach((t,r)=>{i[t].color=n.lm.blunder[Math.min(r,n.lm.blunder.length-1)]})}else{let r=o(t,u.filter(r=>t.cp_relative_vec[r]>=-50)),a=o(t,u.filter(r=>t.cp_relative_vec[r]>=-150&&t.cp_relative_vec[r]<-50)),s=o(t,u.filter(r=>t.cp_relative_vec[r]<-150));r.forEach((t,r)=>{i[t].color=n.lm.good[Math.min(r,n.lm.good.length-1)]}),a.forEach((t,r)=>{i[t].color=n.lm.ok[Math.min(r,n.lm.ok.length-1)]}),s.forEach((t,r)=>{i[t].color=n.lm.blunder[Math.min(r,n.lm.blunder.length-1)]})}return i},d=(t,r)=>{if(!t||!r)return{blunderMoves:{probability:0,moves:[]},okMoves:{probability:0,moves:[]},goodMoves:{probability:0,moves:[]}};let i=[],a=[],s=[],o=0,l=0,u=0;if(r.winrate_loss_vec)for(let[d,c]of Object.entries(t.policy)){let t=r.winrate_loss_vec[d];if(void 0===t)continue;let h=100*c;t>=-n.ce.INACCURACY_THRESHOLD?(u+=h,s.push({move:d,probability:h})):t>=-n.ce.BLUNDER_THRESHOLD?(l+=h,a.push({move:d,probability:h})):(o+=h,i.push({move:d,probability:h}))}else for(let[n,d]of Object.entries(t.policy)){let t=r.cp_relative_vec[n];if(void 0===t)continue;let c=100*d;t>=-50?(u+=c,s.push({move:n,probability:c})):t>=-150?(l+=c,a.push({move:n,probability:c})):(o+=c,i.push({move:n,probability:c}))}let d=[{key:"good",value:u},{key:"ok",value:l},{key:"blunder",value:o}].map(t=>({...t,floored:Math.floor(t.value),fractional:t.value-Math.floor(t.value)})),c=Math.max(0,Math.min(100-d.reduce((t,r)=>t+r.floored,0),100)),h=[...d].sort((t,r)=>r.fractional-t.fractional);for(let t=0;t<c&&t<h.length;t++)h[t]&&(h[t].floored+=1);let f=h.find(t=>t&&"good"===t.key)||{floored:0},p=h.find(t=>t&&"ok"===t.key)||{floored:0};return{blunderMoves:{probability:(h.find(t=>t&&"blunder"===t.key)||{floored:0}).floored,moves:i},okMoves:{probability:p.floored,moves:a},goodMoves:{probability:f.floored,moves:s}}}},52266:t=>{"use strict";var r=function(t,r){return t+i(r)},i=function(t){return null===t||"boolean"==typeof t||void 0===t?"":"number"==typeof t?t.toString():"string"==typeof t?t:Array.isArray(t)?t.reduce(r,""):Object.prototype.hasOwnProperty.call(t,"props")&&Object.prototype.hasOwnProperty.call(t.props,"children")?i(t.props.children):""};i.default=i,t.exports=i},52496:(t,r,i)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),!function(t,r){for(var i in r)Object.defineProperty(t,i,{enumerable:!0,get:r[i]})}(r,{default:function(){return l},noSSR:function(){return o}});let a=i(64252);i(37876),i(14232);let n=a._(i(90295));function s(t){return{default:(null==t?void 0:t.default)||t}}function o(t,r){return delete r.webpack,delete r.modules,t(r)}function l(t,r){let i=n.default,a={loading:t=>{let{error:r,isLoading:i,pastDelay:a}=t;return null}};t instanceof Promise?a.loader=()=>t:"function"==typeof t?a.loader=t:"object"==typeof t&&(a={...a,...t});let l=(a={...a,...r}).loader;return(a.loadableGenerated&&(a={...a,...a.loadableGenerated},delete a.loadableGenerated),"boolean"!=typeof a.ssr||a.ssr)?i({...a,loader:()=>null!=l?l().then(s):Promise.resolve(s(()=>null))}):(delete a.webpack,delete a.modules,o(i,a))}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},53068:(t,r,i)=>{"use strict";i.d(r,{Q0:()=>A});var a=i(51024),n=i(32711),s=i(32872),o=i(14232),l=i(72975),u=i(36500),d=i(94598);let c=function(t,r,i,a){var c,h,f;let p=arguments.length>4&&void 0!==arguments[4]?arguments[4]:18,m=!(arguments.length>5)||void 0===arguments[5]||arguments[5],g=(0,o.useContext)(d.ul),b=(0,o.useContext)(d.Mb),[y,v]=(0,o.useState)(0),_=(0,o.useRef)(0),w=()=>{let t=window.localStorage.getItem(u.MA),r=t?Number.parseInt(t,10):0;return Number.isFinite(r)?r:0};async function x(t){if(!g.maia)throw Error("Maia engine not initialized");let{result:r}=await g.maia.batchEvaluateMaia3(Array(l.kJ.length).fill(t.fen()),l.kJ,l.kJ),i={};return l.YH.forEach((t,a)=>{i[t]=r[a]}),i}async function $(t){return await (0,s.q3)(t.fen())}(0,o.useEffect)(()=>{let t=()=>{v(w()||Date.now())};v(w()),window.addEventListener(u.vJ,t);let r=window.setInterval(()=>{let t=w();v(r=>t>r?t:r)},500);return()=>{window.removeEventListener(u.vJ,t),window.clearInterval(r)}},[]),(0,o.useEffect)(()=>
2783{if(!t||!m)return;let s=new n.d$(t.fen),o=t.fen,u=!1,d=async()=>{var n;let d=!!(null==t||null==(n=t.analysis.maia)?void 0:n[i]);if(!t||d||r.has(o))return;let c=0;for(;c<30&&"ready"!==g.status;)await new Promise(t=>setTimeout(t,100)),c++;if("ready"!==g.status)return void console.warn("Maia not ready after waiting, skipping analysis");r.add(o);try{let r=t.moveNumber<=5?$(s):Promise.resolve(null),n=await x(s);if(u)return;let o=await r;if(o&&t.moveNumber<=5){let r={};for(let t of l.YH){let i=Object.keys(o[t]||{}).length?o[t]:n[t].policy,a=Object.entries(i).sort((t,r)=>{let[,i]=t,[,a]=r;return a-i});r[t]={value:n[t].value,policy:Object.fromEntries(a)}}t.addMaiaAnalysis(r,i)}else t.addMaiaAnalysis(n,i);a(t=>t+1)}finally{r.delete(o)}},c=setTimeout(()=>{d()},100);return()=>{u=!0,clearTimeout(c)}},[g.status,t,i,r,g,a,m]),(0,o.useEffect)(()=>{var r;if(!t||!m)return;let s=y>_.current;if(s&&(_.current=y),t.analysis.stockfish&&(null==(r=t.analysis.stockfish)?void 0:r.depth)>=p&&!s)return;let o=!1,l=async()=>{var r,s,l;let u=0;for(;u<120&&!b.isReady()&&!o;)await new Promise(t=>setTimeout(t,100)),u++;if(o||!b.isReady()){o||"error"!==b.status||console.warn("Stockfish not ready after waiting, skipping analysis");return}let d=new n.d$(t.fen),c=new Set(d.moves({verbose:!0}).map(t=>"".concat(t.from).concat(t.to).concat(t.promotion||""))),h=null==(s=t.analysis.maia)||null==(r=s[i])?void 0:r.policy,f=[],m=null==(l=t.mainChild)?void 0:l.move,g=m&&c.has(m)?[m]:[];if(h){let t=0;for(let[r,i]of Object.entries(h).filter(t=>{let[,r]=t;return Number.isFinite(r)&&r>0}).sort((t,r)=>{let[,i]=t,[,a]=r;return a-i}))if(c.has(r)&&(f.push(r),(t+=i)>=.95))break}let y=b.streamEvaluations(d.fen(),d.moves().length,p,{maiaCandidateMoves:f,forcedCandidateMoves:g,maiaPolicy:h});if(y&&!o)try{for await(let r of y){if(o||!t||t!=t)break;t.addStockfishAnalysis(r,i),a(t=>t+1)}}catch(t){o||console.error("Stockfish evaluation error:",t)}},u=setTimeout(()=>{o||l()},100);return()=>{o=!0,clearTimeout(u)}},[t,b,i,a,p,y,null==t||null==(h=t.analysis.maia)||null==(c=h[i])?void 0:c.policy,null==t||null==(f=t.mainChild)?void 0:f.move,m])};var h=i(62207),f=i(76084),p=i(88831);let m=t=>({type:"text",content:t}),g=(t,r)=>({type:"move",san:t,uci:r}),b={overwhelming:{sing:["gives an overwhelming winning advantage","yields a crushing advantage"],plur:["give an overwhelming winning advantage","yield a crushing advantage"]},win:{sing:["gives a winning advantage","secures a clear win"],plur:["give a winning advantage","secure a clear win"]},advantage:{sing:["offers an advantage","creates pressure"],plur:["offer an advantage","create pressure"]},balance:{sing:["holds equality","maintains the balance"],plur:["hold equality","maintain the balance"]},hold:{sing:["defends the position","clings on"],plur:["defend the position","cling on"]},stay:{sing:["keeps the game alive","stays in the game"],plur:["keep the game alive","stay in the game"]}},y={hard:["hard for human players to find","very tough for humans to spot","challenging for most players to see"],skilled:["findable for skilled players","within reach for experienced players","findable for strong players"],straight:["straightforward for players across skill levels to find","easy for players of all strengths to spot","obvious to most players"]},v=["Tread carefully","Be alert","Stay sharp","Watch out"],_=["There","Be careful, as there","In this position there"],w=["tempting","enticing","natural-looking"],x=["alternatives","ways to go wrong"],$=t=>1/(1+Math.exp(-(t-1)/.8)),S=t=>{let r=$(t);return{w:r,d:1-r-$(-t)}};var k=i(97685),C=i(69942),E=i(12152),T=i(9504),I=i(84547);let A=function(t,r){var i,s,d,$;let A=!(arguments.length>2)||void 0===arguments[2]||arguments[2],N=!(arguments.length>3)||void 0===arguments[3]||arguments[3],O=r||(t.whitePlayer.name.includes("Maia")?"black":"white"),M=(0,o.useContext)(T.u),P=(0,o.useContext)(E.M),R=(0,f.u8)(t.tree,O),[j,z]=(0,o.useState)(0),D=(0,o.useMemo)(()=>new Set,[]),B=(t=>{let{game:r,gameTree:i,enableAutoSave:a,analysisState:n}=t,[s,l]=(0,o.useState)(""),[u,d]=(0,o.useState)(!1),[c,h]=(0,o.useState)(!1),f=(0,o.useRef)(null),p=(0,o.useCallback)(async()=>
2783{if(r.id&&a&&u&&"tournament"!==r.type)try{h(!0);let t=(0,C.Px)(i);if(0===t.length||!t.some(t=>{var r;let i=t.stockfish&&t.stockfish.depth>=12,a=(null==(r=t.stockfish)?void 0:r.mate_vec)&&Object.keys(t.stockfish.mate_vec).length>0||!1;return i||a||!!t.maia}))return void h(!1);let a=(0,C.N6)(t);if(a===s)return void h(!1);await (0,I.C)(r.id,t),l(a),d(!1)}catch(t){console.warn("Failed to save analysis to backend:",t)}finally{h(!1)}},[a,r.id,r.type,i,s,u]),m=(0,o.useRef)(p);return m.current=p,(0,o.useEffect)(()=>{d(!1),h(!1),l("")},[r.id,r.type]),(0,o.useEffect)(()=>{n>0&&d(!0)},[n]),(0,o.useEffect)(()=>{if(a)return f.current&&clearInterval(f.current),f.current=setInterval(()=>{m.current()},1e4),()=>{f.current&&clearInterval(f.current),m.current()}},[r.id,a]),{saveAnalysis:p,autoSave:(0,o.useCallback)(()=>({hasUnsavedChanges:u,isSaving:c,status:c?"saving":u?"unsaved":"saved"}),[u,c])()}})({game:t,gameTree:R.tree,enableAutoSave:A,analysisState:j}),[L,U]=(0,o.useState)(),[F,q]=(0,f.Mj)("currentMaiaModel",l.YH[0]),[V,W]=(0,f.Mj)("analysis-show-top-move-badges",!0),H=(t=>{let{gameTree:r,setCurrentNode:i}=t,a=(0,o.useContext)(E.M),s=(0,o.useContext)(T.u),[l,u]=(0,o.useState)({targetDepth:18}),[d,c]=(0,o.useState)({currentMoveIndex:0,totalMoves:0,currentMove:"",isAnalyzing:!1,isComplete:!1,isCancelled:!1}),h=(0,o.useRef)({cancelled:!1,currentNode:null}),f=(0,o.useCallback)(async t=>{d.isAnalyzing&&(h.current.cancelled=!0,a.stopEvaluation()),h.current.cancelled=!1,h.current.currentNode=null;let o=r.getMainLine();u({targetDepth:t}),c({currentMoveIndex:0,totalMoves:o.length,currentMove:"",isAnalyzing:!0,isComplete:!1,isCancelled:!1});let l=0;for(;l<50&&(!a.isReady()||"ready"!==s.status)&&!h.current.cancelled;)await new Promise(t=>setTimeout(t,100)),l++;if(h.current.cancelled)return void c(t=>({...t,isAnalyzing:!1,isCancelled:!0}));for(let r=0;r<o.length&&!h.current.cancelled;r++){let a=o[r];h.current.currentNode=a,i(a);let s=a.san||a.move||"Position ".concat(r+1);if(c(t=>({...t,currentMoveIndex:r+1,currentMove:s})),!new n.d$(a.fen).gameOver()){let r=0;for(;r<600&&!h.current.cancelled&&(!a.analysis.stockfish||a.analysis.stockfish.depth<t&&1e4!==a.analysis.stockfish.model_optimal_cp&&-1e4!==a.analysis.stockfish.model_optimal_cp);)await new Promise(t=>setTimeout(t,100)),r++}}c(t=>({...t,isAnalyzing:!1,isComplete:!h.current.cancelled,isCancelled:h.current.cancelled})),h.current.currentNode=null},[a,s.status,r,d.isAnalyzing,i]),p=(0,o.useCallback)(()=>{h.current.cancelled=!0,a.stopEvaluation(),c(t=>({...t,isAnalyzing:!1,isCancelled:!0}))},[a]);return{progress:d,config:l,setConfig:u,startAnalysis:f,cancelAnalysis:p,resetProgress:(0,o.useCallback)(()=>{c({currentMoveIndex:0,totalMoves:0,currentMove:"",isAnalyzing:!1,isComplete:!1,isCancelled:!1})},[]),isEnginesReady:(0,o.useCallback)(()=>a.isReady()&&"ready"===s.status,[a,s.status])()}})({gameTree:R.tree,setCurrentNode:R.setCurrentNode}),G=(t=>{let{gameTree:r,deepAnalysisProgress:i,startDeepAnalysis:a,currentMaiaModel:s,setCurrentNode:l,goToNode:d,currentNode:c}=t,[h,f]=(0,o.useState)({isActive:!1,showPlayerSelection:!1,selectedPlayerColor:null,currentMistakeIndex:0,mistakes:[],hasCompletedAnalysis:!1,showSolution:!1,currentAttempt:1,maxAttempts:1/0,originalPosition:null}),p=(0,o.useCallback)(async()=>{f(t=>({...t,showPlayerSelection:!0,isActive:!0}))},[]),m=(0,o.useCallback)(async t=>r.getMainLine().every(t=>{var r,i;return!!(!t.move||new n.d$(t.fen).gameOver())||(null!=(i=null==(r=t.analysis.stockfish)?void 0:r.depth)?i:0)>=u.Ke})?(g(t),Promise.resolve()):(await a(u.Ke),new Promise(r=>{let a=()=>{i.isComplete||i.isCancelled?(i.isComplete&&g(t),r()):setTimeout(a,500)};a()})),[i,a,r]),g=(0,o.useCallback)(t=>{let i=(0,C.qN)(r,t);if(0===i.length){let r="white"===t?"White":"Black";(0,k.Ay)("No clear mistakes made by ".concat(r),{icon:"\uD83D\uDC51",duration:3e3}),f({isActive:!1,showPlayerSelection:!1,selectedPlayerColor:null,currentMistakeIndex:0,mistakes:[],hasCompletedAnalysis:!1,showSolution:!1,currentAttempt:1,maxAttempts:1/0,originalPosition:null});return}let a=i[0],n=r.getMainLine()[a.moveIndex];f({isActive:!0,showPlayerSelection:!1,selectedPlayerColor:t,currentMistakeIndex:0,mistakes:i,hasCompletedAnalysis:!0,showSolution:!1,currentAttempt:1,maxAttempts:1/0,originalPosition:n&&n.parent?n.parent.fen:null}),n&&n.parent&&l(n.parent)},[r,l]),b=(0,o.useCallback)(()=>{f({isActive:!1,showPlayerSelection:!1,selectedPlayerColor:null,currentMistakeIndex:0,mistakes:[],hasCompletedAnalysis:!1,showSolution:!1,currentAttempt:1,maxAttempts:1/0,originalPosition:null})},[]),y=(0,o.useCallback)(()=>
2783{if(!h.isActive||0===h.mistakes.length)return;let t=h.mistakes[h.currentMistakeIndex];if(!t||!c)return;let i=new n.d$(c.fen);i.move(t.bestMove,{sloppy:!0})&&d(r.addVariationNode(c,i.fen(),t.bestMove,t.bestMoveSan,s)),f(t=>({...t,showSolution:!0}))},[h,c,r,s]),v=(0,o.useCallback)(()=>{if(!h.isActive||0===h.mistakes.length)return;let t=h.currentMistakeIndex+1;if(t>=h.mistakes.length)return void b();let i=h.mistakes[t],a=r.getMainLine()[i.moveIndex],n=a&&a.parent?a.parent.fen:null;a&&a.parent&&l(a.parent),f(r=>({...r,currentMistakeIndex:t,showSolution:!1,currentAttempt:1,originalPosition:n}))},[h,r,l,b]),_=(0,o.useCallback)(t=>h.isActive&&c&&h.mistakes[h.currentMistakeIndex]?(0,C.eX)(c,t)?(f(t=>({...t,showSolution:!0})),"correct"):(f(t=>({...t,currentAttempt:t.currentAttempt+1})),"incorrect"):"not-learning",[h,c]),w=(0,o.useCallback)(()=>{if(!h.originalPosition)return;let t=r.getMainLine().find(t=>t.fen===h.originalPosition);t&&l(t)},[h.originalPosition,r,l]),x=(0,o.useCallback)(()=>{if(!h.isActive||0===h.mistakes.length)return null;let t=h.mistakes[h.currentMistakeIndex],r=h.mistakes.length,i=h.currentMistakeIndex+1;return{mistake:t,progress:"".concat(i," of ").concat(r),isLastMistake:h.currentMistakeIndex===r-1}},[h]);return{state:h,start:p,startWithColor:m,stop:b,showSolution:y,goToNext:v,checkMove:_,getCurrentInfo:x,returnToOriginalPosition:w}})({gameTree:R.tree,deepAnalysisProgress:H.progress,startDeepAnalysis:H.startAnalysis,currentMaiaModel:F,setCurrentNode:R.setCurrentNode,goToNode:R.goToNode,currentNode:R.currentNode});(0,o.useEffect)(()=>{l.YH.includes(F)||q(l.YH[0])},[F,q]),c(R.currentNode||null,D,F,z,H.progress.isAnalyzing?H.config.targetDepth:18,N);let K=(0,o.useMemo)(()=>{if(!R.currentNode)return new Map;let t=new Map;return new n.d$(R.currentNode.fen).moves({verbose:!0}).forEach(r=>{var i;let{from:a,to:n}=r;t.set(a,(null!=(i=t.get(a))?i:[]).concat([n]))}),t},[R.currentNode]),Y=(0,o.useMemo)(()=>R.currentNode?(0,a.nl)(R.currentNode.analysis.stockfish,R.currentNode.fen):{},[R.currentNode,j]),Q=(0,o.useMemo)(()=>{var t;return R.currentNode?{maia:null==(t=R.currentNode.analysis.maia)?void 0:t[F],stockfish:R.currentNode.analysis.stockfish}:null},[F,R.currentNode,j]),X=(0,o.useMemo)(()=>(0,a.OF)(null==Q?void 0:Q.maia,null==Q?void 0:Q.stockfish),[Q]),{recommendations:Z,movesByRating:J,moveMap:ee}=((t,r,i)=>{let s=(0,o.useMemo)(()=>{if(!r)return{};let i={isBlackTurn:(null==t?void 0:t.turn)==="b"};if((null==r?void 0:r.maia)&&(i.maia=Object.entries(r.maia.policy).map(t=>{let[r,i]=t;return{move:r,prob:i}})),null==r?void 0:r.stockfish){let t=r.stockfish.cp_vec,n=r.stockfish.cp_relative_vec||{},s=r.stockfish.winrate_vec||{},o=r.stockfish.winrate_loss_vec||{};i.stockfish=(0,a.hr)(r.stockfish,Object.keys(t)).map(r=>({move:r,cp:t[r]||0,winrate:s[r]||0,winrate_loss:o[r]||0,cp_relative:n[r]||0}))}return i},[r,t]);return{recommendations:s,movesByRating:(0,o.useMemo)(()=>{var n,s,o,u;if(!t)return;let d=t.analysis.maia,c=null==r?void 0:r.stockfish,h=[];if(!d)return;if(null==(n=d[i])?void 0:n.policy)for(let t of Object.keys(d[i].policy).slice(0,3))h.find(r=>r[0]===t)||h.push([t,t]);if(c)for(let t of(0,a.hr)(c,Object.keys(c.cp_vec)).slice(0,3))h.find(r=>r[0]===t)||h.push([t,t]);for(let t of l.YH)if(null==(s=d[t])?void 0:s.policy){let r=Object.keys(d[t].policy)[0];r&&!h.find(t=>t[0]===r)&&h.push([r,r])}let f=[];for(let t of l.YH){let r={rating:parseInt(t.replace("maia_kdd_",""))};for(let i of h){let a=100*((null==(u=d[t])||null==(o=u.policy)?void 0:o[i[0]])||0);r[i[1]]=a}f.push(r)}return f},[i,r,t]),moveMap:(0,o.useMemo)(()=>{if(!(null==r?void 0:r.maia)||!(null==r?void 0:r.stockfish)||!t)return;let i=new Set(new n.d$(t.fen).moves({verbose:!0}).map(t=>"".concat(t.from).concat(t.to).concat(t.promotion||""))),a=[];for(let t of i){var s,o;let i=void 0!==r.stockfish.cp_relative_vec[t]?Math.max(-3,r.stockfish.cp_relative_vec[t]/100):-3,n=100*(r.maia.policy[t]||0),l=(i+3)/3,u=Math.min(n/50,1),d=Math.max(.6,Math.min(.9,(l+u)/2)),c=l+u,h=r.stockfish.cp_vec[t]||0,f=null==(s=r.stockfish.mate_vec)?void 0:s[t],p=(null==(o=r.stockfish.winrate_vec)?void 0:o[t])||0,m=r.maia.policy[t]||0;a.push({move:t,x:i,y:n,z:100,opacity:d,importance:c,size:10,rawCp:h,winrate:p,rawMaiaProb:m,relativeCp:r.stockfish.cp_relative_vec[t],mate:f})}return a.sort((t,r)=>t.importance-r.importance)},[r,t])}})(R.currentNode||null,Q,F),et=(i=R.currentNode||null,(0,o.useMemo)(()=>
2783{if(!i||!(null==Q?void 0:Q.stockfish)||!(null==Q?void 0:Q.maia)||Q.stockfish.depth<12)return{segments:[]};let t=i.fen,r="w"===i.turn,a=Q.stockfish.cp_vec,s={},o=i.analysis.maia||{};return Object.keys(Q.maia.policy).forEach(t=>{s[t]=Array(l.YH.length).fill(0)}),l.YH.forEach((t,r)=>{let i=o[t];(null==i?void 0:i.policy)&&Object.entries(i.policy).forEach(t=>{let[i,a]=t;s[i]||(s[i]=Array(l.YH.length).fill(0)),s[i][r]=a})}),function(t,r,i,a){var s,o,l,u,d,c,h;let f,$,k=(f=(t=>{let r=0x811c9dc5;for(let i=0;i<t.length;i+=1)r=Math.imul(r^t.charCodeAt(i),0x1000193);return r>>>0})(t),$=()=>(f=1664525*f+0x3c6ef35f|0)/0x100000000,t=>{var r;return null!=(r=t[Math.floor($()*t.length)])?r:t[0]}),C=new n.d$(t),E=new Set;C.moves({verbose:!0}).forEach(t=>{var r;return E.add(t.from+t.to+(null!=(r=t.promotion)?r:""))});let T=Object.keys(r).filter(t=>E.has(t));if(!T.length)return{segments:[m("No legal moves available.")]};let I={};T.forEach(t=>{let i=a?r[t]:-r[t];I[t]=.01*i});let A=T.reduce((t,r)=>I[t]>I[r]?t:r),{w:N,d:O}=S(I[A]),M=T.filter(t=>{let{w:r,d:i}=S(I[t]);return .08>=Math.abs(r-N)&&.08>=Math.abs(i-O)}),P=M.length,R=t=>{var r;let i=C.move({from:t.slice(0,2),to:t.slice(2,4),promotion:t.length>4?t[4]:void 0}),a=null!=(r=null==i?void 0:i.san)?r:t;return C.undo(),a},j=[...M].sort((t,r)=>I[r]-I[t]),z=j.slice(0,3).map(t=>g(R(t),t)),D=j.filter(t=>t!==A).slice(0,3).map(t=>g(R(t),t)),B=R(A),L=j.length>=2&&(()=>{let{w:t,d:r}=S(I[j[1]]);return .04>=Math.abs(N-t)&&.04>=Math.abs(O-r)})(),U=j.reduce((t,r)=>t+I[r],0)/P,F=U>3?"overwhelming":U>1.5?"win":U>.35?"advantage":U>=-.35?"balance":U>=-1.5?"hold":"stay",q=0,V=0,W=0,H=0,G={},K={};for(let t=0;t<9;t+=1){let r=T.map(r=>{var a,n;return[null!=(n=null==(a=i[r])?void 0:a[t])?n:0,r]}).sort((t,r)=>r[0]-t[0]),[a,n]=r[0],[l,u]=null!=(s=r[1])?s:[0,""],[d,c]=null!=(o=r[2])?o:[0,""];n!==A&&(H=Math.max(H,a)),M.includes(n)&&(q+=1),n===A&&(V+=1),r.slice(0,4).forEach(t=>{var r;let[i,a]=t;G[a]=(null!=(r=G[a])?r:0)+i});let h=t=>a-t<=.08,f=t=>{var r;return K[t]=(null!=(r=K[t])?r:0)+1,!0};(u&&!M.includes(u)&&h(l)&&f(u)||c&&!M.includes(c)&&h(d)&&f(c))&&(W+=1)}let Y=t=>t<=2?0:t<=6?1:2,Q=Y(q),X=Y(V),Z=X<Q&&!L,J=k(0===Q?y.hard:1===Q?y.skilled:y.straight),ee=k(0===X?y.hard:1===X?y.skilled:y.straight);1===X&&Z&&(ee="only ".concat(ee));let et=(0,p.zF)(100*I[A]),er=t=>et-(0,p.zF)(100*I[t])>=.1,ei=er(Object.entries(G).sort((t,r)=>r[1]-t[1])[0][0]),[ea,en]=null!=(l=Object.entries(G).filter(t=>{let[r]=t;return!M.includes(r)}).sort((t,r)=>r[1]-t[1])[0])?l:["",0],es=Object.entries(G).sort((t,r)=>r[1]-t[1]).slice(0,4),eo=null;if(ea&&er(ea)&&en>.5)eo=ea;else for(let[t,r]of es)if(r>.5&&er(t)){eo=t;break}let el=Object.values(G).reduce((t,r)=>t+r,0),eu=Object.entries(G).filter(t=>{let[r]=t;return er(r)}).reduce((t,r)=>{let[,i]=r;return t+i},0),ed=[],ec=2!==Q||Z?"":", however",eh=k(w),ef=k(x);eo&&el>0&&eu/el>.4?ed.push(m(" ".concat(k(v)).concat(ec,", this position is highly treacherous! ")+"It is easy to go astray with ".concat(eh," blunders like ")),g(R(eo),eo),m(".")):eo&&ed.push(m(" ".concat(k(v)).concat(ec,"! There is a ").concat(eh," blunder in this ")+"position: "),g(R(eo),eo),m("."));let ep=Q<2&&H>.1;if(!eo&&(ep||2===Q&&W>4)){let t=null!=(d=null==(u=Object.entries(K).sort((t,r)=>r[1]-t[1])[0])?void 0:u[0])?d:"";t||(t=null!=(h=null==(c=Object.entries(G).filter(t=>{let[r]=t;return!M.includes(r)}).sort((t,r)=>r[1]-t[1])[0])?void 0:c[0])?h:"");let r=k(_);t?ed.push(m(" ".concat(r).concat(ec," are also ").concat(eh," ").concat(ef,", such as ")),g(R(t),t),m(".")):ed.push(m(" ".concat(r).concat(ec," are also ").concat(eh," ").concat(ef,".")))}let em=[],eg=Z?D:z,eb=1===P?"it is":"they are",ey=k(1===eg.length?b[F].sing:b[F].plur);return 1===eg.length?em.push(m("Only "),...eg):2===eg.length?em.push(m("Both "),eg[0],m(" and "),eg[1]):em.push(eg[0],m(", "),eg[1],m(", and "),eg[2]),Z?em.push(m(" ".concat(ey,", and ").concat(eb," ").concat(J,", but the best move (")),g(B,A),m(") is ".concat(ee,"."))):em.push(m(" ".concat(ey,", and ").concat(eb," ").concat(J,"."))),{segments:ei?[...ed,...em]:[...em,...ed]}}(t,a,s,r)},[null==i?void 0:i.fen,null==i||null==(s=i.analysis.stockfish)?void 0:s.depth,null==i?void 0:i.analysis.maia,null==Q||null==(d=Q.stockfish)?void 0:d.depth,null==Q||null==($=Q.maia)?void 0:$.policy])),er=(0,o.useMemo)(()=>{var t,r;if(!L)return;let i=new n.d$(null==(t=R.currentNode)?void 0:t.fen),a=null==(r=i.move({from:L[0],to:L[1]}))?void 0:r.san;if(a)return{move:L,fen:i.fen(),check:i.inCheck(),san:a}},[L,R.currentNode]),ei=(0,o.useMemo)(()=>
2783{if(!R.currentNode)return[];let t=[];if(null==Q?void 0:Q.maia){let r=Object.entries(Q.maia.policy)[0];r&&t.push({brush:"red",orig:r[0].slice(0,2),dest:r[0].slice(2,4)})}if(null==Q?void 0:Q.stockfish){let r=Q.stockfish.model_move;r&&t.push({brush:"blue",orig:r.slice(0,2),dest:r.slice(2,4),modifiers:{lineWidth:8}})}return t},[R.currentNode,Q]),ea=(0,o.useMemo)(()=>{if(!R.currentNode||!(null==Q?void 0:Q.maia))return null;let t=Object.entries(Q.maia.policy);if(0===t.length)return null;let[r]=t.reduce((t,r)=>r[1]>t[1]?r:t);if(!r||r.length<4)return null;let i=h.RV.classifyMove(R.currentNode,r,F);return i.blunder||i.inaccuracy?{square:r.slice(2,4),classification:i}:null},[R.currentNode,Q,F]);return{gameTree:R.tree,currentNode:R.currentNode,setCurrentNode:R.setCurrentNode,goToNode:R.goToNode,goToNextNode:R.goToNextNode,goToPreviousNode:R.goToPreviousNode,goToRootNode:R.goToRootNode,plyCount:R.plyCount,orientation:R.orientation,setOrientation:R.setOrientation,move:er,availableMoves:K,currentMaiaModel:F,setCurrentMaiaModel:q,currentMove:L,colorSanMapping:Y,setCurrentMove:U,showTopMoveBadges:V,setShowTopMoveBadges:W,moveEvaluation:Q,movesByRating:J,moveRecommendations:Z,moveMap:ee,blunderMeter:X,boardDescription:et,arrows:ei,topHumanMoveBadge:ea,stockfish:P,maia:M,gameAnalysis:{...H,saveAnalysis:B.saveAnalysis,autoSave:B.autoSave},learnFromMistakes:G}}},53746:(t,r,i)=>{"use strict";i.d(r,{I:()=>s});var a=i(30785);let n=["read","resolveKeyframes","update","preRender","render","postRender"];function s(t,r){let i=!1,s=!0,o={delta:0,timestamp:0,isProcessing:!1},l=()=>i=!0,u=n.reduce((t,r)=>(t[r]=function(t){let r=new Set,i=new Set,a=!1,n=!1,s=new WeakSet,o={delta:0,timestamp:0,isProcessing:!1};function l(r){s.has(r)&&(u.schedule(r),t()),r(o)}let u={schedule:(t,n=!1,o=!1)=>{let l=o&&a?r:i;return n&&s.add(t),l.has(t)||l.add(t),t},cancel:t=>{i.delete(t),s.delete(t)},process:t=>{if(o=t,a){n=!0;return}a=!0,[r,i]=[i,r],r.forEach(l),r.clear(),a=!1,n&&(n=!1,u.process(t))}};return u}(l),t),{}),{read:d,resolveKeyframes:c,update:h,preRender:f,render:p,postRender:m}=u,g=()=>{let n=a.W.useManualTiming?o.timestamp:performance.now();i=!1,o.delta=s?1e3/60:Math.max(Math.min(n-o.timestamp,40),1),o.timestamp=n,o.isProcessing=!0,d.process(o),c.process(o),h.process(o),f.process(o),p.process(o),m.process(o),o.isProcessing=!1,i&&r&&(s=!1,t(g))};return{schedule:n.reduce((r,a)=>{let n=u[a];return r[a]=(r,a=!1,l=!1)=>(!i&&(i=!0,s=!0,o.isProcessing||t(g)),n.schedule(r,a,l)),r},{}),cancel:t=>{for(let r=0;r<n.length;r++)u[n[r]].cancel(t)},state:o,steps:u}}},54256:(t,r,i)=>{"use strict";function a(t){return null!==t&&"object"==typeof t&&"function"==typeof t.start}i.d(r,{P:()=>i$});let n=t=>Array.isArray(t);function s(t,r){if(!Array.isArray(r))return!1;let i=r.length;if(i!==t.length)return!1;for(let a=0;a<i;a++)if(r[a]!==t[a])return!1;return!0}function o(t){return"string"==typeof t||Array.isArray(t)}function l(t){let r=[{},{}];return null==t||t.values.forEach((t,i)=>{r[0][i]=t.get(),r[1][i]=t.getVelocity()}),r}function u(t,r,i,a){if("function"==typeof r){let[n,s]=l(a);r=r(void 0!==i?i:t.custom,n,s)}if("string"==typeof r&&(r=t.variants&&t.variants[r]),"function"==typeof r){let[n,s]=l(a);r=r(void 0!==i?i:t.custom,n,s)}return r}function d(t,r,i){let a=t.getProps();return u(a,r,void 0!==i?i:a.custom,t)}let c=["animate","whileInView","whileFocus","whileHover","whileTap","whileDrag","exit"],h=["initial",...c];var f,p,m=i(93563),g=i(20254);let b=new Set(["width","height","top","left","right","bottom",...g.U]),y=t=>n(t)?t[t.length-1]||0:t;var v=i(90280),_=i(82981);function w(t,r){let i=t.getValue("willChange");if((0,_.S)(i)&&i.add)return i.add(r)}let x=t=>t.replace(/([a-z])([A-Z])/gu,"$1-$2").toLowerCase(),$="data-"+x("framerAppearId");var S=i(91750),k=i(81461),C=i(30785),E=i(6249),T=i(90620),I=i(28404),A=i(24237),N=i(77801);let O=t=>/^0[^.\s]+$/u.test(t);var M=i(34474),P=i(1960);let R=new Set(["brightness","contrast","saturate","opacity"]);function j(t){let[r,i]=t.slice(0,-1).split("(");if("drop-shadow"===r)return t;let[a]=i.match(P.S)||[];if(!a)return t;let n=i.replace(a,""),s=+!!R.has(r);return a!==i&&(s*=100),r+"("+s+n+")"}let z=/\b([a-z-]*)\(.*?\)/gu,D={...M.f,getAnimatableNone:t=>{let r=t.match(z);return r?r.map(j).join(" "):t}};var B=i(11614),L=i(49037),U=i(21300);let F={borderWidth:U.px,borderTopWidth:U.px,borderRightWidth:U.px,borderBottomWidth:U.px,borderLeftWidth:U.px,borderRadius:U.px,radius:U.px,borderTopLeftRadius:U.px,borderTopRightRadius:U.px,borderBottomRightRadius:U.px,borderBottomLeftRadius:U.px,width:U.px,maxWidth:U.px,height:U.px,maxHeight:U.px,top:U.px,right:U.px,bottom:U.px,left:U.px,padding:U.px,paddingTop:U.px,paddingRight:U.px,paddingBottom:U.px,paddingLeft:U.px,margin:U.px,marginTop:U.px,marginRight:U.px,marginBottom:U.px,marginLeft:U.px,backgroundPositionX:U.px,backgroundPositionY:U.px},q={rotate:U.uj,rotateX:U.uj,rotateY:U.uj,rotateZ:U.uj,scale:L.hs,scaleX:L.hs,scaleY:L.hs,scaleZ:L.hs,skew:U.uj,skewX:U.uj,skewY:U.uj,distance:U.px,translateX:U.px,translateY:U.px,translateZ:U.px,x:U.px,y:U.px,z:U.px,perspective:U.px,transformPerspective:U.px,opacity:L.X4,originX:U.gQ,originY:U.gQ,originZ:U.px},V={...L.ai,transform:Math.round},W={...F,...q,zIndex:V,size:U.px,fillOpacity:L.X4,strokeOpacity:L.X4,numOctaves:V},H={...W,color:B.y,backgroundColor:B.y,outlineColor:B.y,fill:B.y,stroke:B.y,borderColor:B.y,borderTopColor:B.y,borderRightColor:B.y,borderBottomColor:B.y,borderLeftColor:B.y,filter:D,WebkitFilter:D},G=t=>H[t];function K(t,r){let i=G(t);return i!==D&&(i=M.f),i.getAnimatableNone?i.getAnimatableNone(r):void 0}
2783let Y=new Set(["auto","none","0"]);var Q=i(67798),X=i(37605);let Z=t=>/^-?(?:\d+(?:\.\d+)?|\.\d+)$/u.test(t);var J=i(40597);let ee=/^var\(--(?:([\w-]+)|([\w-]+), ?([a-zA-Z\d ()%#.,-]+))\)/u;var et=i(47137);let er=t=>r=>r.test(t),ei=[L.ai,U.px,U.KN,U.uj,U.vw,U.vh,{test:t=>"auto"===t,parse:t=>t}],ea=t=>ei.find(er(t));class en extends Q.h{constructor(t,r,i,a,n){super(t,r,i,a,n,!0)}readKeyframes(){let{unresolvedKeyframes:t,element:r,name:i}=this;if(!r||!r.current)return;super.readKeyframes();for(let i=0;i<t.length;i++){let a=t[i];if("string"==typeof a&&(a=a.trim(),(0,J.p)(a))){let n=function t(r,i,a=1){(0,X.V)(a<=4,`Max CSS variable fallback depth detected in property "${r}". This may indicate a circular fallback dependency.`);let[n,s]=function(t){let r=ee.exec(t);if(!r)return[,];let[,i,a,n]=r;return[`--${null!=i?i:a}`,n]}(r);if(!n)return;let o=window.getComputedStyle(i).getPropertyValue(n);if(o){let t=o.trim();return Z(t)?parseFloat(t):t}return(0,J.p)(s)?t(s,i,a+1):s}(a,r.current);void 0!==n&&(t[i]=n),i===t.length-1&&(this.finalKeyframe=a)}}if(this.resolveNoneKeyframes(),!b.has(i)||2!==t.length)return;let[a,n]=t,s=ea(a),o=ea(n);if(s!==o)if((0,et.E4)(s)&&(0,et.E4)(o))for(let r=0;r<t.length;r++){let i=t[r];"string"==typeof i&&(t[r]=parseFloat(i))}else this.needsMeasurement=!0}resolveNoneKeyframes(){let{unresolvedKeyframes:t,name:r}=this,i=[];for(let r=0;r<t.length;r++){var a;("number"==typeof(a=t[r])?0===a:null===a||"none"===a||"0"===a||O(a))&&i.push(r)}i.length&&function(t,r,i){let a,n=0;for(;n<t.length&&!a;){let r=t[n];"string"==typeof r&&!Y.has(r)&&(0,M.V)(r).values.length&&(a=t[n]),n++}if(a&&i)for(let n of r)t[n]=K(i,a)}(t,i,r)}measureInitialState(){let{element:t,unresolvedKeyframes:r,name:i}=this;if(!t||!t.current)return;"height"===i&&(this.suspendedScrollY=window.pageYOffset),this.measuredOrigin=et.Hr[i](t.measureViewportBox(),window.getComputedStyle(t.current)),r[0]=this.measuredOrigin;let a=r[r.length-1];void 0!==a&&t.getValue(i,a).jump(a,!1)}measureEndState(){var t;let{element:r,name:i,unresolvedKeyframes:a}=this;if(!r||!r.current)return;let n=r.getValue(i);n&&n.jump(this.measuredOrigin,!1);let s=a.length-1,o=a[s];a[s]=et.Hr[i](r.measureViewportBox(),window.getComputedStyle(r.current)),null!==o&&void 0===this.finalKeyframe&&(this.finalKeyframe=o),(null==(t=this.removedTransforms)?void 0:t.length)&&this.removedTransforms.forEac
2783h(([t,i])=>{r.getValue(t).set(i)}),this.resolveNoneKeyframes()}}var es=i(72924),eo=i(55472);let el=new Set(["opacity","clipPath","filter","transform"]);var eu=i(50005);let ed=(0,i(7862).p)(()=>Object.hasOwnProperty.call(Element.prototype,"animate")),ec={anticipate:I.b,backInOut:A.ZZ,circInOut:N.tn};class eh extends es.i{constructor(t){super(t);let{name:r,motionValue:i,element:a,keyframes:n}=this.options;this.resolver=new en(n,(t,r)=>this.onKeyframesResolved(t,r),r,i,a),this.resolver.scheduleResolve()}initPlayback(t,r){var i;let{duration:a=300,times:n,ease:s,type:o,motionValue:l,name:u,startTime:d}=this.options;if(!l.owner||!l.owner.current)return!1;if("string"==typeof s&&(0,m.nL)()&&s in ec&&(s=ec[s]),i=this.options,(0,m.WH)(i.type)||"spring"===i.type||!(0,m.yL)(i.ease)){let{onComplete:r,onUpdate:i,motionValue:l,element:u,...d}=this.options,c=function(t,r){let i=new eo.o({...r,keyframes:t,repeat:0,delay:0,isGenerator:!0}),a={done:!1,value:t[0]},n=[],s=0;for(;!a.done&&s<2e4;)n.push((a=i.sample(s)).value),s+=10;return{times:void 0,keyframes:n,duration:s-10,ease:"linear"}}(t,d);1===(t=c.keyframes).length&&(t[1]=t[0]),a=c.duration,n=c.times,s=c.ease,o="keyframes"}let c=function(t,r,i,{delay:a=0,duration:n=300,repeat:s=0,repeatType:o="loop",ease:l="easeInOut",times:u}={}){let d={[r]:i};u&&(d.offset=u);let c=(0,m.TU)(l,n);return Array.isArray(c)&&(d.easing=c),t.animate(d,{delay:a,duration:n,easing:Array.isArray(c)?"linear":c,fill:"both",iterations:s+1,direction:"reverse"===o?"alternate":"normal"})}(l.owner.current,u,t,{...this.options,duration:a,times:n,ease:s});return c.startTime=null!=d?d:this.calcStartTime(),this.pendingTimeline?((0,m.vG)(c,this.pendingTimeline),this.pendingTimeline=void 0):c.onfinish=()=>{let{onComplete:i}=this.options;l.set((0,eu.X)(t,this.options,r)),i&&i(),this.cancel(),this.resolveFinishedPromise()},{animation:c,duration:a,times:n,type:o,ease:s,keyframes:t}}get duration(){let{resolved:t}=this;if(!t)return 0;let{duration:r}=t;return(0,S.X)(r)}get time(){let{resolved:t}=this;if(!t)return 0;let{animation:r}=t;return(0,S.X)(r.currentTime||0)}set time(t){let{resolved:r}=this;if(!r)return;let{animation:i}=r;i.currentTime=(0,S.f)(t)}get speed(){let{resolved:t}=this;if(!t)return 1;let{animation:r}=t;return r.playbackRate}set speed(t){let{resolved:r}=this;if(!r)return;let{animation:i}=r;i.playbackRate=t}get state(){let{resolved:t}=this;if(!t)return"idle";let{animation:r}=t;return r.playState}get startTime(){let{resolved:t}=this;if(!t)return null;let{animation:r}=t;return r.startTime}attachTimeline(t){if(this._resolved){let{resolved:r}=this;if(!r)return T.l;let{animation:i}=r;(0,m.vG)(i,t)}else this.pendingTimeline=t;return T.l}play(){if(this.isStopped)return;let{resolved:t}=this;if(!t)return;let{animation:r}=t;"finished"===r.playState&&this.updateFinishedPromise(),r.play()}pause(){let{resolved:t}=this;if(!t)return;let{animation:r}=t;r.pause()}stop(){if(this.resolver.cancel(),this.isStopped=!0,"idle"===this.state)return;this.resolveFinishedPromise(),this.updateFinishedPromise();let{resolved:t}=this;if(!t)return;let{animation:r,keyframes:i,duration:a,type:n,ease:s,times:o}=t;if("idle"===r.playState||"finished"===r.playState)return;if(this.time){let{motionValue:t,onUpdate:r,onComplete:l,element:u,...d}=this.options,c=new eo.o({...d,keyframes:i,duration:a,type:n,ease:s,times:o,isGenerator:!0}),h=(0,S.f)(this.time);t.setWithVelocity(c.sample(h-10).value,c.sample(h).value,10)}let{onStop:l}=this.options;l&&l(),this.cancel()}complete(){let{resolved:t}=this;t&&t.animation.finish()}cancel(){let{resolved:t}=this;t&&t.animation.cancel()}static supports(t){let{motionValue:r,name:i,repeatDelay:a,repeatType:n,damping:s,type:o}=t;if(!r||!r.owner||!(r.owner.current instanceof HTMLElement))return!1;let{onUpdate:l,transformTemplate:u}=r.owner.getProps();return ed()&&i&&el.has(i)&&!l&&!u&&!a&&"mirror"!==n&&0!==s&&"inertia"!==o}}let ef={type:"spring",stiffness:500,damping:25,restSpeed:10},ep={type:"keyframes",duration:.8},em={type:"keyframes",ease:[.25,.1,.35,1],duration:.3},eg=(t,r,i,a={},n,s)=>o=>{let l=(0,m.rU)(a,t)||{},u=l.delay||a.delay||0,{elapsed:d=0}=a;d-=(0,S.f)(u);let c={keyframes:Array.isArray(i)?i:[null,i],ease:"easeOut",velocity:r.getVelocity(),...l,delay:-d,onUpdate:t=>{r.set(t),l.onUpdate&&l.onUpdate(t)},onComplete:()=>{o(),l.onComplete&&l.onComplete()},name:t,motionValue:r,element:s?void 0:n};!function({when:t,delay:r,delayChildren:i,staggerChildren:a,staggerDirection:n,repeat:s,repeatType:
2783o,repeatDelay:l,from:u,elapsed:d,...c}){return!!Object.keys(c).length}(l)&&(c={...c,...((t,{keyframes:r})=>r.length>2?ep:g.f.has(t)?t.startsWith("scale")?{type:"spring",stiffness:550,damping:0===r[1]?2*Math.sqrt(550):30,restSpeed:10}:ef:em)(t,c)}),c.duration&&(c.duration=(0,S.f)(c.duration)),c.repeatDelay&&(c.repeatDelay=(0,S.f)(c.repeatDelay)),void 0!==c.from&&(c.keyframes[0]=c.from);let h=!1;if(!1!==c.type&&(0!==c.duration||c.repeatDelay)||(c.duration=0,0===c.delay&&(h=!0)),(E.d.current||C.W.skipAnimations)&&(h=!0,c.duration=0,c.delay=0),h&&!s&&void 0!==r.get()){let t=(0,eu.X)(c.keyframes,l);if(void 0!==t)return k.Gt.update(()=>{c.onUpdate(t),c.onComplete()}),new m.P6([])}return!s&&eh.supports(c)?new eh(c):new eo.o(c)};function eb(t,r,{delay:i=0,transitionOverride:a,type:n}={}){var s;let{transition:o=t.getDefaultTransition(),transitionEnd:l,...u}=r;a&&(o=a);let c=[],h=n&&t.animationState&&t.animationState.getState()[n];for(let r in u){let a=t.getValue(r,null!=(s=t.latestValues[r])?s:null),n=u[r];if(void 0===n||h&&function({protectedKeys:t,needsAnimating:r},i){let a=t.hasOwnProperty(i)&&!0!==r[i];return r[i]=!1,a}(h,r))continue;let l={delay:i,...(0,m.rU)(o||{},r)},d=!1;if(window.MotionHandoffAnimation){let i=t.props[$];if(i){let t=window.MotionHandoffAnimation(i,r,k.Gt);null!==t&&(l.startTime=t,d=!0)}}w(t,r),a.start(eg(r,a,n,t.shouldReduceMotion&&b.has(r)?{type:!1}:l,t,d));let f=a.animation;f&&c.push(f)}return l&&Promise.all(c).then(()=>{k.Gt.update(()=>{l&&function(t,r){let{transitionEnd:i={},transition:a={},...n}=d(t,r)||{};for(let r in n={...n,...i}){let i=y(n[r]);t.hasValue(r)?t.getValue(r).set(i):t.addValue(r,(0,v.OQ)(i))}}(t,l)})}),c}function ey(t,r,i={}){var a;let n=d(t,r,"exit"===i.type?null==(a=t.presenceContext)?void 0:a.custom:void 0),{transition:s=t.getDefaultTransition()||{}}=n||{};i.transitionOverride&&(s=i.transitionOverride);let o=n?()=>Promise.all(eb(t,n,i)):()=>Promise.resolve(),l=t.variantChildren&&t.variantChildren.size?(a=0)=>{let{delayChildren:n=0,staggerChildren:o,staggerDirection:l}=s;return function(t,r,i=0,a=0,n=1,s){let o=[],l=(t.variantChildren.size-1)*a,u=1===n?(t=0)=>t*a:(t=0)=>l-t*a;return Array.from(t.variantChildren).sort(ev).forEach((t,a)=>{t.notify("AnimationStart",r),o.push(ey(t,r,{...s,delay:i+u(a)}).then(()=>t.notify("AnimationComplete",r)))}),Promise.all(o)}(t,r,n+a,o,l,i)}:()=>Promise.resolve(),{when:u}=s;if(!u)return Promise.all([o(),l(i.delay)]);{let[t,r]="beforeChildren"===u?[o,l]:[l,o];return t().then(()=>r())}}function ev(t,r){return t.sortNodePosition(r)}let e_=h.length,ew=[...c].reverse(),ex=c.length;function e$(t=!1){return{isActive:t,protectedKeys:{},needsAnimating:{},prevResolvedValues:{}}}function eS(){return{animate:e$(!0),whileInView:e$(),whileHover:e$(),whileTap:e$(),whileDrag:e$(),whileFocus:e$(),exit:e$()}}class ek{constructor(t){this.isMounted=!1,this.node=t}update(){}}class eC extends ek{constructor(t){super(t),t.animationState||(t.animationState=function(t){let r=r=>Promise.all(r.map(({animation:r,options:i})=>(function(t,r,i={}){let a;if(t.notify("AnimationStart",r),Array.isArray(r))a=Promise.all(r.map(r=>ey(t,r,i)));else if("string"==typeof r)a=ey(t,r,i);else{let n="function"==typeof r?d(t,r,i.custom):r;a=Promise.all(eb(t,n,i))}return a.then(()=>{t.notify("AnimationComplete",r)})})(t,r,i))),i=eS(),l=!0,u=r=>(i,a)=>{var n;let s=d(t,a,"exit"===r?null==(n=t.presenceContext)?void 0:n.custom:void 0);if(s){let{transition:t,transitionEnd:r,...a}=s;i={...i,...a,...r}}return i};function c(d){let{props:c}=t,f=function t(r){if(!r)return;if(!r.isControllingVariants){let i=r.parent&&t(r.parent)||{};return void 0!==r.props.initial&&(i.initial=r.props.initial),i}let i={};for(let t=0;t<e_;t++){let a=h[t],n=r.props[a];(o(n)||!1===n)&&(i[a]=n)}return i}(t.parent)||{},p=[],m=new Set,g={},b=1/0;for(let r=0;r<ex;r++){var y,v;let h=ew[r],_=i[h],w=void 0!==c[h]?c[h]:f[h],x=o(w),$=h===d?_.isActive:null;!1===$&&(b=r);let S=w===f[h]&&w!==c[h]&&x;if(S&&l&&t.manuallyAnimateOnMount&&(S=!1),_.protectedKeys={...g},!_.isActive&&null===$||!w&&!_.prevProp||a(w)||"boolean"==typeof w)continue;let k=(y=_.prevProp,"string"==typeof(v=w)?v!==y:!!Array.isArray(v)&&!s(v,y)),C=k||h===d&&_.isActive&&!S&&x||r>b&&x,E=!1,T=Array.isArray(w)?w:[w],I=T.reduce(u(h),{});!1===$&&(I={});let{prevResolvedValues:A={}}=_,N={...A,...I},O=r=>{C=!0,m.has(r)&&(E=!0,m.delete(r)),_.needsAnimating[r]=!0;let i=t.getValue(r);i&&(i.liveStyle=!1)};for(let t in N){let r=I[t],i=A[t];if(!g.hasOwnProperty(t))(n(r)&&n(i)?s(r,i):r===i)?void 0!==r&&m.has(t)?O(t):_.protectedKeys[t]=!0:null!=r?O(t):m.add(t)}_.prevProp=w,_.prevResolvedValues=I,_.isActive&&(g={...g,...I}),l&&t.blockInitialAnimation&&(C=!1);let M=!(S&&k)||E;C&&M&&p.push(...T.map(t=>({animation:t,options:{type:h}})))}if(m.size){let r={};m.forEach(i=>
2783{let a=t.getBaseTarget(i),n=t.getValue(i);n&&(n.liveStyle=!0),r[i]=null!=a?a:null}),p.push({animation:r})}let _=!!p.length;return l&&(!1===c.initial||c.initial===c.animate)&&!t.manuallyAnimateOnMount&&(_=!1),l=!1,_?r(p):Promise.resolve()}return{animateChanges:c,setActive:function(r,a){var n;if(i[r].isActive===a)return Promise.resolve();null==(n=t.variantChildren)||n.forEach(t=>{var i;return null==(i=t.animationState)?void 0:i.setActive(r,a)}),i[r].isActive=a;let s=c(r);for(let t in i)i[t].protectedKeys={};return s},setAnimateFunction:function(i){r=i(t)},getState:()=>i,reset:()=>{i=eS(),l=!0}}}(t))}updateAnimationControlsSubscription(){let{animate:t}=this.node.getProps();a(t)&&(this.unmountControls=t.subscribe(this.node))}mount(){this.updateAnimationControlsSubscription()}update(){let{animate:t}=this.node.getProps(),{animate:r}=this.node.prevProps||{};t!==r&&this.updateAnimationControlsSubscription()}unmount(){var t;this.node.animationState.reset(),null==(t=this.unmountControls)||t.call(this)}}let eE=0;class eT extends ek{constructor(){super(...arguments),this.id=eE++}update(){if(!this.node.presenceContext)return;let{isPresent:t,onExitComplete:r}=this.node.presenceContext,{isPresent:i}=this.node.prevPresenceContext||{};if(!this.node.animationState||t===i)return;let a=this.node.animationState.setActive("exit",!t);r&&!t&&a.then(()=>r(this.id))}mount(){let{register:t}=this.node.presenceContext||{};t&&(this.unmount=t(this.id))}unmount(){}}function eI(t,r,i,a={passive:!0}){return t.addEventListener(r,i,a),()=>t.removeEventListener(r,i)}function eA(t){return{point:{x:t.pageX,y:t.pageY}}}function eN(t,r,i,a){return eI(t,r,t=>(0,m.Mc)(t)&&i(t,eA(t)),a)}let eO=(t,r)=>Math.abs(t-r);var eM=i(2926);class eP{constructor(t,r,{transformPagePoint:i,contextWindow:a,dragSnapToOrigin:n=!1}={}){if(this.startEvent=null,this.lastMoveEvent=null,this.lastMoveEventInfo=null,this.handlers={},this.contextWindow=window,this.updatePoint=()=>{if(!(this.lastMoveEvent&&this.lastMoveEventInfo))return;let t=ez(this.lastMoveEventInfo,this.history),r=null!==this.startEvent,i=function(t,r){return Math.sqrt(eO(t.x,r.x)**2+eO(t.y,r.y)**2)}(t.offset,{x:0,y:0})>=3;if(!r&&!i)return;let{point:a}=t,{timestamp:n}=k.uv;this.history.push({...a,timestamp:n});let{onStart:s,onMove:o}=this.handlers;r||(s&&s(this.lastMoveEvent,t),this.startEvent=this.lastMoveEvent),o&&o(this.lastMoveEvent,t)},this.handlePointerMove=(t,r)=>{this.lastMoveEvent=t,this.lastMoveEventInfo=eR(r,this.transformPagePoint),k.Gt.update(this.updatePoint,!0)},this.handlePointerUp=(t,r)=>{this.end();let{onEnd:i,onSessionEnd:a,resumeAnimation:n}=this.handlers;if(this.dragSnapToOrigin&&n&&n(),!(this.lastMoveEvent&&this.lastMoveEventInfo))return;let s=ez("pointercancel"===t.type?this.lastMoveEventInfo:eR(r,this.transformPagePoint),this.history);this.startEvent&&i&&i(t,s),a&&a(t,s)},!(0,m.Mc)(t))return;this.dragSnapToOrigin=n,this.handlers=r,this.transformPagePoint=i,this.contextWindow=a||window;let s=eR(eA(t),this.transformPagePoint),{point:o}=s,{timestamp:l}=k.uv;this.history=[{...o,timestamp:l}];let{onSessionStart:u}=r;u&&u(t,ez(s,this.history)),this.removeListeners=(0,eM.F)(eN(this.contextWindow,"pointermove",this.handlePointerMove),eN(this.contextWindow,"pointerup",this.handlePointerUp),eN(this.contextWindow,"pointercancel",this.handlePointerUp))}updateHandlers(t){this.handlers=t}end(){this.removeListeners&&this.removeListeners(),(0,k.WG)(this.updatePoint)}}function eR(t,r){return r?{point:r(t.point)}:t}function ej(t,r){return{x:t.x-r.x,y:t.y-r.y}}function ez({point:t},r){return{point:t,delta:ej(t,eD(r)),offset:ej(t,r[0]),velocity:function(t,r){if(t.length<2)return{x:0,y:0};let i=t.length-1,a=null,n=eD(t);for(;i>=0&&(a=t[i],!(n.timestamp-a.timestamp>(0,S.f)(.1)));)i--;if(!a)return{x:0,y:0};let s=(0,S.X)(n.timestamp-a.timestamp);if(0===s)return{x:0,y:0};let o={x:(n.x-a.x)/s,y:(n.y-a.y)/s};return o.x===1/0&&(o.x=0),o.y===1/0&&(o.y=0),o}(r,.1)}}function eD(t){return t[t.length-1]}function eB(t){return t&&"object"==typeof t&&Object.prototype.hasOwnProperty.call(t,"current")}var eL=i(2589),eU=i(90360);function eF(t){return t.max-t.min}function eq(t,r,i,a=.5){t.origin=a,t.originPoint=(0,eU.k)(r.min,r.max,t.origin),t.scale=eF(i)/eF(r),t.translate=(0,eU.k)(i.min,i.max,t.origin)-t.originPoint,(t.scale>=.9999&&t.scale<=1.0001||isNaN(t.scale))&&(t.scale=1),(t.translate>=-.01&&t.translate<=.01||isNaN(t.translate))&&(t.translate=0)}function eV(t,r,i,a){eq(t.x,r.x,i.x,a?a.originX:void 0),eq(t.y,r.y,i.y,a?a.originY:void 0)}function eW(t,r,i){t.min=i.min+r.min,t.max=t.min+eF(r)}function eH(t,r,i){t.min=r.min-i.min,t.max=t.min+eF(r)}function eG(t,r,i){eH(t.x,r.x,i.x),eH(t.y,r.y,i.y)}var eK=i(94349);function eY(t,r,i){return{min:void 0!==r?t.min+r:void 0,max:void 0!==i?t.max+i-(t.max-t.min):void 0}}function eQ(t,r){let i=r.min-t.min,a=r.max-t.max;return r.max-r.min<t.max-t.min&&([i,a]=[a,i]),{min:i,max:a}}function eX(t,r,i){return{min:eZ(t,r),max:eZ(t,i)}}function eZ(t,r){return"number"==typeof t?t:t[r]||0}let eJ=()=>({translate:0,scale:1,origin:0,originPoint:0}),e1=()=>({x:eJ(),y:eJ()}),e0=()=>({min:0,max:0}),e2=()=>({x:e0(),y:e0()});function e3(t){return[t("x"),t("y")]}function e4({top:t,left:r,right:i,bottom:a}){return{x:{min:r,max:i},y:{min:t,max:a}}}function e8(t){return void 0===t||1===t}function e7({scale:t,scaleX:r,scaleY:i}){return!e8(t)||!e8(r)||!e8(i)}function e6(t){return e7(t)||e5(t)||t.z||t.rotate||t.rotateX||t.rotateY||t.skewX||t.skewY}function e5(t){var r,i;return(r=t.x)&&"0%"!==r||(i=t.y)&&"0%"!==i}function e9(t,r,i,a,n){return void 0!==n&&(t=a+n*(t-a)),a+i*(t-a)+r}function te(t,r=0,i=1,a,n){t.min=e9(t.min,r,i,a,n),t.max=e9(t.max,r,i,a,n)}function tt(t,{x:r,y:i}){te(t.x,r.translate,r.scale,r.originPoint),te(t.y,i.translate,i.scale,i.originPoint)}function tr(t,r){t.min=t.min+r,t.max=t.max+r}function ti(t,r,i,a,n=.5){let s=(0,eU.k)(t.min,t.max,n);te(t,r,i,s,a)}function ta(t,r){ti(t.x,r.x,r.scaleX,r.scale,r.originX),ti(t.y,r.y,r.scaleY,r.scale,r.originY)}function tn(t,r){return e4(function(t,r){if(!r)return t;let i=r({x:t.left,y:t.top}),a=r({x:t.right,y:t.bottom});return{top:i.y,left:i.x,bottom:a.y,right:a.x}}(t.getBoundingClientRect(),r))}let ts=({current:t})=>t?t.ownerDocument.defaultView:null,to=new WeakMap;class tl{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=e2(),this.visualElement=t}start(t,{snapToCursor:r=!1}={}){let{presenceContext:i}=this.visualElement;if(i&&!1===i.isPresent)return;let a=t=>{let{dragSnapToOrigin:i}=this.getProps();i?this.pauseAnimation():this.stopAnimation(),r&&this.snapToCursor(eA(t).point)},n=(t,r)=>{let{drag:i,dragPropagation:a,onDragStart:n}=this.getProps();if(i&&!a&&(this.openDragLock&&this.openDragLock(),this.openDragLock=(0,m.Wp)(i),!this.openDragLock))return;this.isDragging=!0,this.currentDirection=null,this.resolveConstraints(),this.visualElement.projection&&(this.visualElement.projection.isAnimationBlocked=!0,this.visualElement.projection.target=void 0),e3(t=>{let r=this.getAxisMotionValue(t).get()||0;if(U.KN.test(r)){let{projection:i}=this.visualElement;if(i&&i.layout){let a=i.layout.layoutBox[t];a&&(r=eF(a)*(parseFloat(r)/100))}}this.originPoint[t]=r}),n&&k.Gt.postRender(()=>n(t,r)),w(this.visualElement,"transform");let{animationState:s}=this.visualElement;s&&s.setActive("whileDrag",!0)},s=(t,r)=>{let{dragPropagation:i,dragDirectionLock:a,onDirectionLock:n,onDrag:s}=this.getProps();if(!i&&!this.openDragLock)return;let{offset:o}=r;if(a&&null===this.currentDirection){this.currentDirection=function(t,r=10){let i=null;return Math.abs(t.y)>r?i="y":Math.abs(t.x)>r&&(i="x"),i}(o),null!==this.currentDirection&&n&&n(this.currentDirection);return}this.updateAxis("x",r.point,o),this.updateAxis("y",r.point,o),this.visualElement.render(),s&&s(t,r)},o=(t,r)=>this.stop(t,r),l=()=>e3(t=>{var r;return"paused"===this.getAnimationState(t)&&(null==(r=this.getAxisMotionValue(t).animation)?void 0:r.play())}),{dragSnapToOrigin:u}=this.getProps();this.panSession=new eP(t,{onSessionStart:a,onStart:n,onMove:s,onSessionEnd:o,resumeAnimation:l},{transformPagePoint:this.visualElement.getTransformPagePoint(),dragSnapToOrigin:u,contextWindow:ts(this.visualElement)})}stop(t,r){let i=this.isDragging;if(this.cancel(),!i)return;let{velocity:a}=r;this.startAnimation(a);let{onDragEnd:n}=this.getProps();n&&k.Gt.postRender(()=>n(t,r))}cancel(){this.isDragging=!1;let{projection:t,animationState:r}=this.visualElement;t&&(t.isAnimationBlocked=!1),this.panSession&&this.panSession.end(),this.panSession=void 0;let{dragPropagation:i}=this.getProps();!i&&this.openDragLock&&(this.openDragLock(),this.openDragLock=null),r&&r.setActive("whileDrag",!1)}updateAxis(t,r,i){let{drag:a}=this.getProps();if(!i||!tu(t,a,this.currentDirection))return;let n=this.getAxisMotionValue(t),s=this.originPoint[t]+i[t];this.constraints&&this.constraints[t]&&(s=function(t,{min:r,max:i},a){return void 0!==r&&t<r?t=a?(0,eU.k)(r,t,a.min):Math.max(t,r):void 0!==i&&t>i&&(t=a?(0,eU.k)(i,t,a.max):Math.min(t,i)),t}(s,this.constraints[t],this.elastic[t])),n.set(s)}resolveConstraints(){var t;let{dragConstraints:r,dragElastic:i}=this.getProps(),a=this.visualElement.projection&&!this.visualElement.projection.layout?this.visualElement.projection.measure(!1):null==(t=this.visualElement.projection)?void 0:t.layout,n=this.constraints;r&&eB(r)?this.constraints||(this.constraints=this.resolveRefConstraints()):r&&a?this.constraints=function(t,{top:r,left:i,bottom:a,right:n}){return{x:eY(t.x,i,n),y:eY(t.y,r,a)}}(a.layoutBox,r):this.constraints=!1,this.elastic=function(t=.35){return!1===t?t=0:!0===t&&(t=.35),{x:eX(t,"left","right"),y:eX(t,"top","bottom")}}(i),n!==this.constraints&&a&&this.constraints&&!this.hasMutatedConstraints&&e3(t=>{!1!==this.constraints&&this.getAxisMotionValue(t)&&(this.constraints[t]=function(t,r){let i={};return void 0!==r.min&&(i.min=r.min-t.min),void 0!==r.max&&(i.max=r.max-t.min),i}(a.layoutBox[t],this.constraints[t]))})}resolveRefConstraints(){var t;let{dragConstraints:r,onMeasureDragConstraints:i}=this.getProps();if(!r||!eB(r))return!1;let a=r.current;(0,X.V)(null!==a,"If `dragConstraints` is set as a React ref, that ref must be passed to another component's `ref` prop.");let{projection:n}=this.visualElement;if(!n||!n.layout)return!1;let s=function(t,r,i){let a=tn(t,i),{scroll:n}=r;return n&&(tr(a.x,n.offset.x),tr(a.y,n.offset.y)),a}(a,n.root,this.visualElement.getTransformPagePoint()),o=(t=n.layout.layoutBox,{x:eQ(t.x,s.x),y:eQ(t.y,s.y)});if(i){let t=i(function({x:t,y:r}){return{top:r.min,right:t.max,bottom:r.max,left:t.min}}(o));this.hasMutatedConstraints=!!t,t&&(o=e4(t))}return o}startAnimation(t){let{drag:r,dragMomentum:i,dragElastic:a,dragTransition:n,dragSnapToOrigin:s,onDragTransitionEnd:o}=this.getProps(),l=this.constraints||{};return Promise.all(e3(o=>{if(!tu(o,r,this.currentDirection))return;let u=l&&l[o]||{};s&&(u={min:0,max:0});let d={type:"inertia",velocity:i?t[o]:0,bounceStiffness:a?200:1e6,bounceDamping:a?40:1e7,timeConstant:750,restDelta:1,restSpeed:10,...n,...u};return this.startAxisValueAnimation(o,d)})).then(o)}startAxisValueAnimation(t,r){let i=this.getAxisMotionValue(t);return w(this.visualElement,t),i.start(eg(t,i,0,r,this.visualElement,!1))}stopAnimation(){e3(t=>this.getAxisMotionValue(t).stop())}pauseAnimation(){e3(t=>{var r;return null==(r=this.getAxisMotionValue(t).animation)?void 0:r.pause()})}getAnimationState(t){var r;return null==(r=this.getAxisMotionValue(t).animation)?void 0:r.state}getAxisMotionValue(t){let r=`_drag${t.toUpperCase()}`,i=this.visualElement.getProps();return i[r]||this.visualElement.getValue(t,(i.initial?i.initial[t]:void 0)||0)}snapToCursor(t){e3(r=>{let{drag:i}=this.getProps();if(!tu(r,i,this.currentDirection))return;let{projection:a}=this.visualElement,n=this.getAxisMotionValue(r);if(a&&a.layout){let{min:i,max:s}=a.layout.layoutBox[r];n.set(t[r]-(0,eU.k)(i,s,.5))}})}scalePositionWithinConstraints(){if(!this.visualElement.current)return;let{drag:t,dragConstraints:r}=this.getProps(),{projection:i}=this.visualElement;if(!eB(r)||!i||!this.constraints)return;this.stopAnimation();let a={x:0,y:0};e3(t=>{let r=this.getAxisMotionValue(t);if(r&&!1!==this.constraints){let i=r.get();a[t]=function(t,r){let i=.5,a=eF(t),n=eF(r);return n>a?i=(0,eL.q)(r.min,r.max-a,t.min):a>n&&(i=(0,eL.q)(t.min,t.max-n,r.min)),(0,eK.q)(0,1,i)}({min:i,max:i},this.constraints[t])}});let{transformTemplate:n}=this.visualElement.getProps();this.visualElement.current.style.transform=n?n({},""):"none",i.root&&i.root.updateScroll(),i.updateLayout(),this.resolveConstraints(),e3(r=>{if(!tu(r,t,null))return;let i=this.getAxisMotionValue(r),{min:n,max:s}=this.constraints[r];i.set((0,eU.k)(n,s,a[r]))})}addListeners(){if(!this.visualElement.current)return;to.set(this.visualElement,this);let t=eN(this.visualElement.current,"pointerdown",t=>{let{drag:r,dragListener:i=!0}=this.getProps();r&&i&&this.start(t)}),r=()=>{let{dragConstraints:t}=this.getProps();eB(t)&&t.current&&(this.constraints=this.resolveRefConstraints())},{projection:i}=this.visualElement,a=i.addEventListener("measure",r);i&&!i.layout&&(i.root&&i.root.updateScroll(),i.updateLayout()),k.Gt.read(r);let n=eI(window,"resize",()=>this.scalePositionWithinConstraints()),s=i.addEventListener("didUpdate",({delta:t,hasLayoutChanged:r})=>{this.isDragging&&r&&(e3(r=>{let i=this.getAxisMotionValue(r);i&&(this.originPoint[r]+=t[r].translate,i.set(i.get()+t[r].translate))}),this.visualElement.render())});return()=>{n(),t(),a(),s&&s()}}getProps(){let t=this.visualElement.getProps(),{drag:r=!1,dragDirectionLock:i=!1,dragPropagation:a=!1,dragConstraints:n=!1,dragElastic:s=.35,dragMomentum:o=!0}=t;return{...t,drag:r,dragDirectionLock:i,dragPropagation:a,dragConstraints:n,dragElastic:s,dragMomentum:o}}}function tu(t,r,i){return(!0===r||r===t)&&(null===i||i===t)}class td extends ek{constructor(t){super(t),this.removeGroupControls=T.l,this.removeListeners=T.l,this.controls=new tl(t)}mount(){let{dragControls:t}=this.node.getProps();t&&(this.removeGroupControls=t.subscribe(this.controls)),this.removeListeners=this.controls.addListeners()||T.l}unmount(){this.removeGroupControls(),this.removeListeners()}}let tc=t=>(r,i)=>{t&&k.Gt.postRender(()=>t(r,i))};class th extends ek{constructor(){super(...arguments),this.removePointerDownListener=T.l}onPointerDown(t){this.session=new eP(t,this.createPanHandlers(),{transformPagePoint:this.node.getTransformPagePoint(),contextWindow:ts(this.node)})}createPanHandlers(){let{onPanSessionStart:t,onPanStart:r,onPan:i,onPanEnd:a}=this.node.getProps();return{onSessionStart:tc(t),onStart:tc(r),onMove:i,onEnd:(t,r)=>{delete this.session,a&&k.Gt.postRender(()=>a(t,r))}}}mount(){this.removePointerDownListener=eN(this.node.current,"pointerdown",t=>this.onPointerDown(t))}update(){this.session&&this.session.updateHandlers(this.createPanHandlers())}unmount(){this.removePointerDownListener(),this.session&&this.session.end()}}var tf=i(37876),tp=i(14232),tm=i(83885),tg=i(5048);let tb=(0,tp.createContext)({}),ty={hasAnimatedSinceResize:!0,hasEverUpdated:!1};function tv(t,r){return r.max===r.min?0:t/(r.max-r.min)*100}let t_={correct:(t,r)=>{if(!r.target)return t;if("string"==typeof t)if(!U.px.test(t))return t;else t=parseFloat(t);let i=tv(t,r.target.x),a=tv(t,r.target.y);return`${i}% ${a}%`}},tw={},{schedule:tx,cancel:t$}=(0,i(53746).I)(queueMicrotask,!1);class tS extends tp.Component{componentDidMount(){let{visualElement:t,layoutGroup:r,switchLayoutGroup:i,layoutId:a}=this.props,{projection:n}=t;Object.assign(tw,tC),n&&(r.group&&r.group.add(n),i&&i.register&&a&&i.register(n),n.root.didUpdate(),n.addEventListener("animationComplete",()=>{this.safeToRemove()}),n.setOptions({...n.options,onExitComplete:()=>this.safeToRemove()})),ty.hasEverUpdated=!0}getSnapshotBeforeUpdate(t){let{layoutDependency:r,visualElement:i,drag:a,isPresent:n}=this.props,s=i.projection;return s&&(s.isPresent=n,a||t.layoutDependency!==r||void 0===r?s.willUpdate():this.safeToRemove(),t.isPresent!==n&&(n?s.promote():s.relegate()||k.Gt.postRender(()=>{let t=s.getStack();t&&t.members.length||this.safeToRemove()}))),null}componentDidUpdate(){let{projection:t}=this.props.visualElement;t&&(t.root.didUpdate(),tx.postRender(()=>{!t.currentAnimation&&t.isLead()&&this.safeToRemove()}))}componentWillUnmount(){let{visualElement:t,layout
2783Group:r,switchLayoutGroup:i}=this.props,{projection:a}=t;a&&(a.scheduleCheckAfterUnmount(),r&&r.group&&r.group.remove(a),i&&i.deregister&&i.deregister(a))}safeToRemove(){let{safeToRemove:t}=this.props;t&&t()}render(){return null}}function tk(t){let[r,i]=(0,tm.xQ)(),a=(0,tp.useContext)(tg.L);return(0,tf.jsx)(tS,{...t,layoutGroup:a,switchLayoutGroup:(0,tp.useContext)(tb),isPresent:r,safeToRemove:i})}let tC={borderRadius:{...t_,applyTo:["borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius"]},borderTopLeftRadius:t_,borderTopRightRadius:t_,borderBottomLeftRadius:t_,borderBottomRightRadius:t_,boxShadow:{correct:(t,{treeScale:r,projectionDelta:i})=>{let a=M.f.parse(t);if(a.length>5)return t;let n=M.f.createTransformer(t),s=+("number"!=typeof a[0]),o=i.x.scale*r.x,l=i.y.scale*r.y;a[0+s]/=o,a[1+s]/=l;let u=(0,eU.k)(o,l,.5);return"number"==typeof a[2+s]&&(a[2+s]/=u),"number"==typeof a[3+s]&&(a[3+s]/=u),n(a)}}};var tE=i(21623),tT=i(40215);let tI=(t,r)=>t.depth-r.depth;class tA{constructor(){this.children=[],this.isDirty=!1}add(t){(0,tT.Kq)(this.children,t),this.isDirty=!0}remove(t){(0,tT.Ai)(this.children,t),this.isDirty=!0}forEach(t){this.isDirty&&this.children.sort(tI),this.isDirty=!1,this.children.forEach(t)}}var tN=i(10223);function tO(t){let r=(0,_.S)(t)?t.get():t;return r&&"object"==typeof r&&r.mix&&r.toValue?r.toValue():r}let tM=["TopLeft","TopRight","BottomLeft","BottomRight"],tP=tM.length,tR=t=>"string"==typeof t?parseFloat(t):t,tj=t=>"number"==typeof t||U.px.test(t);function tz(t,r){return void 0!==t[r]?t[r]:t.borderRadius}let tD=tL(0,.5,N.yT),tB=tL(.5,.95,T.l);function tL(t,r,i){return a=>a<t?0:a>r?1:i((0,eL.q)(t,r,a))}function tU(t,r){t.min=r.min,t.max=r.max}function tF(t,r){tU(t.x,r.x),tU(t.y,r.y)}function tq(t,r){t.translate=r.translate,t.scale=r.scale,t.originPoint=r.originPoint,t.origin=r.origin}function tV(t,r,i,a,n){return t-=r,t=a+1/i*(t-a),void 0!==n&&(t=a+1/n*(t-a)),t}function tW(t,r,[i,a,n],s,o){!function(t,r=0,i=1,a=.5,n,s=t,o=t){if(U.KN.test(r)&&(r=parseFloat(r),r=(0,eU.k)(o.min,o.max,r/100)-o.min),"number"!=typeof r)return;let l=(0,eU.k)(s.min,s.max,a);t===s&&(l-=r),t.min=tV(t.min,r,i,l,n),t.max=tV(t.max,r,i,l,n)}(t,r[i],r[a],r[n],r.scale,s,o)}let tH=["x","scaleX","originX"],tG=["y","scaleY","originY"];function tK(t,r,i,a){tW(t.x,r,tH,i?i.x:void 0,a?a.x:void 0),tW(t.y,r,tG,i?i.y:void 0,a?a.y:void 0)}function tY(t){return 0===t.translate&&1===t.scale}function tQ(t){return tY(t.x)&&tY(t.y)}function tX(t,r){return t.min===r.min&&t.max===r.max}function tZ(t,r){return Math.round(t.min)===Math.round(r.min)&&Math.round(t.max)===Math.round(r.max)}function tJ(t,r){return tZ(t.x,r.x)&&tZ(t.y,r.y)}function t1(t){return eF(t.x)/eF(t.y)}function t0(t,r){return t.translate===r.translate&&t.scale===r.scale&&t.originPoint===r.originPoint}class t2{constructor(){this.members=[]}add(t){(0,tT.Kq)(this.members,t),t.scheduleRender()}remove(t){if((0,tT.Ai)(this.members,t),t===this.prevLead&&(this.prevLead=void 0),t===this.lead){let t=this.members[this.members.length-1];t&&this.promote(t)}}relegate(t){let r,i=this.members.findIndex(r=>t===r);if(0===i)return!1;for(let t=i;t>=0;t--){let i=this.members[t];if(!1!==i.isPresent){r=i;break}}return!!r&&(this.promote(r),!0)}promote(t,r){let i=this.lead;if(t!==i&&(this.prevLead=i,this.lead=t,t.show(),i)){i.instance&&i.scheduleRender(),t.scheduleRender(),t.resumeFrom=i,r&&(t.resumeFrom.preserveOpacity=!0),i.snapshot&&(t.snapshot=i.snapshot,t.snapshot.latestValues=i.animationValues||i.latestValues),t.root&&t.root.isUpdating&&(t.isLayoutDirty=!0);let{crossfade:a}=t.options;!1===a&&i.hide()}}exitAnimationComplete(){this.members.forEach(t=>{let{options:r,resumingFrom:i}=t;r.onExitComplete&&r.onExitComplete(),i&&i.options.onExitComplete&&i.options.onExitComplete()})}scheduleRender(){this.members.forEach(t=>{t.instance&&t.scheduleRender(!1)})}removeLeadSnapshot(){this.lead&&this.lead.snapshot&&(this.lead.snapshot=void 0)}}let t3={type:"projectionFrame",totalNodes:0,resolvedTargetDeltas:0,recalculatedProjection:0},t4="undefined"!=typeof window&&void 0!==window.MotionDebug,t8=["","X","Y","Z"],t7={visibility:"hidden"},t6=0;function t5(t,r,i,a){let{latestValues:n}=r;n[t]&&(i[t]=n[t],r.setStaticValue(t,0),a&&(a[t]=0))}function t9({attachResizeListener:t,defaultParent:r,measureScroll:i,checkIsScrollRoot:a,resetTransform:n}){return class{constructor(t={},i=null==r?void 0:r()){this.id=t6++,this.animationId=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.updateScheduled=!1,this.scheduleUpdate=()=>this.update(),this.projectionUpdateScheduled=!1,this.checkUpdateFailed=()=>{this.isUpdating&&(this.isUpdating=!1,this.clearAllSnapshots())},this.updateProjection=()=>{this.projectionUpdateScheduled=!1,t4&&(t3.totalNodes=t3.resolvedTargetDeltas=t3.recalculatedProjection=0),this.nodes.forEac
2783h(rr),this.nodes.forEach(ru),this.nodes.forEach(rd),this.nodes.forEach(ri),t4&&window.MotionDebug.record(t3)},this.resolvedRelativeTargetAt=0,this.hasProjected=!1,this.isVisible=!0,this.animationProgress=0,this.sharedNodes=new Map,this.latestValues=t,this.root=i?i.root||i:this,this.path=i?[...i.path,i]:[],this.parent=i,this.depth=i?i.depth+1:0;for(let t=0;t<this.path.length;t++)this.path[t].shouldResetTransform=!0;this.root===this&&(this.nodes=new tA)}addEventListener(t,r){return this.eventHandlers.has(t)||this.eventHandlers.set(t,new tN.v),this.eventHandlers.get(t).add(r)}notifyListeners(t,...r){let i=this.eventHandlers.get(t);i&&i.notify(...r)}hasListeners(t){return this.eventHandlers.has(t)}mount(r,i=this.root.hasTreeAnimated){if(this.instance)return;this.isSVG=r instanceof SVGElement&&"svg"!==r.tagName,this.instance=r;let{layoutId:a,layout:n,visualElement:s}=this.options;if(s&&!s.current&&s.mount(r),this.root.nodes.add(this),this.parent&&this.parent.children.add(this),i&&(n||a)&&(this.isLayoutDirty=!0),t){let i,a=()=>this.root.updateBlockedByResize=!1;t(r,()=>{this.root.updateBlockedByResize=!0,i&&i(),i=function(t,r){let i=tE.k.now(),a=({timestamp:r})=>{let n=r-i;n>=250&&((0,k.WG)(a),t(n-250))};return k.Gt.read(a,!0),()=>(0,k.WG)(a)}(a,250),ty.hasAnimatedSinceResize&&(ty.hasAnimatedSinceResize=!1,this.nodes.forEach(rl))})}a&&this.root.registerSharedNode(a,this),!1!==this.options.animate&&s&&(a||n)&&this.addEventListener("didUpdate",({delta:t,hasLayoutChanged:r,hasRelativeTargetChanged:i,layout:a})=>{if(this.isTreeAnimationBlocked()){this.target=void 0,this.relativeTarget=void 0;return}let n=this.options.transition||s.getDefaultTransition()||rg,{onLayoutAnimationStart:o,onLayoutAnimationComplete:l}=s.getProps(),u=!this.targetLayout||!tJ(this.targetLayout,a)||i,d=!r&&i;if(this.options.layoutRoot||this.resumeFrom&&this.resumeFrom.instance||d||r&&(u||!this.currentAnimation)){this.resumeFrom&&(this.resumingFrom=this.resumeFrom,this.resumingFrom.resumingFrom=void 0),this.setAnimationOrigin(t,d);let r={...(0,m.rU)(n,"layout"),onPlay:o,onComplete:l};(s.shouldReduceMotion||this.options.layoutRoot)&&(r.delay=0,r.type=!1),this.startAnimation(r)}else r||rl(this),this.isLead()&&this.options.onExitComplete&&this.options.onExitComplete();this.targetLayout=a})}unmount(){this.options.layoutId&&this.willUpdate(),this.root.nodes.remove(this);let t=this.getStack();t&&t.remove(this),this.parent&&this.parent.children.delete(this),this.instance=void 0,(0,k.WG)(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(rc),this.animationId++)}getTransformTemplate(){let{visualElement:t}=this.options;return t&&t.getProps().transformTemplate}willUpdate(t=!0){if(this.root.hasTreeAnimated=!0,this.root.isUpdateBlocked()){this.options.onExitComplete&&this.options.onExitComplete();return}if(window.MotionCancelOptimisedAnimation&&!this.hasCheckedOptimisedAppear&&function t(r){if(r.hasCheckedOptimisedAppear=!0,r.root===r)return;let{visualElement:i}=r.options;if(!i)return;let a=i.props[$];if(window.MotionHasOptimisedAnimation(a,"transform")){let{layout:t,layoutId:i}=r.options;window.MotionCancelOptimisedAnimation(a,"transform",k.Gt,!(t||i))}let{parent:n}=r;n&&!n.hasCheckedOptimisedAppear&&t(n)}(this),this.root.isUpdating||this.root.startUpdate(),this.isLayoutDirty)return;this.isLayoutDirty=!0;for(let t=0;t<this.path.length;t++){let r=this.path[t];r.shouldResetTransform=!0,r.updateScroll("snapshot"),r.options.layoutRoot&&r.willUpdate(!1)}let{layoutId:r,layout:i}=this.options;if(void 0===r&&!i)return;let a=this.getTransformTemplate();this.prevTransformTemplateValue=a?a(this.latestValues,""):void 0,this.updateSnapshot(),t&&this.notifyListeners("willUpdate")}update(){if(this.updateScheduled=!1,this.isUpdateBlocked()){this.unblockUpdate(),this.clearAllSnapshots(),this.nodes.forEac
2783h(rn);return}this.isUpdating||this.nodes.forEach(rs),this.isUpdating=!1,this.nodes.forEach(ro),this.nodes.forEach(re),this.nodes.forEach(rt),this.clearAllSnapshots();let t=tE.k.now();k.uv.delta=(0,eK.q)(0,1e3/60,t-k.uv.timestamp),k.uv.timestamp=t,k.uv.isProcessing=!0,k.PP.update.process(k.uv),k.PP.preRender.process(k.uv),k.PP.render.process(k.uv),k.uv.isProcessing=!1}didUpdate(){this.updateScheduled||(this.updateScheduled=!0,tx.read(this.scheduleUpdate))}clearAllSnapshots(){this.nodes.forEach(ra),this.sharedNodes.forEach(rh)}scheduleUpdateProjection(){this.projectionUpdateScheduled||(this.projectionUpdateScheduled=!0,k.Gt.preRender(this.updateProjection,!1,!0))}scheduleCheckAfterUnmount(){k.Gt.postRender(()=>{this.isLayoutDirty?this.root.didUpdate():this.root.checkUpdateFailed()})}updateSnapshot(){!this.snapshot&&this.instance&&(this.snapshot=this.measure())}updateLayout(){if(!this.instance||(this.updateScroll(),!(this.options.alwaysMeasureLayout&&this.isLead())&&!this.isLayoutDirty))return;if(this.resumeFrom&&!this.resumeFrom.instance)for(let t=0;t<this.path.length;t++)this.path[t].updateScroll();let t=this.layout;this.layout=this.measure(!1),this.layoutCorrected=e2(),this.isLayoutDirty=!1,this.projectionDelta=void 0,this.notifyListeners("measure",this.layout.layoutBox);let{visualElement:r}=this.options;r&&r.notify("LayoutMeasure",this.layout.layoutBox,t?t.layoutBox:void 0)}updateScroll(t="measure"){let r=!!(this.options.layoutScroll&&this.instance);if(this.scroll&&this.scroll.animationId===this.root.animationId&&this.scroll.phase===t&&(r=!1),r){let r=a(this.instance);this.scroll={animationId:this.root.animationId,phase:t,isRoot:r,offset:i(this.instance),wasRoot:this.scroll?this.scroll.isRoot:r}}}resetTransform(){if(!n)return;let t=this.isLayoutDirty||this.shouldResetTransform||this.options.alwaysMeasureLayout,r=this.projectionDelta&&!tQ(this.projectionDelta),i=this.getTransformTemplate(),a=i?i(this.latestValues,""):void 0,s=a!==this.prevTransformTemplateValue;t&&(r||e6(this.latestValues)||s)&&(n(this.instance,a),this.shouldResetTransform=!1,this.scheduleRender())}measure(t=!0){var r;let i=this.measurePageBox(),a=this.removeElementScroll(i);return t&&(a=this.removeTransform(a)),rv((r=a).x),rv(r.y),{animationId:this.root.animationId,measuredBox:i,layoutBox:a,latestValues:{},source:this.id}}measurePageBox(){var t;let{visualElement:r}=this.options;if(!r)return e2();let i=r.measureViewportBox();if(!((null==(t=this.scroll)?void 0:t.wasRoot)||this.path.some(rw))){let{scroll:t}=this.root;t&&(tr(i.x,t.offset.x),tr(i.y,t.offset.y))}return i}removeElementScroll(t){var r;let i=e2();if(tF(i,t),null==(r=this.scroll)?void 0:r.wasRoot)return i;for(let r=0;r<this.path.length;r++){let a=this.path[r],{scroll:n,options:s}=a;a!==this.root&&n&&s.layoutScroll&&(n.wasRoot&&tF(i,t),tr(i.x,n.offset.x),tr(i.y,n.offset.y))}return i}applyTransform(t,r=!1){let i=e2();tF(i,t);for(let t=0;t<this.path.length;t++){let a=this.path[t];!r&&a.options.layoutScroll&&a.scroll&&a!==a.root&&ta(i,{x:-a.scroll.offset.x,y:-a.scroll.offset.y}),e6(a.latestValues)&&ta(i,a.latestValues)}return e6(this.latestValues)&&ta(i,this.latestValues),i}removeTransform(t){let r=e2();tF(r,t);for(let t=0;t<this.path.length;t++){let i=this.path[t];if(!i.instance||!e6(i.latestValues))continue;e7(i.latestValues)&&i.updateSnapshot();let a=e2();tF(a,i.measurePageBox()),tK(r,i.latestValues,i.snapshot?i.snapshot.layoutBox:void 0,a)}return e6(this.latestValues)&&tK(r,this.latestValues),r}setTargetDelta(t){this.targetDelta=t,this.root.scheduleUpdateProjection(),this.isProjectionDirty=!0}setOptions(t){this.options={...this.options,...t,crossfade:void 0===t.crossfade||t.crossfade}}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!==k.uv.timestamp&&this.relativeParent.resolveTargetDelta(!0)}resolveTargetDelta(t=!1){var r,i,a,n;let s=this.getLead();this.isProjectionDirty||(this.isProjectionDirty=s.isProjectionDirty),this.isTransformDirty||(this.isTransformDirty=s.isTransformDirty),this.isSharedProjectionDirty||(this.isSharedProjectionDirty=s.isS
2783haredProjectionDirty);let o=!!this.resumingFrom||this!==s;if(!(t||o&&this.isSharedProjectionDirty||this.isProjectionDirty||(null==(r=this.parent)?void 0:r.isProjectionDirty)||this.attemptToResolveRelativeTarget||this.root.updateBlockedByResize))return;let{layout:l,layoutId:u}=this.options;if(this.layout&&(l||u)){if(this.resolvedRelativeTargetAt=k.uv.timestamp,!this.targetDelta&&!this.relativeTarget){let t=this.getClosestProjectingParent();t&&t.layout&&1!==this.animationProgress?(this.relativeParent=t,this.forceRelativeParentToResolveTarget(),this.relativeTarget=e2(),this.relativeTargetOrigin=e2(),eG(this.relativeTargetOrigin,this.layout.layoutBox,t.layout.layoutBox),tF(this.relativeTarget,this.relativeTargetOrigin)):this.relativeParent=this.relativeTarget=void 0}if(this.relativeTarget||this.targetDelta){if((this.target||(this.target=e2(),this.targetWithTransforms=e2()),this.relativeTarget&&this.relativeTargetOrigin&&this.relativeParent&&this.relativeParent.target)?(this.forceRelativeParentToResolveTarget(),i=this.target,a=this.relativeTarget,n=this.relativeParent.target,eW(i.x,a.x,n.x),eW(i.y,a.y,n.y)):this.targetDelta?(this.resumingFrom?this.target=this.applyTransform(this.layout.layoutBox):tF(this.target,this.layout.layoutBox),tt(this.target,this.targetDelta)):tF(this.target,this.layout.layoutBox),this.attemptToResolveRelativeTarget){this.attemptToResolveRelativeTarget=!1;let t=this.getClosestProjectingParent();t&&!!t.resumingFrom==!!this.resumingFrom&&!t.options.layoutScroll&&t.target&&1!==this.animationProgress?(this.relativeParent=t,this.forceRelativeParentToResolveTarget(),this.relativeTarget=e2(),this.relativeTargetOrigin=e2(),eG(this.relativeTargetOrigin,this.target,t.target),tF(this.relativeTarget,this.relativeTargetOrigin)):this.relativeParent=this.relativeTarget=void 0}t4&&t3.resolvedTargetDeltas++}}}getClosestProjectingParent(){if(!(!this.parent||e7(this.parent.latestValues)||e5(this.parent.latestValues)))if(this.parent.isProjecting())return this.parent;else return this.parent.getClosestProjectingParent()}isProjecting(){return!!((this.relativeTarget||this.targetDelta||this.options.layoutRoot)&&this.layout)}calcProjection(){var t;let r=this.getLead(),i=!!this.resumingFrom||this!==r,a=!0;if((this.isProjectionDirty||(null==(t=this.parent)?void 0:t.isProjectionDirty))&&(a=!1),i&&(this.isSharedProjectionDirty||this.isTransformDirty)&&(a=!1),this.resolvedRelativeTargetAt===k.uv.timestamp&&(a=!1),a)return;let{layout:n,layoutId:s}=this.options;if(this.isTreeAnimating=!!(this.parent&&this.parent.isTreeAnimating||this.currentAnimation||this.pendingAnimation),this.isTreeAnimating||(this.targetDelta=this.relativeTarget=void 0),!this.layout||!(n||s))return;tF(this.layoutCorrected,this.layout.layoutBox);let o=this.treeScale.x,l=this.treeScale.y;!function(t,r,i,a=!1){let n,s,o=i.length;if(o){r.x=r.y=1;for(let l=0;l<o;l++){s=(n=i[l]).projectionDelta;let{visualElement:o}=n.options;(!o||!o.props.style||"contents"!==o.props.style.display)&&(a&&n.options.layoutScroll&&n.scroll&&n!==n.root&&ta(t,{x:-n.scroll.offset.x,y:-n.scroll.offset.y}),s&&(r.x*=s.x.scale,r.y*=s.y.scale,tt(t,s)),a&&e6(n.latestValues)&&ta(t,n.latestValues))}r.x<1.0000000000001&&r.x>.999999999999&&(r.x=1),r.y<1.0000000000001&&r.y>.999999999999&&(r.y=1)}}(this.layoutCorrected,this.treeScale,this.path,i),r.layout&&!r.target&&(1!==this.treeScale.x||1!==this.treeScale.y)&&(r.target=r.layout.layoutBox,r.targetWithTransforms=e2());let{target:u}=r;if(!u){this.prevProjectionDelta&&(this.createProjectionDeltas(),this.scheduleRender());return}this.projectionDelta&&this.prevProjectionDelta?(tq(this.prevProjectionDelta.x,this.projectionDelta.x),tq(this.prevProjectionDelta.y,this.projectionDelta.y)):this.createProjectionDeltas(),eV(this.projectionDelta,this.layoutCorrected,u,this.latestValues),this.treeScale.x===o&&this.treeScale.y===l&&t0(this.projectionDelta.x,this.prevProjectionDelta.x)&&t0(this.projectionDelta.y,this.prevProjectionDelta.y)||(this.hasProjected=!0,this.scheduleRender(),this.notifyListeners("projectionUpdate",u)),t4&&t3.recalculatedProjection++}hide(){this.isVisible=!1}show(){this.isVisible=!0}scheduleRender(t=!0){var r;if(null==(r=this.options.visualElement)||r.scheduleRender(),t){let t=this.getStack();t&&t.scheduleRender()}this.resumingFrom&&!this.resumingFrom.instance&&(this.resumingFrom=void 0)}createProjectionDeltas(){this.prevProjectionDelta=e1(),this.projectionDelta=e1(),this.projectionDeltaWithTransform=e1()}setAnimationOrigin(t,r=!1){let i,a=this.snapshot,n=a?a.latestValues:{},s={...this.latestValues},o=e1();this.relativeParent&&this.relativeParent.options.layoutRoot||(this.relativeTarget=this.relativeTargetOrigin=void 0),this.attemptToResolveRelativeTarget=!r;let l=e2(),u=(a?a.source:void 0)!==(this.layout?this.layout.source:void 0),d=this.getStack(),c=!d||d.members.length<=1,h=!!(u&&!c&&!0===this.options.crossfade&&!this.path.some(rm));this.animationProgress=0,this.mixTargetDelta=r=>{let a=r/1e3;if(rf(o.x,t.x,a),rf(o.y,t.y,a),this.setTargetDelta(o),this.relativeTarget&&this.relativeTargetOrigin&&this.layout&&this.relativeParent&&this.relativeParent.layout){var d,f,p,m,g,b;eG(l,this.layout.layoutBox,this.relativeParent.layout.layoutBox),p=this.relativeTarget,m=this.relativeTargetOrigin,g=l,b=a,rp(p.x,m.x,g.x,b),rp(p.y,m.y,g.y,b),i&&(d=this.relativeTarget,f=i,tX(d.x,f.x)&&tX(d.y,f.y))&&(this.isProjectionDirty=!1),i||(i=e2()),tF(i,this.relativeTarget)}u&&(this.animationValues=s,function(t,r,i,a,n,s){n?(t.opacity=(0,eU.k)(0,void 0!==i.opacity?i.opacity:1,tD(a)),t.opacityExit=(0,eU.k)(void 0!==r.opacity?r.opacity:1,0,tB(a))):s&&(t.opacity=(0,eU.k)(void 0!==r.opacity?r.opacity:1,void 0!==i.opacity?i.opacity:1,a));for(let n=0;n<tP;n++){let s=`border${tM[n]}Radius`,o=tz(r,s),l=tz(i,s);(void 0!==o||void 0!==l)&&(o||(o=0),l||(l=0),0===o||0===l||tj(o)===tj(l)?(t[s]=Math.max((0,eU.k)(tR(o),tR(l),a),0),(U.KN.test(l)||U.KN.test(o))&&(t[s]+="%")):t[s]=l)}(r.rotate||i.rotate)&&(t.rotate=(0,eU.k)(r.rotate||0,i.rotate||0,a))}(s,n,this.latestValues,a,h,c)),this.root.scheduleUpdateProjection(),this.scheduleRender(),this.animationProgress=a},this.mixTargetDelta(1e3*!!this.options.layoutRoot)}startAnimation(t){this.notifyListeners("animationStart"),this.currentAnimation&&this.currentAnimation.stop(),this.resumingFrom&&this.resumingFrom.currentAnimation&&this.resumingFrom.currentAnimation.stop(),this.pendingAnimation&&((0,k.WG)(this.pendingAnimation),this.pendingAnimation=void 0),this.pendingAnimation=k.Gt.update(()=>{ty.hasAnimatedSinceResize=!0,this.currentAnimation=function(t,r,i){let a=(0,_.S)(0)?0:(0,v.OQ)(t);return a.start(eg("",a,1e3,i)),a.animation}(0,0,{...t,onUpdate:r=>{this.mixTargetDelta(r),t.onUpdate&&t.onUpdate(r)},onComplete:()=>{t.onComplete&&t.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);let t=this.getStack();t&&t.exitAnimationComplete(),this.resumingFrom=this.currentAnimation=this.animationValues=void 0,this.notifyListeners("animationComplete")}finishAnimation(){this.currentAnimation&&(this.mixTargetDelta&&this.mixTargetDelta(1e3),this.currentAnimation.stop()),this.completeAnimation()}applyTransformsToTarget(){let t=this.getLead(),{targetWithTransforms:r,target:i,layout:a,latestValues:n}=t;if(r&&i&&a){if(this!==t&&this.layout&&a&&r_(this.options.animationType,this.layout.layoutBox,a.layoutBox)){i=this.target||e2();let r=eF(this.layout.layoutBox.x);i.x.min=t.target.x.min,i.x.max=i.x.min+r;let a=eF(this.layout.layoutBox.y);i.y.min=t.target.y.min,i.y.max=i.y.min+a}tF(r,i),ta(r,n),eV(this.projectionDeltaWithTransform,this.layoutCorrected,r,n)}}registerSharedNode(t,r){this.sharedNodes.has(t)||this.sharedNodes.set(t,new t2),this.sharedNodes.get(t).add(r);let i=r.options.initialPromotionConfig;r.promote({transition:i?i.transition:void 0,preserveFollowOpacity:i&&i.shouldPreserveFollowOpacity?i.shouldPreserveFollowOpacity(r):void 0})}isLead(){let t=this.getStack();return!t||t.lead===this}getLead(){var t;let{layoutId:r}=this.options;return r&&(null==(t=this.getStack())?void 0:t.lead)||this}getPrevLead(){var t;let{layoutId:r}=this.options;return r?null==(t=this.getStack())?void 0:t.prevLead:void 0}getStack(){let{layoutId:t}=this.options;if(t)return this.root.sharedNodes.get(t)}promote({needsReset:t,transition:r,preserveFollowOpacity:i}={}){let a=this.getStack();a&&a.promote(this,i),t&&(this.projectionDelta=void 0,this.needsReset=!0),r&&this.setOptions({transition:r})}relegate(){let t=this.getStack();return!!t&&t.relegate(this)}
2783resetSkewAndRotation(){let{visualElement:t}=this.options;if(!t)return;let r=!1,{latestValues:i}=t;if((i.z||i.rotate||i.rotateX||i.rotateY||i.rotateZ||i.skewX||i.skewY)&&(r=!0),!r)return;let a={};i.z&&t5("z",t,a,this.animationValues);for(let r=0;r<t8.length;r++)t5(`rotate${t8[r]}`,t,a,this.animationValues),t5(`skew${t8[r]}`,t,a,this.animationValues);for(let r in t.render(),a)t.setStaticValue(r,a[r]),this.animationValues&&(this.animationValues[r]=a[r]);t.scheduleRender()}getProjectionStyles(t){var r,i;if(!this.instance||this.isSVG)return;if(!this.isVisible)return t7;let a={visibility:""},n=this.getTransformTemplate();if(this.needsReset)return this.needsReset=!1,a.opacity="",a.pointerEvents=tO(null==t?void 0:t.pointerEvents)||"",a.transform=n?n(this.latestValues,""):"none",a;let s=this.getLead();if(!this.projectionDelta||!this.layout||!s.target){let r={};return this.options.layoutId&&(r.opacity=void 0!==this.latestValues.opacity?this.latestValues.opacity:1,r.pointerEvents=tO(null==t?void 0:t.pointerEvents)||""),this.hasProjected&&!e6(this.latestValues)&&(r.transform=n?n({},""):"none",this.hasProjected=!1),r}let o=s.animationValues||s.latestValues;this.applyTransformsToTarget(),a.transform=function(t,r,i){let a="",n=t.x.translate/r.x,s=t.y.translate/r.y,o=(null==i?void 0:i.z)||0;if((n||s||o)&&(a=`translate3d(${n}px, ${s}px, ${o}px) `),(1!==r.x||1!==r.y)&&(a+=`scale(${1/r.x}, ${1/r.y}) `),i){let{transformPerspective:t,rotate:r,rotateX:n,rotateY:s,skewX:o,skewY:l}=i;t&&(a=`perspective(${t}px) ${a}`),r&&(a+=`rotate(${r}deg) `),n&&(a+=`rotateX(${n}deg) `),s&&(a+=`rotateY(${s}deg) `),o&&(a+=`skewX(${o}deg) `),l&&(a+=`skewY(${l}deg) `)}let l=t.x.scale*r.x,u=t.y.scale*r.y;return(1!==l||1!==u)&&(a+=`scale(${l}, ${u})`),a||"none"}(this.projectionDeltaWithTransform,this.treeScale,o),n&&(a.transform=n(o,a.transform));let{x:l,y:u}=this.projectionDelta;for(let t in a.transformOrigin=`${100*l.origin}% ${100*u.origin}% 0`,s.animationValues?a.opacity=s===this?null!=(i=null!=(r=o.opacity)?r:this.latestValues.opacity)?i:1:this.preserveOpacity?this.latestValues.opacity:o.opacityExit:a.opacity=s===this?void 0!==o.opacity?o.opacity:"":void 0!==o.opacityExit?o.opacityExit:0,tw){if(void 0===o[t])continue;let{correct:r,applyTo:i}=tw[t],n="none"===a.transform?o[t]:r(o[t],s);if(i){let t=i.length;for(let r=0;r<t;r++)a[i[r]]=n}else a[t]=n}return this.options.layoutId&&(a.pointerEvents=s===this?tO(null==t?void 0:t.pointerEvents)||"":"none"),a}clearSnapshot(){this.resumeFrom=this.snapshot=void 0}resetTree(){this.root.nodes.forEach(t=>{var r;return null==(r=t.currentAnimation)?void 0:r.stop()}),this.root.nodes.forEach(rn),this.root.sharedNodes.clear()}}}function re(t){t.updateLayout()}function rt(t){var r;let i=(null==(r=t.resumeFrom)?void 0:r.snapshot)||t.snapshot;if(t.isLead()&&t.layout&&i&&t.hasListeners("didUpdate")){let{layoutBox:r,measuredBox:a}=t.layout,{animationType:n}=t.options,s=i.source!==t.layout.source;"size"===n?e3(t=>{let a=s?i.measuredBox[t]:i.layoutBox[t],n=eF(a);a.min=r[t].min,a.max=a.min+n}):r_(n,i.layoutBox,r)&&e3(a=>{let n=s?i.measuredBox[a]:i.layoutBox[a],o=eF(r[a]);n.max=n.min+o,t.relativeTarget&&!t.currentAnimation&&(t.isProjectionDirty=!0,t.relativeTarget[a].max=t.relativeTarget[a].min+o)});let o=e1();eV(o,r,i.layoutBox);let l=e1();s?eV(l,t.applyTransform(a,!0),i.measuredBox):eV(l,r,i.layoutBox);let u=!tQ(o),d=!1;if(!t.resumeFrom){let a=t.getClosestProjectingParent();if(a&&!a.resumeFrom){let{snapshot:n,layout:s}=a;if(n&&s){let o=e2();eG(o,i.layoutBox,n.layoutBox);let l=e2();eG(l,r,s.layoutBox),tJ(o,l)||(d=!0),a.options.layoutRoot&&(t.relativeTarget=l,t.relativeTargetOrigin=o,t.relativeParent=a)}}}t.notifyListeners("didUpdate",{layout:r,snapshot:i,delta:l,layoutDelta:o,hasLayoutChanged:u,hasRelativeTargetChanged:d})}else if(t.isLead()){let{onExitComplete:r}=t.options;r&&r()}t.options.transition=void 0}function rr(t){t4&&t3.totalNodes++,t.parent&&(t.isProjecting()||(t.isProjectionDirty=t.parent.isProjectionDirty),t.isSharedProjectionDirty||(t.isSharedProjectionDirty=!!(t.isProjectionDirty||t.parent.isProjectionDirty||t.parent.isSharedProjectionDirty)),t.isTransformDirty||(t.isTransformDirty=t.parent.isTransformDirty))}function ri(t){t.isProjectionDirty=t.isSharedProjectionDirty=t.isTransformDirty=!1}function ra(t){t.clearSnapshot()}function rn(t){t.clearMeasurements()}function rs(t){t.isLayoutDirty=!1}function ro(t){let{visualElement:r}=t.options;r&&r.getProps().onBeforeLayoutMeasure&&r.notify("BeforeLayoutMeasure"),t.resetTransform()}function rl(t){t.finishAnimation(),t.targetDelta=t.relativeTarget=t.target=void 0,t.isProjectionDirty=!0}function ru(t){t.resolveTargetDelta()}function rd(t){t.calcProjection()}
2783function rc(t){t.resetSkewAndRotation()}function rh(t){t.removeLeadSnapshot()}function rf(t,r,i){t.translate=(0,eU.k)(r.translate,0,i),t.scale=(0,eU.k)(r.scale,1,i),t.origin=r.origin,t.originPoint=r.originPoint}function rp(t,r,i,a){t.min=(0,eU.k)(r.min,i.min,a),t.max=(0,eU.k)(r.max,i.max,a)}function rm(t){return t.animationValues&&void 0!==t.animationValues.opacityExit}let rg={duration:.45,ease:[.4,0,.1,1]},rb=t=>"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().includes(t),ry=rb("applewebkit/")&&!rb("chrome/")?Math.round:T.l;function rv(t){t.min=ry(t.min),t.max=ry(t.max)}function r_(t,r,i){return"position"===t||"preserve-aspect"===t&&!(.2>=Math.abs(t1(r)-t1(i)))}function rw(t){var r;return t!==t.root&&(null==(r=t.scroll)?void 0:r.wasRoot)}let rx=t9({attachResizeListener:(t,r)=>eI(t,"resize",r),measureScroll:()=>({x:document.documentElement.scrollLeft||document.body.scrollLeft,y:document.documentElement.scrollTop||document.body.scrollTop}),checkIsScrollRoot:()=>!0}),r$={current:void 0},rS=t9({measureScroll:t=>({x:t.scrollLeft,y:t.scrollTop}),defaultParent:()=>{if(!r$.current){let t=new rx({});t.mount(window),t.setOptions({layoutScroll:!0}),r$.current=t}return r$.current},resetTransform:(t,r)=>{t.style.transform=void 0!==r?r:"none"},checkIsScrollRoot:t=>"fixed"===window.getComputedStyle(t).position});function rk(t,r,i){let{props:a}=t;t.animationState&&a.whileHover&&t.animationState.setActive("whileHover","Start"===i);let n=a["onHover"+i];n&&k.Gt.postRender(()=>n(r,eA(r)))}class rC extends ek{mount(){let{current:t}=this.node;t&&(this.unmount=(0,m.PT)(t,t=>(rk(this.node,t,"Start"),t=>rk(this.node,t,"End"))))}unmount(){}}class rE extends ek{constructor(){super(...arguments),this.isActive=!1}onFocus(){let t=!1;try{t=this.node.current.matches(":focus-visible")}catch(r){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=(0,eM.F)(eI(this.node.current,"focus",()=>this.onFocus()),eI(this.node.current,"blur",()=>this.onBlur()))}unmount(){}}function rT(t,r,i){let{props:a}=t;t.animationState&&a.whileTap&&t.animationState.setActive("whileTap","Start"===i);let n=a["onTap"+("End"===i?"":i)];n&&k.Gt.postRender(()=>n(r,eA(r)))}class rI extends ek{mount(){let{current:t}=this.node;t&&(this.unmount=(0,m.c$)(t,t=>(rT(this.node,t,"Start"),(t,{success:r})=>rT(this.node,t,r?"End":"Cancel")),{useGlobalTarget:this.node.props.globalTapTarget}))}unmount(){}}let rA=new WeakMap,rN=new WeakMap,rO=t=>{let r=rA.get(t.target);r&&r(t)},rM=t=>{t.forEach(rO)},rP={some:0,all:1};class rR extends ek{constructor(){super(...arguments),this.hasEnteredView=!1,this.isInView=!1}startObserver(){this.unmount();let{viewport:t={}}=this.node.getProps(),{root:r,margin:i,amount:a="some",once:n}=t,s={root:r?r.current:void 0,rootMargin:i,threshold:"number"==typeof a?a:rP[a]},o=t=>{let{isIntersecting:r}=t;if(this.isInView===r||(this.isInView=r,n&&!r&&this.hasEnteredView))return;r&&(this.hasEnteredView=!0),this.node.animationState&&this.node.animationState.setActive("whileInView",r);let{onViewportEnter:i,onViewportLeave:a}=this.node.getProps(),s=r?i:a;s&&s(t)};var l=this.node.current;let u=function({root:t,...r}){let i=t||document;rN.has(i)||rN.set(i,{});let a=rN.get(i),n=JSON.stringify(r);return a[n]||(a[n]=new IntersectionObserver(rM,{root:t,...r})),a[n]}(s);return rA.set(l,o),u.observe(l),()=>{rA.delete(l),u.unobserve(l)}}mount(){this.startObserver()}update(){if("undefined"==typeof IntersectionObserver)return;let{props:t,prevProps:r}=this.node;["amount","margin","root"].some(function({viewport:t={}},{viewport:r={}}={}){return i=>t[i]!==r[i]}(t,r))&&this.startObserver()}unmount(){}}let rj=(0,tp.createContext)({strict:!1});var rz=i(39751);let rD=(0,tp.createContext)({});function rB(t){return a(t.animate)||h.some(r=>o(t[r]))}function rL(t){return!!(rB(t)||t.variants)}function rU(t){return Array.isArray(t)?t.join(" "):t}var rF=i(2205);let rq={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"]},rV={};for(let t in rq)rV[t]={isEnabled:r=>rq[t].some(t=>!!r[t])};let rW=Symbol.for("motionComponentSymbol");var rH=i(3866),rG=i(50181);let rK=["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 rY(t){if("string"!=typeof t||t.includes("-"));else if(rK.indexOf(t)>-1||/[A-Z]/u.test(t))return!0;return!1}var rQ=i(91200);let rX=t=>(r,i)=>{let n=(0,tp.useContext)(rD),s=(0,tp.useContext)(rH.t),o=()=>(function({scrapeMotionValuesFromProps:t,createRenderState:r,onUpdate:i},n,s,o){let l={latestValues:function(t,r,i,n){let s={},o=n(t,{});for(let t in o)s[t]=tO(o[t]);let{initial:l,animate:d}=t,c=rB(t),h=rL(t);r&&h&&!c&&!1!==t.inherit&&(void 0===l&&(l=r.initial),void 0===d&&(d=r.animate));let f=!!i&&!1===i.initial,p=(f=f||!1===l)?d:l;if(p&&"boolean"!=typeof p&&!a(p)){let r=Array.isArray(p)?p:[p];for(let i=0;i<r.length;i++){let a=u(t,r[i]);if(a){let{transitionEnd:t,transition:r,...i}=a;for(let t in i){let r=i[t];if(Array.isArray(r)){let t=f?r.length-1:0;r=r[t]}null!==r&&(s[t]=r)}for(let r in t)s[r]=t[r]}}}return s}(n,s,o,t),renderState:r()};return i&&(l.onMount=t=>i({props:n,current:t,...l}),l.onUpdate=t=>i(t)),l})(t,r,n,s);return i?o():(0,rQ.M)(o)},rZ=(t,r)=>r&&"number"==typeof t?r.transform(t):t,rJ={x:"translateX",y:"translateY",z:"translateZ",transformPerspective:"perspective"},r1=g.U.length;function r0(t,r,i){let{style:a,vars:n,transformOrigin:s}=t,o=!1,l=!1;for(let t in r){let i=r[t];if(g.f.has(t)){o=!0;continue}if((0,J.j)(t)){n[t]=i;continue}{let r=rZ(i,W[t]);t.startsWith("origin")?(l=!0,s[t]=r):a[t]=r}}if(!r.transform&&(o||i?a.transform=function(t,r,i){let a="",n=!0;for(let s=0;s<r1;s++){let o=g.U[s],l=t[o];if(void 0===l)continue;let u=!0;if(!(u="number"==typeof l?l===+!!o.startsWith("scale"):0===parseFloat(l))||i){let t=rZ(l,W[o]);if(!u){n=!1;let r=rJ[o]||o;a+=`${r}(${t}) `}i&&(r[o]=t)}}return a=a.trim(),i?a=i(r,n?"":a):n&&(a="none"),a}(r,t.transform,i):a.transform&&(a.transform="none")),l){let{originX:t="50%",originY:r="50%",originZ:i=0}=s;a.transformOrigin=`${t} ${r} ${i}`}}let r2={offset:"stroke-dashoffset",array:"stroke-dasharray"},r3={offset:"strokeDashoffset",array:"strokeDasharray"};function r4(t,r,i){return"string"==typeof t?t:U.px.transform(r+i*t)}function r8(t,{attrX:r,attrY:i,attrScale:a,originX:n,originY:s,pathLength:o,pathSpacing:l=1,pathOffset:u=0,...d}
2783,c,h){if(r0(t,d,h),c){t.style.viewBox&&(t.attrs.viewBox=t.style.viewBox);return}t.attrs=t.style,t.style={};let{attrs:f,style:p,dimensions:m}=t;f.transform&&(m&&(p.transform=f.transform),delete f.transform),m&&(void 0!==n||void 0!==s||p.transform)&&(p.transformOrigin=function(t,r,i){let a=r4(r,t.x,t.width),n=r4(i,t.y,t.height);return`${a} ${n}`}(m,void 0!==n?n:.5,void 0!==s?s:.5)),void 0!==r&&(f.x=r),void 0!==i&&(f.y=i),void 0!==a&&(f.scale=a),void 0!==o&&function(t,r,i=1,a=0,n=!0){t.pathLength=1;let s=n?r2:r3;t[s.offset]=U.px.transform(-a);let o=U.px.transform(r),l=U.px.transform(i);t[s.array]=`${o} ${l}`}(f,o,l,u,!1)}let r7=()=>({style:{},transform:{},transformOrigin:{},vars:{}}),r6=()=>({...r7(),attrs:{}}),r5=t=>"string"==typeof t&&"svg"===t.toLowerCase();function r9(t,{style:r,vars:i},a,n){for(let s in Object.assign(t.style,r,n&&n.getProjectionStyles(a)),i)t.style.setProperty(s,i[s])}let ie=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"]);function it(t,r,i,a){for(let i in r9(t,r,void 0,a),r.attrs)t.setAttribute(ie.has(i)?i:x(i),r.attrs[i])}function ir(t,{layout:r,layoutId:i}){return g.f.has(t)||t.startsWith("origin")||(r||void 0!==i)&&(!!tw[t]||"opacity"===t)}function ii(t,r,i){var a;let{style:n}=t,s={};for(let o in n)((0,_.S)(n[o])||r.style&&(0,_.S)(r.style[o])||ir(o,t)||(null==(a=null==i?void 0:i.getValue(o))?void 0:a.liveStyle)!==void 0)&&(s[o]=n[o]);return s}function ia(t,r,i){let a=ii(t,r,i);for(let i in t)((0,_.S)(t[i])||(0,_.S)(r[i]))&&(a[-1!==g.U.indexOf(i)?"attr"+i.charAt(0).toUpperCase()+i.substring(1):i]=t[i]);return a}let is=["x","y","width","height","cx","cy","r"],io={useVisualState:rX({scrapeMotionValuesFromProps:ia,createRenderState:r6,onUpdate:({props:t,prevProps:r,current:i,renderState:a,latestValues:n})=>{if(!i)return;let s=!!t.drag;if(!s){for(let t in n)if(g.f.has(t)){s=!0;break}}if(!s)return;let o=!r;if(r)for(let i=0;i<is.length;i++){let a=is[i];t[a]!==r[a]&&(o=!0)}o&&k.Gt.read(()=>{!function(t,r){try{r.dimensions="function"==typeof t.getBBox?t.getBBox():t.getBoundingClientRect()}catch(t){r.dimensions={x:0,y:0,width:0,height:0}}}(i,a),k.Gt.render(()=>{r8(a,n,r5(i.tagName),t.transformTemplate),it(i,a)})})}})},il={useVisualState:rX({scrapeMotionValuesFromProps:ii,createRenderState:r7})};function iu(t,r,i){for(let a in r)(0,_.S)(r[a])||ir(a,i)||(t[a]=r[a])}let id=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","ignoreStrict","viewport"]);function ic(t){return t.startsWith("while")||t.startsWith("drag")&&"draggable"!==t||t.startsWith("layout")||t.startsWith("onTap")||t.startsWith("onPan")||t.startsWith("onLayout")||id.has(t)}let ih=t=>!ic(t);try{!function(t){t&&(ih=r=>r.startsWith("on")?!ic(r):t(r))}(require("@emotion/is-prop-valid").default)}catch(t){}let ip={current:null},im={current:!1},ig=[...ei,B.y,M.f],ib=new WeakMap,iy=["AnimationStart","AnimationComplete","Update","BeforeLayoutMeasure","LayoutMeasure","LayoutAnimationStart","LayoutAnimationComplete"];class iv{scrapeMotionValuesFromProps(t,r,i){return{}}constructor({parent:t,props:r,presenceContext:i,reducedMotionConfig:a,blockInitialAnimation:n,visualState:s},o={}){this.current=null,this.children=new Set,this.isVariantNode=!1,this.isControllingVariants=!1,this.shouldReduceMotion=null,this.values=new Map,this.KeyframeResolver=Q.h,this.features={},this.valueSubscriptions=new Map,this.prevMotionValues={},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=()=>{let t=tE.k.now();this.renderScheduledAt<t&&(this.renderScheduledAt=t,k.Gt.render(this.render,!1,!0))};let{latestValues:l,renderState:u,onUpdate:d}=s;this.onUpdate=d,this.latestValues=l,this.baseTarget={...l},this.initialValues=r.initial?{...l}:{},this.renderState=u,this.parent=t,this.props=r,this.presenceContext=i,this.depth=t?t.depth+1:0,this.reducedMotionConfig=a,this.options=o,this.blockInitialAnimation=!!n,this.isControllingVariants=rB(r),this.isVariantNode=rL(r),this.isVariantNode&&(this.variantChildren=new Set),this.manuallyAnimateOnMount=!!(t&&t.current);let{willChange:c,...h}=this.scrapeMotionValuesFromProps(r,{},this);for(let t in h){let r=h[t];void 0!==l[t]&&(0,_.S)(r)&&r.set(l[t],!1)}}mount(t){this.current=t,ib.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.forEac
2783h((t,r)=>this.bindToMotionValue(r,t)),im.current||function(){if(im.current=!0,rF.B)if(window.matchMedia){let t=window.matchMedia("(prefers-reduced-motion)"),r=()=>ip.current=t.matches;t.addListener(r),r()}else ip.current=!1}(),this.shouldReduceMotion="never"!==this.reducedMotionConfig&&("always"===this.reducedMotionConfig||ip.current),this.parent&&this.parent.children.add(this),this.update(this.props,this.presenceContext)}unmount(){for(let t in ib.delete(this.current),this.projection&&this.projection.unmount(),(0,k.WG)(this.notifyUpdate),(0,k.WG)(this.render),this.valueSubscriptions.forEach(t=>t()),this.valueSubscriptions.clear(),this.removeFromVariantTree&&this.removeFromVariantTree(),this.parent&&this.parent.children.delete(this),this.events)this.events[t].clear();for(let t in this.features){let r=this.features[t];r&&(r.unmount(),r.isMounted=!1)}this.current=null}bindToMotionValue(t,r){let i;this.valueSubscriptions.has(t)&&this.valueSubscriptions.get(t)();let a=g.f.has(t),n=r.on("change",r=>{this.latestValues[t]=r,this.props.onUpdate&&k.Gt.preRender(this.notifyUpdate),a&&this.projection&&(this.projection.isTransformDirty=!0)}),s=r.on("renderRequest",this.scheduleRender);window.MotionCheckAppearSync&&(i=window.MotionCheckAppearSync(this,t,r)),this.valueSubscriptions.set(t,()=>{n(),s(),i&&i(),r.owner&&r.stop()})}sortNodePosition(t){return this.current&&this.sortInstanceNodePosition&&this.type===t.type?this.sortInstanceNodePosition(this.current,t.current):0}updateFeatures(){let t="animation";for(t in rV){let r=rV[t];if(!r)continue;let{isEnabled:i,Feature:a}=r;if(!this.features[t]&&a&&i(this.props)&&(this.features[t]=new a(this)),this.features[t]){let r=this.features[t];r.isMounted?r.update():(r.mount(),r.isMounted=!0)}}}triggerBuild(){this.build(this.renderState,this.latestValues,this.props)}measureViewportBox(){return this.current?this.measureInstanceViewportBox(this.current,this.props):e2()}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 r=0;r<iy.length;r++){let i=iy[r];this.propEventSubscriptions[i]&&(this.propEventSubscriptions[i](),delete this.propEventSubscriptions[i]);let a=t["on"+i];a&&(this.propEventSubscriptions[i]=this.on(i,a))}this.prevMotionValues=function(t,r,i){for(let a in r){let n=r[a],s=i[a];if((0,_.S)(n))t.addValue(a,n);else if((0,_.S)(s))t.addValue(a,(0,v.OQ)(n,{owner:t}));else if(s!==n)if(t.hasValue(a)){let r=t.getValue(a);!0===r.liveStyle?r.jump(n):r.hasAnimated||r.set(n)}else{let r=t.getStaticValue(a);t.addValue(a,(0,v.OQ)(void 0!==r?r:n,{owner:t}))}}for(let a in i)void 0===r[a]&&t.removeValue(a);return r}(this,this.scrapeMotionValuesFromProps(t,this.prevProps,this),this.prevMotionValues),this.handleChildMotionValue&&this.handleChildMotionValue(),this.onUpdate&&this.onUpdate(this)}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){let r=this.getClosestVariantNode();if(r)return r.variantChildren&&r.variantChildren.add(t),()=>r.variantChildren.delete(t)}addValue(t,r){let i=this.values.get(t);r!==i&&(i&&this.removeValue(t),this.bindToMotionValue(t,r),this.values.set(t,r),this.latestValues[t]=r.get())}removeValue(t){this.values.delete(t);let 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 i=this.values.get(t);return void 0===i&&void 0!==r&&(i=(0,v.OQ)(null===r?void 0:r,{owner:this}),this.addValue(t,i)),i}readValue(t,r){var i;let a=void 0===this.latestValues[t]&&this.current?null!=(i=this.getBaseTargetFromProps(this.props,t))?i:this.readValueFromInstance(this.current,t,this.options):this.latestValues[t];
2783if(null!=a){if("string"==typeof a&&(Z(a)||O(a)))a=parseFloat(a);else{let i;i=a,!ig.find(er(i))&&M.f.test(r)&&(a=K(t,r))}this.setBaseTarget(t,(0,_.S)(a)?a.get():a)}return(0,_.S)(a)?a.get():a}setBaseTarget(t,r){this.baseTarget[t]=r}getBaseTarget(t){var r;let i,{initial:a}=this.props;if("string"==typeof a||"object"==typeof a){let n=u(this.props,a,null==(r=this.presenceContext)?void 0:r.custom);n&&(i=n[t])}if(a&&void 0!==i)return i;let n=this.getBaseTargetFromProps(this.props,t);return void 0===n||(0,_.S)(n)?void 0!==this.initialValues[t]&&void 0===i?void 0:this.baseTarget[t]:n}on(t,r){return this.events[t]||(this.events[t]=new tN.v),this.events[t].add(r)}notify(t,...r){this.events[t]&&this.events[t].notify(...r)}}class i_ extends iv{constructor(){super(...arguments),this.KeyframeResolver=en}sortInstanceNodePosition(t,r){return 2&t.compareDocumentPosition(r)?1:-1}getBaseTargetFromProps(t,r){return t.style?t.style[r]:void 0}removeValueFromRenderState(t,{vars:r,style:i}){delete r[t],delete i[t]}handleChildMotionValue(){this.childSubscription&&(this.childSubscription(),delete this.childSubscription);let{children:t}=this.props;(0,_.S)(t)&&(this.childSubscription=t.on("change",t=>{this.current&&(this.current.textContent=`${t}`)}))}}class iw extends i_{constructor(){super(...arguments),this.type="html",this.renderInstance=r9}readValueFromInstance(t,r){if(g.f.has(r)){let t=G(r);return t&&t.default||0}{let i=window.getComputedStyle(t),a=((0,J.j)(r)?i.getPropertyValue(r):i[r])||0;return"string"==typeof a?a.trim():a}}measureInstanceViewportBox(t,{transformPagePoint:r}){return tn(t,r)}build(t,r,i){r0(t,r,i.transformTemplate)}scrapeMotionValuesFromProps(t,r,i){return ii(t,r,i)}}class ix extends i_{constructor(){super(...arguments),this.type="svg",this.isSVGTag=!1,this.measureInstanceViewportBox=e2}getBaseTargetFromProps(t,r){return t[r]}readValueFromInstance(t,r){if(g.f.has(r)){let t=G(r);return t&&t.default||0}return r=ie.has(r)?r:x(r),t.getAttribute(r)}scrapeMotionValuesFromProps(t,r,i){return ia(t,r,i)}build(t,r,i){r8(t,r,this.isSVGTag,i.transformTemplate)}renderInstance(t,r,i,a){it(t,r,i,a)}mount(t){this.isSVGTag=r5(t.tagName),super.mount(t)}}let i$=function(t){if("undefined"==typeof Proxy)return t;let r=new Map;return new Proxy((...r)=>t(...r),{get:(i,a)=>"create"===a?t:(r.has(a)||r.set(a,t(a)),r.get(a))})}((f={animation:{Feature:eC},exit:{Feature:eT},inView:{Feature:rR},tap:{Feature:rI},focus:{Feature:rE},hover:{Feature:rC},pan:{Feature:th},drag:{Feature:td,ProjectionNode:rS,MeasureLayout:tk},layout:{ProjectionNode:rS,MeasureLayout:tk}},p=(t,r)=>rY(t)?new ix(r):new iw(r,{allowProjection:t!==tp.Fragment}),function(t,{forwardMotionProps:r}={forwardMotionProps:!1}){return function({preloadedFeatures:t,createVisualElement:r,useRender:i,useVisualState:a,Component:n}){var s,l;function u(t,s){var l;let u,d={...(0,tp.useContext)(rz.Q),...t,layoutId:function({layoutId:t}){let r=(0,tp.useContext)(tg.L).id;return r&&void 0!==t?r+"-"+t:t}(t)},{isStatic:c}=d,h=function(t){let{initial:r,animate:i}=function(t,r){if(rB(t)){let{initial:r,animate:i}=t;return{initial:!1===r||o(r)?r:void 0,animate:o(i)?i:void 0}}return!1!==t.inherit?r:{}}(t,(0,tp.useContext)(rD));return(0,tp.useMemo)(()=>({initial:r,animate:i}),[rU(r),rU(i)])}(t),f=a(t,c);if(!c&&rF.B){(0,tp.useContext)(rj).strict;let t=function(t){let{drag:r,layout:i}=rV;if(!r&&!i)return{};let a={...r,...i};return{MeasureLayout:(null==r?void 0:r.isEnabled(t))||(null==i?void 0:i.isEnabled(t))?a.MeasureLayout:void 0,ProjectionNode:a.ProjectionNode}}(d);u=t.MeasureLayout,h.visualElement=function(t,r,i,a,n){var s,o;let{visualElement:l}=(0,tp.useContext)(rD),u=(0,tp.useContext)(rj),d=(0,tp.useContext)(rH.t),c=(0,tp.useContext)(rz.Q).reducedMotion,h=(0,tp.useRef)(null);a=a||u.renderer,!h.current&&a&&(h.current=a(t,{visualState:r,parent:l,props:i,presenceContext:d,blockInitialAnimation:!!d&&!1===d.initial,reducedMotionConfig:c}));let f=h.current,p=(0,tp.useContext)(tb);f&&!f.projection&&n&&("html"===f.type||"svg"===f.type)&&function(t,r,i,a){let{layoutId:n,layout:s,drag:o,dragConstraints:l,layoutScroll:u,layoutRoot:d}=r;t.projection=new i(t.latestValues,r["data-framer-portal-id"]?void 0:function t(r){if(r)return!1!==r.options.allowProjection?r.projection:t(r.parent)}(t.parent)),t.projection.setOptions({layoutId:n,layout:s,alwaysMeasureLayout:!!o||l&&eB(l),visualElement:t,animationType:"string"==typeof s?s:"both",initialPromotionConfig:a,layoutScroll:u,layoutRoot:d})}(h.current,i,n,p);let m=(0,tp.useRef)(!1);(0,tp.useInsertionEffect)(()=>{f&&m.current&&f.update(i,d)});let g=i[$],b=(0,tp.useRef)(!!g&&!(null==(s=window.MotionHandoffIsComplete)?void 0:s.call(window,g))&&(null==(o=window.MotionHasOptimisedAnimation)?void 0:o.call(window,g)));return(0,rG.E)(()=>{f&&(m.current=!0,window.MotionIsMounted=!0,f.updateFeatures(),tx.render(f.render),b.current&&f.animationState&&f.animationState.animateChanges())}),(0,tp.useEffect)(()=>{f&&(!b.current&&f.animationState&&f.animationState.animateChanges(),b.current&&(queueMicrotask(()=>{var t;null==(t=window.MotionHandoffMarkAsComplete)||t.call(window,g)}
2783),b.current=!1))}),f}(n,f,d,r,t.ProjectionNode)}return(0,tf.jsxs)(rD.Provider,{value:h,children:[u&&h.visualElement?(0,tf.jsx)(u,{visualElement:h.visualElement,...d}):null,i(n,t,(l=h.visualElement,(0,tp.useCallback)(t=>{t&&f.onMount&&f.onMount(t),l&&(t?l.mount(t):l.unmount()),s&&("function"==typeof s?s(t):eB(s)&&(s.current=t))},[l])),f,c,h.visualElement)]})}t&&function(t){for(let r in t)rV[r]={...rV[r],...t[r]}}(t),u.displayName=`motion.${"string"==typeof n?n:`create(${null!=(l=null!=(s=n.displayName)?s:n.name)?l:""})`}`;let d=(0,tp.forwardRef)(u);return d[rW]=n,d}({...rY(t)?io:il,preloadedFeatures:f,useRender:function(t=!1){return(r,i,a,{latestValues:n},s)=>{let o=(rY(r)?function(t,r,i,a){let n=(0,tp.useMemo)(()=>{let i=r6();return r8(i,r,r5(a),t.transformTemplate),{...i.attrs,style:{...i.style}}},[r]);if(t.style){let r={};iu(r,t.style,t),n.style={...r,...n.style}}return n}:function(t,r){let i={},a=function(t,r){let i=t.style||{},a={};return iu(a,i,t),Object.assign(a,function({transformTemplate:t},r){return(0,tp.useMemo)(()=>{let i=r7();return r0(i,r,t),Object.assign({},i.vars,i.style)},[r])}(t,r)),a}(t,r);return t.drag&&!1!==t.dragListener&&(i.draggable=!1,a.userSelect=a.WebkitUserSelect=a.WebkitTouchCallout="none",a.touchAction=!0===t.drag?"none":`pan-${"x"===t.drag?"y":"x"}`),void 0===t.tabIndex&&(t.onTap||t.onTapStart||t.whileTap)&&(i.tabIndex=0),i.style=a,i})(i,n,s,r),l=function(t,r,i){let a={};for(let n in t)("values"!==n||"object"!=typeof t.values)&&(ih(n)||!0===i&&ic(n)||!r&&!ic(n)||t.draggable&&n.startsWith("onDrag"))&&(a[n]=t[n]);return a}(i,"string"==typeof r,t),u=r!==tp.Fragment?{...l,...o,ref:a}:{},{children:d}=i,c=(0,tp.useMemo)(()=>(0,_.S)(d)?d.get():d,[d]);return(0,tp.createElement)(r,{...u,children:c})}}(r),createVisualElement:p,Component:t})}))},54587:(t,r,i)=>{t.exports=i(24468)},55472:(t,r,i)=>{"use strict";i.d(r,{o:()=>U,L:()=>F});var a=i(93563),n=i(91750),s=i(67798),o=i(94349),l=i(30287),u=i(2926),d=i(1856);function c(t,r,i){let a=Math.max(r-5,0);
2783return(0,d.f)(i-t(a),r-a)}let h={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};var f=i(37605);function p(t,r){return t*Math.sqrt(1-r*r)}let m=["duration","bounce"],g=["stiffness","damping","mass"];function b(t,r){return r.some(r=>void 0!==t[r])}function y(t=h.visualDuration,r=h.bounce){let i,s="object"!=typeof t?{visualDuration:t,keyframes:[0,1],bounce:r}:t,{restSpeed:l,restDelta:u}=s,d=s.keyframes[0],v=s.keyframes[s.keyframes.length-1],_={done:!1,value:d},{stiffness:w,damping:x,mass:$,duration:S,velocity:k,isResolvedFromDuration:C}=function(t){let r={velocity:h.velocity,stiffness:h.stiffness,damping:h.damping,mass:h.mass,isResolvedFromDuration:!1,...t};if(!b(t,g)&&b(t,m))if(t.visualDuration){let i=2*Math.PI/(1.2*t.visualDuration),a=i*i,n=2*(0,o.q)(.05,1,1-(t.bounce||0))*Math.sqrt(a);r={...r,mass:h.mass,stiffness:a,damping:n}}else{let i=function({duration:t=h.duration,bounce:r=h.bounce,velocity:i=h.velocity,mass:a=h.mass}){let s,l;(0,f.$)(t<=(0,n.f)(h.maxDuration),"Spring duration must be 10 seconds or less");let u=1-r;u=(0,o.q)(h.minDamping,h.maxDamping,u),t=(0,o.q)(h.minDuration,h.maxDuration,(0,n.X)(t)),u<1?(s=r=>{let a=r*u,n=a*t;return .001-(a-i)/p(r,u)*Math.exp(-n)},l=r=>{let a=r*u*t,n=Math.pow(u,2)*Math.pow(r,2)*t,o=Math.exp(-a),l=p(Math.pow(r,2),u);return(a*i+i-n)*o*(-s(r)+.001>0?-1:1)/l}):(s=r=>-.001+Math.exp(-r*t)*((r-i)*t+1),l=r=>t*t*(i-r)*Math.exp(-r*t));let d=function(t,r,i){let a=i;for(let i=1;i<12;i++)a-=t(a)/r(a);return a}(s,l,5/t);if(t=(0,n.f)(t),isNaN(d))return{stiffness:h.stiffness,damping:h.damping,duration:t};{let r=Math.pow(d,2)*a;return{stiffness:r,damping:2*u*Math.sqrt(a*r),duration:t}}}(t);(r={...r,...i,mass:h.mass}).isResolvedFromDuration=!0}return r}({...s,velocity:-(0,n.X)(s.velocity||0)}),E=k||0,T=x/(2*Math.sqrt(w*$)),I=v-d,A=(0,n.X)(Math.sqrt(w/$)),N=5>Math.abs(I);if(l||(l=N?h.restSpeed.granular:h.restSpeed.default),u||(u=N?h.restDelta.granular:h.restDelta.default),T<1){let t=p(A,T);i=r=>v-Math.exp(-T*A*r)*((E+T*A*I)/t*Math.sin(t*r)+I*Math.cos(t*r))}else if(1===T)i=t=>v-Math.exp(-A*t)*(I+(E+A*I)*t);else{let t=A*Math.sqrt(T*T-1);i=r=>{let i=Math.exp(-T*A*r),a=Math.min(t*r,300);return v-i*((E+T*A*I)*Math.sinh(a)+t*I*Math.cosh(a))/t}}let O={calculatedDuration:C&&S||null,next:t=>{let r=i(t);if(C)_.done=t>=S;else{let a=0;T<1&&(a=0===t?(0,n.f)(E):c(i,t,r));let s=Math.abs(v-r)<=u;_.done=Math.abs(a)<=l&&s}return _.value=_.done?v:r,_},toString:()=>{let t=Math.min((0,a.tu)(O),a.YE),r=(0,a.KZ)(r=>O.next(t*r).value,t,30);return t+"ms "+r}};return O}function v({keyframes:t,velocity:r=0,power:i=.8,timeConstant:a=325,bounceDamping:n=10,bounceStiffness:s=500,modifyTarget:o,min:l,max:u,restDelta:d=.5,restSpeed:h}){let f,p,m=t[0],g={done:!1,value:m},b=i*r,v=m+b,_=void 0===o?v:o(v);_!==v&&(b=_-m);let w=t=>-b*Math.exp(-t/a),x=t=>_+w(t),$=t=>{let r=w(t),i=x(t);g.done=Math.abs(r)<=d,g.value=g.done?_:i},S=t=>{let r;if(r=g.value,void 0!==l&&r<l||void 0!==u&&r>u){var i;f=t,p=y({keyframes:[g.value,(i=g.value,void 0===l?u:void 0===u||Math.abs(l-i)<Math.abs(u-i)?l:u)],velocity:c(x,t,g.value),damping:n,stiffness:s,restDelta:d,restSpeed:h})}};return S(0),{calculatedDuration:null,next:t=>{let r=!1;return(p||void 0!==f||(r=!0,$(t),S(t)),void 0!==f&&t>=f)?p.next(t-f):(r||$(t),g)}}}var _=i(55886);let w=(0,_.A)(.42,0,1,1),x=(0,_.A)(0,0,.58,1),$=(0,_.A)(.42,0,.58,1);var S=i(90620),k=i(28404),C=i(24237),E=i(77801);let T={linear:S.l,easeIn:w,easeInOut:$,easeOut:x,circIn:E.po,circInOut:E.tn,circOut:E.yT,backIn:C.dg,backInOut:C.ZZ,backOut:C.Sz,anticipate:k.b},I=t=>{if((0,a.DW)(t)){(0,f.V)(4===t.length,"Cubic bezier arrays must contain four numerical values.");let[r,i,a,n]=t;return(0,_.A)(r,i,a,n)}return"string"==typeof t?((0,f.V)(void 0!==T[t],`Invalid easing type '${t}'`),T[t]):t};var A=i(99489),N=i(2589),O=i(90360);function M({duration:t=300,keyframes:r,times:i,ease:a="easeInOut"}){var n;let s=Array.isArray(a)&&"number"!=typeof a[0]?a.map(I):I(a),o={done:!1,value:r[0]}
2783,l=(n=i&&i.length===r.length?i:function(t){let r=[0];return!function(t,r){let i=t[t.length-1];for(let a=1;a<=r;a++){let n=(0,N.q)(0,r,a);t.push((0,O.k)(i,1,n))}}(r,t.length-1),r}(r),n.map(r=>r*t)),u=(0,A.G)(l,r,{ease:Array.isArray(s)?s:r.map(()=>s||$).splice(0,r.length-1)});return{calculatedDuration:t,next:r=>(o.value=u(r),o.done=r>=t,o)}}var P=i(72924),R=i(21623),j=i(81461);let z=t=>{let r=({timestamp:r})=>t(r);return{start:()=>j.Gt.update(r,!0),stop:()=>(0,j.WG)(r),now:()=>j.uv.isProcessing?j.uv.timestamp:R.k.now()}};var D=i(50005);let B={decay:v,inertia:v,tween:M,keyframes:M,spring:y},L=t=>t/100;class U extends P.i{constructor(t){super(t),this.holdTime=null,this.cancelTime=null,this.currentTime=0,this.playbackSpeed=1,this.pendingPlayState="running",this.startTime=null,this.state="idle",this.stop=()=>{if(this.resolver.cancel(),this.isStopped=!0,"idle"===this.state)return;this.teardown();let{onStop:t}=this.options;t&&t()};let{name:r,motionValue:i,element:a,keyframes:n}=this.options,o=(null==a?void 0:a.KeyframeResolver)||s.h,l=(t,r)=>this.onKeyframesResolved(t,r);this.resolver=new o(n,l,r,i,a),this.resolver.scheduleResolve()}flatten(){super.flatten(),this._resolved&&Object.assign(this._resolved,this.initPlayback(this._resolved.keyframes))}initPlayback(t){let r,i,{type:n="keyframes",repeat:s=0,repeatDelay:o=0,repeatType:d,velocity:c=0}=this.options,h=(0,a.WH)(n)?n:B[n]||M;h!==M&&"number"!=typeof t[0]&&(r=(0,u.F)(L,(0,l.j)(t[0],t[1])),t=[0,100]);let f=h({...this.options,keyframes:t});"mirror"===d&&(i=h({...this.options,keyframes:[...t].reverse(),velocity:-c})),null===f.calculatedDuration&&(f.calculatedDuration=(0,a.tu)(f));let{calculatedDuration:p}=f,m=p+o;return{generator:f,mirroredGenerator:i,mapPercentToKeyframes:r,calculatedDuration:p,resolvedDuration:m,totalDuration:m*(s+1)-o}}onPostResolved(){let{autoplay:t=!0}=this.options;this.play(),"paused"!==this.pendingPlayState&&t?this.state=this.pendingPlayState:this.pause()}tick(t,r=!1){let{resolved:i}=this;if(!i){let{keyframes:t}=this.options;return{done:!0,value:t[t.length-1]}}let{finalKeyframe:a,generator:n,mirroredGenerator:s,mapPercentToKeyframes:l,keyframes:u,calculatedDuration:d,totalDuration:c,resolvedDuration:h}=i;if(null===this.startTime)return n.next(0);let{delay:f,repeat:p,repeatType:m,repeatDelay:g,onUpdate:b}=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:null!==this.holdTime?this.currentTime=this.holdTime:this.currentTime=Math.round(t-this.startTime)*this.speed;let y=this.currentTime-f*(this.speed>=0?1:-1),v=this.speed>=0?y<0:y>c;this.currentTime=Math.max(y,0),"finished"===this.state&&null===this.holdTime&&(this.currentTime=c);let _=this.currentTime,w=n;if(p){let t=Math.min(this.currentTime,c)/h,r=Math.floor(t),i=t%1;!i&&t>=1&&(i=1),1===i&&r--,(r=Math.min(r,p+1))%2&&("reverse"===m?(i=1-i,g&&(i-=g/h)):"mirror"===m&&(w=s)),_=(0,o.q)(0,1,i)*h}let x=v?{done:!1,value:u[0]}:w.next(_);l&&(x.value=l(x.value));let{done:$}=x;v||null===d||($=this.speed>=0?this.currentTime>=c:this.currentTime<=0);let S=null===this.holdTime&&("finished"===this.state||"running"===this.state&&$);return S&&void 0!==a&&(x.value=(0,D.X)(u,this.options,a)),b&&b(x.value),S&&this.finish(),x}get duration(){let{resolved:t}=this;return t?(0,n.X)(t.calculatedDuration):0}get time(){return(0,n.X)(this.currentTime)}set time(t){t=(0,n.f)(t),this.currentTime=t,null!==this.holdTime||0===this.speed?this.holdTime=t:this.driver&&(this.startTime=this.driver.now()-t/this.speed)}get speed(){return this.playbackSpeed}set speed(t){let r=this.playbackSpeed!==t;this.playbackSpeed=t,r&&(this.time=(0,n.X)(this.currentTime))}play(){if(this.resolver.isScheduled||this.resolver.resume(),!this._resolved){this.pendingPlayState="running";return}if(this.isStopped)return;let{driver:t=z,onPlay:r,startTime:i}=this.options;this.driver||(this.driver=t(t=>this.tick(t))),r&&r();let a=this.driver.now();null!==this.holdTime?this.startTime=a-this.holdTime:this.startTime?"finished"===this.state&&(this.startTime=a):this.startTime=null!=i?i:this.calcStartTime(),"finished"===this.state&&this.updateFinishedProm
2783ise(),this.cancelTime=this.startTime,this.holdTime=null,this.state="running",this.driver.start()}pause(){var t;if(!this._resolved){this.pendingPlayState="paused";return}this.state="paused",this.holdTime=null!=(t=this.currentTime)?t:0}complete(){"running"!==this.state&&this.play(),this.pendingPlayState=this.state="finished",this.holdTime=null}finish(){this.teardown(),this.state="finished";let{onComplete:t}=this.options;t&&t()}cancel(){null!==this.cancelTime&&this.tick(this.cancelTime),this.teardown(),this.updateFinishedPromise()}teardown(){this.state="idle",this.stopDriver(),this.resolveFinishedPromise(),this.updateFinishedPromise(),this.startTime=this.cancelTime=null,this.resolver.cancel()}stopDriver(){this.driver&&(this.driver.stop(),this.driver=void 0)}sample(t){return this.startTime=0,this.tick(t,!0)}}function F(t){return new U(t)}},55886:(t,r,i)=>{"use strict";i.d(r,{A:()=>s});var a=i(90620);let n=(t,r,i)=>(((1-3*i+3*r)*t+(3*i-6*r))*t+3*r)*t;function s(t,r,i,s){return t===r&&i===s?a.l:a=>0===a||1===a?a:n(function(t,r,i,a,s){let o,l,u=0;do(o=n(l=r+(i-r)/2,a,s)-t)>0?i=l:r=l;while(Math.abs(o)>1e-7&&++u<12);return l}(a,0,1,t,i),r,s)}},55892:(t,r,i)=>{"use strict";i.d(r,{c:()=>o,h:()=>l});var a=i(37876),n=i(14232),s=i(32872);let o=n.createContext({user:null,connectLichess:()=>{throw Error("poorly provided AuthContext, missing connectLichess")},logout:()=>{throw Error("poorly provided AuthContext, missing logout")}}),l=t=>{let{children:r}
2783=t,[i,l]=(0,n.useState)(null);(0,n.useEffect)(()=>{!async function(){l(await (0,s.mb)())}()},[]);let u=(0,n.useCallback)(()=>{window.location.assign(s.nI+"?redirect_url="+encodeURIComponent(window.location.toString()))},[]),d=(0,n.useCallback)(async()=>{l(await (0,s.BH)())},[]);return(0,a.jsx)(o.Provider,{value:{user:i,logout:d,connectLichess:u},children:r})}},56154:(t,r,i)=>{"use strict";i.d(r,{S:()=>u});var a=i(14232),n=i(32711),s=i(62207);let o=()=>{throw Error("PlayTreeControllerContext not provided")},l=new s.lr(new n.d$().fen()),u=a.createContext({game:{id:"",turn:"black",tree:l},playType:"againstMaia",timeControl:"unlimited",player:"white",maiaVersion:"maia_kdd_1100",playerActive:!1,toPlay:"black",moves:[],availableMoves:[],pieces:{},moveList:[],whiteClock:0,blackClock:0,lastMoveTime:0,plyCount:0,orientation:"white",setOrientation:o,stats:{lifetime:void 0,session:{gamesWon:0,gamesPlayed:0},lastRating:void 0,rating:0},setResigned:o,reset:o,makePlayerMove:o,updateClock:o,updateClockForColor:o,gameTree:l,currentNode:l.getRoot(),setCurrentNode:o,goToNode:o,goToNextNode:o,goToPreviousNode:o,goToRootNode:o,addMoveWithTime:o,premovesEnabled:!1,queuedPremove:null,setPremove:o,clearPremove:o,premoveResetKey:0})},57076:(t,r,i)=>{"use strict";i.d(r,{l:()=>n});let a="maia-rapid-model";class n{async openDB(){return this.db?this.db:new Promise((t,r)=>{let i=indexedDB.open(this.dbName,this.version);i.onerror=()=>r(i.error),i.onsuccess=()=>{this.db=i.result,t(i.result)},i.onupgradeneeded=t=>{let r=t.target.result;r.objectStoreNames.contains(this.storeName)||r.createObjectStore(this.storeName,{keyPath:"id"}).createIndex("timestamp","timestamp",{unique:!1})}})}async storeModel(t,r,i){try{let n=(await this.openDB()).transaction([this.storeName],"readwrite").objectStore(this.storeName),s={id:a,url:t,version:r,data:new Blob([i]),timestamp:Date.now(),size:i.byteLength};await new Promise((t,r)=>{let i=n.put(s);i.onsuccess=()=>t(),i.onerror=()=>r(i.error)}),console.log("Maia model stored in IndexedDB")}catch(t){throw console.error("Failed to store model in IndexedDB:",t),t}}async getModel(t,r){console.log("Storage: getModel called with URL:",t);try{console.log("Storage: Opening IndexedDB...");let i=(await this.openDB()).transaction([this.storeName],"readonly").objectStore(this.storeName);console.log("Storage: Requesting model data...");let n=await new Promise((t,r)=>{let n=i.get(a);n.onsuccess=()=>{console.log("Storage: IndexedDB request successful, result:",n.result?"Found":"Not found"),t(n.result||null)},n.onerror=()=>{console.log("Storage: IndexedDB request error:",n.error),r(n.error)}});if(!n)return console.log("Storage: No model data found in IndexedDB (normal for first time)"),null;if(n.version!==r||n.url!==t)return console.log("Storage: Cached Maia model is incompatible, clearing old cache"),console.log("Storage: Cached URL:",n.url||"(missing)"),console.log("Storage: Cached version:",n.version||"(missing)"),console.log("Storage: Required URL:",t),console.log("Storage: Required version:",r),await this.deleteModel(),null;console.log("Storage: Converting Blob to ArrayBuffer...");let s=await n.data.arrayBuffer();return console.log("Storage: Successfully retrieved model, size:",s.byteLength),s}catch(t){return console.error("Storage: IndexedDB operation failed:",t),null}}async deleteModel(){try{let t=(await this.openDB()).transaction([this.storeName],"readwrite").objectStore(this.storeName);await new Promise((r,i)=>{let n=t.delete(a);n.onsuccess=()=>r(),n.onerror=()=>i(n.error)})}catch(t){console.error("Failed to delete model from IndexedDB:",t)}}async getStorageInfo(){try{let t,r;if(!("indexedDB"in window))return{supported:!1};if("storage"in navigator&&"estimate"in navigator.storage){let i=await navigator.storage.estimate();t=i.quota,r=i.usage}let i=(await this.openDB()).transaction([this.storeName],"readonly").objectStore(this.storeName),n=await new Promise((t,r)=>{let n=i.get(a);n.onsuccess=()=>t(n.result||null),n.onerror=()=>r(n.error)});return{supported:!0,quota:t,usage:r,modelSize:null==n?void 0:n.size,modelTimestamp:null==n?void 0:n.timestamp}}catch(t){return console.error("Failed to get storage info:",t),{supported:!1}}}async requestPersistentStorage(){try{if("storage"in navigator&&"persist"in navigator.storage){let t=await navigator.storage.persist();return console.log(t?"Persistent storage granted":"Persistent storage denied"),t}return!1}catch(t){return console.error("Failed to request persistent storage:",t),!1}}async clearAllStorage(){try{await this.deleteModel(),console.log("Maia storage cleared")}catch(t){console.warn("Failed to clear storage:",t)}}constructor(){this.dbName="MaiaModels",this.storeName="models",this.version=1,this.db=null}}},58323:function(t,r){var i,a;void 0===(a="function"==typeof(i=function(){return function(t){if(t instanceof HTMLElement||t instanceof SVGElement){for(var r=t.parentNode;r.parentNode;){if(function(t){var r=getComputedStyle(t,null).getPropertyValue("overflow");return r.indexOf("scroll")>-1||r.indexOf("auto")>-1}(r))return r;r=r.parentNode}return document.scrollingElement||document.documentElement}}})?i.apply(r,[]):i)||(t.exports=a)},59425:(t,r,i)=>{"use strict";i.d(r,{Fr:()=>l,GT:()=>o,P0:()=>u,XR:()=>f});var a=i(84547);let n="maia_favorite_games",s=t=>{switch(t){case"play":return"play";
2783case"hand":return"hand";case"brain":return"brain";default:return"custom"}},o=async(t,r)=>{try{let i=s(t.type);return await (0,a.p7)(i,t.id,{is_favorited:!0,custom_name:r||t.label}),{id:t.id,type:t.type,originalLabel:t.label,customName:r||t.label,result:t.result,addedAt:new Date().toISOString(),pgn:t.pgn}}catch(o){console.warn("Failed to favorite via API, falling back to localStorage:",o);let i=d(),a=i.findIndex(r=>r.id===t.id);if(-1!==a)i[a]={...i[a],customName:r||i[a].customName};else{let a={id:t.id,type:t.type,originalLabel:t.label,customName:r||t.label,result:t.result,addedAt:new Date().toISOString(),pgn:t.pgn};i.unshift(a)}let s=i.slice(0,100);return localStorage.setItem(n,JSON.stringify(s)),i[a]||i[0]}},l=async(t,r)=>{try{if(r){let i=s(r);await (0,a.p7)(i,t,{is_favorited:!1});return}let i=d().find(r=>r.id===t);if(i){let r=s(i.type);await (0,a.p7)(r,t,{is_favorited:!1});return}throw Error("Game type required for API call")}catch(i){console.warn("Failed to unfavorite via API, falling back to localStorage:",i);let r=d().filter(r=>r.id!==t);localStorage.setItem(n,JSON.stringify(r))}},u=async(t,r,i)=>{try{if(i){let n=s(i);await (0,a.p7)(n,t,{custom_name:r});return}let n=d().find(r=>r.id===t);if(n){let i=s(n.type);await (0,a.p7)(i,t,{custom_name:r});return}throw Error("Game type required for API call")}catch(s){console.warn("Failed to update name via API, falling back to localStorage:",s);let i=d(),a=i.findIndex(r=>
2783r.id===t);-1!==a&&(i[a].customName=r,localStorage.setItem(n,JSON.stringify(i)))}},d=()=>{try{let t=localStorage.getItem(n);return t?JSON.parse(t):[]}catch(t){return console.warn("Failed to parse stored favorite games:",t),[]}},c=async()=>{try{let t=await (0,a.tY)("favorites",1);if(t.games&&Array.isArray(t.games))return t.games.map(t=>({id:t.id,type:t.game_type||t.type,originalLabel:t.label||t.custom_name||"Untitled",customName:t.custom_name||t.label||"Untitled",result:t.result||"*",addedAt:t.created_at||new Date().toISOString(),pgn:t.pgn}));return[]}catch(t){return console.warn("Failed to fetch favorites from API, falling back to localStorage:",t),d()}},h=t=>({id:t.id,type:t.type,label:t.customName,result:t.result,pgn:t.pgn}),f=async()=>(await c()).map(h)},62207:(t,r,i)=>{"use strict";i.d(r,{RV:()=>o.R,lr:()=>s.l,SA:()=>n,f9:()=>a});let a=["3+0","5+2","10+0","15+10","unlimited"],n=["3+0","5+2","10+0","15+10","Unlimited"];var s=i(9186),o=i(98082)},63163:()=>{},63786:(t,r,i)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"useIntersection",{enumerable:!0,get:function(){return u}});let a=i(14232),n=i(43273),s="function"==typeof IntersectionObserver,o=new Map,l=[];function u(t){let{rootRef:r,rootMargin:i,disabled:u}=t,d=u||!s,[c,h]=(0,a.useState)(!1),f=(0,a.useRef)(null),p=(0,a.useCallback)(t=>{f.current=t},[]);return(0,a.useEffect)(()=>{if(s){if(d||c)return;let t=f.current;if(t&&t.tagName)return function(t,r,i){let{id:a,observer:n,elements:s}=function(t){let r,i={root:t.root||null,margin:t.rootMargin||""},a=l.find(t=>t.root===i.root&&t.margin===i.margin);if(a&&(r=o.get(a)))return r;let n=new Map;return r={id:i,observer:new IntersectionObserver(t=>{t.forEach(t=>{let r=n.get(t.target),i=t.isIntersecting||t.intersectionRatio>0;r&&i&&r(i)})},t),elements:n},l.push(i),o.set(i,r),r}(i);return s.set(t,r),n.observe(t),function(){if(s.delete(t),n.unobserve(t),0===s.size){n.disconnect(),o.delete(a);let t=l.findIndex(t=>t.root===a.root&&t.margin===a.margin);t>-1&&l.splice(t,1)}}}(t,t=>t&&h(t),{root:null==r?void 0:r.current,rootMargin:i})}else if(!c){let t=(0,n.requestIdleCallback)(()=>h(!0));return()=>(0,n.cancelIdleCallback)(t)}},[d,i,r,c,f.current]),[p,c,(0,a.useCallback)(()=>{h(!1)},[])]}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},65364:(t,r,i)=>{"use strict";var a,n;t.exports=(null==(a=i.g.process)?void 0:a.env)&&"object"==typeof(null==(n=i.g.process)?void 0:n.env)?i.g.process:i(15861)},67427:(t,r,i)=>{"use strict";i.d(r,{OK:()=>s,QY:()=>l,Z3:()=>u,q3:()=>o,zj:()=>n});var a=i(42034);let n=async function(t,r,i,n,s){let o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:void 0,l=o?{maia_name:r,maia_friendly_name:o,player_color:t,game_type:i,sample_moves:n.toString(),time_control:s}:{maia_name:r,player_color:t,game_type:i,sample_moves:n.toString(),time_control:s},u=await fetch((0,a.c)("play/start_game?"+new URLSearchParams(l)),{method:"GET",headers:{Accept:"application/json"}});if(401===u.status)throw Error("Unauthorized");let d=await u.json();return{gameId:d.game_id,opponentElo:d.opponent_elo}},s=async function(t){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"maia_kdd_1900",i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0;return(await fetch((0,a.c)("play/get_move?"+new URLSearchParams(n?i?{fen:i||"",maia_name:r,piece:n||"",initial_clock:s.toString(),current_clock:o.toString(),maia_version:"maia3"}:{maia_name:r,piece:n||"",initial_clock:s.toString(),current_clock:o.toString(),maia_version:"maia3"}:i?{fen:i||"",maia_name:r,initial_clock:s.toString(),current_clock:o.toString(),maia_version:"maia3"}:{maia_name:r,initial_clock:s.toString(),current_clock:o.toString(),maia_version:"maia3"})),{method:"POST",headers:{Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify(t)})).json()},o=async t=>{let r=(t=>{let r=t.trim().split(/\s+/);return r.length>=4?r.slice(0,4).join(" "):t.trim()})(t);return(await fetch((0,a.c)("play/get_book_moves?"+new URLSearchParams({fen:r})),{method:"POST",headers:{Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify({moves:[],maia_names:["maia_kdd_1100","maia_kdd_1200","maia_kdd_1300","maia_kdd_1400","maia_kdd_1500","maia_kdd_1600","maia_kdd_1700","maia_kdd_1800","maia_kdd_1900"]})})).json()},l=async function(t,r,i,n,s){let o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:void 0,l=arguments.length>6&&void 0!==arguments[6]?arguments[6]:void 0,u=arguments.length>7&&void 0!==arguments[7]?arguments[7]:[];return(await fetch((0,a.c)("play/submit_move"),{method:"POST",headers:{Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify({game_id:t,moves:r,game_over_state:n,game_type:s,move_times:i,fen:o,brain_moves:u,...l&&"none"!==l?{winner:l}:{}})})).json()},u=async()=>{let t=await fetch((0,a.c)("play/get_player_stats")),r=await t.json();return{playGamesPlayed:r.play_games_played,handGamesPlayed:r.hand_games_played,brainGamesPlayed:r.brain_games_played,playWon:r.play_won,playDrawn:r.play_drawn,handWon:r.hand_won,handDrawn:r.hand_drawn,brainWon:r.brain_won,brainDrawn:r.brain_drawn,playElo:r.play_elo,handElo:r.hand_elo,brainElo:r.brain_elo}}},67798:(t,r,i)=>{"use strict";i.d(r,{h:()=>h,q:()=>c});var a=i(47137),n=i(81461);let s=new Set,o=!1,l=!1;function u(){if(l){let t=Array.from(s).filter(t=>t.needsMeasurement),r=new Set(t.map(t=>t.element)),i=new Map;r.forEach(t=>{let r=(0,a.W9)(t);r.length&&(i.set(t,r),t.render())}),t.forEach(t=>t.measureInitialState()),r.forEach(t=>{t.render();let r=i.get(t);r&&r.forEach(([r,i])=>{var a;null==(a=t.getValue(r))||a.set(i)})}),t.forEach(t=>t.measureEndState()),t.forEach(t=>{void 0!==t.suspendedScrollY&&window.scrollTo(0,t.suspendedScrollY)})}
2783l=!1,o=!1,s.forEach(t=>t.complete()),s.clear()}function d(){s.forEach(t=>{t.readKeyframes(),t.needsMeasurement&&(l=!0)})}function c(){d(),u()}class h{constructor(t,r,i,a,n,s=!1){this.isComplete=!1,this.isAsync=!1,this.needsMeasurement=!1,this.isScheduled=!1,this.unresolvedKeyframes=[...t],this.onComplete=r,this.name=i,this.motionValue=a,this.element=n,this.isAsync=s}scheduleResolve(){this.isScheduled=!0,this.isAsync?(s.add(this),o||(o=!0,n.Gt.read(d),n.Gt.resolveKeyframes(u))):(this.readKeyframes(),this.complete())}readKeyframes(){let{unresolvedKeyframes:t,name:r,element:i,motionValue:a}=this;for(let n=0;n<t.length;n++)if(null===t[n])if(0===n){let n=null==a?void 0:a.get(),s=t[t.length-1];if(void 0!==n)t[0]=n;else if(i&&r){let a=i.readValue(r,s);null!=a&&(t[0]=a)}void 0===t[0]&&(t[0]=s),a&&void 0===n&&a.set(t[0])}else t[n]=t[n-1]}setFinalKeyframe(){}measureInitialState(){}renderEndStyles(){}measureEndState(){}complete(){this.isComplete=!0,this.onComplete(this.unresolvedKeyframes,this.finalKeyframe),s.delete(this)}cancel(){this.isComplete||(this.isScheduled=!1,s.delete(this))}resume(){this.isComplete||this.scheduleResolve()}}},69441:(t,r,i)=>{"use strict";i.d(r,{BL:()=>o,I3:()=>u,Js:()=>d,Ms:()=>l,R9:()=>s,ek:()=>n});var a=i(32711);let n=async()=>{let t=await fetch("https://lichess.org/api/broadcast",{headers:{Accept:"application/x-ndjson"}});if(!t.ok)throw Error("HTTP ".concat(t.status,": ").concat(t.statusText));if(!t.body)throw Error("No response body");let r=[];return new Promise((i,a)=>{(t=>r=>{let i=r.body.getReader(),a=/\r?\n/,n=new TextDecoder,s="",o=()=>i.read().then(r=>{let{done:i,value:l}=r;if(i)s.length>0&&t(JSON.parse(s));else{let r=n.decode(l,{stream:!0}),i=((s+=r)||"").split(a);for(let r of(s=i.pop(),i.filter(t=>t)))t(JSON.parse(r));return o()}});return o()})(t=>{try{r.push(t)}catch(t){console.error("Error parsing broadcast message:",t)}})(t).then(()=>{i(r)}).catch(a)})},s=async t=>{try{var r,i,a;console.log("Fetching broadcast by ID:",t);let n=await fetch("https://lichess.org/api/broadcast/".concat(t),{headers:{Accept:"application/json"}});if(!n.ok)return console.error("Failed to fetch broadcast: ".concat(n.status)),null;let s=await n.json();if(console.log("Broadcast data received:",{name:null==(r=s.tour)?void 0:r.name,rounds:null==(i=s.rounds)?void 0:i.length,roundNames:null==(a=s.rounds)?void 0:a.map(t=>t.name)}),s.tour&&s.rounds)return s;return console.error("Invalid broadcast data structure"),null}catch(t){return console.error("Error fetching broadcast by ID:",t),null}},o=async()=>{let t=await fetch("https://lichess.org/api/broadcast/top",{headers:{Accept:"application/json"}});if(!t.ok)throw Error("HTTP ".concat(t.status,": ").concat(t.statusText));return t.json()},l=t=>({tour:t.tour,rounds:[t.round],defaultRoundId:t.round.id}),u=async(t,r,i,a)=>{let n=fetch("https://lichess.org/api/stream/broadcast/round/".concat(t,".pgn"),{signal:a,headers:{Accept:"application/x-chess-pgn"}}),s=t=>{t.trim()&&r(t)};try{let t=await n;if(!t.ok)throw Error("HTTP ".concat(t.status,": ").concat(t.statusText));if(!t.body)throw Error("No response body");let r=t.body.getReader(),a=new TextDecoder,o="";for(;;){let{done:t,value:i}=await r.read();if(t){o.trim()&&s(o);break}let n=a.decode(i,{stream:!0}),l=(o+=n).split("\n\n\n");for(let t of(o=l.pop()||"",l))t.trim()&&s(t)}i()}catch(t){if(null==a?void 0:a.aborted)console.log("Broadcast stream aborted");else throw console.error("Broadcast stream error:",t),t}},d=t=>{let r=[],i=[];try{let a=t.split(/\n\n\[Event/).filter(t=>t.trim());for(let t=0;t<a.length;t++){let n=a[t];t>0&&!n.startsWith("[Event")&&(n="[Event"+n);try{let t=c(n);t&&r.push(t)}catch(r){i.push("Error parsing game ".concat(t+1,": ").concat(r))}}}catch(t){i.push("Error splitting PGN data: ".concat(t))}return{games:r,errors:i}},c=t=>{let r=t.trim().split("\n"),i={},a="",n=!1;for(let t of r){let r=t.trim();if(r.startsWith("[")&&r.endsWith("]")){let t=r.match(/^\[(\w+)\s+"([^"]*)"\]$/);t&&(i[t[1]]=t[2])}else r&&!n?(n=!0,a=r):n&&r&&(a+=" "+r)}let s=i.White||"Unknown",o=i.Black||"Unknown",l=i.Result||"*",u=i.Event||"",d=i.Site||"",c=i.Date||i.UTCDate||"",m=i.Round||"";console.log("Parsing PGN for ".concat(s," vs ").concat(o));let g=h(t),b=g.moves,{whiteClock:y,blackClock:v}=g,_=f();return(y||v)&&console.log("Clock data for ".concat(s," vs ").concat(o,":"),{whiteClock:y,blackClock:v,movesSection:a.substring(0,200)+"..."}),{id:p(s,o,u,d),white:s,black:o,result:l,moves:b,pgn:t,fen:_||"rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1",event:u,site:d,date:c,round:m,eco:i.ECO,opening:i.Opening,whiteElo:i.WhiteElo?parseInt(i.WhiteElo):void 0,blackElo:i.BlackElo?parseInt(i.BlackElo):void 0,timeControl:i.TimeControl,termination:i.Termination,annotator:i.Annotator,studyName:i.StudyName,chapterName:i.ChapterName,utcDate:i.UTCDate,utcTime:i.UTCTime,whiteClock:y,blackClock:v}},h=t=>{let r,i,n=[];try{let s=new a.d$;if(!s.loadPgn(t))return console.warn("Failed to parse PGN with chess.js, falling back to manual parsing"),{moves:n};for(let t of s.history({verbose:!0}))n.push(t.san);let o=s.getComments(),l=null,u=null;for(let t of o){let r=t.comment.match(/\[%clk\s+(\d+):(\d+)(?::(\d+))?\]/);if(r){let i=r[3]?parseInt(r[1]):0,n=r[3]?parseInt(r[2]):parseInt(r[1]),s=r[3]?parseInt(r[3]):parseInt(r[2]),o=3600*i+60*n+s,d={timeInSeconds:o,isActive:!1,lastUpdateTime:
2783Date.now()},c=new a.d$(t.fen),h="b"===c.turn();h?l=d:u=d,console.log("Found clock for ".concat(h?"white":"black",": ").concat(i,":").concat(String(n).padStart(2,"0"),":").concat(String(s).padStart(2,"0")," = ").concat(o,"s"))}}if(r=l,i=u,n.length>0){let n=new a.d$;n.loadPgn(t);let s="w"===n.turn();r&&(r.isActive=s),i&&(i.isActive=!s)}}catch(t){console.warn("Error parsing PGN with chess.js:",t)}return{moves:n,whiteClock:r,blackClock:i}},f=()=>null,p=(t,r,i,a)=>{let n="".concat(t,"-").concat(r,"-").concat(i,"-").concat(a),s=0;for(let t=0;t<n.length;t++)s=(s<<5)-s+n.charCodeAt(t),s&=s;return Math.abs(s).toString(36).substring(0,12)}},69942:(t,r,i)=>{"use strict";i.d(r,{J0:()=>n,N6:()=>l,Pe:()=>o,Px:()=>s,eX:()=>d,qN:()=>u,zF:()=>h});var a=i(32711);function n(t,r,i){let a=t.getRoot();for(let t=0;t<r.length&&a;t++){let n=i[t]?function(t,r){let i={},a={},n=-1/0,s="",o={};for(let r in t){let a,l=t[r];if(Math.abs(l)>=1e4){let t=Math.abs(1e4-Math.abs(l));a=l>0?Math.max(1,Math.floor(t/100)+1):-Math.max(1,Math.floor(t/100)+1),o[r]=a}i[r]=l,l>n&&(n=l,s=r)}for(let r in i){let i=t[r];a[r]=i-n}let l=Object.fromEntries(Object.entries(i).sort((t,r)=>{let[,i]=t,[,a]=r;return a-i})),u=Object.fromEntries(Object.entries(a).sort((t,r)=>{let[,i]=t,[,a]=r;return a-i})),d={},c=-1/0;for(let t in l){let r=l[t],i=Math.abs(r)>=1e4?+(r>0):h(r,!1);d[t]=i,d[t]>c&&(c=d[t])}let f={};for(let t in d)f[t]=d[t]-c;let p=Object.fromEntries(Object.entries(d).sort((t,r)=>{let[,i]=t,[,a]=r;return a-i})),m=Object.fromEntries(Object.entries(f).sort((t,r)=>{let[,i]=t,[,a]=r;return a-i}));if("b"===r){for(let t in n*=-1,l)l[t]*=-1;for(let t in o)o[t]*=-1}let g=Object.keys(o).length>0?Object.fromEntries(Object.keys(l).filter(t=>void 0!==o[t]).map(t=>[t,o[t]])):void 0;return{sent:!0,depth:20,model_move:s,model_optimal_cp:n,cp_vec:l,cp_relative_vec:u,winrate_vec:p,winrate_loss_vec:m,mate_vec:g,is_checkmate:void 0}}(i[t],r[t].board.split(" ")[1]):void 0;n&&a.addStockfishAnalysis(n),a=null==a?void 0:a.mainChild}}let s=t=>{let r=[];return t.getMainLine().forEach((t,i)=>{if(!t.analysis.maia&&!t.analysis.stockfish)return;let a={ply:i,fen:t.fen};t.analysis.maia&&(a.maia=t.analysis.maia),t.analysis.stockfish&&(a.stockfish={depth:t.analysis.stockfish.depth,cp_vec:t.analysis.stockfish.cp_vec,mate_vec:t.analysis.stockfish.mate_vec}),r.push(a)}),r},o=(t,r)=>{let i=t.getMainLine();r.forEach(t=>{let{ply:r,maia:n,stockfish:s}=t;if(r>=0&&r<i.length){let o=i[r];if(o.fen===t.fen&&(n&&o.addMaiaAnalysis(n),s)){let t=((t,r,i,n)=>{let s="b"===new a.d$(i).turn(),o=s?1/0:-1/0,l="";for(let r in t){let i=t[r];s?i<o&&(o=i,l=r):i>o&&(o=i,l=r)}let u={};for(let r in t){let i=t[r];u[r]=s?o-i:i-o}let d={};for(let r in t){let i=h(t[r]*(s?-1:1),!1);d[r]=i}let c=-1/0;for(let t in d){let r=d[t];r>c&&(c=r)}let f={};for(let t in d)f[t]=d[t]-c;let p=Object.entries(d).sort((t,r)=>{let[,i]=t,[,a]=r;return a-i});return{sent:!0,depth:r,model_move:l,model_optimal_cp:o,cp_vec:t,cp_relative_vec:u,winrate_vec:Object.fromEntries(p),winrate_loss_vec:Object.fromEntries(p.map(t=>{let[r]=t;return[r,f[r]]})),mate_vec:n}})(s.cp_vec,s.depth,o.fen,s.mate_vec);(!o.analysis.stockfish||o.analysis.stockfish.depth<s.depth)&&o.addStockfishAnalysis(t)}}})},l=t=>JSON.stringify(t.map(t=>{var r;return{ply:t.ply,fen:t.fen,hasStockfish:!!t.stockfish,stockfishDepth:(null==(r=t.stockfish)?void 0:r.depth)||0,hasMaia:!!t.maia,maiaModels:t.maia?Object.keys(t.maia).sort():[]}}));function u(t,r){let i=t.getMainLine(),n=[];for(let t=1;t<i.length;t++){let s=i[t];if(s.turn===("white"===r?"b":"w")&&(s.blunder||s.inaccuracy)&&s.move&&s.san){let i=s.parent;if(!i)continue;let o=i.analysis.stockfish;if(!o||!o.model_move)continue;let l=new a.d$(i.fen).move(o.model_move,{sloppy:!0});if(!l)continue;n.push({nodeId:"move-".concat(t),moveIndex:t,fen:i.fen,playedMove:s.move,san:s.san,type:s.blunder?"blunder":"inaccuracy",bestMove:o.model_move,bestMoveSan:l.san,playerColor:r})}}return n}function d(t,r){let i=function(t){let r=t.analysis.stockfish;if(!r||!r.model_move)return null;let i=new a.d$(t.fen).move(r.model_move,{sloppy:!0});return i?{move:r.model_move,san:i.san}:null}(t);return!!i&&i.move===r}let c={"-10.0":.16874792794783955,"-9.9":.16985049833887045,"-9.8":.17055738720598324,"-9.7":.17047675058336964,"-9.6":.17062880930380164,"-9.5":.17173295708238823,"-9.4":.1741832515174232,"-9.3":.17496583875894223,"-9.2":.17823840614328434,"-9.1":.17891311823785128,"-9.0":.18001756037367211,"-8.9":.18238828856575562,"-8.8":.18541818422621015,"-8.7":.187321278512311
278373,"-8.6":.188595528612019,"-8.5":.19166809721845357,"-8.4":.18989033973470404,"-8.3":.19357848980722225,"-8.2":.195212660943061,"-8.1":.1985674406526584,"-8.0":.20401430566976098,"-7.9":.2053494594581885,"-7.8":.2095001157139551,"-7.7":.2127603864858716,"-7.6":.21607609694057794,"-7.5":.21973060624595708,"-7.4":.2228248514176221,"-7.3":.22299885811455433,"-7.2":.22159517034121434,"-7.1":.2253474128373214,"-7.0":.22700275966883976,"-6.9":.2277978270416834,"-6.8":.23198254537369023,"-6.7":.23592594616253237,"-6.6":.24197398088661215,"-6.5":.24743721350483228,"-6.4":.2504634951693775,"-6.3":.25389828445048646,"-6.2":.2553693799097443,"-6.1":.2574747677153313,"-6.0":.26099610941165985,"-5.9":.26359484469524885,"-5.8":.26692516804140987,"-5.7":.269205898445802,"-5.6":.2716602975482676,"-5.5":.2762577909143481,"-5.4":.27686670371314326,"-5.3":.2811527494908349,"-5.2":.2842962444080047,"-5.1":.28868260131133583,"-5.0":.2914459750278813,"-4.9":.29552500948265914,"-4.8":.29889111624248266,"-4.7":.30275330907688625,"-4.6":.30483684697544633,"-4.5":.3087308954422261,"-4.4":.3119607377503364,"-4.3":.3149431542506458,"-4.2":.31853131804955126,"-4.1":.320778152372042,"-4.0":.32500585429582063,"-3.9":.3287550205647155,"-3.8":.3302152905962328,"-3.7":.3337414440782651,"-3.6":.3371096329087784,"-3.5":.3408372806176929,"-3.4":.3430467389812629,"-3.3":.345358794898586,"-3.2":.3488968896485116,"-3.1":.35237319918137733,"-3.0":.354602162593592,"-2.9":.35921288506416393,"-2.8":.3620978187487768,"-2.7":.36570889434391574,"-2.6":.36896483582772577,"-2.5":.3738375709360098,"-2.4":.37755946149735364,"-2.3":.38083501393471353,"-2.2":.3841356210618174,"-2.1":.38833097169521236,"-2.0":.3913569664390527,"-1.9":.39637664590926824,"-1.8":.4006706381318188,"-1.7":.40568723118901173,"-1.6":.4112309032143989,"-1.5":.4171285506703859,"-1.4":.422533096069275,"-1.3":.4301262113278628,"-1.2":.4371930420830884,"-1.1":.44297556987180564,"-1.0":.4456913220302985,"-0.9":.4524847690277852,"-0.8":.4589667426852546,"-0.7":.46660356893847554,"-0.6":.47734553584312966,"-0.5":.4838742651753062,"-0.4":.4949662422107537,"-0.3":.5052075551297714,"-0.2":.5134173311516534,"-0.1":.5243603487770374,"0.0":.526949638981131,"0.1":.5295389291852245,"0.2":.5664296189371014,"0.3":.5748717155242605,"0.4":.5869360163496304,"0.5":.5921709270831235,"0.6":.6012651707026009,"0.7":.6088638279243903,"0.8":.6153816495064385,"0.9":.6213113677421394,"1.0":.6271095095579187,"1.1":.632804166473034,"1.2":.6381911052846212,"1.3":.6442037744916549,"1.4":.649365491330027,"1.5":.6541269394628821,"1.6":.6593775707102116,"1.7":.6642844357446305,"1.8":.6680323879474359,"1.9":.6719097160994534,"2.0":.6748374005101319,"2.1":.6783363422342483,"2.2":.6801467867275195,"2.3":.684829276628467,"2.4":.6867513620895516,"2.5":.6905527274606579,"2.6":.6926332976777145,"2.7":.6952680187678887,"2.8":.7001656575385784,"2.9":.7010142788018504,"3.0":.7047537668053925,"3.1":.7073295468984271,"3.2":.7106392738949507,"3.3":.7116862871579852,"3.4":.7149981105354425,"3.5":.7168150290640533,"3.6":.7181645290803663,"3.7":.7215706104143079,"3.8":.7257548871790502,"3.9":.7266799478667236,"4.0":.7312566255649167,"4.1":.7338343990993276,"4.2":.7363492332937249,"4.3":.7374945601492073,"4.4":.7413387385114591,"4.5":.7466896678519318,"4.6":.7461156227069248,"4.7":.7500348334958896,"4.8":.7525591569082364,"4.9":.7567349424376287,"5.0":.7596581998583797,"5.1":.7621623413577621,"5.2":.7644432506942895,"5.3":.7668438338565464,"5.4":.7697341715213551,"5.5":.7718264040129471,"5.6":.774903252738822,"5.7":.777338112750803,"5.8":.7782543748612702,"5.9":.7815446531238023,"6.0":.7817240741095305,"6.1":.7843444714897749,"6.2":.7879064312243436,"6.3":.7894336918448414,"6.4":.7906807160826923,"6.5":.7958175057898639,"6.6":.799001778895725,"6.7":.8059773285734155,"6.8":.8073085278260186,"6.9":.8079169497726442,"7.0":.8094553564231399,"7.1":.812049156586624,"7.2":.8080964608399982,"7.3":.8089371589128438,"7.4":.811884066397279,"7.5":.8139355726992591,"7.6":.8176447870147248,"7.7":.8205118056812014,"7.8":.8239310183322626,"7.9":.8246215704824976,"8.0":.8282444028473858,"8.1":.8307566922119521,"8.2":.8299970989266028,"8.3":.8329910434137715,"8.4":.8348790035853562,"8.5":.8354299179013772,"8.6":.838042734118834,"8.7":.8386288753155167,"8.8":.8403357337021318,"8.9":.8438203836486884,"9.0":.8438217313242881,"9.1":.8451134380453753,"9.2":.8456384082100551,"9.3":.844182520663178,"9.4":.8463847100484717,"9.5":.8479706716538067,"9.6":.8511321531494442,"9.7":.8506127153603494,"9.8":.8490128260556276,"9.9":.8522167487684729,"10.0":.8518353443061348},h=function(t){let r=arguments.length>1&&void 0!==arguments[1]&&arguments[1];try{let i=("string"==typeof t?parseFloat(t):t)/100,a=Math.max(-10,Math.min(10,i)),n=Math.round(10*a)/10,s=n.toFixed(1);if(s in c)return c[s];if(n<-10)return c["-10.0"];if(n>10)return c["10.0"];return r?NaN:.5}catch(t){if(r)return NaN;throw t}}},72924:(t,r,i)=>{"use strict";i.d(r,{i:()=>h});var a=i(21623),n=i(67798),s=i(6249),o=i(93563),l=i(37605),u=i(34474);let d=(t,r)=>"zIndex"!==r&&!!("number"==typeof t||Array.isArray(t)||"string"==typeof t&&(u.f.test(t)||"0"===t)&&!t.startsWith("url("));var c=i(50005);class h{constructor({autoplay:t=!0,delay:r=0,type:i="keyframes",repeat:n=0,repeatDelay:s=0,repeatType:
2783o="loop",...l}){this.isStopped=!1,this.hasAttemptedResolve=!1,this.createdAt=a.k.now(),this.options={autoplay:t,delay:r,type:i,repeat:n,repeatDelay:s,repeatType:o,...l},this.updateFinishedPromise()}calcStartTime(){return this.resolvedAt&&this.resolvedAt-this.createdAt>40?this.resolvedAt:this.createdAt}get resolved(){return this._resolved||this.hasAttemptedResolve||(0,n.q)(),this._resolved}onKeyframesResolved(t,r){this.resolvedAt=a.k.now(),this.hasAttemptedResolve=!0;let{name:i,type:n,velocity:u,delay:h,onComplete:f,onUpdate:p,isGenerator:m}=this.options;if(!m&&!function(t,r,i,a){let n=t[0];if(null===n)return!1;if("display"===r||"visibility"===r)return!0;let s=t[t.length-1],u=d(n,r),c=d(s,r);return(0,l.$)(u===c,`You are trying to animate ${r} from "${n}" to "${s}". ${n} is not an animatable value - to enable this animation set ${n} to a value animatable to ${s} via the \`style\` property.`),!!u&&!!c&&(function(t){let r=t[0];if(1===t.length)return!0;for(let i=0;i<t.length;i++)if(t[i]!==r)return!0}(t)||("spring"===i||(0,o.WH)(i))&&a)}(t,i,n,u))if(s.d.current||!h){p&&p((0,c.X)(t,this.options,r)),f&&f(),this.resolveFinishedPromise();return}else this.options.duration=0;let g=this.initPlayback(t,r);!1!==g&&(this._resolved={keyframes:t,finalKeyframe:r,...g},this.onPostResolved())}onPostResolved(){}then(t,r){return this.currentFinishedPromise.then(t,r)}flatten(){this.options.type="keyframes",this.options.ease="linear"}updateFinishedPromise(){this.currentFinishedPromise=new Promise(t=>{this.resolveFinishedPromise=t})}}},72975:(t,r,i)=>{"use strict";i.d(r,{YH:()=>a,hB:()=>s,kJ:()=>n});let a=Array.from({length:21},(t,r)=>"maia_kdd_".concat(600+100*r)),n=a.map(t=>parseInt(t.replace("maia_kdd_","")));a.map(t=>({id:t,name:t.replace("maia_kdd_","Maia ")}));let s=Array.from({length:21},(t,r)=>{let i=600+100*r;return{id:"maia_kdd_".concat(i),name:"Maia-3 ".concat(i)}})},73198:(t,r,i)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.State=void 0;var a=i(6162),n=i(29610);r.State=function(){function t(t,r,i,n,s,o,l){this.board=t||Array(128),this.kings=r||{w:a.EMPTY,b:a.EMPTY},this.turn=i||a.WHITE,this.castling=n||{w:0,b:0},this.ep_square=s||a.EMPTY,this.half_moves=o||0,this.move_number=l||1}return t.prototype.clone=function(){return new t(this.board.slice(),{w:this.kings.w,b:this.kings.b},this.turn,{w:this.castling.w,b:this.castling.b},this.ep_square,this.half_moves,this.move_number)},Object.defineProperty(t.prototype,"fen",{get:function(){return n.getFen(this)},enumerable:!1,configurable:!0}),t}()},74279:(t,r,i)=>{"use strict";i.d(r,{u:()=>n});var a=i(14232);let n=function(t){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"white",[i,n]=(0,a.useState)(t.getRoot()),[s,o]=(0,a.useState)(r);(0,a.useEffect)(()=>{n(t.getRoot())},[t]);let l=(0,a.useMemo)(()=>t.getMainLine().length,[t]),u=(0,a.useCallback)(t=>{n(t)},[n]),d=(0,a.useCallback)(()=>{(null==i?void 0:i.mainChild)&&n(i.mainChild)},[i,n]),c=(0,a.useCallback)(()=>{(null==i?void 0:i.parent)&&n(i.parent)},[i,n]),h=(0,a.useCallback)(()=>{t&&n(t.getRoot())},[t,n]);return(0,a.useEffect)(()=>{o(r)},[r]),{tree:t,currentNode:i,setCurrentNode:n,orientation:s,setOrientation:o,goToNode:u,goToNextNode:d,goToPreviousNode:c,goToRootNode:h,plyCount:l}}},75540:(t,r)=>{"use strict";function i(t){var r;let{config:i,src:a,width:n,quality:s}=t,o=s||(null==(r=i.qualities)?void 0:r.reduce((t,r)=>Math.abs(r-75)<Math.abs(t-75)?r:t))||75;return i.path+"?url="+encodeURIComponent(a)+"&w="+n+"&q="+o+(a.startsWith("/_next/static/media/"),"")}Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"default",{enumerable:!0,get:function(){return a}}),i.__next_img_default=!0;let a=i},76084:(t,r,i)=>{"use strict";i.d(r,{Q0:()=>a.Q0,Mj:()=>o,T9:()=>S,u8:()=>h.u,lW:()=>k});var a=i(53068),n=i(43687),s=i(14232);let o=(t,r)=>{let[i,a]=(0,s.useState)(()=>{try{let i=window.localStorage.getItem(t);return i?JSON.parse(i):r}catch(t){return console.error(t),r}});return[i,r=>{try{let n=r instanceof Function?r(i):r;a(n),window.localStorage.setItem(t,JSON.stringify(n))}catch(t){console.error(t)}}]};var l=i(32711),u=i(67427),d=i(24044),c=i(62207),h=i(74279),f=i(72975),p=i(94598);let m=f.YH.map(t=>parseInt(t.replace("maia_kdd_",""),10)),g="[DRILL_BOOK]",b=t=>{let r=Object.entries(t).filter(t=>{let[,r]=t;return Number.isFinite(r)&&r>0});if(!r.length)return null;let i=r.reduce((t,r)=>{let[,i]=r;return t+i},0);if(i<=0)return r[0][0];let a=Math.random()*i;for(let[t,i]of r)if((a-=i)<=0)return t;return r[r.length-1][0]},y=t=>{let r=t.trim();if(!r)return r;let i=r.split(/\s+/);if(i.length>=6)return i.slice(0,6).join(" ");let a={1:"w",2:"-",3:"-",4:"0",5:"1"},n=[...i];for(let t=i.length;t<6;t+=1){var s;n[t]=null!=(s=a[t])?s:"0"}return n[1]||(n[1]="w"),n[2]||(n[2]="-"),n[3]||(n[3]="-"),n.slice(0,6).join(" ")},v=t=>t.gameOver()?t.inCheckmate()?"checkmate":t.inThreefoldRepetition()?"threefold_repetition":t.insufficientMaterial()?"insufficient_material":t.inStalemate()?"stalemate":t.inDraw()?"draw":"game_over":null,_=(t,r)=>{if("insufficient_material"===t)return"Drill ended: draw by insufficient material.";if("threefold_repetition"===t)return"Drill ended: draw by threefold repetition.";if("stalemate"===t)return"Drill ended: draw by stalemate.";if("checkmate"===t)return"Drill ended: checkmate.";if("manual_end"===t)return"Drill ended early by you.";if("draw"===t)return"Drill ended: draw by rule (for example, 50-move rule).";if("game_over"===t)return"Drill ended: game over.";let i=r.selection.targetMoveNumber;return null!==i?"Drill ended: target reached (".concat(r.playerMoveCount,"/").concat(i," moves)."):"Drill ended: target reached."},w=()=>({currentMoveIndex:0,totalMoves:0,currentMove:"",isAnalyzing:!1,isComplete:!1,isCancelled:!1}),x=t=>new Promise(r=>{setTimeout(r,t)}),$=(t,r)=>{let i=r.getRoot();if(!t||""===t.trim())return i;let a=new l.d$;(null==i?void 0:i.fen)&&a.fen()!==i.fen&&a.load(i.fen);let n=i;for(let i of t.replace(/\d+\./g,"").trim().split(/\s+/).filter(t=>t&&""!==t))try{let t=a.move(i);if(!t)break;let s=t.from+t.to+(t.promotion||""),o=n.children.find(t=>t.move===s);if(o)n=o;else{let i=r.addMainlineNode(n,a.fen(),s,t.san);if(i)n=i;else break}}catch(t){console.error("Error parsing move:",i,t);break}return n},S=t=>{let{playMoveSound:r}
2783=(0,n.f)(),[i,a]=(0,s.useState)(null),[S,k]=(0,s.useState)(null),[C,E]=(0,s.useState)(!1),[T,I]=(0,s.useState)([]),[A,N]=(0,s.useState)(0),O=(0,s.useRef)({}),M=(0,s.useMemo)(()=>(t=>{let r=[];return t.forEach(t=>{var i;if("endgame"===t.opening.categoryType&&(null==(i=t.endgamePositions)?void 0:i.length)){let i=t.variation?"".concat(t.opening.name," → ").concat(t.variation.name):t.opening.name;t.endgamePositions.forEach(a=>{let n=y(a.fen),s="w"===n.split(" ")[1]?"white":"black",o={id:"".concat(t.id,"__").concat(a.trait,"-").concat(a.index),name:a.traitLabel&&i?"".concat(i," (").concat(a.traitLabel,")"):i,description:"".concat(a.traitLabel," endgame drill"),fen:n,pgn:"",variations:[],categoryType:"endgame",isCustom:t.opening.isCustom,setupFen:n},l={...t,id:"".concat(t.id,"__").concat(a.trait,"-").concat(a.index),opening:o,variation:null,playerColor:s,targetMoveNumber:null,endgameMeta:{categoryName:a.categoryName,categorySlug:a.categorySlug,subcategoryName:a.subcategoryName,subcategorySlug:a.subcategorySlug,trait:a.trait,traitLabel:a.traitLabel,positionIndex:a.index,groupId:t.id,groupLabel:i},endgamePositions:void 0,endgameTraits:[a.trait],endgameScope:t.endgameScope};r.push(l)})}else r.push(t)}),r})(t.selections),[t.selections]),P=(0,s.useRef)(M),[R,j]=(0,s.useState)(!1),[z,D]=(0,s.use
2783State)(-1),[B,L]=(0,s.useState)(!1),[U,F]=(0,s.useState)(null),[q,V]=(0,s.useState)(!1),[W,H]=(0,s.useState)(null),[G,K]=(0,s.useState)(!1),[Y,Q]=(0,s.useState)(!1),[X,Z]=(0,s.useState)(!1),[J,ee]=(0,s.useState)(!1),et=(0,s.useRef)(null),er=(0,s.useRef)(null),ei=(0,s.useRef)(null),ea=(0,s.useContext)(p.Mb),{maia:en,status:es}=(0,s.useContext)(p.ul),eo=(0,s.useRef)(!1),[el,eu]=(0,s.useState)(w()),[ed,ec]=o("currentMaiaModel",f.YH[0]),eh=(0,s.useCallback)(t=>{var r;let i=t.id,a=(null!=(r=O.current[i])?r:0)+1;O.current[i]=a;let n="".concat(i,"__attempt_").concat(a);return{...t,id:n}},[]),ef=(0,s.useCallback)(()=>{let t=P.current;if(!t.length)return a(null),N(0),D(-1),null;if(!R&&z<t.length-1){let r=z+1,i=eh(t[r]);return a(i),D(r),N(t=>t<=0?1:t+1),i}R||j(!0);let r=Math.floor(Math.random()*t.length),i=eh(t[r]);return a(i),N(t=>t+1),i},[eh,R,z]);(0,s.useEffect)(()=>{f.YH.includes(ed)||ec(f.YH[0])},[ed,ec]),(0,s.useEffect)(()=>{if(P.current=M,O.current={},eE.current=!0,ek.current=Promise.resolve(),eC.current=new Set,eT.current=null,ea.stopEvaluation(),I([]),j(!1),D(-1),N(0),L(!1),F(null),k(null),H(null),Z(!1),ee(!1),eo.current=!1,eu(w()),!M.length)return void a(null);a(eh(M[0])),D(0),N(1),K(!1),Q(!1)},[M,eh,ea]),(0,s.useEffect)(()=>{var t;if(!i)return void k(null);let r=et.current;if(r&&r.selection.id===i.id){k(r),K(!1),Q(!0),Z(!1),ee(!1),et.current=null;return}let a=y((null==(t=i.variation)?void 0:t.setupFen)||i.opening.setupFen||"rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1"),n=new c.lr(a),s=$(i.variation?i.variation.pgn:i.opening.pgn,n),o=y((null==s?void 0:s.fen)||a);k({id:i.id,selection:i,moves:[],tree:n,currentFen:o,toPlay:"w"===new l.d$(o).turn()?"white":"black",openingEndNode:s,playerMoveCount:0}),K(!1),Q(!1),Z(!1),ee(!1),H(null)},[i]);let ep=(0,s.useMemo)(()=>new c.lr(new l.d$().fen()),[]),em=(null==S?void 0:S.tree)||ep,eg=(0,h.u)(em,(null==i?void 0:i.playerColor)||"white");(0,s.useEffect)(()=>{S&&0===S.moves.length&&(S.openingEndNode?eg.setCurrentNode(S.openingEndNode):S.tree&&eg.setCurrentNode(S.tree.getRoot()))},[null==S?void 0:S.id,eg]),(0,s.useEffect)(()=>{if(!S)return;let t=er.current,r=ei.current;t&&r&&S.selection.id===r&&(eg.setCurrentNode(t),er.current=null,ei.current=null)},[null==S?void 0:S.id,eg]);let eb=(0,s.useMemo)(()=>!S||!eg.currentNode||("w"===new l.d$(eg.currentNode.fen).turn()?"white":"black")===(null==i?void 0:i.playerColor),[S,eg.currentNode,null==i?void 0:i.playerColor]),ey=(0,s.useMemo)(()=>!!S&&!!i&&!Y&&!X&&!J&&(!!v(em.toChess())||null!==i.targetMoveNumber&&S.playerMoveCount>=i.targetMoveNumber),[Y,i,S,em,X,J,eg.currentNode]),ev=(0,s.useMemo)(()=>!!S&&!!eg.currentNode&&eg.currentNode===S.openingEndNode,[S,eg.currentNode]),e_=(0,s.useMemo)(()=>{if(!eg.currentNode||!eb)return new Map;let t=new Map;return new l.d$(eg.currentNode.fen).moves({verbose:!0}).forEach(r=>{var i;let{from:a,to:n}=r;t.set(a,(null!=(i=t.get(a))?i:[]).concat([n]))}),t},[eg.currentNode,eb]),ew=(0,s.useCallback)(async(t,r)=>{let i=0;for(;"ready"!==es&&i<30&&!eo.current;)await x(100),i++;if("ready"!==es||!en||eo.current)return null;let a=parseInt(r.replace("maia_kdd_",""),10);if(!Number.isFinite(a))return null;try{var n,s;let{result:r}=await en.batchEvaluateMaia3([t],[a],[a]);return null!=(s=null==r||null==(n=r[0])?void 0:n.policy)?s:null}catch(t){return console.warn(g,"Failed to evaluate Maia policy for drill:",t),null}},[en,es]),ex=(0,s.useCallback)(async t=>{var r,i;let{selection:a}=t,n=eg.currentNode||t.tree.getRoot(),s=[],o=[],u=function(t){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],i=[...r,t];if(t.move&&t.san){var n,d,h,f,p;i.length;let r=i[i.length-2],u=(r?"w"===new l.d$(r.fen).turn()?"white":"black":null)===a.playerColor,m=null==(n=t.analysis)?void 0:n.stockfish,g=null==(h=t.analysis)||null==(d=h.maia)?void 0:d[ed];m&&m.depth<18&&console.warn("Stockfish analysis depth ".concat(m.depth," is below target depth ").concat(18," for position ").concat(t.fen)),g||console.warn("Missing Maia analysis for position ".concat(t.fen));let b=null==m?void 0:m.model_optimal_cp,y=Math.abs(b-(null==r||null==(p=r.analysis)||null==(f=p.stockfish)?void 0:f.model_optimal_cp)),v=null==m?void 0:m.model_move,_=(null==g?void 0:g.policy)?Object.keys(g.policy).sort((t,r)=>g.policy[r]-g.policy[t])[0]:void 0,w="good";if(u&&r&&t.move){let i=c.RV.classifyMove(r,t.move,ed);w=i.blunder?"blunder":i.inaccuracy?"inaccuracy":i.excellent?"excellent":"good"}let x={move:t.move,san:t.san,fen:t.fen,fenBeforeMove:null==r?void 0:r.fen,moveNumber:r&&parseInt(r.fen.split(" ")[5],10)||1,isPlayerMove:u,evaluation:b,classification:w,evaluationLoss:y,bestMove:v||_,bestEvaluation:null==m?void 0:m.model_optimal_cp,stockfishBestMove:v,maiaBestMove:_};s.push(x);let $={moveNumber:x.moveNumber,evaluation:b,isPlayerMove:u,moveClassification:w};o.push($)}t.children.length>0&&u(t.children[0],i)};u(t.openingEndNode||t.tree.getRoot());let d=s.filter(t=>t.isPlayerMove),h=d.filter(t=>"excellent"===t.classification),p=d.filter(t=>"good"===t.classification),m=d.filter(t=>"inaccuracy"===t.classification),g=d.filter(t=>"mistake"===t.classification),b=d.filter(t=>"blunder"===t.classification),y=d.length>0?(h.length+p.length)/d.length*100:100,v=d.length>0?d.reduce((t,r)=>t+r.evaluationLoss,0)/d.length:0,_={selection:a,finalNode:n,playerMoves:d.map(t=>t.move),allMoves:s.map(t=>t.move),totalMoves:d.length,blunders:b.map(t=>t.move),goodMoves:[...h,...p].map(t=>t.move),finalEvaluation:null!=(i=null==(r=o[o.length-1])?void 0:r.evaluation)?i:0,completedAt:new Date,moveAnalyses:s,accuracyPercentage:y,averageEvaluationLoss:v},w=[];y>=90?w.push("Excellent performance! You played very accurately."):y>=70?w.push("Good job! Most of your moves were strong."):w.push("This opening needs more practice."),b.length>0&&w.push("Watch out for ".concat(b.length," critical mistake").concat(b.length>
27831?"s":"","."));let x=new Map,$=t=>{x.set(t.fen,t),t.children.forEach($)};$(t.tree.getRoot());let S=f.YH.map(t=>{let r=parseInt(t.replace("maia_kdd_","")),i=0,a=0,n=0;for(let r of d){var s,o;let l=r.fenBeforeMove?x.get(r.fenBeforeMove):null,u=null==l||null==(o=l.analysis)||null==(s=o.maia)?void 0:s[t];if((null==u?void 0:u.policy)&&r.move in u.policy){let t=u.policy[r.move];a+=t,i+=Math.log(Math.max(t,.001)),n++}}let l=n>0?a/n:0,u=n>0?i/n:-10,c=Math.max(0,Math.min(1,(u+8)/8));return{rating:r,probability:l,moveMatch:!1,logLikelihood:u,likelihoodProbability:c,averageMoveProb:l}}),k={predictedRating:S.reduce((t,r)=>r.likelihoodProbability>t.likelihoodProbability?r:t).rating,standardDeviation:150,sampleSize:d.length,ratingDistribution:S};return{drill:_,evaluationChart:o,accuracy:y,blunderCount:b.length,goodMoveCount:p.length+h.length,inaccuracyCount:m.length,mistakeCount:g.length,excellentMoveCount:h.length,feedback:w,moveAnalyses:s,ratingComparison:[],ratingPrediction:k,bestPlayerMoves:d.filter(t=>"excellent"===t.classification).slice(0,3),worstPlayerMoves:[...b,...g].slice(0,3),averageEvaluationLoss:v,openingKnowledge:Math.max(0,Math.min(100,y))}},[eg.currentNode]),e$=(0,s.useCallback)(async t=>{let r=t.analysis.maia;if(r&&f.YH.every(t=>r[t])||eo.current)return;let i=0;for(;"ready"!==es&&i<50&&!eo.current;)await x(100),i++;if("ready"===es&&en&&!eo.current)try{let r=Array(f.YH.length).fill(t.fen),{result:i}=await en.batchEvaluateMaia3(r,m,m),a={};f.YH.forEach((t,r)=>{a[t]=i[r]}),t.addMaiaAnalysis(a,ed)}catch(t){console.error("Failed to compute Maia analysis for drill node:",t)}},[ed,en,es]),eS=(0,s.useCallback)(async t=>{var r,i,a;let n=t.analysis.stockfish;if(n&&n.depth>=18||eo.current)return;let s=new l.d$(t.fen).moves({verbose:!0}).map(t=>"".concat(t.from).concat(t.to).concat(t.promotion||"")),o=new Set(s);if(0===s.length)return;let u=0;for(;!ea.isReady()&&u<50&&!eo.current;)await x(100),u++;if(!ea.isReady()||eo.current)return;let d=null==(i=t.analysis.maia)||null==(r=i[ed])?void 0:r.policy,c=[];if(d){let t=0;for(let[r,i]of Object.entries(d).filter(t=>{let[,r]=t;return Number.isFinite(r)&&r>0}).sort((t,r)=>{let[,i]=t,[,a]=r;return a-i}))if(o.has(r)&&(c.push(r),(t+=i)>=.95))break}let h=null==(a=t.mainChild)?void 0:a.move,f=h&&o.has(h)?[h]:[],p=ea.streamEvaluations(t.fen,s.length,18,{maiaCandidateMoves:c,forcedCandidateMoves:f,maiaPolicy:d});if(p)try{for await(let r of p){if(eo.current)break;t.addStockfishAnalysis(r,ed)}}catch(t){console.error("Failed to compute Stockfish analysis for drill node:",t)}},[ed,ea]),ek=(0,s.useRef)(Promise.resolve()),eC=(0,s.useRef)(new Set),eE=(0,s.useRef)(!1),eT=(0,s.useRef)(null),eI=(0,s.useRef)(e$),eA=(0,s.useRef)(eS);(0,s.useEffect)(()=>{eI.current=e$},[e$]),(0,s.useEffect)(()=>{eA.current=eS},[eS]),(0,s.useEffect)(()=>{if(!S||q)return;S.id!==eT.current&&(eE.current=!0,ea.stopEvaluation(),ek.current=Promise.resolve(),eC.current=new Set,eT.current=S.id,eE.current=!1);let t=em.getMainLine(),r=S.openingEndNode,i=r?Math.max(t.indexOf(r),0):0,a=t.slice(i),n=S.id;for(let t of a)eC.current.has(t.fen)||(eC.current.add(t.fen),ek.current=ek.current.then(async()=>{try{var r,i;if(eE.current||eT.current!==n)return;console.log("[bg] maia start:",t.san||t.move||"?"),await eI.current(t);let a=!!(t.analysis.maia&&f.YH.every(r=>{var i;return null==(i=t.analysis.maia)?void 0:i[r]}));if(console.log("[bg] maia done:",a,"| sf start"),eE.current||eT.current!==n)return;await eA.current(t),console.log("[bg] sf done, depth:",null!=(i=null==(r=t.analysis.stockfish)?void 0:r.depth)?i:0)}catch(t){console.error("[bg] error analyzing node:",t)}}))},[S,em,q,ea,eg.currentNode]);let eN=(0,s.useCallback)(()=>{eE.current=!0,ea.stopEvaluation()},[ea]),eO=(0,s.useCallback)(async t=>{eN(),await x(50);let r=t.tree.getMainLine(),i=t.openingEndNode||r[0],a=i?Math.max(r.indexOf(i),0):0,n=r.slice(a).filter(t=>{let r=t.analysis.maia,i=!r||f.YH.some(t=>!r[t]),a=t.analysis.stockfish,n=!a||a.depth<18;return i||n});if(0===n.length)return eu(t=>({...t,currentMoveIndex:0,totalMoves:0,currentMove:"",isAnalyzing:!1,isComplete:!0,isCancelled:!1})),!0;eo.current=!1,eu({...w(),totalMoves:n.length,isAnalyzing:!0});for(let t=0;t<n.length&&!eo.current;t++){let r=n[t],i=r.san||r.move||"Position ".concat(a+t+1);if(eu(r=>({...r,currentMoveIndex:t+1,currentMove:i})),await e$(r),eo.current)break;await eS(r)}let s=eo.current;return eu(t=>({...t,isAnalyzing:!1,isComplete:!s,isCancelled:s})),eo.current=!1,!s},[e$,eS,eu,eN]),eM=(0,s.useCallback)(()=>{eo.current=!0,ea.stopEvaluation(),eu(t=>({...t,isAnalyzing:!1,isCancelled:!0})),V(!1)}
2783,[V,ea]),eP=(0,s.useCallback)(t=>{I(r=>{let i=r.findIndex(r=>r.selection.id===t.selection.id&&r.finalNode.fen===t.finalNode.fen);if(-1===i)return[...r,t];let a=[...r];return a[i]={...a[i],...t},a})},[]),eR=(0,s.useCallback)((t,r)=>{if(r)return r;let i=v(t.tree.toChess());return i||(!J&&null!==t.selection.targetMoveNumber&&t.playerMoveCount>=t.selection.targetMoveNumber?"target_moves_reached":null)},[J]),ej=(0,s.useCallback)(async(t,r)=>{let i=eR(t,r),a=i?_(i,t):null;try{await (0,d.i)({opening_fen:t.selection.variation?t.selection.variation.fen:t.selection.opening.fen,side_played:t.selection.playerColor,opponent:t.selection.maiaVersion,num_moves:t.moves.length,moves_played_uci:t.moves})}catch(t){console.error("Failed to log opening drill:",t)}if(!await eO(t))return null;let n=await ex(t),s=a?[a,...n.feedback.filter(t=>t!==a)]:n.feedback,o={...n.drill,feedback:s},l={...n,drill:o,feedback:s};return eP(o),l},[eO,ex,eP,eR]),ez=(0,s.useCallback)(t=>{let r=t.selection.targetMoveNumber;Z(!0),ee(!1),V(!1),K(!1),H(null!==r?"Target reached (".concat(t.playerMoveCount,"/").concat(r," moves). Extend drill or end with feedback."):"Target reached. Extend drill or end with feedback.")},[]),eD=(0,s.useCallback)(async(t,r)=>{let i=t||S;if(!i)return;let a=eR(i,r),n=a?_(a,i):null;n&&H(n);try{Z(!1),V(!0);let t=await ej(i,r);if(!t)return;F(t),L(!0)}catch(t){console.error("Error completing drill analysis:",t),L(!0)}finally{V(!1)}},[ej,S,eR]),eB=(0,s.useCallback)((t,r)=>{let i=eR(t,r);i&&H(_(i,t)),V(!0),K(!1),setTimeout(()=>{eD(t,r)},1500)},[eD,eR]),eL=(0,s.useCallback)(async()=>{if(null==U?void 0:U.drill)eP(U.drill);else if(S){var t;let r=X?"target_moves_reached":null!=(t=eR(S))?t:void 0;if(r)try{V(!0),await ej(S,r)}catch(t){console.error("Error persisting completed drill:",t)}finally{V(!1)}}L(!1),F(null),Q(!1),E(!1),Z(!1),ee(!1),H(null),K(!1),eo.current=!1,eu(w()),k(null),ef()},[ef,ej,S,U,X,eP,eR]),eU=(0,s.useCallback)(()=>{let t=(null==S?void 0:S.openingEndNode)||(null==S?void 0:S.tree.getRoot());t&&eg.setCurrentNode(t),L(!1),E(!0),Q(!0),Z(!1),K(!1)},[S,eg]),eF=(0,s.useCallback)(()=>{S&&X&&(ee(!0),Z(!1),H(null),K(!0))},[S,X]),eq=(0,s.useCallback)(async()=>{if(S)try{var t;V(!0);let r=X?"target_moves_reached":null!=(t=eR(S))?t:void 0;if(r){let t=await ej(S,r);if(!t)return;F(t)}else{if(!await eO(S))return;let t=await ex(S);F(t)}L(!0)}catch(t){console.error("Error analyzing current drill performance:",t)}finally{V(!1)}},[ej,S,eO,ex,X,eR]),eV=(0,s.useCallback)(()=>{if(U)return void L(!0);eq()},[U,eq]),eW=(0,s.useCallback)(t=>{let r=(t=>{let r=new c.lr(t.fen);return r.root=t,r})((t=>{let r=t;for(;r.parent;)r=r.parent;return r})(t.finalNode)),i=t.finalNode.getPath(),n=Math.max(0,i.length-t.allMoves.length-1),s=i[n]||r.getRoot(),o={id:t.selection.id,selection:t.selection,moves:t.allMoves,tree:r,currentFen:t.finalNode.fen,toPlay:"w"===new l.d$(t.finalNode.fen).turn()?"white":"black",openingEndNode:s,playerMoveCount:t.totalMoves};et.current=o,er.current=t.finalNode,ei.current=t.selection.id,a(t.selection),k(o),E(!0),Q(!0),Z(!1),ee(!1),L(!1),F(null),K(!1),H(null)},[]),eH=(0,s.useCallback)(()=>{O.current={},eE.current=!0,ek.current=Promise.resolve(),eC.current=new Set,eT.current=null,ea.stopEvaluation(),I([]),j(!1),D(-1),N(0),a(null),k(null),E(!1),Q(!1),Z(!1),ee(!1),L(!1),F(null),H(null),K(!1),eo.current=!1,eu(w()),P.current.length&&(a(eh(P.current[0])),D(0),N(1))},[eh,ea]),eG=(0,s.useCallback)(async(t,r)=>{if(S&&eg.currentNode&&eb&&!ey&&!q)try{let n=r||eg.currentNode,s=new l.d$(n.fen),o=s.move(t,{sloppy:!0});if(!o)return;let u=null,d=n.children.find(r=>r.move===t);if(d)u=d;else{var a;u=(null==(a=n.mainChild)?void 0:a.move)===t?n.mainChild:n.mainChild?n.addChild(s.fen(),t,o.san,!1,ed):n.addChild(s.fen(),t,o.san,!0,ed)}if(u){eg.setCurrentNode(u);let t=S.playerMoveCount+1,r=em.getMainLine(),a=S.openingEndNode?S.openingEndNode.getPath().length:1,n=r.slice(a),s={...S,moves:n.map(t=>t.move).filter(Boolean),currentFen:u.fen,playerMoveCount:t};if(k(s),console.log("After player move - game tree state:",{mainLineLength:em.getMainLine().length,updatedGameMovesLength:s.moves.length,currentNodeFen:u.fen,playerMoveCount:t}),!Y){let t=v(em.toChess());t?eB(s,t):!J&&i&&null!==i.targetMoveNumber&&s.playerMoveCount>=i.targetMoveNumber?ez(s):(console.log("Setting waitingForMaiaResponse to true after player move"),K(!0))}}}catch(t){console.error("Error making player move:",t)}},[S,eg.currentNode,em,eb,i,eB,Y,J,ey,q,ez,eg]),eK=(0,s.useCallback)(async t=>{if(S&&i)try{var a;let t=em.getLastMainlineNode(),n=(null==(a=S.openingEndNode)?void 0:a.fen)||S.tree.getRoot().fen,s=new l.d$(t.fen),o=new Set(s.moves({verbose:!0}).map(t=>"".concat(t.from).concat(t.to).concat(t.promotion||""))),d=null;if(S.moves.length<6)try{let r=await (0,u.q3)(t.fen),a=null==r?void 0:r[i.maiaVersion];if(console.log(g,{source:"opening-book",fen:t.fen,drillStartFen:n,maiaVersion:i.maiaVersion,moveCount:S.moves.length,moves:S.moves,distribution:a||null}),a&&Object.keys(a).length>0){let r=Object.entries(a).reduce((t,r)=>{let[i,a]=r;return o.has(i)&&"number"==typeof a&&(t[i]=a),t},{});d=b(r),console.log(g,{source:"opening-book-sampled",fen:t.fen,maiaVersion:i.maiaVersion,sampledMove:d,filteredDistribution:r})}}catch(t){console.warn(g,"Failed to fetch opening book moves for drill:",t)}if(!d&&S.moves.length<6){let r=await ew(t.fen,i.maiaVersion),a=r?Object.entries(r).reduce((t,r)=>{let[i,a]=r;return o.has(i)&&"number"==typeof a&&a>0&&(t[i]=a),t},{}):null;console.log(g,{source:"maia-policy",fen:t.fen,drillStartFen:n,maiaVersion:i.maiaVersion,moveCount:S.moves.length,moves:S.moves,distribution:a}),a&&Object.keys(a).length>0&&(d=b(a),console.log(g,{source:"maia-policy-sampled",fen:t.fen,maiaVersion:i.maiaVersion,sampledMove:d}))}if(!d){let r=await (0,u.OK)(S.moves,i.maiaVersion,n,null,0,0);console.log(g,{source:"fetch-game-move-fallback",fen:t.fen,drillStartFen:n,maiaVersion:i.maiaVersion,moveCount:S.moves.length,moves:S.moves,response:r}),d=r.top_move}if(d&&d.length>=4){let i=null,a=new l.d$(t.fen),n=t.children.find(t=>t.move===d);if(n)i=n;else{let r=a.move(d,{sloppy:!0});r&&(i=t.addChild(a.fen(),d,r.san,!0))}if(i){eg.setCurrentNode(i);let a=new l.d$(t.fen).move(d,{sloppy:!0}),n=(null==a?void 0:a.captured)!==void 0;r(n);let s=em.getMainLine(),o=S.openingEndNode?S.openingEndNode.getPath().length:1,u=s.slice(o),c={...S,moves:u.map(t=>
2783t.move).filter(Boolean),currentFen:i.fen,playerMoveCount:S.playerMoveCount};if(k(c),K(!1),console.log("After Maia move - game tree state:",{mainLineLength:em.getMainLine().length,updatedGameMovesLength:c.moves.length,currentNodeFen:i.fen}),!Y){let t=v(em.toChess());t&&eB(c,t)}}}}catch(t){console.error("Error making Maia move:",t)}},[S,em,i,Y,eB,r,eg]),eY=(0,s.useCallback)(()=>{!S||Y||q||B||(K(!1),eD(S,"manual_end"))},[eD,Y,S,q,B]),eQ=(0,s.useRef)(eK);(0,s.useEffect)(()=>{eQ.current=eK}),(0,s.useEffect)(()=>{if(console.log("Maia response useEffect triggered:",{currentDrillGame:!!S,currentNode:!!eg.currentNode,isPlayerTurn:eb,waitingForMaiaResponse:G,isDrillComplete:ey,continueAnalyzingMode:Y}),S&&G&&!ey&&!Y){let t=em.getLastMainlineNode(),r=new l.d$(t.fen),a=(null==i?void 0:i.playerColor)==="white"?"w":"b";if(r.turn()!==a){console.log("Scheduling Maia move at tip in 1500ms");let r=setTimeout(()=>{console.log("Executing Maia move at tip"),eQ.current(t)},1500);return()=>clearTimeout(r)}}},[S,G,ey,Y,em,i]),(0,s.useEffect)(()=>{if(S&&eg.currentNode&&!eb&&0===S.moves.length&&S.openingEndNode&&eg.currentNode===S.openingEndNode&&!ey&&!Y){K(!0);let t=setTimeout(()=>{let t=em.getLastMainlineNode();eQ.current(t)},1e3);return()=>clearTimeout(t)}},[S,eg.currentNode,eb,ey,Y,em]);let eX=(0,s.useCallback)(()=>{if(!i)return;let t="rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1",r=new c.lr(t),a=$(i.variation?i.variation.pgn:i.opening.pgn,r);k({id:i.id,selection:i,moves:[],tree:r,currentFen:(null==a?void 0:a.fen)||t,toPlay:a?"w"===new l.d$(a.fen).turn()?"white":"black":"white",openingEndNode:a,playerMoveCount:0}),E(!1),H(null),K(!1),Q(!1),Z(!1),ee(!1)},[i]);return{currentDrill:i,currentDrillGame:S,currentDrillNumber:A,selectionPool:t.selections,completedDrills:T,hasCompletedInitialCycle:R,isPlayerTurn:eb,isDrillComplete:ey,isAtOpeningEnd:ev,isAwaitingExtensionDecision:X,isCurrentDrillExtended:J,drillEndReasonMessage:W,gameTree:em,currentNode:eg.currentNode,setCurrentNode:eg.setCurrentNode,goToNode:eg.goToNode,goToNextNode:eg.goToNextNode,goToPreviousNode:eg.goToPreviousNode,goToRootNode:eg.goToRootNode,plyCount:eg.plyCount,orientation:eg.orientation,setOrientation:eg.setOrientation,availableMoves:e_,makePlayerMove:eG,resetCurrentDrill:eX,completeDrill:eD,moveToNextDrill:eL,continueAnalyzing:eU,extendCurrentDrill:eF,endCurrentDrillWithFeedback:eY,analysisEnabled:C,setAnalysisEnabled:E,continueAnalyzingMode:Y,drillAnalysisProgress:el,cancelDrillAnalysis:eM,showPerformanceModal:B,currentPerformanceData:U,isAnalyzingDrill:q,resetDrillSession:eH,showCurrentPerformance:eV,loadCompletedDrill:eW}};i(76129),i(2703),i(36101),i(36072),i(99207);let k=()=>{let[t,r]=(0,s.useState)({width:0,height:0});return(0,s.useEffect)(()=>{function t(){var t,i;r({width:null==(t=window)?void 0:t.innerWidth,height:null==(i=window)?void 0:i.innerHeight})}return t(),window.addEventListener("resize",t),()=>window.removeEventListener("resize",t)},[!0]),t}},76123:(t,r,i)=>{"use strict";i.d(r,{d:()=>l,j:()=>o});var a=i(37876),n=i(14232),s=i(11391);let o=(0,n.createContext)(void 0),l=t=>{let{children:r}=t,{settings:i}=(0,s.t)(),l=(0,n.useRef)(null),u=(0,n.useRef)(null),d=(0,n.useRef)(new Map),c=(0,n.useRef)(null),h=(0,n.useRef)(0),f=(0,n.useRef)(!1),[p,m]=(0,n.use
2783State)(!1);(0,n.useEffect)(()=>{if(f.current)return;f.current=!0;let t=!1;return(async()=>{try{let r=window.AudioContext||window.webkitAudioContext;if(!r){console.warn("Web Audio API not supported; sounds disabled"),m(!1);return}let i=new r,a=i.createGain();a.connect(i.destination),l.current=i,u.current=a;let n=async t=>{try{let r=await fetch(t),a=await r.arrayBuffer();return await i.decodeAudioData(a)}catch(r){return console.warn("Failed to load sound:",t,r),null}},[s,o]=await Promise.all([n("/assets/sound/move.mp3"),n("/assets/sound/capture.mp3")]);s&&d.current.set("move",s),o&&d.current.set("capture",o),t||m(d.current.size>0)}catch(r){console.warn("Failed to initialize sound:",r),t||m(!1)}})(),()=>{t=!0;let r=u.current,i=l.current;try{r&&r.disconnect()}catch(t){}u.current=null;try{i&&i.close()}catch(t){}l.current=null,d.current.clear(),m(!1),f.current=!1}},[]);let g=(0,n.useCallback)(function(){let t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(!i.soundEnabled)return;let r=l.current,a=u.current;if(!r||!a)return;"running"!==r.state&&r.resume();let n=t?"capture":"move",s=d.current.get(n);if(!s)return;let o=1e3*r.currentTime;if(c.current!==n||!(o-h.current<30)){c.current=n,h.current=o;try{let t=r.createBufferSource();t.buffer=s,t.connect(a),t.start(0)}catch(t){console.warn("Failed to play sound:",n,t)}}},[i.soundEnabled]),b=(0,n.useMemo)(()=>({playMoveSound:g,ready:p}),[g,p]);return(0,a.jsx)(o.Provider,{value:b,children:r})}},76129:(t,r,i)=>{"use strict";i.d(r,{c:()=>a.c});var a=i(47240)},77328:(t,r,i)=>{t.exports=i(29269)},77801:(t,r,i)=>{"use strict";i.d(r,{po:()=>s,tn:()=>l,yT:()=>o});var a=i(30904),n=i(21419);let s=t=>1-Math.sin(Math.acos(t)),o=(0,n.G)(s),l=(0,a.V)(s)},78637:(t,r)=>{"use strict";function i(t){let{widthInt:r,heightInt:i,blurWidth:a,blurHeight:n,blurDataURL:s,objectFit:o}=t,l=a?40*a:r,u=n?40*n:i,d=l&&u?"viewBox='0 0 "+l+" "+u+"'":"";return"%3Csvg xmlns='http://www.w3.org/2000/svg' "+d+"%3E%3Cfilter id='b' color-interpolation-filters='sRGB'%3E%3CfeGaussianBlur stdDeviation='20'/%3E%3CfeColorMatrix values='1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 100 -1' result='s'/%3E%3CfeFlood x='0' y='0' width='100%25' height='100%25'/%3E%3CfeComposite operator='out' in='s'/%3E%3CfeComposite in2='SourceGraphic'/%3E%3CfeGaussianBlur stdDeviation='20'/%3E%3C/filter%3E%3Cimage width='100%25' height='100%25' x='0' y='0' preserveAspectRatio='"+(d?"none":"contain"===o?"xMidYMid":"cover"===o?"xMidYMid slice":"none")+"' style='filter: url(%23b);' href='"+s+"'/%3E%3C/svg%3E"}Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"getImageBlurSvg",{enumerable:!0,get:function(){return i}})},79706:(t,r,i)=>{"use strict";var a=i(3717);function n(){}function s(){}
2783s.resetWarningCache=n,t.exports=function(){function t(t,r,i,n,s,o){if(o!==a){var l=Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw l.name="Invariant Violation",l}}function r(){return t}t.isRequired=t;var i={array:t,bigint:t,bool:t,func:t,number:t,object:t,string:t,symbol:t,any:t,arrayOf:r,element:t,elementType:t,instanceOf:r,node:t,objectOf:r,oneOf:r,oneOfType:r,shape:r,exact:r,checkPropTypes:s,resetWarningCache:n};return i.PropTypes=i,i}},81461:(t,r,i)=>{"use strict";i.d(r,{Gt:()=>n,PP:()=>l,WG:()=>s,uv:()=>o});var a=i(90620);let{schedule:n,cancel:s,state:o,steps:l}=(0,i(53746).I)("undefined"!=typeof requestAnimationFrame?requestAnimationFrame:a.l,!0)},82981:(t,r,i)=>{"use strict";i.d(r,{S:()=>a});let a=t=>!!(t&&t.getVelocity)},83885:(t,r,i)=>{"use strict";i.d(r,{xQ:()=>s});var a=i(14232),n=i(3866);function s(t=!0){let r=(0,a.useContext)(n.t);if(null===r)return[!0,null];let{isPresent:i,onExitComplete:o,register:l}=r,u=(0,a.useId)();(0,a.useEffect)(()=>{t&&l(u)},[t]);let d=(0,a.useCallback)(()=>t&&o&&o(u),[u,o,t]);return!i&&o?[!1,d]:[!0]}},84547:(t,r,i)=>{"use strict";i.d(r,{C:()=>p,Mi:()=>c,fD:()=>f,jm:()=>y,l2:()=>m,mn:()=>h,p7:()=>g,pG:()=>u,s4:()=>o,sd:()=>d,tY:()=>l,xD:()=>b});var a=i(88831),n=i(42034),s=i(32711);let o=async()=>{let t=await fetch((0,n.c)("analysis/list"));return await t.json()},l=async function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"play",r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,i=arguments.length>2?arguments[2]:void 0,a=(0,n.c)("analysis/user/list/".concat(t,"/").concat(r)),s=new URLSearchParams;i&&s.append("lichess_id",i);let o=s.toString()?"".concat(a,"?").concat(s.toString()):a,l=await fetch(o);return await l.json()},u=async(t,r)=>{fetch("https://lichess.org/api/games/user/".concat(t,"?max=100&pgnInJson=true"),{headers:{Accept:"application/x-ndjson"}}).then((0,a.g2)(r))},d=async t=>(await fetch("https://lichess.org/game/export/".concat(t),{headers:{Accept:"application/x-chess-pgn"}})).text(),c=async function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:["FkgYSri1"],r=await fetch((0,n.c)("analysis/analysis_list/".concat(t.join("/")))),i=await r.json(),s=i.id,o={...i.termination,condition:"Normal"},l=i.black_player,u=i.white_player,d={},c=i.stockfish_evals,h=[];for(let t of i.maia_versions)d[t]=i.maia_evals[t];for(let t of i.move_maps){let r={};for(let i of t){let t=i.move.join(""),a=i.move_san,{check:n,fen:s}=i;r[t]={board:s,check:n,san:a,lastMove:i.move}}h.push(r)}let f=i.game_states,p=(0,a.$u)(f),m=(0,a.Oq)(p,p[0].board);return(0,a.J0)(m,p,c),{id:s,blackPlayer:l,whitePlayer:u,availableMoves:h,gameType:"blitz",termination:o,tree:m}},h=async(t,r)=>{let i=await fetch((0,n.c)("analysis/analyze_user_game"),{method:"POST",body:r,headers:{"Content-Type":"text/plain"}}),s=await i.json(),o={...s.termination,condition:"Normal"},l=s.black_player,u=s.white_player,d={},c=[];for(let t of s.maia_versions)d[t]=s.maia_evals[t];for(let t of s.move_maps){let r={};for(let i of t){let t=i.move.join(""),a=i.move_san,{check:n,fen:s}=i;r[t]={board:s,check:n,san:a,lastMove:i.move}}c.push(r)}let h=s.game_states,f=(0,a.$u)(h);return{id:t,blackPlayer:l,whitePlayer:u,availableMoves:c,gameType:"blitz",termination:o,tree:(0,a.Oq)(f,f[0].board)}},f=async(t,r)=>{let i=await fetch((0,n.c)("analysis/user/analyze_user_maia_game/".concat(t,"?")+new URLSearchParams({game_type:r})),{method:"GET",headers:{"Content-Type":"text/plain"}}),o=await i.json(),l={...o.termination,condition:"Normal"},u=o.black_player,d=o.white_player,c=/maia_kdd_\d{3,4}/;u.name&&c.test(u.name)&&(u.name=u.name.replace("maia_kdd_","Maia ")),d.name&&c.test(d.name)&&(d.name=d.name.replace("maia_kdd_","Maia "));let h={},f=[];for(let t of o.maia_versions)h[t]=o.maia_evals[t];for(let t of o.move_maps){let r={};for(let i of t){let t=i.move.join(""),a=i.move_san,{check:n,fen:s}=i;r[t]={board:s,check:n,san:a,lastMove:i.move}}f.push(r)}let p=o.game_states,m=(0,a.$u)(p),g=(0,a.Oq)(m,m.length?m[0].board:new s.d$().fen());return{id:t,type:r,blackPlayer:u,whitePlayer:d,moves:m,availableMoves:f,gameType:"blitz",termination:l,tree:g}},p=async(t,r)=>{(await fetch((0,n.c)("analysis/store_engine_analysis/".concat(t)),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(r)})).ok||console.error("Failed to cache engine analysis")},m=async t=>{let r=await fetch((0,n.c)("analysis/get_engine_analysis/".concat(t)));return 404===r.status?null:(r.ok||console.error("Failed to retrieve engine analysis"),await r.json())},g=async(t,r,i)=>{(await fetch((0,n.c)("analysis/update_metadata/".concat(t,"/").concat(r)),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(i)})).ok||console.error("Failed to update game metadata")},b=async t=>{let r=await fetch((0,n.c)("analysis/store_custom_game"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)}),i=await r.text();if(!r.ok)throw console.error("Failed to store custom game: ".concat(i)),Error("Failed to store custom game (".concat(r.status," ").concat(r.statusText,")").concat(i?": ".concat(i):""));return JSON.parse(i)},y=async t=>{let r=await fetch((0,n.c)("analysis/delete_custom_game/".concat(t)),{method:"DELETE"});r.ok||console.error("Failed to delete custom game: ".concat(await r.text()))}},84659:(t,r,i)=>{"use strict";
2783t.exports=i.p+"static/media/ort-wasm-simd-threaded.jsep.0d2d5542.wasm"},85888:(t,r,i)=>{"use strict";i.d(r,{g:()=>u,h:()=>d});var a=i(37876),n=i(89099),s=i(94598),o=i(14232),l=i(32872);let u=o.createContext({analysisTournamentList:null,analysisLichessList:[],analysisPlayList:[],analysisHandList:[],analysisBrainList:[],analysisCustomList:[]}),d=t=>{let{children:r}=t,i=(0,n.useRouter)(),{user:d}=(0,o.useContext)(s.cy),[c,h]=(0,o.useState)(null),[f,p]=(0,o.useState)([]),[m,g]=(0,o.useState)([]),[b,y]=(0,o.useState)([]),[v,_]=(0,o.useState)([]),[w,x]=(0,o.useState)([]);return(0,o.useEffect)(()=>{!async function(){let t;try{t=await (0,l.s4)()}catch(t){i.push("/401");return}h(new Map(Object.entries(t)))}()},[i]),(0,o.useEffect)(()=>{(null==d?void 0:d.lichessId)&&(0,l.pG)(null==d?void 0:d.lichessId,t=>{var r,i;let a=t.pgn.match(/\[Result\s+"(.+?)"\]/)[1]||"?",n={id:t.id,type:"lichess",label:"".concat((null==(r=t.players.white.user)?void 0:r.id)||"Unknown"," vs. ").concat((null==(i=t.players.black.user)?void 0:i.id)||"Unknown"),result:a,pgn:t.pgn};p(t=>[...t,n])})},[null==d?void 0:d.lichessId]),(0,o.useEffect)(()=>{if(null==d?void 0:d.lichessId){let t=(0,l.tY)("play",1),r=(0,l.tY)("hand",1);Promise.all([t,r,(0,l.tY)("brain",1),(0,l.tY)("custom",1)]).then(t=>{let[r,i,a,n]=t,s=(t,r)=>{let i=t.maia_name.replace("_kdd_"," "),a=i.charAt(0).toUpperCase()+i.slice(1);return{id:t.game_id,label:"white"===t.player_color?"You vs. ".concat(a):"".concat(a," vs. You"),result:t.result,type:r}};g(r.games.map(t=>s(t,"play"))),y(i.games.map(t=>s(t,"hand"))),_(a.games.map(t=>s(t,"brain"))),x(n.games.map(t=>s(t,"custom")))})}},[null==d?void 0:d.lichessId]),(0,a.jsx)(u.Provider,{value:{analysisTournamentList:c,analysisLichessList:f,analysisPlayList:m,analysisHandList:b,analysisBrainList:v,analysisCustomList:w},children:r})}},86493:(t,r,i)=>{"use strict";i.d(r,{EI:()=>u,FN:()=>d,FW:()=>s,Gg:()=>o,Nb:()=>l,Sx:()=>n});var a=i(37876);let n=()=>(0,a.jsx)("img",{src:"/assets/icons/brain_icon.svg",alt:"Brain Icon"}),s=()=>(0,a.jsx)("img",{src:"/assets/icons/turing_icon.svg",alt:"Bot-or-Not Icon"}),o=()=>(0,a.jsx)("img",{src:"/assets/icons/star_icon.svg",alt:"Star Icon"}),l=(0,a.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",height:"1em",viewBox:"0 0 496 512",children:(0,a.jsx)("path",{d:"M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"})}),u=(0,a.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 127.14 96.36",children:(0,a.jsx)("path",{d:"M107.7,8.07A105.15,105.15,0,0,0,81.47,0a72.06,72.06,0,0,0-3.36,6.83A97.68,97.68,0,0,0,49,6.83,72.37,72.37,0,0,0,45.64,0,105.89,105.89,0,0,0,19.39,8.09C2.79,32.65-1.71,56.6.54,80.21h0A105.73,105.73,0,0,0,32.71,96.36,77.7,77.7,0,0,0,39.6,85.25a68.42,68.42,0,0,1-10.85-5.18c.91-.66,1.8-1.34,2.66-2a75.57,75.57,0,0,0,64.32,0c.87.71,1.76,1.39,2.66,2a68.68,68.68,0,0,1-10.87,5.19,77,77,0,0,0,6.89,11.1A105.25,105.25,0,0,0,126.6,80.22h0C129.24,52.84,122.09,29.11,107.7,8.07ZM42.45,65.69C36.18,65.69,31,60,31,53s5-12.74,11.43-12.74S54,46,53.89,53,48.84,65.69,42.45,65.69Zm42.24,0C78.41,65.69,73.25,60,73.25,53s5-12.74,11.44-12.74S96.23,46,96.12,53,91.08,65.69,84.69,65.69Z"})}),d=(0,a.jsx)("svg",{fill:"white",xmlns:"http://www.w3.org/2000/svg",viewBox:"1 1 22 22",width:"14px",height:"14px",children:(0,a.jsx)("path",{d:"M 7.1601562 3 L 8.7617188 5 L 18 5 C 18.551 5 19 5.448 19 6 L 19 15 L 16 15 L 20 20 L 24 15 L 21 15 L 21 6 C 21 4.346 19.654 3 18 3 L 7.1601562 3 z M 4 4 L 0 9 L 3 9 L 3 18 C 3 19.654 4.346 21 6 21 L 16.839844 21 L 15.238281 19 L 6 19 C 5.449 19 5 18.552 5 18 L 5 9 L 8 9 L 4 4 z"})})},86581:(t,r,i)=>{"use strict";
2783Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"LoadableContext",{enumerable:!0,get:function(){return a}});let a=i(64252)._(i(14232)).default.createContext(null)},87003:(t,r,i)=>{"use strict";i.d(r,{A:()=>rn,M:()=>ra});var a=i(37876),n=i(14232);function s(t){return r=>typeof r===t}var o=s("function"),l=t=>"RegExp"===Object.prototype.toString.call(t).slice(8,-1),u=t=>!d(t)&&null!==t&&(o(t)||"object"==typeof t),d=s("undefined");function c(t,r){if(t===r)return!0;if(t&&u(t)&&r&&u(r)){if(t.constructor!==r.constructor)return!1;if(Array.isArray(t)&&Array.isArray(r)){let{length:i}=t;if(i!==r.length)return!1;for(let a=i;0!=a--;)if(!c(t[a],r[a]))return!1;return!0}if(t instanceof Map&&r instanceof Map){if(t.size!==r.size)return!1;for(let i of t.entries())if(!r.has(i[0]))return!1;for(let i of t.entries())if(!c(i[1],r.get(i[0])))return!1;return!0}if(t instanceof Set&&r instanceof Set){if(t.size!==r.size)return!1;for(let i of t.entries())if(!r.has(i[0]))return!1;return!0}if(ArrayBuffer.isView(t)&&ArrayBuffer.isView(r)){if(t.byteLength!==r.byteLength)return!1;let i=new DataView(t.buffer),a=new DataView(r.buffer),n=t.byteLength;for(;n--;)if(i.getUint8(n)!==a.getUint8(n))return!1;return!0}if(l(t)&&l(r))return t.source===r.source&&t.flags===r.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===r.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===r.toString();let i=Object.keys(t),a=Object.keys(r);if(i.length!==a.length)return!1;for(let t=i.length;0!=t--;)if(!Object.prototype.hasOwnProperty.call(r,i[t]))return!1;for(let a=i.length;0!=a--;){let n=i[a];if(("_owner"!==n||!t.$$typeof)&&!c(t[n],r[n]))return!1}return!0}return!!(Number.isNaN(t)&&Number.isNaN(r))||t===r}var h=["Array","ArrayBuffer","AsyncFunction","AsyncGenerator","AsyncGeneratorFunction","Date","Error","Function","Generator","GeneratorFunction","HTMLElement","Map","Object","Promise","RegExp","Set","WeakMap","WeakSet"],f=["bigint","boolean","null","number","string","symbol","undefined"];function p(t){var r;let i=Object.prototype.toString.call(t).slice(8,-1);return/HTML\w+Element/.test(i)?"HTMLElement":(r=i,h.includes(r))?i:void 0}function m(t){return r=>p(r)===t}function g(t){return r=>typeof r===t}var b=["innerHTML","ownerDocument","style","attributes","nodeValue"];function y(t){if(null===t)return"null";switch(typeof t){case"bigint":return"bigint";case"boolean":return"boolean";case"number":return"number";case"string":return"string";case"symbol":return"symbol";case"undefined":return"undefined"}if(y.array(t))return"Array";if(y.plainFunction(t))return"Function";let r=p(t);return r||"Object"}function v(t,r,i){let{actual:a,key:n,previous:s,type:o}=i,l=E(t,n),u=E(r,n),d=[l,u].every(y.number)&&("increased"===o?l<u:l>u);return y.undefined(a)||(d=d&&u===a),y.undefined(s)||(d=d&&l===s),d}function _(t,r,i){var a;let{key:n,type:s,value:o}=i,l=E(t,n),u=E(r,n),d="added"===s?l:u,h="added"===s?u:l;if(!y.nullOrUndefined(o)){if(!y.defined(d))return c(h,o);if(y.array(d)||y.plainObject(d))return!!C(d,h)&&([d,h].every(y.array)?!d.some($(o))&&h.some($(o)):[d,h].every(y.plainObject)?!Object.entries(d).some(x(o))&&Object.entries(h).some(x(o)):h===o);return!1}return[l,u].every(y.array)?!h.every(k(d)):[l,u].every(y.plainObject)?(a=Object.keys(d),Object.keys(h).some(t=>!a.includes(t))):![l,u].every(t=>y.primitive(t)&&y.defined(t))&&("added"===s?!y.defined(l)&&y.defined(u):y.defined(l)&&!y.defined(u))}function w(t,r,{key:i}={}){let a=E(t,i),n=E(r,i);if(!C(a,n))throw TypeError("Inputs have different types");if(!function(...t){return t.every(t=>y.string(t)||y.array(t)||y.plainObject(t))}(a,n))throw TypeError("Inputs don't have length");return[a,n].every(y.plainObject)&&(a=Object.keys(a),n=Object.keys(n)),[a,n]}function x(t){return([r,i])=>y.array(t)?c(t,i)||t.some(t=>c(t,i)||y.array(i)&&k(i)(t)):y.plainObject(t)&&t[r]?!!t[r]&&c(t[r],i):c(t,i)}function $(t){return r=>y.array(t)?t.some(t=>c(t,r)||y.array(r)&&k(r)(t)):c(t,r)}function S(t,r){return y.array(t)?t.some(t=>c(t,r)):c(t,r)}function k(t){return r=>t.some(t=>c(t,r))}function C(...t){return t.every(y.array)||t.every(y.number)||t.every(y.plainObject)||t.every(y.string)}function E(t,r){if(y.plainObject(t)||y.array(t)){if(y.string(r))return r.split(".").reduce((t,r)=>t&&t[r],t);if(y.number(r))return t[r]}return t}function T(t,r){if([t,r].some(y.nullOrUndefined))throw Error("Missing required parameters");if(![t,r].every(t=>y.plainObject(t)||y.array(t)))throw Error("Expected plain objects or array");return{added:(i,a)=>{try{return _(t,r,{key:i,type:"added",value:a})}catch{return!1}},changed:(i,a,n)=>{try{let s=E(t,i),o=E(r,i),l=y.defined(a),u=y.defined(n);if(l||u){let t=u?S(n,s):!S(a,s),r=S(a,o);return t&&r}if([s,o].every(y.array)||[s,o].every(y.plainObject))return!c(s,o);return s!==o}catch{return!1}},changedFrom:(i,a,n)=>{if(!y.defined(i))return!1;try{let s=E(t,i),o=E(r,i),l=y.defined(n);return S(a,s)&&(l?S(n,o):!l)}catch{return!1}},decreased:(i,a,n)=>{if(!y.defined(i))return!1;try{return v(t,r,{key:i,actual:a,previous:n,type:"decreased"})}catch{return!1}},emptied:i=>{try{let[a,n]=w(t,r,{key:i});return!!a.length&&!n.length}catch{return!1}},filled:i=>{try{let[a,n]=w(t,r,{key:i});return!a.length&&!!n.length}catch{return!1}},increased:(i,a,n)=>{if(!y.defined(i))return!1;try{return v(t,r,{key:i,actual:a,previous:n,type:"increased"})}catch{return!1}},removed:(i,a)=>{try{return _(t,r,{key:i,type:"removed",value:a})}catch{return!1}}}}y.array=Array.isArray,y.arrayOf=(t,r)=>(!!y.array(t)||!!y.function(r))&&t.every(t=>r(t)),y.asyncGeneratorFunction=t=>"AsyncGeneratorFunction"===p(t),y.asyncFunction=m("AsyncFunction"),y.bigint=g("bigint"),y.boolean=t=>!0===t||!1===t,y.date=m("Date"),y.defined=t=>!y.undefined(t),y.domElement=t=>
2783y.object(t)&&!y.plainObject(t)&&1===t.nodeType&&y.string(t.nodeName)&&b.every(r=>r in t),y.empty=t=>y.string(t)&&0===t.length||y.array(t)&&0===t.length||y.object(t)&&!y.map(t)&&!y.set(t)&&0===Object.keys(t).length||y.set(t)&&0===t.size||y.map(t)&&0===t.size,y.error=m("Error"),y.function=g("function"),y.generator=t=>y.iterable(t)&&y.function(t.next)&&y.function(t.throw),y.generatorFunction=m("GeneratorFunction"),y.instanceOf=(t,r)=>!!t&&!!r&&Object.getPrototypeOf(t)===r.prototype,y.iterable=t=>!y.nullOrUndefined(t)&&y.function(t[Symbol.iterator]),y.map=m("Map"),y.nan=t=>Number.isNaN(t),y.null=t=>null===t,y.nullOrUndefined=t=>y.null(t)||y.undefined(t),y.number=t=>g("number")(t)&&!y.nan(t),y.numericString=t=>y.string(t)&&t.length>0&&!Number.isNaN(Number(t)),y.object=t=>!y.nullOrUndefined(t)&&(y.function(t)||"object"==typeof t),y.oneOf=(t,r)=>!!y.array(t)&&t.indexOf(r)>-1,y.plainFunction=m("Function"),y.plainObject=t=>{if("Object"!==p(t))return!1;let r=Object.getPrototypeOf(t);return null===r||r===Object.getPrototypeOf({})},y.primitive=t=>{var r;return y.null(t)||(r=typeof t,f.includes(r))},y.promise=m("Promise"),y.propertyOf=(t,r,i)=>{if(!y.object(t)||!r)return!1;let a=t[r];return y.function(i)?i(a):y.defined(a)},y.regexp=m("RegExp"),y.set=m("Set"),y.string=g("string"),y.symbol=g("symbol"),y.undefined=g("undefined"),y.weakMap=m("WeakMap"),y.weakSet=m("WeakSet");var I=i(45534),A=i(58323),N=i(98477),O=i(52266),M=i(94410),P=i.n(M),R=i(95062),j=i.n(R),z="undefined"!=typeof window&&"undefined"!=typeof document&&"undefined"!=typeof navigator,D=function(){for(var t=["Edge","Trident","Firefox"],r=0;r<t.length;r+=1)if(z&&navigator.userAgent.indexOf(t[r])>=0)return 1;return 0}(),B=z&&window.Promise?function(t){var r=!1;return function(){r||(r=!0,window.Promise.resolve().then(function(){r=!1,t()}))}}:function(t){var r=!1;return function(){r||(r=!0,setTimeout(function(){r=!1,t()},D))}};function L(t){return t&&"[object Function]"===({}).toString.call(t)}function U(t,r){if(1!==t.nodeType)return[];var i=t.ownerDocument.defaultView.getComputedStyle(t,null);return r?i[r]:i}function F(t){return"HTML"===t.nodeName?t:t.parentNode||t.host}function q(t){if(!t)return document.body;switch(t.nodeName){case"HTML":case"BODY":return t.ownerDocument.body;case"#document":return t.body}var r=U(t),i=r.overflow,a=r.overflowX,n=r.overflowY;return/(auto|scroll|overlay)/.test(i+n+a)?t:q(F(t))}function V(t){return t&&t.referenceNode?t.referenceNode:t}var W=z&&!!(window.MSInputMethodContext&&document.documentMode),H=z&&/MSIE 10/.test(navigator.userAgent);function G(t){return 11===t?W:10===t?H:W||H}function K(t){if(!t)return document.documentElement;for(var r=G(10)?document.body:null,i=t.offsetParent||null;i===r&&t.nextElementSibling;)i=(t=t.nextElementSibling).offsetParent;var a=i&&i.nodeName;return a&&"BODY"!==a&&"HTML"!==a?-1!==["TH","TD","TABLE"].indexOf(i.nodeName)&&"static"===U(i,"position")?K(i):i:t?t.ownerDocument.documentElement:document.documentElement}function Y(t){return null!==t.parentNode?Y(t.parentNode):t}function Q(t,r){if(!t||!t.nodeType||!r||!r.nodeType)return document.documentElement;var i,a=t.compareDocumentPosition(r)&Node.DOCUMENT_POSITION_FOLLOWING,n=a?t:r,s=a?r:t,o=document.createRange();o.setStart(n,0),o.setEnd(s,0);var l=o.commonAncestorContainer;if(t!==l&&r!==l||n.contains(s))return"BODY"!==(i=l.nodeName)&&("HTML"===i||K(l.firstElementChild)===l)?l:K(l);var u=Y(t);return u.host?Q(u.host,r):Q(t,Y(r).host)}function X(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"top",i="top"===r?"scrollTop":"scrollLeft",a=t.nodeName;if("BODY"===a||"HTML"===a){var n=t.ownerDocument.documentElement;return(t.ownerDocument.scrollingElement||n)[i]}return t[i]}function Z(t,r){var i="x"===r?"Left":"Top";return parseFloat(t["border"+i+"Width"])+parseFloat(t["border"+("Left"===i?"Right":"Bottom")+"Width"])}function J(t,r,i,a){return Math.max(r["offset"+t],r["scroll"+t],i["client"+t],i["offset"+t],i["scroll"+t],G(10)?parseInt(i["offset"+t])+parseInt(a["margin"+("Height"===t?"Top":"Left")])+parseInt(a["margin"+("Height"===t?"Bottom":"Right")]):0)}function ee(t){var r=t.body,i=t.documentElement,a=G(10)&&getComputedStyle(i);return{height:J("Height",r,i,a),width:J("Width",r,i,a)}}var et=function(t,r){if(!(t instanceof r))throw TypeError("Cannot call a class as a function")},er=function(){function t(t,r){for(var i=0;i<r.length;i++){var a=r[i];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(t,a.key,a)}}
vendor: 4,232 bytes, line 2783
2783return function(r,i,a){return i&&t(r.prototype,i),a&&t(r,a),r}}(),ei=function(t,r,i){return r in t?Object.defineProperty(t,r,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[r]=i,t},ea=Object.assign||function(t){for(var r=1;r<arguments.length;r++){var i=arguments[r];for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(t[a]=i[a])}return t};function en(t){return ea({},t,{right:t.left+t.width,bottom:t.top+t.height})}function es(t){var r={};try{if(G(10)){r=t.getBoundingClientRect();var i=X(t,"top"),a=X(t,"left");r.top+=i,r.left+=a,r.bottom+=i,r.right+=a}else r=t.getBoundingClientRect()}catch(t){}var n={left:r.left,top:r.top,width:r.right-r.left,height:r.bottom-r.top},s="HTML"===t.nodeName?ee(t.ownerDocument):{},o=s.width||t.clientWidth||n.width,l=s.height||t.clientHeight||n.height,u=t.offsetWidth-o,d=t.offsetHeight-l;if(u||d){var c=U(t);u-=Z(c,"x"),d-=Z(c,"y"),n.width-=u,n.height-=d}return en(n)}function eo(t,r){var i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],a=G(10),n="HTML"===r.nodeName,s=es(t),o=es(r),l=q(t),u=U(r),d=parseFloat(u.borderTopWidth),c=parseFloat(u.borderLeftWidth);i&&n&&(o.top=Math.max(o.top,0),o.left=Math.max(o.left,0));var h=en({top:s.top-o.top-d,left:s.left-o.left-c,width:s.width,height:s.height});if(h.marginTop=0,h.marginLeft=0,!a&&n){var f=parseFloat(u.marginTop),p=parseFloat(u.marginLeft);h.top-=d-f,h.bottom-=d-f,h.left-=c-p,h.right-=c-p,h.marginTop=f,h.marginLeft=p}return(a&&!i?r.contains(l):r===l&&"BODY"!==l.nodeName)&&(h=function(t,r){var i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],a=X(r,"top"),n=X(r,"left"),s=i?-1:1;return t.top+=a*s,t.bottom+=a*s,t.left+=n*s,t.right+=n*s,t}(h,r)),h}function el(t){if(!t||!t.parentElement||G())return document.documentElement;for(var r=t.parentElement;r&&"none"===U(r,"transform");)r=r.parentElement;return r||document.documentElement}function eu(t,r,i,a){var n=arguments.length>4&&void 0!==arguments[4]&&arguments[4],s={top:0,left:0},o=n?el(t):Q(t,V(r));if("viewport"===a)s=function(t){var r=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=t.ownerDocument.documentElement,a=eo(t,i),n=Math.max(i.clientWidth,window.innerWidth||0),s=Math.max(i.clientHeight,window.innerHeight||0),o=r?0:X(i),l=r?0:X(i,"left");return en({top:o-a.top+a.marginTop,left:l-a.left+a.marginLeft,width:n,height:s})}(o,n);else{var l=void 0;"scrollParent"===a?"BODY"===(l=q(F(r))).nodeName&&(l=t.ownerDocument.documentElement):l="window"===a?t.ownerDocument.documentElement:a;var u=eo(l,o,n);if("HTML"===l.nodeName&&!function t(r){var i=r.nodeName;if("BODY"===i||"HTML"===i)return!1;if("fixed"===U(r,"position"))return!0;var a=F(r);return!!a&&t(a)}(o)){var d=ee(t.ownerDocument),c=d.height,h=d.width;s.top+=u.top-u.marginTop,s.bottom=c+u.top,s.left+=u.left-u.marginLeft,s.right=h+u.left}else s=u}var f="number"==typeof(i=i||0);return s.left+=f?i:i.left||0,s.top+=f?i:i.top||0,s.right-=f?i:i.right||0,s.bottom-=f?i:i.bottom||0,s}function ed(t,r,i,a,n){var s=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0;if(-1===t.indexOf("auto"))return t;var o=eu(i,a,s,n),l={top:{width:o.width,height:r.top-o.top},right:{width:o.right-r.right,height:o.height},bottom:{width:o.width,height:o.bottom-r.bottom},left:{width:r.left-o.left,height:o.height}},u=Object.keys(l).map(function(t){var r;return ea({key:t},l[t],{area:(r=l[t]).width*r.height})}).sort(function(t,r){return r.area-t.area}),d=u.filter(function(t){var r=t.width,a=t.height;return r>=i.clientWidth&&a>=i.clientHeight}),c=d.length>0?d[0].key:u[0].key,h=t.split("-")[1];return c+(h?"-"+h:"")}function ec(t,r,i){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,n=a?el(r):Q(r,V(i));return eo(i,n,a)}function eh(t){var r=t.ownerDocument.defaultView.getComputedStyle(t),i=parseFloat(r.marginTop||0)+parseFloat(r.marginBottom||0),a=parseFloat(r.marginLeft||0)+parseFloat(r.marginRight||0);return{width:t.offsetWidth+a,height:t.offsetHeight+i}}function ef(t){var r={left:"right",right:"left",bottom:"top",top:"bottom"};return t.replace(/left|right|bottom|top/g,function(t){return r[t]})}function ep(t,r,i){i=i.split("-")[0];var a=eh(t),n={width:a.width,height:a.height},s=-1!==["right","left"].indexOf(i),o=s?"top":"left",l=s?"left":"top",u=s?"height":"width";
2783return n[o]=r[o]+r[u]/2-a[u]/2,i===l?n[l]=r[l]-a[s?"width":"height"]:n[l]=r[ef(l)],n}function em(t,r){return Array.prototype.find?t.find(r):t.filter(r)[0]}function eg(t,r,i){return(void 0===i?t:t.slice(0,function(t,r,i){if(Array.prototype.findIndex)return t.findIndex(function(t){return t[r]===i});var a=em(t,function(t){return t[r]===i});return t.indexOf(a)}(t,"name",i))).forEach(function(t){t.function&&console.warn("`modifier.function` is deprecated, use `modifier.fn`!");var i=t.function||t.fn;t.enabled&&L(i)&&(r.offsets.popper=en(r.offsets.popper),r.offsets.reference=en(r.offsets.reference),r=i(r,t))}),r}function eb(){if(!this.state.isDestroyed){var t={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};t.offsets.reference=ec(this.state,this.popper,this.reference,this.options.positionFixed),t.placement=ed(this.options.placement,t.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),t.originalPlacement=t.placement,t.positionFixed=this.options.positionFixed,t.offsets.popper=ep(this.popper,t.offsets.reference,t.placement),t.offsets.popper.position=this.options.positionFixed?"fixed":"absolute",t=eg(this.modifiers,t),this.state.isCreated?this.options.onUpdate(t):(this.state.isCreated=!0,this.options.onCreate(t))}}function ey(t,r){return t.some(function(t){var i=t.name;return t.enabled&&i===r})}function ev(t){for(var r=[!1,"ms","Webkit","Moz","O"],i=t.charAt(0).toUpperCase()+t.slice(1),a=0;a<r.length;a++){var n=r[a],s=n?""+n+i:t;if(void 0!==document.body.style[s])return s}return null}function e_(){return this.state.isDestroyed=!0,ey(this.modifiers,"applyStyle")&&(this.popper.removeAttribute("x-placement"),this.popper.style.position="",this.popper.style.top="",this.popper.style.left="",this.popper.style.right="",this.popper.style.bottom="",this.popper.style.willChange="",this.popper.style[ev("transform")]=""),this.disableEventListeners(),this.options.removeOnDestroy&&this.popper.parentNode.removeChild(this.popper),this}function ew(t){var r=t.ownerDocument;return r?r.defaultView:window}function ex(){var t,r,i;this.state.eventsEnabled||(this.state=(t=this.reference,this.options,(r=this.state).updateBound=this.scheduleUpdate,ew(t).addEventListener("resize",r.updateBound,{passive:!0}),!function t(r,i,a,n){var s="BODY"===r.nodeName,o=s?r.ownerDocument.defaultView:r;o.addEventListener(i,a,{passive:!0}),s||t(q(o.parentNode),i,a,n),n.push(o)}(i=q(t),"scroll",r.updateBound,r.scrollParents),r.scrollElement=i,r.eventsEnabled=!0,r))}function e$(){if(this.state.eventsEnabled){var t,r;cancelAnimationFrame(this.scheduleUpdate),this.state=(t=this.reference,r=this.state,ew(t).removeEventListener("resize",r.updateBound),r.scrollParents.forEach(function(t){t.removeEventListener("scroll",r.updateBound)}),r.updateBound=null,r.scrollParents=[],r.scrollElement=null,r.eventsEnabled=!1,r)}}function eS(t){return""!==t&&!isNaN(parseFloat(t))&&isFinite(t)}function ek(t,r){Object.keys(r).forEach(function(i){var a="";-1!==["width","height","top","right","bottom","left"].indexOf(i)&&eS(r[i])&&(a="px"),t.style[i]=r[i]+a})}var eC=z&&/Firefox/i.test(navigator.userAgent);function eE(t,r,i){var a=em(t,function(t){return t.name===r}),n=!!a&&t.some(function(t){return t.name===i&&t.enabled&&t.order<a.order});if(!n){var s="`"+r+"`";console.warn("`"+i+"` modifier is required by "+s+" modifier in order to work, be sure to include it before "+s+"!")}return n}var eT=["auto-start","auto","auto-end","top-start","top","top-end","right-start","right","right-end","bottom-end","bottom","bottom-start","left-end","left","left-start"],eI=eT.slice(3);function eA(t){var r=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=eI.indexOf(t),a=eI.slice(i+1).concat(eI.slice(0,i));return r?a.reverse():a}var eN={FLIP:"flip",CLOCKWISE:"clockwise",COUNTERCLOCKWISE:"counterclockwise"},eO=function(){function t(r,i){var a=this,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};et(this,t),this.scheduleUpdate=function(){return requestAnimationFrame(a.update)},this.update=B(this.update.bind(this)),this.options=ea({},t.Defaults,n),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=r&&r.jquery?r[0]:r,this.popper=i&&i.jquery?i[0]:i,this.options.modifiers={},Object.keys(ea({}
2783,t.Defaults.modifiers,n.modifiers)).forEach(function(r){a.options.modifiers[r]=ea({},t.Defaults.modifiers[r]||{},n.modifiers?n.modifiers[r]:{})}),this.modifiers=Object.keys(this.options.modifiers).map(function(t){return ea({name:t},a.options.modifiers[t])}).sort(function(t,r){return t.order-r.order}),this.modifiers.forEach(function(t){t.enabled&&L(t.onLoad)&&t.onLoad(a.reference,a.popper,a.options,t,a.state)}),this.update();var s=this.options.eventsEnabled;s&&this.enableEventListeners(),this.state.eventsEnabled=s}return er(t,[{key:"update",value:function(){return eb.call(this)}},{key:"destroy",value:function(){return e_.call(this)}},{key:"enableEventListeners",value:function(){return ex.call(this)}},{key:"disableEventListeners",value:function(){return e$.call(this)}}]),t}();eO.Utils=("undefined"!=typeof window?window:i.g).PopperUtils,eO.placements=eT,eO.Defaults={placement:"bottom",positionFixed:!1,eventsEnabled:!0,removeOnDestroy:!1,onCreate:function(){},onUpdate:function(){},modifiers:{shift:{order:100,enabled:!0,fn:function(t){var r=t.placement,i=r.split("-")[0],a=r.split("-")[1];if(a){var n=t.offsets,s=n.reference,o=n.popper,l=-1!==["bottom","top"].indexOf(i),u=l?"left":"top",d=l?"width":"height",c={start:ei({},u,s[u]),end:ei({},u,s[u]+s[d]-o[d])};t.offsets.popper=ea({},o,c[a])}return t}},offset:{order:200,enabled:!0,fn:function(t,r){var i,a,n,s,o,l=r.offset,u=t.placement,d=t.offsets,c=d.popper,h=d.reference,f=u.split("-")[0],p=void 0;return eS(+l)?p=[+l,0]:(i=[0,0],a=-1!==["right","left"].indexOf(f),s=(n=l.split(/(\+|\-)/).map(function(t){return t.trim()})).indexOf(em(n,function(t){return -1!==t.search(/,|\s/)})),n[s]&&-1===n[s].indexOf(",")&&console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead."),o=/\s*,\s*|\s+/,(-1!==s?[n.slice(0,s).concat([n[s].split(o)[0]]),[n[s].split(o)[1]].concat(n.slice(s+1))]:[n]).map(function(t,r){var i=(1===r?!a:a)?"height":"width",n=!1;return t.reduce(function(t,r){return""===t[t.length-1]&&-1!==["+","-"].indexOf(r)?(t[t.length-1]=r,n=!0,t):n?(t[t.length-1]+=r,n=!1,t):t.concat(r)},[]).map(function(t){return function(t,r,i,a){var n=t.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),s=+n[1],o=n[2];if(!s)return t;if(0===o.indexOf("%"))return en("%p"===o?i:a)[r]/100*s;if("vh"!==o&&"vw"!==o)return s;return("vh"===o?Math.max(document.documentElement.clientHeight,window.innerHeight||0):Math.max(document.documentElement.clientWidth,window.innerWidth||0))/100*s}(t,i,c,h)})}).forEach(function(t,r){t.forEach(function(a,n){eS(a)&&(i[r]+=a*("-"===t[n-1]?-1:1))})}),p=i),"left"===f?(c.top+=p[0],c.left-=p[1]):"right"===f?(c.top+=p[0],c.left+=p[1]):"top"===f?(c.left+=p[0],c.top-=p[1]):"bottom"===f&&(c.left+=p[0],c.top+=p[1]),t.popper=c,t},offset:0},preventOverflow:{order:300,enabled:!0,fn:function(t,r){var i=r.boundariesElement||K(t.instance.popper);t.instance.reference===i&&(i=K(i));var a=ev("transform"),n=t.instance.popper.style,s=n.top,o=n.left,l=n[a];n.top="",n.left="",n[a]="";var u=eu(t.instance.popper,t.instance.reference,r.padding,i,t.positionFixed);n.top=s,n.left=o,n[a]=l,r.boundaries=u;var d=r.priority,c=t.offsets.popper,h={primary:function(t){var i=c[t];return c[t]<u[t]&&!r.escapeWithReference&&(i=Math.max(c[t],u[t])),ei({},t,i)},secondary:function(t){var i="right"===t?"left":"top",a=c[i];return c[t]>u[t]&&!r.escapeWithReference&&(a=Math.min(c[i],u[t]-("right"===t?c.width:c.height))),ei({},i,a)}};return d.forEach(function(t){var r=-1!==["left","top"].indexOf(t)?"primary":"secondary";c=ea({},c,h[r](t))}),t.offsets.popper=c,t},priority:["left","right","top","bottom"],padding:5,boundariesElement:"scrollParent"},keepTogether:{order:400,enabled:!0,fn:function(t){var r=t.offsets,i=r.popper,a=r.reference,n=t.placement.split("-")[0],s=Math.floor,o=-1!==["top","bottom"].indexOf(n),l=o?"right":"bottom",u=o?"left":"top";return i[l]<s(a[u])&&(t.offsets.popper[u]=s(a[u])-i[o?"width":"height"]),i[u]>s(a[l])&&(t.offsets.popper[u]=s(a[l])),t}},arrow:{order:500,enabled:!0,fn:function(t,r){if(!eE(t.instance.modifiers,"arrow","keepTogether"))return t;var i,a=r.element;if("string"==typeof a){if(!(a=t.instance.popper.querySelector(a)))return t}else if(!t.instance.popper.contains(a))return console.warn("WARNING: `arrow.element` must be child of its popper element!"),t;var n=t.placement.split("-")[0],s=t.offsets,o=s.popper,l=s.reference,u=-1!==["left","right"].indexOf(n),d=u?"height":"width",c=u?"Top":"Left",h=c.toLowerCase(),f=u?"bottom":"right",p=eh(a)[d];
2783l[f]-p<o[h]&&(t.offsets.popper[h]-=o[h]-(l[f]-p)),l[h]+p>o[f]&&(t.offsets.popper[h]+=l[h]+p-o[f]),t.offsets.popper=en(t.offsets.popper);var m=l[h]+l[d]/2-p/2,g=U(t.instance.popper),b=parseFloat(g["margin"+c]),y=parseFloat(g["border"+c+"Width"]),v=m-t.offsets.popper[h]-b-y;return v=Math.max(Math.min(o[d]-p,v),0),t.arrowElement=a,t.offsets.arrow=(ei(i={},h,Math.round(v)),ei(i,u?"left":"top",""),i),t},element:"[x-arrow]"},flip:{order:600,enabled:!0,fn:function(t,r){if(ey(t.instance.modifiers,"inner")||t.flipped&&t.placement===t.originalPlacement)return t;var i=eu(t.instance.popper,t.instance.reference,r.padding,r.boundariesElement,t.positionFixed),a=t.placement.split("-")[0],n=ef(a),s=t.placement.split("-")[1]||"",o=[];switch(r.behavior){case eN.FLIP:o=[a,n];break;case eN.CLOCKWISE:o=eA(a);break;case eN.COUNTERCLOCKWISE:o=eA(a,!0);break;default:o=r.behavior}return o.forEach(function(l,u){if(a!==l||o.length===u+1)return t;n=ef(a=t.placement.split("-")[0]);var d,c=t.offsets.popper,h=t.offsets.reference,f=Math.floor,p="left"===a&&f(c.right)>f(h.left)||"right"===a&&f(c.left)<f(h.right)||"top"===a&&f(c.bottom)>f(h.top)||"bottom"===a&&f(c.top)<f(h.bottom),m=f(c.left)<f(i.left),g=f(c.right)>f(i.right),b=f(c.top)<f(i.top),y=f(c.bottom)>f(i.bottom),v="left"===a&&m||"right"===a&&g||"top"===a&&b||"bottom"===a&&y,_=-1!==["top","bottom"].indexOf(a),w=!!r.flipVariations&&(_&&"start"===s&&m||_&&"end"===s&&g||!_&&"start"===s&&b||!_&&"end"===s&&y),x=!!r.flipVariationsByContent&&(_&&"start"===s&&g||_&&"end"===s&&m||!_&&"start"===s&&y||!_&&"end"===s&&b),$=w||x;(p||v||$)&&(t.flipped=!0,(p||v)&&(a=o[u+1]),$&&(s="end"===(d=s)?"start":"start"===d?"end":d),t.placement=a+(s?"-"+s:""),t.offsets.popper=ea({},t.offsets.popper,ep(t.instance.popper,t.offsets.reference,t.placement)),t=eg(t.instance.modifiers,t,"flip"))}),t},behavior:"flip",padding:5,boundariesElement:"viewport",flipVariations:!1,flipVariationsByContent:!1},inner:{order:700,enabled:!1,fn:function(t){var r=t.placement,i=r.split("-")[0],a=t.offsets,n=a.popper,s=a.reference,o=-1!==["left","right"].indexOf(i),l=-1===["top","left"].indexOf(i);return n[o?"left":"top"]=s[i]-(l?n[o?"width":"height"]:0),t.placement=ef(r),t.offsets.popper=en(n),t}},hide:{order:800,enabled:!0,fn:function(t){if(!eE(t.instance.modifiers,"hide","preventOverflow"))return t;var r=t.offsets.reference,i=em(t.instance.modifiers,function(t){return"preventOverflow"===t.name}).boundaries;if(r.bottom<i.top||r.left>i.right||r.top>i.bottom||r.right<i.left){if(!0===t.hide)return t;t.hide=!0,t.attributes["x-out-of-boundaries"]=""}else{if(!1===t.hide)return t;t.hide=!1,t.attributes["x-out-of-boundaries"]=!1}return t}},computeStyle:{order:850,enabled:!0,fn:function(t,r){var i,a,n,s,o,l,u,d,c,h,f,p,m,g=r.x,b=r.y,y=t.offsets.popper,v=em(t.instance.modifiers,function(t){return"applyStyle"===t.name}).gpuAcceleration;void 0!==v&&console.warn("WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!");var _=void 0!==v?v:r.gpuAcceleration,w=K(t.instance.popper),x=es(w),$={position:y.position},S=(i=window.devicePixelRatio<2||!eC,n=(a=t.offsets).popper,s=a.reference,o=Math.round,l=Math.floor,u=function(t){return t},d=o(s.width),c=o(n.width),h=-1!==["left","right"].indexOf(t.placement),f=-1!==t.placement.indexOf("-"),p=i?h||f||d%2==c%2?o:l:u,m=i?o:u,{left:p(d%2==1&&c%2==1&&!f&&i?n.left-1:n.left),top:m(n.top),bottom:m(n.bottom),right:p(n.right)}),k="bottom"===g?"top":"bottom",C="right"===b?"left":"right",E=ev("transform"),T=void 0,I=void 0;I="bottom"===k?"HTML"===w.nodeName?-w.clientHeight+S.bottom:-x.height+S.bottom:S.top,T="right"===C?"HTML"===w.nodeName?-w.clientWidth+S.right:-x.width+S.right:S.left,_&&E?($[E]="translate3d("+T+"px, "+I+"px, 0)",$[k]=0,$[C]=0,$.willChange="transform"):($[k]=I*("bottom"===k?-1:1),$[C]=T*("right"===C?-1:1),$.willChange=k+", "+C);var A={"x-placement":t.placement};return t.attributes=ea({},A,t.attributes),t.styles=ea({},$,t.styles),t.arrowStyles=ea({},t.offsets.arrow,t.arrowStyles),t},gpuAcceleration:!0,x:"bottom",y:"right"},applyStyle:{order:900,enabled:!0,fn:function(t){var r,i;return ek(t.instance.popper,t.styles),r=t.instance.popper,Object.keys(i=t.attributes).forEac
2783h(function(t){!1!==i[t]?r.setAttribute(t,i[t]):r.removeAttribute(t)}),t.arrowElement&&Object.keys(t.arrowStyles).length&&ek(t.arrowElement,t.arrowStyles),t},onLoad:function(t,r,i,a,n){var s=ec(n,r,t,i.positionFixed),o=ed(i.placement,s,r,t,i.modifiers.flip.boundariesElement,i.modifiers.flip.padding);return r.setAttribute("x-placement",o),ek(r,{position:i.positionFixed?"fixed":"absolute"}),i},gpuAcceleration:void 0}}};var eM=["innerHTML","ownerDocument","style","attributes","nodeValue"],eP=["Array","ArrayBuffer","AsyncFunction","AsyncGenerator","AsyncGeneratorFunction","Date","Error","Function","Generator","GeneratorFunction","HTMLElement","Map","Object","Promise","RegExp","Set","WeakMap","WeakSet"],eR=["bigint","boolean","null","number","string","symbol","undefined"];function ej(t){var r,i=Object.prototype.toString.call(t).slice(8,-1);return/HTML\w+Element/.test(i)?"HTMLElement":(r=i,eP.includes(r))?i:void 0}function ez(t){return function(r){return ej(r)===t}}function eD(t){return function(r){return typeof r===t}}function eB(t){if(null===t)return"null";switch(typeof t){case"bigint":return"bigint";case"boolean":return"boolean";case"number":return"number";case"string":return"string";case"symbol":return"symbol";case"undefined":return"undefined"}if(eB.array(t))return"Array";if(eB.plainFunction(t))return"Function";var r=ej(t);return r||"Object"}function eL(t){return function(r){return typeof r===t}}eB.array=Array.isArray,eB.arrayOf=function(t,r){return(!!eB.array(t)||!!eB.function(r))&&t.every(function(t){return r(t)})},eB.asyncGeneratorFunction=function(t){return"AsyncGeneratorFunction"===ej(t)},eB.asyncFunction=ez("AsyncFunction"),eB.bigint=eD("bigint"),eB.boolean=function(t){return!0===t||!1===t},eB.date=ez("Date"),eB.defined=function(t){return!eB.undefined(t)},eB.domElement=function(t){return eB.object(t)&&!eB.plainObject(t)&&1===t.nodeType&&eB.string(t.nodeName)&&eM.every(function(r){return r in t})},eB.empty=function(t){return eB.string(t)&&0===t.length||eB.array(t)&&0===t.length||eB.object(t)&&!eB.map(t)&&!eB.set(t)&&0===Object.keys(t).length||eB.set(t)&&0===t.size||eB.map(t)&&0===t.size},eB.error=ez("Error"),eB.function=eD("function"),eB.generator=function(t){return eB.iterable(t)&&eB.function(t.next)&&eB.function(t.throw)},eB.generatorFunction=ez("GeneratorFunction"),eB.instanceOf=function(t,r){return!!t&&!!r&&Object.getPrototypeOf(t)===r.prototype},eB.iterable=function(t){return!eB.nullOrUndefined(t)&&eB.function(t[Symbol.iterator])},eB.map=ez("Map"),eB.nan=function(t){return Number.isNaN(t)},eB.null=function(t){return null===t},eB.nullOrUndefined=function(t){return eB.null(t)||eB.undefined(t)},eB.number=function(t){return eD("number")(t)&&!eB.nan(t)},eB.numericString=function(t){return eB.string(t)&&t.length>0&&!Number.isNaN(Number(t))},eB.object=function(t){return!eB.nullOrUndefined(t)&&(eB.function(t)||"object"==typeof t)},eB.oneOf=function(t,r){return!!eB.array(t)&&t.indexOf(r)>-1},eB.plainFunction=ez("Function"),eB.plainObject=function(t){if("Object"!==ej(t))return!1;var r=Object.getPrototypeOf(t);return null===r||r===Object.getPrototypeOf({})},eB.primitive=function(t){var r;return eB.null(t)||(r=typeof t,eR.includes(r))},eB.promise=ez("Promise"),eB.propertyOf=function(t,r,i){if(!eB.object(t)||!r)return!1;var a=t[r];return eB.function(i)?i(a):eB.defined(a)},eB.regexp=ez("RegExp"),eB.set=ez("Set"),eB.string=eD("string"),eB.symbol=eD("symbol"),eB.undefined=eD("undefined"),eB.weakMap=ez("WeakMap"),eB.weakSet=ez("WeakSet");var eU=eL("function"),eF=function(t){return"RegExp"===Object.prototype.toString.call(t).slice(8,-1)},eq=function(t){return!eV(t)&&null!==t&&(eU(t)||"object"==typeof t)},eV=eL("undefined"),eW=function(t){var r="function"==typeof Symbol&&Symbol.iterator,i=r&&t[r],a=0;if(i)return i.call(t);if(t&&"number"==typeof t.length)return{next:function(){return t&&a>=t.length&&(t=void 0),{value:t&&t[a++],done:!t}}};throw TypeError(r?"Object is not iterable.":"Symbol.iterator is not defined.")};function eH(t,r){if(t===r)return!0;if(t&&eq(t)&&r&&eq(r)){if(t.constructor!==r.constructor)return!1;if(Array.isArray(t)&&Array.isArray(r)){var i=t.length;if(i!==r.length)return!1;for(var a=i;0!=a--;)if(!eH(t[a],r[a]))return!1;return!0}if(t instanceof Map&&r instanceof Map)return function(t,r){var i,a,n,s;if(t.size!==r.size)return!1;try{for(var o=eW(t.entries()),l=o.next();!l.done;l=o.next()){var u=l.value;if(!r.has(u[0]))return!1}}catch(t){i={error:t}}finally{try{l&&!l.done&&(a=o.return)&&a.call(o)}finally{if(i)throw i.error}}try{for(var d=eW(t.entries()),c=d.next();!c.done;c=d.next()){var u=c.value;if(!eH(u[1],r.get(u[0])))return!1}}catch(t){n={error:t}}finally{try{c&&!c.done&&(s=d.return)&&s.call(d)}finally{if(n)throw n.error}}return!0}(t,r);if(t instanceof Set&&r instanceof Set)return function(t,r){var i,a;if(t.size!==r.size)return!1;try{for(var n=eW(t.entries()),s=n.next();!s.done;s=n.next()){var o=s.value;if(!r.has(o[0]))return!1}}catch(t){i={error:t}}finally{try{s&&!s.done&&(a=n.return)&&a.call(n)}finally{if(i)throw i.error}}return!0}(t,r);if(ArrayBuffer.isView(t)&&ArrayBuffer.isView(r)){if(t.byteLength!==r.byteLength)return!1;for(var n=new DataView(t.buffer),s=new DataView(r.buffer),o=t.byteLength;o--;)if(n.getUint8(o)!==s.getUint8(o))return!1;return!0}if(eF(t)&&eF(r))return t.source===r.source&&t.flags===r.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===r.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===r.toString();var l=Object.keys(t),u=Object.keys(r);if(l.length!==u.length)return!1;for(var d=l.length;0!=d--;)if(!Object.prototype.hasOwnProperty.call(r,l[d]))return!1;for(var d=l.length;0!=d--;){var c=l[d];if(("_owner"!==c||!t.$$typeof)&&!eH(t[c],r[c]))return!1}return!0}return!!(Number.isNaN(t)&&Number.isNaN(r))||t===r}
2783function eG(t,r,i){var a=i.actual,n=i.key,s=i.previous,o=i.type,l=e0(t,n),u=e0(r,n),d=[l,u].every(eB.number)&&("increased"===o?l<u:l>u);return eB.undefined(a)||(d=d&&u===a),eB.undefined(s)||(d=d&&l===s),d}function eK(t,r,i){var a,n=i.key,s=i.type,o=i.value,l=e0(t,n),u=e0(r,n),d="added"===s?l:u,c="added"===s?u:l;if(!eB.nullOrUndefined(o))return eB.defined(d)?!!(eB.array(d)||eB.plainObject(d))&&!!e1(d,c)&&([d,c].every(eB.array)?!d.some(eX(o))&&c.some(eX(o)):[d,c].every(eB.plainObject)?!Object.entries(d).some(eQ(o))&&Object.entries(c).some(eQ(o)):c===o):eH(c,o);return[l,u].every(eB.array)?!c.every(eJ(d)):[l,u].every(eB.plainObject)?(a=Object.keys(d),Object.keys(c).some(function(t){return!a.includes(t)})):![l,u].every(function(t){return eB.primitive(t)&&eB.defined(t)})&&("added"===s?!eB.defined(l)&&eB.defined(u):eB.defined(l)&&!eB.defined(u))}function eY(t,r,i){var a=(void 0===i?{}:i).key,n=e0(t,a),s=e0(r,a);if(!e1(n,s))throw TypeError("Inputs have different types");if(!function(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];return t.every(function(t){return eB.string(t)||eB.array(t)||eB.plainObject(t)})}(n,s))throw TypeError("Inputs don't have length");return[n,s].every(eB.plainObject)&&(n=Object.keys(n),s=Object.keys(s)),[n,s]}function eQ(t){return function(r){var i=r[0],a=r[1];return eB.array(t)?eH(t,a)||t.some(function(t){return eH(t,a)||eB.array(a)&&eJ(a)(t)}):eB.plainObject(t)&&t[i]?!!t[i]&&eH(t[i],a):eH(t,a)}}function eX(t){return function(r){return eB.array(t)?t.some(function(t){return eH(t,r)||eB.array(r)&&eJ(r)(t)}):eH(t,r)}}function eZ(t,r){return eB.array(t)?t.some(function(t){return eH(t,r)}):eH(t,r)}function eJ(t){return function(r){return t.some(function(t){return eH(t,r)})}}function e1(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];return t.every(eB.array)||t.every(eB.number)||t.every(eB.plainObject)||t.every(eB.string)}function e0(t,r){if(eB.plainObject(t)||eB.array(t)){if(eB.string(r))return r.split(".").reduce(function(t,r){return t&&t[r]},t);if(eB.number(r))return t[r]}return t}function e2(t,r){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);r&&(a=a.filter(function(r){return Object.getOwnPropertyDescriptor(t,r).enumerable})),i.push.apply(i,a)}return i}function e3(t){for(var r=1;r<arguments.length;r++){var i=null!=arguments[r]?arguments[r]:{};r%2?e2(Object(i),!0).forEach(function(r){e6(t,r,i[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(i)):e2(Object(i)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(i,r))})}return t}function e4(t,r){if(!(t instanceof r))throw TypeError("Cannot call a class as a function")}function e8(t,r){for(var i=0;i<r.length;i++){var a=r[i];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(t,ta(a.key),a)}}function e7(t,r,i){return r&&e8(t.prototype,r),i&&e8(t,i),Object.defineProperty(t,"prototype",{writable:!1}),t}function e6(t,r,i){return(r=ta(r))in t?Object.defineProperty(t,r,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[r]=i,t}function e5(t,r){if("function"!=typeof r&&null!==r)throw TypeError("Super expression must either be null or a function");t.prototype=Object.create(r&&r.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),r&&te(t,r)}function e9(t){return(e9=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function te(t,r){return(te=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,r){return t.__proto__=r,t})(t,r)}function tt(t,r){if(null==t)return{};var i,a,n=function(t,r){if(null==t)return{};var i,a,n={},s=Object.keys(t);for(a=0;a<s.length;a++)i=s[a],r.indexOf(i)>=0||(n[i]=t[i]);return n}(t,r);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(t);for(a=0;a<s.length;a++)i=s[a],!(r.indexOf(i)>=0)&&Object.prototype.propertyIsEnumerable.call(t,i)&&(n[i]=t[i])}return n}function tr(t){if(void 0===t)throw ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function ti(t){var r=function(){if("undefined"==typeof Reflect||!Reflect.construct||Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(t){return!1}}();return function(){var i,a=e9(t);
2783i=r?Reflect.construct(a,arguments,e9(this).constructor):a.apply(this,arguments);if(i&&("object"==typeof i||"function"==typeof i))return i;if(void 0!==i)throw TypeError("Derived constructors may only return object or undefined");return tr(this)}}function ta(t){var r=function(t,r){if("object"!=typeof t||null===t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var a=i.call(t,r||"default");if("object"!=typeof a)return a;throw TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(t)}(t,"string");return"symbol"==typeof r?r:String(r)}var tn={flip:{padding:20},preventOverflow:{padding:10}};function ts(t,r,i){if("function"!=typeof t)throw TypeError("The typeValidator argument must be a function with the signature function(props, propName, componentName).");if(i&&"string"!=typeof i)throw TypeError("The error message is optional, but must be a string if provided.");return function(a,n,s){for(var o=arguments.length,l=Array(o>3?o-3:0),u=3;u<o;u++)l[u-3]=arguments[u];if("boolean"==typeof r?r:"function"==typeof r?r(a,n,s):!0==!!r&&!!r)return Object.hasOwnProperty.call(a,n)?t.apply(void 0,[a,n,s].concat(l)):i?Error(i):Error("Required ".concat(a[n]," `").concat(n,"` was not specified in `").concat(s,"`."));return t.apply(void 0,[a,n,s].concat(l))}}var to={INIT:"init",IDLE:"idle",OPENING:"opening",OPEN:"open",CLOSING:"closing"},tl=void 0!==N.createPortal;function tu(){return!!("undefined"!=typeof window&&window.document&&window.document.createElement)}function td(){return"ontouchstart"in window&&/Mobi/.test(navigator.userAgent)}function tc(t){var r=t.title,i=t.data,a=t.warn,n=t.debug,s=void 0!==a&&a?console.warn||console.error:console.log;void 0!==n&&n&&r&&i&&(console.groupCollapsed("%creact-floater: ".concat(r),"color: #9b00ff; font-weight: bold; font-size: 12px;"),Array.isArray(i)?i.forEach(function(t){eB.plainObject(t)&&t.key?s.apply(console,[t.key,t.value]):s.apply(console,[t])}):s.apply(console,[i]),console.groupEnd())}function th(){}var tf=function(t){e5(i,t);var r=ti(i);function i(){return e4(this,i),r.apply(this,arguments)}return e7(i,[{key:"componentDidMount",value:function(){tu()&&(this.node||this.appendNode(),tl||this.renderPortal())}},{key:"componentDidUpdate",value:function(){tu()&&(tl||this.renderPortal())}},{key:"componentWillUnmount",value:function(){tu()&&this.node&&(tl||N.unmountComponentAtNode(this.node),this.node&&this.node.parentNode===document.body&&(document.body.removeChild(this.node),this.node=void 0))}},{key:"appendNode",value:function(){var t=this.props,r=t.id,i=t.zIndex;this.node||(this.node=document.createElement("div"),r&&(this.node.id=r),i&&(this.node.style.zIndex=i),document.body.appendChild(this.node))}},{key:"renderPortal",value:function(){if(!tu())return null;var t=this.props,r=t.children,i=t.setRef;return(this.node||this.appendNode(),tl)?N.createPortal(r,this.node):(i(N.unstable_renderSubtreeIntoContainer(this,r.length>1?n.createElement("div",null,r):r[0],this.node)),null)}},{key:"renderReact16",value:function(){var t=this.props,r=t.hasChildren,i=t.placement,a=t.target;return r?this.renderPortal():a||"center"===i?this.renderPortal():null}},{key:"render",value:function(){return tl?this.renderReact16():null}}]),i}(n.Component);e6(tf,"propTypes",{children:j().oneOfType([j().element,j().array]),hasChildren:j().bool,id:j().oneOfType([j().string,j().number]),placement:j().string,setRef:j().func.isRequired,target:j().oneOfType([j().object,j().string]),zIndex:j().number});var tp=function(t){e5(i,t);var r=ti(i);function i(){return e4(this,i),r.apply(this,arguments)}return e7(i,[{key:"parentStyle",get:function(){var t=this.props,r=t.placement,i=t.styles.arrow.length,a={pointerEvents:"none",position:"absolute",width:"100%"};return r.startsWith("top")?(a.bottom=0,a.left=0,a.right=0,a.height=i):r.startsWith("bottom")?(a.left=0,a.right=0,a.top=0,a.height=i):r.startsWith("left")?(a.right=0,a.top=0,a.bottom=0):r.startsWith("right")&&(a.left=0,a.top=0),a}},{key:"render",value:function(){var t,r=this.props,i=r.placement,a=r.setArrowRef,s=r.styles.arrow,o=s.color,l=s.display,u=s.length,d=s.margin,c=s.position,h=s.spread,f={display:l,position:c},p=h,m=u;return i.startsWith("top")?(t="0,0 ".concat(p/2,",").concat(m," ").concat(p,",0"),f.bottom=0,f.marginLeft=d,f.marginRight=d):i.startsWith("bottom")?(t="".concat(p,",").concat(m," ").concat(p/2,",0 0,").concat(m),f.top=0,f.marginLeft=d,f.marginRight=d):i.startsWith("left")?(m=h,p=u,t="0,0 ".concat(p,",").concat(m/2," 0,").concat(m),f.right=0,f.marginTop=d,f.marginBottom=d):i.startsWith("right")&&(m=h,p=u,t="".concat(p,",").concat(m," ").concat(p,",0 0,").concat(m/2),f.left=0,f.marginTop=d,f.marginBottom=d),n.createElement("div",{className:"__floater__arrow",style:this.parentStyle},n.createElement("span",{ref:a,style:f},n.createElement("svg",{width:p,height:m,version:"1.1",xmlns:"http://www.w3.org/2000/svg"},n.createElement("polygon",{points:t,fill:o}))))}}]),i}(n.Component);
2783e6(tp,"propTypes",{placement:j().string.isRequired,setArrowRef:j().func.isRequired,styles:j().object.isRequired});var tm=["color","height","width"];function tg(t){var r=t.handleClick,i=t.styles,a=i.color,s=i.height,o=i.width,l=tt(i,tm);return n.createElement("button",{"aria-label":"close",onClick:r,style:l,type:"button"},n.createElement("svg",{width:"".concat(o,"px"),height:"".concat(s,"px"),viewBox:"0 0 18 18",version:"1.1",xmlns:"http://www.w3.org/2000/svg",preserveAspectRatio:"xMidYMid"},n.createElement("g",null,n.createElement("path",{d:"M8.13911129,9.00268191 L0.171521827,17.0258467 C-0.0498027049,17.248715 -0.0498027049,17.6098394 0.171521827,17.8327545 C0.28204354,17.9443526 0.427188206,17.9998706 0.572051765,17.9998706 C0.71714958,17.9998706 0.862013139,17.9443526 0.972581703,17.8327545 L9.0000937,9.74924618 L17.0276057,17.8327545 C17.1384085,17.9443526 17.2832721,17.9998706 17.4281356,17.9998706 C17.5729992,17.9998706 17.718097,17.9443526 17.8286656,17.8327545 C18.0499901,17.6098862 18.0499901,17.2487618 17.8286656,17.0258467 L9.86135722,9.00268191 L17.8340066,0.973848225 C18.0553311,0.750979934 18.0553311,0.389855532 17.8340066,0.16694039 C17.6126821,-0.0556467968 17.254037,-0.0556467968 17.0329467,0.16694039 L9.00042166,8.25611765 L0.967006424,0.167268345 C0.745681892,-0.0553188426 0.387317931,-0.0553188426 0.165993399,0.167268345 C-0.0553311331,0.390136635 -0.0553311331,0.751261038 0.165993399,0.974176179 L8.13920499,9.00268191 L8.13911129,9.00268191 Z",fill:a}))))}function tb(t){var r=t.content,i=t.footer,a=t.handleClick,s=t.open,o=t.positionWrapper,l=t.showCloseButton,u=t.title,d=t.styles,c={content:n.isValidElement(r)?r:n.createElement("div",{className:"__floater__content",style:d.content},r)};return u&&(c.title=n.isValidElement(u)?u:n.createElement("div",{className:"__floater__title",style:d.title},u)),i&&(c.footer=n.isValidElement(i)?i:n.createElement("div",{className:"__floater__footer",style:d.footer},i)),(l||o)&&!eB.boolean(s)&&(c.close=n.createElement(tg,{styles:d.close,handleClick:a})),n.createElement("div",{className:"__floater__container",style:d.container},c.close,c.title,c.content,c.footer)}tg.propTypes={handleClick:j().func.isRequired,styles:j().object.isRequired},tb.propTypes={content:j().node.isRequired,footer:j().node,handleClick:j().func.isRequired,open:j().bool,positionWrapper:j().bool.isRequired,showCloseButton:j().bool.isRequired,styles:j().object.isRequired,title:j().node};var ty=function(t){e5(i,t);var r=ti(i);function i(){return e4(this,i),r.apply(this,arguments)}return e7(i,[{key:"style",get:function(){var t=this.props,r=t.disableAnimation,i=t.component,a=t.placement,n=t.hideArrow,s=t.status,o=t.styles,l=o.arrow.length,u=o.floater,d=o.floaterCentered,c=o.floaterClosing,h=o.floaterOpening,f=o.floaterWithAnimation,p=o.floaterWithComponent,m={};return!n&&(a.startsWith("top")?m.padding="0 0 ".concat(l,"px"):a.startsWith("bottom")?m.padding="".concat(l,"px 0 0"):a.startsWith("left")?m.padding="0 ".concat(l,"px 0 0"):a.startsWith("right")&&(m.padding="0 0 0 ".concat(l,"px"))),-1!==[to.OPENING,to.OPEN].indexOf(s)&&(m=e3(e3({},m),h)),s===to.CLOSING&&(m=e3(e3({},m),c)),s!==to.OPEN||r||(m=e3(e3({},m),f)),"center"===a&&(m=e3(e3({},m),d)),i&&(m=e3(e3({},m),p)),e3(e3({},u),m)}},{key:"render",value:function(){var t=this.props,r=t.component,i=t.handleClick,a=t.hideArrow,s=t.setFloaterRef,o=t.status,l={},u=["__floater"];return r?n.isValidElement(r)?l.content=n.cloneElement(r,{closeFn:i}):l.content=r({closeFn:i}):l.content=n.createElement(tb,this.props),o===to.OPEN&&u.push("__floater__open"),a||(l.arrow=n.createElement(tp,this.props)),n.createElement("div",{ref:s,className:u.join(" "),style:this.style},n.createElement("div",{className:"__floater__body"},l.content,l.arrow))}}]),i}(n.Component);e6(ty,"propTypes",{component:j().oneOfType([j().func,j().element]),content:j().node,disableAnimation:j().bool.isRequired,footer:j().node,handleClick:j().func.isRequired,hideArrow:j().bool.isRequired,open:j().bool,placement:j().string.isRequired,positionWrapper:j().bool.isRequired,setArrowRef:j().func.isRequired,setFloaterRef:j().func.isRequired,showCloseButton:j().bool,status:j().string.isRequired,styles:j().object.isRequired,title:j().node});var tv=function(t){e5(i,t);var r=ti(i);function i(){return e4(this,i),r.apply(this,arguments)}return e7(i,[{key:"render",value:function(){var t,r=this.props,i=r.children,a=r.handleClick,s=r.handleMouseEnter,o=r.handleMouseLeave,l=r.setChildRef,u=r.setWrapperRef,d=r.style,c=r.styles;if(i)if(1===n.Children.count(i))if(n.isValidElement(i)){var h=eB.function(i.type)?"innerRef":"ref";t=n.cloneElement(n.Children.only(i),e6({},h,l))}else t=n.createElement("span",null,i);else t=i;return t?n.createElement("span",{ref:u,style:e3(e3({},c),d),onClick:a,onMouseEnter:s,onMouseLeave:o},t):null}}]),i}(n.Component);e6(tv,"propTypes",{children:j().node,handleClick:j().func.isRequired,handleMouseEnter:j().func.isRequired,handleMouseLeave:j().func.isRequired,setChildRef:j().func.isRequired,setWrapperRef:j().func.isRequired,style:j().object,styles:j().object.isRequired});var t_={zIndex:100},tw=["arrow","flip","offset"],tx=["position","top","right","bottom","left"],t$
2783=function(t){e5(i,t);var r=ti(i);function i(t){var a;return e4(this,i),e6(tr(a=r.call(this,t)),"setArrowRef",function(t){a.arrowRef=t}),e6(tr(a),"setChildRef",function(t){a.childRef=t}),e6(tr(a),"setFloaterRef",function(t){a.floaterRef=t}),e6(tr(a),"setWrapperRef",function(t){a.wrapperRef=t}),e6(tr(a),"handleTransitionEnd",function(){var t=a.state.status,r=a.props.callback;a.wrapperPopper&&a.wrapperPopper.instance.update(),a.setState({status:t===to.OPENING?to.OPEN:to.IDLE},function(){r(a.state.status===to.OPEN?"open":"close",a.props)})}),e6(tr(a),"handleClick",function(){var t=a.props,r=t.event,i=t.open;if(!eB.boolean(i)){var n=a.state,s=n.positionWrapper,o=n.status;("click"===a.event||"hover"===a.event&&s)&&(tc({title:"click",data:[{event:r,status:o===to.OPEN?"closing":"opening"}],debug:a.debug}),a.toggle())}}),e6(tr(a),"handleMouseEnter",function(){var t=a.props,r=t.event,i=t.open;if(!(eB.boolean(i)||td())){var n=a.state.status;"hover"===a.event&&n===to.IDLE&&(tc({title:"mouseEnter",data:[{key:"originalEvent",value:r}],debug:a.debug}),clearTimeout(a.eventDelayTimeout),a.toggle())}}),e6(tr(a),"handleMouseLeave",function(){var t=a.props,r=t.event,i=t.eventDelay,n=t.open;if(!(eB.boolean(n)||td())){var s=a.state,o=s.status,l=s.positionWrapper;"hover"===a.event&&(tc({title:"mouseLeave",data:[{key:"originalEvent",value:r}],debug:a.debug}),i?-1===[to.OPENING,to.OPEN].indexOf(o)||l||a.eventDelayTimeout||(a.eventDelayTimeout=setTimeout(function(){delete a.eventDelayTimeout,a.toggle()},1e3*i)):a.toggle(to.IDLE))}}),a.state={currentPlacement:t.placement,needsUpdate:!1,positionWrapper:t.wrapperOptions.position&&!!t.target,status:to.INIT,statusWrapper:to.INIT},a._isMounted=!1,a.hasMounted=!1,tu()&&window.addEventListener("load",function(){a.popper&&a.popper.instance.update(),a.wrapperPopper&&a.wrapperPopper.instance.update()}),a}return e7(i,[{key:"componentDidMount",value:function(){if(tu()){var t=this.state.positionWrapper,r=this.props,i=r.children,a=r.open,n=r.target;this._isMounted=!0,tc({title:"init",data:{hasChildren:!!i,hasTarget:!!n,isControlled:eB.boolean(a),positionWrapper:t,target:this.target,floater:this.floaterRef},debug:this.debug}),this.hasMounted||(this.initPopper(),this.hasMounted=!0),!i&&n&&eB.boolean(a)}}},{key:"componentDidUpdate",value:function(t,r){if(tu()){var i,a=this.props,n=a.autoOpen,s=a.open,o=a.target,l=a.wrapperOptions,u=function(t,r){if([t,r].some(eB.nullOrUndefined))throw Error("Missing required parameters");if(![t,r].every(function(t){return eB.plainObject(t)||eB.array(t)}))throw Error("Expected plain objects or array");var i=function(i,a,n){try{var s=e0(t,i),o=e0(r,i),l=eB.defined(a),u=eB.defined(n);if(l||u){var d=u?eZ(n,s):!eZ(a,s),c=eZ(a,o);return d&&c}if([s,o].every(eB.array)||[s,o].every(eB.plainObject))return!eH(s,o);return s!==o}catch(t){return!1}};return{added:function(i,a){try{return eK(t,r,{key:i,type:"added",value:a})}catch(t){return!1}}
2783,changed:i,changedFrom:function(i,a,n){if(!eB.defined(i))return!1;try{var s=e0(t,i),o=e0(r,i),l=eB.defined(n);return eZ(a,s)&&(l?eZ(n,o):!l)}catch(t){return!1}},changedTo:function(t,r){return!!eB.defined(t)&&i(t,r)},decreased:function(i,a,n){if(!eB.defined(i))return!1;try{return eG(t,r,{key:i,actual:a,previous:n,type:"decreased"})}catch(t){return!1}},emptied:function(i){try{var a=eY(t,r,{key:i}),n=a[0],s=a[1];return!!n.length&&!s.length}catch(t){return!1}},filled:function(i){try{var a=eY(t,r,{key:i}),n=a[0],s=a[1];return!n.length&&!!s.length}catch(t){return!1}},increased:function(i,a,n){if(!eB.defined(i))return!1;try{return eG(t,r,{key:i,actual:a,previous:n,type:"increased"})}catch(t){return!1}},removed:function(i,a){try{return eK(t,r,{key:i,type:"removed",value:a})}catch(t){return!1}}}}(r,this.state),d=u.changedFrom,c=u.changed;t.open!==s&&(eB.boolean(s)&&(i=s?to.OPENING:to.CLOSING),this.toggle(i)),(t.wrapperOptions.position!==l.position||t.target!==o)&&this.changeWrapperPosition(this.props),c("status",to.IDLE)&&s?this.toggle(to.OPEN):d("status",to.INIT,to.IDLE)&&n&&this.toggle(to.OPEN),this.popper&&c("status",to.OPENING)&&this.popper.instance.update(),this.floaterRef&&(c("status",to.OPENING)||c("status",to.CLOSING))&&function(t,r,i){var a,n=arguments.length>3&&void 0!==arguments[3]&&arguments[3];a=function(n){i(n),function(t,r,i){var a=arguments.length>3&&void 0!==arguments[3]&&arguments[3];t.removeEventListener(r,i,a)}(t,r,a)},function(t,r,i){var a=arguments.length>3&&void 0!==arguments[3]&&arguments[3];t.addEventListener(r,i,a)}(t,r,a,n)}(this.floaterRef,"transitionend",this.handleTransitionEnd),c("needsUpdate",!0)&&this.rebuildPopper()}}},{key:"componentWillUnmount",value:function(){tu()&&(this._isMounted=!1,this.popper&&this.popper.instance.destroy(),this.wrapperPopper&&this.wrapperPopper.instance.destroy())}},{key:"initPopper",value:function(){var t=this,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.target,i=this.state.positionWrapper,a=this.props,n=a.disableFlip,s=a.getPopper,o=a.hideArrow,l=a.offset,u=a.placement,d=a.wrapperOptions;if("center"===u)this.setState({status:to.IDLE});else if(r&&this.floaterRef){var c=this.options,h=c.arrow,f=c.flip,p=c.offset,m=tt(c,tw);new eO(r,this.floaterRef,{placement:u,modifiers:e3({arrow:e3({enabled:!o,element:this.arrowRef},h),flip:e3({enabled:!n,behavior:"top"===u||"bottom"===u?"flip":["right","bottom-end","top-end","left","top-start","bottom-start"]},f),offset:e3({offset:"0, ".concat(l,"px")},p)},m),onCreate:function(r){var i;if(t.popper=r,!(null!=(i=t.floaterRef)&&i.isConnected))return void t.setState({needsUpdate:!0});s(r,"floater"),t._isMounted&&t.setState({currentPlacement:r.placement,status:to.IDLE}),u!==r.placement&&setTimeout(function(){r.instance.update()},1)},onUpdate:function(r){t.popper=r;var i=t.state.currentPlacement;t._isMounted&&r.placement!==i&&t.setState({currentPlacement:r.placement})}})}if(i){var g=eB.undefined(d.offset)?0:d.offset;new eO(this.target,this.wrapperRef,{placement:d.placement||u,modifiers:{arrow:{enabled:!1},offset:{offset:"0, ".concat(g,"px")},flip:{enabled:!1}},onCreate:function(r){t.wrapperPopper=r,t._isMounted&&t.setState({statusWrapper:to.IDLE}),s(r,"wrapper"),u!==r.placement&&setTimeout(function(){r.instance.update()},1)}})}}},{key:"rebuildPopper",value:function(){var t=this;this.floaterRefInterval=setInterval(function(){var r;null!=(r=t.floaterRef)&&r.isConnected&&(clearInterval(t.floaterRefInterval),t.setState({needsUpdate:!1}),t.initPopper())},50)}},{key:"changeWrapperPosition",value:function(t){var r=t.target,i=t.wrapperOptions;this.setState({positionWrapper:i.position&&!!r})}},{key:"toggle",value:function(t){var r=this.state.status===to.OPEN?to.CLOSING:to.OPENING;eB.undefined(t)||(r=t),this.setState({status:r})}},{key:"debug",get:function(){return this.props.debug||tu()&&"ReactFloaterDebug"in window&&!!window.ReactFloaterDebug}},{key:"event",get:function(){var t=this.props,r=t.disableHoverToClick,i=t.event;return"hover"===i&&td()&&!r?"click":i}},{key:"options",get:function(){var t=this.props.options;return P()(tn,t||{})}},{key:"styles",get:function(){var t,r,i=this,a=this.state,n=a.status,s=a.positionWrapper,o=a.statusWrapper,l=this.props.styles,u=P()({wrapper:{cursor:"help",display:"inline-flex",flexDirection:"column",zIndex:(t=P()(t_,l.options||{})).zIndex},wrapperPosition:{left:-1e3,position:"absolute",top:-1e3,visibility:"hidden"},floater:{display:"inline-block",filter:"drop-shadow(0 0 3px rgba(0, 0, 0, 0.3))",maxWidth:300,opacity:0,position:"relative",transition:"opacity 0.3s",visibility:"hidden",zIndex:t.zIndex}
2783,floaterOpening:{opacity:1,visibility:"visible"},floaterWithAnimation:{opacity:1,transition:"opacity 0.3s, transform 0.2s",visibility:"visible"},floaterWithComponent:{maxWidth:"100%"},floaterClosing:{opacity:0,visibility:"visible"},floaterCentered:{left:"50%",position:"fixed",top:"50%",transform:"translate(-50%, -50%)"},container:{backgroundColor:"#fff",color:"#666",minHeight:60,minWidth:200,padding:20,position:"relative",zIndex:10},title:{borderBottom:"1px solid #555",color:"#555",fontSize:18,marginBottom:5,paddingBottom:6,paddingRight:18},content:{fontSize:15},close:{backgroundColor:"transparent",border:0,borderRadius:0,color:"#555",fontSize:0,height:15,outline:"none",padding:10,position:"absolute",right:0,top:0,width:15,WebkitAppearance:"none"},footer:{borderTop:"1px solid #ccc",fontSize:13,marginTop:10,paddingTop:5},arrow:{color:"#fff",display:"inline-flex",length:16,margin:8,position:"absolute",spread:32},options:t},l);if(s&&(r=-1===[to.IDLE].indexOf(n)||-1===[to.IDLE].indexOf(o)?u.wrapperPosition:this.wrapperPopper.styles,u.wrapper=e3(e3({},u.wrapper),r)),this.target){var d=window.getComputedStyle(this.target);this.wrapperStyles?u.wrapper=e3(e3({},u.wrapper),this.wrapperStyles):-1===["relative","static"].indexOf(d.position)&&(this.wrapperStyles={},s||(tx.forEach(function(t){i.wrapperStyles[t]=d[t]}),u.wrapper=e3(e3({},u.wrapper),this.wrapperStyles),this.target.style.position="relative",this.target.style.top="auto",this.target.style.right="auto",this.target.style.bottom="auto",this.target.style.left="auto"))}return u}},{key:"target",get:function(){if(!tu())return null;var t=this.props.target;return t?eB.domElement(t)?t:document.querySelector(t):this.childRef||this.wrapperRef}},{key:"render",value:function(){var t=this.state,r=t.currentPlacement,i=t.positionWrapper,a=t.status,s=this.props,o=s.children,l=s.component,u=s.content,d=s.disableAnimation,c=s.footer,h=s.hideArrow,f=s.id,p=s.open,m=s.showCloseButton,g=s.style,b=s.target,y=s.title,v=n.createElement(tv,{handleClick:this.handleClick,handleMouseEnter:this.handleMouseEnter,handleMouseLeave:this.handleMouseLeave,setChildRef:this.setChildRef,setWrapperRef:this.setWrapperRef,style:g,styles:this.styles.wrapper},o),_={};return i?_.wrapperInPortal=v:_.wrapperAsChildren=v,n.createElement("span",null,n.createElement(tf,{hasChildren:!!o,id:f,placement:r,setRef:this.setFloaterRef,target:b,zIndex:this.styles.options.zIndex},n.createElement(ty,{component:l,content:u,disableAnimation:d,footer:c,handleClick:this.handleClick,hideArrow:h||"center"===r,open:p,placement:r,positionWrapper:i,setArrowRef:this.setArrowRef,setFloaterRef:this.setFloaterRef,showCloseButton:m,status:a,styles:this.styles,title:y}),_.wrapperInPortal),_.wrapperAsChildren)}}]),i}(n.Component);e6(t$,"propTypes",{autoOpen:j().bool,callback:j().func,children:j().node,component:ts(j().oneOfType([j().func,j().element]),function(t){return!t.content}),content:ts(j().node,function(t){return!t.component}),debug:j().bool,disableAnimation:j().bool,disableFlip:j().bool,disableHoverToClick:j().bool,event:j().oneOf(["hover","click"]),eventDelay:j().number,footer:j().node,getPopper:j().func,hideArrow:j().bool,id:j().oneOfType([j().string,j().number]),offset:j().number,open:j().bool,options:j().object,placement:j().oneOf(["top","top-start","top-end","bottom","bottom-start","bottom-end","left","left-start","left-end","right","right-start","right-end","auto","center"]),showCloseButton:j().bool,style:j().object,styles:j().object,target:j().oneOfType([j().object,j().string]),title:j().node,wrapperOptions:j().shape({offset:j().number,placement:j().oneOf(["top","top-start","top-end","bottom","bottom-start","bottom-end","left","left-start","left-end","right","right-start","right-end","auto"]),position:j().bool})}),e6(t$,"defaultProps",{autoOpen:!1,callback:th,debug:!1,disableAnimation:!1,disableFlip:!1,disableHoverToClick:!1,event:"click",eventDelay:.4,getPopper:th,hideArrow:!1,offset:15,placement:"bottom",showCloseButton:!1,styles:{},target:null,wrapperOptions:{position:!1}});var tS=Object.defineProperty,tk=(t,r,i)=>((t,r,i)=>r in t?tS(t,r,{enumerable:!0,configurable:!0,writable:!0,value:i}):t[r]=i)(t,"symbol"!=typeof r?r+"":r,i),tC={INIT:"init",START:"start",STOP:"stop",RESET:"reset",PREV:"prev",NEXT:"next",GO:"go",CLOSE:"close",SKIP:"skip",UPDATE:"update"},tE={TOUR_START:"tour:start",STEP_BEFORE:"step:before",BEACON:"beacon",TOOLTIP:"tooltip",STEP_AFTER:"step:after",TOUR_END:"tour:end",TOUR_STATUS:"tour:status",TARGET_NOT_FOUND:"error:target_not_found"},tT={INIT:"init",READY:"ready",BEACON:"beacon",TOOLTIP:"tooltip",COMPLETE:"complete",ERROR:"error"},tI={IDLE:"idle",READY:"ready",WAITING:"waiting",RUNNING:"running",PAUSED:"paused",SKIPPED:"skipped",FINISHED:"finished"};function tA(){var t;return!!("undefined"!=typeof window&&(null==(t=window.document)?void 0:t.createElement))}function tN(t){return t?t.getBoundingClientRect():null}function tO(t){if("string"==typeof t)try{return document.querySelector(t)}catch(t){return null}return t}function tM(t,r,i){if(!t)return tj();let a=A(t);if(a){if(a.isSameNode(tj()))return i?document:tj();if(!(a.scrollHeight>a.offsetHeight)&&!r)return a.style.overflow="initial",tj()}return a}function tP(t,r){if(!t)return!1;let i=tM(t,r);return!!i&&!i.isSameNode(tj())}function tR(t,r="fixed"){if(!t||!(t instanceof HTMLElement))return!1;let{nodeName:i}=t,a=t&&1===t.nodeType?getComputedStyle(t):null;return"BODY"!==i&&"HTML"!==i&&(!!a&&a.position===r||!!t.parentNode&&tR(t.parentNode,r))}function tj(){var t;return null!=(t=document.scrollingElement)?t:document.documentElement}var tz=void 0!==N.createPortal;function tD(t=navigator.userAgent){let r=t;return"undefined"==typeof window?r="node":document.documentMode?r="ie":/Edge/.test(t)?r="edge":window.opera||t.includes(" OPR/")?r="opera":void 0!==window.InstallTrigger?r="firefox":window.chrome?r="chrome":/(Version\/([\d._]+).*Safari|CriOS|FxiOS| Mobile\/)/.test(t)&&(r="safari"),r}function tB(t){return Object.prototype.toString.call(t).slice(8,-1).toLowerCase()}function tL(t,r={}){let{defaultValue:i,step:a,steps:s}
2783=r,o=O(t);return o?(o.includes("{step}")||o.includes("{steps}"))&&a&&s&&(o=o.replace("{step}",a.toString()).replace("{steps}",s.toString())):o=(0,n.isValidElement)(t)&&!Object.values(t.props).length&&"function"===tB(t.type)?tL(t.type({}),r):O(i),o}function tU(t){return t.disableBeacon||"center"===t.placement}function tF(){return!["chrome","safari","firefox","opera"].includes(tD())}function tq({data:t,debug:r=!1,title:i,warn:a=!1}){let n=a?console.warn||console.error:console.log;r&&(i&&t?(console.groupCollapsed(`%creact-joyride: ${i}`,"color: #ff0044; font-weight: bold; font-size: 12px;"),Array.isArray(t)?t.forEach(t=>{y.plainObject(t)&&t.key?n.apply(console,[t.key,t.value]):n.apply(console,[t])}):n.apply(console,[t]),console.groupEnd()):console.error("Missing title or data props"))}function tV(t,...r){if(!y.plainObject(t))throw TypeError("Expected an object");let i={};for(let a in t)({}).hasOwnProperty.call(t,a)&&!r.includes(a)&&(i[a]=t[a]);return i}var tW={options:{preventOverflow:{boundariesElement:"scrollParent"}},wrapperOptions:{offset:-18,position:!0}},tH={back:"Back",close:"Close",last:"Last",next:"Next",nextLabelWithProgress:"Next (Step {step} of {steps})",open:"Open the dialog",skip:"Skip"},tG={event:"click",placement:"bottom",offset:10,disableBeacon:!1,disableCloseOnEsc:!1,disableOverlay:!1,disableOverlayClose:!1,disableScrollParentFix:!1,disableScrolling:!1,hideBackButton:!1,hideCloseButton:!1,hideFooter:!1,isFixed:!1,locale:tH,showProgress:!1,showSkipButton:!1,spotlightClicks:!1,spotlightPadding:10},tK={arrowColor:"#fff",backgroundColor:"#fff",beaconSize:36,overlayColor:"rgba(0, 0, 0, 0.5)",primaryColor:"#f04",spotlightShadow:"0 0 15px rgba(0, 0, 0, 0.5)",textColor:"#333",width:380,zIndex:100},tY={backgroundColor:"transparent",border:0,borderRadius:0,color:"#555",cursor:"pointer",fontSize:16,lineHeight:1,padding:8,WebkitAppearance:"none"},tQ={borderRadius:4,position:"absolute"};function tX(t,r){var i,a,n,s,o,l;let u=M.all([tG,function(t,...r){if(!y.plainObject(t))throw TypeError("Expected an object");if(!r.length)return t;let i={};for(let a in t)({}).hasOwnProperty.call(t,a)&&r.includes(a)&&(i[a]=t[a]);return i}(t,"beaconComponent","disableCloseOnEsc","disableOverlay","disableOverlayClose","disableScrolling","disableScrollParentFix","floaterProps","hideBackButton","hideCloseButton","locale","showProgress","showSkipButton","spotlightClicks","spotlightPadding","styles","tooltipComponent"),null!=r?r:{}],{isMergeableObject:y.plainObject}),d=function(t,r){var i,a,n,s,o;let{floaterProps:l,styles:u}=t,d=M(null!=(i=r.floaterProps)?i:{},null!=l?l:{}),c=M(null!=u?u:{},null!=(a=r.styles)?a:{}),h=M(tK,c.options||{}),f="center"===r.placement||r.disableBeacon,{width:p}=h;window.innerWidth>480&&(p=380),"width"in h&&(p="number"==typeof h.width&&window.innerWidth<h.width?window.innerWidth-30:h.width);let m={bottom:0,left:0,overflow:"hidden",position:"absolute",right:0,top:0,zIndex:h.zIndex};return M({beacon:{...tY,display:f?"none":"inline-block",height:h.beaconSize,position:"relative",width:h.beaconSize,zIndex:h.zIndex},beaconInner:{animation:"joyride-beacon-inner 1.2s infinite ease-in-out",backgroundColor:h.primaryColor,borderRadius:"50%",display:"block",height:"50%",left:"50%",opacity:.7,position:"absolute",top:"50%",transform:"translate(-50%, -50%)",width:"50%"},beaconOuter:{animation:"joyride-beacon-outer 1.2s infinite ease-in-out",backgroundColor:`rgba(${(function(t){let r=t.replace(/^#?([\da-f])([\da-f])([\da-f])$/i,(t,r,i,a)=>r+r+i+i+a+a),i=/^#?([\da-f]{2})([\da-f]{2})([\da-f]{2})$/i.exec(r);return i?[parseInt(i[1],16),parseInt(i[2],16),parseInt(i[3],16)]:[]})(h.primaryColor).join(",")}, 0.2)`,border:`2px solid ${h.primaryColor}`,borderRadius:"50%",boxSizing:"border-box",display:"block",height:"100%",left:0,opacity:.9,position:"absolute",top:0,transformOrigin:"center",width:"100%"},tooltip:{backgroundColor:h.backgroundColor,borderRadius:5,boxSizing:"border-box",color:h.textColor,fontSize:16,maxWidth:"100%",padding:15,position:"relative",width:p},tooltipContainer:{lineHeight:1.4,textAlign:"center"},tooltipTitle:{fontSize:18,margin:0},tooltipContent:{padding:"20px 10px"},tooltipFooter:{alignItems:"center",display:"flex",justifyContent:"flex-end",marginTop:15},tooltipFooterSpacer:{flex:1},buttonNext:{...tY,backgroundColor:h.primaryColor,borderRadius:4,color:"#fff"},buttonBack:{...tY,color:h.primaryColor,marginLeft:"auto",marginRight:5},buttonClose:{...tY,color:h.textColor,height:14,padding:15,position:"absolute",right:0,top:0,width:14},buttonSkip:{...tY,color:h.textColor,fontSize:14},overlay:{...m,backgroundColor:h.overlayColor,mixBlendMode:"hard-light"},overlayLegacy:{...m},overlayLegacyCenter:{...m,backgroundColor:h.overlayColor},spotlight:{...tQ,backgroundColor:"gray"},spotlightLegacy:{...tQ,boxShadow:`0 0 0 9999px ${h.overlayColor}, ${h.spotlightShadow}`},floaterStyles:{arrow:{color:null!=(o=null==(s=null==(n=null==d?void 0:d.styles)?void 0:n.arrow)?void 0:s.color)?o:h.arrowColor},options:{zIndex:h.zIndex+100}},options:h},c)}(t,u),c=tP(tO(u.target),u.disableScrollParentFix),h=M.all([tW,null!=(i=t.floaterProps)?i:{},null!=(a=u.floaterProps)?a:{}]);return h.offset=u.offset,h.styles=M(null!=(n=h.styles)?n:{},d.floaterStyles),h.offset+=null!=(o=null!=(s=t.spotlightPadding)?s:u.spotlightPadding)?o:0,u.placementBeacon&&h.wrapperOptions&&(h.wrapperOptions.placement=u.placementBeacon),c&&h.options.preventOverflow&&(h.options.preventOverflow.boundariesElement="window"),{...u,locale:M.all([tH,null!=(l=t.locale)?l:{},u.locale||{}]),floaterProps:h,styles:tV(d,"floaterStyles")}}function tZ(t,r=!1){return y.plainObject(t)?!!t.target||(tq({title:"validateStep",data:"target is missing from the step",warn:!0,debug:r}),!1):(tq({title:"validateStep",data:"step must be an object",warn:!0,debug:r}),!1)}function tJ(t,r=!1){return y.array(t)?t.every(t=>tZ(t,r)):(tq({title:"validateSteps",data:"steps must be an array",warn:!0,debug:r}),!1)}var t1={action:"init",controlled:!1,index:0,lifecycle:tT.INIT,origin:null,size:0,status:tI.IDLE},t0=Object.keys(tV(t1,"controlled","size")),t2=class{constructor(t){tk(this,"beaconPopper"),tk(this,"tooltipPopper"),tk(this,"data",new Map),tk(this,"listener"),tk(this,"store",new Map),tk(this,"addListener",t=>{this.listener=t}),tk(this,"setSteps",t=>{let{size:r,status:i}=this.getState(),a={size:t.length,status:i};this.data.set("steps",t),i===tI.WAITING&&!r&&t.length&&(a.status=tI.RUNNING),this.setState(a)}),tk(this,"getPopper",t=>"beacon"===t?this.beaconPopper:this.tooltipPopper),tk(this,"setPopper",(t,r)=>{"beacon"===t?this.beaconPopper=r:this.tooltipPopper=r}),tk(this,"cleanupPoppers",()=>{this.beaconPopper=null,this.tooltipPopper=null}),tk(this,"close",(t=null)=>{let{index:r,status:i}=this.getState();i===tI.RUNNING&&this.setState({...this.getNextState({action:tC.CLOSE,index:r+1,origin:t})})}),tk(this,"go",t=>{let{controlled:r,status:i}=this.getState();if(r||i!==tI.RUNNING)return;let a=this.getSteps()[t];this.setState({...this.getNextState({action:tC.GO,index:t}),status:a?i:tI.FINISHED})}),tk(this,"info",()=>this.getState()),tk(this,"next",()=>{let{index:t,status:r}=this.getState();r===tI.RUNNING&&this.setState(this.getNextState({action:tC.NEXT,index:t+1}))}),tk(this,"open",()=>{let{status:t}=this.getState();t===tI.RUNNING&&this.setState({...this.getNextState({action:tC.UPDATE,lifecycle:tT.TOOLTIP})})}),tk(this,"prev",()=>{let{index:t,status:r}=this.getState();r===tI.RUNNING&&this.setState({...this.getNextState({action:tC.PREV,index:t-1})})}),tk(this,"reset",(t=!1)=>{let{controlled:r}=this.getState();r||this.setState({...this.getNextState({action:tC.RESET,index:0}),status:t?tI.RUNNING:tI.READY})}),tk(this,"skip",()=>{let{status:t}=this.getState();t===tI.RUNNING&&this.setState({action:tC.SKIP,lifecycle:tT.INIT,status:tI.SKIPPED})}),tk(this,"start",t=>{let{index:r,size:i}=this.getState();this.setState({...this.getNextState({action:tC.START,index:y.number(t)?t:r},!0),status:i?tI.RUNNING:tI.WAITING})}),tk(this,"stop",(t=!1)=>{let{index:r,status:i}=this.getState();[tI.FINISHED,tI.SKIPPED].includes(i)||this.setState({...this.getNextState({action:tC.STOP,index:r+ +!!t}),status:tI.PAUSED})}),tk(this,"update",t=>{var r,i;if(!function(t,r){return!!y.plainObject(t)&&!!y.array(r)&&Object.keys(t).every(t=>r.includes(t))}
2783(t,t0))throw Error(`State is not valid. Valid keys: ${t0.join(", ")}`);this.setState({...this.getNextState({...this.getState(),...t,action:null!=(r=t.action)?r:tC.UPDATE,origin:null!=(i=t.origin)?i:null},!0)})});let{continuous:r=!1,stepIndex:i,steps:a=[]}=null!=t?t:{};this.setState({action:tC.INIT,controlled:y.number(i),continuous:r,index:y.number(i)?i:0,lifecycle:tT.INIT,origin:null,status:a.length?tI.READY:tI.IDLE},!0),this.beaconPopper=null,this.tooltipPopper=null,this.listener=null,this.setSteps(a)}getState(){return this.store.size?{action:this.store.get("action")||"",controlled:this.store.get("controlled")||!1,index:parseInt(this.store.get("index"),10),lifecycle:this.store.get("lifecycle")||"",origin:this.store.get("origin")||null,size:this.store.get("size")||0,status:this.store.get("status")||""}:{...t1}}getNextState(t,r=!1){var i,a,n,s,o;let{action:l,controlled:u,index:d,size:c,status:h}=this.getState(),f=y.number(t.index)?t.index:d,p=u&&!r?d:Math.min(Math.max(f,0),c);return{action:null!=(i=t.action)?i:l,controlled:u,index:p,lifecycle:null!=(a=t.lifecycle)?a:tT.INIT,origin:null!=(n=t.origin)?n:null,size:null!=(s=t.size)?s:c,status:p===c?tI.FINISHED:null!=(o=t.status)?o:h}}getSteps(){let t=this.data.get("steps");return Array.isArray(t)?t:[]}hasUpdatedState(t){return JSON.stringify(t)!==JSON.stringify(this.getState())}setState(t,r=!1){let i=this.getState(),{action:a,index:n,lifecycle:s,origin:o=null,size:l,status:u}={...i,...t};this.store.set("action",a),this.store.set("index",n),this.store.set("lifecycle",s),this.store.set("origin",o),this.store.set("size",l),this.store.set("status",u),r&&(this.store.set("controlled",t.controlled),this.store.set("continuous",t.continuous)),this.listener&&this.hasUpdatedState(i)&&this.listener(this.getState())}getHelpers(){return{close:this.close,go:this.go,info:this.info,next:this.next,open:this.open,prev:this.prev,reset:this.reset,skip:this.skip}}},t3=function({styles:t}){return n.createElement("div",{key:"JoyrideSpotlight",className:"react-joyride__spotlight","data-test-id":"spotlight",style:t})},t4=class extends n.Component{constructor(){super(...arguments),tk(this,"isActive",!1),tk(this,"resizeTimeout"),tk(this,"scrollTimeout"),tk(this,"scrollParent"),tk(this,"state",{isScrolling:!1,mouseOverSpotlight:!1,showSpotlight:!0}),tk(this,"hideSpotlight",()=>{let{continuous:t,disableOverlay:r,lifecycle:i}=this.props,a=[tT.INIT,tT.BEACON,tT.COMPLETE,tT.ERROR];return r||(t?a.includes(i):i!==tT.TOOLTIP)}),tk(this,"handleMouseMove",t=>{let{mouseOverSpotlight:r}=this.state,{height:i,left:a,position:n,top:s,width:o}=this.spotlightStyles,l="fixed"===n?t.clientY:t.pageY,u="fixed"===n?t.clientX:t.pageX,d=u>=a&&u<=a+o&&l>=s&&l<=s+i;d!==r&&this.updateState({mouseOverSpotlight:d})}),tk(this,"handleScroll",()=>{let{target:t}=this.props,r=tO(t);if(this.scrollParent!==document){let{isScrolling:t}=this.state;t||this.updateState({isScrolling:!0,showSpotlight:!1}),clearTimeout(this.scrollTimeout),this.scrollTimeout=window.setTimeout(()=>{this.updateState({isScrolling:!1,showSpotlight:!0})},50)}else tR(r,"sticky")&&this.updateState({})}),tk(this,"handleResize",()=>{clearTimeout(this.resizeTimeout),this.resizeTimeout=window.setTimeout(()=>{this.isActive&&this.forceUpdate()},100)})}componentDidMount(){let{debug:t,disableScrolling:r,disableScrollParentFix:i=!1,target:a}=this.props,n=tO(a);this.scrollParent=tM(null!=n?n:document.body,i,!0),this.isActive=!0,window.addEventListener("resize",this.handleResize)}componentDidUpdate(t){var r;let{disableScrollParentFix:i,lifecycle:a,spotlightClicks:n,target:s}=this.props,{changed:o}=T(t,this.props);if(o("target")||o("disableScrollParentFix")){let t=tO(s);this.scrollParent=tM(null!=t?t:document.body,i,!0)}o("lifecycle",tT.TOOLTIP)&&(null==(r=this.scrollParent)||r.addEventListener("scroll",this.handleScroll,{passive:!0}),setTimeout(()=>{let{isScrolling:t}=this.state;t||this.updateState({showSpotlight:!0})},100)),(o("spotlightClicks")||o("disableOverlay")||o("lifecycle"))&&(n&&a===tT.TOOLTIP?window.addEventListener("mousemove",this.handleMouseMove,!1):a!==tT.TOOLTIP&&window.removeEventListener("mousemove",this.handleMouseMove))}componentWillUnmount(){var t;this.isActive=!1,window.removeEventListener("mousemove",this.handleMouseMove),window.removeEventListener("resize",this.handleResize),clearTimeout(this.resizeTimeout),clearTimeout(this.scrollTimeout),null==(t=this.scrollParent)||t.removeEventListener("scroll",this.handleScroll)}get overlayStyles(){let{mouseOverSpotlight:t}=this.state,{disableOverlayClose:r,placement:i,styles:a}=this.props,n=a.overlay;return tF()&&(n="center"===i?a.overlayLegacyCenter:a.overlayLegacy),{cursor:r?"default":"pointer",height:function(t=!1){let{body:r,documentElement:i}=document;if(!r||!i)return 0;if(t){let t=[r.scrollHeight,r.offsetHeight,i.clientHeight,i.scrollHeight,i.offsetHeight].sort((t,r)=>t-r),a=Math.floor(t.length/2);return t.length%2==0?(t[a-1]+t[a])/2:t[a]}return Math.max(r.scrollHeight,r.offsetHeight,i.clientHeight,i.scrollHeight,i.offsetHeight)}(),pointerEvents:t?"none":"auto",...n}}get spotlightStyles(){var t,r,i;let{showSpotlight:a}=this.state,{disableScrollParentFix:n=!1,spotlightClicks:s,spotlightPadding:o=0,styles:l,target:u}=this.props,d=tO(u),c=tN(d),h=tR(d),f=function(t,r,i){var a,n,s;let o=tN(t),l=tM(t,i),u=tP(t,i),d=tR(t),c=0,h=null!=(a=null==o?void 0:o.top)?a:0;return u&&d?h=(null!=(n=null==t?void 0:t.offsetTop)?n:0)-(null!=(s=null==l?void 0:l.scrollTop)?s:0):l instanceof HTMLElement&&(c=l.scrollTop,u||tR(t)||(h+=c),l.isSameNode(tj())||(h+=tj().scrollTop)),Math.floor(h-r)}
2783(d,o,n);return{...tF()?l.spotlightLegacy:l.spotlight,height:Math.round((null!=(t=null==c?void 0:c.height)?t:0)+2*o),left:Math.round((null!=(r=null==c?void 0:c.left)?r:0)-o),opacity:+!!a,pointerEvents:s?"none":"auto",position:h?"fixed":"absolute",top:f,transition:"opacity 0.2s",width:Math.round((null!=(i=null==c?void 0:c.width)?i:0)+2*o)}}updateState(t){this.isActive&&this.setState(r=>({...r,...t}))}render(){let{showSpotlight:t}=this.state,{onClickOverlay:r,placement:i}=this.props,{hideSpotlight:a,overlayStyles:s,spotlightStyles:o}=this;if(a())return null;let l="center"!==i&&t&&n.createElement(t3,{styles:o});if("safari"===tD()){let{mixBlendMode:t,zIndex:r,...i}=s;l=n.createElement("div",{style:{...i}},l),delete s.backgroundColor}return n.createElement("div",{className:"react-joyride__overlay","data-test-id":"overlay",onClick:r,role:"presentation",style:s},l)}},t8=class extends n.Component{constructor(){super(...arguments),tk(this,"node",null)}componentDidMount(){let{id:t}=this.props;tA()&&(this.node=document.createElement("div"),this.node.id=t,document.body.appendChild(this.node),tz||this.renderReact15())}componentDidUpdate(){tA()&&(tz||this.renderReact15())}componentWillUnmount(){tA()&&this.node&&(tz||N.unmountComponentAtNode(this.node),this.node.parentNode===document.body&&(document.body.removeChild(this.node),this.node=null))}renderReact15(){if(!tA())return;let{children:t}=this.props;this.node&&N.unstable_renderSubtreeIntoContainer(this,t,this.node)}renderReact16(){if(!tA()||!tz)return null;let{children:t}=this.props;return this.node?N.createPortal(t,this.node):null}render(){return tz?this.renderReact16():null}},t7=class{constructor(t,r){if(tk(this,"element"),tk(this,"options"),tk(this,"canBeTabbed",t=>{let{tabIndex:r}=t;return null!==r&&!(r<0)&&this.canHaveFocus(t)}),tk(this,"canHaveFocus",t=>{let r=t.nodeName.toLowerCase();return(/input|select|textarea|button|object/.test(r)&&!t.getAttribute("disabled")||"a"===r&&!!t.getAttribute("href"))&&this.isVisible(t)}),tk(this,"findValidTabElements",()=>[].slice.call(this.element.querySelectorAll("*"),0).filter(this.canBeTabbed)),tk(this,"handleKeyDown",t=>{let{code:r="Tab"}=this.options;t.code===r&&this.interceptTab(t)}),tk(this,"interceptTab",t=>{t.preventDefault();let r=this.findValidTabElements(),{shiftKey:i}=t;if(!r.length)return;let a=document.activeElement?r.indexOf(document.activeElement):0;-1!==a&&(i||a+1!==r.length)?i&&0===a?a=r.length-1:a+=i?-1:1:a=0,r[a].focus()}),tk(this,"isHidden",t=>{let r=t.offsetWidth<=0&&t.offsetHeight<=0,i=window.getComputedStyle(t);return!!r&&!t.innerHTML||r&&"visible"!==i.getPropertyValue("overflow")||"none"===i.getPropertyValue("display")}),tk(this,"isVisible",t=>{let r=t;for(;r;)if(r instanceof HTMLElement){if(r===document.body)break;if(this.isHidden(r))return!1;r=r.parentNode}return!0}),tk(this,"removeScope",()=>{window.removeEventListener("keydown",this.handleKeyDown)}),tk(this,"checkFocus",t=>{document.activeElement!==t&&(t.focus(),window.requestAnimationFrame(()=>this.checkFocus(t)))}),tk(this,"setFocus",()=>{let{selector:t}=this.options;if(!t)return;let r=this.element.querySelector(t);r&&window.requestAnimationFrame(()=>this.checkFocus(r))}),!(t instanceof HTMLElement))throw TypeError("Invalid parameter: element must be an HTMLElement");this.element=t,this.options=r,window.addEventListener("keydown",this.handleKeyDown,!1),this.setFocus()}},t6=class extends n.Component{constructor(t){if(super(t),tk(this,"beacon",null),tk(this,"setBeaconRef",t=>{this.beacon=t}),t.beaconComponent)return;let r=document.head||document.getElementsByTagName("head")[0],i=document.createElement("style");i.id="joyride-beacon-animation",t.nonce&&i.setAttribute("nonce",t.nonce);let a=` 2784 @keyframes joyride-beacon-inner { 2785 20% { 2786 opacity: 0.9; 2787 } 2788 2789 90% { 2790 opacity: 0.7; 2791 } 2792 } 2793 2794 @keyframes joyride-beacon-outer { 2795 0% { 2796 transform: scale(1); 2797 } 2798 2799 45% { 2800 opacity: 0.7; 2801 transform: scale(0.75); 2802 } 2803 2804 100% { 2805 opacity: 0.9; 2806 transform: scale(1); 2807 } 2808 } 2809 `;i.appendChild(document.createTextNode(a)),r.appendChild(i)}componentDidMount(){let{shouldFocus:t}=this.props;setTimeout(()=>{y.domElement(this.beacon)&&t&&this.beacon.focus()},0)}componentWillUnmount(){let t=document.getElementById("joyride-beacon-animation");(null==t?void 0:t.parentNode)&&t.parentNode.removeChild(t)}render(){let{beaconComponent:t,continuous:r,index:i,isLastStep:a,locale:s,onClickOrHover:o,size:l,step:u,styles:d}=this.props,c=tL(s.open),h={"aria-label":c,onClick:o,onMouseEnter:o,ref:this.setBeaconRef,title:c};return t?n.createElement(t,{continuous:r,index:i,isLastStep:a,size:l,step:u,...h}):n.createElement("button",{key:"JoyrideBeacon",className:"react-joyride__beacon","data-test-id":"button-beacon",style:d.beacon,type:"button",...h},n.createElement("span",{style:d.beaconInner}),n.createElement("span",{style:d.beaconOuter}))}},t5=function({styles:t,...r}){let{color:i,height:a,width:s,...o}=t;return n.createElement("button",{style:o,type:"button",...r},n.createElement("svg",{height:"number"==typeof a?`${a}px`:a,preserveAspectRatio:"xMidYMid",version:"1.1",viewBox:"0 0 18 18",width:"number"==typeof s?`${s}px`:s,xmlns:"http://www.w3.org/2000/svg"},n.createElement("g",null,n.createElement("path",{d:"M8.13911129,9.00268191 L0.171521827,17.0258467 C-0.0498027049,17.248715 -0.0498027049,17.6098394 0.171521827,17.8327545 C0.28204354,17.9443526 0.427188206,17.9998706 0.572051765,17.9998706 C0.71714958,17.9998706 0.862013139,17.9443526 0.972581703,17.8327545 L9.0000937,9.74924618 L17.0276057,17.8327545 C17.1384085,17.9443526 17.2832721,17.9998706 17.4281356,17.9998706 C17.5729992,17.9998706 17.718097,17.9443526 17.8286656,17.8327545 C18.0499901,17.6098862 18.0499901,17.2487618 17.8286656,17.0258467 L9.86135722,9.00268191 L17.8340066,0.973848225 C18.0553311,0.750979934 18.0553311,0.389855532 17.8340066,0.16694039 C17.6126821,-0.0556467968 17.254037,-0.0556467968 17.0329467,0.16694039 L9.00042166,8.25611765 L0.967006424,0.167268345 C0.745681892,-0.0553188426 0.387317931,-0.0553188426 0.165993399,0.167268345 C-0.0553311331,0.390136635 -0.0553311331,0.751261038 0.165993399,0.974176179 L8.13920499,9.00268191 L8.13911129,9.00268191 Z",fill:i}))))},t9=function(t){let{backProps:r,closeProps:i,index:a,isLastStep:s,primaryProps:o,skipProps:l,step:u,tooltipProps:d}=t,{content:c,hideBackButton:h,hideCloseButton:f,hideFooter:p,showSkipButton:m,styles:g,title:b}=u,y={};return y.primary=n.createElement("button",{"data-test-id":"button-primary",style:g.buttonNext,type:"button",...o}),m&&!s&&(y.skip=n.createElement("button",{"aria-live":"off","data-test-id":"button-skip",style:g.buttonSkip,type:"button",...l})),!h&&a>0&&(y.back=n.createElement("button",{"data-test-id":"button-back",style:g.buttonBack,type:"button",...r})),y.close=!f&&n.createElement(t5,{"data-test-id":"button-close",styles:g.buttonClose,...i}),n.createElement("div",{key:"JoyrideTooltip","aria-label":tL(null!=b?b:c),className:"react-joyride__tooltip",style:g.tooltip,...d},n.createElement("div",{style:g.tooltipContainer},b&&n.createElement("h1",{"aria-label":tL(b),style:g.tooltipTitle},b),n.createElement("div",{style:g.tooltipContent},c)),!p&&n.createElement("div",{style:g.tooltipFooter},n.createElement("div",{style:g.tooltipFooterSpacer},y.skip),y.back,y.primary),y.close)},re=class extends n.Component{constructor(){super(...arguments),tk(this,"handleClickBack",t=>{t.preventDefault();let{helpers:r}=this.props;r.prev()}),tk(this,"handleClickClose",t=>{t.preventDefault();let{helpers:r}=this.props;r.close("button_close")}),tk(this,"handleClickPrimary",t=>{t.preventDefault();let{continuous:r,helpers:i}=this.props;if(!r)return void i.close("button_primary");i.next()}),tk(this,"handleClickSkip",t=>{t.preventDefault();let{helpers:r}=this.props;r.skip()}),tk(this,"getElementsProps",()=>{let{continuous:t,index:r,isLastStep:i,setTooltipRef:a,size:s,step:o}=this.props,{back:l,close:u,last:d,next:c,nextLabelWithProgress:h,skip:f}=o.locale,p=tL(l),m=tL(u),g=tL(d),b=tL(c),y=tL(f),v=u,_=m;if(t){if(v=c,_=b,o.showProgress&&!i){let t=tL(h,{step:r+1,steps:s});v=function t(r,i,a){let s=t=>t.replace("{step}",String(i)).replace("{steps}",String(a));if("string"===tB(r))return s(r);if(!(0,n.isValidElement)(r))return r;let{children:o}=r.props;return"string"===tB(o)&&o.includes("{step}")?(0,n.cloneElement)(r,{children:s(o)}):Array.isArray(o)?(0,n.cloneElement)(r,{children:o.map(r=>"string"==typeof r?s(r):t(r,i,a))}):"function"!==tB(r.type)||Object.values(r.props).length?r:t(r.type({}),i,a)}(h,r+1,s),_=t}i&&(v=d,_=g)}return{backProps:{"aria-label":p,children:l,"data-action":"back",onClick:this.handleClickBack,role:"button",title:p},closeProps:{"aria-label":m,children:u,"data-action":"close",onClick:this.handleClickClose,role:"button",title:m},primaryProps:{"aria-label":_,children:v,"data-action":"primary",onClick:this.handleClickPrimary,role:"button",title:_},skipProps:{"aria-label":y,children:f,"data-action":"skip",onClick:this.handleClickSkip,role:"button",title:y},tooltipProps:{"aria-modal":!0,ref:a,role:"alertdialog"}}})}render(){let t,{continuous:r,index:i,isLastStep:a,setTooltipRef:s,size:o,step:l}=this.props,{beaconComponent:u,tooltipComponent:d,...c}=l;if(d){let l={...this.getElementsProps(),continuous:r,index:i,isLastStep:a,size:o,step:c,setTooltipRef:s};t=n.createElement(d,{...l})}else t=n.createElement(t9,{...this.getElementsProps(),continuous:r,index:i,isLastStep:a,size:o,step:l});return t}},rt=class extends n.Component{constructor(){super(...arguments),tk(this,"scope",null),tk(this,"tooltip",null),tk(this,"handleClickHoverBeacon",t=>{let{step:r,store:i}=this.props;("mouseenter"!==t.type||"hover"===r.event)&&i.update({lifecycle:tT.TOOLTIP})}),tk(this,"setTooltipRef",t=>{this.tooltip=t}),tk(this,"setPopper",(t,r)=>{var i;let{action:a,lifecycle:n,step:s,store:o}=this.props;
2809"wrapper"===r?o.setPopper("beacon",t):o.setPopper("tooltip",t),o.getPopper("beacon")&&(o.getPopper("tooltip")||"center"===s.placement)&&n===tT.INIT&&o.update({action:a,lifecycle:tT.READY}),(null==(i=s.floaterProps)?void 0:i.getPopper)&&s.floaterProps.getPopper(t,r)}),tk(this,"renderTooltip",t=>{let{continuous:r,helpers:i,index:a,size:s,step:o}=this.props;return n.createElement(re,{continuous:r,helpers:i,index:a,isLastStep:a+1===s,setTooltipRef:this.setTooltipRef,size:s,step:o,...t})})}componentDidMount(){let{debug:t,index:r}=this.props;tq({title:`step:${r}`,data:[{key:"props",value:this.props}],debug:t})}componentDidUpdate(t){var r;let{action:i,callback:a,continuous:n,controlled:s,debug:o,helpers:l,index:u,lifecycle:d,shouldScroll:c,status:h,step:f,store:p}=this.props,{changed:m,changedFrom:g}=T(t,this.props),b=l.info(),y=n&&i!==tC.CLOSE&&(u>0||i===tC.PREV),v=m("action")||m("index")||m("lifecycle")||m("status"),_=g("lifecycle",[tT.TOOLTIP,tT.INIT],tT.INIT),w=m("action",[tC.NEXT,tC.PREV,tC.SKIP,tC.CLOSE]),x=s&&u===t.index;if(w&&(_||x)&&a({...b,index:t.index,lifecycle:tT.COMPLETE,step:t.step,type:tE.STEP_AFTER}),"center"===f.placement&&h===tI.RUNNING&&m("index")&&i!==tC.START&&d===tT.INIT&&p.update({lifecycle:tT.READY}),v){let t=tO(f.target),r=!!t;r&&function(t){var r;if(!t)return!1;let i=t;for(;i&&i!==document.body;){if(i instanceof HTMLElement){let{display:t,visibility:r}=getComputedStyle(i);if("none"===t||"hidden"===r)return!1}i=null!=(r=i.parentElement)?r:null}return!0}(t)?(g("status",tI.READY,tI.RUNNING)||g("lifecycle",tT.INIT,tT.READY))&&a({...b,step:f,type:tE.STEP_BEFORE}):(console.warn(r?"Target not visible":"Target not mounted",f),a({...b,type:tE.TARGET_NOT_FOUND,step:f}),s||p.update({index:u+(i===tC.PREV?-1:1)}))}g("lifecycle",tT.INIT,tT.READY)&&p.update({lifecycle:tU(f)||y?tT.TOOLTIP:tT.BEACON}),m("index")&&tq({title:`step:${d}`,data:[{key:"props",value:this.props}],debug:o}),m("lifecycle",tT.BEACON)&&a({...b,step:f,type:tE.BEACON}),m("lifecycle",tT.TOOLTIP)&&(a({...b,step:f,type:tE.TOOLTIP}),c&&this.tooltip&&(this.scope=new t7(this.tooltip,{selector:"[data-action=primary]"}),this.scope.setFocus())),g("lifecycle",[tT.TOOLTIP,tT.INIT],tT.INIT)&&(null==(r=this.scope)||r.removeScope(),p.cleanupPoppers())}componentWillUnmount(){var t;null==(t=this.scope)||t.removeScope()}get open(){let{lifecycle:t,step:r}=this.props;return tU(r)||t===tT.TOOLTIP}render(){let{continuous:t,debug:r,index:i,nonce:a,shouldScroll:s,size:o,step:l}=this.props,u=tO(l.target);return tZ(l)&&y.domElement(u)?n.createElement("div",{key:`JoyrideStep-${i}`,className:"react-joyride__step"},n.createElement(t$,{...l.floaterProps,component:this.renderTooltip,debug:r,getPopper:this.setPopper,id:`react-joyride-step-${i}`,open:this.open,placement:l.placement,target:l.target},n.createElement(t6,{beaconComponent:l.beaconComponent,continuous:t,index:i,isLastStep:i+1===o,locale:l.locale,nonce:a,onClickOrHover:this.handleClickHoverBeacon,shouldFocus:s,size:o,step:l,styles:l.styles}))):null}},rr=class extends n.Component{constructor(t){super(t),tk(this,"helpers"),tk(this,"store"),tk(this,"callback",t=>{let{callback:r}=this.props;y.function(r)&&r(t)}),tk(this,"handleKeyboard",t=>{let{index:r,lifecycle:i}=this.state,{steps:a}=this.props,n=a[r];i===tT.TOOLTIP&&"Escape"===t.code&&n&&!n.disableCloseOnEsc&&this.store.close("keyboard")}),tk(this,"handleClickOverlay",()=>{let{index:t}=this.state,{steps:r}=this.props;tX(this.props,r[t]).disableOverlayClose||this.helpers.close("overlay")}),tk(this,"syncState",t=>{this.setState(t)});let{debug:r,getHelpers:i,run:a=!0,stepIndex:n}=t;this.store=new t2({...t,controlled:a&&y.number(n)}),this.helpers=this.store.getHelpers();let{addListener:s}=this.store;tq({title:"init",data:[{key:"props",value:this.props},{key:"state",value:this.state}],debug:r}),s(this.syncState),i&&i(this.helpers),this.state=this.store.getState()}componentDidMount(){if(!tA())return;let{debug:t,disableCloseOnEsc:r,run:i,steps:a}=this.props,{start:n}=this.store;tJ(a,t)&&i&&n(),r||document.body.addEventListener("keydown",this.handleKeyboard,{passive:!0})}
2809componentDidUpdate(t,r){if(!tA())return;let{action:i,controlled:a,index:n,status:s}=this.state,{debug:o,run:l,stepIndex:u,steps:d}=this.props,{stepIndex:h,steps:f}=t,{reset:p,setSteps:m,start:g,stop:b,update:v}=this.store,{changed:_}=T(t,this.props),{changed:w,changedFrom:x}=T(r,this.state),$=tX(this.props,d[n]),S=!c(f,d),k=y.number(u)&&_("stepIndex"),C=tO($.target);if(S&&(tJ(d,o)?m(d):console.warn("Steps are not valid",d)),_("run")&&(l?g(u):b()),k){let t=y.number(h)&&h<u?tC.NEXT:tC.PREV;i===tC.STOP&&(t=tC.START),[tI.FINISHED,tI.SKIPPED].includes(s)||v({action:i===tC.CLOSE?tC.CLOSE:t,index:u,lifecycle:tT.INIT})}a||s!==tI.RUNNING||0!==n||C||(this.store.update({index:n+1}),this.callback({...this.state,type:tE.TARGET_NOT_FOUND,step:$}));let E={...this.state,index:n,step:$};if(w("action",[tC.NEXT,tC.PREV,tC.SKIP,tC.CLOSE])&&w("status",tI.PAUSED)){let t=tX(this.props,d[r.index]);this.callback({...E,index:r.index,lifecycle:tT.COMPLETE,step:t,type:tE.STEP_AFTER})}if(w("status",[tI.FINISHED,tI.SKIPPED])){let t=tX(this.props,d[r.index]);a||this.callback({...E,index:r.index,lifecycle:tT.COMPLETE,step:t,type:tE.STEP_AFTER}),this.callback({...E,type:tE.TOUR_END,step:t,index:r.index}),p()}else x("status",[tI.IDLE,tI.READY],tI.RUNNING)?this.callback({...E,type:tE.TOUR_START}):(w("status")||w("action",tC.RESET))&&this.callback({...E,type:tE.TOUR_STATUS});this.scrollToStep(r)}componentWillUnmount(){let{disableCloseOnEsc:t}=this.props;t||document.body.removeEventListener("keydown",this.handleKeyboard)}scrollToStep(t){let{index:r,lifecycle:i,status:a}=this.state,{debug:n,disableScrollParentFix:s=!1,scrollDuration:o,scrollOffset:l=20,scrollToFirstStep:u=!1,steps:d}=this.props,c=tX(this.props,d[r]),h=tO(c.target),f=function(t){let{isFirstStep:r,lifecycle:i,previousLifecycle:a,scrollToFirstStep:n,step:s,target:o}=t;return!s.disableScrolling&&(!r||n||i===tT.TOOLTIP)&&"center"!==s.placement&&(!s.isFixed||!tR(o))&&a!==i&&[tT.BEACON,tT.TOOLTIP].includes(i)}({isFirstStep:0===r,lifecycle:i,previousLifecycle:t.lifecycle,scrollToFirstStep:u,step:c,target:h});if(a===tI.RUNNING&&f){let t=tP(h,s),u=tM(h,s),d=Math.floor(function(t,r,i){var a;if(!t)return 0;let{offsetTop:n=0,scrollTop:s=0}=null!=(a=A(t))?a:{},o=t.getBoundingClientRect().top+s;n&&(tP(t,i)||t.offsetParent!==document.body)&&(o-=n);let l=Math.floor(o-r);return l<0?0:l}(h,l,s))||0;tq({title:"scrollToStep",data:[{key:"index",value:r},{key:"lifecycle",value:i},{key:"status",value:a}],debug:n});let f=this.store.getPopper("beacon"),p=this.store.getPopper("tooltip");if(i===tT.BEACON&&f){let{offsets:r,placement:i}=f;["bottom"].includes(i)||t||(d=Math.floor(r.popper.top-l))}else if(i===tT.TOOLTIP&&p){let{flipped:r,offsets:i,placement:a}=p;!["top","right","left"].includes(a)||r||t?d-=c.spotlightPadding:d=Math.floor(i.popper.top-l)}d=d>=0?d:0,a===tI.RUNNING&&(function(t,r){let{duration:i,element:a}=r;return new Promise((r,n)=>{let{scrollTop:s}=a,o=t>s?t-s:s-t;I.top(a,t,{duration:o<100?50:i},t=>t&&"Element already at target scroll position"!==t.message?n(t):r())})})(d,{element:u,duration:o}).then(()=>{setTimeout(()=>{var t;null==(t=this.store.getPopper("tooltip"))||t.instance.update()},10)})}}render(){if(!tA())return null;let{index:t,lifecycle:r,status:i}=this.state,{continuous:a=!1,debug:s=!1,nonce:o,scrollToFirstStep:l=!1,steps:u}=this.props,d=i===tI.RUNNING,c={};if(d&&u[t]){let i=tX(this.props,u[t]);c.step=n.createElement(rt,{...this.state,callback:this.callback,continuous:a,debug:s,helpers:this.helpers,nonce:o,shouldScroll:!i.disableScrolling&&(0!==t||l),step:i,store:this.store}),c.overlay=n.createElement(t8,{id:"react-joyride-portal"},n.createElement(t4,{...i,continuous:a,debug:s,lifecycle:r,onClickOverlay:this.handleClickOverlay}))}return n.createElement("div",{className:"react-joyride"},c.step,c.overlay)}};tk(rr,"defaultProps",{continuous:!1,debug:!1,disableCloseOnEsc:!1,disableOverlay:!1,disableOverlayClose:!1,disableScrolling:!1,disableScrollParentFix:!1,getHelpers:void 0,hideBackButton:!1,run:!0,scrollOffset:20,scrollDuration:300,scrollToFirstStep:!1,showSkipButton:!1,showProgress:!1,spotlightClicks:!1,spotlightPadding:10,steps:[]});let ri=(0,n.createContext)(void 0),ra=()=>{let t=(0,n.useContext)(ri);if(!t)throw Error("useTour must be used within a TourProvider");return t},rn=t=>{let{children:r}
2809=t,[i,s]=(0,n.useState)(!1),[o,l]=(0,n.useState)(!1),[u,d]=(0,n.useState)(!1),[c,h]=(0,n.useState)({isActive:!1,currentStep:0,steps:[],completedTours:[],currentTourId:void 0,ready:!1});(0,n.useEffect)(()=>{s(!0)},[]),(0,n.useEffect)(()=>{if(i){let t=JSON.parse(localStorage.getItem("maia-completed-tours")||"[]");h(r=>({...r,completedTours:t,ready:!0}))}},[i]),(0,n.useEffect)(()=>{if(!i)return;let t=()=>{let t=!!document.querySelector('[data-testid="download-modal"]');o&&!t&&(d(!0),setTimeout(()=>{d(!1)},500)),l(t)};t();let r=new MutationObserver(t);return r.observe(document.body,{childList:!0,subtree:!0}),()=>r.disconnect()},[i]);let[f,p]=(0,n.useState)([]),m=(0,n.useCallback)(t=>t.map(t=>{var r,i;return{target:"#".concat(t.targetId),content:t,placement:t.placement||"bottom",disableBeacon:!0,hideCloseButton:!0,showSkipButton:!1,offset:(null==(r=t.offset)?void 0:r.x)||(null==(i=t.offset)?void 0:i.y)?t.offset.x||0:10}}),[]),g=(0,n.useCallback)((t,r)=>{h(a=>({isActive:!0,currentStep:0,steps:r,completedTours:[...new Set([...a.completedTours,...i?JSON.parse(localStorage.getItem("maia-completed-tours")||"[]"):[]])],currentTourId:t,ready:a.ready}))},[i]),b=(0,n.useCallback)(function(t,r){let a=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(i&&(a||c.ready)){if(!a&&([...new Set([...c.completedTours,...i?JSON.parse(localStorage.getItem("maia-completed-tours")||"[]"):[]])].includes(t)||c.isActive&&c.currentTourId===t))return;if(!a&&r.length>0){let i=r[0].targetId;if(!document.getElementById(i)){let a=0,n=setInterval(()=>{a++,document.getElementById(i)?(clearInterval(n),g(t,r)):a>=5&&clearInterval(n)},1e3);return}}g(t,r)}},[i,c.ready,c.completedTours,c.isActive,c.currentTourId,g]),y=(0,n.useCallback)(()=>{h(t=>t.currentStep<t.steps.length-1?{...t,currentStep:t.currentStep+1}:t)},[]),v=(0,n.useCallback)(()=>{h(t=>t.currentStep>0?{...t,currentStep:t.currentStep-1}:t)},[]),_=(0,n.useCallback)(()=>{h(t=>{let r=t.currentTourId||"analysis",a=t.completedTours.includes(r)?t.completedTours:[...t.completedTours,r];return i&&localStorage.setItem("maia-completed-tours",JSON.stringify(a)),{...t,isActive:!1,currentStep:0,steps:[],completedTours:a,currentTourId:void 0}})},[i]),w=(0,n.useCallback)(()=>{h(t=>{let r=t.currentTourId||"analysis",a=t.completedTours.includes(r)?t.completedTours:[...t.completedTours,r];return i&&localStorage.setItem("maia-completed-tours",JSON.stringify(a)),{...t,isActive:!1,currentStep:0,steps:[],completedTours:a,currentTourId:void 0}})},[i]),x=(0,n.useCallback)(t=>{var r;return c.isActive&&(null==(r=c.steps[c.currentStep])?void 0:r.id)===t},[c.isActive,c.currentStep,c.steps]),$=(0,n.useCallback)(()=>!c.isActive||c.currentStep>=c.steps.length?null:c.steps[c.currentStep],[c.isActive,c.currentStep,c.steps]),S=(0,n.useCallback)(t=>c.completedTours.includes(t),[c.completedTours]),k=(0,n.useCallback)(()=>{window.innerWidth<768&&setTimeout(()=>{let t=c.steps[c.currentStep],r=null;t&&(r=document.getElementById(t.targetId));let i=document.querySelector('[data-testid="react-joyride-tooltip"], .react-joyride__tooltip'),a=r||i;if(!a)return;let n=a.getBoundingClientRect(),s=window.pageYOffset+n.top-100;window.scrollTo({top:s,behavior:"smooth"})},200)},[c.steps,c.currentStep]),C=(0,n.useCallback)(t=>window.innerWidth<768?new Promise(r=>{let i=c.steps[t];if(!i)return void r();let a=document.getElementById(i.targetId);if(!a)return void r();let n=a.getBoundingClientRect(),s=window.pageYOffset+n.top-100;window.scrollTo({top:s,behavior:"smooth"}),setTimeout(r,300)}):Promise.resolve(),[c.steps]),E=(0,n.useCallback)(async()=>{if(c.currentStep<c.steps.length-1){let t=c.currentStep+1;await C(t),y()}else _()},[c.currentStep,c.steps.length,y,_,C]),T=(0,n.useCallback)(async()=>{if(c.currentStep>0){let t=c.currentStep-1;await C(t),v()}},[c.currentStep,v,C]);(0,n.useEffect)(()=>{c.isActive&&c.steps.length>0?p(m(c.steps)):p([])},[c.isActive,c.steps,m]),(0,n.useEffect)(()=>{if(!c.isActive)return;let t=t=>{("ArrowLeft"===t.key||"ArrowRight"===t.key||"Escape"===t.key)&&(t.preventDefault(),t.stopPropagation())};return document.addEventListener("keydown",t,!0),()=>{document.removeEventListener("keydown",t,!0)}},[c.isActive]);let I=(0,n.useCallback)(t=>{let{status:r,type:i}=t;"tour:start"===i&&k(),(r===tI.FINISHED||r===tI.SKIPPED)&&_()},[_,k]),A=(0,n.useMemo)(()=>({tourState:c,startTour:b,nextStep:y,prevStep:v,endTour:_,skipTour:w,isStepActive:x,getCurrentStep:$,hasCompletedTour:S}),[c,b,y,v,_,w,x,$,S]),N=(0,n.useMemo)(()=>!!i&&!!c.isActive&&!o&&!u,[i,c.isActive,o,u]);return(0,a.jsxs)(ri.Provider,{value:A,children:[r,N&&(0,a.jsx)(rr,{run:c.isActive,steps:f,stepIndex:c.currentStep,callback:I,continuous:!1,showProgress:!1,showSkipButton:!1,disableCloseOnEsc:!0,disableScrollParentFix:!0,scrollToFirstStep:!0,scrollOffset:100,disableScrolling:!1,disableOverlayClose:!0,hideBackButton:!0,hideCloseButton:!0,tooltipComponent:t=>{let{step:r,tooltipProps:i,isLastStep:n,index:s,size:o}=t,l=r.content;return(0,a.jsxs)("div",{...i,className:"from-white/12/80 to-white/5/80 w-[320px] overflow-hidden rounded-xl border-2 border-glass-border bg-gradient-to-br backdrop-blur-xl",style:{fontFamily:"inherit"},children:[(0,a.jsxs)("div",{className:"bg-white/5/60 flex items-center justify-between border-b border-glass-border p-3 backdrop-blur sm:p-4",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2 sm:gap-3",children:[(0,a.jsx)("div",{className:"flex h-6 w-6 items-center justify-center rounded-full border border-white/20 bg-human-4 sm:h-8 sm:w-8",children:(0,a.jsx)("span",{className:"text-xs font-bold text-white sm:text-sm",children:s+1})}),(0,a.jsx)("h3",{className:"text-base font-semibold text-white sm:text-lg",children:l.title})]}),(0,a.jsx)("button",{onClick:()=>w(),className:"bg-white/5/70 flex h-8 w-8 items-center justify-center rounded-full border border-glass-border p-1 text-white/70 transition-colors hover:border-white/20 hover:bg-white/10 hover:text-white",title:"Skip tour",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-lg sm:text-xl",children:"close"})})]}),(0,a.jsx)("div",{className:"bg-white/5/40 p-3 sm:p-4",children:(0,a.jsx)("p",{className:"text-xs leading-relaxed text-white/80 sm:text-sm",children:l.description})}),(0,a.jsxs)("div",{className:"bg-white/5/60 flex items-center justify-between border-t border-glass-border p-3 backdrop-blur sm:p-4",children:[(0,a.jsx)("div",{className:"flex items-center gap-1",children:Array.from({length:o}).map((t,r)=>(0,a.jsx)("div",{className:"h-1.5 w-1.5 rounded-full sm:h-2 sm:w-2 ".concat(r===s?"bg-human-4":r<s?"bg-human-4/60":"bg-white/20")},r))}),(0,a.jsxs)("div",{className:"flex items-center gap-1 sm:gap-2",children:[(0,a.jsxs)("button",{onClick:T,disabled:0===c.currentStep,className:"bg-white/5/60 flex items-center gap-1 rounded border border-glass-border px-2 py-1 text-xs text-white/75 backdrop-blur transition-colors hover:border-white/20 hover:bg-white/10 hover:text-white disabled:cursor-not-allowed disabled:border-white/5 disabled:bg-white/5 disabled:text-white/40 sm:px-3 sm:text-sm",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-xs sm:text-sm",children:"arrow_back"}),(0,a.jsx)("span",{className:"hidden sm:inline",children:"Previous"})]}),(0,a.jsxs)("button",{onClick:E,className:"flex items-center gap-1 rounded bg-human-4 px-2 py-1 text-xs text-white transition-colors hover:bg-human-4/80 sm:px-3 sm:text-sm",children:[n?"Finish":"Next",!n&&(0,a.jsx)("span",{className:"material-symbols-outlined text-xs sm:text-sm",children:"arrow_forward"})]})]})]})]})},styles:{options:{arrowColor:"rgb(38, 36, 45)",backgroundColor:"rgb(38, 36, 45)",overlayColor:"rgba(0, 0, 0, 0.5)",spotlightShadow:"0 0 15px rgba(159, 79, 68, 0.3)",zIndex:30},spotlight:{borderRadius:"4px"},tooltip:{backgroundColor:"rgb(38, 36, 45)",color:"rgb(235, 235, 235)"}},locale:{back:"Previous",close:"Close",last:"Finish",next:"Next",skip:"Skip"},floaterProps:{disableAnimation:!1,styles:{floater:{filter:"none"},arrow:{spread:8,length:8,color:"rgb(38, 36, 45)"}}}})]})}},87192:(t,r,i)=>{"use strict";i.d(r,{GF:()=>l,Jf:()=>s,KD:()=>o,Kn:()=>p,N6:()=>v,R8:()=>h,RE:()=>b,SH:()=>$,Sj:()=>d,Xh:()=>g,Xs:()=>w,Z6:()=>c,cG:()=>m,kb:()=>u,kf:()=>_,u5:()=>x,v$:()=>f,zU:()=>y});var a=i(36854);let n=(t,r)=>{try{a.Ay.capture(t,r)}catch(r){console.error("Failed to track event ".concat(t,":"),r)}},s=(t,r)=>{n("download_model_modal_shown",{trigger:t,page:r})},o=t=>{n("download_model_initiated",{model_type:"maia2",model_size_mb:90,page:t})},l=(t,r)=>{n("download_model_completed",{model_type:"maia2",download_time_seconds:t,page:r})},u=(t,r,i)=>{n("download_model_failed",{error_type:t,retry_count:r,page:i})},d=(t,r)=>{n("opening_selection_modal_opened",{source:t,existing_selections_count:r})},c=(t,r)=>{n("opening_search_used",{search_term:t,results_count:r})},h=(t,r,i,a)=>{n("opening_preview_selected",{opening_name:t,opening_id:r,has_variation:i,variation_name:a})},f=(t,r,i,a,s)=>{n("opening_configured_and_added",{opening_name:t,variation_name:s,player_color:r,maia_version:i,target_moves:a})},p=(t,r)=>{n("opening_removed_from_selection",{opening_name:t,selection_id:r})},m=(t,r,i,a,s,o)=>{n("drill_configuration_completed",{total_openings_selected:t,total_drill_count:r,unique_openings:i,average_target_moves:a,maia_versions_used:s,color_distribution:o})},g=t=>{n("analysis_game_loaded",{game_source:t})},b=(t,r)=>{n("puzzle_started",{puzzle_id:t,user_rating:r})},y=(t,r,i,a)=>{n("puzzle_move_attempted",{puzzle_id:t,move_uci:r,attempt_number:i,is_correct:a})},v=(t,r,i,a,s,o)=>{n("puzzle_completed",{puzzle_id:t,result:r,attempts_made:i,time_taken_seconds:a,puzzle_rating:s,rating_change:o})},_=(t,r)=>{n("turing_game_started",{game_id:t,user_rating:r})},w=(t,r)=>{n("homepage_feature_clicked",{feature:t,user_authenticated:r})},x=t=>{n("lichess_connection_initiated",{source:t})},$=(t,r,i,a)=>{n("error_encountered",{error_type:t,page:r,user_action:i,error_message:a})}},87865:()=>{},88593:(t,r,i)=>{"use strict";i.d(r,{h_:()=>s,uT:()=>
2809o});let a="maia-user-settings",n={soundEnabled:!0,chessboardTheme:"brown"},s=()=>{try{let t=localStorage.getItem(a);if(!t)return n;let r=JSON.parse(t);return{...n,...r}}catch(t){return console.warn("Failed to parse user settings from localStorage:",t),n}},o=t=>{try{localStorage.setItem(a,JSON.stringify(t))}catch(t){console.warn("Failed to save user settings to localStorage:",t)}}},88831:(t,r,i)=>{"use strict";i.d(r,{Oq:()=>s,$u:()=>o,WG:()=>d,zF:()=>a.zF,xI:()=>c,J0:()=>a.J0,g2:()=>u});var a=i(69942);i(87192);var n=i(62207);function s(t,r){let i=new n.lr(r);i.getRoot();for(let r=0;r<t.length;r++){let a=t[r];if(a.lastMove){let[t,r,n]=a.lastMove,s=t&&r?"".concat(t).concat(r).concat(null!=n?n:""):"";i.getLastMainlineNode().addChild(a.board,s,a.san||"",!0)}}return i}function o(t){return t.map(t=>{let{last_move:r,fen:i,check:a,last_move_san:n}=t;return{board:i,lastMove:r,san:n,check:a}})}i(59425);var l=i(32711);let u=t=>r=>{let i=r.body.getReader(),a=/\r?\n/,n=new TextDecoder,s="",o=()=>i.read().then(r=>{let{done:i,value:l}=r;if(i)s.length>0&&t(JSON.parse(s));else{let r=n.decode(l,{stream:!0}),i=((s+=r)||"").split(a);for(let r of(s=i.pop(),i.filter(t=>t)))t(JSON.parse(r));return o()}});return o()},d=t=>{var r,i,a,s,o,l;let{players:u,id:d}=t,c={name:(null==u||null==(i=u.white)||null==(r=i.user)?void 0:r.id)||"White",rating:null==u||null==(a=u.white)?void 0:a.rating},h={name:(null==u||null==(o=u.black)||null==(s=o.user)?void 0:s.id)||"Black",rating:null==u||null==(l=u.black)?void 0:l.rating},f=t.initialFen||"rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1",p=[{board:f,lastMove:void 0,san:void 0,check:!1,maia_values:{}}],m=new n.lr(f);return{id:d,blackPlayer:h,whitePlayer:c,gameType:"stream",type:"stream",moves:p,availableMoves:Array(p.length).fill({}),termination:void 0,maiaEvaluations:[],stockfishEvaluations:[],loadedFen:t.fen,loaded:!1,tree:m}},c=(t,r)=>{let{uci:i,fen:a}=t;if(!i||!a||!r.tree)return r;let n=i;try{let t=r.tree.getRoot();for(;t.mainChild;)t=t.mainChild;let a=new l.d$(t.fen).move({from:i.slice(0,2),to:i.slice(2,4),promotion:i[4]?i[4]:void 0});a&&(n=a.san)}catch(t){console.warn("Could not convert UCI to SAN:",t)}let s=r.tree.getRoot();for(;s.mainChild;)s=s.mainChild;try{r.tree.getLastMainlineNode().addChild(a,i,n,!0)}catch(t){return console.error("Error adding move to tree:",t),r}let o=[...r.availableMoves,{}];return{...r,availableMoves:o}};i(38588),i(88593)},89099:(t,r,i)=>{t.exports=i(16296)},89203:(t,r,i)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"useMergedRef",{enumerable:!0,get:function(){return n}});let a=i(14232);function n(t,r){let i=(0,a.useRef)(null),n=(0,a.useRef)(null);return(0,a.useCallback)(a=>{if(null===a){let t=i.current;t&&(i.current=null,t());let r=n.current;r&&(n.current=null,r())}else t&&(i.current=s(t,a)),r&&(n.current=s(r,a))},[t,r])}function s(t,r){if("function"!=typeof t)return t.current=r,()=>{t.current=null};{let i=t(r);return"function"==typeof i?i:()=>t(null)}}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},90280:(t,r,i)=>{"use strict";i.d(r,{OQ:()=>d,bt:()=>l});var a=i(21623),n=i(10223),s=i(1856),o=i(81461);let l={current:void 0};class u{constructor(t,r={}){this.version="11.18.2",this.canTrackVelocity=null,this.events={},this.updateAndNotify=(t,r=!0)=>{let i=a.k.now();this.updatedAt!==i&&this.setPrevFrameValue(),this.prev=this.current,this.setCurrent(t),this.current!==this.prev&&this.events.change&&this.events.change.notify(this.current),r&&this.events.renderRequest&&this.events.renderRequest.notify(this.current)},this.hasAnimated=!1,this.setCurrent(t),this.owner=r.owner}setCurrent(t){this.current=t,this.updatedAt=a.k.now(),null===this.canTrackVelocity&&void 0!==t&&(this.canTrackVelocity=!isNaN(parseFloat(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 n.v);let i=this.events[t].add(r);return"change"===t?()=>{i(),o.Gt.read(()=>{this.events.change.getSize()||this.stop()})}:i}clearListeners(){for(let t in this.events)this.events[t].clear()}attach(t,r){this.passiveEffect=t,this.stopPassiveEffect=r}set(t,r=!0){r&&this.passiveEffect?this.passiveEffect(t,this.updateAndNotify):this.updateAndNotify(t,r)}setWithVelocity(t,r,i){this.set(r),this.prev=void 0,this.prevFrameValue=t,this.prevUpdatedAt=this.updatedAt-i}jump(t,r=!0){this.updateAndNotify(t),this.prev=t,this.prevUpdatedAt=this.prevFrameValue=void 0,r&&this.stop(),this.stopPassiveEffect&&this.stopPassiveEffect()}get(){return l.current&&l.current.push(this),this.current}getPrevious(){return this.prev}getVelocity(){let t=a.k.now();if(!this.canTrackVelocity||void 0===this.prevFrameValue||t-this.updatedAt>30)return 0;let r=Math.min(this.updatedAt-this.prevUpdatedAt,30);return(0,s.f)(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.clearListeners(),this.stop(),this.stopPassiveEffect&&this.stopPassiveEffect()}}function d(t,r){return new u(t,r)}},90295:(t,r,i)=>{"use strict";
2809Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"default",{enumerable:!0,get:function(){return f}});let a=i(64252)._(i(14232)),n=i(86581),s=[],o=[],l=!1;function u(t){let r=t(),i={loading:!0,loaded:null,error:null};return i.promise=r.then(t=>(i.loading=!1,i.loaded=t,t)).catch(t=>{throw i.loading=!1,i.error=t,t}),i}class d{promise(){return this._res.promise}retry(){this._clearTimeouts(),this._res=this._loadFn(this._opts.loader),this._state={pastDelay:!1,timedOut:!1};let{_res:t,_opts:r}=this;t.loading&&("number"==typeof r.delay&&(0===r.delay?this._state.pastDelay=!0:this._delay=setTimeout(()=>{this._update({pastDelay:!0})},r.delay)),"number"==typeof r.timeout&&(this._timeout=setTimeout(()=>{this._update({timedOut:!0})},r.timeout))),this._res.promise.then(()=>{this._update({}),this._clearTimeouts()}).catch(t=>{this._update({}),this._clearTimeouts()}),this._update({})}_update(t){this._state={...this._state,error:this._res.error,loaded:this._res.loaded,loading:this._res.loading,...t},this._callbacks.forEach(t=>t())}_clearTimeouts(){clearTimeout(this._delay),clearTimeout(this._timeout)}getCurrentValue(){return this._state}subscribe(t){return this._callbacks.add(t),()=>{this._callbacks.delete(t)}}constructor(t,r){this._loadFn=t,this._opts=r,this._callbacks=new Set,this._delay=null,this._timeout=null,this.retry()}}function c(t){return function(t,r){let i=Object.assign({loader:null,loading:null,delay:200,timeout:null,webpack:null,modules:null},r),s=null;function u(){if(!s){let r=new d(t,i);s={getCurrentValue:r.getCurrentValue.bind(r),subscribe:r.subscribe.bind(r),retry:r.retry.bind(r),promise:r.promise.bind(r)}}return s.promise()}if(!l){let t=i.webpack&&1?i.webpack():i.modules;t&&o.push(r=>{for(let i of t)if(r.includes(i))return u()})}function c(t,r){u();let o=a.default.useContext(n.LoadableContext);o&&Array.isArray(i.modules)&&i.modules.forEach(t=>{o(t)});let l=a.default.useSyncExternalStore(s.subscribe,s.getCurrentValue,s.getCurrentValue);return a.default.useImperativeHandle(r,()=>({retry:s.retry}),[]),a.default.useMemo(()=>{var r;return l.loading||l.error?a.default.createElement(i.loading,{isLoading:l.loading,pastDelay:l.pastDelay,timedOut:l.timedOut,error:l.error,retry:s.retry}):l.loaded?a.default.createElement((r=l.loaded)&&r.default?r.default:r,t):null},[t,l])}return c.preload=()=>u(),c.displayName="LoadableComponent",a.default.forwardRef(c)}(u,t)}function h(t,r){let i=[];for(;t.length;){let a=t.pop();i.push(a(r))}return Promise.all(i).then(()=>{if(t.length)return h(t,r)})}c.preloadAll=()=>new Promise((t,r)=>{h(s).then(t,r)}),c.preloadReady=t=>(void 0===t&&(t=[]),new Promise(r=>{let i=()=>(l=!0,r());h(o,t).then(i,i)})),window.__NEXT_PRELOADREADY=c.preloadReady;let f=c},90360:(t,r,i)=>{"use strict";i.d(r,{k:()=>a});let a=(t,r,i)=>t+(r-t)*i},90620:(t,r,i)=>{"use strict";i.d(r,{l:()=>a});let a=t=>t},91200:(t,r,i)=>{"use strict";i.d(r,{M:()=>n});var a=i(14232);function n(t){let r=(0,a.useRef)(null);return null===r.current&&(r.current=t()),r.current}},91749:(t,r,i)=>{"use strict";i.d(r,{V:()=>u,i:()=>d});var a=i(37876),n=i(18847),s=i.n(n),o=i(14232);let l=s()(()=>i.e(433).then(i.bind(i,1433)).then(t=>t.PlaySetupModal),{loadableGenerated:{webpack:()=>[1433]},ssr:!1}),u=o.createContext({setPlaySetupModalProps:()=>{throw Error("poorly provided ModalContext")}}),d=t=>{let{children:r}=t,[i,n]=(0,o.useState)(void 0);return(0,a.jsxs)(u.Provider,{value:{playSetupModalProps:i,setPlaySetupModalProps:n},children:[i&&(0,a.jsx)(l,{...i}),r]})}},91750:(t,r,i)=>{"use strict";i.d(r,{X:()=>n,f:()=>a});let a=t=>1e3*t,n=t=>t/1e3},93563:(t,r,i)=>{"use strict";i.d(r,{P6:()=>o,vG:()=>h,tu:()=>d,KZ:()=>b,rU:()=>l,PT:()=>S,DW:()=>f,WH:()=>c,Mc:()=>C,yL:()=>y,TU:()=>function t(r,i){if(r)return"function"==typeof r&&m()?b(r,i):f(r)?v(r):Array.isArray(r)?r.map(r=>t(r,i)||_.easeOut):_[r]},YE:()=>u,c$:()=>O,Wp:()=>M,nL:()=>m});var a=i(7862);let n=(0,a.p)(()=>void 0!==window.ScrollTimeline);class s{constructor(t){this.stop=()=>this.runAll("stop"),this.animations=t.filter(Boolean)}get finished(){return Promise.all(this.animations.map(t=>"finished"in t?t.finished:t))}getAll(t){return this.animations[0][t]}setAll(t,r){for(let i=0;i<this.animations.length;i++)this.animations[i][t]=r}attachTimeline(t,r){let i=this.animations.map(i=>n()&&i.attachTimeline?i.attachTimeline(t):"function"==typeof r?r(i):void 0);return()=>
2809{i.forEach((t,r)=>{t&&t(),this.animations[r].stop()})}}get time(){return this.getAll("time")}set time(t){this.setAll("time",t)}get speed(){return this.getAll("speed")}set speed(t){this.setAll("speed",t)}get startTime(){return this.getAll("startTime")}get duration(){let t=0;for(let r=0;r<this.animations.length;r++)t=Math.max(t,this.animations[r].duration);return t}runAll(t){this.animations.forEach(r=>r[t]())}flatten(){this.runAll("flatten")}play(){this.runAll("play")}pause(){this.runAll("pause")}cancel(){this.runAll("cancel")}complete(){this.runAll("complete")}}class o extends s{then(t,r){return Promise.all(this.animations).then(t).catch(r)}}function l(t,r){return t?t[r]||t.default||t:void 0}let u=2e4;function d(t){let r=0,i=t.next(r);for(;!i.done&&r<u;)r+=50,i=t.next(r);return r>=u?1/0:r}function c(t){return"function"==typeof t}function h(t,r){t.timeline=r,t.onfinish=null}let f=t=>Array.isArray(t)&&"number"==typeof t[0],p={linearEasing:void 0},m=function(t,r){let i=(0,a.p)(t);return()=>{var t;return null!=(t=p[r])?t:i()}}(()=>{try{document.createElement("div").animate({opacity:0}
2809,{easing:"linear(0, 1)"})}catch(t){return!1}return!0},"linearEasing");var g=i(2589);let b=(t,r,i=10)=>{let a="",n=Math.max(Math.round(r/i),2);for(let r=0;r<n;r++)a+=t((0,g.q)(0,n-1,r))+", ";return`linear(${a.substring(0,a.length-2)})`};function y(t){return!!("function"==typeof t&&m()||!t||"string"==typeof t&&(t in _||m())||f(t)||Array.isArray(t)&&t.every(y))}let v=([t,r,i,a])=>`cubic-bezier(${t}, ${r}, ${i}, ${a})`,_={linear:"linear",ease:"ease",easeIn:"ease-in",easeOut:"ease-out",easeInOut:"ease-in-out",circIn:v([0,.65,.55,1]),circOut:v([.55,0,1,.45]),backIn:v([.31,.01,.66,-.59]),backOut:v([.33,1.53,.69,.99])},w={x:!1,y:!1};function x(t,r){let i=function(t,r,i){if(t instanceof Element)return[t];if("string"==typeof t){let r=document.querySelectorAll(t);return r?Array.from(r):[]}return Array.from(t)}(t),a=new AbortController;return[i,{passive:!0,...r,signal:a.signal},()=>a.abort()]}function $(t){return r=>{"touch"===r.pointerType||w.x||w.y||t(r)}}function S(t,r,i={}){let[a,n,s]=x(t,i),o=$(t=>{let{target:i}=t,a=r(t);if("function"!=typeof a||!i)return;let s=$(t=>{a(t),i.removeEventListener("pointerleave",s)});i.addEventListener("pointerleave",s,n)});return a.forEach(t=>{t.addEventListener("pointerenter",o,n)}),s}let k=(t,r)=>!!r&&(t===r||k(t,r.parentElement)),C=t=>"mouse"===t.pointerType?"number"!=typeof t.button||t.button<=0:!1!==t.isPrimary,E=new Set(["BUTTON","INPUT","SELECT","TEXTAREA","A"]),T=new WeakSet;function I(t){return r=>{"Enter"===r.key&&t(r)}}function A(t,r){t.dispatchEvent(new PointerEvent("pointer"+r,{isPrimary:!0,bubbles:!0}))}function N(t){return C(t)&&!(w.x||w.y)}function O(t,r,i={}){let[a,n,s]=x(t,i),o=t=>{let a=t.currentTarget;if(!N(t)||T.has(a))return;T.add(a);let s=r(t),o=(t,r)=>{window.removeEventListener("pointerup",l),window.removeEventListener("pointercancel",u),N(t)&&T.has(a)&&(T.delete(a),"function"==typeof s&&s(t,{success:r}))},l=t=>{o(t,i.useGlobalTarget||k(a,t.target))},u=t=>{o(t,!1)};window.addEventListener("pointerup",l,n),window.addEventListener("pointercancel",u,n)};return a.forEach(t=>{E.has(t.tagName)||-1!==t.tabIndex||null!==t.getAttribute("tabindex")||(t.tabIndex=0),(i.useGlobalTarget?window:t).addEventListener("pointerdown",o,n),t.addEventListener("focus",t=>((t,r)=>{let i=t.currentTarget;if(!i)return;let a=I(()=>{if(T.has(i))return;A(i,"down");let t=I(()=>{A(i,"up")});i.addEventListener("keyup",t,r),i.addEventListener("blur",()=>A(i,"cancel"),r)});i.addEventListener("keydown",a,r),i.addEventListener("blur",()=>i.removeEventListener("keydown",a),r)})(t,n),n)}),s}function M(t){if("x"===t||"y"===t)if(w[t])return null;else return w[t]=!0,()=>{w[t]=!1};return w.x||w.y?null:(w.x=w.y=!0,()=>{w.x=w.y=!1})}i(91750),i(90620)},94139:(t,r,i)=>{"use strict";i.d(r,{Am:()=>d,Ay:()=>l,eA:()=>o,lh:()=>u});var a=i(37876),n=i(76084),s=i(14232);let o=670,l=1024,u=s.createContext({height:0,width:0,isMobile:!1}),d=t=>{let{children:r}=t,{width:i,height:o}=(0,n.lW)(),d=(0,s.useMemo)(()=>i>0&&i<=l,[i]);return(0,a.jsx)(u.Provider,{value:{width:i,height:o,isMobile:d},children:r})}},94349:(t,r,i)=>{"use strict";i.d(r,{q:()=>a});let a=(t,r,i)=>i>r?r:i<t?t:i},94410:t=>{"use strict";var r=function(t){var r,a,n;return!!(r=t)&&"object"==typeof r&&(a=t,"[object RegExp]"!==(n=Object.prototype.toString.call(a))&&"[object Date]"!==n&&a.$$typeof!==i)},i="function"==typeof Symbol&&Symbol.for?Symbol.for("react.element"):60103;function a(t,r){return!1!==r.clone&&r.isMergeableObject(t)?l(Array.isArray(t)?[]:{},t,r):t}function n(t,r,i){return t.concat(r).map(function(t){return a(t,i)})}function s(t){return Object.keys(t).concat(Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(t).filter(function(r){return Object.propertyIsEnumerable.call(t,r)}):[])}function o(t,r){try{return r in t}catch(t){return!1}}function l(t,i,u){(u=u||{}).arrayMerge=u.arrayMerge||n,u.isMergeableObject=u.isMergeableObject||r,u.cloneUnlessOtherwiseSpecified=a;var d,c,h=Array.isArray(i);return h!==Array.isArray(t)?a(i,u):h?u.arrayMerge(t,i,u):(c={},(d=u).isMergeableObject(t)&&s(t).forEach(function(r){c[r]=a(t[r],d)}),s(i).forEach(function(r){o(t,r)&&!(Object.hasOwnProperty.call(t,r)&&Object.propertyIsEnumerable.call(t,r))||(o(t,r)&&d.isMergeableObject(i[r])?c[r]=(function(t,r){if(!r.customMerge)return l;var i=r.customMerge(t);return"function"==typeof i?i:l})(r,d)(t[r],i[r],d):c[r]=a(i[r],d))}),c)}l.all=function(t,r){if(!Array.isArray(t))throw Error("first argument should be an array");return t.reduce(function(t,i){return l(t,i,r)},{})},t.exports=l},94598:(t,r,i)=>{"use strict";i.d(r,{gW:()=>a.g,cy:()=>n.c,ul:()=>s.u,Vs:()=>o.V,eA:()=>b.eA,Mb:()=>l.M,Ay:()=>b.Ay,MR:()=>p,b8:()=>g,lh:()=>b.lh,Mw:()=>u.M});var a=i(85888),n=i(55892),s=i(9504),o=i(91749);i(56154),i(11391);var l=i(12152),u=i(87003);i(97038);var d=i(14232),c=i(32711),h=i(62207);let f=new h.lr(new c.d$().fen()),p=d.createContext({gameTree:f,currentNode:f.getRoot(),setCurrentNode:()=>{throw Error("TreeControllerContext not provided")},orientation:"white",setOrientation:()=>{throw Error("TreeControllerContext not provided")},goToNode:()=>{throw Error("TreeControllerContext not provided")},goToNextNode:()=>{throw Error("TreeControllerContext not provided")},goToPreviousNode:()=>{throw Error("TreeControllerContext not provided")},goToRootNode:()=>{throw Error("TreeControllerContext not provided")},plyCount:0}),m={gameTree:new h.lr(new c.d$().fen()),currentNode:new h.lr(new c.d$().fen()).getRoot(),setCurrentNode:()=>{},goToNode:()=>{},goToNextNode:()=>{},goToPreviousNode:()=>{},goToRootNode:()=>{},currentIndex:0,setCurrentIndex:()=>{},plyCount:0,orientation:"white",setOrientation:()=>{},game:void 0,games:[],loading:!1,gameIds:[],stats:{lifetime:void 0,session:{gamesWon:0,gamesPlayed:0},lastRating:void 0,rating:0},getNewGame:async()=>{},submitGuess:async()=>{},commentController:["",()=>{}]},g=(0,d.createContext)(m);var b=i(94139)},95062:(t,r,i)=>{t.exports=i(79706)()},97038:(t,r,i)=>{"use strict";i.d(r,{S:()=>l});var a=i(32711),n=i(14232),s=i(62207);let o={gameTree:new s.lr(new a.d$().fen()),currentNode:new s.lr(new a.d$().fen()).getRoot(),setCurrentNode:()=>{},goToNode:()=>{},goToNextNode:()=>{},goToPreviousNode:()=>{},goToRootNode:()=>{},plyCount:0,orientation:"white",setOrientation:()=>{},moves:void 0},l=(0,n.createContext)(o)},97685:(t,r,i)=>{"use strict";i.d(r,{l$:()=>Z,Ay:()=>J});var a,n=i(14232);let s={data:""},o=/(?:([\u0080-\uFFFF\w-%@]+) *:? *([^{;]+?);|([^;}{]*?) *{)|(}\s*)/g,l=/\/\*[^]*?\*\/| +/g,u=/\n+/g,d=(t,r)=>{let i="",a="",n="";for(let s in t){let o=t[s];"@"==s[0]?"i"==s[1]?i=s+" "+o+";":a+="f"==s[1]?d(o,s):s+"{"+d(o,"k"==s[1]?"":r)+"}":"object"==typeof o?a+=d(o,r?r.replace(/([^,])+/g,t=>s.replace(/([^,]*:\S+\([^)]*\))|([^,])+/g,r=>/&/.test(r)?r.replace(/&/g,t):t?t+" "+r:r)):s):null!=o&&(s=/^--/.test(s)?s:s.replace(/[A-Z]/g,"-$&").toLowerCase(),n+=d.p?d.p(s,o):s+":"+o+";")}return i+(r&&n?r+"{"+n+"}":n)+a},c={},h=t=>{if("object"==typeof t){let r="";for(let i in t)r+=i+h(t[i]);return r}return t};function f(t){let r,i,a,n=this||{},f=t.call?t(n.p):t;return((t,r,i,a,n)=>{var s,f,p,m;let g=h(t),b=c[g]||(c[g]=(t=>{let r=0,i=11;for(;r<t.length;)i=101*i+t.charCodeAt(r++)>>>0;return"go"+i})(g));if(!c[b]){let r=g!==t?t:(t=>{let r,i,a=[{}];for(;r=o.exec(t.replace(l,""));)r[4]?a.shift():r[3]?(i=r[3].replace(u," ").trim(),a.unshift(a[0][i]=a[0][i]||{})):a[0][r[1]]=r[2].replace(u," ").trim();return a[0]})(t);c[b]=d(n?{["@keyframes "+b]:r}:r,i?"":"."+b)}let y=i&&c.g?c.g:null;return i&&(c.g=c[b]),s=c[b],f=r,p=a,(m=y)?f.data=f.data.replace(m,s):-1===f.data.indexOf(s)&&(f.data=p?s+f.data:f.data+s),b}
2809)(f.unshift?f.raw?(r=[].slice.call(arguments,1),i=n.p,f.reduce((t,a,n)=>{let s=r[n];if(s&&s.call){let t=s(i),r=t&&t.props&&t.props.className||/^go/.test(t)&&t;s=r?"."+r:t&&"object"==typeof t?t.props?"":d(t,""):!1===t?"":t}return t+a+(null==s?"":s)},"")):f.reduce((t,r)=>Object.assign(t,r&&r.call?r(n.p):r),{}):f,(a=n.target,"object"==typeof window?((a?a.querySelector("#_goober"):window._goober)||Object.assign((a||document.head).appendChild(document.createElement("style")),{innerHTML:" ",id:"_goober"})).firstChild:a||s),n.g,n.o,n.k)}f.bind({g:1});let p,m,g,b=f.bind({k:1});function y(t,r){let i=this||{};return function(){let a=arguments;function n(s,o){let l=Object.assign({},s),u=l.className||n.className;i.p=Object.assign({theme:m&&m()},l),i.o=/ *go\d+/.test(u),l.className=f.apply(i,a)+(u?" "+u:""),r&&(l.ref=o);let d=t;return t[0]&&(d=l.as||t,delete l.as),g&&d[0]&&g(l),p(d,l)}return r?r(n):n}}var v=(t,r)=>"function"==typeof t?t(r):t,_=(()=>{let t=0;return()=>(++t).toString()})(),w=(()=>{let t;return()=>{if(void 0===t&&"u">typeof window){let r=matchMedia("(prefers-reduced-motion: reduce)");t=!r||r.matches}return t}})(),x=(t,r)=>{switch(r.type){case 0:return{...t,toasts:[r.toast,...t.toasts].slice(0,20)};case 1:return{...t,toasts:t.toasts.map(t=>t.id===r.toast.id?{...t,...r.toast}:t)};case 2:let{toast:i}=r;return x(t,{type:+!!t.toasts.find(t=>t.id===i.id),toast:i});case 3:let{toastId:a}=r;return{...t,toasts:t.toasts.map(t=>t.id===a||void 0===a?{...t,dismissed:!0,visible:!1}:t)};case 4:return void 0===r.toastId?{...t,toasts:[]}:{...t,toasts:t.toasts.filter(t=>t.id!==r.toastId)};case 5:return{...t,pausedAt:r.time};case 6:let n=r.time-(t.pausedAt||0);return{...t,pausedAt:void 0,toasts:t.toasts.map(t=>({...t,pauseDuration:t.pauseDuration+n}))}}},$=[],S={toasts:[],pausedAt:void 0},k=t=>{S=x(S,t),$.forEach(t=>{t(S)})},C={blank:4e3,error:4e3,success:2e3,loading:1/0,custom:4e3},E=t=>(r,i)=>{let a=((t,r="blank",i)=>({createdAt:Date.now(),visible:!0,dismissed:!1,type:r,ariaProps:{role:"status","aria-live":"polite"},message:t,pauseDuration:0,...i,id:(null==i?void 0:i.id)||_()}))(r,t,i);return k({type:2,toast:a}),a.id},T=(t,r)=>E("blank")(t,r);T.error=E("error"),T.success=E("success"),T.loading=E("loading"),T.custom=E("custom"),T.dismiss=t=>{k({type:3,toastId:t})},T.remove=t=>k({type:4,toastId:t}),T.promise=(t,r,i)=>{let a=T.loading(r.loading,{...i,...null==i?void 0:i.loading});return"function"==typeof t&&(t=t()),t.then(t=>{let n=r.success?v(r.success,t):void 0;return n?T.success(n,{id:a,...i,...null==i?void 0:i.success}):T.dismiss(a),t}).catch(t=>{let n=r.error?v(r.error,t):void 0;n?T.error(n,{id:a,...i,...null==i?void 0:i.error}):T.dismiss(a)}),t};var I=(t,r)=>{k({type:1,toast:{id:t,height:r}})},A=()=>{k({type:5,time:Date.now()})},N=new Map,O=1e3,M=b` 2810from { 2811 transform: scale(0) rotate(45deg); 2812 opacity: 0; 2813} 2814to { 2815 transform: scale(1) rotate(45deg); 2816 opacity: 1; 2817}`,P=b` 2818from { 2819 transform: scale(0); 2820 opacity: 0; 2821} 2822to { 2823 transform: scale(1); 2824 opacity: 1; 2825}`,R=b` 2826from { 2827 transform: scale(0) rotate(90deg); 2828 opacity: 0; 2829} 2830to { 2831 transform: scale(1) rotate(90deg); 2832 opacity: 1; 2833}`,j=y("div")` 2834 width: 20px; 2835 opacity: 0; 2836 height: 20px; 2837 border-radius: 10px; 2838 background: ${t=>t.primary||"#ff4b4b"}; 2839 position: relative; 2840 transform: rotate(45deg); 2841 2842 animation: ${M} 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275) 2843 forwards; 2844 animation-delay: 100ms; 2845 2846 &:after, 2847 &:before { 2848 content: ''; 2849 animation: ${P} 0.15s ease-out forwards; 2850 animation-delay: 150ms; 2851 position: absolute; 2852 border-radius: 3px; 2853 opacity: 0; 2854 background: ${t=>t.secondary||"#fff"}; 2855 bottom: 9px; 2856 left: 4px; 2857 height: 2px; 2858 width: 12px; 2859 } 2860 2861 &:before { 2862 animation: ${R} 0.15s ease-out forwards; 2863 animation-delay: 180ms; 2864 transform: rotate(90deg); 2865 } 2866`,z=b` 2867 from { 2868 transform: rotate(0deg); 2869 } 2870 to { 2871 transform: rotate(360deg); 2872 } 2873`,D=y("div")` 2874 width: 12px; 2875 height: 12px; 2876 box-sizing: border-box; 2877 border: 2px solid; 2878 border-radius: 100%; 2879 border-color: ${t=>t.secondary||"#e0e0e0"}; 2880 border-right-color: ${t=>t.primary||"#616161"}; 2881 animation: ${z} 1s linear infinite; 2882`,B=b` 2883from { 2884 transform: scale(0) rotate(45deg); 2885 opacity: 0; 2886} 2887to { 2888 transform: scale(1) rotate(45deg); 2889 opacity: 1; 2890}`,L=b` 28910% { 2892 height: 0; 2893 width: 0; 2894 opacity: 0; 2895} 289640% { 2897 height: 0; 2898 width: 6px; 2899 opacity: 1; 2900} 2901100% { 2902 opacity: 1; 2903 height: 10px; 2904}`,U=y("div")`
2905 width: 20px; 2906 opacity: 0; 2907 height: 20px; 2908 border-radius: 10px; 2909 background: ${t=>t.primary||"#61d345"}; 2910 position: relative; 2911 transform: rotate(45deg); 2912 2913 animation: ${B} 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275) 2914 forwards; 2915 animation-delay: 100ms; 2916 &:after { 2917 content: ''; 2918 box-sizing: border-box; 2919 animation: ${L} 0.2s ease-out forwards; 2920 opacity: 0; 2921 animation-delay: 200ms; 2922 position: absolute; 2923 border-right: 2px solid; 2924 border-bottom: 2px solid; 2925 border-color: ${t=>t.secondary||"#fff"}; 2926 bottom: 6px; 2927 left: 6px; 2928 height: 10px; 2929 width: 6px; 2930 } 2931`,F=y("div")` 2932 position: absolute; 2933`,q=y("div")` 2934 position: relative; 2935 display: flex; 2936 justify-content: center; 2937 align-items: center; 2938 min-width: 20px; 2939 min-height: 20px; 2940`,V=b` 2941from { 2942 transform: scale(0.6); 2943 opacity: 0.4; 2944} 2945to { 2946 transform: scale(1); 2947 opacity: 1; 2948}`,W=y("div")` 2949 position: relative; 2950 transform: scale(0.6); 2951 opacity: 0.4; 2952 min-width: 20px; 2953 animation: ${V} 0.3s 0.12s cubic-bezier(0.175, 0.885, 0.32, 1.275) 2954 forwards; 2955`,H=({toast:t})=>{let{icon:r,type:i,iconTheme:a}=t;return void 0!==r?"string"==typeof r?n.createElement(W,null,r):r:"blank"===i?null:n.createElement(q,null,n.createElement(D,{...a}),"loading"!==i&&n.createElement(F,null,"error"===i?n.createElement(j,{...a}):n.createElement(U,{...a})))},G=y("div")` 2956 display: flex; 2957 align-items: center; 2958 background: #fff; 2959 color: #363636; 2960 line-height: 1.3; 2961 will-change: transform; 2962 box-shadow: 0 3px 10px rgba(0, 0, 0, 0.1), 0 3px 3px rgba(0, 0, 0, 0.05); 2963 max-width: 350px; 2964 pointer-events: auto; 2965 padding: 8px 10px; 2966 border-radius: 8px; 2967`,K=y("div")` 2968 display: flex; 2969 justify-content: center; 2970 margin: 4px 10px; 2971 color: inherit; 2972 flex: 1 1 auto; 2973 white-space: pre-line; 2974`,Y=n.memo(({toast:t,position:r,style:i,children:a})=>{let s=t.height?((t,r)=>{let i=t.includes("top")?1:-1,[a,n]=w()?["0%{opacity:0;} 100%{opacity:1;}","0%{opacity:1;} 100%{opacity:0;}"]:[` 29750% {transform: translate3d(0,${-200*i}%,0) scale(.6); opacity:.5;} 2976100% {transform: translate3d(0,0,0) scale(1); opacity:1;} 2977`,` 29780% {transform: translate3d(0,0,-1px) scale(1); opacity:1;} 2979100% {transform: translate3d(0,${-150*i}%,-1px) scale(.6); opacity:0;} 2980`];return{animation:r?`${b(a)} 0.35s cubic-bezier(.21,1.02,.73,1) forwards`:`${b(n)} 0.4s forwards cubic-bezier(.06,.71,.55,1)`}})(t.position||r||"top-center",t.visible):{opacity:0},o=n.createElement(H,{toast:t}),l=n.createElement(K,{...t.ariaProps},v(t.message,t));return n.createElement(G,{className:t.className,style:{...s,...i,...t.style}},"function"==typeof a?a({icon:o,message:l}):n.createElement(n.Fragment,null,o,l))});a=n.createElement,d.p=void 0,p=a,m=void 0,g=void 0;var Q=({id:t,className:r,style:i,onHeightUpdate:a,children:s})=>{let o=n.useCallback(r=>{if(r){let i=()=>{a(t,r.getBoundingClientRect().height)};i(),new MutationObserver(i).observe(r,{subtree:!0,childList:!0,characterData:!0})}},[t,a]);return n.createElement("div",{ref:o,className:r,style:i},s)},X=f` 2981 z-index: 9999; 2982 > * { 2983 pointer-events: auto; 2984 } 2985`,Z=({reverseOrder:t,position:r="top-center",toastOptions:i,gutter:a,children:s,containerStyle:o,containerClassName:l})=>{let{toasts:u,handlers:d}=(t=>{let{toasts:r,pausedAt:i}=((t={})=>{let[r,i]=(0,n.useState)(S),a=(0,n.useRef)(S);(0,n.useEffect)(()=>(a.current!==S&&i(S),$.push(i),()=>{let t=$.indexOf(i);t>-1&&$.splice(t,1)}),[]);let s=r.toasts.map(r=>{var i,a,n;return{...t,...t[r.type],...r,removeDelay:r.removeDelay||(null==(i=t[r.type])?void 0:i.removeDelay)||(null==t?void 0:t.removeDelay),duration:r.duration||(null==(a=t[r.type])?void 0:a.duration)||(null==t?void 0:t.duration)||C[r.type],style:{...t.style,...null==(n=t[r.type])?void 0:n.style,...r.style}}});return{...r,toasts:s}})(t);(0,n.useEffect)(()=>{if(i)return;let t=Date.now(),a=r.map(r=>{if(r.duration===1/0)return;let i=(r.duration||0)+r.pauseDuration-(t-r.createdAt);if(i<0){r.visible&&T.dismiss(r.id);return}return setTimeout(()=>T.dismiss(r.id),i)});return()=>{a.forEach(t=>t&&clearTimeout(t))}},[r,i]);let a=(0,n.useCallback)(()=>{i&&k({type:6,time:Date.now()})},[i]),s=(0,n.useCallback)((t,i)=>{let{reverseOrder:a=!1,gutter:n=8,defaultPosition:s}=i||{},o=r.filter(r=>(r.position||s)===(t.position||s)&&r.height),l=o.findIndex(r=>
2985r.id===t.id),u=o.filter((t,r)=>r<l&&t.visible).length;return o.filter(t=>t.visible).slice(...a?[u+1]:[0,u]).reduce((t,r)=>t+(r.height||0)+n,0)},[r]);return(0,n.useEffect)(()=>{r.forEach(t=>{if(t.dismissed)((t,r=O)=>{if(N.has(t))return;let i=setTimeout(()=>{N.delete(t),k({type:4,toastId:t})},r);N.set(t,i)})(t.id,t.removeDelay);else{let r=N.get(t.id);r&&(clearTimeout(r),N.delete(t.id))}})},[r]),{toasts:r,handlers:{updateHeight:I,startPause:A,endPause:a,calculateOffset:s}}})(i);return n.createElement("div",{id:"_rht_toaster",style:{position:"fixed",zIndex:9999,top:16,left:16,right:16,bottom:16,pointerEvents:"none",...o},className:l,onMouseEnter:d.startPause,onMouseLeave:d.endPause},u.map(i=>{let o=i.position||r,l=((t,r)=>{let i=t.includes("top"),a=t.includes("center")?{justifyContent:"center"}:t.includes("right")?{justifyContent:"flex-end"}:{};return{left:0,right:0,display:"flex",position:"absolute",transition:w()?void 0:"all 230ms cubic-bezier(.21,1.02,.73,1)",transform:`translateY(${r*(i?1:-1)}px)`,...i?{top:0}:{bottom:0},...a}})(o,d.calculateOffset(i,{reverseOrder:t,gutter:a,defaultPosition:r}));return n.createElement(Q,{id:i.id,key:i.id,onHeightUpdate:d.updateHeight,className:i.visible?X:"",style:l},"custom"===i.type?v(i.message,i):s?s(i):n.createElement(Y,{toast:i,position:o}))}))},J=T},97947:function(t,r,i){"use strict";var a=this&&this.__assign||function(){return(a=Object.assign||function(t){for(var r,i=1,a=arguments.length;i<a;i++)for(var n in r=arguments[i])Object.prototype.hasOwnProperty.call(r,n)&&(t[n]=r[n]);return t}).apply(this,arguments)},n=this&&this.__spreadArrays||function(){for(var t=0,r=0,i=arguments.length;r<i;r++)t+=arguments[r].length;for(var a=Array(t),n=0,r=0;r<i;r++)for(var s=arguments[r],o=0,l=s.length;o<l;o++,n++)a[n]=s[o];return a};Object.defineProperty(r,"__esModule",{value:!0}),r.Chess=void 0;var s=i(29610),o=i(73198),l=i(18722),u=i(6162);r.Chess=function(){function t(t){if(void 0===t&&(t=u.DEFAULT_POSITION),this._state=new o.State,this._history=[],this._header={},this._comments={},!this.load(t))throw Error("Error loading fen")}return Object.defineProperty(t.prototype,"state",{get:function(){return this._state.clone()},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"states",{get:function(){return n(this._history.map(function(t){return t.state.clone()}),[this.state])},enumerable:!1,configurable:!0}),t.prototype.load=function(t,r){void 0===r&&(r=!1);var i=s.loadFen(t);return!!i&&(this._state=i,this._history=[],r||(this._header={}),this._comments={},this.updateSetup(),!0)},t.prototype.clear=function(t){void 0===t&&(t=!1),this._state=new o.State,this._history=[],t||(this._header={}),this._comments={},this.updateSetup()},t.prototype.reset=function(){this.load(u.DEFAULT_POSITION)},t.prototype.get=function(t){return s.getPiece(this._state,t)},t.prototype.put=function(t,r){var i=s.putPiece(this._state,t,r);return!!i&&(this._state=i,this.updateSetup(),!0)},t.prototype.remove=function(t){var r=s.getPiece(this._state,t);if(!r)return null;var i=s.removePiece(this._state,t);return i?(this._state=i,r):null},t.prototype.moves=function(t){var r=this;void 0===t&&(t={});var i=t.square,a=t.verbose,n=s.generateMoves(this._state,{square:i});return void 0!==a&&a?n.map(function(t){return s.makePretty(r._state,t)}):n.map(function(t){return s.moveToSan(r._state,t)})},t.prototype.fen=function(){return this._state.fen},t.prototype.inCheck=function(){return s.inCheck(this._state)},t.prototype.inCheckmate=function(){return s.inCheckmate(this._state)},t.prototype.inStalemate=function(){return s.inStalemate(this._state)},t.prototype.insufficientMaterial=function(){return s.insufficientMaterial(this._state)},t.prototype.inThreefoldRepetition=function(){for(var t={},r=function(r){var i=r.fen.split(" ").slice(0,4).join(" ");return t[i]=i in t?t[i]+1:1,t[i]>=3},i=0,a=this._history;i<a.length;i++)if(r(a[i].state))return!0;return r(this._state)},t.prototype.inDraw=function(){return this._state.half_moves>=100||this.inStalemate()||this.insufficientMaterial()||this.inThreefoldRepetition()},t.prototype.gameOver=function(){return this.inCheckmate()||this.inDraw()},t.prototype.board=function(){return s.getBoard(this._state.board)},t.prototype.pgn=function(t){return void 0===t&&(t={}),s.getPgn(this._state,this._header,this._comments,this._history,t)},t.prototype.loadPgn=function(t,r){void 0===r&&(r={});var i=s.loadPgn(t,r);if(!i)return!1;var a=i[0],n=i[1],o=i[2],l=i[3];return this._state=a,this._header=n,this._comments=o,this._history=l,!0},t.prototype.header=function(){return this._header},t.prototype.setHeader=function(t){this._header=t},t.prototype.addHeader=function(t,r){this._header[t]=r},t.prototype.removeHeader=function(t){delete this._header[t]},t.prototype.clearHeader=function(){this._header={}},t.prototype.ascii=function(t){return void 0===t&&(t="\n"),s.ascii(this._state.board,t)},t.prototype.turn=function(){return this._state.turn},t.prototype.move=function(t,r){void 0===r&&(r={});var i=s.validateMove(this._state,t,r);if(!i)return null;var a=s.makePretty(this._state,i);return r.dry_run||this.makeMove(i),a},t.prototype.validateMoves=function(t,r){void 0===r&&(r={});for(var i=[],a=this._state,n=0;n<t.length;n++){var o=t[n],l=s.validateMove(a,o,r);if(!l)return null;i.push(s.makePretty(a,l)),a=s.makeMove(a,l)}return i},t.prototype.isPromotion=function(t,r){void 0===r&&(r={});var i=s.validateMove(this._state,t,a(a({},r),{checkPromotion:!1}));return!!i&&!!(i.flags&u.BITS.PROMOTION)},t.prototype.undo=function(){var t=this.undoMove();return t?s.makePretty(this._state,t):null},t.prototype.squareColor=function(t){if(l.isSquare(t)){var r=u.SQUARES[t];return(l.rank(r)+l.file(r))%2==0?"light":"dark"}return null},t.prototype.history=function(t){void 0===t&&(t={});var r,i=t.verbose;return this._history.length?void 0!==i&&i?this._history.map(function(t){var i=t.move;return r=t.state,s.makePretty(r,i)}):this._history.map(function(t){var i=t.move;return r=t.state,s.moveToSan(r,i)}):[]},t.prototype.getComment=function(t){return t=t||this.fen(),this._comments[t]},t.prototype.getComments=function(){var t=this;return this.pruneComments(),Object.keys(this._comments).map(function(r){return{fen:r,comment:t._comments[r]}})},t.prototype.setComment=function(t,r){r=r||this.fen(),this._comments[r]=t.replace("{","[").replace("}","]")},t.prototype.deleteComment=function(t){t=t||this.fen();var r=this._comments[t];return delete this._comments[t],r},t.prototype.deleteComments=function(){var t=this;return this.pruneComments(),Object.keys(this._comments).map(function(r){var i=t._comments[r];return delete t._comments[r],{fen:r,comment:i}})},t.prototype.validateFen=function(t){return l.validateFen(t)},t.prototype.clone=function(){var r=new t;return r._state=this._state,r._history=n(this._history),r._header=a({},this._header),r._comments=a({},this._comments),r},t.prototype.perft=function(t){for(var r=s.generateMoves(this._state,{legal:!1}),i=0,a=this._state.turn,n=0,o=r.length;n<o;n++)this.makeMove(r[n]),!this.kingAttacked(a)&&(t-1>0?i+=this.perft(t-1):i++),this.undoMove();return i},t.prototype.updateSetup=function(){var t=this._state.fen;this._history.length>0||(t!==u.DEFAULT_POSITION?(this._header.SetUp="1",this._header.FEN=t):(delete this._header.SetUp,delete this._header.FEN))},t.prototype.pruneComments=function(){var t=this,r={},i=function(i){i in t._comments&&(r[i]=t._comments[i])};
2985this._history.forEach(function(t){i((a=t.state).fen)});var a=this._state;i(a.fen),this._comments=r},t.prototype.strippedSan=function(t){return t.replace(/=/,"").replace(/[+#]?[?!]*$/,"")},t.prototype.attacked=function(t,r){return s.isAttacked(this._state,t,r)},t.prototype.kingAttacked=function(t){return this.attacked(l.swapColor(t),this._state.kings[t])},t.prototype.makeMove=function(t){this._history.push({move:t,state:this._state}),this._state=s.makeMove(this._state,t)},t.prototype.undoMove=function(){var t=this._history.pop();return null==t?null:(this._state=t.state,t.move)},t}()},98082:(t,r,i)=>{"use strict";i.d(r,{R:()=>o});var a=i(32711),n=i(36500),s=i(51024);class o{get fen(){return this._fen}get move(){return this._move}get san(){return this._san}get parent(){return this._parent}get children(){return this._children}get isMainline(){return this._mainline}get mainChild(){return this._mainChild}get analysis(){return this._analysis}get turn(){return this._turn}get check(){return this._check}get blunder(){return this._blunder}get inaccuracy(){return this._inaccuracy}get excellentMove(){return this._excellentMove}get bestMove(){return this._bestMove}get moveNumber(){return this._moveNumber}get time(){return this._time}get color(){return this._color}parseTurn(t){let r=t.split(" ");return"w"===r[1]||"b"===r[1]?r[1]:"w"}parseMoveNumber(t,r){let i=parseInt(t.split(" ")[5],10);return Number.isNaN(i)?1:i-("w"===r)}parseCheck(t){try{return new a.d$(t).inCheck()}catch(t){return!1}}performMoveClassification(t,r,i,a){if(!t||t.depth<12)return{blunder:!1,inaccuracy:!1,excellent:!1,bestMove:!1};let s=i===t.model_move,o=!1,l=!1,u=!1;if(t.winrate_loss_vec){let r=t.winrate_loss_vec[i];if(void 0!==r){let t=Math.abs(r);l=!(o=t>=n.ce.BLUNDER_THRESHOLD)&&t>=n.ce.INACCURACY_THRESHOLD}}else{var d;let r=null==(d=t.cp_relative_vec)?void 0:d[i];void 0!==r&&(o=r<-150)}if(r&&a&&r[a]&&t.winrate_vec){let s=r[a].policy;if(s&&i in s&&s[i]<=n.ce.MAIA_UNLIKELY_THRESHOLD){let r=this.calculateWeightedAverageWinrate(t.winrate_vec,s),a=t.winrate_vec[i];void 0!==a&&null!==r&&(u=a>=r+n.ce.EXCELLENT_WINRATE_ADVANTAGE_THRESHOLD)}}return{blunder:o,inaccuracy:l,excellent:u,bestMove:s}}calculateWeightedAverageWinrate(t,r){let i=0,a=0;for(let n in r){let s=r[n],o=t[n];void 0!==s&&void 0!==o&&(a+=s*o,i+=s)}return i>0?a/i:null}classifyMoveByWinrate(t,r,i,a){let n=this.performMoveClassification(i,this._analysis.maia,r,a);t._bestMove=n.bestMove,t._blunder=n.blunder,t._inaccuracy=n.inaccuracy,t._excellentMove=n.excellent}addChild(t,r,i){let a=arguments.length>3&&void 0!==arguments[3]&&arguments[3],n=arguments.length>4?arguments[4]:void 0,l=arguments.length>5?arguments[5]:void 0,u=new o(t,r,i,this,a,l||null);return this._children.push(u),a&&(this._mainChild=u),this._analysis.stockfish&&this._analysis.stockfish.depth>=12&&r&&(this.classifyMoveByWinrate(u,r,this._analysis.stockfish,n),u._color=(0,s.Tf)(this._analysis.stockfish,r)),u}addMaiaAnalysis(t,r){if(this._analysis.maia=t,this._analysis.stockfish&&this._analysis.stockfish.depth>=12)for(let t of this._children)t.move&&this.classifyMoveByWinrate(t,t.move,this._analysis.stockfish,r)}addStockfishAnalysis(t,r){let i=this._analysis.stockfish;if(i){if(i.depth>t.depth)return;if(i.depth===t.depth){var a,n,o,l;let r=i.diagnostics,s=t.diagnostics,u=null==(a=i.diagnostics)?void 0:a.strategy,d=null==(n=t.diagnostics)?void 0:n.strategy,c=null==(o=i.diagnostics)?void 0:o.positionId,h=null==(l=t.diagnostics)?void 0:l.positionId,f=!!d&&!!u&&d===u&&!!h&&!!c&&h===c&&!!s&&!!r&&s.totalTimeMs>=r.totalTimeMs;if(!(d&&u&&d!==u||h&&c&&h!==c||t.diagnostics&&!i.diagnostics||f))return}}if(this._analysis.stockfish=t,t.depth>=12)for(let i of this._children)i.move&&(this.classifyMoveByWinrate(i,i.move,t,r),i._color=(0,s.Tf)(t,i.move))}getMainLine(){return this._mainChild?[this,...this._mainChild.getMainLine()]:[this]}getVariations(){return this._children.filter(t=>!t.isMainline)}findVariation(t){return this._children.find(r=>r.move===t&&!r.isMainline)||null}getPath(){return this._parent?[...this._parent.getPath(),this]:[this]}removeVariation(t){let r=this._children.findIndex(r=>r.move===t&&!r.isMainline);return -1!==r&&(this._children.splice(r,1),!0)}removeAllChildren(){this._children=[],this._mainChild=null}setTime(t){this._time=t}static classifyMove(t,r,i){return new o("temp").performMoveClassification(t.analysis.stockfish||{}
2985,t.analysis.maia,r,i)}constructor(t,r=null,i=null,a=null,n=!0,s=null){this._fen=t,this._move=r,this._san=i,this._parent=a,this._children=[],this._mainChild=null,this._mainline=n,this._analysis={},this._blunder=!1,this._inaccuracy=!1,this._excellentMove=!1,this._bestMove=!1,this._turn=this.parseTurn(t),this._check=this.parseCheck(t),this._moveNumber=this.parseMoveNumber(t,this._turn),this._time=s,this._color=null}}},99207:(t,r,i)=>{"use strict";i.d(r,{b:()=>n});var a=i(14232);function n(t){let r=(0,a.useRef)(t);(0,a.useEffect)(()=>{r.current=t},[t]),(0,a.useEffect)(()=>{let t=t=>{let i;if("function"==typeof r.current&&(i=r.current(t)),t.defaultPrevented&&(t.returnValue=""),"string"==typeof i)return t.returnValue=i,i};return window.addEventListener("beforeunload",t),()=>{window.removeEventListener("beforeunload",t)}},[])}},99489:(t,r,i)=>{"use strict";i.d(r,{G:()=>d});var a=i(90620),n=i(37605),s=i(2589),o=i(94349),l=i(30287),u=i(2926);function d(t,r,{clamp:i=!0,ease:c,mixer:h}={}){let f=t.length;if((0,n.V)(f===r.length,"Both input and output ranges must be the same length"),1===f)return()=>r[0];if(2===f&&r[0]===r[1])return()=>r[1];let p=t[0]===t[1];t[0]>t[f-1]&&(t=[...t].reverse(),r=[...r].reverse());let m=function(t,r,i){let n=[],s=i||l.j,o=t.length-1;for(let i=0;i<o;i++){let o=s(t[i],t[i+1]);if(r){let t=Array.isArray(r)?r[i]||a.l:r;o=(0,u.F)(t,o)}n.push(o)}return n}(r,c,h),g=m.length,b=i=>{if(p&&i<t[0])return r[0];let a=0;if(g>1)for(;a<t.length-2&&!(i<t[a+1]);a++);let n=(0,s.q)(t[a],t[a+1],i);return m[a](n)};return i?r=>b((0,o.q)(t[0],t[f-1],r)):b}}},t=>{var r=r=>t(t.s=r);t.O(0,[593,792],()=>(r(92),r(16296))),_N_E=t.O()}]);
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.