/* Human homepage: author: ' */ var Human=(()=>{var Gh=Object.defineProperty;var BE=Object.getOwnPropertyDescriptor;var WE=Object.getOwnPropertyNames;var VE=Object.prototype.hasOwnProperty;var UE=(e,t,n)=>t in e?Gh(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var wa=(e,t)=>{for(var n in t)Gh(e,n,{get:t[n],enumerable:!0})},GE=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of WE(t))!VE.call(e,s)&&s!==n&&Gh(e,s,{get:()=>t[s],enumerable:!(r=BE(t,s))||r.enumerable});return e};var HE=e=>GE(Gh({},"__esModule",{value:!0}),e);var fe=(e,t,n)=>(UE(e,typeof t!="symbol"?t+"":t,n),n),_b=(e,t,n)=>{if(!t.has(e))throw TypeError("Cannot "+n)};var fd=(e,t,n)=>(_b(e,t,"read from private field"),n?n.call(e):t.get(e)),md=(e,t,n)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,n)},gd=(e,t,n,r)=>(_b(e,t,"write to private field"),r?r.call(e,n):t.set(e,n),n);var fxe={};wa(fxe,{Human:()=>ub,default:()=>ub,defaults:()=>ka,draw:()=>nb,env:()=>pe,match:()=>lb,models:()=>f2});function oe(...e){let t=new Date,n=`${t.getHours().toString().padStart(2,"0")}:${t.getMinutes().toString().padStart(2,"0")}:${t.getSeconds().toString().padStart(2,"0")}.${t.getMilliseconds().toString().padStart(3,"0")}`;e&&console.log(n,"Human:",...e)}function $b(e,t){let n=e.endsWith("/")?"":"/",s=t.startsWith(".")||t.startsWith("/")||t.startsWith("http:")||t.startsWith("https:")||t.startsWith("file:")?`${t}`:`${e}${n}${t}`;if(!s.toLocaleLowerCase().includes(".json"))throw new Error(`modelpath error: expecting json file: ${s}`);return s}var le=()=>typeof performance!="undefined"?performance.now():parseInt((Number(process.hrtime.bigint())/1e3/1e3).toString());function Z1(e,t,n="config",r=[]){for(let s of Object.keys(t))if(typeof t[s]=="object")Z1(e[s],t[s],s,r);else{let a=e&&typeof e[s]!="undefined";a||r.push({reason:"unknown property",where:`${n}.${s} = ${t[s]}`});let o=e&&typeof e[s]==typeof t[s];a&&!o&&r.push({reason:"property type mismatch",where:`${n}.${s} = ${t[s]}`,expected:typeof e[s]})}return t.debug&&n==="config"&&r.length>0&&oe("invalid configuration",r),r}function Gt(...e){let t=n=>n&&typeof n=="object";return e.reduce((n,r)=>(Object.keys(r||{}).forEach(s=>{let a=n[s],o=r[s];Array.isArray(a)&&Array.isArray(o)?n[s]=a.concat(...o):t(a)&&t(o)?n[s]=Gt(a,o):n[s]=o}),n),{})}var ka={backend:"",modelBasePath:"",cacheModels:!0,wasmPath:"",wasmPlatformFetch:!1,debug:!0,async:!0,warmup:"full",cacheSensitivity:.7,skipAllowed:!1,deallocate:!1,filter:{enabled:!0,equalization:!1,width:0,height:0,flip:!1,return:!0,brightness:0,contrast:0,sharpness:0,blur:0,saturation:0,hue:0,negative:!1,sepia:!1,vintage:!1,kodachrome:!1,technicolor:!1,polaroid:!1,pixelate:0},gesture:{enabled:!0},face:{enabled:!0,detector:{modelPath:"blazeface.json",rotation:!0,maxDetected:1,skipFrames:99,skipTime:2500,minConfidence:.2,iouThreshold:.1,mask:!1,return:!1},mesh:{enabled:!0,modelPath:"facemesh.json"},attention:{enabled:!1,modelPath:"facemesh-attention.json"},iris:{enabled:!0,modelPath:"iris.json"},emotion:{enabled:!0,minConfidence:.1,skipFrames:99,skipTime:1500,modelPath:"emotion.json"},description:{enabled:!0,modelPath:"faceres.json",skipFrames:99,skipTime:3e3,minConfidence:.1},antispoof:{enabled:!1,skipFrames:99,skipTime:4e3,modelPath:"antispoof.json"},liveness:{enabled:!1,skipFrames:99,skipTime:4e3,modelPath:"liveness.json"}},body:{enabled:!0,modelPath:"movenet-lightning.json",maxDetected:-1,minConfidence:.3,skipFrames:1,skipTime:200},hand:{enabled:!0,rotation:!0,skipFrames:99,skipTime:1e3,minConfidence:.5,iouThreshold:.2,maxDetected:-1,landmarks:!0,detector:{modelPath:"handtrack.json"},skeleton:{modelPath:"handlandmark-full.json"}},object:{enabled:!1,modelPath:"mb3-centernet.json",minConfidence:.2,iouThreshold:.4,maxDetected:10,skipFrames:99,skipTime:2e3},segmentation:{enabled:!1,modelPath:"selfie.json",blur:8}};var Ue={};wa(Ue,{Abs:()=>Gi,Acos:()=>zu,Acosh:()=>Lu,AdadeltaOptimizer:()=>Gm,AdagradOptimizer:()=>Hm,AdamOptimizer:()=>jm,AdamaxOptimizer:()=>qm,Add:()=>ea,AddN:()=>Za,All:()=>Bu,Any:()=>Wu,ArgMax:()=>Ya,ArgMin:()=>Vu,Asin:()=>Uu,Asinh:()=>Gu,Atan:()=>Hu,Atan2:()=>qu,Atanh:()=>ju,AvgPool:()=>Ja,AvgPool3D:()=>Yd,AvgPool3DGrad:()=>Jf,AvgPoolGrad:()=>Yf,BackendWasm:()=>c9,BatchMatMul:()=>Qa,BatchToSpaceND:()=>Hi,Bincount:()=>Qf,BroadcastArgs:()=>em,BroadcastTo:()=>D4,Callback:()=>ik,CallbackList:()=>i6,Cast:()=>eo,Ceil:()=>to,ClipByValue:()=>ta,Complex:()=>Jd,ComplexAbs:()=>Qd,Concat:()=>ji,Conv2D:()=>no,Conv2DBackpropFilter:()=>tm,Conv2DBackpropInput:()=>ro,Conv3D:()=>ep,Conv3DBackpropFilterV2:()=>nm,Conv3DBackpropInputV2:()=>rm,Cos:()=>so,Cosh:()=>ao,CropAndResize:()=>Xi,Cumprod:()=>qi,Cumsum:()=>oo,CustomCallback:()=>u6,DataStorage:()=>Zd,DenseBincount:()=>sm,DepthToSpace:()=>Ki,DepthwiseConv2dNative:()=>io,DepthwiseConv2dNativeBackpropFilter:()=>am,DepthwiseConv2dNativeBackpropInput:()=>om,Diag:()=>im,Dilation2D:()=>tp,Dilation2DBackpropFilter:()=>xf,Dilation2DBackpropInput:()=>Af,ENV:()=>xs,EarlyStopping:()=>lk,Einsum:()=>np,Elu:()=>uo,EluGrad:()=>lm,Environment:()=>_4,Equal:()=>Zi,Erf:()=>Xu,Exp:()=>co,ExpandDims:()=>Yi,Expm1:()=>Ji,FFT:()=>um,Fill:()=>Ku,FlipLeftRight:()=>Qi,Floor:()=>po,FloorDiv:()=>ho,FromPixels:()=>Md,FusedBatchNorm:()=>fo,FusedConv2D:()=>Fa,FusedDepthwiseConv2D:()=>Oa,GPGPUContext:()=>vu,GatherNd:()=>tl,GatherV2:()=>el,GraphModel:()=>A0,Greater:()=>nl,GreaterEqual:()=>mo,History:()=>l6,IFFT:()=>cm,Identity:()=>go,Imag:()=>rp,InputSpec:()=>Zt,IsFinite:()=>Zu,IsInf:()=>Yu,IsNan:()=>Ju,KernelBackend:()=>Ou,LRN:()=>ap,LRNGrad:()=>pm,LayerVariable:()=>J7,LayersModel:()=>Ys,LeakyRelu:()=>yo,Less:()=>rl,LessEqual:()=>sl,LinSpace:()=>dm,Log:()=>Ao,Log1p:()=>Qu,LogSoftmax:()=>P4,LogicalAnd:()=>al,LogicalNot:()=>ec,LogicalOr:()=>sp,MathBackendCPU:()=>Kx,MathBackendWebGL:()=>Bp,Max:()=>xo,MaxPool:()=>vo,MaxPool3D:()=>op,MaxPool3DGrad:()=>fm,MaxPoolGrad:()=>hm,MaxPoolWithArgmax:()=>mm,Maximum:()=>bo,Mean:()=>wo,Min:()=>ko,Minimum:()=>So,MirrorPad:()=>Io,Mod:()=>tc,MomentumOptimizer:()=>Xm,Multinomial:()=>gm,Multiply:()=>Co,Neg:()=>ol,NonMaxSuppressionV3:()=>ll,NonMaxSuppressionV4:()=>nc,NonMaxSuppressionV5:()=>ul,NotEqual:()=>il,OP_SCOPE_SUFFIX:()=>K4,OneHot:()=>dl,OnesLike:()=>cl,Optimizer:()=>aa,OptimizerConstructors:()=>Ia,Pack:()=>pl,PadV2:()=>To,Pool:()=>OR,Pow:()=>No,Prelu:()=>Eo,Prod:()=>Ro,RMSPropOptimizer:()=>Km,RNN:()=>oa,Range:()=>rc,Rank:()=>L4,Real:()=>ip,RealDiv:()=>lo,Reciprocal:()=>sc,Reduction:()=>O7,Relu:()=>_o,Relu6:()=>Do,Reshape:()=>hl,ResizeBilinear:()=>$o,ResizeBilinearGrad:()=>Am,ResizeNearestNeighbor:()=>ac,ResizeNearestNeighborGrad:()=>ym,Reverse:()=>fl,RotateWithOffset:()=>Nl,Round:()=>ml,Rsqrt:()=>Po,SGDOptimizer:()=>Cp,ScatterNd:()=>gl,Select:()=>yl,Selu:()=>oc,Sequential:()=>u0,Sigmoid:()=>Oo,Sign:()=>ic,Sin:()=>Fo,Sinh:()=>xl,Slice:()=>Al,Softmax:()=>Lo,Softplus:()=>lc,SpaceToBatchND:()=>bl,SparseFillEmptyRows:()=>lp,SparseReshape:()=>uc,SparseSegmentMean:()=>up,SparseSegmentSum:()=>cp,SparseToDense:()=>dp,SplitV:()=>vl,Sqrt:()=>Mo,Square:()=>cc,SquaredDifference:()=>Bo,Step:()=>Go,StridedSlice:()=>wl,StringNGrams:()=>pp,StringSplit:()=>xm,StringToHashBucketFast:()=>bm,Sub:()=>Wo,Sum:()=>zo,SymbolicTensor:()=>cs,Tan:()=>kl,Tanh:()=>Vo,Tensor:()=>rt,TensorBuffer:()=>on,Tile:()=>na,TopK:()=>Sl,Transform:()=>Il,Transpose:()=>Uo,Unique:()=>vm,Unpack:()=>Cl,UnsortedSegmentSum:()=>hp,Variable:()=>Bd,ZerosLike:()=>Tl,_FusedMatMul:()=>Pa,abs:()=>rn,acos:()=>Nw,acosh:()=>Ew,add:()=>ue,addN:()=>km,all:()=>Fy,any:()=>If,argMax:()=>Rr,argMin:()=>Rw,asin:()=>_w,asinh:()=>$w,atan:()=>Dw,atan2:()=>Pw,atanh:()=>Fw,avgPool:()=>Sm,avgPool3d:()=>My,backend:()=>zr,backend_util:()=>C,basicLSTMCell:()=>kD,batchNorm:()=>Iu,batchNorm2d:()=>Lw,batchNorm3d:()=>Bw,batchNorm4d:()=>Ww,batchToSpaceND:()=>Im,bincount:()=>zy,booleanMaskAsync:()=>OO,broadcastArgs:()=>Vw,broadcastTo:()=>$d,broadcast_util:()=>El,browser:()=>Mr,buffer:()=>We,callbacks:()=>fH,cast:()=>ge,ceil:()=>Uw,clipByValue:()=>yr,clone:()=>Gn,complex:()=>Ma,concat:()=>St,concat1d:()=>Gw,concat2d:()=>pc,concat3d:()=>Hw,concat4d:()=>jw,constraints:()=>r6,conv1d:()=>Ly,conv2d:()=>La,conv2dTranspose:()=>Wy,conv3d:()=>Vy,conv3dTranspose:()=>Xw,copyRegisteredKernels:()=>BR,cos:()=>Cm,cosh:()=>Uy,cosineWindow:()=>hA,cumprod:()=>Tf,cumsum:()=>Gy,customGrad:()=>Ds,data:()=>Dk,denseBincount:()=>Kw,deprecationWarn:()=>$y,depthToSpace:()=>Zw,depthwiseConv2d:()=>vp,deregisterOp:()=>yH,device_util:()=>yp,diag:()=>eP,dilation2d:()=>Yw,disableDeprecationWarnings:()=>L$,dispose:()=>ne,disposeVariables:()=>B$,div:()=>de,divNoNan:()=>Jw,dot:()=>iP,dropout:()=>T7,einsum:()=>Qw,elu:()=>wp,enableDebugMode:()=>z$,enableProdMode:()=>_y,enclosingPowerOfTwo:()=>N7,engine:()=>sn,env:()=>Y,equal:()=>_r,erf:()=>e7,exp:()=>$r,expandDims:()=>Kt,expm1:()=>t7,eye:()=>Hy,fft:()=>Mm,fill:()=>hc,findBackend:()=>Py,findBackendFactory:()=>G$,floor:()=>kp,floorDiv:()=>xp,forceHalfFloat:()=>t8,fused:()=>Va,gather:()=>Cu,gatherND:()=>C7,gather_util:()=>Sy,getBackend:()=>qn,getGradient:()=>dg,getKernel:()=>bf,getKernelsForBackend:()=>_s,getThreadsCount:()=>xye,gpgpu_util:()=>$I,grad:()=>$P,grads:()=>DP,greater:()=>Ar,greaterEqual:()=>_l,ifft:()=>Gd,imag:()=>Tm,image:()=>Se,inTopKAsync:()=>qO,initializers:()=>s6,input:()=>k6,io:()=>Cn,irfft:()=>lA,isFinite:()=>wP,isInf:()=>SP,isNaN:()=>n7,keep:()=>fn,kernel_impls:()=>Kr,layers:()=>a6,leakyRelu:()=>Nm,less:()=>jy,lessEqual:()=>$l,linalg:()=>M7,linspace:()=>r7,loadGraphModel:()=>bj,loadLayersModel:()=>IU,localResponseNormalization:()=>s7,log:()=>Dr,log1p:()=>Em,logSigmoid:()=>LP,logSoftmax:()=>qy,logSumExp:()=>u7,logicalAnd:()=>ms,logicalNot:()=>_m,logicalOr:()=>Zy,logicalXor:()=>YP,losses:()=>_z,matMul:()=>Ye,math:()=>uw,max:()=>gn,maxPool:()=>$m,maxPool3d:()=>Yy,maxPoolWithArgmax:()=>c7,maximum:()=>ra,mean:()=>Vt,memory:()=>Sf,meshgrid:()=>rF,metrics:()=>sk,min:()=>Ba,minimum:()=>Sp,mirrorPad:()=>d7,mod:()=>mc,model:()=>kU,models:()=>ak,moments:()=>Dm,movingAverage:()=>LO,mul:()=>L,multiRNNCell:()=>dF,multinomial:()=>p7,neg:()=>zt,nextFrame:()=>gA,norm:()=>dA,notEqual:()=>Tu,oneHot:()=>Vd,ones:()=>gr,onesLike:()=>Pr,op:()=>V,outerProduct:()=>gF,pad:()=>Xr,pad1d:()=>xF,pad2d:()=>vF,pad3d:()=>kF,pad4d:()=>IF,pool:()=>RF,pow:()=>Wa,prelu:()=>Fm,print:()=>aw,prod:()=>Jy,profile:()=>W$,rand:()=>FF,randomGamma:()=>LF,randomNormal:()=>h7,randomUniform:()=>gc,range:()=>Nu,ready:()=>dc,real:()=>Ud,reciprocal:()=>f7,registerBackend:()=>Rl,registerCallbackConstructor:()=>CU,registerGradient:()=>F4,registerKernel:()=>qr,registerOp:()=>gH,regularizers:()=>ok,relu:()=>Os,relu6:()=>tA,removeBackend:()=>U$,reshape:()=>H,reverse:()=>Fr,reverse1d:()=>XF,reverse2d:()=>ZF,reverse3d:()=>JF,reverse4d:()=>eO,rfft:()=>zm,round:()=>nA,rsqrt:()=>rA,scalar:()=>Ie,scatterND:()=>I7,scatter_util:()=>Iy,selu:()=>sA,separableConv2d:()=>m7,sequential:()=>SU,serialization:()=>ce,setBackend:()=>Dy,setPlatform:()=>H$,setThreadsCount:()=>Aye,setWasmPath:()=>yye,setWasmPaths:()=>_3,setWebGLContext:()=>v0,setdiff1dAsync:()=>g7,shared:()=>x0,sigmoid:()=>Tn,sign:()=>y7,signal:()=>Rz,sin:()=>aA,sinh:()=>oA,slice:()=>Pe,slice1d:()=>Om,slice2d:()=>iA,slice3d:()=>Dl,slice4d:()=>Fi,slice_util:()=>Mt,softmax:()=>yc,softplus:()=>fc,spaceToBatchND:()=>Pm,sparse:()=>kd,sparseToDense:()=>pA,spectral:()=>Ez,split:()=>Yt,sqrt:()=>En,square:()=>xt,squaredDifference:()=>uA,squeeze:()=>tt,stack:()=>cn,step:()=>Ip,stridedSlice:()=>A7,string:()=>af,sub:()=>he,sum:()=>ke,sumOutType:()=>gp,tan:()=>x7,tanh:()=>Su,tensor:()=>pt,tensor1d:()=>Ct,tensor2d:()=>ps,tensor3d:()=>dw,tensor4d:()=>CO,tensor5d:()=>TO,tensor6d:()=>NO,tensor_util:()=>ds,test_util:()=>Iw,tidy:()=>K,tile:()=>Gr,time:()=>V$,topk:()=>b7,train:()=>Ai,transpose:()=>et,truncatedNormal:()=>Lm,unique:()=>Sg,unregisterGradient:()=>LR,unregisterKernel:()=>zR,unsortedSegmentSum:()=>v7,unstack:()=>rr,upcastType:()=>Nn,util:()=>w,valueAndGrad:()=>PP,valueAndGrads:()=>FP,variable:()=>w7,variableGrads:()=>a7,version:()=>Kp,version_converter:()=>vj,version_core:()=>Ry,version_cpu:()=>iX,version_layers:()=>LA,version_wasm:()=>bye,version_webgl:()=>_te,webgl:()=>$te,webgl_util:()=>nI,webgpu:()=>aC,where:()=>Hn,whereAsync:()=>cA,zeros:()=>Ft,zerosLike:()=>st});var jE=Object.create,qf=Object.defineProperty,qE=Object.getOwnPropertyDescriptor,x4=Object.getOwnPropertyNames,XE=Object.getPrototypeOf,KE=Object.prototype.hasOwnProperty,ZE=e=>qf(e,"__esModule",{value:!0}),dn=(e,t)=>function(){return t||(0,e[x4(e)[0]])((t={exports:{}}).exports,t),t.exports},Le=(e,t)=>{for(var n in t)qf(e,n,{get:t[n],enumerable:!0})},YE=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of x4(t))!KE.call(e,s)&&(n||s!=="default")&&qf(e,s,{get:()=>t[s],enumerable:!(r=qE(t,s))||r.enumerable});return e},Vi=(e,t)=>YE(ZE(qf(e!=null?jE(XE(e)):{},"default",!t&&e&&e.__esModule?{get:()=>e.default,enumerable:!0}:{value:e,enumerable:!0})),e),JE=dn({"src/node_modules/long/src/long.js"(e,t){t.exports=r;var n=null;try{n=new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,1,13,2,96,0,1,127,96,4,127,127,127,127,1,127,3,7,6,0,1,1,1,1,1,6,6,1,127,1,65,0,11,7,50,6,3,109,117,108,0,1,5,100,105,118,95,115,0,2,5,100,105,118,95,117,0,3,5,114,101,109,95,115,0,4,5,114,101,109,95,117,0,5,8,103,101,116,95,104,105,103,104,0,0,10,191,1,6,4,0,35,0,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,126,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,127,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,128,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,129,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,130,34,4,66,32,135,167,36,0,32,4,167,11])),{}).exports}catch(D){}function r(D,T,F){this.low=D|0,this.high=T|0,this.unsigned=!!F}r.prototype.__isLong__,Object.defineProperty(r.prototype,"__isLong__",{value:!0});function s(D){return(D&&D.__isLong__)===!0}r.isLong=s;var a={},o={};function i(D,T){var F,U,X;return T?(D>>>=0,(X=0<=D&&D<256)&&(U=o[D],U)?U:(F=u(D,(D|0)<0?-1:0,!0),X&&(o[D]=F),F)):(D|=0,(X=-128<=D&&D<128)&&(U=a[D],U)?U:(F=u(D,D<0?-1:0,!1),X&&(a[D]=F),F))}r.fromInt=i;function l(D,T){if(isNaN(D))return T?b:A;if(T){if(D<0)return b;if(D>=g)return R}else{if(D<=-y)return P;if(D+1>=y)return E}return D<0?l(-D,T).neg():u(D%m|0,D/m|0,T)}r.fromNumber=l;function u(D,T,F){return new r(D,T,F)}r.fromBits=u;var c=Math.pow;function p(D,T,F){if(D.length===0)throw Error("empty string");if(D==="NaN"||D==="Infinity"||D==="+Infinity"||D==="-Infinity")return A;if(typeof T=="number"?(F=T,T=!1):T=!!T,F=F||10,F<2||360)throw Error("interior hyphen");if(U===0)return p(D.substring(1),T,F).neg();for(var X=l(c(F,8)),z=A,Z=0;Z>>0:this.low},_.toNumber=function(){return this.unsigned?(this.high>>>0)*m+(this.low>>>0):this.high*m+(this.low>>>0)},_.toString=function(T){if(T=T||10,T<2||36>>0,ae=Q.toString(T);if(Z=ee,Z.isZero())return ae+W;for(;ae.length<6;)ae="0"+ae;W=""+ae+W}},_.getHighBits=function(){return this.high},_.getHighBitsUnsigned=function(){return this.high>>>0},_.getLowBits=function(){return this.low},_.getLowBitsUnsigned=function(){return this.low>>>0},_.getNumBitsAbs=function(){if(this.isNegative())return this.eq(P)?64:this.neg().getNumBitsAbs();for(var T=this.high!=0?this.high:this.low,F=31;F>0&&(T&1<=0},_.isOdd=function(){return(this.low&1)===1},_.isEven=function(){return(this.low&1)===0},_.equals=function(T){return s(T)||(T=d(T)),this.unsigned!==T.unsigned&&this.high>>>31===1&&T.high>>>31===1?!1:this.high===T.high&&this.low===T.low},_.eq=_.equals,_.notEquals=function(T){return!this.eq(T)},_.neq=_.notEquals,_.ne=_.notEquals,_.lessThan=function(T){return this.comp(T)<0},_.lt=_.lessThan,_.lessThanOrEqual=function(T){return this.comp(T)<=0},_.lte=_.lessThanOrEqual,_.le=_.lessThanOrEqual,_.greaterThan=function(T){return this.comp(T)>0},_.gt=_.greaterThan,_.greaterThanOrEqual=function(T){return this.comp(T)>=0},_.gte=_.greaterThanOrEqual,_.ge=_.greaterThanOrEqual,_.compare=function(T){if(s(T)||(T=d(T)),this.eq(T))return 0;var F=this.isNegative(),U=T.isNegative();return F&&!U?-1:!F&&U?1:this.unsigned?T.high>>>0>this.high>>>0||T.high===this.high&&T.low>>>0>this.low>>>0?-1:1:this.sub(T).isNegative()?-1:1},_.comp=_.compare,_.negate=function(){return!this.unsigned&&this.eq(P)?P:this.not().add(v)},_.neg=_.negate,_.add=function(T){s(T)||(T=d(T));var F=this.high>>>16,U=this.high&65535,X=this.low>>>16,z=this.low&65535,Z=T.high>>>16,W=T.high&65535,ee=T.low>>>16,Q=T.low&65535,ae=0,J=0,se=0,ie=0;return ie+=z+Q,se+=ie>>>16,ie&=65535,se+=X+ee,J+=se>>>16,se&=65535,J+=U+W,ae+=J>>>16,J&=65535,ae+=F+Z,ae&=65535,u(se<<16|ie,ae<<16|J,this.unsigned)},_.subtract=function(T){return s(T)||(T=d(T)),this.add(T.neg())},_.sub=_.subtract,_.multiply=function(T){if(this.isZero())return A;if(s(T)||(T=d(T)),n){var F=n.mul(this.low,this.high,T.low,T.high);return u(F,n.get_high(),this.unsigned)}if(T.isZero())return A;if(this.eq(P))return T.isOdd()?P:A;if(T.eq(P))return this.isOdd()?P:A;if(this.isNegative())return T.isNegative()?this.neg().mul(T.neg()):this.neg().mul(T).neg();if(T.isNegative())return this.mul(T.neg()).neg();if(this.lt(x)&&T.lt(x))return l(this.toNumber()*T.toNumber(),this.unsigned);var U=this.high>>>16,X=this.high&65535,z=this.low>>>16,Z=this.low&65535,W=T.high>>>16,ee=T.high&65535,Q=T.low>>>16,ae=T.low&65535,J=0,se=0,ie=0,me=0;return me+=Z*ae,ie+=me>>>16,me&=65535,ie+=z*ae,se+=ie>>>16,ie&=65535,ie+=Z*Q,se+=ie>>>16,ie&=65535,se+=X*ae,J+=se>>>16,se&=65535,se+=z*Q,J+=se>>>16,se&=65535,se+=Z*ee,J+=se>>>16,se&=65535,J+=U*ae+X*Q+z*ee+Z*W,J&=65535,u(ie<<16|me,J<<16|se,this.unsigned)},_.mul=_.multiply,_.divide=function(T){if(s(T)||(T=d(T)),T.isZero())throw Error("division by zero");if(n){if(!this.unsigned&&this.high===-2147483648&&T.low===-1&&T.high===-1)return this;var F=(this.unsigned?n.div_u:n.div_s)(this.low,this.high,T.low,T.high);return u(F,n.get_high(),this.unsigned)}if(this.isZero())return this.unsigned?b:A;var U,X,z;if(this.unsigned){if(T.unsigned||(T=T.toUnsigned()),T.gt(this))return b;if(T.gt(this.shru(1)))return S;z=b}else{if(this.eq(P)){if(T.eq(v)||T.eq(I))return P;if(T.eq(P))return v;var Z=this.shr(1);return U=Z.div(T).shl(1),U.eq(A)?T.isNegative()?v:I:(X=this.sub(T.mul(U)),z=U.add(X.div(T)),z)}else if(T.eq(P))return this.unsigned?b:A;if(this.isNegative())return T.isNegative()?this.neg().div(T.neg()):this.neg().div(T).neg();if(T.isNegative())return this.div(T.neg()).neg();z=A}for(X=this;X.gte(T);){U=Math.max(1,Math.floor(X.toNumber()/T.toNumber()));for(var W=Math.ceil(Math.log(U)/Math.LN2),ee=W<=48?1:c(2,W-48),Q=l(U),ae=Q.mul(T);ae.isNegative()||ae.gt(X);)U-=ee,Q=l(U,this.unsigned),ae=Q.mul(T);Q.isZero()&&(Q=v),z=z.add(Q),X=X.sub(ae)}return z},_.div=_.divide,_.modulo=function(T){if(s(T)||(T=d(T)),n){var F=(this.unsigned?n.rem_u:n.rem_s)(this.low,this.high,T.low,T.high);return u(F,n.get_high(),this.unsigned)}return this.sub(this.div(T).mul(T))},_.mod=_.modulo,_.rem=_.modulo,_.not=function(){return u(~this.low,~this.high,this.unsigned)},_.and=function(T){return s(T)||(T=d(T)),u(this.low&T.low,this.high&T.high,this.unsigned)},_.or=function(T){return s(T)||(T=d(T)),u(this.low|T.low,this.high|T.high,this.unsigned)},_.xor=function(T){return s(T)||(T=d(T)),u(this.low^T.low,this.high^T.high,this.unsigned)},_.shiftLeft=function(T){return s(T)&&(T=T.toInt()),(T&=63)===0?this:T<32?u(this.low<>>32-T,this.unsigned):u(0,this.low<>>T|this.high<<32-T,this.high>>T,this.unsigned):u(this.high>>T-32,this.high>=0?0:-1,this.unsigned)},_.shr=_.shiftRight,_.shiftRightUnsigned=function(T){if(s(T)&&(T=T.toInt()),T&=63,T===0)return this;var F=this.high;if(T<32){var U=this.low;return u(U>>>T|F<<32-T,F>>>T,this.unsigned)}else return T===32?u(F,0,this.unsigned):u(F>>>T-32,0,this.unsigned)},_.shru=_.shiftRightUnsigned,_.shr_u=_.shiftRightUnsigned,_.toSigned=function(){return this.unsigned?u(this.low,this.high,!1):this},_.toUnsigned=function(){return this.unsigned?this:u(this.low,this.high,!0)},_.toBytes=function(T){return T?this.toBytesLE():this.toBytesBE()},_.toBytesLE=function(){var T=this.high,F=this.low;return[F&255,F>>>8&255,F>>>16&255,F>>>24,T&255,T>>>8&255,T>>>16&255,T>>>24]},_.toBytesBE=function(){var T=this.high,F=this.low;return[T>>>24,T>>>16&255,T>>>8&255,T&255,F>>>24,F>>>16&255,F>>>8&255,F&255]},r.fromBytes=function(T,F,U){return U?r.fromBytesLE(T,F):r.fromBytesBE(T,F)},r.fromBytesLE=function(T,F){return new r(T[0]|T[1]<<8|T[2]<<16|T[3]<<24,T[4]|T[5]<<8|T[6]<<16|T[7]<<24,F)},r.fromBytesBE=function(T,F){return new r(T[4]<<24|T[5]<<16|T[6]<<8|T[7],T[0]<<24|T[1]<<16|T[2]<<8|T[3],F)}}}),QE=dn({"(disabled):src/node_modules/node-fetch/browser.js"(){}}),eR=dn({"(disabled):util"(){}}),tR=dn({"src/node_modules/seedrandom/lib/alea.js"(e,t){(function(n,r,s){function a(u){var c=this,p=l();c.next=function(){var d=2091639*c.s0+c.c*23283064365386963e-26;return c.s0=c.s1,c.s1=c.s2,c.s2=d-(c.c=d|0)},c.c=1,c.s0=p(" "),c.s1=p(" "),c.s2=p(" "),c.s0-=p(u),c.s0<0&&(c.s0+=1),c.s1-=p(u),c.s1<0&&(c.s1+=1),c.s2-=p(u),c.s2<0&&(c.s2+=1),p=null}function o(u,c){return c.c=u.c,c.s0=u.s0,c.s1=u.s1,c.s2=u.s2,c}function i(u,c){var p=new a(u),d=c&&c.state,h=p.next;return h.int32=function(){return p.next()*4294967296|0},h.double=function(){return h()+(h()*2097152|0)*11102230246251565e-32},h.quick=h,d&&(typeof d=="object"&&o(d,p),h.state=function(){return o(p,{})}),h}function l(){var u=4022871197,c=function(p){p=String(p);for(var d=0;d>>0,h-=u,h*=u,u=h>>>0,h-=u,u+=h*4294967296}return(u>>>0)*23283064365386963e-26};return c}r&&r.exports?r.exports=i:s&&s.amd?s(function(){return i}):this.alea=i})(e,typeof t=="object"&&t,typeof define=="function"&&define)}}),nR=dn({"src/node_modules/seedrandom/lib/xor128.js"(e,t){(function(n,r,s){function a(l){var u=this,c="";u.x=0,u.y=0,u.z=0,u.w=0,u.next=function(){var d=u.x^u.x<<11;return u.x=u.y,u.y=u.z,u.z=u.w,u.w^=u.w>>>19^d^d>>>8},l===(l|0)?u.x=l:c+=l;for(var p=0;p>>0)/4294967296};return d.double=function(){do var h=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(h+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,p&&(typeof p=="object"&&o(p,c),d.state=function(){return o(c,{})}),d}r&&r.exports?r.exports=i:s&&s.amd?s(function(){return i}):this.xor128=i})(e,typeof t=="object"&&t,typeof define=="function"&&define)}}),rR=dn({"src/node_modules/seedrandom/lib/xorwow.js"(e,t){(function(n,r,s){function a(l){var u=this,c="";u.next=function(){var d=u.x^u.x>>>2;return u.x=u.y,u.y=u.z,u.z=u.w,u.w=u.v,(u.d=u.d+362437|0)+(u.v=u.v^u.v<<4^(d^d<<1))|0},u.x=0,u.y=0,u.z=0,u.w=0,u.v=0,l===(l|0)?u.x=l:c+=l;for(var p=0;p>>4),u.next()}function o(l,u){return u.x=l.x,u.y=l.y,u.z=l.z,u.w=l.w,u.v=l.v,u.d=l.d,u}function i(l,u){var c=new a(l),p=u&&u.state,d=function(){return(c.next()>>>0)/4294967296};return d.double=function(){do var h=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(h+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,p&&(typeof p=="object"&&o(p,c),d.state=function(){return o(c,{})}),d}r&&r.exports?r.exports=i:s&&s.amd?s(function(){return i}):this.xorwow=i})(e,typeof t=="object"&&t,typeof define=="function"&&define)}}),sR=dn({"src/node_modules/seedrandom/lib/xorshift7.js"(e,t){(function(n,r,s){function a(l){var u=this;u.next=function(){var p=u.x,d=u.i,h,f,m;return h=p[d],h^=h>>>7,f=h^h<<24,h=p[d+1&7],f^=h^h>>>10,h=p[d+3&7],f^=h^h>>>3,h=p[d+4&7],f^=h^h<<7,h=p[d+7&7],h=h^h<<13,f^=h^h<<9,p[d]=f,u.i=d+1&7,f};function c(p,d){var h,f,m=[];if(d===(d|0))f=m[0]=d;else for(d=""+d,h=0;h0;--h)p.next()}c(u,l)}function o(l,u){return u.x=l.x.slice(),u.i=l.i,u}function i(l,u){l==null&&(l=+new Date);var c=new a(l),p=u&&u.state,d=function(){return(c.next()>>>0)/4294967296};return d.double=function(){do var h=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(h+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,p&&(p.x&&o(p,c),d.state=function(){return o(c,{})}),d}r&&r.exports?r.exports=i:s&&s.amd?s(function(){return i}):this.xorshift7=i})(e,typeof t=="object"&&t,typeof define=="function"&&define)}}),aR=dn({"src/node_modules/seedrandom/lib/xor4096.js"(e,t){(function(n,r,s){function a(l){var u=this;u.next=function(){var p=u.w,d=u.X,h=u.i,f,m;return u.w=p=p+1640531527|0,m=d[h+34&127],f=d[h=h+1&127],m^=m<<13,f^=f<<17,m^=m>>>15,f^=f>>>12,m=d[h]=m^f,u.i=h,m+(p^p>>>16)|0};function c(p,d){var h,f,m,g,y,x=[],A=128;for(d===(d|0)?(f=d,d=null):(d=d+"\0",f=0,A=Math.max(A,d.length)),m=0,g=-32;g>>15,f^=f<<4,f^=f>>>13,g>=0&&(y=y+1640531527|0,h=x[g&127]^=f+y,m=h==0?m+1:0);for(m>=128&&(x[(d&&d.length||0)&127]=-1),m=127,g=4*128;g>0;--g)f=x[m+34&127],h=x[m=m+1&127],f^=f<<13,h^=h<<17,f^=f>>>15,h^=h>>>12,x[m]=f^h;p.w=y,p.X=x,p.i=m}c(u,l)}function o(l,u){return u.i=l.i,u.w=l.w,u.X=l.X.slice(),u}function i(l,u){l==null&&(l=+new Date);var c=new a(l),p=u&&u.state,d=function(){return(c.next()>>>0)/4294967296};return d.double=function(){do var h=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(h+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,p&&(p.X&&o(p,c),d.state=function(){return o(c,{})}),d}r&&r.exports?r.exports=i:s&&s.amd?s(function(){return i}):this.xor4096=i})(e,typeof t=="object"&&t,typeof define=="function"&&define)}}),oR=dn({"src/node_modules/seedrandom/lib/tychei.js"(e,t){(function(n,r,s){function a(l){var u=this,c="";u.next=function(){var d=u.b,h=u.c,f=u.d,m=u.a;return d=d<<25^d>>>7^h,h=h-f|0,f=f<<24^f>>>8^m,m=m-d|0,u.b=d=d<<20^d>>>12^h,u.c=h=h-f|0,u.d=f<<16^h>>>16^m,u.a=m-d|0},u.a=0,u.b=0,u.c=-1640531527,u.d=1367130551,l===Math.floor(l)?(u.a=l/4294967296|0,u.b=l|0):c+=l;for(var p=0;p>>0)/4294967296};return d.double=function(){do var h=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(h+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,p&&(typeof p=="object"&&o(p,c),d.state=function(){return o(c,{})}),d}r&&r.exports?r.exports=i:s&&s.amd?s(function(){return i}):this.tychei=i})(e,typeof t=="object"&&t,typeof define=="function"&&define)}}),iR=dn({"(disabled):crypto"(){}}),lR=dn({"src/node_modules/seedrandom/seedrandom.js"(e,t){(function(n,r,s){var a=256,o=6,i=52,l="random",u=s.pow(a,o),c=s.pow(2,i),p=c*2,d=a-1,h;function f(v,S,I){var E=[];S=S==!0?{entropy:!0}:S||{};var R=x(y(S.entropy?[v,b(r)]:v==null?A():v,3),E),P=new m(E),_=function(){for(var D=P.g(o),T=u,F=0;D=p;)D/=2,T/=2,F>>>=1;return(D+F)/T};return _.int32=function(){return P.g(4)|0},_.quick=function(){return P.g(4)/4294967296},_.double=_,x(b(P.S),r),(S.pass||I||function(D,T,F,U){return U&&(U.S&&g(U,P),D.state=function(){return g(P,{})}),F?(s[l]=D,T):D})(_,R,"global"in S?S.global:this==s,S.state)}function m(v){var S,I=v.length,E=this,R=0,P=E.i=E.j=0,_=E.S=[];for(I||(v=[I++]);R{var r=typeof document!="undefined"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename!="undefined"&&(r=r||__filename),function(s){s=s||{};function a(){return $e.buffer!=Mn&&ts($e.buffer),uh}function o(){return $e.buffer!=Mn&&ts($e.buffer),ch}function i(){return $e.buffer!=Mn&&ts($e.buffer),rd}function l(){return $e.buffer!=Mn&&ts($e.buffer),dh}function u(){return $e.buffer!=Mn&&ts($e.buffer),ph}function c(){return $e.buffer!=Mn&&ts($e.buffer),hh}function p(){return $e.buffer!=Mn&&ts($e.buffer),fh}var d=typeof s!="undefined"?s:{},h,f;d.ready=new Promise(function(N,O){h=N,f=O});var m;typeof process!="undefined"&&process.listeners&&(m={uncaughtException:process.listeners("uncaughtException"),unhandledRejection:process.listeners("unhandledRejection")});var g=Object.assign({},d),y=[],x="./this.program",A=(N,O)=>{throw O},b=typeof window=="object",v=typeof importScripts=="function",S=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",I=d.ENVIRONMENT_IS_PTHREAD||!1,E="";function R(N){return d.locateFile?d.locateFile(N,E):E+N}var P,_,D,T;function F(N){if(N instanceof pd)return;Q("exiting due to exception: "+N)}var U,X,z;if(S){v?E=mf().dirname(E)+"/":E=__dirname+"/",z=()=>{X||(U=dy(),X=mf())},P=function(G,te){return z(),G=X.normalize(G),U.readFileSync(G,te?void 0:"utf8")},D=O=>{var G=P(O,!0);return G.buffer||(G=new Uint8Array(G)),G},_=(O,G,te)=>{z(),O=X.normalize(O),U.readFile(O,function(ye,xe){ye?te(ye):G(xe.buffer)})},process.argv.length>1&&(x=process.argv[1].replace(/\\/g,"/")),y=process.argv.slice(2),process.on("uncaughtException",function(O){if(!(O instanceof pd))throw O}),process.on("unhandledRejection",function(O){throw O}),A=(O,G)=>{if(ci())throw process.exitCode=O,G;F(G),process.exit(O)},d.inspect=function(){return"[Emscripten Module object]"};let N;try{N=uR()}catch(O){throw console.error('The "worker_threads" module is not supported in this node.js build - perhaps a newer version is needed?'),O}global.Worker=N.Worker}else(b||v)&&(v?E=self.location.href:typeof document!="undefined"&&document.currentScript&&(E=document.currentScript.src),typeof r!="undefined"&&r&&(E=r),E.indexOf("blob:")!==0?E=E.substr(0,E.replace(/[?#].*/,"").lastIndexOf("/")+1):E="",S||(P=N=>{var O=new XMLHttpRequest;return O.open("GET",N,!1),O.send(null),O.responseText},v&&(D=N=>{var O=new XMLHttpRequest;return O.open("GET",N,!1),O.responseType="arraybuffer",O.send(null),new Uint8Array(O.response)}),_=(N,O,G)=>{var te=new XMLHttpRequest;te.open("GET",N,!0),te.responseType="arraybuffer",te.onload=()=>{if(te.status==200||te.status==0&&te.response){O(te.response);return}G()},te.onerror=G,te.send(null)}),T=N=>document.title=N);S&&typeof performance=="undefined"&&(global.performance=cR().performance);var Z=console.log.bind(console),W=console.warn.bind(console);S&&(z(),Z=N=>U.writeSync(1,N+` `),W=N=>U.writeSync(2,N+` `));var ee=d.print||Z,Q=d.printErr||W;Object.assign(d,g),g=null,d.arguments&&(y=d.arguments),d.thisProgram&&(x=d.thisProgram),d.quit&&(A=d.quit);var ae=4;function J(N){J.shown||(J.shown={}),J.shown[N]||(J.shown[N]=1,Q(N))}function se(N,O){if(typeof WebAssembly.Function=="function"){for(var G={i:"i32",j:"i64",f:"f32",d:"f64"},te={parameters:[],results:O[0]=="v"?[]:[G[O[0]]]},ye=1;ye{Re=N},Be=Atomics.load,nt=Atomics.store,it=Atomics.compareExchange,lt;d.wasmBinary&&(lt=d.wasmBinary);var ft=d.noExitRuntime||!0;typeof WebAssembly!="object"&&Jl("no native wasm support detected");var $e,wt,At=!1,Pn;function qt(N,O){N||Jl(O)}function ur(N){var O=d["_"+N];return O}function nn(N,O,G,te,ye){var xe={string:function(pr){var lu=0;if(pr!=null&&pr!==0){var Rb=(pr.length<<2)+1;lu=iu(Rb),Gs(pr,lu,Rb)}return lu},array:function(pr){var lu=iu(pr.length);return Hs(pr,lu),lu}};function Te(pr){return O==="string"?On(pr):O==="boolean"?Boolean(pr):pr}var Fe=ur(N),Pt=[],as=0;if(te)for(var os=0;os(G.buffer instanceof SharedArrayBuffer&&(G=new Uint8Array(G)),O.decode.call(O,G))}var Sn=typeof TextDecoder!="undefined"?new dr("utf8"):void 0;function Ir(N,O,G){for(var te=O+G,ye=O;N[ye]&&!(ye>=te);)++ye;if(ye-O>16&&N.subarray&&Sn)return Sn.decode(N.subarray(O,ye));for(var xe="";O>10,56320|as&1023)}}return xe}function On(N,O){return N?Ir(o(),N,O):""}function Us(N,O,G,te){if(!(te>0))return 0;for(var ye=G,xe=G+te-1,Te=0;Te=55296&&Fe<=57343){var Pt=N.charCodeAt(++Te);Fe=65536+((Fe&1023)<<10)|Pt&1023}if(Fe<=127){if(G>=xe)break;O[G++]=Fe}else if(Fe<=2047){if(G+1>=xe)break;O[G++]=192|Fe>>6,O[G++]=128|Fe&63}else if(Fe<=65535){if(G+2>=xe)break;O[G++]=224|Fe>>12,O[G++]=128|Fe>>6&63,O[G++]=128|Fe&63}else{if(G+3>=xe)break;O[G++]=240|Fe>>18,O[G++]=128|Fe>>12&63,O[G++]=128|Fe>>6&63,O[G++]=128|Fe&63}}return O[G]=0,G-ye}function Gs(N,O,G){return Us(N,o(),O,G)}function Kl(N){for(var O=0,G=0;G=55296&&te<=57343&&(te=65536+((te&1023)<<10)|N.charCodeAt(++G)&1023),te<=127?++O:te<=2047?O+=2:te<=65535?O+=3:O+=4}return O}var Aa=typeof TextDecoder!="undefined"?new dr("utf-16le"):void 0;function Hs(N,O){a().set(N,O)}function nd(N,O,G){for(var te=0;te>0]=N.charCodeAt(te);G||(a()[O>>0]=0)}function Zl(N,O){return N%O>0&&(N+=O-N%O),N}var Mn,uh,ch,rd,dh,ph,cb,hh,fh;I&&(Mn=d.buffer);function ts(N){Mn=N,d.HEAP8=uh=new Int8Array(N),d.HEAP16=rd=new Int16Array(N),d.HEAP32=ph=new Int32Array(N),d.HEAPU8=ch=new Uint8Array(N),d.HEAPU16=dh=new Uint16Array(N),d.HEAPU32=cb=new Uint32Array(N),d.HEAPF32=hh=new Float32Array(N),d.HEAPF64=fh=new Float64Array(N)}var mh=d.INITIAL_MEMORY||16777216;if(I)$e=d.wasmMemory,Mn=d.buffer;else if(d.wasmMemory)$e=d.wasmMemory;else if($e=new WebAssembly.Memory({initial:mh/65536,maximum:32768,shared:!0}),!($e.buffer instanceof SharedArrayBuffer))throw Q("requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag"),S&&console.log("(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and also use a recent version)"),Error("bad memory");$e&&(Mn=$e.buffer),mh=Mn.byteLength,ts(Mn);var Cr,Yl=[],xa=[],x2=[],gh=[],ui=!1,b2=!1,yh=0;function ci(){return ft||yh>0}function zn(){if(d.preRun)for(typeof d.preRun=="function"&&(d.preRun=[d.preRun]);d.preRun.length;)db(d.preRun.shift());wh(Yl)}function sd(){ui=!0,!I&&wh(xa)}function v2(){I||(Me.terminateAllThreads(),b2=!0)}function w2(){if(!I){if(d.postRun)for(typeof d.postRun=="function"&&(d.postRun=[d.postRun]);d.postRun.length;)ad(d.postRun.shift());wh(gh)}}function db(N){Yl.unshift(N)}function pb(N){xa.unshift(N)}function ad(N){gh.unshift(N)}var ba=0,Ah=null,ns=null;function od(N){ba++,d.monitorRunDependencies&&d.monitorRunDependencies(ba)}function hb(N){if(ba--,d.monitorRunDependencies&&d.monitorRunDependencies(ba),ba==0&&(Ah!==null&&(clearInterval(Ah),Ah=null),ns)){var O=ns;ns=null,O()}}d.preloadedImages={},d.preloadedAudios={};function Jl(N){I?postMessage({cmd:"onAbort",arg:N}):d.onAbort&&d.onAbort(N),N="Aborted("+N+")",Q(N),At=!0,Pn=1,N+=". Build with -s ASSERTIONS=1 for more info.";var O=new WebAssembly.RuntimeError(N);throw f(O),O}var k2="data:application/octet-stream;base64,";function xh(N){return N.startsWith(k2)}function bh(N){return N.startsWith("file://")}var Ln;Ln="tfjs-backend-wasm-threaded-simd.wasm",xh(Ln)||(Ln=R(Ln));function vh(N){try{if(N==Ln&<)return new Uint8Array(lt);if(D)return D(N);throw"both async and sync fetching of the wasm failed"}catch(O){Jl(O)}}function Ql(){if(!lt&&(b||v)){if(typeof fetch=="function"&&!bh(Ln))return fetch(Ln,{credentials:"same-origin"}).then(function(N){if(!N.ok)throw"failed to load wasm binary file at '"+Ln+"'";return N.arrayBuffer()}).catch(function(){return vh(Ln)});if(_)return new Promise(function(N,O){_(Ln,function(G){N(new Uint8Array(G))},O)})}return Promise.resolve().then(function(){return vh(Ln)})}function S2(){var N={env:Ph,wasi_snapshot_preview1:Ph};function O(Te,Fe){var Pt=Te.exports;if(d.asm=Pt,_2(d.asm.emscripten_tls_init),Cr=d.asm.__indirect_function_table,pb(d.asm.__wasm_call_ctors),wt=Fe,!I){var as=Me.unusedWorkers.length;Me.unusedWorkers.forEach(function(os){Me.loadWasmModuleToWorker(os,function(){--as||hb("wasm-instantiate")})})}}I||od("wasm-instantiate");function G(Te){O(Te.instance,Te.module)}function te(Te){return Ql().then(function(Fe){return WebAssembly.instantiate(Fe,N)}).then(function(Fe){return Fe}).then(Te,function(Fe){Q("failed to asynchronously prepare wasm: "+Fe),Jl(Fe)})}function ye(){return!lt&&typeof WebAssembly.instantiateStreaming=="function"&&!xh(Ln)&&!bh(Ln)&&typeof fetch=="function"?fetch(Ln,{credentials:"same-origin"}).then(function(Te){var Fe=WebAssembly.instantiateStreaming(Te,N);return Fe.then(G,function(Pt){return Q("wasm streaming compile failed: "+Pt),Q("falling back to ArrayBuffer instantiation"),te(G)})}):te(G)}if(d.instantiateWasm)try{var xe=d.instantiateWasm(N,O);return xe}catch(Te){return Q("Module.instantiateWasm callback failed with error: "+Te),!1}return ye().catch(f),{}}var fb,mb,I2={};function wh(N){for(;N.length>0;){var O=N.shift();if(typeof O=="function"){O(d);continue}var G=O.func;typeof G=="number"?O.arg===void 0?tu(G)():tu(G)(O.arg):G(O.arg===void 0?null:O.arg)}}function eu(N){var O=X1(),G=N();return Lh(O),G}function qN(N){return N}function gb(N){var O=/\b_Z[\w\d_]+/g;return N.replace(O,function(G){var te=G;return G===te?G:te+" ["+G+"]"})}function C2(N){u()[N>>2]=0;var O=Me.pthreads[N];delete Me.pthreads[N],O.worker.terminate(),q1(N),Me.runningWorkers.splice(Me.runningWorkers.indexOf(O.worker),1),O.worker.pthread=void 0}function T2(N){var O=Me.pthreads[N];O.worker.postMessage({cmd:"cancel"})}function kh(N){var O=Me.pthreads[N];if(O){u()[N>>2]=0;var G=O.worker;Me.returnWorkerToPool(G)}}function Sh(N){OE(N)}function N2(N){if(N instanceof pd||N=="unwind")return Pn;A(1,N)}var Me={unusedWorkers:[],runningWorkers:[],tlsInitFunctions:[],init:function(){I?Me.initWorker():Me.initMainThread()},initMainThread:function(){for(var N=8,O=0;O>2]=0;try{N()}finally{u()[Eb>>2]=1}},receiveObjectTransfer:function(N){},threadInit:function(){for(var N in Me.tlsInitFunctions)Me.tlsInitFunctions[N]()},loadWasmModuleToWorker:function(N,O){N.onmessage=G=>{var te=G.data,ye=te.cmd;if(N.pthread&&(Me.currentProxiedOperationCallerThread=N.pthread.threadInfoStruct),te.targetThread&&te.targetThread!=zh()){var xe=Me.pthreads[te.targetThread];xe?xe.worker.postMessage(te,te.transferList):Q('Internal error! Worker sent a message "'+ye+'" to target pthread '+te.targetThread+", but that thread no longer exists!"),Me.currentProxiedOperationCallerThread=void 0;return}ye==="processQueuedMainThreadWork"?Sb():ye==="spawnThread"?Ch(te):ye==="cleanupThread"?kh(te.thread):ye==="killThread"?C2(te.thread):ye==="cancelThread"?T2(te.thread):ye==="loaded"?(N.loaded=!0,O&&O(N),N.runPthread&&(N.runPthread(),delete N.runPthread)):ye==="print"?ee("Thread "+te.threadId+": "+te.text):ye==="printErr"?Q("Thread "+te.threadId+": "+te.text):ye==="alert"?alert("Thread "+te.threadId+": "+te.text):te.target==="setimmediate"?N.postMessage(te):ye==="onAbort"?d.onAbort&&d.onAbort(te.arg):Q("worker sent an unknown command "+ye),Me.currentProxiedOperationCallerThread=void 0},N.onerror=G=>{var te="worker sent an error!";throw Q(te+" "+G.filename+":"+G.lineno+": "+G.message),G},S&&(N.on("message",function(G){N.onmessage({data:G})}),N.on("error",function(G){N.onerror(G)}),N.on("detachedExit",function(){})),N.postMessage({cmd:"load",urlOrBlob:d.mainScriptUrlOrBlob||r,wasmMemory:$e,wasmModule:wt})},allocateUnusedWorker:function(){var N=R("tfjs-backend-wasm-threaded-simd.worker.js");Me.unusedWorkers.push(new Worker(N))},getNewWorker:function(){return Me.unusedWorkers.length==0&&(Me.allocateUnusedWorker(),Me.loadWasmModuleToWorker(Me.unusedWorkers[0])),Me.unusedWorkers.pop()}};function E2(){var N=zh(),O=u()[N+44>>2],G=u()[N+48>>2],te=O-G;Nb(O,te),Lh(O)}d.establishStackSpace=E2;function Ih(N){if(I)return hi(1,0,N);try{Sh(N)}catch(O){N2(O)}}var di=[];function tu(N){var O=di[N];return O||(N>=di.length&&(di.length=N+1),di[N]=O=Cr.get(N)),O}function R2(N,O){return tu(N)(O)}d.invokeEntryPoint=R2;function yb(){var N=new Error;if(!N.stack){try{throw new Error}catch(O){N=O}if(!N.stack)return"(no stack trace available)"}return N.stack.toString()}function _2(N,O,G){Me.tlsInitFunctions.push(N)}function Ab(N,O){Cr.set(N,O),di[N]=O}var pi;S?pi=()=>{var N=process.hrtime();return N[0]*1e3+N[1]/1e6}:I?pi=()=>performance.now()-d.__performance_now_clock_drift:pi=()=>performance.now();var $2=!0;function D2(N){return u()[kb()>>2]=N,N}function P2(N,O){var G;if(N===0)G=Date.now();else if((N===1||N===4)&&$2)G=pi();else return D2(28),-1;return u()[O>>2]=G/1e3|0,u()[O+4>>2]=G%1e3*1e3*1e3|0,0}function F2(N,O){return P2(N,O)}function O2(N){Ib(N,!v,1,!b),Me.threadInit()}function M2(N){I?postMessage({cmd:"cleanupThread",thread:N}):kh(N)}function Ch(N){var O=Me.getNewWorker();if(!O)return 6;Me.runningWorkers.push(O);var G=Me.pthreads[N.pthread_ptr]={worker:O,threadInfoStruct:N.pthread_ptr};O.pthread=G;var te={cmd:"run",start_routine:N.startRoutine,arg:N.arg,threadInfoStruct:N.pthread_ptr};return O.runPthread=()=>{te.time=performance.now(),O.postMessage(te,N.transferList)},O.loaded&&(O.runPthread(),delete O.runPthread),0}function z2(N,O,G,te){if(typeof SharedArrayBuffer=="undefined")return Q("Current environment does not support SharedArrayBuffer, pthreads are not available!"),6;var ye=[],xe=0;if(I&&(ye.length===0||xe))return Cb(687865856,N,O,G,te);if(xe)return xe;var Te={startRoutine:G,pthread_ptr:N,arg:te,transferList:ye};return I?(Te.cmd="spawnThread",postMessage(Te,ye),0):Ch(Te)}function L2(){return 2097152}function B2(N,O){if(N==O)postMessage({cmd:"processQueuedMainThreadWork"});else if(I)postMessage({targetThread:N,cmd:"processThreadQueue"});else{var G=Me.pthreads[N],te=G&&G.worker;if(!te)return;te.postMessage({cmd:"processThreadQueue"})}return 1}function W2(){Jl("")}function V2(){S||v||J("Blocking on the main thread is very dangerous, see https://emscripten.org/docs/porting/pthreads.html#blocking-on-the-main-browser-thread")}function Th(){return 2147483648}function U2(N,O,G){o().copyWithin(N,O,O+G)}function G2(){return S?dR().cpus().length:navigator.hardwareConcurrency}function hi(N,O){var G=arguments.length-2,te=arguments;return eu(function(){for(var ye=G,xe=iu(ye*8),Te=xe>>3,Fe=0;Fe>3,ye=0;ye>>16),ts($e.buffer),1}catch(O){}}function q2(N){var O=o().length;if(N=N>>>0,N<=O)return!1;var G=Th();if(N>G)return!1;for(var te=1;te<=4;te*=2){var ye=O*(1+.2/te);ye=Math.min(ye,N+100663296);var xe=Math.min(G,Zl(Math.max(N,ye),65536)),Te=j2(xe);if(Te)return!0}return!1}var Ke={inEventHandler:0,removeAllEventListeners:function(){for(var N=Ke.eventHandlers.length-1;N>=0;--N)Ke._removeHandler(N);Ke.eventHandlers=[],Ke.deferredCalls=[]},registerRemoveEventListeners:function(){Ke.removeEventListenersRegistered||(x2.push(Ke.removeAllEventListeners),Ke.removeEventListenersRegistered=!0)},deferredCalls:[],deferCall:function(N,O,G){function te(Te,Fe){if(Te.length!=Fe.length)return!1;for(var Pt in Te)if(Te[Pt]!=Fe[Pt])return!1;return!0}for(var ye in Ke.deferredCalls){var xe=Ke.deferredCalls[ye];if(xe.targetFunction==N&&te(xe.argsList,G))return}Ke.deferredCalls.push({targetFunction:N,precedence:O,argsList:G}),Ke.deferredCalls.sort(function(Te,Fe){return Te.precedence>2]=G,u()[xe+4>>2]=te,u()[xe+8>>2]=ye,j1(N,637534208,O,te,xe)})},getTargetThreadForEventCallback:function(N){switch(N){case 1:return 0;case 2:return Me.currentProxiedOperationCallerThread;default:return N}},getNodeNameForTarget:function(N){return N?N==window?"#window":N==screen?"#screen":N&&N.nodeName?N.nodeName:"":""},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function X2(N){var O=Kl(N)+1,G=H1(O);return Gs(N,G,O),G}function K2(N,O,G,te){eu(function(){var ye=iu(12),xe=0;O&&(xe=X2(O)),u()[ye>>2]=xe,u()[ye+4>>2]=G,u()[ye+8>>2]=te,j1(N,657457152,0,xe,ye)})}function Z2(N,O,G,te){O=O?On(O):"",K2(N,O,G,te)}function Y2(N){return N>2?On(N):N}var J2=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];function Q2(N){N=Y2(N);var O=J2[N]||(typeof document!="undefined"?document.querySelector(N):void 0);return O}function ld(N){return Q2(N)}function Nh(N,O,G){var te=ld(N);if(!te)return-4;if(te.canvasSharedPtr&&(u()[te.canvasSharedPtr>>2]=O,u()[te.canvasSharedPtr+4>>2]=G),te.offscreenCanvas||!te.controlTransferredOffscreen){te.offscreenCanvas&&(te=te.offscreenCanvas);var ye=!1;if(te.GLctxObject&&te.GLctxObject.GLctx){var xe=te.GLctxObject.GLctx.getParameter(2978);ye=xe[0]===0&&xe[1]===0&&xe[2]===te.width&&xe[3]===te.height}te.width=O,te.height=G,ye&&te.GLctxObject.GLctx.viewport(0,0,O,G)}else if(te.canvasSharedPtr){var Te=u()[te.canvasSharedPtr+8>>2];return Z2(Te,N,O,G),1}else return-4;return 0}function Eh(N,O,G){return I?hi(2,1,N,O,G):Nh(N,O,G)}function e1(N,O,G){var te=ld(N);return te?Nh(N,O,G):Eh(N,O,G)}function t1(){throw"unwind"}function n1(N){var O=N.getExtension("ANGLE_instanced_arrays");if(O)return N.vertexAttribDivisor=function(G,te){O.vertexAttribDivisorANGLE(G,te)},N.drawArraysInstanced=function(G,te,ye,xe){O.drawArraysInstancedANGLE(G,te,ye,xe)},N.drawElementsInstanced=function(G,te,ye,xe,Te){O.drawElementsInstancedANGLE(G,te,ye,xe,Te)},1}function r1(N){var O=N.getExtension("OES_vertex_array_object");if(O)return N.createVertexArray=function(){return O.createVertexArrayOES()},N.deleteVertexArray=function(G){O.deleteVertexArrayOES(G)},N.bindVertexArray=function(G){O.bindVertexArrayOES(G)},N.isVertexArray=function(G){return O.isVertexArrayOES(G)},1}function s1(N){var O=N.getExtension("WEBGL_draw_buffers");if(O)return N.drawBuffers=function(G,te){O.drawBuffersWEBGL(G,te)},1}function a1(N){return!!(N.multiDrawWebgl=N.getExtension("WEBGL_multi_draw"))}var Dt={counter:1,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],shaders:[],vaos:[],contexts:{},offscreenCanvases:{},queries:[],stringCache:{},unpackAlignment:4,recordError:function(O){Dt.lastError||(Dt.lastError=O)},getNewId:function(N){for(var O=Dt.counter++,G=N.length;G>2]:-1;ye+=On(u()[G+xe*4>>2],Te<0?void 0:Te)}return ye},createContext:function(N,O){N.getContextSafariWebGL2Fixed||(N.getContextSafariWebGL2Fixed=N.getContext,N.getContext=function(ye,xe){var Te=N.getContextSafariWebGL2Fixed(ye,xe);return ye=="webgl"==Te instanceof WebGLRenderingContext?Te:null});var G=N.getContext("webgl",O);if(!G)return 0;var te=Dt.registerContext(G,O);return te},registerContext:function(N,O){var G=H1(8);u()[G+4>>2]=zh();var te={handle:G,attributes:O,version:O.majorVersion,GLctx:N};return N.canvas&&(N.canvas.GLctxObject=te),Dt.contexts[G]=te,(typeof O.enableExtensionsByDefault=="undefined"||O.enableExtensionsByDefault)&&Dt.initExtensions(te),G},makeContextCurrent:function(N){return Dt.currentContext=Dt.contexts[N],d.ctx=Dh=Dt.currentContext&&Dt.currentContext.GLctx,!(N&&!Dh)},getContext:function(N){return Dt.contexts[N]},deleteContext:function(N){Dt.currentContext===Dt.contexts[N]&&(Dt.currentContext=null),typeof Ke=="object"&&Ke.removeAllHandlersOnTarget(Dt.contexts[N].GLctx.canvas),Dt.contexts[N]&&Dt.contexts[N].GLctx.canvas&&(Dt.contexts[N].GLctx.canvas.GLctxObject=void 0),wb(Dt.contexts[N].handle),Dt.contexts[N]=null},initExtensions:function(N){if(N||(N=Dt.currentContext),!N.initExtensionsDone){N.initExtensionsDone=!0;var O=N.GLctx;n1(O),r1(O),s1(O),O.disjointTimerQueryExt=O.getExtension("EXT_disjoint_timer_query"),a1(O);var G=O.getSupportedExtensions()||[];G.forEach(function(te){!te.includes("lose_context")&&!te.includes("debug")&&O.getExtension(te)})}}},o1=["default","low-power","high-performance"];function i1(N,O){var G=O>>2,te=u()[G+6],ye={alpha:!!u()[G+0],depth:!!u()[G+1],stencil:!!u()[G+2],antialias:!!u()[G+3],premultipliedAlpha:!!u()[G+4],preserveDrawingBuffer:!!u()[G+5],powerPreference:o1[te],failIfMajorPerformanceCaveat:!!u()[G+7],majorVersion:u()[G+8],minorVersion:u()[G+9],enableExtensionsByDefault:u()[G+10],explicitSwapControl:u()[G+11],proxyContextToMainThread:u()[G+12],renderViaOffscreenBackBuffer:u()[G+13]},xe=ld(N);if(!xe||ye.explicitSwapControl)return 0;var Te=Dt.createContext(xe,ye);return Te}function l1(N,O){return i1(N,O)}var nu={mappings:{},buffers:[null,[],[]],printChar:function(N,O){var G=nu.buffers[N];O===0||O===10?((N===1?ee:Q)(Ir(G,0)),G.length=0):G.push(O)},varargs:void 0,get:function(){nu.varargs+=4;var N=u()[nu.varargs-4>>2];return N},getStr:function(N){var O=On(N);return O},get64:function(N,O){return N}};function Rh(N){return I?hi(3,1,N):0}function _h(N,O,G,te,ye){if(I)return hi(4,1,N,O,G,te,ye)}function $h(N,O,G,te){if(I)return hi(5,1,N,O,G,te);for(var ye=0,xe=0;xe>2],Fe=u()[O+4>>2];O+=8;for(var Pt=0;Pt>2]=ye,0}function u1(N){ze(N)}Me.init();var Dh,c1=[null,Ih,Eh,Rh,_h,$h],xb=!1,Ph={__clock_gettime:F2,__emscripten_init_main_thread_js:O2,__emscripten_thread_cleanup:M2,__pthread_create_js:z2,_emscripten_default_pthread_stack_size:L2,_emscripten_notify_thread_queue:B2,abort:W2,emscripten_check_blocking_allowed:V2,emscripten_get_heap_max:Th,emscripten_get_now:pi,emscripten_memcpy_big:U2,emscripten_num_logical_cores:G2,emscripten_receive_on_main_thread_js:H2,emscripten_resize_heap:q2,emscripten_set_canvas_element_size:e1,emscripten_unwind_to_js_event_loop:t1,emscripten_webgl_create_context:l1,exit:Sh,fd_close:Rh,fd_seek:_h,fd_write:$h,memory:$e||d.wasmMemory,setTempRet0:u1},bb=S2(),d1=d.___wasm_call_ctors=function(){return(d1=d.___wasm_call_ctors=d.asm.__wasm_call_ctors).apply(null,arguments)},p1=d._init=function(){return(p1=d._init=d.asm.init).apply(null,arguments)},h1=d._init_with_threads_count=function(){return(h1=d._init_with_threads_count=d.asm.init_with_threads_count).apply(null,arguments)},f1=d._get_threads_count=function(){return(f1=d._get_threads_count=d.asm.get_threads_count).apply(null,arguments)},m1=d._register_tensor=function(){return(m1=d._register_tensor=d.asm.register_tensor).apply(null,arguments)},g1=d._dispose_data=function(){return(g1=d._dispose_data=d.asm.dispose_data).apply(null,arguments)},y1=d._dispose=function(){return(y1=d._dispose=d.asm.dispose).apply(null,arguments)},A1=d._Abs=function(){return(A1=d._Abs=d.asm.Abs).apply(null,arguments)},x1=d._Add=function(){return(x1=d._Add=d.asm.Add).apply(null,arguments)},b1=d._AddN=function(){return(b1=d._AddN=d.asm.AddN).apply(null,arguments)},v1=d._All=function(){return(v1=d._All=d.asm.All).apply(null,arguments)},w1=d._Any=function(){return(w1=d._Any=d.asm.Any).apply(null,arguments)},k1=d._ArgMax=function(){return(k1=d._ArgMax=d.asm.ArgMax).apply(null,arguments)},S1=d._AvgPool=function(){return(S1=d._AvgPool=d.asm.AvgPool).apply(null,arguments)},I1=d._BatchMatMul=function(){return(I1=d._BatchMatMul=d.asm.BatchMatMul).apply(null,arguments)},C1=d._Ceil=function(){return(C1=d._Ceil=d.asm.Ceil).apply(null,arguments)},T1=d._ClipByValue=function(){return(T1=d._ClipByValue=d.asm.ClipByValue).apply(null,arguments)},N1=d._Conv2D=function(){return(N1=d._Conv2D=d.asm.Conv2D).apply(null,arguments)},E1=d._Conv2DBackpropInput=function(){return(E1=d._Conv2DBackpropInput=d.asm.Conv2DBackpropInput).apply(null,arguments)},R1=d._Cos=function(){return(R1=d._Cos=d.asm.Cos).apply(null,arguments)},_1=d._Cosh=function(){return(_1=d._Cosh=d.asm.Cosh).apply(null,arguments)},$1=d._CropAndResize=function(){return($1=d._CropAndResize=d.asm.CropAndResize).apply(null,arguments)},D1=d._Cumprod=function(){return(D1=d._Cumprod=d.asm.Cumprod).apply(null,arguments)},P1=d._Cumsum=function(){return(P1=d._Cumsum=d.asm.Cumsum).apply(null,arguments)},F1=d._DepthToSpace=function(){return(F1=d._DepthToSpace=d.asm.DepthToSpace).apply(null,arguments)},O1=d._DepthwiseConv2dNative=function(){return(O1=d._DepthwiseConv2dNative=d.asm.DepthwiseConv2dNative).apply(null,arguments)},M1=d._Elu=function(){return(M1=d._Elu=d.asm.Elu).apply(null,arguments)},z1=d._Equal=function(){return(z1=d._Equal=d.asm.Equal).apply(null,arguments)},L1=d._Exp=function(){return(L1=d._Exp=d.asm.Exp).apply(null,arguments)},B1=d._FlipLeftRight=function(){return(B1=d._FlipLeftRight=d.asm.FlipLeftRight).apply(null,arguments)},Fh=d._Floor=function(){return(Fh=d._Floor=d.asm.Floor).apply(null,arguments)},Oh=d._FloorDiv=function(){return(Oh=d._FloorDiv=d.asm.FloorDiv).apply(null,arguments)},ud=d._FusedBatchNorm=function(){return(ud=d._FusedBatchNorm=d.asm.FusedBatchNorm).apply(null,arguments)},W1=d._FusedConv2D=function(){return(W1=d._FusedConv2D=d.asm.FusedConv2D).apply(null,arguments)},V1=d._FusedDepthwiseConv2D=function(){return(V1=d._FusedDepthwiseConv2D=d.asm.FusedDepthwiseConv2D).apply(null,arguments)},ru=d._Gather=function(){return(ru=d._Gather=d.asm.Gather).apply(null,arguments)},cd=d._GatherNd=function(){return(cd=d._GatherNd=d.asm.GatherNd).apply(null,arguments)},dd=d._Greater=function(){return(dd=d._Greater=d.asm.Greater).apply(null,arguments)},vb=d._GreaterEqual=function(){return(vb=d._GreaterEqual=d.asm.GreaterEqual).apply(null,arguments)},su=d._LeakyRelu=function(){return(su=d._LeakyRelu=d.asm.LeakyRelu).apply(null,arguments)},au=d._Less=function(){return(au=d._Less=d.asm.Less).apply(null,arguments)},U1=d._LessEqual=function(){return(U1=d._LessEqual=d.asm.LessEqual).apply(null,arguments)},q=d._Log=function(){return(q=d._Log=d.asm.Log).apply(null,arguments)},re=d._LogicalAnd=function(){return(re=d._LogicalAnd=d.asm.LogicalAnd).apply(null,arguments)},Ae=d._Max=function(){return(Ae=d._Max=d.asm.Max).apply(null,arguments)},_e=d._MaxPool=function(){return(_e=d._MaxPool=d.asm.MaxPool).apply(null,arguments)},ut=d._Maximum=function(){return(ut=d._Maximum=d.asm.Maximum).apply(null,arguments)},dt=d._Mean=function(){return(dt=d._Mean=d.asm.Mean).apply(null,arguments)},Ze=d._Min=function(){return(Ze=d._Min=d.asm.Min).apply(null,arguments)},je=d._Minimum=function(){return(je=d._Minimum=d.asm.Minimum).apply(null,arguments)},Xt=d._MirrorPad=function(){return(Xt=d._MirrorPad=d.asm.MirrorPad).apply(null,arguments)},rs=d._Multiply=function(){return(rs=d._Multiply=d.asm.Multiply).apply(null,arguments)},ss=d._Neg=function(){return(ss=d._Neg=d.asm.Neg).apply(null,arguments)},ou=d._NonMaxSuppressionV3=function(){return(ou=d._NonMaxSuppressionV3=d.asm.NonMaxSuppressionV3).apply(null,arguments)},fi=d._NonMaxSuppressionV4=function(){return(fi=d._NonMaxSuppressionV4=d.asm.NonMaxSuppressionV4).apply(null,arguments)},G1=d._NonMaxSuppressionV5=function(){return(G1=d._NonMaxSuppressionV5=d.asm.NonMaxSuppressionV5).apply(null,arguments)},Bn=d._NotEqual=function(){return(Bn=d._NotEqual=d.asm.NotEqual).apply(null,arguments)},va=d._OneHot=function(){return(va=d._OneHot=d.asm.OneHot).apply(null,arguments)},Mh=d._PadV2=function(){return(Mh=d._PadV2=d.asm.PadV2).apply(null,arguments)},XN=d._Pow=function(){return(XN=d._Pow=d.asm.Pow).apply(null,arguments)},KN=d._Prelu=function(){return(KN=d._Prelu=d.asm.Prelu).apply(null,arguments)},ZN=d._Prod=function(){return(ZN=d._Prod=d.asm.Prod).apply(null,arguments)},YN=d._RealDiv=function(){return(YN=d._RealDiv=d.asm.RealDiv).apply(null,arguments)},JN=d._Relu=function(){return(JN=d._Relu=d.asm.Relu).apply(null,arguments)},QN=d._Relu6=function(){return(QN=d._Relu6=d.asm.Relu6).apply(null,arguments)},eE=d._ResizeBilinear=function(){return(eE=d._ResizeBilinear=d.asm.ResizeBilinear).apply(null,arguments)},tE=d._Reverse=function(){return(tE=d._Reverse=d.asm.Reverse).apply(null,arguments)},nE=d._RotateWithOffset=function(){return(nE=d._RotateWithOffset=d.asm.RotateWithOffset).apply(null,arguments)},rE=d._Round=function(){return(rE=d._Round=d.asm.Round).apply(null,arguments)},sE=d._Rsqrt=function(){return(sE=d._Rsqrt=d.asm.Rsqrt).apply(null,arguments)},aE=d._ScatterNd=function(){return(aE=d._ScatterNd=d.asm.ScatterNd).apply(null,arguments)},oE=d._SelectV2=function(){return(oE=d._SelectV2=d.asm.SelectV2).apply(null,arguments)},iE=d._Sigmoid=function(){return(iE=d._Sigmoid=d.asm.Sigmoid).apply(null,arguments)},lE=d._Sin=function(){return(lE=d._Sin=d.asm.Sin).apply(null,arguments)},uE=d._Softmax=function(){return(uE=d._Softmax=d.asm.Softmax).apply(null,arguments)},cE=d._SparseFillEmptyRows=function(){return(cE=d._SparseFillEmptyRows=d.asm.SparseFillEmptyRows).apply(null,arguments)},dE=d._SparseReshape=function(){return(dE=d._SparseReshape=d.asm.SparseReshape).apply(null,arguments)},pE=d._SparseSegmentReduction=function(){return(pE=d._SparseSegmentReduction=d.asm.SparseSegmentReduction).apply(null,arguments)},hE=d._Sqrt=function(){return(hE=d._Sqrt=d.asm.Sqrt).apply(null,arguments)},fE=d._Square=function(){return(fE=d._Square=d.asm.Square).apply(null,arguments)},mE=d._SquaredDifference=function(){return(mE=d._SquaredDifference=d.asm.SquaredDifference).apply(null,arguments)},gE=d._Step=function(){return(gE=d._Step=d.asm.Step).apply(null,arguments)},yE=d._StridedSlice=function(){return(yE=d._StridedSlice=d.asm.StridedSlice).apply(null,arguments)},AE=d._Sub=function(){return(AE=d._Sub=d.asm.Sub).apply(null,arguments)},xE=d._Sum=function(){return(xE=d._Sum=d.asm.Sum).apply(null,arguments)},bE=d._Tan=function(){return(bE=d._Tan=d.asm.Tan).apply(null,arguments)},vE=d._Tanh=function(){return(vE=d._Tanh=d.asm.Tanh).apply(null,arguments)},wE=d._Tile=function(){return(wE=d._Tile=d.asm.Tile).apply(null,arguments)},kE=d._TopK=function(){return(kE=d._TopK=d.asm.TopK).apply(null,arguments)},SE=d._Transform=function(){return(SE=d._Transform=d.asm.Transform).apply(null,arguments)},IE=d._Transpose=function(){return(IE=d._Transpose=d.asm.Transpose).apply(null,arguments)},CE=d.__FusedMatMul=function(){return(CE=d.__FusedMatMul=d.asm._FusedMatMul).apply(null,arguments)},H1=d._malloc=function(){return(H1=d._malloc=d.asm.malloc).apply(null,arguments)},wb=d._free=function(){return(wb=d._free=d.asm.free).apply(null,arguments)},TE=d._emscripten_tls_init=function(){return(TE=d._emscripten_tls_init=d.asm.emscripten_tls_init).apply(null,arguments)},kb=d.___errno_location=function(){return(kb=d.___errno_location=d.asm.__errno_location).apply(null,arguments)},zh=d._pthread_self=function(){return(zh=d._pthread_self=d.asm.pthread_self).apply(null,arguments)},Sb=d._emscripten_main_thread_process_queued_calls=function(){return(Sb=d._emscripten_main_thread_process_queued_calls=d.asm.emscripten_main_thread_process_queued_calls).apply(null,arguments)},NE=d.__emscripten_thread_crashed=function(){return(NE=d.__emscripten_thread_crashed=d.asm._emscripten_thread_crashed).apply(null,arguments)},Ib=d.__emscripten_thread_init=function(){return(Ib=d.__emscripten_thread_init=d.asm._emscripten_thread_init).apply(null,arguments)},EE=d._emscripten_current_thread_process_queued_calls=function(){return(EE=d._emscripten_current_thread_process_queued_calls=d.asm.emscripten_current_thread_process_queued_calls).apply(null,arguments)},RE=d._emscripten_main_browser_thread_id=function(){return(RE=d._emscripten_main_browser_thread_id=d.asm.emscripten_main_browser_thread_id).apply(null,arguments)},_E=d._emscripten_sync_run_in_main_thread_2=function(){return(_E=d._emscripten_sync_run_in_main_thread_2=d.asm.emscripten_sync_run_in_main_thread_2).apply(null,arguments)},Cb=d._emscripten_sync_run_in_main_thread_4=function(){return(Cb=d._emscripten_sync_run_in_main_thread_4=d.asm.emscripten_sync_run_in_main_thread_4).apply(null,arguments)},Tb=d._emscripten_run_in_main_runtime_thread_js=function(){return(Tb=d._emscripten_run_in_main_runtime_thread_js=d.asm.emscripten_run_in_main_runtime_thread_js).apply(null,arguments)},j1=d._emscripten_dispatch_to_thread_=function(){return(j1=d._emscripten_dispatch_to_thread_=d.asm.emscripten_dispatch_to_thread_).apply(null,arguments)},q1=d.__emscripten_thread_free_data=function(){return(q1=d.__emscripten_thread_free_data=d.asm._emscripten_thread_free_data).apply(null,arguments)},$E=d.__emscripten_thread_exit=function(){return($E=d.__emscripten_thread_exit=d.asm._emscripten_thread_exit).apply(null,arguments)},DE=d._memalign=function(){return(DE=d._memalign=d.asm.memalign).apply(null,arguments)},Nb=d._emscripten_stack_set_limits=function(){return(Nb=d._emscripten_stack_set_limits=d.asm.emscripten_stack_set_limits).apply(null,arguments)},X1=d.stackSave=function(){return(X1=d.stackSave=d.asm.stackSave).apply(null,arguments)},Lh=d.stackRestore=function(){return(Lh=d.stackRestore=d.asm.stackRestore).apply(null,arguments)},iu=d.stackAlloc=function(){return(iu=d.stackAlloc=d.asm.stackAlloc).apply(null,arguments)},PE=d.dynCall_iijjiiii=function(){return(PE=d.dynCall_iijjiiii=d.asm.dynCall_iijjiiii).apply(null,arguments)},FE=d.dynCall_jiji=function(){return(FE=d.dynCall_jiji=d.asm.dynCall_jiji).apply(null,arguments)},Eb=d.__emscripten_allow_main_runtime_queued_calls=21456;d.cwrap=Fn,d.keepRuntimeAlive=ci,d.PThread=Me,d.PThread=Me,d.wasmMemory=$e,d.ExitStatus=pd;var Bh;function pd(N){this.name="ExitStatus",this.message="Program terminated with exit("+N+")",this.status=N}ns=function N(){Bh||K1(),Bh||(ns=N)};function K1(N){if(N=N||y,ba>0)return;if(I){h(d),sd(),postMessage({cmd:"loaded"});return}if(zn(),ba>0)return;function O(){Bh||(Bh=!0,d.calledRun=!0,!At&&(sd(),h(d),d.onRuntimeInitialized&&d.onRuntimeInitialized(),w2()))}d.setStatus?(d.setStatus("Running..."),setTimeout(function(){setTimeout(function(){d.setStatus("")},1),O()},1)):O()}d.run=K1;function OE(N,O){if(Pn=N,!O&&I)throw Ih(N),"unwind";ci()||v2(),ME(N)}function ME(N){Pn=N,ci()||(Me.terminateAllThreads(),d.onExit&&d.onExit(N),At=!0),A(N,new pd(N))}if(d.preInit)for(typeof d.preInit=="function"&&(d.preInit=[d.preInit]);d.preInit.length>0;)d.preInit.pop()();K1();var Wh;m&&(Wh={uncaughtException:process.listeners("uncaughtException").filter(function(N){return!m.uncaughtException.indexOf(N)>-1}),unhandledRejection:process.listeners("unhandledRejection").filter(function(N){return!m.unhandledRejection.indexOf(N)>-1})});var Vh;if(typeof WasmBackendModule!="undefined")Vh=WasmBackendModule;else if(typeof s!="undefined")Vh=s;else throw new Error("Could not find wasm module in post.js");if(Wh){var zE=Vh._dispose;Vh._dispose=function(){zE(),Wh.uncaughtException.forEach(function(N){process.removeListener("uncaughtException",N)}),Wh.unhandledRejection.forEach(function(N){process.removeListener("unhandledRejection",N)})}}return s.ready}})();typeof e=="object"&&typeof t=="object"?t.exports=n:typeof define=="function"&&define.amd?define([],function(){return n}):typeof e=="object"&&(e.WasmBackendModuleThreadedSimd=n)}}),hR=dn({"src/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm.js"(e,t){var n=(()=>{var r=typeof document!="undefined"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename!="undefined"&&(r=r||__filename),function(s){s=s||{};var a=typeof s!="undefined"?s:{},o,i;a.ready=new Promise(function(q,re){o=q,i=re});var l;typeof process!="undefined"&&process.listeners&&(l={uncaughtException:process.listeners("uncaughtException"),unhandledRejection:process.listeners("unhandledRejection")});var u=Object.assign({},a),c=[],p="./this.program",d=(q,re)=>{throw re},h=typeof window=="object",f=typeof importScripts=="function",m=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",g="";function y(q){return a.locateFile?a.locateFile(q,g):g+q}var x,A,b,v;function S(q){if(q instanceof cd)return;_("exiting due to exception: "+q)}var I,E,R;m?(f?g=mf().dirname(g)+"/":g=__dirname+"/",R=()=>{E||(I=dy(),E=mf())},x=function(re,Ae){return R(),re=E.normalize(re),I.readFileSync(re,Ae?void 0:"utf8")},b=q=>{var re=x(q,!0);return re.buffer||(re=new Uint8Array(re)),re},A=(q,re,Ae)=>{R(),q=E.normalize(q),I.readFile(q,function(_e,ut){_e?Ae(_e):re(ut.buffer)})},process.argv.length>1&&(p=process.argv[1].replace(/\\/g,"/")),c=process.argv.slice(2),process.on("uncaughtException",function(q){if(!(q instanceof cd))throw q}),process.on("unhandledRejection",function(q){throw q}),d=(q,re)=>{if(rd())throw process.exitCode=q,re;S(re),process.exit(q)},a.inspect=function(){return"[Emscripten Module object]"}):(h||f)&&(f?g=self.location.href:typeof document!="undefined"&&document.currentScript&&(g=document.currentScript.src),r&&(g=r),g.indexOf("blob:")!==0?g=g.substr(0,g.replace(/[?#].*/,"").lastIndexOf("/")+1):g="",x=q=>{var re=new XMLHttpRequest;return re.open("GET",q,!1),re.send(null),re.responseText},f&&(b=q=>{var re=new XMLHttpRequest;return re.open("GET",q,!1),re.responseType="arraybuffer",re.send(null),new Uint8Array(re.response)}),A=(q,re,Ae)=>{var _e=new XMLHttpRequest;_e.open("GET",q,!0),_e.responseType="arraybuffer",_e.onload=()=>{if(_e.status==200||_e.status==0&&_e.response){re(_e.response);return}Ae()},_e.onerror=Ae,_e.send(null)},v=q=>document.title=q);var P=a.print||console.log.bind(console),_=a.printErr||console.warn.bind(console);Object.assign(a,u),u=null,a.arguments&&(c=a.arguments),a.thisProgram&&(p=a.thisProgram),a.quit&&(d=a.quit);var D=4;function T(q){T.shown||(T.shown={}),T.shown[q]||(T.shown[q]=1,_(q))}function F(q,re){if(typeof WebAssembly.Function=="function"){for(var Ae={i:"i32",j:"i64",f:"f32",d:"f64"},_e={parameters:[],results:re[0]=="v"?[]:[Ae[re[0]]]},ut=1;ut{W=q},Q;a.wasmBinary&&(Q=a.wasmBinary);var ae=a.noExitRuntime||!0;typeof WebAssembly!="object"&&ui("no native wasm support detected");var J,se=!1,ie;function me(q,re){q||ui(re)}function be(q){var re=a["_"+q];return re}function Ee(q,re,Ae,_e,ut){var dt={string:function(Bn){var va=0;if(Bn!=null&&Bn!==0){var Mh=(Bn.length<<2)+1;va=ud(Mh),ft(Bn,va,Mh)}return va},array:function(Bn){var va=ud(Bn.length);return At(Bn,va),va}};function Ze(Bn){return re==="string"?it(Bn):re==="boolean"?Boolean(Bn):Bn}var je=be(q),Xt=[],rs=0;if(_e)for(var ss=0;ss<_e.length;ss++){var ou=dt[Ae[ss]];ou?(rs===0&&(rs=Fh()),Xt[ss]=ou(_e[ss])):Xt[ss]=_e[ss]}var fi=je.apply(null,Xt);function G1(Bn){return rs!==0&&Oh(rs),Ze(Bn)}return fi=G1(fi),fi}function Re(q,re,Ae,_e){Ae=Ae||[];var ut=Ae.every(function(Ze){return Ze==="number"}),dt=re!=="string";return dt&&ut&&!_e?be(q):function(){return Ee(q,re,Ae,arguments,_e)}}var ze=1,Be=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):void 0;function nt(q,re,Ae){for(var _e=re+Ae,ut=re;q[ut]&&!(ut>=_e);)++ut;if(ut-re>16&&q.subarray&&Be)return Be.decode(q.subarray(re,ut));for(var dt="";re>10,56320|rs&1023)}}return dt}function it(q,re){return q?nt(Fn,q,re):""}function lt(q,re,Ae,_e){if(!(_e>0))return 0;for(var ut=Ae,dt=Ae+_e-1,Ze=0;Ze=55296&&je<=57343){var Xt=q.charCodeAt(++Ze);je=65536+((je&1023)<<10)|Xt&1023}if(je<=127){if(Ae>=dt)break;re[Ae++]=je}else if(je<=2047){if(Ae+1>=dt)break;re[Ae++]=192|je>>6,re[Ae++]=128|je&63}else if(je<=65535){if(Ae+2>=dt)break;re[Ae++]=224|je>>12,re[Ae++]=128|je>>6&63,re[Ae++]=128|je&63}else{if(Ae+3>=dt)break;re[Ae++]=240|je>>18,re[Ae++]=128|je>>12&63,re[Ae++]=128|je>>6&63,re[Ae++]=128|je&63}}return re[Ae]=0,Ae-ut}function ft(q,re,Ae){return lt(q,Fn,re,Ae)}function $e(q){for(var re=0,Ae=0;Ae=55296&&_e<=57343&&(_e=65536+((_e&1023)<<10)|q.charCodeAt(++Ae)&1023),_e<=127?++re:_e<=2047?re+=2:_e<=65535?re+=3:re+=4}return re}var wt=typeof TextDecoder!="undefined"?new TextDecoder("utf-16le"):void 0;function At(q,re){nn.set(q,re)}function Pn(q,re,Ae){for(var _e=0;_e>0]=q.charCodeAt(_e);Ae||(nn[re>>0]=0)}function qt(q,re){return q%re>0&&(q+=re-q%re),q}var ur,nn,Fn,cr,dr,Sn,Ir,On,Us;function Gs(q){ur=q,a.HEAP8=nn=new Int8Array(q),a.HEAP16=cr=new Int16Array(q),a.HEAP32=Sn=new Int32Array(q),a.HEAPU8=Fn=new Uint8Array(q),a.HEAPU16=dr=new Uint16Array(q),a.HEAPU32=Ir=new Uint32Array(q),a.HEAPF32=On=new Float32Array(q),a.HEAPF64=Us=new Float64Array(q)}var Kl=a.INITIAL_MEMORY||16777216,Aa,Hs=[],nd=[],Zl=[],Mn=!1,uh=!1,ch=0;function rd(){return ae||ch>0}function dh(){if(a.preRun)for(typeof a.preRun=="function"&&(a.preRun=[a.preRun]);a.preRun.length;)fh(a.preRun.shift());ad(Hs)}function ph(){Mn=!0,ad(nd)}function cb(){uh=!0}function hh(){if(a.postRun)for(typeof a.postRun=="function"&&(a.postRun=[a.postRun]);a.postRun.length;)mh(a.postRun.shift());ad(Zl)}function fh(q){Hs.unshift(q)}function ts(q){nd.unshift(q)}function mh(q){Zl.unshift(q)}var Cr=0,Yl=null,xa=null;function x2(q){Cr++,a.monitorRunDependencies&&a.monitorRunDependencies(Cr)}function gh(q){if(Cr--,a.monitorRunDependencies&&a.monitorRunDependencies(Cr),Cr==0&&(Yl!==null&&(clearInterval(Yl),Yl=null),xa)){var re=xa;xa=null,re()}}a.preloadedImages={},a.preloadedAudios={};function ui(q){a.onAbort&&a.onAbort(q),q="Aborted("+q+")",_(q),se=!0,ie=1,q+=". Build with -s ASSERTIONS=1 for more info.";var re=new WebAssembly.RuntimeError(q);throw i(re),re}var b2="data:application/octet-stream;base64,";function yh(q){return q.startsWith(b2)}function ci(q){return q.startsWith("file://")}var zn;zn="tfjs-backend-wasm.wasm",yh(zn)||(zn=y(zn));function sd(q){try{if(q==zn&&Q)return new Uint8Array(Q);if(b)return b(q);throw"both async and sync fetching of the wasm failed"}catch(re){ui(re)}}function v2(){if(!Q&&(h||f)){if(typeof fetch=="function"&&!ci(zn))return fetch(zn,{credentials:"same-origin"}).then(function(q){if(!q.ok)throw"failed to load wasm binary file at '"+zn+"'";return q.arrayBuffer()}).catch(function(){return sd(zn)});if(A)return new Promise(function(q,re){A(zn,function(Ae){q(new Uint8Array(Ae))},re)})}return Promise.resolve().then(function(){return sd(zn)})}function w2(){var q={env:eu,wasi_snapshot_preview1:eu};function re(Ze,je){var Xt=Ze.exports;a.asm=Xt,J=a.asm.memory,Gs(J.buffer),Aa=a.asm.__indirect_function_table,ts(a.asm.__wasm_call_ctors),gh("wasm-instantiate")}x2("wasm-instantiate");function Ae(Ze){re(Ze.instance)}function _e(Ze){return v2().then(function(je){return WebAssembly.instantiate(je,q)}).then(function(je){return je}).then(Ze,function(je){_("failed to asynchronously prepare wasm: "+je),ui(je)})}function ut(){return!Q&&typeof WebAssembly.instantiateStreaming=="function"&&!yh(zn)&&!ci(zn)&&typeof fetch=="function"?fetch(zn,{credentials:"same-origin"}).then(function(Ze){var je=WebAssembly.instantiateStreaming(Ze,q);return je.then(Ae,function(Xt){return _("wasm streaming compile failed: "+Xt),_("falling back to ArrayBuffer instantiation"),_e(Ae)})}):_e(Ae)}if(a.instantiateWasm)try{var dt=a.instantiateWasm(q,re);return dt}catch(Ze){return _("Module.instantiateWasm callback failed with error: "+Ze),!1}return ut().catch(i),{}}var db,pb;function ad(q){for(;q.length>0;){var re=q.shift();if(typeof re=="function"){re(a);continue}var Ae=re.func;typeof Ae=="number"?re.arg===void 0?od(Ae)():od(Ae)(re.arg):Ae(re.arg===void 0?null:re.arg)}}function ba(q){return q}function Ah(q){var re=/\b_Z[\w\d_]+/g;return q.replace(re,function(Ae){var _e=Ae;return Ae===_e?Ae:_e+" ["+Ae+"]"})}var ns=[];function od(q){var re=ns[q];return re||(q>=ns.length&&(ns.length=q+1),ns[q]=re=Aa.get(q)),re}function hb(){var q=new Error;if(!q.stack){try{throw new Error}catch(re){q=re}if(!q.stack)return"(no stack trace available)"}return q.stack.toString()}function Jl(q,re){Aa.set(q,re),ns[q]=re}function k2(){ui("")}function xh(q,re,Ae){Fn.copyWithin(q,re,re+Ae)}function bh(){return 2147483648}function Ln(q){try{return J.grow(q-ur.byteLength+65535>>>16),Gs(J.buffer),1}catch(re){}}function vh(q){var re=Fn.length;q=q>>>0;var Ae=bh();if(q>Ae)return!1;for(var _e=1;_e<=4;_e*=2){var ut=re*(1+.2/_e);ut=Math.min(ut,q+100663296);var dt=Math.min(Ae,qt(Math.max(q,ut),65536)),Ze=Ln(dt);if(Ze)return!0}return!1}var Ql={mappings:{},buffers:[null,[],[]],printChar:function(q,re){var Ae=Ql.buffers[q];re===0||re===10?((q===1?P:_)(nt(Ae,0)),Ae.length=0):Ae.push(re)},varargs:void 0,get:function(){Ql.varargs+=4;var q=Sn[Ql.varargs-4>>2];return q},getStr:function(q){var re=it(q);return re},get64:function(q,re){return q}};function S2(q){return 0}function fb(q,re,Ae,_e,ut){}function mb(q,re,Ae,_e){for(var ut=0,dt=0;dt>2],je=Sn[re+4>>2];re+=8;for(var Xt=0;Xt>2]=ut,0}function I2(q){ee(q)}var wh=!1,eu={abort:k2,emscripten_memcpy_big:xh,emscripten_resize_heap:vh,fd_close:S2,fd_seek:fb,fd_write:mb,setTempRet0:I2},qN=w2(),gb=a.___wasm_call_ctors=function(){return(gb=a.___wasm_call_ctors=a.asm.__wasm_call_ctors).apply(null,arguments)},C2=a._init=function(){return(C2=a._init=a.asm.init).apply(null,arguments)},T2=a._init_with_threads_count=function(){return(T2=a._init_with_threads_count=a.asm.init_with_threads_count).apply(null,arguments)},kh=a._get_threads_count=function(){return(kh=a._get_threads_count=a.asm.get_threads_count).apply(null,arguments)},Sh=a._register_tensor=function(){return(Sh=a._register_tensor=a.asm.register_tensor).apply(null,arguments)},N2=a._dispose_data=function(){return(N2=a._dispose_data=a.asm.dispose_data).apply(null,arguments)},Me=a._dispose=function(){return(Me=a._dispose=a.asm.dispose).apply(null,arguments)},E2=a._Abs=function(){return(E2=a._Abs=a.asm.Abs).apply(null,arguments)},Ih=a._Add=function(){return(Ih=a._Add=a.asm.Add).apply(null,arguments)},di=a._AddN=function(){return(di=a._AddN=a.asm.AddN).apply(null,arguments)},tu=a._All=function(){return(tu=a._All=a.asm.All).apply(null,arguments)},R2=a._Any=function(){return(R2=a._Any=a.asm.Any).apply(null,arguments)},yb=a._ArgMax=function(){return(yb=a._ArgMax=a.asm.ArgMax).apply(null,arguments)},_2=a._AvgPool=function(){return(_2=a._AvgPool=a.asm.AvgPool).apply(null,arguments)},Ab=a._BatchMatMul=function(){return(Ab=a._BatchMatMul=a.asm.BatchMatMul).apply(null,arguments)},pi=a._Ceil=function(){return(pi=a._Ceil=a.asm.Ceil).apply(null,arguments)},$2=a._ClipByValue=function(){return($2=a._ClipByValue=a.asm.ClipByValue).apply(null,arguments)},D2=a._Conv2D=function(){return(D2=a._Conv2D=a.asm.Conv2D).apply(null,arguments)},P2=a._Conv2DBackpropInput=function(){return(P2=a._Conv2DBackpropInput=a.asm.Conv2DBackpropInput).apply(null,arguments)},F2=a._Cos=function(){return(F2=a._Cos=a.asm.Cos).apply(null,arguments)},O2=a._Cosh=function(){return(O2=a._Cosh=a.asm.Cosh).apply(null,arguments)},M2=a._CropAndResize=function(){return(M2=a._CropAndResize=a.asm.CropAndResize).apply(null,arguments)},Ch=a._Cumprod=function(){return(Ch=a._Cumprod=a.asm.Cumprod).apply(null,arguments)},z2=a._Cumsum=function(){return(z2=a._Cumsum=a.asm.Cumsum).apply(null,arguments)},L2=a._DepthToSpace=function(){return(L2=a._DepthToSpace=a.asm.DepthToSpace).apply(null,arguments)},B2=a._DepthwiseConv2dNative=function(){return(B2=a._DepthwiseConv2dNative=a.asm.DepthwiseConv2dNative).apply(null,arguments)},W2=a._Elu=function(){return(W2=a._Elu=a.asm.Elu).apply(null,arguments)},V2=a._Equal=function(){return(V2=a._Equal=a.asm.Equal).apply(null,arguments)},Th=a._Exp=function(){return(Th=a._Exp=a.asm.Exp).apply(null,arguments)},U2=a._FlipLeftRight=function(){return(U2=a._FlipLeftRight=a.asm.FlipLeftRight).apply(null,arguments)},G2=a._Floor=function(){return(G2=a._Floor=a.asm.Floor).apply(null,arguments)},hi=a._FloorDiv=function(){return(hi=a._FloorDiv=a.asm.FloorDiv).apply(null,arguments)},id=a._FusedBatchNorm=function(){return(id=a._FusedBatchNorm=a.asm.FusedBatchNorm).apply(null,arguments)},H2=a._FusedConv2D=function(){return(H2=a._FusedConv2D=a.asm.FusedConv2D).apply(null,arguments)},j2=a._FusedDepthwiseConv2D=function(){return(j2=a._FusedDepthwiseConv2D=a.asm.FusedDepthwiseConv2D).apply(null,arguments)},q2=a._Gather=function(){return(q2=a._Gather=a.asm.Gather).apply(null,arguments)},Ke=a._GatherNd=function(){return(Ke=a._GatherNd=a.asm.GatherNd).apply(null,arguments)},X2=a._Greater=function(){return(X2=a._Greater=a.asm.Greater).apply(null,arguments)},K2=a._GreaterEqual=function(){return(K2=a._GreaterEqual=a.asm.GreaterEqual).apply(null,arguments)},Z2=a._LeakyRelu=function(){return(Z2=a._LeakyRelu=a.asm.LeakyRelu).apply(null,arguments)},Y2=a._Less=function(){return(Y2=a._Less=a.asm.Less).apply(null,arguments)},J2=a._LessEqual=function(){return(J2=a._LessEqual=a.asm.LessEqual).apply(null,arguments)},Q2=a._Log=function(){return(Q2=a._Log=a.asm.Log).apply(null,arguments)},ld=a._LogicalAnd=function(){return(ld=a._LogicalAnd=a.asm.LogicalAnd).apply(null,arguments)},Nh=a._Max=function(){return(Nh=a._Max=a.asm.Max).apply(null,arguments)},Eh=a._MaxPool=function(){return(Eh=a._MaxPool=a.asm.MaxPool).apply(null,arguments)},e1=a._Maximum=function(){return(e1=a._Maximum=a.asm.Maximum).apply(null,arguments)},t1=a._Mean=function(){return(t1=a._Mean=a.asm.Mean).apply(null,arguments)},n1=a._Min=function(){return(n1=a._Min=a.asm.Min).apply(null,arguments)},r1=a._Minimum=function(){return(r1=a._Minimum=a.asm.Minimum).apply(null,arguments)},s1=a._MirrorPad=function(){return(s1=a._MirrorPad=a.asm.MirrorPad).apply(null,arguments)},a1=a._Multiply=function(){return(a1=a._Multiply=a.asm.Multiply).apply(null,arguments)},Dt=a._Neg=function(){return(Dt=a._Neg=a.asm.Neg).apply(null,arguments)},o1=a._NonMaxSuppressionV3=function(){return(o1=a._NonMaxSuppressionV3=a.asm.NonMaxSuppressionV3).apply(null,arguments)},i1=a._NonMaxSuppressionV4=function(){return(i1=a._NonMaxSuppressionV4=a.asm.NonMaxSuppressionV4).apply(null,arguments)},l1=a._NonMaxSuppressionV5=function(){return(l1=a._NonMaxSuppressionV5=a.asm.NonMaxSuppressionV5).apply(null,arguments)},nu=a._NotEqual=function(){return(nu=a._NotEqual=a.asm.NotEqual).apply(null,arguments)},Rh=a._OneHot=function(){return(Rh=a._OneHot=a.asm.OneHot).apply(null,arguments)},_h=a._PadV2=function(){return(_h=a._PadV2=a.asm.PadV2).apply(null,arguments)},$h=a._Pow=function(){return($h=a._Pow=a.asm.Pow).apply(null,arguments)},u1=a._Prelu=function(){return(u1=a._Prelu=a.asm.Prelu).apply(null,arguments)},Dh=a._Prod=function(){return(Dh=a._Prod=a.asm.Prod).apply(null,arguments)},c1=a._RealDiv=function(){return(c1=a._RealDiv=a.asm.RealDiv).apply(null,arguments)},xb=a._Relu=function(){return(xb=a._Relu=a.asm.Relu).apply(null,arguments)},Ph=a._Relu6=function(){return(Ph=a._Relu6=a.asm.Relu6).apply(null,arguments)},bb=a._ResizeBilinear=function(){return(bb=a._ResizeBilinear=a.asm.ResizeBilinear).apply(null,arguments)},d1=a._Reverse=function(){return(d1=a._Reverse=a.asm.Reverse).apply(null,arguments)},p1=a._RotateWithOffset=function(){return(p1=a._RotateWithOffset=a.asm.RotateWithOffset).apply(null,arguments)},h1=a._Round=function(){return(h1=a._Round=a.asm.Round).apply(null,arguments)},f1=a._Rsqrt=function(){return(f1=a._Rsqrt=a.asm.Rsqrt).apply(null,arguments)},m1=a._ScatterNd=function(){return(m1=a._ScatterNd=a.asm.ScatterNd).apply(null,arguments)},g1=a._SelectV2=function(){return(g1=a._SelectV2=a.asm.SelectV2).apply(null,arguments)},y1=a._Sigmoid=function(){return(y1=a._Sigmoid=a.asm.Sigmoid).apply(null,arguments)},A1=a._Sin=function(){return(A1=a._Sin=a.asm.Sin).apply(null,arguments)},x1=a._Softmax=function(){return(x1=a._Softmax=a.asm.Softmax).apply(null,arguments)},b1=a._SparseFillEmptyRows=function(){return(b1=a._SparseFillEmptyRows=a.asm.SparseFillEmptyRows).apply(null,arguments)},v1=a._SparseReshape=function(){return(v1=a._SparseReshape=a.asm.SparseReshape).apply(null,arguments)},w1=a._SparseSegmentReduction=function(){return(w1=a._SparseSegmentReduction=a.asm.SparseSegmentReduction).apply(null,arguments)},k1=a._Sqrt=function(){return(k1=a._Sqrt=a.asm.Sqrt).apply(null,arguments)},S1=a._Square=function(){return(S1=a._Square=a.asm.Square).apply(null,arguments)},I1=a._SquaredDifference=function(){return(I1=a._SquaredDifference=a.asm.SquaredDifference).apply(null,arguments)},C1=a._Step=function(){return(C1=a._Step=a.asm.Step).apply(null,arguments)},T1=a._StridedSlice=function(){return(T1=a._StridedSlice=a.asm.StridedSlice).apply(null,arguments)},N1=a._Sub=function(){return(N1=a._Sub=a.asm.Sub).apply(null,arguments)},E1=a._Sum=function(){return(E1=a._Sum=a.asm.Sum).apply(null,arguments)},R1=a._Tan=function(){return(R1=a._Tan=a.asm.Tan).apply(null,arguments)},_1=a._Tanh=function(){return(_1=a._Tanh=a.asm.Tanh).apply(null,arguments)},$1=a._Tile=function(){return($1=a._Tile=a.asm.Tile).apply(null,arguments)},D1=a._TopK=function(){return(D1=a._TopK=a.asm.TopK).apply(null,arguments)},P1=a._Transform=function(){return(P1=a._Transform=a.asm.Transform).apply(null,arguments)},F1=a._Transpose=function(){return(F1=a._Transpose=a.asm.Transpose).apply(null,arguments)},O1=a.__FusedMatMul=function(){return(O1=a.__FusedMatMul=a.asm._FusedMatMul).apply(null,arguments)},M1=a._malloc=function(){return(M1=a._malloc=a.asm.malloc).apply(null,arguments)},z1=a._free=function(){return(z1=a._free=a.asm.free).apply(null,arguments)},L1=a.___errno_location=function(){return(L1=a.___errno_location=a.asm.__errno_location).apply(null,arguments)},B1=a._emscripten_main_thread_process_queued_calls=function(){return(B1=a._emscripten_main_thread_process_queued_calls=a.asm.emscripten_main_thread_process_queued_calls).apply(null,arguments)},Fh=a.stackSave=function(){return(Fh=a.stackSave=a.asm.stackSave).apply(null,arguments)},Oh=a.stackRestore=function(){return(Oh=a.stackRestore=a.asm.stackRestore).apply(null,arguments)},ud=a.stackAlloc=function(){return(ud=a.stackAlloc=a.asm.stackAlloc).apply(null,arguments)},W1=a.dynCall_iijjiiii=function(){return(W1=a.dynCall_iijjiiii=a.asm.dynCall_iijjiiii).apply(null,arguments)},V1=a.dynCall_jiji=function(){return(V1=a.dynCall_jiji=a.asm.dynCall_jiji).apply(null,arguments)};a.cwrap=Re;var ru;function cd(q){this.name="ExitStatus",this.message="Program terminated with exit("+q+")",this.status=q}xa=function q(){ru||dd(),ru||(xa=q)};function dd(q){if(q=q||c,Cr>0||(dh(),Cr>0))return;function re(){ru||(ru=!0,a.calledRun=!0,!se&&(ph(),o(a),a.onRuntimeInitialized&&a.onRuntimeInitialized(),hh()))}a.setStatus?(a.setStatus("Running..."),setTimeout(function(){setTimeout(function(){a.setStatus("")},1),re()},1)):re()}a.run=dd;function vb(q){ie=q,rd()||(a.onExit&&a.onExit(q),se=!0),d(q,new cd(q))}if(a.preInit)for(typeof a.preInit=="function"&&(a.preInit=[a.preInit]);a.preInit.length>0;)a.preInit.pop()();dd();var su;l&&(su={uncaughtException:process.listeners("uncaughtException").filter(function(q){return!l.uncaughtException.indexOf(q)>-1}),unhandledRejection:process.listeners("unhandledRejection").filter(function(q){return!l.unhandledRejection.indexOf(q)>-1})});var au;if(typeof s!="undefined")au=s;else if(typeof WasmBackendModuleThreadedSimd!="undefined")au=WasmBackendModuleThreadedSimd;else throw new Error("Could not find wasm module in post.js");if(su){var U1=au._dispose;au._dispose=function(){U1(),su.uncaughtException.forEach(function(q){process.removeListener("uncaughtException",q)}),su.unhandledRejection.forEach(function(q){process.removeListener("unhandledRejection",q)})}}return s.ready}})();typeof e=="object"&&typeof t=="object"?t.exports=n:typeof define=="function"&&define.amd?define([],function(){return n}):typeof e=="object"&&(e.WasmBackendModule=n)}}),fR=1e-7,mR=1e-4,Zd=class{constructor(e,t){this.backend=e,this.dataMover=t,this.data=new WeakMap,this.dataIdsCount=0}get(e){return this.data.has(e)||this.dataMover.moveData(this.backend,e),this.data.get(e)}set(e,t){this.dataIdsCount++,this.data.set(e,t)}has(e){return this.data.has(e)}delete(e){return this.dataIdsCount--,this.data.delete(e)}numDataIds(){return this.dataIdsCount}},Ou=class{refCount(e){return Tr("refCount")}incRef(e){return Tr("incRef")}timerAvailable(){return!0}time(e){return Tr("time")}read(e){return Tr("read")}readSync(e){return Tr("readSync")}readToGPU(e,t){return Tr("readToGPU")}numDataIds(){return Tr("numDataIds")}disposeData(e,t){return Tr("disposeData")}write(e,t,n){return Tr("write")}move(e,t,n,r,s){return Tr("move")}memory(){return Tr("memory")}floatPrecision(){return Tr("floatPrecision")}epsilon(){return this.floatPrecision()===32?fR:mR}dispose(){return Tr("dispose")}};function Tr(e){throw new Error(`'${e}' not yet implemented or not found in the registry. This kernel may not be supported by the tfjs backend you have chosen`)}function v4(e){let t=e.length,n=0;for(;t>0;)n=Math.random()*t|0,t--,gf(e,t,n)}function gR(e,t){if(e.length!==t.length)throw new Error(`Array sizes must match to be shuffled together First array length was ${e.length}Second array length was ${t.length}`);let n=e.length,r=0;for(;n>0;)r=Math.random()*n|0,n--,gf(e,n,r),gf(t,n,r)}function Od(e,t,n){return Math.max(e,Math.min(t,n))}function yR(e){return e%2===0?e:e+1}function gf(e,t,n){let r=e[t];e[t]=e[n],e[n]=r}function AR(e){let t=0;for(let n=0;nn+` Shapes ${e} and ${t} must match`)}function Ui(e){M(e!=null,()=>"The input to the tensor constructor must be a non-null value.")}function _i(e,t=[],n=!1){if(t==null&&(t=[]),Array.isArray(e)||In(e)&&!n)for(let r=0;r0,n){return new Promise((r,s)=>{let a=0,o=()=>{if(e()){r();return}a++;let i=t(a);if(n!=null&&a>=n){s();return}setTimeout(o,i)};o()})}function CR(e,t){let n=1,r=-1;for(let a=0;a=0)n*=e[a];else if(e[a]===-1){if(r!==-1)throw Error(`Shapes can only have 1 implicit size. Found -1 at dim ${r} and dim ${a}`);r=a}else if(e[a]<0)throw Error(`Shapes can not be < 0. Found ${e[a]} at dim ${a}`);if(r===-1){if(t>0&&t!==n)throw Error(`Size(${t}) must match the product of shape ${e}`);return e}if(n===0)throw Error(`Cannot infer the missing size in [${e}] when there are 0 elements`);if(t%n!==0)throw Error(`The implicit shape can't be a fractional number. Got ${t} / ${n}`);let s=e.slice();return s[r]=t/n,s}function jr(e,t){let n=t.length;return e=e==null?t.map((r,s)=>s):[].concat(e),M(e.every(r=>r>=-n&&r`All values in axis param must be in range [-${n}, ${n}) but got axis ${e}`),M(e.every(r=>wu(r)),()=>`All values in axis param must be integers but got axis ${e}`),e.map(r=>r<0?n+r:r)}function w4(e,t){let n=[],r=[],s=t!=null&&Array.isArray(t)&&t.length===0,a=t==null||s?null:jr(t,e).sort(),o=0;for(let i=0;ii)&&e[i]===1&&(n.push(e[i]),r.push(i)),a[o]<=i&&o++}e[i]!==1&&(n.push(e[i]),r.push(i))}return{newShape:n,keptDims:r}}function k4(e,t){let n=null;if(e==null||e==="float32")n=new Float32Array(t);else if(e==="int32")n=new Int32Array(t);else if(e==="bool")n=new Uint8Array(t);else throw new Error(`Unknown data type ${e}`);return n}function S4(e,t){let n=null;if(e==null||e==="float32")n=new Float32Array(t);else if(e==="int32")n=new Int32Array(t);else if(e==="bool")n=new Uint8Array(t);else if(e==="string")n=new Array(t);else throw new Error(`Unknown data type ${e}`);return n}function I4(e,t){for(let n=0;nt+=n.length),t}function Na(e){return typeof e=="string"||e instanceof String}function N4(e){return typeof e=="boolean"}function E4(e){return typeof e=="number"}function Kf(e){return Array.isArray(e)?Kf(e[0]):e instanceof Float32Array?"float32":e instanceof Int32Array||e instanceof Uint8Array||e instanceof Uint8ClampedArray?"int32":E4(e)?"float32":Na(e)?"string":N4(e)?"bool":"float32"}function Da(e){return!!(e&&e.constructor&&e.call&&e.apply)}function yf(e,t){for(let n=t;n=0;--r)n[r]=n[r+1]*e[r+1];return n}function R4(e,t,n,r=!1){let s=new Array;if(t.length===1){let a=t[0]*(r?2:1);for(let o=0;ol*u)*(r?2:1);for(let l=0;ls*a)*(n?2:1);if(r===0)return[];if(r!==t.length)throw new Error(`[${e}] does not match the input size ${t.length}${n?" for a complex tensor":""}.`);return R4(0,e,t,n)}function py(e,t){let n=Zf(e,t);for(let r=0;rr*s,1);if(t==null||t==="float32")return yu(e,new Float32Array(n));if(t==="int32")return yu(e,new Int32Array(n));if(t==="bool")return yu(e,new Uint8Array(n));throw new Error(`Unknown data type ${t}`)}function hy(e){e.forEach(t=>{M(Number.isInteger(t)&&t>=0,()=>`Tensor must have a shape comprised of positive integers but got shape [${e}].`)})}function ER(e,t,n){if(t===0)return 0;if(t===1)return e[0];let r=e[e.length-1];for(let s=0;s{let[r,s]=n.split(":");this.urlFlags[r]=DR(r,s)})}};function _R(e){let t={};return e.replace(/[?&]([^=?&]+)(?:=([^&]*))?/g,(n,...r)=>($R(t,r[0],r[1]),r.join("="))),t}function $R(e,t,n){e[decodeURIComponent(t)]=decodeURIComponent(n||"")}function DR(e,t){if(t=t.toLowerCase(),t==="true"||t==="false")return t==="true";if(`${+t}`===t)return+t;throw new Error(`Could not parse value flag value ${t} for flag ${e}.`)}function Y(){return xs}var xs=null;function PR(e){xs=e}var Y1;function $4(){if(Y1==null){let e;if(typeof window!="undefined")e=window;else if(typeof global!="undefined")e=global;else if(typeof process!="undefined")e=process;else if(typeof self!="undefined")e=self;else throw new Error("Could not find a global object");Y1=e}return Y1}function FR(){let e=$4();return e._tfGlobals==null&&(e._tfGlobals=new Map),e._tfGlobals}function my(e,t){let n=FR();if(n.has(e))return n.get(e);{let r=t();return n.set(e,r),n.get(e)}}var Gi="Abs",zu="Acos",Lu="Acosh",ea="Add",Za="AddN",Bu="All",Wu="Any",Ya="ArgMax",Vu="ArgMin",Uu="Asin",Gu="Asinh",Hu="Atan",ju="Atanh",qu="Atan2",Ja="AvgPool",Yf="AvgPoolGrad",Yd="AvgPool3D",Jf="AvgPool3DGrad",Qa="BatchMatMul",Hi="BatchToSpaceND",Qf="Bincount",D4="BroadcastTo",em="BroadcastArgs",eo="Cast",to="Ceil",ta="ClipByValue",Jd="Complex",Qd="ComplexAbs",ji="Concat",no="Conv2D",tm="Conv2DBackpropFilter",ro="Conv2DBackpropInput",ep="Conv3D",nm="Conv3DBackpropFilterV2",rm="Conv3DBackpropInputV2",so="Cos",ao="Cosh",qi="Cumprod",oo="Cumsum",Xi="CropAndResize",sm="DenseBincount",Ki="DepthToSpace",io="DepthwiseConv2dNative",am="DepthwiseConv2dNativeBackpropFilter",om="DepthwiseConv2dNativeBackpropInput",im="Diag",tp="Dilation2D",Af="Dilation2DBackpropInput",xf="Dilation2DBackpropFilter",lo="RealDiv",np="Einsum",uo="Elu",lm="EluGrad",Xu="Erf",Zi="Equal",co="Exp",Yi="ExpandDims",Ji="Expm1",um="FFT",Ku="Fill",Qi="FlipLeftRight",po="Floor",ho="FloorDiv",fo="FusedBatchNorm",el="GatherV2",tl="GatherNd",nl="Greater",mo="GreaterEqual",go="Identity",cm="IFFT",rp="Imag",Zu="IsFinite",Yu="IsInf",Ju="IsNan",yo="LeakyRelu",rl="Less",sl="LessEqual",dm="LinSpace",Ao="Log",Qu="Log1p",al="LogicalAnd",ec="LogicalNot",sp="LogicalOr",P4="LogSoftmax",ap="LRN",pm="LRNGrad",xo="Max",bo="Maximum",vo="MaxPool",hm="MaxPoolGrad",op="MaxPool3D",fm="MaxPool3DGrad",mm="MaxPoolWithArgmax",wo="Mean",ko="Min",So="Minimum",Io="MirrorPad",tc="Mod",gm="Multinomial",Co="Multiply",ol="Neg",il="NotEqual",ll="NonMaxSuppressionV3",nc="NonMaxSuppressionV4",ul="NonMaxSuppressionV5",cl="OnesLike",dl="OneHot",pl="Pack",To="PadV2",OR="Pool",No="Pow",Eo="Prelu",Ro="Prod",rc="Range",ip="Real",sc="Reciprocal",_o="Relu",hl="Reshape",ac="ResizeNearestNeighbor",ym="ResizeNearestNeighborGrad",$o="ResizeBilinear",Am="ResizeBilinearGrad",Do="Relu6",fl="Reverse",ml="Round",Po="Rsqrt",gl="ScatterNd",yl="Select",oc="Selu",Al="Slice",Fo="Sin",xl="Sinh",ic="Sign",Oo="Sigmoid",lc="Softplus",Mo="Sqrt",zo="Sum",bl="SpaceToBatchND",vl="SplitV",Lo="Softmax",lp="SparseFillEmptyRows",uc="SparseReshape",up="SparseSegmentMean",cp="SparseSegmentSum",dp="SparseToDense",Bo="SquaredDifference",cc="Square",wl="StridedSlice",pp="StringNGrams",xm="StringSplit",bm="StringToHashBucketFast",Wo="Sub",kl="Tan",Vo="Tanh",na="Tile",Sl="TopK",Il="Transform",Uo="Transpose",vm="Unique",Cl="Unpack",hp="UnsortedSegmentSum",Tl="ZerosLike",Go="Step",Md="FromPixels",Nl="RotateWithOffset",Pa="_FusedMatMul",Fa="FusedConv2D",Oa="FusedDepthwiseConv2D";function Ta(...e){Y().getBool("IS_TEST")||Y().getBool("PROD")||console.warn(...e)}function MR(...e){Y().getBool("IS_TEST")||Y().getBool("PROD")||console.log(...e)}var ku=my("kernelRegistry",()=>new Map),zd=my("gradRegistry",()=>new Map);function bf(e,t){let n=gy(e,t);return ku.get(n)}function dg(e){return zd.get(e)}function _s(e){let t=ku.entries(),n=[];for(;;){let{done:r,value:s}=t.next();if(r)break;let[a,o]=s,[i]=a.split("_");i===e&&n.push(o)}return n}function qr(e){let{kernelName:t,backendName:n}=e,r=gy(t,n);ku.has(r)&&Ta(`The kernel '${t}' for backend '${n}' is already registered`),ku.set(r,e)}function F4(e){let{kernelName:t}=e;zd.has(t)&&Y().getBool("DEBUG")&&Ta(`Overriding the gradient for '${t}'`),zd.set(t,e)}function zR(e,t){let n=gy(e,t);if(!ku.has(n))throw new Error(`The kernel '${e}' for backend '${t}' is not registered`);ku.delete(n)}function LR(e){if(!zd.has(e))throw new Error(`The gradient '${e}' for backend is not registered`);zd.delete(e)}function BR(e,t){_s(e).forEach(r=>{let s=Object.assign({},r,{backendName:t});qr(s)})}function gy(e,t){return`${t}_${e}`}var w={};Le(w,{arraysEqual:()=>Ka,assert:()=>M,assertNonNegativeIntegerDimensions:()=>hy,assertNonNull:()=>Ui,assertShapesMatch:()=>jn,bytesFromStringArray:()=>T4,bytesPerElement:()=>cg,checkConversionForErrors:()=>I4,clamp:()=>Od,computeStrides:()=>Mu,createScalarValue:()=>jR,createShuffledIndices:()=>SR,decodeString:()=>vf,distSquared:()=>bR,encodeString:()=>mp,fetch:()=>XR,fingerPrint64:()=>HR,flatten:()=>_i,getArrayFromDType:()=>S4,getTypedArrayFromDType:()=>k4,hasEncodingLoss:()=>TR,hexToLong:()=>fp,indexToLoc:()=>RR,inferDtype:()=>Kf,inferFromImplicitShape:()=>CR,isBoolean:()=>N4,isFunction:()=>Da,isInt:()=>wu,isNumber:()=>E4,isPromise:()=>fy,isScalarShape:()=>vR,isString:()=>Na,isTypedArray:()=>In,isValidDtype:()=>C4,locToIndex:()=>ER,makeOnesTypedArray:()=>py,makeZerosNestedTypedArray:()=>NR,makeZerosTypedArray:()=>Zf,nearestDivisor:()=>yf,nearestLargerEven:()=>yR,now:()=>Ld,parseAxisParam:()=>jr,randUniform:()=>xR,repeatedTry:()=>IR,rightPad:()=>_d,shuffle:()=>v4,shuffleCombo:()=>gR,sizeFromShape:()=>Tt,sizeToSquarishShape:()=>kR,squeezeShape:()=>w4,sum:()=>AR,swap:()=>gf,tanh:()=>wR,toNestedArray:()=>yu,toTypedArray:()=>wm});var Pb=Vi(JE()),bi=Pb.default||Pb;function fp(e){return bi.fromString(e,!0,16)}var O4=fp("c3a5c85c97cb3127"),yi=fp("b492b66fbe98f273"),Wn=fp("9ae16a3b2f90404f");function pg(e){return e.xor(e.shru(47))}function M4(e,t,n){let r=e.slice(t,t+n);return bi.fromBytes(Array.from(r),!0,!0)}function kt(e,t){return M4(e,t,8)}function Fb(e,t){return M4(e,t,4)}function hn(e,t){return t===0?e:e.shru(t).or(e.shl(64-t))}function Ra(e,t,n=fp("9ddfea08eb382d69")){let r=e.xor(t).mul(n);r=r.xor(r.shru(47));let s=t.xor(r).mul(n);return s=s.xor(s.shru(47)),s=s.mul(n),s}function WR(e,t,n,r,s,a){s=s.add(e),a=hn(a.add(s).add(r),21);let o=s;return s=s.add(t),s=s.add(n),a=a.add(hn(s,44)),[s.add(r),a.add(o)]}function Hh(e,t,n,r){return WR(kt(e,t),kt(e,t+8),kt(e,t+16),kt(e,t+24),n,r)}function VR(e,t=e.length){if(t>=8){let n=Wn.add(t*2),r=kt(e,0).add(Wn),s=kt(e,t-8),a=hn(s,37).mul(n).add(r),o=hn(r,25).add(s).mul(n);return Ra(a,o,n)}if(t>=4){let n=Wn.add(t*2),r=Fb(e,0);return Ra(r.shl(3).add(t),Fb(e,t-4),n)}if(t>0){let n=e[0],r=e[t>>1],s=e[t-1],a=n+(r<<8),o=t+(s<<2);return pg(Wn.mul(a).xor(O4.mul(o))).mul(Wn)}return Wn}function UR(e,t=e.length){let n=Wn.add(t*2),r=kt(e,0).mul(yi),s=kt(e,8),a=kt(e,t-8).mul(n),o=kt(e,t-16).mul(Wn);return Ra(hn(r.add(s),43).add(hn(a,30)).add(o),r.add(hn(s.add(Wn),18)).add(a),n)}function GR(e,t=e.length){let n=Wn.add(t*2),r=kt(e,0).mul(Wn),s=kt(e,8),a=kt(e,t-8).mul(n),o=kt(e,t-16).mul(Wn),i=hn(r.add(s),43).add(hn(a,30)).add(o),l=Ra(i,r.add(hn(s.add(Wn),18)).add(a),n),u=kt(e,16).mul(n),c=kt(e,24),p=i.add(kt(e,t-32)).mul(n),d=l.add(kt(e,t-24)).mul(n);return Ra(hn(u.add(c),43).add(hn(p,30)).add(d),u.add(hn(c.add(r),18)).add(p),n)}function HR(e,t=e.length){let n=bi.fromNumber(81,!0);if(t<=32)return t<=16?VR(e,t):UR(e,t);if(t<=64)return GR(e,t);let r=n,s=n.mul(yi).add(113),a=pg(s.mul(Wn).add(113)).mul(Wn),o=[bi.UZERO,bi.UZERO],i=[bi.UZERO,bi.UZERO];r=r.mul(Wn).add(kt(e,0));let l=0,u=(t-1>>6)*64,c=u+(t-1&63)-63;do r=hn(r.add(s).add(o[0]).add(kt(e,l+8)),37).mul(yi),s=hn(s.add(o[1]).add(kt(e,l+48)),42).mul(yi),r=r.xor(i[1]),s=s.add(o[0]).add(kt(e,l+40)),a=hn(a.add(i[0]),33).mul(yi),o=Hh(e,l,o[1].mul(yi),r.add(i[0])),i=Hh(e,l+32,a.add(i[1]),s.add(kt(e,l+16))),[a,r]=[r,a],l+=64;while(l!==u);let p=yi.add(a.and(255).shl(1));return l=c,i[0]=i[0].add(t-1&63),o[0]=o[0].add(i[0]),i[0]=i[0].add(o[0]),r=hn(r.add(s).add(o[0]).add(kt(e,l+8)),37).mul(p),s=hn(s.add(o[1]).add(kt(e,l+48)),42).mul(p),r=r.xor(i[1].mul(9)),s=s.add(o[0].mul(9).add(kt(e,l+40))),a=hn(a.add(i[0]),33).mul(p),o=Hh(e,l,o[1].mul(p),r.add(i[0])),i=Hh(e,l+32,a.add(i[1]),s.add(kt(e,l+16))),[a,r]=[r,a],Ra(Ra(o[0],i[0],p).add(pg(s).mul(O4)).add(a),Ra(o[1],i[1],p).add(r),p)}function jR(e,t){return t==="string"?mp(e):wm([e],t)}function qR(e,t){return e instanceof Float32Array&&t==="float32"||e instanceof Int32Array&&t==="int32"||e instanceof Uint8Array&&t==="bool"}function wm(e,t){if(t==="string")throw new Error("Cannot convert a string[] to a TypedArray");if(Array.isArray(e)&&(e=_i(e)),Y().getBool("DEBUG")&&I4(e,t),qR(e,t))return e;if(t==null||t==="float32"||t==="complex64")return new Float32Array(e);if(t==="int32")return new Int32Array(e);if(t==="bool"){let n=new Uint8Array(e.length);for(let r=0;r{r=n()},a,o=Ld();if(this.backendTimer.timerAvailable())a=this.backendTimer.time(s);else{s();for(let l of r)l.dataSync();a=Promise.resolve({kernelMs:Ld()-o})}if(Y().getBool("CHECK_COMPUTATION_FOR_ERRORS"))for(let l=0;l{ZR(c,u.dtype,e)})}return{kernelName:e,outputs:r,inputs:t,timeMs:a.then(l=>l.kernelMs),extraInfo:a.then(l=>l.getExtraProfileInfo!=null?l.getExtraProfileInfo():"")}}logKernelProfile(e){let{kernelName:t,outputs:n,timeMs:r,inputs:s,extraInfo:a}=e;n.forEach(o=>{Promise.all([o.data(),r,a]).then(i=>{this.logger.logKernelProfile(t,o,i[0],i[1],s,i[2])})})}};function ZR(e,t,n){if(t!=="float32")return!1;for(let r=0;r0?f:""} `}}console.log(`%c${i} %c${o} %c${l}D ${c} %c${u} %c${p} %c${a}`,"font-weight:bold","color:red","color:blue","color: orange","color: green","color: steelblue")}};function JR(e,t,n){let r={},s={};for(let l=0;lr[m.id]=!0),h=!0,s[u.id]=!0;break}if(h)break}}let a={};a[n.id]=!0;let o={};for(let l=e.length-1;l>=0;l--){let u=e[l],c=u.inputs;for(let p=0;p=0;s--){let a=t[s],o=[];if(a.outputs.forEach(l=>{let u=e[l.id];u!=null?o.push(u):o.push(null)}),a.gradient==null)throw new Error(`Cannot compute gradient: gradient function not found for ${a.kernelName}.`);let i=a.gradient(o);for(let l in a.inputs){if(!(l in i))throw new Error(`Cannot backprop through input ${l}. Available gradients found: ${Object.keys(i)}.`);let u=n(()=>i[l]());if(u.dtype!=="float32")throw new Error(`Error in gradient for op ${a.kernelName}. The gradient of input ${l} must have 'float32' dtype, but has '${u.dtype}'`);let c=a.inputs[l];if(!Ka(u.shape,c.shape))throw new Error(`Error in gradient for op ${a.kernelName}. The gradient of input '${l}' has shape '${u.shape}', which does not match the shape of the input '${c.shape}'`);if(e[c.id]==null)e[c.id]=u;else{let p=e[c.id];e[c.id]=r(p,u),p.dispose()}}}}var Ob=20,yd=3,J1=7;function e_(e,t,n,r){let s=Mu(t),a=t_(e,t,n,s),o=t.length,i=rf(e,t,n,s,a),l=["Tensor"];return r&&(l.push(` dtype: ${n}`),l.push(` rank: ${o}`),l.push(` shape: [${t}]`),l.push(" values:")),l.push(i.map(u=>" "+u).join(` `)),l.join(` `)}function t_(e,t,n,r){let s=Tt(t),a=r[r.length-1],o=new Array(a).fill(0),i=t.length,l=n==="complex64"?wd(e):e;if(i>1)for(let u=0;uOb){let g=yd*o,y=Array.from(e.slice(0,g)),x=Array.from(e.slice((i-yd)*o,i*o));return n==="complex64"&&(y=wd(y),x=wd(x)),["["+y.map((A,b)=>vd(A,s[b],n)).join(", ")+", ..., "+x.map((A,b)=>vd(A,s[i-yd+b],n)).join(", ")+"]"]}let m=n==="complex64"?wd(e):Array.from(e);return["["+m.map((g,y)=>vd(g,s[y],n)).join(", ")+"]"]}let u=t.slice(1),c=r.slice(1),p=r[0]*o,d=[];if(i>Ob){for(let m=0;m`Length of values '${r}' does not match the size inferred by the shape '${this.size}'.`)}if(t==="complex64")throw new Error("complex64 dtype TensorBuffers are not supported. Please create a TensorBuffer for the real and imaginary parts separately and call tf.complex(real, imag).");this.values=n||S4(t,this.size),this.strides=Mu(e)}set(e,...t){t.length===0&&(t=[0]),M(t.length===this.rank,()=>`The number of provided coordinates (${t.length}) must match the rank (${this.rank})`);let n=this.locToIndex(t);this.values[n]=e}get(...e){e.length===0&&(e=[0]);let t=0;for(let r of e){if(r<0||r>=this.shape[t]){let s=`Requested out of range element at ${e}. Buffer shape=${this.shape}`;throw new Error(s)}t++}let n=e[e.length-1];for(let r=0;rvf(n))}catch(n){throw new Error("Failed to decode the string bytes into utf-8. To get the original bytes, call tensor.bytes().")}}return e}dataToGPU(e){return this.throwIfDisposed(),is().readToGPU(this.dataId,e)}dataSync(){this.throwIfDisposed();let e=is().readSync(this.dataId);if(this.dtype==="string")try{return e.map(t=>vf(t))}catch(t){throw new Error("Failed to decode the string bytes into utf-8. To get the original bytes, call tensor.bytes().")}return e}async bytes(){this.throwIfDisposed();let e=await is().read(this.dataId);return this.dtype==="string"?e:new Uint8Array(e.buffer)}dispose(){this.isDisposed||(is().disposeTensor(this),this.isDisposedInternal=!0)}get isDisposed(){return this.isDisposedInternal}throwIfDisposed(){if(this.isDisposed)throw new Error("Tensor is disposed.")}print(e=!1){return fu.print(this,e)}clone(){return this.throwIfDisposed(),fu.clone(this)}toString(e=!1){let t=this.dataSync();return e_(t,this.shape,this.dtype,e)}cast(e){return this.throwIfDisposed(),fu.cast(this,e)}variable(e=!0,t,n){return this.throwIfDisposed(),is().makeVariable(this,e,t,n)}};Object.defineProperty(rt,Symbol.hasInstance,{value:e=>!!e&&e.data!=null&&e.dataSync!=null&&e.throwIfDisposed!=null});function o_(){return my("Tensor",()=>rt)}o_();var Bd=class extends rt{constructor(e,t,n,r){super(e.shape,e.dtype,e.dataId,r),this.trainable=t,this.name=n}assign(e){if(e.dtype!==this.dtype)throw new Error(`dtype of the new value (${e.dtype}) and previous value (${this.dtype}) must match`);if(!Ka(e.shape,this.shape))throw new Error(`shape of the new value (${e.shape}) and previous value (${this.shape}) must match`);is().disposeTensor(this),this.dataId=e.dataId,is().incRef(this,null)}dispose(){is().disposeVariable(this),this.isDisposedInternal=!0}};Object.defineProperty(Bd,Symbol.hasInstance,{value:e=>e instanceof rt&&e.assign!=null&&e.assign instanceof Function});var ds={};Le(ds,{assertTypesMatch:()=>G4,getTensorsInContainer:()=>yy,isTensorInList:()=>l_,makeTypesMatch:()=>Lt});var L4=(e=>(e.R0="R0",e.R1="R1",e.R2="R2",e.R3="R3",e.R4="R4",e.R5="R5",e.R6="R6",e))(L4||{}),B4=(e=>(e.float32="float32",e.int32="int32",e.bool="int32",e.complex64="complex64",e))(B4||{}),W4=(e=>(e.float32="float32",e.int32="int32",e.bool="bool",e.complex64="complex64",e))(W4||{}),V4=(e=>(e.float32="float32",e.int32="float32",e.bool="float32",e.complex64="complex64",e))(V4||{}),U4=(e=>(e.float32="complex64",e.int32="complex64",e.bool="complex64",e.complex64="complex64",e))(U4||{}),i_={float32:V4,int32:B4,bool:W4,complex64:U4};function Nn(e,t){if(e==="string"||t==="string"){if(e==="string"&&t==="string")return"string";throw new Error(`Can not upcast ${e} with ${t}`)}return i_[e][t]}function gp(e){return Nn(e,"int32")}function Lt(e,t){if(e.dtype===t.dtype)return[e,t];let n=Nn(e.dtype,t.dtype);return[e.cast(n),t.cast(n)]}function G4(e,t){M(e.dtype===t.dtype,()=>`The dtypes of the first(${e.dtype}) and second(${t.dtype}) input must match`)}function l_(e,t){return t.some(n=>n.id===e.id)}function yy(e){let t=[];return H4(e,t,new Set),t}function H4(e,t,n){if(e==null)return;if(e instanceof rt){t.push(e);return}if(!u_(e))return;let r=e;for(let s in r){let a=r[s];n.has(a)||(n.add(a),H4(a,t,n))}}function u_(e){return Array.isArray(e)||typeof e=="object"}function Q1(e){return e.kernelName!=null}var Mb=class{constructor(){this.registeredVariables={},this.nextTapeNodeId=0,this.numBytes=0,this.numTensors=0,this.numStringTensors=0,this.numDataBuffers=0,this.gradientDepth=0,this.kernelDepth=0,this.scopeStack=[],this.numDataMovesStack=[],this.nextScopeId=0,this.tensorInfo=new WeakMap,this.profiling=!1,this.activeProfile={newBytes:0,newTensors:0,peakBytes:0,kernels:[],result:null,get kernelNames(){return Array.from(new Set(this.kernels.map(e=>e.name)))}}}dispose(){for(let e in this.registeredVariables)this.registeredVariables[e].dispose()}},hg=class{constructor(e){this.ENV=e,this.registry={},this.registryFactory={},this.pendingBackendInitId=0,this.state=new Mb}async ready(){if(this.pendingBackendInit!=null)return this.pendingBackendInit.then(()=>{});if(this.backendInstance!=null)return;let e=this.getSortedBackends();for(let t=0;t{t.setupFunc!=null&&t.setupFunc(this.backendInstance)})}disposeRegisteredKernels(e){_s(e).forEach(n=>{n.disposeFunc!=null&&n.disposeFunc(this.registry[e])})}initializeBackend(e){let t=this.registryFactory[e];if(t==null)throw new Error(`Cannot initialize backend ${e}, no registration found.`);try{let n=t.factory();if(n&&!(n instanceof Ou)&&typeof n.then=="function"){let r=++this.pendingBackendInitId,s=n.then(a=>r(rthis.registryFactory[t].priority-this.registryFactory[e].priority)}initializeBackendsAndReturnBest(){let e=this.getSortedBackends();for(let t=0;tthis.startScope(n),()=>this.endScope(r),()=>(r=t(),r instanceof Promise&&console.error("Cannot return a Promise inside of tidy."),r))}scopedRun(e,t,n){e();try{let r=n();return t(),r}catch(r){throw t(),r}}nextTensorId(){return hg.nextTensorId++}nextVariableId(){return hg.nextVariableId++}clone(e){let t=B.runKernel(go,{x:e}),n={x:e},r=a=>({x:()=>{let o="float32",i={x:a},l={dtype:o};return B.runKernel(eo,i,l)}}),s=[];return this.addTapeNode(this.state.activeScope.name,n,[t],r,s,{}),t}runKernel(e,t,n){if(this.backendName==null&&this.backend,!(bf(e,this.backendName)!=null))throw new Error(`Kernel '${e}' not registered for backend '${this.backendName}'`);return this.runKernelFunc({kernelName:e,inputs:t,attrs:n})}shouldCheckForMemLeaks(){return this.ENV.getBool("IS_TEST")}checkKernelForMemLeak(e,t,n){let r=this.backend.numDataIds(),s=0;n.forEach(i=>{s+=i.dtype==="complex64"?3:1});let a=this.state.numDataMovesStack[this.state.numDataMovesStack.length-1],o=r-t-s-a;if(o>0)throw new Error(`Backend '${this.backendName}' has an internal memory leak (${o} data ids) after running '${e}'`)}runKernelFunc(e){let t,n=[],r=this.isTapeOn(),s=this.state.numBytes,a=this.state.numTensors;this.shouldCheckForMemLeaks()&&this.state.numDataMovesStack.push(0);let o;this.backendName==null&&this.backend;let i,l=Q1(e)?e.kernelName:this.state.activeScope!=null?this.state.activeScope.name:"";if(Q1(e)){let{kernelName:h,inputs:f,attrs:m}=e;this.backendName==null&&this.backend;let g=bf(h,this.backendName);M(g!=null,()=>`Cannot find registered kernel '${h}' for backend '${this.backendName}'`),o=()=>{let y=this.backend.numDataIds();i=g.kernelFunc({inputs:f,attrs:m,backend:this.backend});let x=Array.isArray(i)?i:[i];this.shouldCheckForMemLeaks()&&this.checkKernelForMemLeak(h,y,x);let A=x.map(b=>{if(b.rank!=null)return b;let{dataId:v,shape:S,dtype:I}=b;return this.makeTensorFromDataId(v,S,I)});if(r){let b=this.getTensorsForGradient(h,f,A);n=this.saveTensorsForBackwardMode(b)}return A}}else{let{forwardFunc:h}=e,f=m=>{!r||(n=m.map(g=>this.keep(this.clone(g))))};o=()=>{let m=this.backend.numDataIds();i=this.tidy(()=>h(this.backend,f));let g=Array.isArray(i)?i:[i];return this.shouldCheckForMemLeaks()&&this.checkKernelForMemLeak(l,m,g),g}}let{inputs:u,attrs:c}=e,p=Q1(e)?null:e.backwardsFunc,d;return this.scopedRun(()=>this.state.kernelDepth++,()=>this.state.kernelDepth--,()=>{!this.ENV.getBool("DEBUG")&&!this.state.profiling?t=o():(d=this.profiler.profileKernel(l,u,()=>o()),this.ENV.getBool("DEBUG")&&this.profiler.logKernelProfile(d),t=d.outputs)}),r&&this.addTapeNode(l,u,t,p,n,c),this.state.profiling&&this.state.activeProfile.kernels.push({name:l,bytesAdded:this.state.numBytes-s,totalBytesSnapshot:this.state.numBytes,tensorsAdded:this.state.numTensors-a,totalTensorsSnapshot:this.state.numTensors,inputShapes:Object.keys(u).map(h=>u[h]!=null?u[h].shape:null),outputShapes:t.map(h=>h.shape),kernelTimeMs:d.timeMs,extraInfo:d.extraInfo}),Array.isArray(i)?t:t[0]}saveTensorsForBackwardMode(e){return e.map(n=>this.keep(this.clone(n)))}getTensorsForGradient(e,t,n){let r=dg(e);if(r!=null){let s=r.inputsToSave||[],a=r.outputsToSave||[],o;r.saveAllInputs?(M(Array.isArray(t),()=>"saveAllInputs is true, expected inputs to be an array."),o=Object.keys(t).map(l=>t[l])):o=s.map(l=>t[l]);let i=n.filter((l,u)=>a[u]);return o.concat(i)}return[]}makeTensor(e,t,n,r){if(e==null)throw new Error("Values passed to engine.makeTensor() are null");n=n||"float32",r=r||this.backend;let s=e;n==="string"&&Na(e[0])&&(s=e.map(i=>mp(i)));let a=r.write(s,t,n),o=new rt(t,n,a,this.nextTensorId());if(this.trackTensor(o,r),n==="string"){let i=this.state.tensorInfo.get(a),l=T4(s);this.state.numBytes+=l-i.bytes,i.bytes=l}return o}makeTensorFromDataId(e,t,n,r){n=n||"float32";let s=new rt(t,n,e,this.nextTensorId());return this.trackTensor(s,r),s}makeVariable(e,t=!0,n,r){n=n||this.nextVariableId().toString(),r!=null&&r!==e.dtype&&(e=e.cast(r));let s=new Bd(e,t,n,this.nextTensorId());if(this.state.registeredVariables[s.name]!=null)throw new Error(`Variable with name ${s.name} was already registered`);return this.state.registeredVariables[s.name]=s,this.incRef(s,this.backend),s}trackTensor(e,t){this.state.numTensors++,e.dtype==="string"&&this.state.numStringTensors++;let n=0;e.dtype!=="complex64"&&e.dtype!=="string"&&(n=e.size*cg(e.dtype)),this.state.numBytes+=n,this.state.tensorInfo.has(e.dataId)||(this.state.numDataBuffers++,this.state.tensorInfo.set(e.dataId,{backend:t||this.backend,dtype:e.dtype,shape:e.shape,bytes:n})),e instanceof Bd||this.track(e)}incRef(e,t){this.trackTensor(e,t),this.backend.incRef(e.dataId)}removeDataId(e,t){this.state.tensorInfo.has(e)&&this.state.tensorInfo.get(e).backend===t&&(this.state.tensorInfo.delete(e),this.state.numDataBuffers--)}disposeTensor(e){if(!this.state.tensorInfo.has(e.dataId))return;let t=this.state.tensorInfo.get(e.dataId);if(this.state.numTensors--,e.dtype==="string"&&(this.state.numStringTensors--,this.state.numBytes-=t.bytes),e.dtype!=="complex64"&&e.dtype!=="string"){let n=e.size*cg(e.dtype);this.state.numBytes-=n}t.backend.disposeData(e.dataId)&&this.removeDataId(e.dataId,t.backend)}disposeVariables(){for(let e in this.state.registeredVariables){let t=this.state.registeredVariables[e];this.disposeVariable(t)}}disposeVariable(e){this.disposeTensor(e),this.state.registeredVariables[e.name]!=null&&delete this.state.registeredVariables[e.name]}memory(){let e=this.backend.memory();return e.numTensors=this.state.numTensors,e.numDataBuffers=this.state.numDataBuffers,e.numBytes=this.state.numBytes,this.state.numStringTensors>0&&(e.unreliable=!0,e.reasons==null&&(e.reasons=[]),e.reasons.push("Memory usage by string tensors is approximate (2 bytes per character)")),e}async profile(e){this.state.profiling=!0;let t=this.state.numBytes,n=this.state.numTensors;this.state.activeProfile.kernels=[],this.state.activeProfile.result=await e(),this.state.profiling=!1,this.state.activeProfile.peakBytes=Math.max(...this.state.activeProfile.kernels.map(r=>r.totalBytesSnapshot)),this.state.activeProfile.newBytes=this.state.numBytes-t,this.state.activeProfile.newTensors=this.state.numTensors-n;for(let r of this.state.activeProfile.kernels)r.kernelTimeMs=await r.kernelTimeMs,r.extraInfo=await r.extraInfo;return this.state.activeProfile}isTapeOn(){return this.state.gradientDepth>0&&this.state.kernelDepth===0}addTapeNode(e,t,n,r,s,a){let o={id:this.state.nextTapeNodeId++,kernelName:e,inputs:t,outputs:n,saved:s},i=dg(e);i!=null&&(r=i.gradFunc),r!=null&&(o.gradient=l=>(l=l.map((u,c)=>{if(u==null){let p=n[c],d=Zf(p.size,p.dtype);return this.makeTensor(d,p.shape,p.dtype)}return u}),r(l.length>1?l:l[0],s,a))),this.state.activeTape.push(o)}keep(e){return e.kept=!0,e}startTape(){this.state.gradientDepth===0&&(this.state.activeTape=[]),this.state.gradientDepth++}endTape(){this.state.gradientDepth--}startScope(e){let t={track:[],name:"unnamed scope",id:this.state.nextScopeId++};e&&(t.name=e),this.state.scopeStack.push(t),this.state.activeScope=t}endScope(e){let t=yy(e),n=new Set(t.map(s=>s.id));for(let s=0;s{!s.kept&&s.scopeId===r.id&&this.track(s)})}gradients(e,t,n,r=!1){if(M(t.length>0,()=>"gradients() received an empty list of xs."),n!=null&&n.dtype!=="float32")throw new Error(`dy must have 'float32' dtype, but has '${n.dtype}'`);let s=this.scopedRun(()=>this.startTape(),()=>this.endTape(),()=>this.tidy("forward",e));M(s instanceof rt,()=>"The result y returned by f() must be a tensor.");let a=JR(this.state.activeTape,t,s);if(!r&&a.length===0&&t.length>0)throw new Error("Cannot compute gradient of y=f(x) with respect to x. Make sure that the f you passed encloses all operations that lead from x to y.");return this.tidy("backward",()=>{let o={};o[s.id]=n==null?c_(s.shape):n,QR(o,a,l=>this.tidy(l),d_);let i=t.map(l=>o[l.id]);return this.state.gradientDepth===0&&(this.state.activeTape.forEach(l=>{for(let u of l.saved)u.dispose()}),this.state.activeTape=null),{value:s,grads:i}})}customGrad(e){return M(Da(e),()=>"The f passed in customGrad(f) must be a function."),(...t)=>{M(t.every(o=>o instanceof rt),()=>"The args passed in customGrad(f)(x1, x2,...) must all be tensors");let n,r={};t.forEach((o,i)=>{r[i]=o});let s=(o,i)=>(n=e(...t,i),M(n.value instanceof rt,()=>"The function f passed in customGrad(f) must return an object where `obj.value` is a tensor"),M(Da(n.gradFunc),()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function."),n.value),a=(o,i)=>{let l=n.gradFunc(o,i),u=Array.isArray(l)?l:[l];M(u.length===t.length,()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function that returns the same number of tensors as inputs passed to f(...)."),M(u.every(p=>p instanceof rt),()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function that returns a list of only tensors.");let c={};return u.forEach((p,d)=>{c[d]=()=>p}),c};return this.runKernelFunc({forwardFunc:s,backwardsFunc:a,inputs:r})}}readSync(e){return this.state.tensorInfo.get(e).backend.readSync(e)}read(e){return this.state.tensorInfo.get(e).backend.read(e)}readToGPU(e,t){return this.state.tensorInfo.get(e).backend.readToGPU(e,t)}async time(e){let t=Ld(),n=await this.backend.time(e);return n.wallMs=Ld()-t,n}track(e){return this.state.activeScope!=null&&(e.scopeId=this.state.activeScope.id,this.state.activeScope.track.push(e)),e}get registeredVariables(){return this.state.registeredVariables}reset(){this.pendingBackendInitId++,this.state.dispose(),this.ENV.reset(),this.state=new Mb;for(let e in this.registry)this.disposeRegisteredKernels(e),this.registry[e].dispose(),delete this.registry[e];this.backendName=null,this.backendInstance=null,this.pendingBackendInit=null}},Ay=hg;Ay.nextTensorId=0;Ay.nextVariableId=0;function c_(e){let t=py(Tt(e),"float32");return B.makeTensor(t,e,"float32")}function j4(){let e=$4();if(e._tfengine==null){let t=new _4(e);e._tfengine=new Ay(t)}return PR(e._tfengine.ENV),r_(()=>e._tfengine),e._tfengine}var B=j4();function d_(e,t){let n={a:e,b:t};return B.runKernel(ea,n)}var yp={};Le(yp,{isBrowser:()=>q4,isMobile:()=>f_,mockIsMobile:()=>h_});function p_(){return typeof navigator!="undefined"&&navigator!=null}var fg;function h_(e){fg=e}function f_(e){if(fg!==void 0)return fg;if(e||p_()){if(e||(e=navigator),e.product==="ReactNative")return!0;let t=e.userAgent||e.vendor||(typeof window!="undefined"?window.opera:"");if(!t){let n=e;return n.userAgentData&&n.userAgentData.mobile}return/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(t)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(t.substr(0,4))}return!1}function q4(){return typeof window!="undefined"&&window.document!=null||typeof WorkerGlobalScope!="undefined"}var Hr=Y();Hr.registerFlag("DEBUG",()=>!1,e=>{e&&console.warn("Debugging mode is ON. The output of every math call will be downloaded to CPU and checked for NaNs. This significantly impacts performance.")});Hr.registerFlag("IS_BROWSER",()=>q4());Hr.registerFlag("IS_NODE",()=>typeof process!="undefined"&&typeof process.versions!="undefined"&&typeof process.versions.node!="undefined");Hr.registerFlag("IS_CHROME",()=>typeof navigator!="undefined"&&navigator!=null&&navigator.userAgent!=null&&/Chrome/.test(navigator.userAgent)&&/Google Inc/.test(navigator.vendor));Hr.registerFlag("PROD",()=>!1);Hr.registerFlag("TENSORLIKE_CHECK_SHAPE_CONSISTENCY",()=>Hr.getBool("DEBUG"));Hr.registerFlag("DEPRECATION_WARNINGS_ENABLED",()=>!0);Hr.registerFlag("IS_TEST",()=>!1);Hr.registerFlag("CHECK_COMPUTATION_FOR_ERRORS",()=>!0);Hr.registerFlag("WRAP_TO_IMAGEBITMAP",()=>!1);Hr.registerFlag("ENGINE_COMPILE_ONLY",()=>!1);function $s(e,t){let n=e;if(In(e))return t==="string"?[]:[e.length];if(!Array.isArray(e))return[];let r=[];for(;Array.isArray(n)||In(n)&&t!=="string";)r.push(n.length),n=n[0];return Array.isArray(e)&&Y().getBool("TENSORLIKE_CHECK_SHAPE_CONSISTENCY")&&X4(e,r,[]),r}function X4(e,t,n){if(n=n||[],!Array.isArray(e)&&!In(e)){M(t.length===0,()=>`Element arr[${n.join("][")}] is a primitive, but should be an array/TypedArray of ${t[0]} elements`);return}M(t.length>0,()=>`Element arr[${n.join("][")}] should be a primitive, but is an array of ${e.length} elements`),M(e.length===t[0],()=>`Element arr[${n.join("][")}] should have ${t[0]} elements, but has ${e.length} elements`);let r=t.slice(1);for(let s=0;s=0&&(s=r),zb(r,s,t,n),e==null||!In(e)&&!Array.isArray(e)&&typeof e!="number"&&typeof e!="boolean"&&typeof e!="string"){let l=e==null?"null":e.constructor.name;throw new Error(`Argument '${t}' passed to '${n}' must be a Tensor or TensorLike, but got '${l}'`)}let a=$s(e,s);!In(e)&&!Array.isArray(e)&&(e=[e]);let i=s!=="string"?wm(e,s):_i(e,[],!0);return B.makeTensor(i,a,s)}function Wd(e,t,n,r="numeric"){if(!Array.isArray(e))throw new Error(`Argument ${t} passed to ${n} must be a \`Tensor[]\` or \`TensorLike[]\``);return e.map((a,o)=>$(a,`${t}[${o}]`,n,r))}var K4="__op";function V(e){let t=Object.keys(e);if(t.length!==1)throw new Error(`Please provide an object with a single key (operation name) mapping to a function. Got an object with ${t.length} keys.`);let n=t[0],r=e[n];n.endsWith("_")&&(n=n.substring(0,n.length-1)),n=n+K4;let s=(...a)=>{B.startScope(n);try{let o=r(...a);return fy(o)&&console.error("Cannot return a Promise inside of tidy."),B.endScope(o),o}catch(o){throw B.endScope(null),o}};return Object.defineProperty(s,"name",{value:n,configurable:!0}),s}function m_(e,t){let n=$(e,"real","complex"),r=$(t,"imag","complex");jn(n.shape,r.shape,`real and imag shapes, ${n.shape} and ${r.shape}, must match in call to tf.complex().`);let s={real:n,imag:r};return B.runKernel(Jd,s)}var Ma=V({complex_:m_});function Ho(e,t,n,r){if(r==null&&(r=Kf(e)),r==="complex64")throw new Error("Cannot construct a complex64 tensor directly. Please use tf.complex(real, imag).");if(!In(e)&&!Array.isArray(e)&&typeof e!="number"&&typeof e!="boolean"&&typeof e!="string")throw new Error("values passed to tensor(values) must be a number/boolean/string or an array of numbers/booleans/strings, or a TypedArray");if(t!=null){hy(t);let s=Tt(t),a=Tt(n);M(s===a,()=>`Based on the provided shape, [${t}], the tensor should have ${s} values but has ${a}`);for(let o=0;o`Error creating a new Tensor. Inferred shape (${n}) does not match the provided shape (${t}). `)}}return!In(e)&&!Array.isArray(e)&&(e=[e]),t=t||n,e=r!=="string"?wm(e,r):_i(e,[],!0),B.makeTensor(e,t,r)}function pt(e,t,n){let r=$s(e,n);return Ho(e,t,r,n)}var mg={float32:4,float16:2,int32:4,uint16:2,uint8:1,bool:1,complex64:8},wf=4;async function g_(e,t){let n=[],r=[],s=Array.isArray(e)?e.map(o=>o.name):Object.keys(e);for(let o=0;o{let d=await l.bytes(),h=d.reduce((g,y)=>g+y.length,0)+wf*d.length,f=new Uint8Array(h),m=0;for(let g=0;g{if(t+=a.byteLength,n.push(a.byteLength===a.buffer.byteLength?a:new a.constructor(a)),!(a instanceof Float32Array||a instanceof Int32Array||a instanceof Uint8Array))throw new Error(`Unsupported TypedArray subtype: ${a.constructor.name}`)});let r=new Uint8Array(t),s=0;return n.forEach(a=>{r.set(new Uint8Array(a.buffer),s),s+=a.byteLength}),r.buffer}var xy=typeof Buffer!="undefined"&&(typeof Blob=="undefined"||typeof atob=="undefined"||typeof btoa=="undefined");function Lb(e){return xy?Buffer.byteLength(e):new Blob([e]).size}function A_(e){if(xy)return Buffer.from(e).toString("base64");let t=new Uint8Array(e),n="";for(let r=0,s=t.length;r{t+=s.byteLength});let n=new Uint8Array(t),r=0;return e.forEach(s=>{n.set(new Uint8Array(s),r),r+=s.byteLength}),n.buffer}function Bb(e){let t="/";for(e=e.trim();e.endsWith(t);)e=e.slice(0,e.length-1);let n=e.split(t);return n[n.length-1]}function Y4(e,t){let n={modelTopology:e.modelTopology,format:e.format,generatedBy:e.generatedBy,convertedBy:e.convertedBy,weightsManifest:t};return e.signature!=null&&(n.signature=e.signature),e.userDefinedMetadata!=null&&(n.userDefinedMetadata=e.userDefinedMetadata),e.modelInitializer!=null&&(n.modelInitializer=e.modelInitializer),e.trainingConfig!=null&&(n.trainingConfig=e.trainingConfig),n}async function vy(e,t){let n={modelTopology:e.modelTopology,format:e.format,generatedBy:e.generatedBy,convertedBy:e.convertedBy};if(e.trainingConfig!=null&&(n.trainingConfig=e.trainingConfig),e.weightsManifest!=null){let[r,s]=await t(e.weightsManifest);n.weightSpecs=r,n.weightData=s}return e.signature!=null&&(n.signature=e.signature),e.userDefinedMetadata!=null&&(n.userDefinedMetadata=e.userDefinedMetadata),e.modelInitializer!=null&&(n.modelInitializer=e.modelInitializer),n}function Ap(e){if(e.modelTopology instanceof ArrayBuffer)throw new Error("Expected JSON model topology, received ArrayBuffer.");return{dateSaved:new Date,modelTopologyType:"JSON",modelTopologyBytes:e.modelTopology==null?0:Lb(JSON.stringify(e.modelTopology)),weightSpecsBytes:e.weightSpecs==null?0:Lb(JSON.stringify(e.weightSpecs)),weightDataBytes:e.weightData==null?0:e.weightData.byteLength}}function b_(){let e=n=>{let r=n<<13,s=0;for(;(r&8388608)===0;)s-=8388608,r<<=1;return r&=-8388609,s+=947912704,r|s},t=new Uint32Array(2048);t[0]=0;for(let n=1;n<1024;n++)t[n]=e(n);for(let n=1024;n<2048;n++)t[n]=939524096+(n-1024<<13);return t}function v_(){let e=new Uint32Array(64);e[0]=0,e[31]=1199570944,e[32]=2147483648,e[63]=3347054592;for(let t=1;t<31;t++)e[t]=t<<23;for(let t=33;t<63;t++)e[t]=2147483648+(t-32<<23);return e}function w_(){let e=new Uint32Array(64);for(let t=0;t<64;t++)e[t]=1024;return e[0]=e[32]=0,e}function k_(){let e=b_(),t=v_(),n=w_();return r=>{let s=new ArrayBuffer(4*r.length),a=new Uint32Array(s);for(let o=0;o>10]+(i&1023)]+t[i>>10];a[o]=l}return new Float32Array(s)}}var Wt=class{constructor(){this.saveRouters=[],this.loadRouters=[]}static getInstance(){return Wt.instance==null&&(Wt.instance=new Wt),Wt.instance}static registerSaveRouter(e){Wt.getInstance().saveRouters.push(e)}static registerLoadRouter(e){Wt.getInstance().loadRouters.push(e)}static getSaveHandlers(e){return Wt.getHandlers(e,"save")}static getLoadHandlers(e,t){return Wt.getHandlers(e,"load",t)}static getHandlers(e,t,n){let r=[];return(t==="load"?Wt.getInstance().loadRouters:Wt.getInstance().saveRouters).forEach(a=>{let o=a(e,n);o!==null&&r.push(o)}),r}},S_=e=>Wt.registerSaveRouter(e),I_=e=>Wt.registerLoadRouter(e),C_=e=>Wt.getSaveHandlers(e),T_=(e,t)=>Wt.getLoadHandlers(e,t),gg="tensorflowjs",yg=1,Si="models_store",Ea="model_info_store";function J4(){if(!Y().getBool("IS_BROWSER"))throw new Error("Failed to obtain IndexedDB factory because the current environmentis not a web browser.");let e=typeof window=="undefined"?self:window,t=e.indexedDB||e.mozIndexedDB||e.webkitIndexedDB||e.msIndexedDB||e.shimIndexedDB;if(t==null)throw new Error("The current browser does not appear to support IndexedDB.");return t}function Ag(e){let t=e.result;t.createObjectStore(Si,{keyPath:"modelPath"}),t.createObjectStore(Ea,{keyPath:"modelPath"})}var $i=class{constructor(e){if(this.indexedDB=J4(),e==null||!e)throw new Error("For IndexedDB, modelPath must not be null, undefined or empty.");this.modelPath=e}async save(e){if(e.modelTopology instanceof ArrayBuffer)throw new Error("BrowserLocalStorage.save() does not support saving model topology in binary formats yet.");return this.databaseAction(this.modelPath,e)}async load(){return this.databaseAction(this.modelPath)}databaseAction(e,t){return new Promise((n,r)=>{let s=this.indexedDB.open(gg,yg);s.onupgradeneeded=()=>Ag(s),s.onsuccess=()=>{let a=s.result;if(t==null){let o=a.transaction(Si,"readonly"),l=o.objectStore(Si).get(this.modelPath);l.onsuccess=()=>{if(l.result==null)return a.close(),r(new Error(`Cannot find model with path '${this.modelPath}' in IndexedDB.`));n(l.result.modelArtifacts)},l.onerror=u=>(a.close(),r(l.error)),o.oncomplete=()=>a.close()}else{let o=Ap(t),i=a.transaction(Ea,"readwrite"),l=i.objectStore(Ea),u=l.put({modelPath:this.modelPath,modelArtifactsInfo:o}),c;u.onsuccess=()=>{c=a.transaction(Si,"readwrite");let d=c.objectStore(Si).put({modelPath:this.modelPath,modelArtifacts:t,modelArtifactsInfo:o});d.onsuccess=()=>n({modelArtifactsInfo:o}),d.onerror=h=>{l=i.objectStore(Ea);let f=l.delete(this.modelPath);f.onsuccess=()=>(a.close(),r(d.error)),f.onerror=m=>(a.close(),r(d.error))}},u.onerror=p=>(a.close(),r(u.error)),i.oncomplete=()=>{c==null?a.close():c.oncomplete=()=>a.close()}}},s.onerror=a=>r(s.error)})}};$i.URL_SCHEME="indexeddb://";var Q4=e=>Y().getBool("IS_BROWSER")&&!Array.isArray(e)&&e.startsWith($i.URL_SCHEME)?N_(e.slice($i.URL_SCHEME.length)):null;Wt.registerSaveRouter(Q4);Wt.registerLoadRouter(Q4);function N_(e){return new $i(e)}function E_(e){return e.startsWith($i.URL_SCHEME)?e.slice($i.URL_SCHEME.length):e}var R_=class{constructor(){this.indexedDB=J4()}async listModels(){return new Promise((e,t)=>{let n=this.indexedDB.open(gg,yg);n.onupgradeneeded=()=>Ag(n),n.onsuccess=()=>{let r=n.result,s=r.transaction(Ea,"readonly"),o=s.objectStore(Ea).getAll();o.onsuccess=()=>{let i={};for(let l of o.result)i[l.modelPath]=l.modelArtifactsInfo;e(i)},o.onerror=i=>(r.close(),t(o.error)),s.oncomplete=()=>r.close()},n.onerror=r=>t(n.error)})}async removeModel(e){return e=E_(e),new Promise((t,n)=>{let r=this.indexedDB.open(gg,yg);r.onupgradeneeded=()=>Ag(r),r.onsuccess=()=>{let s=r.result,a=s.transaction(Ea,"readwrite"),o=a.objectStore(Ea),i=o.get(e),l;i.onsuccess=()=>{if(i.result==null)return s.close(),n(new Error(`Cannot find model with path '${e}' in IndexedDB.`));{let u=o.delete(e),c=()=>{l=s.transaction(Si,"readwrite");let d=l.objectStore(Si).delete(e);d.onsuccess=()=>t(i.result.modelArtifactsInfo),d.onerror=h=>n(i.error)};u.onsuccess=c,u.onerror=p=>(c(),s.close(),n(i.error))}},i.onerror=u=>(s.close(),n(i.error)),a.oncomplete=()=>{l==null?s.close():l.oncomplete=()=>s.close()}},r.onerror=s=>n(r.error)})}},Ks="/",mu="tensorflowjs_models",ew="info",__="model_topology",$_="weight_specs",D_="weight_data",P_="model_metadata";function tw(e){return{info:[mu,e,ew].join(Ks),topology:[mu,e,__].join(Ks),weightSpecs:[mu,e,$_].join(Ks),weightData:[mu,e,D_].join(Ks),modelMetadata:[mu,e,P_].join(Ks)}}function nw(e){for(let t of Object.values(e))window.localStorage.removeItem(t)}function F_(e){let t=e.split(Ks);if(t.length<3)throw new Error(`Invalid key format: ${e}`);return t.slice(1,t.length-1).join(Ks)}function O_(e){return e.startsWith(Di.URL_SCHEME)?e.slice(Di.URL_SCHEME.length):e}var Di=class{constructor(e){if(!Y().getBool("IS_BROWSER")||typeof window=="undefined"||typeof window.localStorage=="undefined")throw new Error("The current environment does not support local storage.");if(this.LS=window.localStorage,e==null||!e)throw new Error("For local storage, modelPath must not be null, undefined or empty.");this.modelPath=e,this.keys=tw(this.modelPath)}async save(e){if(e.modelTopology instanceof ArrayBuffer)throw new Error("BrowserLocalStorage.save() does not support saving model topology in binary formats yet.");{let t=JSON.stringify(e.modelTopology),n=JSON.stringify(e.weightSpecs),r=Ap(e);try{this.LS.setItem(this.keys.info,JSON.stringify(r)),this.LS.setItem(this.keys.topology,t),this.LS.setItem(this.keys.weightSpecs,n),this.LS.setItem(this.keys.weightData,A_(e.weightData));let s={format:e.format,generatedBy:e.generatedBy,convertedBy:e.convertedBy,signature:e.signature!=null?e.signature:void 0,userDefinedMetadata:e.userDefinedMetadata!=null?e.userDefinedMetadata:void 0,modelInitializer:e.modelInitializer!=null?e.modelInitializer:void 0,trainingConfig:e.trainingConfig!=null?e.trainingConfig:void 0};return this.LS.setItem(this.keys.modelMetadata,JSON.stringify(s)),{modelArtifactsInfo:r}}catch(s){throw nw(this.keys),new Error(`Failed to save model '${this.modelPath}' to local storage: size quota being exceeded is a possible cause of this failure: modelTopologyBytes=${r.modelTopologyBytes}, weightSpecsBytes=${r.weightSpecsBytes}, weightDataBytes=${r.weightDataBytes}.`)}}}async load(){let e=JSON.parse(this.LS.getItem(this.keys.info));if(e==null)throw new Error(`In local storage, there is no model with name '${this.modelPath}'`);if(e.modelTopologyType!=="JSON")throw new Error("BrowserLocalStorage does not support loading non-JSON model topology yet.");let t={},n=JSON.parse(this.LS.getItem(this.keys.topology));if(n==null)throw new Error(`In local storage, the topology of model '${this.modelPath}' is missing.`);t.modelTopology=n;let r=JSON.parse(this.LS.getItem(this.keys.weightSpecs));if(r==null)throw new Error(`In local storage, the weight specs of model '${this.modelPath}' are missing.`);t.weightSpecs=r;let s=this.LS.getItem(this.keys.modelMetadata);if(s!=null){let o=JSON.parse(s);t.format=o.format,t.generatedBy=o.generatedBy,t.convertedBy=o.convertedBy,o.signature!=null&&(t.signature=o.signature),o.userDefinedMetadata!=null&&(t.userDefinedMetadata=o.userDefinedMetadata),o.modelInitializer!=null&&(t.modelInitializer=o.modelInitializer),o.trainingConfig!=null&&(t.trainingConfig=o.trainingConfig)}let a=this.LS.getItem(this.keys.weightData);if(a==null)throw new Error(`In local storage, the binary weight values of model '${this.modelPath}' are missing.`);return t.weightData=x_(a),t}};Di.URL_SCHEME="localstorage://";var rw=e=>Y().getBool("IS_BROWSER")&&!Array.isArray(e)&&e.startsWith(Di.URL_SCHEME)?M_(e.slice(Di.URL_SCHEME.length)):null;Wt.registerSaveRouter(rw);Wt.registerLoadRouter(rw);function M_(e){return new Di(e)}var z_=class{constructor(){M(Y().getBool("IS_BROWSER"),()=>"Current environment is not a web browser"),M(typeof window=="undefined"||typeof window.localStorage!="undefined",()=>"Current browser does not appear to support localStorage"),this.LS=window.localStorage}async listModels(){let e={},t=mu+Ks,n=Ks+ew;for(let r=0;r"scheme must not be undefined or null."),e.endsWith(Au)&&(e=e.slice(0,e.indexOf(Au))),M(e.length>0,()=>"scheme must not be an empty string.");let n=Nr.getInstance();M(n.managers[e]==null,()=>`A model store manager is already registered for scheme '${e}'.`),n.managers[e]=t}static getManager(e){let t=this.getInstance().managers[e];if(t==null)throw new Error(`Cannot find model manager for scheme '${e}'`);return t}static getSchemes(){return Object.keys(this.getInstance().managers)}};function sf(e){if(e.indexOf(Au)===-1)throw new Error(`The url string provided does not contain a scheme. Supported schemes are: ${Nr.getSchemes().join(",")}`);return{scheme:e.split(Au)[0],path:e.split(Au)[1]}}async function sw(e,t,n=!1){M(e!==t,()=>`Old path and new path are the same: '${e}'`);let r=Wt.getLoadHandlers(e);M(r.length>0,()=>`Copying failed because no load handler is found for source URL ${e}.`),M(r.length<2,()=>`Copying failed because more than one (${r.length}) load handlers for source URL ${e}.`);let s=r[0],a=Wt.getSaveHandlers(t);M(a.length>0,()=>`Copying failed because no save handler is found for destination URL ${t}.`),M(a.length<2,()=>`Copying failed because more than one (${r.length}) save handlers for destination URL ${t}.`);let o=a[0],i=sf(e).scheme,l=sf(e).path,u=i===sf(e).scheme,c=await s.load();n&&u&&await Nr.getManager(i).removeModel(l);let p=await o.save(c);return n&&!u&&await Nr.getManager(i).removeModel(l),p.modelArtifactsInfo}async function L_(){let e=Nr.getSchemes(),t={};for(let n of e){let r=await Nr.getManager(n).listModels();for(let s in r){let a=n+Au+s;t[a]=r[s]}}return t}async function B_(e){let t=sf(e);return Nr.getManager(t.scheme).removeModel(t.path)}async function W_(e,t){return sw(e,t,!1)}async function V_(e,t){return sw(e,t,!0)}var U_=class{fetch(e,t){return fetch(e,t)}now(){return performance.now()}encode(e,t){if(t!=="utf-8"&&t!=="utf8")throw new Error(`Browser's encoder only supports utf-8, but got ${t}`);return this.textEncoder==null&&(this.textEncoder=new TextEncoder),this.textEncoder.encode(e)}decode(e,t){return new TextDecoder(t).decode(e)}};if(Y().get("IS_BROWSER")){Y().setPlatform("browser",new U_);try{Nr.registerManager(Di.URL_SCHEME,new z_)}catch(e){}try{Nr.registerManager($i.URL_SCHEME,new R_)}catch(e){}}var G_={importFetch:()=>QE()},eg,H_=class{constructor(){this.util=eR(),this.textEncoder=new this.util.TextEncoder}fetch(e,t){return Y().global.fetch!=null?Y().global.fetch(e,t):(eg==null&&(eg=G_.importFetch()),eg(e,t))}now(){let e=process.hrtime();return e[0]*1e3+e[1]/1e6}encode(e,t){if(t!=="utf-8"&&t!=="utf8")throw new Error(`Node built-in encoder only supports utf-8, but got ${t}`);return this.textEncoder.encode(e)}decode(e,t){return e.length===0?"":new this.util.TextDecoder(t).decode(e)}};Y().get("IS_NODE")&&!Y().get("IS_BROWSER")&&Y().setPlatform("node",new H_);function We(e,t="float32",n){return t=t||"float32",hy(e),new on(e,t,n)}function j_(e,t){let n=$(e,"x","cast");if(!C4(t))throw new Error(`Failed to cast to unknown dtype ${t}`);if(t==="string"&&n.dtype!=="string"||t!=="string"&&n.dtype==="string")throw new Error("Only strings can be casted to strings");let r={x:n},s={dtype:t};return B.runKernel(eo,r,s)}var ge=V({cast_:j_});function q_(e){let n={x:$(e,"x","clone","string_or_numeric")};return B.runKernel(go,n)}var Gn=V({clone_:q_});function aw(e,t=!1){console.log(e.toString(t))}j4();var X_={buffer:We,cast:ge,clone:Gn,print:aw};s_(X_);var Cn={};Le(Cn,{browserFiles:()=>t$,browserHTTPRequest:()=>o$,concatenateArrayBuffers:()=>by,copyModel:()=>W_,decodeWeights:()=>Z4,encodeWeights:()=>g_,fromMemory:()=>l$,getLoadHandlers:()=>T_,getModelArtifactsForJSON:()=>vy,getModelArtifactsInfoForJSON:()=>Ap,getSaveHandlers:()=>C_,http:()=>ky,isHTTPScheme:()=>bg,listModels:()=>L_,loadWeights:()=>n$,moveModel:()=>V_,registerLoadRouter:()=>I_,registerSaveRouter:()=>S_,removeModel:()=>B_,weightsLoaderFactory:()=>iw,withSaveHandler:()=>u$});var K_="model",Z_=".json",Y_=".weights.bin";function Wb(e){return new Promise(t=>setTimeout(t)).then(e)}var xg=class{constructor(e){if(!Y().getBool("IS_BROWSER"))throw new Error("browserDownloads() cannot proceed because the current environment is not a browser.");e.startsWith(xg.URL_SCHEME)&&(e=e.slice(xg.URL_SCHEME.length)),(e==null||e.length===0)&&(e=K_),this.modelJsonFileName=e+Z_,this.weightDataFileName=e+Y_}async save(e){if(typeof document=="undefined")throw new Error("Browser downloads are not supported in this environment since `document` is not present");let t=window.URL.createObjectURL(new Blob([e.weightData],{type:"application/octet-stream"}));if(e.modelTopology instanceof ArrayBuffer)throw new Error("BrowserDownloads.save() does not support saving model topology in binary formats yet.");{let n=[{paths:["./"+this.weightDataFileName],weights:e.weightSpecs}],r=Y4(e,n),s=window.URL.createObjectURL(new Blob([JSON.stringify(r)],{type:"application/json"})),a=this.modelJsonAnchor==null?document.createElement("a"):this.modelJsonAnchor;if(a.download=this.modelJsonFileName,a.href=s,await Wb(()=>a.dispatchEvent(new MouseEvent("click"))),e.weightData!=null){let o=this.weightDataAnchor==null?document.createElement("a"):this.weightDataAnchor;o.download=this.weightDataFileName,o.href=t,await Wb(()=>o.dispatchEvent(new MouseEvent("click")))}return{modelArtifactsInfo:Ap(e)}}}},kf=xg;kf.URL_SCHEME="downloads://";var J_=class{constructor(e){if(e==null||e.length<1)throw new Error(`When calling browserFiles, at least 1 file is required, but received ${e}`);this.jsonFile=e[0],this.weightsFiles=e.slice(1)}async load(){return new Promise((e,t)=>{let n=new FileReader;n.onload=r=>{let s=JSON.parse(r.target.result),a=s.modelTopology;if(a==null){t(new Error(`modelTopology field is missing from file ${this.jsonFile.name}`));return}if(s.weightsManifest==null){t(new Error(`weightManifest field is missing from file ${this.jsonFile.name}`));return}if(this.weightsFiles.length===0){e({modelTopology:a});return}let i=vy(s,l=>this.loadWeights(l));e(i)},n.onerror=r=>t(`Failed to read model topology and weights manifest JSON from file '${this.jsonFile.name}'. BrowserFiles supports loading Keras-style tf.Model artifacts only.`),n.readAsText(this.jsonFile)})}loadWeights(e){let t=[],n=[];for(let a of e)t.push(...a.weights),n.push(...a.paths);let r=this.checkManifestAndWeightFiles(e),s=n.map(a=>this.loadWeightsFile(a,r[a]));return Promise.all(s).then(a=>[t,by(a)])}loadWeightsFile(e,t){return new Promise((n,r)=>{let s=new FileReader;s.onload=a=>{let o=a.target.result;n(o)},s.onerror=a=>r(`Failed to weights data from file of path '${e}'.`),s.readAsArrayBuffer(t)})}checkManifestAndWeightFiles(e){let t=[],n=this.weightsFiles.map(s=>Bb(s.name)),r={};for(let s of e)s.paths.forEach(a=>{let o=Bb(a);if(t.indexOf(o)!==-1)throw new Error(`Duplicate file basename found in weights manifest: '${o}'`);if(t.push(o),n.indexOf(o)===-1)throw new Error(`Weight file with basename '${o}' is not provided.`);r[a]=this.weightsFiles[n.indexOf(o)]});if(t.length!==this.weightsFiles.length)throw new Error(`Mismatch in the number of files in weights manifest (${t.length}) and the number of weight files provided (${this.weightsFiles.length}).`);return r}},Q_=e=>Y().getBool("IS_BROWSER")&&!Array.isArray(e)&&e.startsWith(kf.URL_SCHEME)?e$(e.slice(kf.URL_SCHEME.length)):null;Wt.registerSaveRouter(Q_);function e$(e="model"){return new kf(e)}function t$(e){return new J_(e)}function Vb(e,t,n,r){o(e),n=n==null?0:n,r=r==null?1:r,i(n,r);let s=0,a=l=>(l.then(u=>{let c=n+ ++s/e.length*(r-n);return t(c),u}),l);function o(l){M(l!=null&&Array.isArray(l)&&l.length>0,()=>"promises must be a none empty array")}function i(l,u){M(l>=0&&l<=1,()=>`Progress fraction must be in range [0, 1], but got startFraction ${l}`),M(u>=0&&u<=1,()=>`Progress fraction must be in range [0, 1], but got endFraction ${u}`),M(u>=l,()=>`startFraction must be no more than endFraction, but got startFraction ${l} and endFraction ${u}`)}return Promise.all(e.map(a))}async function ow(e,t){t==null&&(t={});let n=t.fetchFunc==null?Y().platform.fetch:t.fetchFunc,r=e.map(p=>n(p,t.requestInit,{isBinary:!0})),s=0,a=.5,i=(t.onProgress==null?await Promise.all(r):await Vb(r,t.onProgress,s,a)).map(p=>p.arrayBuffer()),l=.5,u=1;return t.onProgress==null?await Promise.all(i):await Vb(i,t.onProgress,l,u)}async function n$(e,t="",n,r){return iw(o=>ow(o,{requestInit:r}))(e,t,n)}function iw(e){return async(t,n="",r)=>{let s=t.map(()=>!1),a={},o=r!=null?r.map(()=>!1):[],i=[];if(t.forEach((h,f)=>{let m=0;h.weights.forEach(g=>{let y="quantization"in g?g.quantization.dtype:g.dtype,x=mg[y]*Tt(g.shape),A=()=>{s[f]=!0,a[f]==null&&(a[f]=[]),a[f].push({manifestEntry:g,groupOffset:m,sizeBytes:x})};r!=null?r.forEach((b,v)=>{b===g.name&&(A(),o[v]=!0)}):A(),i.push(g.name),m+=x})}),!o.every(h=>h)){let h=r.filter((f,m)=>!o[m]);throw new Error(`Could not find weights in manifest with names: ${h.join(", ")}. Manifest JSON has weights with names: ${i.join(", ")}.`)}let l=s.reduce((h,f,m)=>(f&&h.push(m),h),[]),u=[];l.forEach(h=>{t[h].paths.forEach(f=>{let m=n+(n.endsWith("/")?"":"/")+f;u.push(m)})});let c=await e(u),p={},d=0;return l.forEach(h=>{let f=t[h].paths.length,m=0;for(let b=0;b{let v=g.slice(b.groupOffset,b.groupOffset+b.sizeBytes),S=Z4(v,[b.manifestEntry]);for(let I in S)p[I]=S[I]}),d+=f}),p}}var r$="application/octet-stream",s$="application/json",wy=class{constructor(e,t){if(this.DEFAULT_METHOD="POST",t==null&&(t={}),this.weightPathPrefix=t.weightPathPrefix,this.onProgress=t.onProgress,this.weightUrlConverter=t.weightUrlConverter,t.fetchFunc!=null?(M(typeof t.fetchFunc=="function",()=>"Must pass a function that matches the signature of `fetch` (see https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API)"),this.fetch=t.fetchFunc):this.fetch=Y().platform.fetch,M(e!=null&&e.length>0,()=>"URL path for http must not be null, undefined or empty."),Array.isArray(e)&&M(e.length===2,()=>`URL paths for http must have a length of 2, (actual length is ${e.length}).`),this.path=e,t.requestInit!=null&&t.requestInit.body!=null)throw new Error("requestInit is expected to have no pre-existing body, but has one.");this.requestInit=t.requestInit||{}}async save(e){if(e.modelTopology instanceof ArrayBuffer)throw new Error("BrowserHTTPRequest.save() does not support saving model topology in binary formats yet.");let t=Object.assign({method:this.DEFAULT_METHOD},this.requestInit);t.body=new FormData;let n=[{paths:["./model.weights.bin"],weights:e.weightSpecs}],r=Y4(e,n);t.body.append("model.json",new Blob([JSON.stringify(r)],{type:s$}),"model.json"),e.weightData!=null&&t.body.append("model.weights.bin",new Blob([e.weightData],{type:r$}),"model.weights.bin");let s=await this.fetch(this.path,t);if(s.ok)return{modelArtifactsInfo:Ap(e),responses:[s]};throw new Error(`BrowserHTTPRequest.save() failed due to HTTP response status ${s.status}.`)}async load(){let e=await this.fetch(this.path,this.requestInit);if(!e.ok)throw new Error(`Request to ${this.path} failed with status code ${e.status}. Please verify this URL points to the model JSON of the model to load.`);let t;try{t=await e.json()}catch(s){let a=`Failed to parse model JSON of response from ${this.path}.`;throw this.path.endsWith(".pb")?a+=" Your path contains a .pb file extension. Support for .pb models have been removed in TensorFlow.js 1.0 in favor of .json models. You can re-convert your Python TensorFlow model using the TensorFlow.js 1.0 conversion scripts or you can convert your.pb models with the 'pb2json'NPM script in the tensorflow/tfjs-converter repository.":a+=" Please make sure the server is serving valid JSON for this request.",new Error(a)}let n=t.modelTopology,r=t.weightsManifest;if(n==null&&r==null)throw new Error(`The JSON from HTTP path ${this.path} contains neither model topology or manifest for weights.`);return vy(t,s=>this.loadWeights(s))}async loadWeights(e){let t=Array.isArray(this.path)?this.path[1]:this.path,[n,r]=a$(t),s=this.weightPathPrefix||n,a=[];for(let u of e)a.push(...u.weights);let o=[],i=[];for(let u of e)for(let c of u.paths)this.weightUrlConverter!=null?i.push(this.weightUrlConverter(c)):o.push(s+c+r);this.weightUrlConverter&&o.push(...await Promise.all(i));let l=await ow(o,{requestInit:this.requestInit,fetchFunc:this.fetch,onProgress:this.onProgress});return[a,by(l)]}};wy.URL_SCHEME_REGEX=/^https?:\/\//;function a$(e){let t=e.lastIndexOf("/"),n=e.lastIndexOf("?"),r=e.substring(0,t),s=n>t?e.substring(n):"";return[r+"/",s]}function bg(e){return e.match(wy.URL_SCHEME_REGEX)!=null}var lw=(e,t)=>{if(typeof fetch=="undefined"&&(t==null||t.fetchFunc==null))return null;{let n=!0;if(Array.isArray(e)?n=e.every(r=>bg(r)):n=bg(e),n)return ky(e,t)}return null};Wt.registerSaveRouter(lw);Wt.registerLoadRouter(lw);function ky(e,t){return new wy(e,t)}function o$(e,t){return ky(e,t)}var tg=class{constructor(e){this.modelArtifacts=e}async load(){return this.modelArtifacts}},i$=class{constructor(e){this.saveHandler=e}async save(e){return this.saveHandler(e)}};function l$(e,t,n,r){return arguments.length===1?e.modelTopology!=null||e.weightSpecs!=null?new tg(e):(console.warn("Please call tf.io.fromMemory() with only one argument. The argument should be of type ModelArtifacts. The multi-argument signature of tf.io.fromMemory() has been deprecated and will be removed in a future release."),new tg({modelTopology:e})):(console.warn("Please call tf.io.fromMemory() with only one argument. The argument should be of type ModelArtifacts. The multi-argument signature of tf.io.fromMemory() has been deprecated and will be removed in a future release."),new tg({modelTopology:e,weightSpecs:t,weightData:n,trainingConfig:r}))}function u$(e){return new i$(e)}var uw={};Le(uw,{confusionMatrix:()=>f$});function c$(e,t,n=!1,r=!1){let s=$(e,"a","matMul"),a=$(t,"b","matMul");[s,a]=Lt(s,a);let o={a:s,b:a},i={transposeA:n,transposeB:r};return B.runKernel(Qa,o,i)}var Ye=V({matMul_:c$});function d$(e,t,n=1,r=0){if(t<2)throw new Error(`Error in oneHot: depth must be >=2, but it is ${t}`);let a={indices:$(e,"indices","oneHot","int32")},o={depth:t,onValue:n,offValue:r};return B.runKernel(dl,a,o)}var Vd=V({oneHot_:d$});function p$(e,t){let n=$(e,"x","transpose");if(t==null&&(t=n.shape.map((a,o)=>o).reverse()),M(n.rank===t.length,()=>`Error in transpose: rank of input ${n.rank} must match length of perm ${t}.`),t.forEach(a=>{M(a>=0&&a`All entries in 'perm' must be between 0 and ${n.rank-1} but got ${t}`)}),n.rank<=1)return n.clone();let r={x:n},s={perm:t};return B.runKernel(Uo,r,s)}var et=V({transpose_:p$});function h$(e,t,n){let r=$(e,"labels","confusionMatrix"),s=$(t,"predictions","confusionMatrix");M(n==null||n>0&&Number.isInteger(n),()=>`If provided, numClasses must be a positive integer, but got ${n}`),M(r.rank===1,()=>`Expected the rank of labels to be 1, but got ${r.rank}`),M(s.rank===1,()=>`Expected the rank of predictions to be 1, but got ${s.rank}`),M(r.shape[0]===s.shape[0],()=>`Mismatch in the number of examples: ${r.shape[0]} vs. ${s.shape[0]}. Labels and predictions should have the same number of elements.`),M(n>0&&Number.isInteger(n),()=>`numClasses is required to be a positive integer, but got ${n}`);let a=Vd(ge(r,"int32"),n),o=Vd(ge(s,"int32"),n),i=et(a),l=Ye(i,o);return ge(l,"int32")}var f$=V({confusionMatrix_:h$}),El={};Le(El,{assertAndGetBroadcastShape:()=>vt,getBroadcastDims:()=>cw,getReductionAxes:()=>Jt});function cw(e,t){let n=e.length,r=[];for(let s=0;s1&&o===1&&r.unshift(a)}return r}function Jt(e,t){let n=[];for(let r=0;r1)&&n.unshift(a)}return n}function vt(e,t){let n=[],r=Math.max(e.length,t.length);for(let s=0;sv$,fromPixelsAsync:()=>x$,toPixels:()=>b$});function dw(e,t,n){if(Ui(e),t!=null&&t.length!==3)throw new Error("tensor3d() requires shape to have three numbers");let r=$s(e,n);if(r.length!==3&&r.length!==1)throw new Error("tensor3d() requires values to be number[][][] or flat/TypedArray");if(r.length===1&&t==null)throw new Error("tensor3d() requires shape to be provided when `values` are a flat array");return Ho(e,t,r,n)}var mi;function pw(e,t=3){if(t>4)throw new Error("Cannot construct Tensor with more than 4 channels from pixels.");if(e==null)throw new Error("pixels passed to tf.browser.fromPixels() can not be null");let n=!1,r=!1,s=!1,a=!1,o=!1,i=!1;if(e.data instanceof Uint8Array)n=!0;else if(typeof ImageData!="undefined"&&e instanceof ImageData)r=!0;else if(typeof HTMLVideoElement!="undefined"&&e instanceof HTMLVideoElement)s=!0;else if(typeof HTMLImageElement!="undefined"&&e instanceof HTMLImageElement)a=!0;else if(e.getContext!=null)o=!0;else if(typeof ImageBitmap!="undefined"&&e instanceof ImageBitmap)i=!0;else throw new Error(`pixels passed to tf.browser.fromPixels() must be either an HTMLVideoElement, HTMLImageElement, HTMLCanvasElement, ImageData in browser, or OffscreenCanvas, ImageData in webworker or {data: Uint32Array, width: number, height: number}, but was ${e.constructor.name}`);if(s&&s&&e.readyState<2)throw new Error("The video element has not loaded data yet. Please wait for `loadeddata` event on the