UNPKG

webar-rocks-world

Version:

Neural network based visual positioning system for WebAR.

117 lines (116 loc) 77.2 kB
/** * * MIT License * * Copyright (c) 2021 WebAR.rocks * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ /* eslint-enable */ /* prettier-ignore */ var Ia="function"==typeof Object.defineProperties?Object.defineProperty:function(P,J,da){if(P==Array.prototype||P==Object.prototype)return P;P[J]=da.value;return P};function ob(P){P=["object"==typeof globalThis&&globalThis,P,"object"==typeof window&&window,"object"==typeof self&&self,"object"==typeof global&&global];for(var J=0;J<P.length;++J){var da=P[J];if(da&&da.Math==Math)return da}throw Error("Cannot find global object");}var ub=ob(this); function Eb(P,J){if(J)a:{var da=ub;P=P.split(".");for(var ia=0;ia<P.length-1;ia++){var ra=P[ia];if(!(ra in da))break a;da=da[ra]}P=P[P.length-1];ia=da[P];J=J(ia);J!=ia&&null!=J&&Ia(da,P,{configurable:!0,writable:!0,value:J})}}function Fb(P){var J=0;return function(){return J<P.length?{done:!1,value:P[J++]}:{done:!0}}} function Gb(P){var J="undefined"!=typeof Symbol&&Symbol.iterator&&P[Symbol.iterator];if(J)return J.call(P);if("number"==typeof P.length)return{next:Fb(P)};throw Error(String(P)+" is not an iterable or ArrayLike");} Eb("Promise",function(P){function J(B){this.T=0;this.aa=void 0;this.C=[];this.lc=!1;var L=this.qa();try{B(L.resolve,L.reject)}catch(Y){L.reject(Y)}}function da(){this.C=null}function ia(B){return B instanceof J?B:new J(function(L){L(B)})}if(P)return P;da.prototype.T=function(B){if(null==this.C){this.C=[];var L=this;this.aa(function(){L.ra()})}this.C.push(B)};var ra=ub.setTimeout;da.prototype.aa=function(B){ra(B,0)};da.prototype.ra=function(){for(;this.C&&this.C.length;){var B=this.C;this.C=[];for(var L= 0;L<B.length;++L){var Y=B[L];B[L]=null;try{Y()}catch(fa){this.qa(fa)}}}this.C=null};da.prototype.qa=function(B){this.aa(function(){throw B;})};J.prototype.qa=function(){function B(fa){return function(pa){Y||(Y=!0,fa.call(L,pa))}}var L=this,Y=!1;return{resolve:B(this.Bc),reject:B(this.ra)}};J.prototype.Bc=function(B){if(B===this)this.ra(new TypeError("A Promise cannot resolve to itself"));else if(B instanceof J)this.Dc(B);else{a:switch(typeof B){case "object":var L=null!=B;break a;case "function":L= !0;break a;default:L=!1}L?this.Ac(B):this.hc(B)}};J.prototype.Ac=function(B){var L=void 0;try{L=B.then}catch(Y){this.ra(Y);return}"function"==typeof L?this.Ec(L,B):this.hc(B)};J.prototype.ra=function(B){this.yc(2,B)};J.prototype.hc=function(B){this.yc(1,B)};J.prototype.yc=function(B,L){if(0!=this.T)throw Error("Cannot settle("+B+", "+L+"): Promise already settled in state"+this.T);this.T=B;this.aa=L;2===this.T&&this.Cc();this.Vd()};J.prototype.Cc=function(){var B=this;ra(function(){if(B.zc()){var L= ub.console;"undefined"!==typeof L&&L.error(B.aa)}},1)};J.prototype.zc=function(){if(this.lc)return!1;var B=ub.CustomEvent,L=ub.Event,Y=ub.dispatchEvent;if("undefined"===typeof Y)return!0;"function"===typeof B?B=new B("unhandledrejection",{cancelable:!0}):"function"===typeof L?B=new L("unhandledrejection",{cancelable:!0}):(B=ub.document.createEvent("CustomEvent"),B.initCustomEvent("unhandledrejection",!1,!0,B));B.promise=this;B.reason=this.aa;return Y(B)};J.prototype.Vd=function(){if(null!=this.C){for(var B= 0;B<this.C.length;++B)Sa.T(this.C[B]);this.C=null}};var Sa=new da;J.prototype.Dc=function(B){var L=this.qa();B.ya(L.resolve,L.reject)};J.prototype.Ec=function(B,L){var Y=this.qa();try{B.call(L,Y.resolve,Y.reject)}catch(fa){Y.reject(fa)}};J.prototype.then=function(B,L){function Y(sa,ya){return"function"==typeof sa?function(Ta){try{fa(sa(Ta))}catch(Na){pa(Na)}}:ya}var fa,pa,Ja=new J(function(sa,ya){fa=sa;pa=ya});this.ya(Y(B,fa),Y(L,pa));return Ja};J.prototype.catch=function(B){return this.then(void 0, B)};J.prototype.ya=function(B,L){function Y(){switch(fa.T){case 1:B(fa.aa);break;case 2:L(fa.aa);break;default:throw Error("Unexpected state: "+fa.T);}}var fa=this;null==this.C?Sa.T(Y):this.C.push(Y);this.lc=!0};J.resolve=ia;J.reject=function(B){return new J(function(L,Y){Y(B)})};J.race=function(B){return new J(function(L,Y){for(var fa=Gb(B),pa=fa.next();!pa.done;pa=fa.next())ia(pa.value).ya(L,Y)})};J.all=function(B){var L=Gb(B),Y=L.next();return Y.done?ia([]):new J(function(fa,pa){function Ja(Ta){return function(Na){sa[Ta]= Na;ya--;0==ya&&fa(sa)}}var sa=[],ya=0;do sa.push(void 0),ya++,ia(Y.value).ya(Ja(sa.length-1),pa),Y=L.next();while(!Y.done)})};return J});Eb("Math.log2",function(P){return P?P:function(J){return Math.log(J)/Math.LN2}});var Hb="function"==typeof Object.assign?Object.assign:function(P,J){for(var da=1;da<arguments.length;da++){var ia=arguments[da];if(ia)for(var ra in ia)Object.prototype.hasOwnProperty.call(ia,ra)&&(P[ra]=ia[ra])}return P};Eb("Object.assign",function(P){return P||Hb}); const LOCUS=function(P){function J(b){var c=null,e=null,k=null,l=0,m=this,u=null,q={sa:[],La:"none",ob:!1,Ka:null,grid:null};this.F=function(){this.Lc(u.sa);k.Pd({La:u.La,ob:u.ob,Ka:u.Ka})};this.hd=function(f){return c[f]};this.Sa=function(f){["s32","s34","s27"].forEach(function(n){z.ua(n,[{type:"2f",name:"u21",value:f}])});c&&c.forEach(function(n){n.Sa(f)})};this.Lc=function(f){var n=null;l=f.length;var t=null!==u.grid&&b.grid.length&&!(1===b.grid[0]&&1===b.grid[1]),F=t?u.grid:[1,1];t&&this.Sa(F); c=f.map(function(A,r){A=Object.assign({},A,{index:r,parent:m,Ma:n,ud:r===l-1,oa:t,L:F});return n=r=0===r?Ib.instance(A):Jb.instance(A)});e=c[0];k=c[l-1];c.forEach(function(A,r){0!==r&&A.zd()})};this.M=function(f){f.h(0);var n=f;c.forEach(function(t){n=t.M(n,!1)});return n};this.gd=function(){return e.fd()};this.kd=function(){return k.D()};this.na=function(){return k.jd()};this.Wb=function(){return k.Wb()};this.o=function(){c&&(c.forEach(function(f){f.o()}),k=e=c=null,l=0)};"undefined"!==typeof b&& (u=Object.assign({},q,b),this.F())}var da;function ia(b,c){return b[c>>3]>>7-(c&7)&1}function ra(b,c,e){for(var k=0,l=0;l<e;l++)k=k<<1|ia(b,c+l);return k}function Sa(b){var c=null;b=b.data;"undefined"===typeof btoa&&"undefined"!==typeof Buffer?c=Buffer.from(b,"base64").toString("latin1"):c=atob(b);b=c.length;for(var e=new Uint8Array(b),k=0;k<b;++k)e[k]=c.charCodeAt(k);return e}function B(b){return"string"===typeof b?JSON.parse(b):b}function L(b){if("undefined"===typeof B(b).nb){var c=B(b);b=c.ne; var e=c.nf,k=c.n;c=Sa(c);for(var l=new Float32Array(k),m=new Float32Array(e),u=b+e+1,q=new Float32Array(e),f=.5,n=0;n<e;n++)q[n]=f,f*=.5;for(f=0;f<k;++f){var t=u*f;n=0===ia(c,t)?1:-1;var F=ra(c,t+1,b),A=c;t=t+1+b;for(var r=m.length,H=0,D=t;D<t+r;++D)m[H]=ia(A,D,!0),++H;for(t=A=0;t<e;++t)A+=m[t]*q[t];l[f]=0===A&&0===F?0:n*(1+A)*Math.pow(2,1+F-Math.pow(2,b-1))}b=l}else if(k=B(b),b=k.nb,0===b)b=new Uint8Array(k.nb);else{e=k.n;k=Sa(k);c=new Uint32Array(e);for(l=0;l<e;++l)c[l]=ra(k,l*b,b);b=c}return b} function Y(b){return Ua===Oa.fb?Promise.resolve(b()):new Promise(function(c){pb.push(function(){c(b())})})}function fa(){var b=document.createElement("canvas");b.setAttribute("id","locusCanvas");b.setAttribute("height",512);b.setAttribute("width",512);return b}function pa(b){return"VIDEO"===b.tagName?b.videoWidth:b.width}function Ja(b){return"VIDEO"===b.tagName?b.videoHeight:b.height}function sa(b){return{x:{cos:new Float32Array(b),sin:new Float32Array(b)},z:{cos:new Float32Array(b),sin:new Float32Array(b)}}} function ya(b,c){return Math.abs(Math.atan2(Math.sin(b-c),Math.cos(b-c)))}function Ta(){return new Promise(function(b,c){ab.F({za:bb,debug:!1,mb:function(){throw Error("GLCONTEXT_LOST");},antialias:!1})?b():c()})}function Na(b,c){for(var e=ea.count,k=0;k<e;++k){var l=2*Math.PI*b/ea.nc[k],m=Math.sin(l);c.cos[e-1-k]=Math.cos(l);c.sin[e-1-k]=m}}function cb(b,c){for(var e=0;e<b.length;++e)b[e]*=c}function Ha(b,c,e){return b[c+db*(db-1-e)]}function eb(b,c,e,k){for(var l=k.length,m=0;m<l;++m)k[m]=Ha(b, c,e),++c===db&&(c=0,++e)}function Kb(b){if(Ha(b,0,0)<za.detectionThreshold)Ca.isDetected=!1;else{var c=Ha(b,1,0),e=Ha(b,2,0),k=Ha(b,3,0);c=c/ua.position+fb[0];e=e/ua.position+fb[1];k=k/ua.position+fb[2];Ca.x=c;Ca.y=e;Ca.z=k;if(0!==ua.eb)for(Na(c,ea.data.x),Na(k,ea.data.z),eb(b,0,2,ea.R.x.cos),eb(b,0,3,ea.R.x.sin),eb(b,0,4,ea.R.z.cos),eb(b,0,5,ea.R.z.sin),k=ea.R,c=1/ua.eb,cb(k.x.cos,c),cb(k.x.sin,c),cb(k.z.cos,c),cb(k.z.sin,c),k=Math.min(ea.Kb,za.maxHarmonicsErrors.length),c=0;c<k;++c){var l=Math.atan2(ea.data.z.sin[c], ea.data.z.cos[c]),m=Math.atan2(ea.R.z.sin[c],ea.R.z.cos[c]);e=ya(Math.atan2(ea.data.x.sin[c],ea.data.x.cos[c]),Math.atan2(ea.R.x.sin[c],ea.R.x.cos[c]));l=ya(l,m);if(Math.sqrt(e*e+l*l)/Math.PI>za.maxHarmonicsErrors[c]){Ca.isDetected=!1;return}}Ca.isDetected=!0;k=.5+.5*(Ha(b,0,1)/ua.rotation);k=(gb[1]-gb[0])*hb*k+gb[0]*hb;c=Ha(b,1,1)/ua.rotation;b=Ha(b,2,1)/ua.rotation;b=Math.atan2(ib.Jb(b,-1,1),ib.Jb(c,-1,1));Ca.rx=k;Ca.ry=b}}var ib={ze:function(b){return Math.ceil(Math.log2(b))},Se:function(b){return Math.log2(b)}, Qe:function(b){return 0===Math.log2(b)%1},ce:function(b){var c=[0,0,0,0];b.forEach(function(e){c[0]+=e[0];c[1]+=e[1];c[2]+=e[2];c[3]+=e[3]});return c},Jb:function(b,c,e){return Math.min(Math.max(b,c),e)},fe:function(b){return b*Math.PI/180},Xe:function(b,c){c=Math.pow(10,c);return Math.round(b*c)/c},Ye:function(b){return Math.round(1E6*b)/1E6},Ae:function(b,c){return(100*b/c).toFixed(3)},Te:function(b,c,e){return b*(1-e)+c*e},Ue:function(b,c){return b[0]*(1-c)+b[1]*c},Uc:function(b,c){return ib.Oc(b- c)},Oc:function(b){for(;b>Math.PI;)b-=2*Math.PI;for(;b<=-Math.PI;)b+=2*Math.PI;return b},ke:function(b,c){return Math.abs(ib.Uc(b,c))},Wd:function(b,c){return Math.atan2(Math.sin(b)+Math.sin(c),Math.cos(b)+Math.cos(c))}},Lb={create:function(b,c){for(var e=Array(c),k=0;k<c;++k)e[k]=b;return e},ge:function(b,c){for(var e=0;e<b.length;++e)c[e]=b[e]},clone:function(b){for(var c=Array(b.length),e=0;e<b.length;++e)c[e]=b[e];return c},$e:function(b,c,e){b.forEach(function(k,l){c[l]=k*e})},mf:function(b){for(var c= b.length-1;0<c;--c){var e=Math.floor(Math.random()*(c+1)),k=b[c];b[c]=b[e];b[e]=k}},pf:function(b){return b.sort(function(c,e){return c-e})},Rd:function(b){return Array.isArray(b)||b.constructor===Float32Array||b.constructor===Uint8Array}},qb={Xa:function(b,c){if(0===c||"object"!==typeof b)return b;b=Object.assign({},b);c=void 0===c||-1===c?-1:c-1;for(var e in b)b[e]=qb.Xa(b[e],c);return b},ie:function(b){return JSON.parse(JSON.stringify(b))}},Mb={Yc:function(b,c,e){switch(b){case "relu":return e+ "=max(vec4(0.),"+c+");";case "elu":return e+"=mix(exp(-abs("+c+"))-vec4(1.),"+c+",step(0.,"+c+"));";case "elu01":return e+"=mix(0.1*exp(-abs("+c+"))-vec4(0.1),"+c+",step(0.,"+c+"));";case "arctan":return e+"=atan(3.14159265359*texture2D(u0,vUV))/3.14159265359;";case "copy":return"";case "gelu":return e+"="+e+";\n vec4 zou="+c+";\n vec4 polyZou=0.7978845608028654*(zou+0.044715*zou*zou*zou);\n vec4 exZou=exp(-abs(polyZou));\n vec4 exZou2=exZou*exZou;\n vec4 tanhZou=sign(polyZou)*(vec4(1.)-exZou2)/(vec4(1.)+exZou2);\n "+ e+"=0.5*zou*(vec4(1.)+tanhZou);";default:return!1}}},z=function(){function b(p,d,y){d=p.createShader(d);p.shaderSource(d,y);p.compileShader(d);return p.getShaderParameter(d,p.COMPILE_STATUS)?d:null}function c(p,d,y){d=b(p,p.VERTEX_SHADER,d);y=b(p,p.FRAGMENT_SHADER,y);p===a&&q.push(d,y);var I=p.createProgram();p.attachShader(I,d);p.attachShader(I,y);p.linkProgram(I);return I}function e(p){return["float","sampler2D","int"].map(function(d){return"precision "+p+" "+d+";\n"}).join("")}function k(p,d){d.m= d.m?!0:!1;if(!d.m){d.Db=d.Db||"precision lowp float;attribute vec2 a0;varying vec2 vv0;void main(){gl_Position=vec4(a0,0.,1.),vv0=a0*.5+vec2(.5);}";d.Gb=d.Gb||["a0"];d.Ua=d.Ua||[2];d.precision=d.precision||A;d.id=t++;void 0!==d.sc&&(d.sc.forEach(function(M,W){d.g=d.g.replace(M,d.Na[W])}),d.sc.splice(0));d.Cb=0;d.Ua.forEach(function(M){d.Cb+=4*M});var y=e(d.precision);d.fa=c(p,y+d.Db,y+d.g);d.v={};d.i.forEach(function(M){d.v[M]=p.getUniformLocation(d.fa,M)});d.attributes={};d.ka=[];d.Gb.forEach(function(M){var W= p.getAttribLocation(d.fa,M);d.attributes[M]=W;d.ka.push(W)});if(d.j){p.useProgram(d.fa);n=d;f=d.id;for(var I in d.j)p.uniform1i(d.v[I],d.j[I])}d.ib=!0}}function l(p){va.Kd(T);f!==p.id&&(T.K(),f=p.id,n=p,a.useProgram(p.fa),p.ka.forEach(function(d){0!==d&&a.enableVertexAttribArray(d)}))}function m(p,d,y){k(p,d,y);p.useProgram(d.fa);p.enableVertexAttribArray(d.attributes.a0);f=-1;return n=d}function u(){return{g:"uniform sampler2D u1;varying vec2 vv0;void main(){gl_FragColor=texture2D(u1,vv0);}",i:["u1"], j:{u1:0}}}var q=[],f=-1,n=null,t=0,F=!1,A="highp",r=["u1"],H=["u0"],D={u1:0},h={u0:0},K={u1:0,u2:1},R={u1:0,u3:1},X=["u1","u3","u4"],G=["u5","u6"],g={u5:0},v=["u7","u8","u9","u10"],C={u7:0,u8:1},E={s0:u(),s1:{g:"uniform sampler2D u1;varying vec2 vv0;void main(){gl_FragColor=texture2D(u1,vv0);}",i:r,j:D,precision:"lowp"},s2:{g:"uniform sampler2D u1,u2;varying vec2 vv0;void main(){vec4 a=texture2D(u2,vv0),b=texture2D(u1,vv0);gl_FragColor=a*b;}",i:["u1","u2"],j:K},s3:{g:"uniform sampler2D u1;uniform vec2 u11,u12;varying vec2 vv0;void main(){vec2 a=vv0*u11+u12;gl_FragColor=texture2D(u1,a);}", i:["u1","u11","u12"],j:D,m:!0},s4:{g:"uniform sampler2D u1;varying vec2 vv0;const vec4 f=vec4(1.,1.,1.,1.);void main(){vec4 a=texture2D(u1,vv0);gl_FragColor=a.r*f;}",i:r,j:D},s5:{g:"uniform sampler2D u1,u2;varying vec2 vv0;const vec4 f=vec4(1.,1.,1.,1.);void main(){vec4 a=texture2D(u2,vv0),b=texture2D(u1,vv0);gl_FragColor=a.a*b.r*f;}",i:["u1","u2"],j:K},s6:{g:"uniform sampler2D u1;varying vec2 vv0;void main(){gl_FragColor=texture2D(u1,vec2(1.-vv0.x,vv0.y));}",i:r,j:D},s7:{g:"uniform sampler2D u1;varying vec2 vv0;void main(){gl_FragColor=texture2D(u1,vec2(vv0.x,1.-vv0.y));}", i:r,j:D},s8:{g:"uniform sampler2D u0;uniform float u11;varying vec2 vv0;void main(){vec4 a=texture2D(u0,vv0);gl_FragColor=a*u11;}",i:["u0","u11"],j:h},s9:{g:"uniform sampler2D u0;uniform float u11;varying vec2 vv0;const vec4 f=vec4(.25),g=vec4(1.);void main(){vec4 a=texture2D(u0,vv0);float b=dot(a*u11,f);gl_FragColor=b*g;}",i:["u0","u11"],j:h},s10:{g:"uniform sampler2D u1;varying vec2 vv0;const vec4 e=vec4(1.,1.,1.,1.);void main(){float a=.25*dot(e,texture2D(u1,vv0));gl_FragColor=a*e;}",i:r,j:D}, s11:{g:"uniform sampler2D u1,u13;uniform float u14;const vec4 f=vec4(1.);varying vec2 vv0;void main(){vec4 a=texture2D(u1,vv0),b=texture2D(u13,vv0);gl_FragColor=mix(b,a,u14*f);}",i:["u1","u13","u14"],j:{u1:0,u13:1}},s12:{g:"uniform sampler2D u1;uniform vec2 u15;varying vec2 vv0;void main(){gl_FragColor=.25*(texture2D(u1,vv0+u15)+texture2D(u1,vv0+u15*vec2(1.,-1.))+texture2D(u1,vv0+u15*vec2(-1.,-1.))+texture2D(u1,vv0+u15*vec2(-1.,1.)));}",i:["u1","u15"],j:D},s13:{g:"uniform sampler2D u1;varying vec2 vv0;vec4 f(vec3 d){vec3 b=d/65536.,a=clamp(ceil(log2(b)),-128.,127.);float c=max(max(a.r,a.g),a.b),g=exp2(c);vec3 h=clamp(b/g,0.,1.);return vec4(h,(c+128.)/256.);}void main(){vec3 a=texture2D(u1,vv0).rgb;gl_FragColor=f(a);}", i:r,j:D,m:!0},s14:{g:"uniform sampler2D u1;varying vec2 vv0;vec3 f(vec4 a){float b=a.a*256.-128.;vec3 c=a.rgb;return exp2(b)*c*65536.;}void main(){vec4 a=texture2D(u1,vv0);gl_FragColor=vec4(f(a),1.);}",i:r,j:D,m:!0},s15:{g:"uniform sampler2D u1;uniform vec4 u16;varying vec2 vv0;float g(float a,float b){a=floor(a)+.5;return floor(a/exp2(b));}float h(float a,float b){return floor(a*exp2(b)+.5);}float i(float a,float b){return mod(a,h(1.,b));}float e(float c,float a,float b){a=floor(a+.5),b=floor(b+.5);return i(g(c,a),b-a);}vec4 j(float a){if(a==0.)return vec4(0.,0.,0.,0.);float k=128.*step(a,0.);a=abs(a);float c=floor(log2(a)),l=c+127.,b=(a/exp2(c)-1.)*8388608.,d=l/2.,m=fract(d)*2.,n=floor(d),o=e(b,0.,8.),p=e(b,8.,16.),q=m*128.+e(b,16.,23.),r=k+n;return vec4(o,p,q,r)/255.;}void main(){float a=dot(texture2D(u1,vv0),u16);gl_FragColor=j(a);}", i:["u1","u16"],j:D},s16:{g:"uniform sampler2D u0;varying vec2 vv0;const vec4 e=vec4(1.);void main(){vec4 a=texture2D(u0,vv0),b=e/(e+exp(-a));gl_FragColor=b;}",i:H,j:h,m:!0},s17:{g:"uniform sampler2D u0;varying vec2 vv0;const vec4 f=vec4(0.);void main(){vec4 a=texture2D(u0,vv0);gl_FragColor=max(f,a);}",i:H,j:h,m:!0},s18:{g:"uniform sampler2D u0;varying vec2 vv0;const vec4 e=vec4(1.);const float g=.797885,h=.044715;vec4 i(vec4 a){vec4 b=exp(-abs(a)),c=b*b,d=sign(a)*(e-c)/(e+c);return d;}void main(){vec4 a=texture2D(u0,vv0),b=a+h*a*a*a,c=i(g*b);gl_FragColor=.5*a*(e+c);}", i:H,j:h,m:!0},s19:{g:"uniform sampler2D u0;varying vec2 vv0;const vec4 f=vec4(1.);void main(){vec4 a=texture2D(u0,vv0);gl_FragColor=mix(exp(-abs(a))-f,a,step(0.,a));}",i:H,j:h,m:!0},s20:{g:"uniform sampler2D u0;varying vec2 vv0;const vec4 f=vec4(1.);void main(){vec4 a=texture2D(u0,vv0),b=exp(a)-f;gl_FragColor=mix(.1*b,a,step(0.,a));}",i:H,j:h},s21:{g:"uniform sampler2D u0;const float e=3.141593;varying vec2 vv0;void main(){gl_FragColor=atan(e*texture2D(u0,vv0))/e;}",i:H,j:h},s22:{g:"uniform sampler2D u0;const float e=3.141593;varying vec2 vv0;void main(){gl_FragColor=2.*atan(e*texture2D(u0,vv0))/e;}", i:H,j:h,m:!0},s23:{g:"uniform sampler2D u0,u17;uniform float u18;const vec2 e=vec2(.5);const float f=1e-5;const vec4 g=vec4(1.),i=vec4(0.);varying vec2 vv0;void main(){vec4 a=texture2D(u17,e);float b=u18*u18;vec4 c=max(b*a,f*g);gl_FragColor=texture2D(u0,vv0)/c;}",i:["u0","u17","u18"],j:{u0:0,u17:1},m:!0},s24:{g:"uniform sampler2D u1;uniform vec2 u19;varying vec2 vv0;void main(){float a=u19.x*u19.y;vec2 b=floor(vv0*a)/a,c=fract(vv0*a),d=floor(b*u19.y),f=floor(u19.x*fract(b*u19.y)),g=(f*u19.y+d)/a;gl_FragColor=texture2D(u1,g+c/a);}", i:["u1","u19"],j:D},s25:{g:"uniform sampler2D u8,u7,u20;varying vec2 vv0;void main(){vec4 a=texture2D(u20,vv0);vec2 b=a.rg,c=a.ba;vec4 d=texture2D(u8,b),f=texture2D(u7,c);gl_FragColor=d*f;}",i:["u8","u7","u20"],j:Object.assign({u20:2},C),m:!0},s26:{g:"uniform float u9,u10;uniform sampler2D u8,u7;varying vec2 vv0;void main(){vec2 b=fract(vv0*u9);float a=u9*u10;vec2 c=(vec2(.5)+floor(a*vv0))/a;vec4 d=texture2D(u8,c),f=texture2D(u7,b);gl_FragColor=d*f;}",i:v,j:C},s27:{g:"uniform float u9,u10;uniform vec2 u21;uniform sampler2D u8,u7;varying vec2 vv0;void main(){float a=u9*u10;vec2 b=mod(vv0*u21,vec2(1.)),c=floor(vv0*u21)/u21,d=c+fract(b*u9)/u21,f=(vec2(.5)+floor(a*b))/a;vec4 g=texture2D(u8,f),h=texture2D(u7,d);gl_FragColor=g*h;}", i:["u21"].concat(v),j:C,m:!0},s28:{g:"uniform float u9,u10;uniform sampler2D u8,u7,u23,u24,u25,u26;varying vec2 vv0;const vec4 e=vec4(1.,1.,1.,1.),g=vec4(1e-3,1e-3,1e-3,1e-3);void main(){vec2 c=fract(vv0*u9),d=vv0;float h=u9*u10;d=(.5+floor(h*vv0))/h;vec4 l=texture2D(u8,d),m=texture2D(u7,c),a=texture2D(u26,d);a=floor(.5+a*255.);vec4 n=texture2D(u23,c),o=texture2D(u24,c),p=texture2D(u25,c),i=step(-g,-a),b=e-i,j=b*step(-e-g,-a);b*=e-j;vec4 k=b*step(-2.*e-g,-a);b*=e-k;vec4 q=b,r=i*m+j*n+k*o+q*p;gl_FragColor=l*r;}", i:["u26","u23","u24","u25"].concat(v),j:Object.assign({u26:3,u23:4,u24:5,u25:6},C),m:!0},s29:{g:"uniform sampler2D u8,u7,u3;uniform float u9,u27,u28,u10;uniform vec2 u29;varying vec2 vv0;const vec2 f=vec2(1.),l=vec2(0.);void main(){vec2 c=floor(u27*vv0),d=u27*vv0-c;float g=u9/u27;vec2 h=floor(d*g),i=d*g-h,j=(c+i)/u27;float m=u27*u10/u9;vec2 b=m*h,n=floor(.5*(u10-1.)*(f-u29));b=floor(u29*b+n);vec2 a=(b+i*u28)/u10;a+=.25/u10;vec2 k=step(a,f)*step(l,a);vec4 o=texture2D(u8,j),p=texture2D(u7,a),q=o*p,r=texture2D(u3,j);gl_FragColor=(q*u28*u28+r)*k.x*k.y;}", i:["u27","u28","u3","u29"].concat(v),j:Object.assign({u3:2},C)},s30:{g:"uniform sampler2D u8,u7;varying vec2 vv0;void main(){vec4 a=texture2D(u8,vv0),b=texture2D(u7,vv0);gl_FragColor=a*b;}",i:["u8","u7"],j:C,m:!0},s31:{g:"uniform sampler2D u1,u3;uniform float u4;varying vec2 vv0;void main(){gl_FragColor=texture2D(u3,vv0)+u4*texture2D(u1,vv0);}",i:X,j:R},s32:{g:"uniform sampler2D u1,u3;uniform vec2 u21;uniform float u4;varying vec2 vv0;void main(){gl_FragColor=texture2D(u3,vv0*u21)+u4*texture2D(u1,vv0);}", i:["u21"].concat(X),j:R,m:!0},s33:{g:"uniform sampler2D u1,u3;uniform float u4;varying vec2 vv0;const vec4 e=vec4(1.);void main(){vec4 a=texture2D(u3,vv0)+u4*texture2D(u1,vv0);vec2 h=mod(gl_FragCoord.xy,vec2(2.)),d=step(h,vec2(.75));float b=d.x+2.*d.y,c=step(2.5,b),g=(1.-c)*step(1.5,b),i=(1.-c)*(1.-g)*step(.5,b);a=mix(a,a.argb,i*e),a=mix(a,a.barg,g*e),a=mix(a,a.gbar,c*e),gl_FragColor=a;}",i:X,j:R,m:!0},s34:{g:"uniform sampler2D u1,u3;uniform vec2 u21;uniform float u4;varying vec2 vv0;const vec4 e=vec4(1.);void main(){vec4 a=texture2D(u3,vv0*u21)+u4*texture2D(u1,vv0);vec2 h=mod(gl_FragCoord.xy,vec2(2.)),d=step(h,vec2(.75));float b=d.x+2.*d.y,c=step(2.5,b),g=(1.-c)*step(1.5,b),i=(1.-c)*(1.-g)*step(.5,b);a=mix(a,a.argb,i*e),a=mix(a,a.barg,g*e),a=mix(a,a.gbar,c*e),gl_FragColor=a;}", i:["u21"].concat(X),j:R,m:!0},s35:{g:"uniform sampler2D u1,u3;uniform float u4;varying vec2 vv0;const vec4 h=vec4(1.);void main(){vec4 a=texture2D(u3,vv0)+u4*texture2D(u1,vv0);vec2 b=floor(gl_FragCoord.xy);vec3 d=b.x*vec3(1.)+vec3(0.,1.,2.);float c=mod(b.y,2.);vec4 f=vec4(c,(1.-c)*step(mod(d,vec3(3.)),vec3(.5)));mat4 g=mat4(a.rgba,a.gbar,a.barg,a.argb);gl_FragColor=g*f;}",i:X,j:R,m:!0},s36:{g:"varying vec2 vv0;uniform sampler2D u1;const vec4 f=vec4(1.,1.,1.,1.),g=vec4(.299,.587,.114,0.);void main(){vec4 a=texture2D(u1,vv0);gl_FragColor=dot(a,g)*f;}", i:r,j:D,precision:"lowp"},s37:{g:"varying vec2 vv0;uniform sampler2D u1;uniform float u30;const vec3 f=vec3(.299,.587,.114);void main(){vec3 a=texture2D(u1,vv0).rgb,b=texture2D(u1,vv0+vec2(0.,u30)).rgb,c=texture2D(u1,vv0+vec2(u30,u30)).rgb,d=texture2D(u1,vv0+vec2(u30,0.)).rgb;gl_FragColor=vec4(dot(a,f),dot(b,f),dot(c,f),dot(d,f));}",i:["u1","u30"],j:D,precision:"lowp"},s38:{g:"varying vec2 vv0;uniform sampler2D u1;uniform float u30;const vec3 f=vec3(.299,.587,.114);void main(){vec3 a=texture2D(u1,vv0).rgb,b=texture2D(u1,vv0+vec2(0.,u30)).rgb,c=texture2D(u1,vv0+vec2(u30,u30)).rgb,d=texture2D(u1,vv0+vec2(u30,0.)).rgb;gl_FragColor=vec4(a.r,b.g,c.b,dot(d,f));}", i:["u1","u30"],j:D,precision:"lowp"},s39:{g:"varying vec2 vv0;uniform sampler2D u1,u2;uniform float u31;const vec4 f=vec4(1.);void main(){vec4 a=vec4(0.);a-=texture2D(u1,vec2(vv0.x-u31,vv0.y-u31))*1.,a-=texture2D(u1,vec2(vv0.x-u31,vv0.y))*2.,a-=texture2D(u1,vec2(vv0.x-u31,vv0.y+u31))*1.,a+=texture2D(u1,vec2(vv0.x+u31,vv0.y-u31))*1.,a+=texture2D(u1,vec2(vv0.x+u31,vv0.y))*2.,a+=texture2D(u1,vec2(vv0.x+u31,vv0.y+u31))*1.;vec4 b=vec4(0.);b-=texture2D(u1,vec2(vv0.x-u31,vv0.y-u31))*1.,b-=texture2D(u1,vec2(vv0.x,vv0.y-u31))*2.,b-=texture2D(u1,vec2(vv0.x+u31,vv0.y-u31))*1.,b+=texture2D(u1,vec2(vv0.x-u31,vv0.y+u31))*1.,b+=texture2D(u1,vec2(vv0.x,vv0.y+u31))*2.,b+=texture2D(u1,vec2(vv0.x+u31,vv0.y+u31))*1.;vec3 c=sqrt(a.rgb*a.rgb+b.rgb*b.rgb);vec4 e=vec4(c,texture2D(u1,vv0).a),g=texture2D(u2,vv0);gl_FragColor=g.a*e.r*f;}", i:["u1","u2","u31"],j:K,m:!0},s40:{g:"varying vec2 vv0;uniform sampler2D u1,u2;uniform float u31;const vec4 j=vec4(1.,1.,1.,1.);const vec2 k=vec2(1.,1.);void main(){float h=0.;vec2 l=k*u31,a,b;float c,d,i=0.;for(float e=-4.;e<=4.;e+=1.)for(float f=-4.;f<=4.;f+=1.)a=vec2(e,f),c=length(a)/2.,d=exp(-c*c),b=vv0+l*a,h+=d*texture2D(u1,b).r,i+=d;vec4 m=texture2D(u2,vv0);gl_FragColor=m.a*(texture2D(u1,b).r-h/i)*j;}",i:["u1","u2","u31"],j:K,m:!0},s41:{g:"uniform sampler2D u5;uniform vec2 u6;varying vec2 vv0;const vec2 f=vec2(1.),g=vec2(.5),h=vec2(1.,0.),i=vec2(0.,1.);void main(){vec2 a=f/u6,c=u6/2.,d=floor(vv0*c)+g,j=d/c,b=j-a*.5;vec4 k=texture2D(u5,b),l=texture2D(u5,b+a*h),m=texture2D(u5,b+a*i),n=texture2D(u5,b+a),o=max(k,l),p=max(m,n);gl_FragColor=max(o,p);}", i:G,j:g,m:!0},s42:{g:"uniform sampler2D u5;uniform vec2 u6;varying vec2 vv0;const vec2 k=vec2(1.),l=vec2(1.,0.),m=vec2(0.,1.),n=vec2(2.,0.),o=vec2(0.,2.);vec4 e(vec2 b,vec2 a){vec4 c=texture2D(u5,a),d=texture2D(u5,a+b*l),f=texture2D(u5,a+b*m),g=texture2D(u5,a+b),h=max(c,d),i=max(f,g);return max(h,i);}void main(){vec2 a=k/u6,c=u6/4.,d=4.*floor(vv0*c),f=d/u6,b=f+a*.5;vec4 g=e(a,b),h=e(a,b+a*n),i=e(a,b+a*2.),p=e(a,b+a*o),q=max(g,h),r=max(i,p);gl_FragColor=max(q,r);}",i:G,j:g,m:!0},s43:{g:"uniform sampler2D u1;varying vec2 vv0;void main(){vec4 a=texture2D(u1,vv0);gl_FragColor=a*a;}", i:["u1"],j:D,precision:"lowp",m:!0},s44:{g:"uniform sampler2D u1;uniform vec2 u15;varying vec2 vv0;const float e=15444.;void main(){vec4 a=1001./e*texture2D(u1,vv0-3.*u15)+2002./e*texture2D(u1,vv0-2.*u15)+3003./e*texture2D(u1,vv0-u15)+3432./e*texture2D(u1,vv0)+3003./e*texture2D(u1,vv0+u15)+2002./e*texture2D(u1,vv0+2.*u15)+1001./e*texture2D(u1,vv0+3.*u15);gl_FragColor=a;}",i:["u15","u1"],j:D,precision:"lowp",m:!0},s45:{g:"uniform sampler2D u1,u17,u32;varying vec2 vv0;const vec4 f=vec4(1.,1.,1.,1.);const float g=.1;void main(){vec4 a=texture2D(u17,vv0),b=texture2D(u32,vv0),c=texture2D(u1,vv0),d=max(f*g,b-a*a),h=sqrt(d);gl_FragColor=(c-a)/h;}", i:["u1","u17","u32"],j:{u1:0,u17:1,u32:2},m:!0}},N={s46:{g:"uniform float u9,u33;uniform sampler2D u8,u7,u3;varying vec2 vv0;const vec2 ZERO2=vec2(0.),ONE2=vec2(1.),HALF2=vec2(.5),EPS2=vec2(1e-5);void main(){vec4 sum=texture2D(u3,vv0);float toSparsity=1.1111;vec2 uvFrom,uvWeight,xyPatch=ZERO2,eps2=EPS2/u9,xyTo=floor(vv0*u9+eps2);float weightSize=toSparsity*u9;vec2 halfFromSparsity=ONE2*(toSparsity-1.)/2.;for(float patch_x=0.;patch_x<1.1111;patch_x+=1.){xyPatch.x=patch_x;for(float patch_y=0.;patch_y<1.1111;patch_y+=1.)xyPatch.y=patch_y,uvFrom=(xyTo+HALF2+u33*(xyPatch-halfFromSparsity))/u9,uvFrom+=step(uvFrom,-eps2),uvFrom-=step(ONE2-eps2,uvFrom),uvWeight=(xyTo*toSparsity+xyPatch+HALF2)/weightSize,sum+=texture2D(u8,uvWeight)*texture2D(u7,uvFrom);}gl_FragColor=sum,gl_FragColor*=2.2222;}", i:["u9","u8","u7","u3","u33"],Na:["1.1111","gl_FragColor\\*=2.2222;"]},s47:{g:"uniform float u9,u33,u10;uniform sampler2D u8,u7,u3;varying vec2 vv0;const vec2 ZERO2=vec2(0.),ONE2=vec2(1.),HALF2=vec2(.5),EPS2=vec2(1e-4);void main(){vec4 sum=texture2D(u3,vv0);float fromSparsity=1.1111,shrinkFactor=3.3333;vec2 uvFrom,uvWeight,xyFrom,xyPatchTo,xyPatch=ZERO2,xyShrink=ZERO2,eps2=EPS2/u10,xyTo=floor(vv0*u9+eps2);float weightSize=fromSparsity*u10;vec2 halfFromSparsity=ONE2*(fromSparsity-1.)/2.;float toSparsity=weightSize/u9;vec2 xyFrom0=xyTo*shrinkFactor;for(float patch_x=0.;patch_x<1.1111;patch_x+=1.){xyPatch.x=patch_x;for(float patch_y=0.;patch_y<1.1111;patch_y+=1.){xyPatch.y=patch_y;for(float shrink_x=0.;shrink_x<3.3333;shrink_x+=1.){xyShrink.x=shrink_x;for(float shrink_y=0.;shrink_y<3.3333;shrink_y+=1.)xyShrink.y=shrink_y,xyFrom=xyFrom0+xyShrink+shrinkFactor*u33*(xyPatch-halfFromSparsity),uvFrom=(xyFrom+HALF2)/u10,uvFrom+=step(uvFrom,-eps2),uvFrom-=step(ONE2-eps2,uvFrom),xyPatchTo=xyPatch*shrinkFactor+xyShrink,uvWeight=(xyTo*toSparsity+xyPatchTo+HALF2)/weightSize,sum+=texture2D(u8,uvWeight)*texture2D(u7,uvFrom);}}}gl_FragColor=sum,gl_FragColor*=2.2222;}", i:"u9 u10 u8 u7 u3 u33".split(" "),Na:["1.1111","gl_FragColor\\*=2.2222;","3.3333"]}},Z=null,ma=null,T={Ia:function(){return F},F:function(){if(!F){Z=qb.Xa(E,2);ma=qb.Xa(N,2);A="highp";a.getShaderPrecisionFormat&&(a.getShaderPrecisionFormat(a.FRAGMENT_SHADER,a.MEDIUM_FLOAT),a.getShaderPrecisionFormat(a.FRAGMENT_SHADER,a.LOW_FLOAT));for(var p in Z)k(a,Z[p],p);z.set("s0");a.enableVertexAttribArray(0);F=!0}},wa:function(p){p.forEach(function(d){T.Fb(d)})},Fb:function(p){Z[p.id]=p;k(a,p,p.id)},nd:function(p, d,y){d||(d=p);Z[d]=Object.create(ma[p]);Z[d].td=!0;ma[p].Na&&ma[p].Na.forEach(function(I,M){var W="";"gl_Frag"===I.substring(0,7)?(I=new RegExp("[,;]?"+I,"g"),W=";"):I=new RegExp(I,"g");Z[d].g=Z[d].g.replace(I,W+y[M])});k(a,Z[d],d)},set:function(p){var d=Z[p];d.m&&(d.m=!1,k(a,d,p));l(d)},ta:function(p){return m(p,u(),"s48")},ub:function(p){return m(p,{g:"void main(){gl_FragColor=vec4(.5,.5,.5,.5);}",i:[],precision:A},"s49")},Wc:function(p){return"undefined"===typeof Z[p]?!1:Z[p].ib},K:function(){-1!== f&&(f=-1,n.ka.forEach(function(p){0!==p&&a.disableVertexAttribArray(p)}))},vb:function(){var p=0;n.ka.forEach(function(d,y){y=n.Ua[y];a.vertexAttribPointer(d,y,a.FLOAT,!1,n.Cb,p);p+=4*y})},Vc:function(){a.enableVertexAttribArray(0)},va:function(){T.Oa(a)},Oa:function(p){p.vertexAttribPointer(n.ka[0],2,p.FLOAT,!1,8,0)},gf:function(p,d){a.uniform1i(n.v[p],d)},U:function(p,d){a.uniform1f(n.v[p],d)},N:function(p,d,y){a.uniform2f(n.v[p],d,y)},Ld:function(p,d){a.uniform2fv(n.v[p],d)},jf:function(p,d){a.uniform3fv(n.v[p], d)},hf:function(p,d,y,I){a.uniform3f(n.v[p],d,y,I)},Md:function(p,d,y,I,M){a.uniform4f(n.v[p],d,y,I,M)},wc:function(p,d){a.uniform4fv(n.v[p],d)},Nd:function(p,d){a.uniformMatrix2fv(n.v[p],!1,d)},kf:function(p,d){a.uniformMatrix3fv(n.v[p],!1,d)},lf:function(p,d){a.uniformMatrix4fv(n.v[p],!1,d)},ua:function(p,d){T.set(p);d.forEach(function(y){switch(y.type){case "4f":a.uniform4fv(n.v[y.name],y.value);break;case "3f":a.uniform3fv(n.v[y.name],y.value);break;case "2f":a.uniform2fv(n.v[y.name],y.value); break;case "1f":a.uniform1f(n.v[y.name],y.value);break;case "1i":a.uniform1i(n.v[y.name],y.value);break;case "mat2":a.uniformMatrix2fv(n.v[y.name],!1,y.value);break;case "mat3":a.uniformMatrix3fv(n.v[y.name],!1,y.value);break;case "mat4":a.uniformMatrix4fv(n.v[y.name],!1,y.value)}})},ye:function(){return"lowp"},o:function(){T.K();a.disableVertexAttribArray(0);for(var p in Z){var d=Z[p];d.ib&&(d.ib=!1,a.deleteProgram(d.fa));d.td&&delete Z[p]}q.forEach(function(y){a.deleteShader(y)});q.splice(0);t= 0;F=!1;n=null;f=-1}};return T}(),a=null,ab=function(){function b(r){console.log("ERROR in ContextFF: ",r);return!1}function c(){return navigator.userAgent&&-1!==navigator.userAgent.indexOf("forceWebGL1")}function e(r,H,D){r.setAttribute("width",H);r.setAttribute("height",D)}function k(r){if(c())return!1;var H=document.createElement("canvas");e(H,5,5);var D=null;try{D=H.getContext("webgl2",r)}catch(h){return!1}if(!D)return!1;l(D);ba.Nb(D);r=ba.Ya(D);if(!r.Z&&!r.$)return Aa.o(),ba.reset(),!1;D=Aa.Hb(D, r);Aa.o();ba.reset();return D?!0:!1}function l(r){r.clearColor(0,0,0,0);r.disable(r.DEPTH_TEST);r.disable(r.BLEND);r.disable(r.DITHER);r.disable(r.STENCIL_TEST);r.disable(r.CULL_FACE);r.GENERATE_MIPMAP_HINT&&r.FASTEST&&r.hint(r.GENERATE_MIPMAP_HINT,r.FASTEST);r.disable(r.SAMPLE_ALPHA_TO_COVERAGE);r.disable(r.SAMPLE_COVERAGE);r.depthFunc(r.LEQUAL);r.clearDepth(1)}var m=null,u=null,q=null,f=!0,n=null,t=null,F=[],A={D:function(){return m.width},S:function(){return m.height},re:function(){return m},qe:function(){return a}, ba:function(){return f},flush:function(){a.flush()},He:function(){Da.reset();Da.W();A.Gd()},Gd:function(){aa.reset();U.reset();z.K();z.Vc();a.disable(a.DEPTH_TEST);a.disable(a.BLEND);U.la();z.va()},$c:function(){n||(n=new Uint8Array(m.width*m.height*4));a.readPixels(0,0,m.width,m.height,a.RGBA,a.UNSIGNED_BYTE,n);return n},te:function(){return m.toDataURL("image/jpeg")},ue:function(){Da.I();u||(u=document.createElement("canvas"),q=u.getContext("2d"));e(u,m.width,m.height);for(var r=A.$c(),H=q.createImageData(u.width, u.height),D=u.width,h=u.height,K=H.data,R=0;R<h;++R)for(var X=h-R-1,G=0;G<D;++G){var g=4*(R*D+G),v=4*(X*D+G);K[g]=r[v];K[g+1]=r[v+1];K[g+2]=r[v+2];K[g+3]=r[v+3]}q.putImageData(H,0,0);return u.toDataURL("image/png")},se:function(r){!u&&r&&(u=document.createElement("canvas"),q=u.getContext("2d"));var H=r?u:document.createElement("canvas");e(H,m.width,m.height);(r?q:H.getContext("2d")).drawImage(m,0,0);return H},F:function(r){r=Object.assign({cb:null,mb:null,za:null,Lb:null,width:512,height:512,premultipliedAlpha:!1, qd:!0,antialias:!1,debug:!1,he:!1},r);r.cb?(a=r.cb,m=r.cb.canvas):r.Lb&&!r.za?m=document.getElementById(r.Lb):r.za&&(m=r.za);m||(m=document.createElement("canvas"));m.width=r.width;m.height=r.height;if(a)f=a instanceof WebGL2RenderingContext;else{f=!0;var H={antialias:r.antialias,alpha:!0,preserveDrawingBuffer:!0,premultipliedAlpha:r.premultipliedAlpha,stencil:!1,depth:r.qd,failIfMajorPerformanceCaveat:!0,powerPreference:"high-performance"};navigator&&navigator.userAgent&&-1!==navigator.userAgent.indexOf("noAntialiasing")&& (H.antialias=!1);var D=k(H);D||!H.antialias||c()||(H.antialias=!1,D=k(H));D&&(a=m.getContext("webgl2",H));a?f=!0:((a=m.getContext("webgl",H))||(a=m.getContext("experimental-webgl",H)),f=!1)}if(!a)return b("WebGL1 and 2 are not enabled");r.mb&&m.addEventListener&&(t=r.mb,m.addEventListener("webglcontextlost",t,!1));if(!ba.F())return b("Not enough GL capabilities");l(a);z.F();U.F();Aa.Hb(a,ba.Zc());F.forEach(function(h){h(a)});F.splice(0);return!0},$d:function(){return new Promise(function(r){a?r(a): F.push(r)})},o:function(){a&&(ba.o(),z.o(),Aa.o());t&&(m.removeEventListener("webglcontextlost",t,!1),t=null);a=n=q=u=m=null;F.splice(0)}};return A}(),va=function(){function b(){null===c&&("undefined"!==typeof z?c=z:"undefined"!==typeof JEShaders&&(c=JEShaders))}var c=null;return{reset:function(){c=null},Kd:function(e){c!==e&&(c&&c.K(),c=e)},Ia:function(){return c.Ia()},va:function(){return c.va()},Oa:function(e){return c.Oa(e)},vb:function(){return c.vb()},K:function(){return c.K()},set:function(e){b(); return c.set(e)},ta:function(e){b();return c.ta(e)},ub:function(e){b();return c.ub(e)}}}(),Ga=function(){function b(d){a.bindTexture(a.TEXTURE_2D,d)}function c(){return q?a.NO_ERROR:a.getError()}function e(d){Z[0]=d;d=ma[0];var y=d>>16&32768,I=d>>12&2047,M=d>>23&255;return 103>M?y:142<M?y|31744|((255==M?0:1)&&d&8388607):113>M?(I|=2048,y|(I>>114-M)+(I>>113-M&1)):y=(y|M-112<<10|I>>1)+(I&1)}function k(d){var y=new Uint16Array(d.length);d.forEach(function(I,M){y[M]=e(I)});return y}function l(){if(null!== T.gb)return T.gb;var d=u(k([.5,.5,.5,.5]),!0);return null===d?!0:T.gb=d}function m(){if(null!==T.hb)return T.hb;var d=u(new Uint8Array([127,127,127,127]),!1);return null===d?!0:T.hb=d}function u(d,y){if(!va.Ia()||!K)return null;var I=null,M=Math.sqrt(d.length/4);try{var W=a.getError();if("FUCKING_BIG_ERROR"===W)return!1;I=p.instance({isFloat:!1,J:y,array:d,width:M});W=a.getError();if(W!==a.NO_ERROR)return!1}catch(wa){return!1}oa.I();a.viewport(0,0,M,M);a.clearColor(0,0,0,0);a.clear(a.COLOR_BUFFER_BIT); va.set("s0");I.xa(0);na.l(!0,!0);d=4*M*M;y=new Uint8Array(d);a.readPixels(0,0,M,M,a.RGBA,a.UNSIGNED_BYTE,y);M=!0;for(W=0;W<d;++W)M=M&&3>Math.abs(y[W]-127);I.remove();oa.W();return M}var q=!1,f=0,n=null,t=0,F=null,A=null,r=null,H=null,D=null,h=null,K=!1,R=[],X={isFloat:!1,isPot:!0,isLinear:!1,isMipmap:!1,dc:!1,isAnisotropicFiltering:!1,isMirrorX:!1,isMirrorY:!1,isSrgb:!1,isKeepArray:!1,isFlipY:null,width:0,height:0,url:null,array:null,data:null,G:null,Yb:null,sd:!1,J:!1,A:null,Ja:4,jb:0},G=!1,g=null, v=null,C=[[1,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,0,1]],E=!1,N=!1,Z=new Float32Array(1),ma=new Int32Array(Z.buffer),T={gb:null,hb:null},p={F:function(){K||(D=[a.RGBA,null,a.RGBA,a.RGBA],h=[a.RGBA,null,a.RGBA,a.RGBA],n=[a.TEXTURE0,a.TEXTURE1,a.TEXTURE2,a.TEXTURE3,a.TEXTURE4,a.TEXTURE5,a.TEXTURE6,a.TEXTURE7],E="undefined"!==typeof JEContext,N="undefined"!==typeof ba,E&&JEContext.Re()&&n.push(a.TEXTURE8,a.TEXTURE9),F=[-1,-1,-1,-1,-1,-1,-1,-1],H=[a.UNSIGNED_BYTE,a.FLOAT,a.FLOAT],K=!0)},cf:function(){a.texParameteri(a.TEXTURE_2D, a.TEXTURE_MAG_FILTER,a.LINEAR);a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MIN_FILTER,a.LINEAR)},df:function(){a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MAG_FILTER,a.NEAREST);a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MIN_FILTER,a.NEAREST)},md:function(){if(!A){for(var d=new Float32Array(16384),y=0;16384>y;++y)d[y]=2*Math.random()-1;A={random:p.instance({isFloat:!0,isPot:!0,array:d,width:64}),xc:p.instance({isFloat:!1,isPot:!0,width:1,array:new Uint8Array([0,0,0,0])})}}p.Ud()},uc:function(d){a.framebufferTexture2D(oa.ab(), a.COLOR_ATTACHMENT0,a.TEXTURE_2D,d,0)},Fe:function(){return A.xc},Ud:function(){H[1]=ba.$a(a)},Id:function(){h=D=[a.RGBA,a.RGBA,a.RGBA,a.RGBA]},rc:function(d){z.set("s1");oa.I();var y=d.D(),I=d.S();a.viewport(0,0,y,I);d.h(0);na.l(!1,!1)},Ve:function(d,y){p.rc(d);a.readPixels(0,0,d.D(),d.S(),a.RGBA,a.UNSIGNED_BYTE,y)},We:function(d,y){p.rc(d);return ba.tb(0,0,d.D(),d.S(),y)},Ub:function(d,y,I,M,W,wa,Ea){d.activeTexture(d.TEXTURE0);var Pa=d.createTexture();d.bindTexture(d.TEXTURE_2D,Pa);W=W instanceof Float32Array?W:new Float32Array(W);d.texParameteri(d.TEXTURE_2D,d.TEXTURE_WRAP_S,d.CLAMP_TO_EDGE);d.texParameteri(d.TEXTURE_2D,d.TEXTURE_WRAP_T,d.CLAMP_TO_EDGE);d.texParameteri(d.TEXTURE_2D,d.TEXTURE_MAG_FILTER,d.NEAREST);d.texParameteri(d.TEXTURE_2D,d.TEXTURE_MIN_FILTER,d.NEAREST);d.pixelStorei(d.UNPACK_FLIP_Y_WEBGL,wa);d.texImage2D(d.TEXTURE_2D,0,d.RGBA,I,M,0,d.RGBA,d.FLOAT,W);d.bindTexture(d.TEXTURE_2D,null);d.pixelStorei(d.UNPACK_FLIP_Y_WEBGL,!1);Ea&&(oa.W(),z.ta(d));d.viewport(0,0,I,M);d.framebufferTexture2D(d.FRAMEBUFFER, d.COLOR_ATTACHMENT0,d.TEXTURE_2D,y,0);d.bindTexture(d.TEXTURE_2D,Pa);Ea?na.l(!0,!0):U.Ca(d);d.deleteTexture(Pa);K&&(F[0]=-1,r=null,f=0)},Ta:function(d){d!==f&&(a.activeTexture(n[d]),f=d)},ef:function(d){q=d},instance:function(d){var y;function I(){Q=void 0!==w.G.videoWidth?w.G.videoWidth:w.G.width;S=void 0!==w.G.videoHeight?w.G.videoHeight:w.G.height}function M(x){var O=c();if("FUCKING_BIG_ERROR"===O)return!1;a.texImage2D(a.TEXTURE_2D,0,ka,ha,ja,x);O=c();O!==a.NO_ERROR&&ha!==a.RGBA&&(ha=a.RGBA,a.texImage2D(a.TEXTURE_2D, 0,ka,ha,ja,x));return!0}function W(){if(!vb){b(qa);Ba&&a.pixelStorei(a.UNPACK_FLIP_Y_WEBGL,Ba);w.isPot?(a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_S,w.isMirrorX?a.MIRRORED_REPEAT:a.REPEAT),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_T,w.isMirrorY?a.MIRRORED_REPEAT:a.REPEAT)):(a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_S,a.CLAMP_TO_EDGE),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_T,a.CLAMP_TO_EDGE));w.isAnisotropicFiltering&&"undefined"!==typeof JESETTINGS&&a.texParameterf(a.TEXTURE_2D,JEContext.ve().TEXTURE_MAX_ANISOTROPY_EXT, JESETTINGS.Xd);a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MAG_FILTER,w.isLinear?a.LINEAR:a.NEAREST);var x=w.isMipmap&&!Qa;a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MIN_FILTER,w.dc?a.LINEAR_MIPMAP_LINEAR:w.isLinear?x?a.NEAREST_MIPMAP_LINEAR:a.LINEAR:x?a.NEAREST_MIPMAP_NEAREST:a.NEAREST);ha=D[w.Ja-1];ka=h[w.Ja-1];ja=H[rb];ba.ba()&&(x=ba.ad(),ha===a.RGBA&&ja===a.FLOAT?w.isMipmap||w.isLinear?ka=Aa.cd(a):ba.Ib()?x&&(ka=x):ka=a.RGBA16F||a.RGBA:ha===a.RGB&&ja===a.FLOAT&&x&&(ka=x,ha=a.RGBA));if(w.J&&!w.isFloat|| w.isFloat&&w.isMipmap&&Aa.wd())ka=ba.bd(),ja=ba.$a(a);w.jb&&(jb=w.jb);w.isSrgb&&4===w.Ja&&(ha=JEContext.De());if(w.G)M(w.G);else if(w.url)M(Ka);else if(ta){x=ta;try{"FUCKING_BIG_ERROR"!==a.getError()&&(a.texImage2D(a.TEXTURE_2D,0,ka,Q,S,0,ha,ja,x),c()!==a.NO_ERROR&&(a.texImage2D(a.TEXTURE_2D,0,ka,Q,S,0,ha,ja,null),c()!==a.NO_ERROR&&a.texImage2D(a.TEXTURE_2D,0,a.RGBA,Q,S,0,a.RGBA,a.UNSIGNED_BYTE,null)))}catch(Zb){a.texImage2D(a.TEXTURE_2D,0,ka,Q,S,0,ha,ja,null)}w.isKeepArray||(ta=null)}else x=c(), "FUCKING_BIG_ERROR"!==x&&(a.texImage2D(a.TEXTURE_2D,0,ka,Q,S,0,ha,ja,null),x=c(),x!==a.NO_ERROR&&(ha=a.RGBA,w.J&&ja!==a.FLOAT&&(ja=a.FLOAT,a.texImage2D(a.TEXTURE_2D,0,ka,Q,S,0,ha,ja,null))));if(w.isMipmap)if(!Qa&&ca)ca.Da(),kb=!0;else if(Qa){x=Math.log2(Math.min(Q,S));Ra=Array(1+x);Ra[0]=qa;for(var O=1;O<=x;++O){var la=Math.pow(2,O),V=Q/la;la=S/la;var La=a.createTexture();b(La);a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MIN_FILTER,a.NEAREST);a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MAG_FILTER,a.NEAREST); a.texImage2D(a.TEXTURE_2D,0,ka,V,la,0,ha,ja,null);b(null);Ra[O]=La}kb=!0}b(null);F[f]=-1;Ba&&a.pixelStorei(a.UNPACK_FLIP_Y_WEBGL,!1);Va=!0;w.A&&ca&&(w.A(ca),w.A=null)}}function wa(){for(var x=Q*S,O=2*x,la=3*x,V=0;V<x;++V)xa[0][V]=Wa[V],xa[1][V]=Wa[V+x],xa[2][V]=Wa[V+O],xa[3][V]=Wa[V+la]}function Ea(){var x=Q*S*4;Fa=[new Uint8Array(x),new Uint8Array(x),new Uint8Array(x),new Uint8Array(x)];xa=[new Float32Array(Fa[0].buffer),new Float32Array(Fa[1].buffer),new Float32Array(Fa[2].buffer),new Float32Array(Fa[3].buffer)]; lb=new Uint8Array(4*x);Wa=new Float32Array(lb.buffer);Xa=!0}function Pa(){y=new Uint8Array(Q*S*4);wb=new Float32Array(y.buffer);sb=!0}var w=Object.assign({},X,d),Ya=t++;null===w.isFlipY&&(w.isFlipY=w.url?!0:!1);w.data&&(w.array="string"===typeof w.data?L(w.data):w.isFloat?new Float32Array(w.data):new Uint8Array(w.data),w.isFlipY=!1);var rb=0,xb=w.G?!0:!1,Za=null,tb=null,yb=!1;w.J=w.J||w.isFloat;w.J&&(rb=1);!w.sd&&w.isFloat&&N&&!ba.Ib()&&(w.isFloat=!1);w.isFloat&&(rb=2);w.isAnisotropicFiltering&&E&& !JEContext.Ke()&&(w.isAnisotropicFiltering=!1);var qa=w.Yb||a.createTexture(),Ka=null,ta=!1,Q=0,S=0,Va=!1,vb=!1,Xa=!1,xa=null,Fa=null,lb=null,Wa=null,ka=null,ha=null,ja=null,Ba=w.isFlipY,Nb=(d=w.J&&w.isMipmap)&&Aa.Mc(),Qa=d&&!Nb?!0:!1,Ra=null,jb=-1,zb=-1,kb=!1;var sb=!1;var wb=y=null;w.width&&(Q=w.width,S=w.height?w.height:Q);var ca={get:function(){return qa},D:function(){return Q},S:function(){return S},Ge:function(){return w.url},Le:function(){return w.isFloat},Ne:function(){return w.J},bf:function(x){qa= x},Oe:function(){return w.isLinear},Da:function(){a.generateMipmap(a.TEXTURE_2D)},Jc:function(x,O){Qa?(x||(x=ca.Xb()),p.Ta(O),b(Ra[x]),F[O]=-1):ca.h(O)},Xb:function(){-1===jb&&(jb=Math.log2(Q));return jb},vc:function(x){a.TEXTURE_MAX_LEVEL&&a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MAX_LEVEL,x)},Xc:function(x){x||(x=ca.Xb());if(Qa){z.set("s12");p.Ta(0);for(var O=Q,la=S,V=1;V<=x;++V)O/=2,la/=2,z.N("u15",.25/O,.25/la),a.viewport(0,0,O,la),b(Ra[V-1]),a.framebufferTexture2D(oa.ab(),a.COLOR_ATTACHMENT0,a.TEXTURE_2D, Ra[V],0),na.l(!1,1===V);F[0]=-1}else x!==zb&&(zb=x,ca.vc(x)),ca.Da()},ff:function(x){(xb=!Lb.Rd(x))?(ta=null,w.G=x,I()):ta=x},h:function(x){if(!Va)return!1;p.Ta(x);if(F[x]===Ya)return!1;b(qa);F[x]=Ya;return!0},xa:function(x){a.activeTexture(n[x]);f=x;b(qa);F[x]=Ya},u:function(){r=ca;p.uc(qa)},H:function(){a.viewport(0,0,Q,S);r=ca;p.uc(qa)},Bb:p.Bb,Hd:function(x,O){Q=x;S=O},resize:function(x,O){ca.Hd(x,O);W()},clone:function(x){x=p.instance({width:Q,height:S,J:w.J,isFloat:w.isFloat,isLinear:w.isLinear, isMirrorY:w.isMirrorY,isFlipY:x?!Ba:Ba,isPot:w.isPot});va.set("s0");oa.W();x.H();ca.h(0);na.l(!0,!0);return x},Od:function(){a.viewport(0,0,Q,S)},remove:function(){a.deleteTexture(qa);vb=!0;R.splice(R.indexOf(ca),1);ca=null},refresh:function(){ca.xa(0);Ba&&a.pixelStorei(a.UNPACK_FLIP_Y_WEBGL,!0);xb?a.texImage2D(a.TEXTURE_2D,0,ka,ha,ja,w.G):a.texImage2D(a.TEXTURE_2D,0,ka,Q,S,0,ha,ja,ta);Ba&&a.pixelStorei(a.UNPACK_FLIP_Y_WEBGL,!1)},qc:function(){Xa||Ea();a.readPixels(0,0,Q,4*S,a.RGBA,a.UNSIGNED_BYTE, lb);wa();return xa},Cd:function(){Xa||Ea();return ba.tb(0,0,Q,4*S,lb).then(function(){wa();return xa})},Ed:function(){sb||Pa();a.readPixels(0,0,Q,S,a.RGBA,a.UNSIGNED_BYTE,y);return wb},Dd:function(){sb||Pa();return ba.tb(0,0,Q,S,y)},Mb:function(x){oa.I();z.set("s15");ca.h(0);if(x)a.viewport(0,0,Q,S),z.Md("u16",.25,.25,.25,.25),na.l(!1,!0);else for(x=0;4>x;++x)a.viewport(0,S*x,Q,S),z.wc("u16",C[x]),na.l(!1,0===x)},uf:function(x){var O=ja===H[0]&&!m();b(qa);Ba&&a.pixelStorei(a.UNPACK_FLIP_Y_WEBGL,!0); O?(yb||(Za=document.createElement("canvas"),Za.width=Q,Za.height=S,tb=Za.getContext("2d"),tb.createImageData(Q,S),yb=!0),null.data.set(x),tb.putImageData(null,0,0),a.texImage2D(a.TEXTURE_2D,0,ka,ha,ja,Za)):a.texImage2D(a.TEXTURE_2D,0,ka,Q,S,0,ha,ja,x);F[f]=Ya;Ba&&a.pixelStorei(a.UNPACK_FLIP_Y_WEBGL,!1)},Td:function(x,O){b(qa);O&&a.pixelStorei(a.UNPACK_FLIP_Y_WEBGL,!0);a.texImage2D(a.TEXTURE_2D,0,ka,ha,ja,x);F[f]=Ya;O&&a.pixelStorei(a.UNPACK_FLIP_Y_WEBGL,!1)},af:function(x,O){var la=Q*S,V=4*la;x=w.J? x?"RGBE":"JSON":"RGBA";O&&(x=O);O=ba.ba()&&!1;var La=null;switch(x){case "RGBE":La="s13";break;case "JSON":La=O?"s0":"s15";break;case "RGBA":case "RGBAARRAY":La="s7"}Xa||("RGBA"===x||"RGBE"===x||"RGBAARRAY"===x?(Fa=new Uint8Array(V),Xa=!0):"JSON"!==x||O||Ea());oa.I();z.set(La);ca.h(0);V=null;if("RGBA"===x||"RGBE"===x||"RGBAARRAY"===x){a.viewport(0,0,Q,S);na.l(!0,!0);a.readPixels(0,0,Q,S,a.RGBA,a.UNSIGNED_BYTE,Fa);if("RGBAARRAY"===x)return{data:Fa};G||(g=document.createElement("canvas"),v=g.getContext("2d"), G=!0);g.width=Q;g.height=S;la=v.createImageData(Q,S);la.data.set(Fa);v.putImageData(la,0,0);V=g.toDataURL("image/png")}else if("JSON"===x)if(O)V=new Float32Array(la),a.viewport(0,0,Q,S),na.l(!0,!0),a.readPixels(0,0,Q,S,a.RGBA,a.FLOAT,V);else{for(V=0;4>V;++V)a.viewport(0,S*V,Q,S),z.wc("u16",C[V]),na.l(!V,!V);ca.qc();V=Array(la);for(O=0;O<la;++O)V[4*O]=xa[0][O],V[4*O+1]=xa[1][O],V[4*O+2]=xa[2][O],V[4*O+3]=xa[3][O]}return{format:x,data:V,width:Q,height:S,isMirrorY:w.isMirrorY,isFlipY:"RGBA"===x?w.isFlipY: !w.isFlipY}}};w.isMipmap&&!Qa&&Va&&!kb&&(ca.Da(),kb=!0);if(w.url)b(qa),a.texImage2D(a.TEXTURE_2D,0,a.RGBA,1,1,0,a.RGBA,a.UNSIGNED_BYTE,null),Ka=new Image,Ka.crossOrigin="anonymous",Ka.src=w.url,Ka.onload=function(){Q=Ka.width;S=Ka.height;W()};else if(w.G){var Ab=function(){I();Q?W():setTimeout(Ab,1)};Ab()}else w.array?(w.J&&!w.isFloat?w.array instanceof Uint16Array?(ta=w.array,W()):l()?(ta=k(w.array),W()):(W(),p.Ub(a,qa,ca.D(),ca.S(),w.array,Ba,!0)):(ta=w.isFloat?w.array instanceof Float32Array?w.array: new Float32Array(w.array):w.array instanceof Uint8Array?w.array:new Uint8Array(w.array),W()),w.isKeepArray||(ta&&ta!==w.array&&(ta=null),delete w.array)):w.Yb?Va=!0:W();ca.Ce=ca.D;w.A&&Va&&(w.A(ca),w.A=null);R.push(ca);return ca},I:function(d){d!==f&&(a.activeTexture(n[d]),f=d);F[d]=-1;b(null)},Zd:function(d){A.random.h(d)},Bb:function(){r=null;a.framebufferTexture2D(oa.ab(),a.COLOR_ATTACHMENT0,a.TEXTURE_2D,null,0)},reset:function(){0!==f&&a.activeTexture(n[0]);for(var d=0;d<n.length;++d)F[d]=-1; f=-1},Ze:function(){f=-1},Sd:function(){for(var d=0;d<n.length;++d)p.I(d)},Vb:function(){A&&(A.random.remove(),A.xc.remove())},tf:function(d,y){if("RGBA"===d.format||"RGBE"===d.format){var I=new Image;I.src=d.data;I.onload=function(){p.instance({isMirrorY:d.isMirrorY,isFlipY:d.isFlipY,isFloat:!1,G:I,A:function(M){if("RGBA"===d.format)y(M);else{var W=d.width,wa=d.height,Ea=p.instance({isMirrorY:d.isMirrorY,isFloat:!0,width:W,height:wa,isFlipY:d.isFlipY});oa.W();a.viewport(0,0,W,wa);z.set("s14");Ea.u(); M.h(0);na.l(!0,!0);p.I(0);y(Ea);ba.flush();M.remove()}}})}}else"JSON"===d.format?y(p.instance({isFloat:!0,isFlipY:d.isFlipY,width:d.width,height:d.height,array:new Float32Array(d.data)})):y(!1)},Pc:k,o:function(){r&&(Da.W(),p.Bb(),Da.I());p.Sd();R.slice(0).forEach(function(d){d.remove()});R.splice(0);K=!1;t=0;"undefined"!==typeof Aa&&Aa.o();A=null}};return p}(),na=function(){function b(f){var n={V:null,indices:null};n.V=f.createBuffer();f.bindBuffer(f.ARRAY_BUFFER,n.V);f.bufferData(f.ARRAY_BUFFER, new Float32Array([-1,-1,3,-1,-1,3]),f.STATIC_DRAW);n.indices=f.createBuffer();f.bindBuffer(f.ELEMENT_ARRAY_BUFFER,n.indices);f.bufferData(f.ELEMENT_ARRAY_BUFFER,new Uint16Array([0,1,2]),f.STATIC_DRAW);return n}var c=null,e=0,k=!1,l=[],m=-2,u=-2,q={reset:function(){u=m=-2},F:function(){k||(c=b(a),q.la(),k=!0)},instance:function(f){var n=e++,t=f.indices?f.indices.length:0,F="undefined"===typeof f.mode?a.STATIC_DRAW:f.mode,A=a.createBuffer();a.bindBuffer(a.ARRAY_BUFFER,A);a.bufferData(a.ARRAY_BUFFER, f.V instanceof Float32Array?f.V:new Float32Array(f.V),F);m=n;var r=null,H=null,D=null;if(f.indices){r=a.createBuffer();a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,r);var h=null;65536>f.indices.length?(h=Uint16Array,H=a.UNSIGNED_SHORT,D=2):(h=Uint32Array,H=a.UNSIGNED_INT,D=4);h=f.indices instanceof h?f.indices:new h(f.indices);a.bufferData(a.ELEMENT_ARRAY_BUFFER,h,F);u=n}var K={Kc:function(R){m!==n&&(a.bindBuffer(a.ARRAY_BUFFER,A),m=n);R&&va.vb()},Hc:function(){u!==n&&(a.bindBuffer(a.ELEMENT_ARRAY_BUFFER, r),u=n)},bind:function(R){K.Kc(R);K.Hc()},le:function(){a.drawElements(a.TRIANGLES,t,H,0)},me:function(R,X){a.drawElements(a.TRIANGLES,R,H,X*D)},remove:function(){a.deleteBuffer(A);f.indices&&a.deleteBuffer(r);K=null}};l.push(K);return K},la:function(){-1!==m&&(a.bindBuffer(a.ARRAY_BUFFER,c.V),m=-1);-1!==u&&(a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,c.indices),u=-1)},l:function(f,n){f&&na.la();n&&va.va();a.drawElements(a.TRIANGLES,3,a.UNSIGNED_SHORT,0)},Ca:function(f){f=f||a;var n=b(f);f.bindBuffer(f.ARRAY_BUFFER, n.V);f.bindBuffer(f.ELEMENT_ARRAY_BUFFER,n.indices);va.Oa(f);f.clear(f.COLOR_BUFFER_BIT);f.drawElements(f.TRIANGLES,3,f.UNSIGNED_SHORT,0);f.flush();f.bindBuffer(f.ARRAY_BUFFER,null);f.bindBuffer(f.ELEMENT_ARRAY_BUFFER,null);f.deleteBuffer(n.V);f.deleteBuffer(n.indices);q.reset();k&&(q.la(),va.va())},Vb:function(){var f=a,n=c;f.deleteBuffer(n.V);f.deleteBuffer(n.indices)},o:function(){q.Vb();l.forEach(function(f){f.remove()});a.bindBuffer(a.ARRAY_BUFFER,null);a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,null); q.reset();k=!1;l.splice(0);e=0}};return q}(),oa=function(){var b=null,c=null,e=null,k=!1,l=[],m={B:-2,Tb:1},u={Ia:function(){return k},F:function(){if(!k){b=a.createFramebuffer();var q=ba.ba();c=q&&a.DRAW_FRAMEBUFFER?a.DRAW_FRAMEBUFFER:a.FRAMEBUFFER;e=q&&a.READ_FRAMEBUFFER?a.READ_FRAMEBUFFER:a.FRAMEBUFFER;k=!0}},we:function(){return c},dd:function(){return e},ab:function(){return a.FRAMEBUFFER},Be:function(){return m},pe:function(){return b},instance:function(q){void 0===q.ac&&(q.ac=!1);var f=q.Qa? q.Qa:null,n=q.width,t=void 0!==q.height?q.height:q.width,F=b,A=null,r=!1,H=!1,D=0;f&&(n=n?n:f.D(),t=t?t:f.S());var h={tc:function(){r||(F=a.createFramebuffer(),r=!0,D=m.Tb++)},Fc:function(){h.tc();h.u();A=a.createRenderbuffer();a.bindRenderbuffer(a.RENDERBUFFER,A);a.renderbufferStorage(a.RENDERBUFFER,a.DEPTH_COMPONENT16,n,t);a.framebufferRenderbuffer(c,a.DEPTH_ATTACHMENT,a.RENDERBUFFER,A);a.clearDepth(1)},bind:function(K,R){D!==m.B&&(a.bindFramebuffer(c,F),m.B=D);f&&f.u();R&&