scratch-render
Version:
WebGL Renderer for Scratch 3.0
7 lines • 565 kB
JavaScript
!function(A){function B(Q){if(g[Q])return g[Q].exports;var E=g[Q]={i:Q,l:!1,exports:{}};return A[Q].call(E.exports,E,E.exports,B),E.l=!0,E.exports}var g={};return B.m=A,B.c=g,B.i=function(A){return A},B.d=function(A,g,Q){B.o(A,g)||Object.defineProperty(A,g,{configurable:!1,enumerable:!0,get:Q})},B.n=function(A){var g=A&&A.__esModule?function(){return A.default}:function(){return A};return B.d(g,"a",g),g},B.o=function(A,B){return Object.prototype.hasOwnProperty.call(A,B)},B.p="",B(B.s=330)}([function(A,B,g){var Q=g(2),E=g(24),c=g(12),C=g(13),w=g(25),t="prototype",i=function(A,B,g){var I,e,n,Y,F=A&i.F,D=A&i.G,r=A&i.S,o=A&i.P,M=A&i.B,s=D?Q:r?Q[B]||(Q[B]={}):(Q[B]||{})[t],h=D?E:E[B]||(E[B]={}),G=h[t]||(h[t]={});D&&(g=B);for(I in g)e=!F&&s&&void 0!==s[I],n=(e?s:g)[I],Y=M&&e?w(n,Q):o&&"function"==typeof n?w(Function.call,n):n,s&&C(s,I,n,A&i.U),h[I]!=n&&c(h,I,Y),o&&G[I]!=n&&(G[I]=n)};Q.core=E,i.F=1,i.G=2,i.S=4,i.P=8,i.B=16,i.W=32,i.U=64,i.R=128,A.exports=i},function(A,B,g){var Q=g(4);A.exports=function(A){if(!Q(A))throw TypeError(A+" is not an object!");return A}},function(A,B){var g=A.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=g)},function(A,B){A.exports=function(A){try{return!!A()}catch(A){return!0}}},function(A,B){A.exports=function(A){return"object"==typeof A?null!==A:"function"==typeof A}},function(A,B,g){var Q=g(60)("wks"),E=g(39),c=g(2).Symbol,C="function"==typeof c,w=A.exports=function(A){return Q[A]||(Q[A]=C&&c[A]||(C?c:E)("Symbol."+A))};w.store=Q},function(A,B,g){A.exports=!g(3)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(A,B,g){var Q=g(1),E=g(98),c=g(23),C=Object.defineProperty;B.f=g(6)?Object.defineProperty:function(A,B,g){if(Q(A),B=c(B,!0),Q(g),E)try{return C(A,B,g)}catch(A){}if("get"in g||"set"in g)throw TypeError("Accessors not supported!");return"value"in g&&(A[B]=g.value),A}},function(A,B,g){var Q=g(30),E=Math.min;A.exports=function(A){return A>0?E(Q(A),9007199254740991):0}},function(A,B,g){var Q=g(19);A.exports=function(A){return Object(Q(A))}},function(A,B){var g={}.hasOwnProperty;A.exports=function(A,B){return g.call(A,B)}},function(A,B){A.exports=function(A){if("function"!=typeof A)throw TypeError(A+" is not a function!");return A}},function(A,B,g){var Q=g(7),E=g(29);A.exports=g(6)?function(A,B,g){return Q.f(A,B,E(1,g))}:function(A,B,g){return A[B]=g,A}},function(A,B,g){var Q=g(2),E=g(12),c=g(10),C=g(39)("src"),w="toString",t=Function[w],i=(""+t).split(w);g(24).inspectSource=function(A){return t.call(A)},(A.exports=function(A,B,g,w){var t="function"==typeof g;t&&(c(g,"name")||E(g,"name",B)),A[B]!==g&&(t&&(c(g,C)||E(g,C,A[B]?""+A[B]:i.join(String(B)))),A===Q?A[B]=g:w?A[B]?A[B]=g:E(A,B,g):(delete A[B],E(A,B,g)))})(Function.prototype,w,function(){return"function"==typeof this&&this[C]||t.call(this)})},function(A,B,g){var Q=g(0),E=g(3),c=g(19),C=/"/g,w=function(A,B,g,Q){var E=String(c(A)),w="<"+B;return""!==g&&(w+=" "+g+'="'+String(Q).replace(C,""")+'"'),w+">"+E+"</"+B+">"};A.exports=function(A,B){var g={};g[A]=B(w),Q(Q.P+Q.F*E(function(){var B=""[A]('"');return B!==B.toLowerCase()||B.split('"').length>3}),"String",g)}},function(A,B,g){var Q=g(47),E=g(19);A.exports=function(A){return Q(E(A))}},function(A,B,g){var Q=g(48),E=g(29),c=g(15),C=g(23),w=g(10),t=g(98),i=Object.getOwnPropertyDescriptor;B.f=g(6)?i:function(A,B){if(A=c(A),B=C(B,!0),t)try{return i(A,B)}catch(A){}if(w(A,B))return E(!Q.f.call(A,B),A[B])}},function(A,B,g){var Q=g(10),E=g(9),c=g(77)("IE_PROTO"),C=Object.prototype;A.exports=Object.getPrototypeOf||function(A){return A=E(A),Q(A,c)?A[c]:"function"==typeof A.constructor&&A instanceof A.constructor?A.constructor.prototype:A instanceof Object?C:null}},function(A,B){var g={}.toString;A.exports=function(A){return g.call(A).slice(8,-1)}},function(A,B){A.exports=function(A){if(void 0==A)throw TypeError("Can't call method on "+A);return A}},function(A,B,g){var Q=g(3);A.exports=function(A,B){return!!A&&Q(function(){B?A.call(null,function(){},1):A.call(null)})}},function(A,B,g){var Q=g(25),E=g(47),c=g(9),C=g(8),w=g(131);A.exports=function(A,B){var g=1==A,t=2==A,i=3==A,I=4==A,e=6==A,n=5==A||e,Y=B||w;return function(B,w,F){for(var D,r,o=c(B),M=E(o),s=Q(w,F,3),h=C(M.length),G=0,U=g?Y(B,h):t?Y(B,0):void 0;h>G;G++)if((n||G in M)&&(D=M[G],r=s(D,G,o),A))if(g)U[G]=r;else if(r)switch(A){case 3:return!0;case 5:return D;case 6:return G;case 2:U.push(D)}else if(I)return!1;return e?-1:i||I?I:U}}},function(A,B,g){var Q=g(0),E=g(24),c=g(3);A.exports=function(A,B){var g=(E.Object||{})[A]||Object[A],C={};C[A]=B(g),Q(Q.S+Q.F*c(function(){g(1)}),"Object",C)}},function(A,B,g){var Q=g(4);A.exports=function(A,B){if(!Q(A))return A;var g,E;if(B&&"function"==typeof(g=A.toString)&&!Q(E=g.call(A)))return E;if("function"==typeof(g=A.valueOf)&&!Q(E=g.call(A)))return E;if(!B&&"function"==typeof(g=A.toString)&&!Q(E=g.call(A)))return E;throw TypeError("Can't convert object to primitive value")}},function(A,B){var g=A.exports={version:"2.4.0"};"number"==typeof __e&&(__e=g)},function(A,B,g){var Q=g(11);A.exports=function(A,B,g){if(Q(A),void 0===B)return A;switch(g){case 1:return function(g){return A.call(B,g)};case 2:return function(g,Q){return A.call(B,g,Q)};case 3:return function(g,Q,E){return A.call(B,g,Q,E)}}return function(){return A.apply(B,arguments)}}},function(A,B,g){var Q=g(114),E=g(0),c=g(60)("metadata"),C=c.store||(c.store=new(g(117))),w=function(A,B,g){var E=C.get(A);if(!E){if(!g)return;C.set(A,E=new Q)}var c=E.get(B);if(!c){if(!g)return;E.set(B,c=new Q)}return c},t=function(A,B,g){var Q=w(B,g,!1);return void 0!==Q&&Q.has(A)},i=function(A,B,g){var Q=w(B,g,!1);return void 0===Q?void 0:Q.get(A)},I=function(A,B,g,Q){w(g,Q,!0).set(A,B)},e=function(A,B){var g=w(A,B,!1),Q=[];return g&&g.forEach(function(A,B){Q.push(B)}),Q},n=function(A){return void 0===A||"symbol"==typeof A?A:String(A)},Y=function(A){E(E.S,"Reflect",A)};A.exports={store:C,map:w,has:t,get:i,set:I,keys:e,key:n,exp:Y}},function(A,B,g){"use strict";if(g(6)){var Q=g(32),E=g(2),c=g(3),C=g(0),w=g(61),t=g(84),i=g(25),I=g(31),e=g(29),n=g(12),Y=g(36),F=g(30),D=g(8),r=g(38),o=g(23),M=g(10),s=g(111),h=g(46),G=g(4),U=g(9),a=g(69),N=g(33),u=g(17),H=g(34).f,J=g(86),R=g(39),y=g(5),f=g(21),x=g(51),l=g(78),k=g(87),L=g(43),S=g(57),j=g(37),P=g(62),z=g(91),m=g(7),v=g(16),T=m.f,W=v.f,d=E.RangeError,b=E.TypeError,O=E.Uint8Array,K="ArrayBuffer",p="Shared"+K,V="BYTES_PER_ELEMENT",X="prototype",Z=Array[X],_=t.ArrayBuffer,q=t.DataView,$=f(0),AA=f(2),BA=f(3),gA=f(4),QA=f(5),EA=f(6),cA=x(!0),CA=x(!1),wA=k.values,tA=k.keys,iA=k.entries,IA=Z.lastIndexOf,eA=Z.reduce,nA=Z.reduceRight,YA=Z.join,FA=Z.sort,DA=Z.slice,rA=Z.toString,oA=Z.toLocaleString,MA=y("iterator"),sA=y("toStringTag"),hA=R("typed_constructor"),GA=R("def_constructor"),UA=w.CONSTR,aA=w.TYPED,NA=w.VIEW,uA="Wrong length!",HA=f(1,function(A,B){return lA(l(A,A[GA]),B)}),JA=c(function(){return 1===new O(new Uint16Array([1]).buffer)[0]}),RA=!!O&&!!O[X].set&&c(function(){new O(1).set({})}),yA=function(A,B){if(void 0===A)throw b(uA);var g=+A,Q=D(A);if(B&&!s(g,Q))throw d(uA);return Q},fA=function(A,B){var g=F(A);if(g<0||g%B)throw d("Wrong offset!");return g},xA=function(A){if(G(A)&&aA in A)return A;throw b(A+" is not a typed array!")},lA=function(A,B){if(!(G(A)&&hA in A))throw b("It is not a typed array constructor!");return new A(B)},kA=function(A,B){return LA(l(A,A[GA]),B)},LA=function(A,B){for(var g=0,Q=B.length,E=lA(A,Q);Q>g;)E[g]=B[g++];return E},SA=function(A,B,g){T(A,B,{get:function(){return this._d[g]}})},jA=function(A){var B,g,Q,E,c,C,w=U(A),t=arguments.length,I=t>1?arguments[1]:void 0,e=void 0!==I,n=J(w);if(void 0!=n&&!a(n)){for(C=n.call(w),Q=[],B=0;!(c=C.next()).done;B++)Q.push(c.value);w=Q}for(e&&t>2&&(I=i(I,arguments[2],2)),B=0,g=D(w.length),E=lA(this,g);g>B;B++)E[B]=e?I(w[B],B):w[B];return E},PA=function(){for(var A=0,B=arguments.length,g=lA(this,B);B>A;)g[A]=arguments[A++];return g},zA=!!O&&c(function(){oA.call(new O(1))}),mA=function(){return oA.apply(zA?DA.call(xA(this)):xA(this),arguments)},vA={copyWithin:function(A,B){return z.call(xA(this),A,B,arguments.length>2?arguments[2]:void 0)},every:function(A){return gA(xA(this),A,arguments.length>1?arguments[1]:void 0)},fill:function(A){return P.apply(xA(this),arguments)},filter:function(A){return kA(this,AA(xA(this),A,arguments.length>1?arguments[1]:void 0))},find:function(A){return QA(xA(this),A,arguments.length>1?arguments[1]:void 0)},findIndex:function(A){return EA(xA(this),A,arguments.length>1?arguments[1]:void 0)},forEach:function(A){$(xA(this),A,arguments.length>1?arguments[1]:void 0)},indexOf:function(A){return CA(xA(this),A,arguments.length>1?arguments[1]:void 0)},includes:function(A){return cA(xA(this),A,arguments.length>1?arguments[1]:void 0)},join:function(A){return YA.apply(xA(this),arguments)},lastIndexOf:function(A){return IA.apply(xA(this),arguments)},map:function(A){return HA(xA(this),A,arguments.length>1?arguments[1]:void 0)},reduce:function(A){return eA.apply(xA(this),arguments)},reduceRight:function(A){return nA.apply(xA(this),arguments)},reverse:function(){for(var A,B=this,g=xA(B).length,Q=Math.floor(g/2),E=0;E<Q;)A=B[E],B[E++]=B[--g],B[g]=A;return B},some:function(A){return BA(xA(this),A,arguments.length>1?arguments[1]:void 0)},sort:function(A){return FA.call(xA(this),A)},subarray:function(A,B){var g=xA(this),Q=g.length,E=r(A,Q);return new(l(g,g[GA]))(g.buffer,g.byteOffset+E*g.BYTES_PER_ELEMENT,D((void 0===B?Q:r(B,Q))-E))}},TA=function(A,B){return kA(this,DA.call(xA(this),A,B))},WA=function(A){xA(this);var B=fA(arguments[1],1),g=this.length,Q=U(A),E=D(Q.length),c=0;if(E+B>g)throw d(uA);for(;c<E;)this[B+c]=Q[c++]},dA={entries:function(){return iA.call(xA(this))},keys:function(){return tA.call(xA(this))},values:function(){return wA.call(xA(this))}},bA=function(A,B){return G(A)&&A[aA]&&"symbol"!=typeof B&&B in A&&String(+B)==String(B)},OA=function(A,B){return bA(A,B=o(B,!0))?e(2,A[B]):W(A,B)},KA=function(A,B,g){return!(bA(A,B=o(B,!0))&&G(g)&&M(g,"value"))||M(g,"get")||M(g,"set")||g.configurable||M(g,"writable")&&!g.writable||M(g,"enumerable")&&!g.enumerable?T(A,B,g):(A[B]=g.value,A)};UA||(v.f=OA,m.f=KA),C(C.S+C.F*!UA,"Object",{getOwnPropertyDescriptor:OA,defineProperty:KA}),c(function(){rA.call({})})&&(rA=oA=function(){return YA.call(this)});var pA=Y({},vA);Y(pA,dA),n(pA,MA,dA.values),Y(pA,{slice:TA,set:WA,constructor:function(){},toString:rA,toLocaleString:mA}),SA(pA,"buffer","b"),SA(pA,"byteOffset","o"),SA(pA,"byteLength","l"),SA(pA,"length","e"),T(pA,sA,{get:function(){return this[aA]}}),A.exports=function(A,B,g,t){t=!!t;var i=A+(t?"Clamped":"")+"Array",e="Uint8Array"!=i,Y="get"+A,F="set"+A,r=E[i],o=r||{},M=r&&u(r),s=!r||!w.ABV,U={},a=r&&r[X],J=function(A,g){var Q=A._d;return Q.v[Y](g*B+Q.o,JA)},R=function(A,g,Q){var E=A._d;t&&(Q=(Q=Math.round(Q))<0?0:Q>255?255:255&Q),E.v[F](g*B+E.o,Q,JA)},y=function(A,B){T(A,B,{get:function(){return J(this,B)},set:function(A){return R(this,B,A)},enumerable:!0})};s?(r=g(function(A,g,Q,E){I(A,r,i,"_d");var c,C,w,t,e=0,Y=0;if(G(g)){if(!(g instanceof _||(t=h(g))==K||t==p))return aA in g?LA(r,g):jA.call(r,g);c=g,Y=fA(Q,B);var F=g.byteLength;if(void 0===E){if(F%B)throw d(uA);if(C=F-Y,C<0)throw d(uA)}else if(C=D(E)*B,C+Y>F)throw d(uA);w=C/B}else w=yA(g,!0),C=w*B,c=new _(C);for(n(A,"_d",{b:c,o:Y,l:C,e:w,v:new q(c)});e<w;)y(A,e++)}),a=r[X]=N(pA),n(a,"constructor",r)):S(function(A){new r(null),new r(A)},!0)||(r=g(function(A,g,Q,E){I(A,r,i);var c;return G(g)?g instanceof _||(c=h(g))==K||c==p?void 0!==E?new o(g,fA(Q,B),E):void 0!==Q?new o(g,fA(Q,B)):new o(g):aA in g?LA(r,g):jA.call(r,g):new o(yA(g,e))}),$(M!==Function.prototype?H(o).concat(H(M)):H(o),function(A){A in r||n(r,A,o[A])}),r[X]=a,Q||(a.constructor=r));var f=a[MA],x=!!f&&("values"==f.name||void 0==f.name),l=dA.values;n(r,hA,!0),n(a,aA,i),n(a,NA,!0),n(a,GA,r),(t?new r(1)[sA]==i:sA in a)||T(a,sA,{get:function(){return i}}),U[i]=r,C(C.G+C.W+C.F*(r!=o),U),C(C.S,i,{BYTES_PER_ELEMENT:B,from:jA,of:PA}),V in a||n(a,V,B),C(C.P,i,vA),j(i),C(C.P+C.F*RA,i,{set:WA}),C(C.P+C.F*!x,i,dA),C(C.P+C.F*(a.toString!=rA),i,{toString:rA}),C(C.P+C.F*c(function(){new r(1).slice()}),i,{slice:TA}),C(C.P+C.F*(c(function(){return[1,2].toLocaleString()!=new r([1,2]).toLocaleString()})||!c(function(){a.toLocaleString.call([1,2])})),i,{toLocaleString:mA}),L[i]=x?f:l,Q||x||n(a,MA,l)}}else A.exports=function(){}},function(A,B,g){var Q=g(39)("meta"),E=g(4),c=g(10),C=g(7).f,w=0,t=Object.isExtensible||function(){return!0},i=!g(3)(function(){return t(Object.preventExtensions({}))}),I=function(A){C(A,Q,{value:{i:"O"+ ++w,w:{}}})},e=function(A,B){if(!E(A))return"symbol"==typeof A?A:("string"==typeof A?"S":"P")+A;if(!c(A,Q)){if(!t(A))return"F";if(!B)return"E";I(A)}return A[Q].i},n=function(A,B){if(!c(A,Q)){if(!t(A))return!0;if(!B)return!1;I(A)}return A[Q].w},Y=function(A){return i&&F.NEED&&t(A)&&!c(A,Q)&&I(A),A},F=A.exports={KEY:Q,NEED:!1,fastKey:e,getWeak:n,onFreeze:Y}},function(A,B){A.exports=function(A,B){return{enumerable:!(1&A),configurable:!(2&A),writable:!(4&A),value:B}}},function(A,B){var g=Math.ceil,Q=Math.floor;A.exports=function(A){return isNaN(A=+A)?0:(A>0?Q:g)(A)}},function(A,B){A.exports=function(A,B,g,Q){if(!(A instanceof B)||void 0!==Q&&Q in A)throw TypeError(g+": incorrect invocation!");return A}},function(A,B){A.exports=!1},function(A,B,g){var Q=g(1),E=g(104),c=g(65),C=g(77)("IE_PROTO"),w=function(){},t="prototype",i=function(){var A,B=g(64)("iframe"),Q=c.length,E="<",C=">";for(B.style.display="none",g(67).appendChild(B),B.src="javascript:",A=B.contentWindow.document,A.open(),A.write(E+"script"+C+"document.F=Object"+E+"/script"+C),A.close(),i=A.F;Q--;)delete i[t][c[Q]];return i()};A.exports=Object.create||function(A,B){var g;return null!==A?(w[t]=Q(A),g=new w,w[t]=null,g[C]=A):g=i(),void 0===B?g:E(g,B)}},function(A,B,g){var Q=g(106),E=g(65).concat("length","prototype");B.f=Object.getOwnPropertyNames||function(A){return Q(A,E)}},function(A,B,g){var Q=g(106),E=g(65);A.exports=Object.keys||function(A){return Q(A,E)}},function(A,B,g){var Q=g(13);A.exports=function(A,B,g){for(var E in B)Q(A,E,B[E],g);return A}},function(A,B,g){"use strict";var Q=g(2),E=g(7),c=g(6),C=g(5)("species");A.exports=function(A){var B=Q[A];c&&B&&!B[C]&&E.f(B,C,{configurable:!0,get:function(){return this}})}},function(A,B,g){var Q=g(30),E=Math.max,c=Math.min;A.exports=function(A,B){return A=Q(A),A<0?E(A+B,0):c(A,B)}},function(A,B){var g=0,Q=Math.random();A.exports=function(A){return"Symbol(".concat(void 0===A?"":A,")_",(++g+Q).toString(36))}},function(A,B,g){/*!
* @license twgl.js 3.0.2 Copyright (c) 2015, Gregg Tavares All Rights Reserved.
* Available via the MIT license.
* see: http://github.com/greggman/twgl.js for details
*/
!function(B,g){A.exports=g()}(this,function(){return function(A){function B(Q){if(g[Q])return g[Q].exports;var E=g[Q]={exports:{},id:Q,loaded:!1};return A[Q].call(E.exports,E,E.exports,B),E.loaded=!0,E.exports}var g={};return B.m=A,B.c=g,B.p="",B(0)}([function(A,B,g){var Q,E;Q=[g(1),g(10),g(11),g(12)],E=function(A,B,g,Q){"use strict";return A.m4=B,A.v3=g,A.primitives=Q,A}.apply(B,Q),!(void 0!==E&&(A.exports=E))},function(A,B,g){var Q,E;Q=[g(2),g(5),g(7),g(6),g(8),g(3),g(9),g(4)],E=function(A,B,g,Q,E,c,C,w){"use strict";function t(B){w.copyExistingProperties(B,o),A.setDefaults_(B),E.setDefaults_(B)}function i(A){if(A&&o.enableVertexArrayObjects&&w.isWebGL1(A)){var B=A.getExtension("OES_vertex_array_object");B&&(A.createVertexArray=function(){return B.createVertexArrayOES()},A.deleteVertexArray=function(A){B.deleteVertexArrayOES(A)},A.isVertexArray=function(A){return B.isVertexArrayOES(A)},A.bindVertexArray=function(A){B.bindVertexArrayOES(A)},A.VERTEX_ARRAY_BINDING=B.VERTEX_ARRAY_BINDING_OES)}}function I(A,B){for(var g=["webgl","experimental-webgl"],Q=null,E=0;E<g.length&&!(Q=A.getContext(g[E],B));++E);return Q}function e(A,B){var g=I(A,B);return i(g),g}function n(A,B){for(var g=["webgl2","webgl","experimental-webgl"],Q=null,E=0;E<g.length&&!(Q=A.getContext(g[E],B));++E);return Q}function Y(A,B){var g=n(A,B);return i(g),g}function F(A,B){B=B||1,B=Math.max(1,B);var g=A.clientWidth*B|0,Q=A.clientHeight*B|0;return(A.width!==g||A.height!==Q)&&(A.width=g,A.height=Q,!0)}function D(A){return"_"!==A[A.length-1]}function r(A,B){return Object.keys(A).filter(D).forEach(function(g){B[g]=A[g]}),B}var o={enableVertexArrayObjects:!0},M={getContext:Y,getWebGLContext:e,isWebGL1:w.isWebGL1,isWebGL2:w.isWebGL2,resizeCanvasToDisplaySize:F,setDefaults:t},s={attributes:A,draw:B,framebuffers:g,programs:Q,textures:E,typedArrays:c,vertexArrays:C};return Object.keys(s).forEach(function(A){var B=s[A];r(B,M),M[A]=r(B,{})}),M}.apply(B,Q),!(void 0!==E&&(A.exports=E))},function(A,B,g){var Q,E;Q=[g(3),g(4)],E=function(A,B){"use strict";function g(A){o.attribPrefix=A}function Q(A){B.copyExistingProperties(A,o)}function E(A,B,g,Q,E){A.bindBuffer(B,g),A.bufferData(B,Q,E||A.STATIC_DRAW)}function c(A,B,g,Q){if(B instanceof WebGLBuffer)return B;g=g||A.ARRAY_BUFFER;var c=A.createBuffer();return E(A,g,c,B,Q),c}function C(A){return"indices"===A}function w(A){return A instanceof Int8Array||A instanceof Uint8Array}function t(A){return A.length?A:A.data}function i(A,B){var g;if(g=M.test(A)?2:s.test(A)?4:3,B%g>0)throw"Can not guess numComponents for attribute '"+A+"'. Tried "+g+" but "+B+" values is not evenly divisible by "+g+". You should specify it.";return g}function I(A,B){return A.numComponents||A.size||i(B,t(A).length)}function e(B,g){if(A.isArrayBuffer(B))return B;if(A.isArrayBuffer(B.data))return B.data;Array.isArray(B)&&(B={data:B});var Q=B.type;return Q||(Q=C(g)?Uint16Array:Float32Array),new Q(B.data)}function n(B,g){var Q={};return Object.keys(g).forEach(function(E){if(!C(E)){var t=g[E],i=t.attrib||t.name||t.attribName||o.attribPrefix+E,n=e(t,E);Q[i]={buffer:c(B,n,void 0,t.drawType),numComponents:I(t,E),type:A.getGLTypeForTypedArray(n),normalize:void 0!==t.normalize?t.normalize:w(n),stride:t.stride||0,offset:t.offset||0,drawType:t.drawType}}}),Q}function Y(A,B,g,Q){g=e(g),void 0!==Q?(A.bindBuffer(A.ARRAY_BUFFER,B.buffer),A.bufferSubData(A.ARRAY_BUFFER,Q,g)):E(A,A.ARRAY_BUFFER,B.buffer,g,B.drawType)}function F(B,g){var Q={attribs:n(B,g)},E=g.indices;return E?(E=e(E,"indices"),Q.indices=c(B,E,B.ELEMENT_ARRAY_BUFFER),Q.numElements=E.length,Q.elementType=A.getGLTypeForTypedArray(E)):Q.numElements=h(g),Q}function D(A,B,g){var Q="indices"===g?A.ELEMENT_ARRAY_BUFFER:A.ARRAY_BUFFER,E=e(B,g);return c(A,E,Q)}function r(B,g){var Q={};return Object.keys(g).forEach(function(A){Q[A]=D(B,g[A],A)}),g.indices?(Q.numElements=g.indices.length,Q.elementType=A.getGLTypeForTypedArray(e(g.indices),"indices")):Q.numElements=h(g),Q}var o={attribPrefix:""},M=/coord|texture/i,s=/color|colour/i,h=function(){var A=["position","positions","a_position"];return function(B){for(var g,Q=0;Q<A.length&&(g=A[Q],!(g in B));++Q);Q===A.length&&(g=Object.keys(B)[0]);var E=B[g],c=t(E).length,C=I(E,g),w=c/C;if(c%C>0)throw"numComponents "+C+" not correct for length "+c;return w}}();return{createAttribsFromArrays:n,createBuffersFromArrays:r,createBufferFromArray:D,createBufferFromTypedArray:c,createBufferInfoFromArrays:F,setAttribInfoBufferFromArray:Y,setAttributePrefix:g,setDefaults_:Q,getNumComponents_:I,getArray_:t}}.apply(B,Q),!(void 0!==E&&(A.exports=E))},function(A,B,g){var Q,E;Q=[],E=function(){"use strict";function A(A){if(A instanceof Int8Array)return Q;if(A instanceof Uint8Array)return E;if(A instanceof Uint8ClampedArray)return E;if(A instanceof Int16Array)return c;if(A instanceof Uint16Array)return C;if(A instanceof Int32Array)return w;if(A instanceof Uint32Array)return t;if(A instanceof Float32Array)return i;throw"unsupported typed array type"}function B(A){var B=s[A];if(!B)throw"unknown gl type";return B}function g(A){return A&&A.buffer&&A.buffer instanceof ArrayBuffer}var Q=5120,E=5121,c=5122,C=5123,w=5124,t=5125,i=5126,I=32819,e=32820,n=33635,Y=5131,F=33640,D=35899,r=35902,o=36269,M=34042,s={},h=s;return h[Q]=Int8Array,h[E]=Uint8Array,h[c]=Int16Array,h[C]=Uint16Array,h[w]=Int32Array,h[t]=Uint32Array,h[i]=Float32Array,h[I]=Uint16Array,h[e]=Uint16Array,h[n]=Uint16Array,h[Y]=Uint16Array,h[F]=Uint32Array,h[D]=Uint32Array,h[r]=Uint32Array,h[o]=Uint32Array,h[M]=Uint32Array,{getGLTypeForTypedArray:A,getTypedArrayTypeForGLType:B,isArrayBuffer:g}}.apply(B,Q),!(void 0!==E&&(A.exports=E))},function(A,B,g){var Q,E;Q=[],E=function(){"use strict";function A(A){var B={};return Object.keys(A).forEach(function(g){B[g]=A[g]}),B}function B(A,B,g){A.forEach(function(A){var Q=B[A];void 0!==Q&&(g[A]=Q)})}function g(A,B){Object.keys(B).forEach(function(g){B.hasOwnProperty(g)&&A.hasOwnProperty(g)&&(B[g]=A[g])})}function Q(A){return!!A.texStorage2D}function E(A){return!A.texStorage2D}var c=window.console&&window.console.error&&"function"==typeof window.console.error?window.console.error.bind(window.console):function(){},C=window.console&&window.console.warn&&"function"==typeof window.console.warn?window.console.warn.bind(window.console):function(){};return{copyExistingProperties:g,copyNamedProperties:B,shallowCopy:A,isWebGL1:E,isWebGL2:Q,error:c,warn:C}}.apply(B,Q),!(void 0!==E&&(A.exports=E))},function(A,B,g){var Q,E;Q=[g(6)],E=function(A){"use strict";function B(A,B,g,Q,E){g=void 0===g?A.TRIANGLES:g;var c=B.indices,C=B.elementType,w=void 0===Q?B.numElements:Q;E=void 0===E?0:E,C||c?A.drawElements(g,w,void 0===C?A.UNSIGNED_SHORT:B.elementType,E):A.drawArrays(g,E,w)}function g(g,Q){var E=null,c=null;Q.forEach(function(Q){if(Q.active!==!1){var C=Q.programInfo,w=Q.vertexArrayInfo||Q.bufferInfo,t=!1,i=void 0===Q.type?g.TRIANGLES:Q.type;C!==E&&(E=C,g.useProgram(C.program),t=!0),(t||w!==c)&&(c&&c.vertexArrayObject&&!w.vertexArrayObject&&g.bindVertexArray(null),c=w,A.setBuffersAndAttributes(g,C,w)),A.setUniforms(C,Q.uniforms),B(g,w,i,Q.count,Q.offset)}}),c.vertexArrayObject&&g.bindVertexArray(null)}return{drawBufferInfo:B,drawObjectList:g}}.apply(B,Q),!(void 0!==E&&(A.exports=E))},function(A,B,g){var Q,E;Q=[g(4)],E=function(A){"use strict";function B(A,B){return dA[B].bindPoint}function g(A,B){return function(g){A.uniform1f(B,g)}}function Q(A,B){return function(g){A.uniform1fv(B,g)}}function E(A,B){return function(g){A.uniform2fv(B,g)}}function c(A,B){return function(g){A.uniform3fv(B,g)}}function C(A,B){return function(g){A.uniform4fv(B,g)}}function w(A,B){return function(g){A.uniform1i(B,g)}}function t(A,B){return function(g){A.uniform1iv(B,g)}}function i(A,B){return function(g){A.uniform2iv(B,g)}}function I(A,B){return function(g){A.uniform3iv(B,g)}}function e(A,B){return function(g){A.uniform4iv(B,g)}}function n(A,B){return function(g){A.uniform1ui(B,g)}}function Y(A,B){return function(g){A.uniform1uiv(B,g)}}function F(A,B){return function(g){A.uniform2uiv(B,g)}}function D(A,B){return function(g){A.uniform3uiv(B,g)}}function r(A,B){return function(g){A.uniform4uiv(B,g)}}function o(A,B){return function(g){A.uniformMatrix2fv(B,!1,g)}}function M(A,B){return function(g){A.uniformMatrix3fv(B,!1,g)}}function s(A,B){return function(g){A.uniformMatrix4fv(B,!1,g)}}function h(A,B){return function(g){A.uniformMatrix2x3fv(B,!1,g)}}function G(A,B){return function(g){A.uniformMatrix3x2fv(B,!1,g)}}function U(A,B){return function(g){A.uniformMatrix2x4fv(B,!1,g)}}function a(A,B){return function(g){A.uniformMatrix4x2fv(B,!1,g)}}function N(A,B){return function(g){A.uniformMatrix3x4fv(B,!1,g)}}function u(A,B){return function(g){A.uniformMatrix4x3fv(B,!1,g)}}function H(g,Q,E,c){var C=B(g,Q);return A.isWebGL2(g)?function(A){var B=void 0,Q=void 0;A instanceof WebGLTexture?(B=A,Q=null):(B=A.texture,Q=A.sampler),g.uniform1i(c,E),g.activeTexture(g.TEXTURE0+E),g.bindTexture(C,B),g.bindSampler(E,Q)}:function(A){g.uniform1i(c,E),g.activeTexture(g.TEXTURE0+E),g.bindTexture(C,A)}}function J(g,Q,E,c,C){for(var w=B(g,Q),t=new Int32Array(C),i=0;i<C;++i)t[i]=E+i;return A.isWebGL2(g)?function(A){g.uniform1iv(c,t),A.forEach(function(A,B){g.activeTexture(g.TEXTURE0+t[B]);var Q=void 0,c=void 0;A instanceof WebGLTexture?(Q=A,c=null):(Q=A.texture,c=A.sampler),g.bindSampler(E,c),g.bindTexture(w,Q)})}:function(A){g.uniform1iv(c,t),A.forEach(function(A,B){g.activeTexture(g.TEXTURE0+t[B]),g.bindTexture(w,A)})}}function R(A,B){return function(g){A.bindBuffer(A.ARRAY_BUFFER,g.buffer),A.enableVertexAttribArray(B),A.vertexAttribPointer(B,g.numComponents||g.size,g.type||A.FLOAT,g.normalize||!1,g.stride||0,g.offset||0)}}function y(A,B){return function(g){A.bindBuffer(A.ARRAY_BUFFER,g.buffer),A.enableVertexAttribArray(B),A.vertexAttribIPointer(B,g.numComponents||g.size,g.type||A.INT,g.stride||0,g.offset||0)}}function f(A,B,g){var Q=g.size,E=g.count;return function(g){A.bindBuffer(A.ARRAY_BUFFER,g.buffer);for(var c=g.size||g.numComponents||Q,C=c/E,w=g.type||A.FLOAT,t=dA[w],i=t.size*c,I=g.normalize||!1,e=g.offset||0,n=i/E,Y=0;Y<E;++Y)A.enableVertexAttribArray(B+Y),A.vertexAttribPointer(B+Y,C,w,I,i,e+n*Y)}}function x(A,B){return B=B||0,++B,A.split("\n").map(function(A,g){return g+B+": "+A}).join("\n")}function l(A,B,g,Q){var E=Q||_,c=A.createShader(g),C=0;OA.test(B)&&(C=1,B=B.replace(OA,"")),A.shaderSource(c,B),A.compileShader(c);var w=A.getShaderParameter(c,A.COMPILE_STATUS);if(!w){var t=A.getShaderInfoLog(c);return E(x(B,C)+"\n*** Error compiling shader: "+t),A.deleteShader(c),null}return c}function k(A,B,g){if("function"==typeof B&&(g=B,B=void 0),"function"==typeof A)g=A,A=void 0;else if(A&&!Array.isArray(A)){if(A.errorCallback)return A;var Q=A;g=Q.errorCallback,A=Q.attribLocations}var E={errorCallback:g||_};if(A){var c={};Array.isArray(A)?A.forEach(function(A,g){c[A]=B?B[g]:g}):c=A,E.attribLocations=c}return E}function L(A,B,g,Q,E){var c=k(g,Q,E),C=A.createProgram();B.forEach(function(B){A.attachShader(C,B)}),c.attribLocations&&Object.keys(c.attribLocations).forEach(function(B){A.bindAttribLocation(C,c.attribLocations[B],B)}),A.linkProgram(C);var w=A.getProgramParameter(C,A.LINK_STATUS);if(!w){var t=A.getProgramInfoLog(C);return c.errorCallback("Error in program linking:"+t),A.deleteProgram(C),null}return C}function S(A,B,g,Q){var E,c="",C=document.getElementById(B);if(!C)throw"*** Error: unknown script element"+B;if(c=C.text,!g)if("x-shader/x-vertex"===C.type)E=A.VERTEX_SHADER;else if("x-shader/x-fragment"===C.type)E=A.FRAGMENT_SHADER;else if(E!==A.VERTEX_SHADER&&E!==A.FRAGMENT_SHADER)throw"*** Error: unknown shader type";return l(A,c,g?g:E,Q)}function j(A,B,g,Q,E){for(var c=k(g,Q,E),C=[],w=0;w<B.length;++w){var t=S(A,B[w],A[KA[w]],c.errorCallback);if(!t)return null;C.push(t)}return L(A,C,c)}function P(A,B,g,Q,E){for(var c=k(g,Q,E),C=[],w=0;w<B.length;++w){var t=l(A,B[w],A[KA[w]],c.errorCallback);if(!t)return null;C.push(t)}return L(A,C,c)}function z(A,B){function g(B,g){var E=A.getUniformLocation(B,g.name),c=g.size>1&&"[0]"===g.name.substr(-3),C=g.type,w=dA[C];if(!w)throw"unknown type: 0x"+C.toString(16);if(w.bindPoint){var t=Q;return Q+=g.size,c?w.arraySetter(A,C,t,E,g.size):w.setter(A,C,t,E,g.size)}return w.arraySetter&&c?w.arraySetter(A,E):w.setter(A,E)}for(var Q=0,E={},c=A.getProgramParameter(B,A.ACTIVE_UNIFORMS),C=0;C<c;++C){var w=A.getActiveUniform(B,C);if(!w)break;var t=w.name;"[0]"===t.substr(-3)&&(t=t.substr(0,t.length-3));var i=g(B,w);E[t]=i}return E}function m(A,B){for(var g=A.getProgramParameter(B,A.ACTIVE_UNIFORMS),Q=[],E=[],c=0;c<g;++c){E.push(c),Q.push({});var C=A.getActiveUniform(B,c);if(!C)break;Q[c].name=C.name}[["UNIFORM_TYPE","type"],["UNIFORM_SIZE","size"],["UNIFORM_BLOCK_INDEX","blockNdx"],["UNIFORM_OFFSET","offset"]].forEach(function(g){var c=g[0],C=g[1];A.getActiveUniforms(B,E,A[c]).forEach(function(A,B){Q[B][C]=A})});var w={},t=A.getProgramParameter(B,A.ACTIVE_UNIFORM_BLOCKS);for(c=0;c<t;++c){var i=A.getActiveUniformBlockName(B,c),I={index:c,usedByVertexShader:A.getActiveUniformBlockParameter(B,c,A.UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER),usedByFragmentShader:A.getActiveUniformBlockParameter(B,c,A.UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER),size:A.getActiveUniformBlockParameter(B,c,A.UNIFORM_BLOCK_DATA_SIZE),uniformIndices:A.getActiveUniformBlockParameter(B,c,A.UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES)};I.used=I.usedByVertexSahder||I.usedByFragmentShader,w[i]=I}return{blockSpecs:w,uniformData:Q}}function v(A,B,g,Q){var E=g.blockSpecs,c=g.uniformData,C=E[Q];if(!C)return q("no uniform block object named:",Q),{name:Q,uniforms:{}};var w=new ArrayBuffer(C.size),t=A.createBuffer(),i=C.index;A.bindBuffer(A.UNIFORM_BUFFER,t),A.uniformBlockBinding(B,C.index,i);var I=Q+".";pA.test(I)&&(I=I.replace(pA,"."));var e={};return C.uniformIndices.forEach(function(A){var B=c[A],g=dA[B.type],Q=g.Type,E=B.size*g.size,C=B.name;C.substr(0,I.length)===I&&(C=C.substr(I.length)),e[C]=new Q(w,B.offset,E/Q.BYTES_PER_ELEMENT)}),{name:Q,array:w,asFloat:new Float32Array(w),buffer:t,uniforms:e}}function T(A,B,g){return v(A,B.program,B.uniformBlockSpec,g)}function W(A,B,g){var Q=B.uniformBlockSpec||B,E=Q.blockSpecs[g.name];if(E){var c=E.index;return A.bindBufferRange(A.UNIFORM_BUFFER,c,g.buffer,g.offset||0,g.array.byteLength),!0}return!1}function d(A,B,g){W(A,B,g)&&A.bufferData(A.UNIFORM_BUFFER,g.array,A.DYNAMIC_DRAW)}function b(A,B){var g=A.uniforms;for(var Q in B){var E=g[Q];if(E){var c=B[Q];c.length?E.set(c):E[0]=c}}}function O(A,B){for(var g=A.uniformSetters||A,Q=arguments.length,E=1;E<Q;++E){var c=arguments[E];if(Array.isArray(c))for(var C=c.length,w=0;w<C;++w)O(g,c[w]);else for(var t in c){var i=g[t];i&&i(c[t])}}}function K(A,B){for(var g={},Q=A.getProgramParameter(B,A.ACTIVE_ATTRIBUTES),E=0;E<Q;++E){var c=A.getActiveAttrib(B,E);if(!c)break;var C=A.getAttribLocation(B,c.name),w=bA[c.type];g[c.name]=w.setter(A,C,w)}return g}function p(A,B){for(var g in B){var Q=A[g];Q&&Q(B[g])}}function V(A,B,g){g.vertexArrayObject?A.bindVertexArray(g.vertexArrayObject):(p(B.attribSetters||B,g.attribs),g.indices&&A.bindBuffer(A.ELEMENT_ARRAY_BUFFER,g.indices))}function X(B,g){var Q=z(B,g),E=K(B,g),c={program:g,uniformSetters:Q,attribSetters:E};return A.isWebGL2(B)&&(c.uniformBlockSpec=m(B,g)),c}function Z(A,B,g,Q,E){var c=k(g,Q,E),C=!0;if(B=B.map(function(A){if(A.indexOf("\n")<0){var B=document.getElementById(A);B?A=B.text:(c.errorCallback("no element with id: "+A),C=!1)}return A}),!C)return null;var w=P(A,B,c);return w?X(A,w):null}var _=A.error,q=A.warn,$=5126,AA=35664,BA=35665,gA=35666,QA=5124,EA=35667,cA=35668,CA=35669,wA=35670,tA=35671,iA=35672,IA=35673,eA=35674,nA=35675,YA=35676,FA=35678,DA=35680,rA=35679,oA=35682,MA=35685,sA=35686,hA=35687,GA=35688,UA=35689,aA=35690,NA=36289,uA=36292,HA=36293,JA=5125,RA=36294,yA=36295,fA=36296,xA=36298,lA=36299,kA=36300,LA=36303,SA=36306,jA=36307,PA=36308,zA=36311,mA=3553,vA=34067,TA=32879,WA=35866,dA={};dA[$]={Type:Float32Array,size:4,setter:g,arraySetter:Q},dA[AA]={Type:Float32Array,size:8,setter:E},dA[BA]={Type:Float32Array,size:12,setter:c},dA[gA]={Type:Float32Array,size:16,setter:C},dA[QA]={Type:Int32Array,size:4,setter:w,arraySetter:t},dA[EA]={Type:Int32Array,size:8,setter:i},dA[cA]={Type:Int32Array,size:12,setter:I},dA[CA]={Type:Int32Array,size:16,setter:e},dA[JA]={Type:Uint32Array,size:4,setter:n,arraySetter:Y},dA[RA]={Type:Uint32Array,size:8,setter:F},dA[yA]={Type:Uint32Array,size:12,setter:D},dA[fA]={Type:Uint32Array,size:16,setter:r},dA[wA]={Type:Uint32Array,size:4,setter:w,arraySetter:t},dA[tA]={Type:Uint32Array,size:8,setter:i},dA[iA]={Type:Uint32Array,size:12,setter:I},dA[IA]={Type:Uint32Array,size:16,setter:e},dA[eA]={Type:Float32Array,size:16,setter:o},dA[nA]={Type:Float32Array,size:36,setter:M},dA[YA]={Type:Float32Array,size:64,setter:s},dA[MA]={Type:Float32Array,size:24,setter:h},dA[sA]={Type:Float32Array,size:32,setter:U},dA[hA]={Type:Float32Array,size:24,setter:G},dA[GA]={Type:Float32Array,size:48,setter:N},dA[UA]={Type:Float32Array,size:32,setter:a},dA[aA]={Type:Float32Array,size:48,setter:u},dA[FA]={Type:null,size:0,setter:H,arraySetter:J,bindPoint:mA},dA[DA]={Type:null,size:0,setter:H,arraySetter:J,bindPoint:vA},dA[rA]={Type:null,size:0,setter:H,arraySetter:J,bindPoint:TA},dA[oA]={Type:null,size:0,setter:H,arraySetter:J,bindPoint:mA},dA[NA]={Type:null,size:0,setter:H,arraySetter:J,bindPoint:WA},dA[uA]={Type:null,size:0,setter:H,arraySetter:J,bindPoint:WA},dA[HA]={Type:null,size:0,setter:H,arraySetter:J,bindPoint:vA},dA[xA]={Type:null,size:0,setter:H,arraySetter:J,bindPoint:mA},dA[lA]={Type:null,size:0,setter:H,arraySetter:J,bindPoint:TA},dA[kA]={Type:null,size:0,setter:H,arraySetter:J,bindPoint:vA},dA[LA]={Type:null,size:0,setter:H,arraySetter:J,bindPoint:WA},dA[SA]={Type:null,size:0,setter:H,arraySetter:J,bindPoint:mA},dA[jA]={Type:null,size:0,setter:H,arraySetter:J,bindPoint:TA},dA[PA]={Type:null,size:0,setter:H,arraySetter:J,bindPoint:vA},dA[zA]={Type:null,size:0,setter:H,arraySetter:J,bindPoint:WA};var bA={};bA[$]={size:4,setter:R},bA[AA]={size:8,setter:R},bA[BA]={size:12,setter:R},bA[gA]={size:16,setter:R},bA[QA]={size:4,setter:y},bA[EA]={size:8,setter:y},bA[cA]={size:12,setter:y},bA[CA]={size:16,setter:y},bA[JA]={size:4,setter:y},bA[RA]={size:8,setter:y},bA[yA]={size:12,setter:y},bA[fA]={size:16,setter:y},bA[wA]={size:4,setter:y},bA[tA]={size:8,setter:y},bA[iA]={size:12,setter:y},bA[IA]={size:16,setter:y},bA[eA]={size:4,setter:f,count:2},bA[nA]={size:9,setter:f,count:3},bA[YA]={size:16,setter:f,count:4};var OA=/^[ \t]*\n/,KA=["VERTEX_SHADER","FRAGMENT_SHADER"],pA=/\[\d+\]\.$/;return{createAttributeSetters:K,createProgram:L,createProgramFromScripts:j,createProgramFromSources:P,createProgramInfo:Z,createProgramInfoFromProgram:X,createUniformSetters:z,createUniformBlockSpecFromProgram:m,createUniformBlockInfoFromProgram:v,createUniformBlockInfo:T,setAttributes:p,setBuffersAndAttributes:V,setUniforms:O,setUniformBlock:d,setBlockUniforms:b,bindUniformBlock:W}}.apply(B,Q),!(void 0!==E&&(A.exports=E))},function(A,B,g){var Q,E;Q=[g(8),g(4)],E=function(A,B){"use strict";function g(A){return N[A]}function Q(A){return u[A]}function E(E,c,C,w){var t=E.FRAMEBUFFER,i=E.createFramebuffer();E.bindFramebuffer(t,i),C=C||E.drawingBufferWidth,w=w||E.drawingBufferHeight,c=c||a;var I=0,e={framebuffer:i,attachments:[],width:C,height:w};return c.forEach(function(c){var i=c.attachment,n=c.format,Y=g(n);if(Y||(Y=o+I++),!i)if(Q(n))i=E.createRenderbuffer(),E.bindRenderbuffer(E.RENDERBUFFER,i),E.renderbufferStorage(E.RENDERBUFFER,n,C,w);else{var F=B.shallowCopy(c);F.width=C,F.height=w,void 0===F.auto&&(F.auto=!1,F.min=F.min||E.LINEAR,F.mag=F.mag||E.LINEAR,F.wrapS=F.wrapS||F.wrap||E.CLAMP_TO_EDGE,F.wrapT=F.wrapT||F.wrap||E.CLAMP_TO_EDGE),i=A.createTexture(E,F)}if(i instanceof WebGLRenderbuffer)E.framebufferRenderbuffer(t,Y,E.RENDERBUFFER,i);else{if(!(i instanceof WebGLTexture))throw"unknown attachment type";E.framebufferTexture2D(t,Y,c.texTarget||E.TEXTURE_2D,i,c.level||0)}e.attachments.push(i)}),e}function c(B,g,Q,E,c){E=E||B.drawingBufferWidth,c=c||B.drawingBufferHeight,g.width=E,g.height=c,Q=Q||a,Q.forEach(function(Q,C){var w=g.attachments[C],t=Q.format;if(w instanceof WebGLRenderbuffer)B.bindRenderbuffer(B.RENDERBUFFER,w),B.renderbufferStorage(B.RENDERBUFFER,t,E,c);else{if(!(w instanceof WebGLTexture))throw"unknown attachment type";A.resizeTexture(B,w,Q,E,c)}})}function C(A,B,g){g=g||A.FRAMEBUFFER,B?(A.bindFramebuffer(g,B.framebuffer),A.viewport(0,0,B.width,B.height)):(A.bindFramebuffer(g,null),A.viewport(0,0,A.drawingBufferWidth,A.drawingBufferHeight))}var w=5121,t=6402,i=6408,I=32854,e=32855,n=36194,Y=33189,F=6401,D=36168,r=34041,o=36064,M=36096,s=36128,h=33306,G=33071,U=9729,a=[{format:i,type:w,min:U,wrap:G},{format:r}],N={};N[r]=h,N[F]=s,N[D]=s,N[t]=M,N[Y]=M;var u={};return u[I]=!0,u[e]=!0,u[n]=!0,u[r]=!0,u[Y]=!0,u[F]=!0,u[D]=!0,{bindFramebufferInfo:C,createFramebufferInfo:E,resizeFramebufferInfo:c}}.apply(B,Q),!(void 0!==E&&(A.exports=E))},function(A,B,g){var Q,E;Q=[g(3),g(4)],E=function(A,B){"use strict";function g(A,B){var g=rB[A];if(!g)throw"unknown internal format";var Q=g.bytesPerElementMap[B];if(void 0===Q)throw"unknown internal format";return Q}function Q(A){var B=rB[A];if(!B)throw"unknown internal format";return{format:B.textureFormat,type:Array.isArray(B.type)?B.type[0]:B.type}}function E(A){return 0===(A&A-1)}function c(A,g,Q,c){if(!B.isWebGL2(A))return E(g)&&E(Q);var C=rB[c];if(!C)throw"unknown internal format";return C.colorRenderable&&C.textureFilterable}function C(A){var B=rB[A];if(!B)throw"unknown internal format";return B.textureFilterable}function w(A){var B=FB[A];if(!B)throw"unknown format: "+A;return B.numColorComponents}function t(B,g,Q){return P(g)?A.getGLTypeForTypedArray(g):Q||B.UNSIGNED_BYTE}function i(A,B,g,Q,E){if(E%1!==0)throw"can't guess dimensions";if(g||Q){if(Q){if(!g&&(g=E/Q,g%1))throw"can't guess dimensions"}else if(Q=E/g,Q%1)throw"can't guess dimensions"}else{var c=Math.sqrt(E/(B===A.TEXTURE_CUBE_MAP?6:1));c%1===0?(g=c,Q=c):(g=E,Q=1)}return{width:g,height:Q}}function I(A){j.textureColor=new Uint8Array([255*A[0],255*A[1],255*A[2],255*A[3]])}function e(A){B.copyExistingProperties(A,j),A.textureColor&&I(A.textureColor)}function n(A,B){void 0!==B.colorspaceConversion&&(MB.colorspaceConversion=A.getParameter(A.UNPACK_COLORSPACE_CONVERSION_WEBGL),A.pixelStorei(A.UNPACK_COLORSPACE_CONVERSION_WEBGL,B.colorspaceConversion)),void 0!==B.premultiplyAlpha&&(MB.premultiplyAlpha=A.getParameter(A.UNPACK_PREMULTIPLY_ALPHA_WEBGL),A.pixelStorei(A.UNPACK_PREMULTIPLY_ALPHA_WEBGL,B.premultiplyAlpha)),void 0!==B.flipY&&(MB.flipY=A.getParameter(A.UNPACK_FLIP_Y_WEBGL),A.pixelStorei(A.UNPACK_FLIP_Y_WEBGL,B.flipY))}function Y(A,B){void 0!==B.colorspaceConversion&&A.pixelStorei(A.UNPACK_COLORSPACE_CONVERSION_WEBGL,MB.colorspaceConversion),void 0!==B.premultiplyAlpha&&A.pixelStorei(A.UNPACK_PREMULTIPLY_ALPHA_WEBGL,MB.premultiplyAlpha),void 0!==B.flipY&&A.pixelStorei(A.UNPACK_FLIP_Y_WEBGL,MB.flipY)}function F(A,B,g,Q){Q.minMag&&(g.call(A,B,A.TEXTURE_MIN_FILTER,Q.minMag),g.call(A,B,A.TEXTURE_MAG_FILTER,Q.minMag)),Q.min&&g.call(A,B,A.TEXTURE_MIN_FILTER,Q.min),Q.mag&&g.call(A,B,A.TEXTURE_MAG_FILTER,Q.mag),Q.wrap&&(g.call(A,B,A.TEXTURE_WRAP_S,Q.wrap),g.call(A,B,A.TEXTURE_WRAP_T,Q.wrap),(B===A.TEXTURE_3D||B instanceof sB)&&g.call(A,B,A.TEXTURE_WRAP_R,Q.wrap)),Q.wrapR&&g.call(A,B,A.TEXTURE_WRAP_R,Q.wrapR),Q.wrapS&&g.call(A,B,A.TEXTURE_WRAP_S,Q.wrapS),Q.wrapT&&g.call(A,B,A.TEXTURE_WRAP_T,Q.wrapT),Q.minLod&&g.call(A,B,A.TEXTURE_MIN_LOD,Q.minLod),Q.maxLod&&g.call(A,B,A.TEXTURE_MAX_LOD,Q.maxLod),Q.baseLevel&&g.call(A,B,A.TEXTURE_BASE_LEVEL,Q.baseLevel),Q.maxLevel&&g.call(A,B,A.TEXTURE_MAX_LEVEL,Q.maxLevel)}function D(A,B,g){var Q=g.target||A.TEXTURE_2D;A.bindTexture(Q,B),F(A,Q,A.texParameteri,g)}function r(A,B,g){F(A,B,A.samplerParameteri,g)}function o(A,B){var g=A.createSampler();return r(A,g,B),g}function M(A,B){var g={};return Object.keys(B).forEach(function(Q){g[Q]=o(A,B[Q])}),g}function s(A){return A=A||j.textureColor,P(A)?A:new Uint8Array([255*A[0],255*A[1],255*A[2],255*A[3]])}function h(A,B,g,Q,E,w,t){g=g||j.textureOptions,w=w||A.RGBA,t=t||A.UNSIGNED_BYTE;var i=g.target||A.TEXTURE_2D;if(Q=Q||g.width,E=E||g.height,A.bindTexture(i,B),c(A,Q,E,w,t))A.generateMipmap(i);else{var I=C(w,t)?A.LINEAR:A.NEAREST;A.texParameteri(i,A.TEXTURE_MIN_FILTER,I),A.texParameteri(i,A.TEXTURE_MAG_FILTER,I),A.texParameteri(i,A.TEXTURE_WRAP_S,A.CLAMP_TO_EDGE),A.texParameteri(i,A.TEXTURE_WRAP_T,A.CLAMP_TO_EDGE)}}function G(A,B){return B=B||{},B.cubeFaceOrder||[A.TEXTURE_CUBE_MAP_POSITIVE_X,A.TEXTURE_CUBE_MAP_NEGATIVE_X,A.TEXTURE_CUBE_MAP_POSITIVE_Y,A.TEXTURE_CUBE_MAP_NEGATIVE_Y,A.TEXTURE_CUBE_MAP_POSITIVE_Z,A.TEXTURE_CUBE_MAP_NEGATIVE_Z]}function U(A,B){var g=G(A,B),Q=g.map(function(A,B){return{face:A,ndx:B}});return Q.sort(function(A,B){return A.face-B.face}),Q}function a(A,B,g,E){E=E||j.textureOptions;var c=E.target||A.TEXTURE_2D,C=g.width,w=g.height,t=E.internalFormat||E.format||A.RGBA,i=Q(t),I=E.format||i.format,e=E.type||i.type;if(n(A,E),A.bindTexture(c,B),c===A.TEXTURE_CUBE_MAP){var F,r,o=g.width,M=g.height;if(o/6===M)F=M,r=[0,0,1,0,2,0,3,0,4,0,5,0];else if(M/6===o)F=o,r=[0,0,0,1,0,2,0,3,0,4,0,5];else if(o/3===M/2)F=o/3,r=[0,0,1,0,2,0,0,1,1,1,2,1];else{if(o/2!==M/3)throw"can't figure out cube map from element: "+(g.src?g.src:g.nodeName);F=o/2,r=[0,0,1,0,0,1,1,1,0,2,1,2]}z.canvas.width=F,z.canvas.height=F,C=F,w=F,U(A,E).forEach(function(B){var Q=r[2*B.ndx+0]*F,E=r[2*B.ndx+1]*F;z.drawImage(g,Q,E,F,F,0,0,F,F),A.texImage2D(B.face,0,t,I,e,z.canvas)}),z.canvas.width=1,z.canvas.height=1}else if(c===A.TEXTURE_3D){var s=Math.min(g.width,g.height),G=Math.max(g.width,g.height),a=G/s;if(a%1!==0)throw"can not compute 3D dimensions of element";var N=g.width===G?1:0,u=g.height===G?1:0;A.texImage3D(c,0,t,s,s,s,0,I,e,null),z.canvas.width=s,z.canvas.height=s;for(var H=0;H<a;++H){var J=H*s*N,R=H*s*u,y=s,f=s,x=0,l=0,k=s,L=s;z.drawImage(g,J,R,y,f,x,l,k,L),A.texSubImage3D(c,0,0,0,H,s,s,1,I,e,z.canvas)}z.canvas.width=0,z.canvas.height=0}else A.texImage2D(c,0,t,I,e,g);Y(A,E),E.auto!==!1&&h(A,B,E,C,w,t,e),D(A,B,E)}function N(){}function u(A,g,Q){function E(){w.removeEventListener("error",c),w.removeEventListener("load",C),w=null}function c(){var g="couldn't load image: "+A;B.error(g),Q(g,w),E()}function C(){Q(null,w),E()}Q=Q||N;var w=new Image;return g=void 0!==g?g:j.crossOrigin,void 0!==g&&(w.crossOrigin=g),w.addEventListener("error",c),w.addEventListener("load",C),w.src=A,w}function H(A,B,g){g=g||j.textureOptions;var Q=g.target||A.TEXTURE_2D;if(A.bindTexture(Q,B),g.color!==!1){var E=s(g.color);if(Q===A.TEXTURE_CUBE_MAP)for(var c=0;c<6;++c)A.texImage2D(A.TEXTURE_CUBE_MAP_POSITIVE_X+c,0,A.RGBA,1,1,0,A.RGBA,A.UNSIGNED_BYTE,E);else Q===A.TEXTURE_3D||Q===A.TEXTURE_2D_ARRAY?A.texImage3D(Q,0,A.RGBA,1,1,1,0,A.RGBA,A.UNSIGNED_BYTE,E):A.texImage2D(Q,0,A.RGBA,1,1,0,A.RGBA,A.UNSIGNED_BYTE,E)}}function J(A,g,Q,E){E=E||N,Q=Q||j.textureOptions,H(A,g,Q),Q=B.shallowCopy(Q);var c=u(Q.src,Q.crossOrigin,function(B,c){B?E(B,g,c):(a(A,g,c,Q),E(null,g,c))});return c}function R(A,g,E,c){function C(B){return function(Q,C){--r,Q?o.push(Q):C.width!==C.height?o.push("cubemap face img is not a square: "+C.src):(n(A,E),A.bindTexture(F,g),5===r?G(A).forEach(function(B){A.texImage2D(B,0,t,I,e,C)}):A.texImage2D(B,0,t,I,e,C),Y(A,E),A.generateMipmap(F)),0===r&&c(o.length?o:void 0,D,g)}}c=c||N;var w=E.src;if(6!==w.length)throw"there must be 6 urls for a cubemap";var t=E.internalFormat||E.format||A.RGBA,i=Q(t),I=E.format||i.format,e=E.type||A.UNSIGNED_BYTE,F=E.target||A.TEXTURE_2D;if(F!==A.TEXTURE_CUBE_MAP)throw"target must be TEXTURE_CUBE_MAP";H(A,g,E),E=B.shallowCopy(E);var D,r=6,o=[],M=G(A,E);D=w.map(function(A,B){return u(A,E.crossOrigin,C(M[B]))})}function y(A,g,E,c){function C(B){return function(Q,C){if(--r,Q)o.push(Q);else{if(n(A,E),A.bindTexture(F,g),G){G=!1,M=E.width||C.width,s=E.height||C.height,A.texImage3D(F,0,t,M,s,h,0,I,e,null);for(var w=0;w<h;++w)A.texSubImage3D(F,0,0,0,w,M,s,1,I,e,C)}else{var i=C;C.width===M&&C.height===s||(i=z.canvas,z.canvas.width=M,z.canvas.height=s,z.drawImage(C,0,0,M,s)),A.texSubImage3D(F,0,0,0,B,M,s,1,I,e,i),i===z.canvas&&(z.canvas.width=0,z.canvas.height=0)}Y(A,E),A.generateMipmap(F)}0===r&&c(o.length?o:void 0,D,g)}}c=c||N;var w=E.src,t=E.internalFormat||E.format||A.RGBA,i=Q(t),I=E.format||i.format,e=E.type||A.UNSIGNED_BYTE,F=E.target||A.TEXTURE_2D_ARRAY;if(F!==A.TEXTURE_3D&&F!==A.TEXTURE_2D_ARRAY)throw"target must be TEXTURE_3D or TEXTURE_2D_ARRAY";H(A,g,E),E=B.shallowCopy(E);var D,r=w.length,o=[],M=E.width,s=E.height,h=w.length,G=!0;D=w.map(function(A,B){return u(A,E.crossOrigin,C(B))})}function f(B,E,c,C){C=C||j.textureOptions;var w=C.target||B.TEXTURE_2D;B.bindTexture(w,E);var I=C.width,e=C.height,F=C.depth,D=C.internalFormat||C.format||B.RGBA,r=Q(D),o=C.format||r.format,M=C.type||t(B,c,r.type);if(P(c))c instanceof Uint8ClampedArray&&(c=new Uint8Array(c.buffer));else{var s=A.getTypedArrayTypeForGLType(M);c=new s(c)}var h=g(D,M),G=c.byteLength/h;if(G%1)throw"length wrong size for format: "+oB(B,o);var a;if(w===B.TEXTURE_3D)if(I||e||F)!I||e&&F?!e||I&&F?(a=i(B,w,I,e,G/F),I=a.width,e=a.height):(a=i(B,w,I,F,G/e),I=a.width,F=a.height):(a=i(B,w,e,F,G/I),e=a.width,F=a.height);else{var N=Math.cbrt(G);if(N%1!==0)throw"can't guess cube size of array of numElements: "+G;I=N,e=N,F=N}else a=i(B,w,I,e,G),I=a.width,e=a.height;return B.pixelStorei(B.UNPACK_ALIGNMENT,C.unpackAlignment||1),n(B,C),w===B.TEXTURE_CUBE_MAP?!function(){var A=h/c.BYTES_PER_ELEMENT,g=G/6*A;U(B,C).forEach(function(A){var Q=g*A.ndx,E=c.subarray(Q,Q+g);B.texImage2D(A.face,0,D,I,e,0,o,M,E)})}():w===B.TEXTURE_3D?B.texImage3D(w,0,D,I,e,F,0,o,M,c):B.texImage2D(w,0,D,I,e,0,o,M,c),Y(B,C),{width:I,height:e,depth:F,type:M}}function x(A,B,g){var E=g.target||A.TEXTURE_2D;A.bindTexture(E,B);var c=g.internalFormat||g.format||A.RGBA,C=Q(c),w=g.format||C.format,t=g.type||C.type;if(n(A,g),E===A.TEXTURE_CUBE_MAP)for(var i=0;i<6;++i)A.texImage2D(A.TEXTURE_CUBE_MAP_POSITIVE_X+i,0,c,g.width,g.height,0,w,t,null);else E===A.TEXTURE_3D?A.texImage3D(E,0,c,g.width,g.height,g.depth,0,w,t,null):A.texImage2D(E,0,c,g.width,g.height,0,w,t,null);Y(A,g)}function l(A,B,g){g=g||N,B=B||j.textureOptions;var E=A.createTexture(),c=B.target||A.TEXTURE_2D,C=B.width||1,w=B.height||1,t=B.internalFormat||A.RGBA,i=Q(t),I=B.type||i.type;A.bindTexture(c,E),c===A.TEXTURE_CUBE_MAP&&(A.texParameteri(c,A.TEXTURE_WRAP_S,A.CLAMP_TO_EDGE),A.texParameteri(c,A.TEXTURE_WRAP_T,A.CLAMP_TO_EDGE));var e=B.src;if(e)if("function"==typeof e&&(e=e(A,B)),"string"==typeof e)J(A,E,B,g);else if(P(e)||Array.isArray(e)&&("number"==typeof e[0]||Array.isArray(e[0])||P(e[0]))){var n=f(A,E,e,B);C=n.width,w=n.height,I=n.type}else if(Array.isArray(e)&&"string"==typeof e[0])c===A.TEXTURE_CUBE_MAP?R(A,E,B,g):y(A,E,B,g);else{if(!(e instanceof HTMLElement))throw"unsupported src type";a(A,E,e,B),C=e.width,w=e.height}else x(A,E,B);return B.auto!==!1&&h(A,E,B,C,w,t,I),D(A,E,B),E}function k(A,B,g,E,c){E=E||g.width,c=c||g.height;var C=g.target||A.TEXTURE_2D;A.bindTexture(C,B);var w,i=g.internalFormat||g.format||A.RGBA,I=Q(i),e=g.format||I.format,n=g.src;if(w=n&&(P(n)||Array.isArray(n)&&"number"==typeof n[0])?g.type||t(A,n,I.type):g.type||I.type,C===A.TEXTURE_CUBE_MAP)for(var Y=0;Y<6;++Y)A.texImage2D(A.TEXTURE_CUBE_MAP_POSITIVE_X+Y,0,e,E,c,0,e,w,null);else A.texImage2D(C,0,e,E,c,0,e,w,null)}function L(A){return"string"==typeof A||Array.isArray(A)&&"string"==typeof A[0]}function S(A,B,g){function Q(){0===E&&setTimeout(function(){g(c.length?c:void 0,C,w)},0)}g=g||N;var E=0,c=[],C={},w={};return Object.keys(B).forEach(function(g){var t,i=B[g];L(i.src)&&(t=function(A,B,C){w[g]=C,--E,A&&c.push(A),Q()},++E),C[g]=l(A,i,t)}),Q(),C}var j={textureColor:new Uint8Array([128,192,255,255]),textureOptions:{},crossOrigin:void 0},P=A.isArrayBuffer,z=document.createElement("canvas").getContext("2d"),m=6406,v=6407,T=6408,W=6409,d=6410,b=6402,O=34041,K=33321,p=36756,V=33325,X=33326,Z=33330,_=33329,q=33338,$=33337,AA=33340,BA=33339,gA=33323,QA=36757,EA=33327,cA=33328,CA=33336,wA=33335,tA=33332,iA=33331,IA=33334,eA=33333,nA=32849,YA=35905,FA=36194,DA=36758,rA=35898,oA=35901,MA=34843,sA=34837,hA=36221,GA=36239,UA=36215,aA=36233,NA=36209,uA=36227,HA=32856,JA=35907,RA=36759,yA=32855,fA=32854,xA=32857,lA=34842,kA=34836,LA=36220,SA=36238,jA=36975,PA=36214,zA=36232,mA=36226,vA=36208,TA=33189,WA=33190,dA=36012,bA=36013,OA=35056,KA=5120,pA=5121,VA=5122,XA=5123,ZA=5124,_A=5125,qA=5126,$A=32819,AB=32820,BB=33635,gB=5131,QB=33640,EB=35899,cB=35902,CB=36269,wB=34042,tB=33319,iB=33320,IB=6403,eB=36244,nB=36248,YB=36249,FB={},DB=FB;
DB[m]={numColorComponents:1},DB[W]={numColorComponents:1},DB[d]={numColorComponents:2},DB[v]={numColorComponents:3},DB[T]={numColorComponents:4},DB[IB]={numColorComponents:1},DB[eB]={numColorComponents:1},DB[tB]={numColorComponents:2},DB[iB]={numColorComponents:2},DB[v]={numColorComponents:3},DB[nB]={numColorComponents:3},DB[T]={numColorComponents:4},DB[YB]={numColorComponents:4},DB[b]={numColorComponents:1},DB[O]={numColorComponents:2};var rB={};!function(){var A=rB;A[m]={textureFormat:m,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,4],type:[pA,gB,qA]},A[W]={textureFormat:W,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,4],type:[pA,gB,qA]},A[d]={textureFormat:d,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2,4,8],type:[pA,gB,qA]},A[v]={textureFormat:v,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,6,12,2],type:[pA,gB,qA,BB]},A[T]={textureFormat:T,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,8,16,2,2],type:[pA,gB,qA,$A,AB]},A[K]={textureFormat:IB,colorRenderable:!0,textureFilterable:!0,bytesPerElement:1,type:pA},A[p]={textureFormat:IB,colorRenderable:!1,textureFilterable:!0,bytesPerElement:1,type:KA},A[V]={textureFormat:IB,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4,2],type:[qA,gB]},A[X]={textureFormat:IB,colorRenderable:!1,textureFilterable:!1,bytesPerElement:4,type:qA},A[Z]={textureFormat:eB,colorRenderable:!0,textureFilterable:!1,bytesPerElement:1,type:pA},A[_]={textureFormat:eB,colorRenderable:!0,textureFilterable:!1,bytesPerElement:1,type:KA},A[tA]={textureFormat:eB,colorRenderable:!0,textureFilterable:!1,bytesPerElement:2,type:XA},A[iA]={textureFormat:eB,colorRenderable:!0,textureFilterable:!1,bytesPerElement:2,type:VA},A[IA]={textureFormat:eB,colorRenderable:!0,textureFilterable:!1,bytesPerElement:4,type:_A},A[eA]={textureFormat:eB,colorRenderable:!0,textureFilterable:!1,bytesPerElement:4,type:ZA},A[gA]={textureFormat:tB,colorRenderable:!0,textureFilterable:!0,bytesPerElement:2,type:pA},A[QA]={textureFormat:tB,colorRenderable:!1,textureFilterable:!0,bytesPerElement:2,type:KA},A[EA]={textureFormat:tB,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[8,4],type:[qA,gB]},A[cA]={textureFormat:tB,colorRenderable:!1,textureFilterable:!1,bytesPerElement:8,type:qA},A[CA]={textureFormat:iB,colorRenderable:!0,textureFilterable:!1,bytesPerElement:2,type:pA},A[wA]={textureFormat:iB,colorRenderable:!0,textureFilterable:!1,bytesPerElement:2,type:KA},A[q]={textureFormat:iB,colorRenderable:!0,textureFilterable:!1,bytesPerElement:4,type:XA},A[$]={textureFormat:iB,colorRenderable:!0,textureFilterable:!1,bytesPerElement:4,type:VA},A[AA]={textureForma