glsl-projectron/docs/maker-bundle.js
2023-11-07 01:02:13 +09:00

35 lines
130 KiB
JavaScript

!function(t){var r={};function e(n){if(r[n])return r[n].exports;var a=r[n]={i:n,l:!1,exports:{}};return t[n].call(a.exports,a,a.exports,e),a.l=!0,a.exports}e.m=t,e.c=r,e.d=function(t,r,n){e.o(t,r)||Object.defineProperty(t,r,{enumerable:!0,get:n})},e.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},e.t=function(t,r){if(1&r&&(t=e(t)),8&r)return t;if(4&r&&"object"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(e.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&r&&"string"!=typeof t)for(var a in t)e.d(n,a,function(r){return t[r]}.bind(null,a));return n},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,"a",r),r},e.o=function(t,r){return Object.prototype.hasOwnProperty.call(t,r)},e.p="",e(e.s=90)}([function(t,r){function e(t,r,e){this.shortMessage=r||"",this.longMessage=e||"",this.rawError=t||"",this.message="gl-shader: "+(r||t||"")+(e?"\n"+e:""),this.stack=(new Error).stack}e.prototype=new Error,e.prototype.name="GLError",e.prototype.constructor=e,t.exports=e},function(t,r,e){"use strict";var n=e(2),a=e(3),i=e(4);t.exports=function(t){if(arguments.length<=1)throw new Error("gl-texture2d: Missing arguments for texture2d constructor");o||f(t);if("number"==typeof arguments[1])return E(t,arguments[1],arguments[2],arguments[3]||t.RGBA,arguments[4]||t.UNSIGNED_BYTE);if(Array.isArray(arguments[1]))return E(t,0|arguments[1][0],0|arguments[1][1],arguments[2]||t.RGBA,arguments[3]||t.UNSIGNED_BYTE);if("object"==typeof arguments[1]){var r=arguments[1],e=l(r)?r:r.raw;if(e)return v(t,e,0|r.width,0|r.height,arguments[2]||t.RGBA,arguments[3]||t.UNSIGNED_BYTE);if(r.shape&&r.data&&r.stride)return y(t,r)}throw new Error("gl-texture2d: Invalid arguments for texture2d constructor")};var o=null,s=null,u=null;function f(t){o=[t.LINEAR,t.NEAREST_MIPMAP_LINEAR,t.LINEAR_MIPMAP_NEAREST,t.LINEAR_MIPMAP_NEAREST],s=[t.NEAREST,t.LINEAR,t.NEAREST_MIPMAP_NEAREST,t.NEAREST_MIPMAP_LINEAR,t.LINEAR_MIPMAP_NEAREST,t.LINEAR_MIPMAP_LINEAR],u=[t.REPEAT,t.CLAMP_TO_EDGE,t.MIRRORED_REPEAT]}function l(t){return"undefined"!=typeof HTMLCanvasElement&&t instanceof HTMLCanvasElement||"undefined"!=typeof HTMLImageElement&&t instanceof HTMLImageElement||"undefined"!=typeof HTMLVideoElement&&t instanceof HTMLVideoElement||"undefined"!=typeof ImageData&&t instanceof ImageData}var h=function(t,r){a.muls(t,r,255)};function c(t,r,e){var n=t.gl,a=n.getParameter(n.MAX_TEXTURE_SIZE);if(r<0||r>a||e<0||e>a)throw new Error("gl-texture2d: Invalid texture size");return t._shape=[r,e],t.bind(),n.texImage2D(n.TEXTURE_2D,0,t.format,r,e,0,t.format,t.type,null),t._mipLevels=[0],t}function p(t,r,e,n,a,i){this.gl=t,this.handle=r,this.format=a,this.type=i,this._shape=[e,n],this._mipLevels=[0],this._magFilter=t.NEAREST,this._minFilter=t.NEAREST,this._wrapS=t.CLAMP_TO_EDGE,this._wrapT=t.CLAMP_TO_EDGE,this._anisoSamples=1;var o=this,s=[this._wrapS,this._wrapT];Object.defineProperties(s,[{get:function(){return o._wrapS},set:function(t){return o.wrapS=t}},{get:function(){return o._wrapT},set:function(t){return o.wrapT=t}}]),this._wrapVector=s;var u=[this._shape[0],this._shape[1]];Object.defineProperties(u,[{get:function(){return o._shape[0]},set:function(t){return o.width=t}},{get:function(){return o._shape[1]},set:function(t){return o.height=t}}]),this._shapeVector=u}var g=p.prototype;function _(t,r){return 3===t.length?1===r[2]&&r[1]===t[0]*t[2]&&r[0]===t[2]:1===r[0]&&r[1]===t[0]}function d(t){var r=t.createTexture();return t.bindTexture(t.TEXTURE_2D,r),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),r}function E(t,r,e,n,a){var i=t.getParameter(t.MAX_TEXTURE_SIZE);if(r<0||r>i||e<0||e>i)throw new Error("gl-texture2d: Invalid texture shape");if(a===t.FLOAT&&!t.getExtension("OES_texture_float"))throw new Error("gl-texture2d: Floating point textures not supported on this platform");var o=d(t);return t.texImage2D(t.TEXTURE_2D,0,n,r,e,0,n,a,null),new p(t,o,r,e,n,a)}function v(t,r,e,n,a,i){var o=d(t);return t.texImage2D(t.TEXTURE_2D,0,a,a,i,r),new p(t,o,e,n,a,i)}function y(t,r){var e=r.dtype,o=r.shape.slice(),s=t.getParameter(t.MAX_TEXTURE_SIZE);if(o[0]<0||o[0]>s||o[1]<0||o[1]>s)throw new Error("gl-texture2d: Invalid texture size");var u=_(o,r.stride.slice()),f=0;"float32"===e?f=t.FLOAT:"float64"===e?(f=t.FLOAT,u=!1,e="float32"):"uint8"===e?f=t.UNSIGNED_BYTE:(f=t.UNSIGNED_BYTE,u=!1,e="uint8");var l,c,g=0;if(2===o.length)g=t.LUMINANCE,o=[o[0],o[1],1],r=n(r.data,o,[r.stride[0],r.stride[1],1],r.offset);else{if(3!==o.length)throw new Error("gl-texture2d: Invalid shape for texture");if(1===o[2])g=t.ALPHA;else if(2===o[2])g=t.LUMINANCE_ALPHA;else if(3===o[2])g=t.RGB;else{if(4!==o[2])throw new Error("gl-texture2d: Invalid shape for pixel coords");g=t.RGBA}}f!==t.FLOAT||t.getExtension("OES_texture_float")||(f=t.UNSIGNED_BYTE,u=!1);var E=r.size;if(u)l=0===r.offset&&r.data.length===E?r.data:r.data.subarray(r.offset,r.offset+E);else{var v=[o[2],o[2]*o[0],1];c=i.malloc(E,e);var y=n(c,o,v,0);"float32"!==e&&"float64"!==e||f!==t.UNSIGNED_BYTE?a.assign(y,r):h(y,r),l=c.subarray(0,E)}var m=d(t);return t.texImage2D(t.TEXTURE_2D,0,g,o[0],o[1],0,g,f,l),u||i.free(c),new p(t,m,o[0],o[1],g,f)}Object.defineProperties(g,{minFilter:{get:function(){return this._minFilter},set:function(t){this.bind();var r=this.gl;if(this.type===r.FLOAT&&o.indexOf(t)>=0&&(r.getExtension("OES_texture_float_linear")||(t=r.NEAREST)),s.indexOf(t)<0)throw new Error("gl-texture2d: Unknown filter mode "+t);return r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MIN_FILTER,t),this._minFilter=t}},magFilter:{get:function(){return this._magFilter},set:function(t){this.bind();var r=this.gl;if(this.type===r.FLOAT&&o.indexOf(t)>=0&&(r.getExtension("OES_texture_float_linear")||(t=r.NEAREST)),s.indexOf(t)<0)throw new Error("gl-texture2d: Unknown filter mode "+t);return r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MAG_FILTER,t),this._magFilter=t}},mipSamples:{get:function(){return this._anisoSamples},set:function(t){var r=this._anisoSamples;if(this._anisoSamples=0|Math.max(t,1),r!==this._anisoSamples){var e=this.gl.getExtension("EXT_texture_filter_anisotropic");e&&this.gl.texParameterf(this.gl.TEXTURE_2D,e.TEXTURE_MAX_ANISOTROPY_EXT,this._anisoSamples)}return this._anisoSamples}},wrapS:{get:function(){return this._wrapS},set:function(t){if(this.bind(),u.indexOf(t)<0)throw new Error("gl-texture2d: Unknown wrap mode "+t);return this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_S,t),this._wrapS=t}},wrapT:{get:function(){return this._wrapT},set:function(t){if(this.bind(),u.indexOf(t)<0)throw new Error("gl-texture2d: Unknown wrap mode "+t);return this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_T,t),this._wrapT=t}},wrap:{get:function(){return this._wrapVector},set:function(t){if(Array.isArray(t)||(t=[t,t]),2!==t.length)throw new Error("gl-texture2d: Must specify wrap mode for rows and columns");for(var r=0;r<2;++r)if(u.indexOf(t[r])<0)throw new Error("gl-texture2d: Unknown wrap mode "+t);this._wrapS=t[0],this._wrapT=t[1];var e=this.gl;return this.bind(),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,this._wrapS),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,this._wrapT),t}},shape:{get:function(){return this._shapeVector},set:function(t){if(Array.isArray(t)){if(2!==t.length)throw new Error("gl-texture2d: Invalid texture shape")}else t=[0|t,0|t];return c(this,0|t[0],0|t[1]),[0|t[0],0|t[1]]}},width:{get:function(){return this._shape[0]},set:function(t){return c(this,t|=0,this._shape[1]),t}},height:{get:function(){return this._shape[1]},set:function(t){return t|=0,c(this,this._shape[0],t),t}}}),g.bind=function(t){var r=this.gl;return void 0!==t&&r.activeTexture(r.TEXTURE0+(0|t)),r.bindTexture(r.TEXTURE_2D,this.handle),void 0!==t?0|t:r.getParameter(r.ACTIVE_TEXTURE)-r.TEXTURE0},g.dispose=function(){this.gl.deleteTexture(this.handle)},g.generateMipmap=function(){this.bind(),this.gl.generateMipmap(this.gl.TEXTURE_2D);for(var t=Math.min(this._shape[0],this._shape[1]),r=0;t>0;++r,t>>>=1)this._mipLevels.indexOf(r)<0&&this._mipLevels.push(r)},g.setPixels=function(t,r,e,o){var s=this.gl;this.bind(),Array.isArray(r)?(o=e,e=0|r[1],r=0|r[0]):(r=r||0,e=e||0),o=o||0;var u=l(t)?t:t.raw;if(u){this._mipLevels.indexOf(o)<0?(s.texImage2D(s.TEXTURE_2D,0,this.format,this.format,this.type,u),this._mipLevels.push(o)):s.texSubImage2D(s.TEXTURE_2D,o,r,e,this.format,this.type,u)}else{if(!(t.shape&&t.stride&&t.data))throw new Error("gl-texture2d: Unsupported data type");if(t.shape.length<2||r+t.shape[1]>this._shape[1]>>>o||e+t.shape[0]>this._shape[0]>>>o||r<0||e<0)throw new Error("gl-texture2d: Texture dimensions are out of bounds");!function(t,r,e,o,s,u,f,l){var c=l.dtype,p=l.shape.slice();if(p.length<2||p.length>3)throw new Error("gl-texture2d: Invalid ndarray, must be 2d or 3d");var g=0,d=0,E=_(p,l.stride.slice());"float32"===c?g=t.FLOAT:"float64"===c?(g=t.FLOAT,E=!1,c="float32"):"uint8"===c?g=t.UNSIGNED_BYTE:(g=t.UNSIGNED_BYTE,E=!1,c="uint8");if(2===p.length)d=t.LUMINANCE,p=[p[0],p[1],1],l=n(l.data,p,[l.stride[0],l.stride[1],1],l.offset);else{if(3!==p.length)throw new Error("gl-texture2d: Invalid shape for texture");if(1===p[2])d=t.ALPHA;else if(2===p[2])d=t.LUMINANCE_ALPHA;else if(3===p[2])d=t.RGB;else{if(4!==p[2])throw new Error("gl-texture2d: Invalid shape for pixel coords");d=t.RGBA}p[2]}d!==t.LUMINANCE&&d!==t.ALPHA||s!==t.LUMINANCE&&s!==t.ALPHA||(d=s);if(d!==s)throw new Error("gl-texture2d: Incompatible texture format for setPixels");var v=l.size,y=f.indexOf(o)<0;y&&f.push(o);if(g===u&&E)0===l.offset&&l.data.length===v?y?t.texImage2D(t.TEXTURE_2D,o,s,p[0],p[1],0,s,u,l.data):t.texSubImage2D(t.TEXTURE_2D,o,r,e,p[0],p[1],s,u,l.data):y?t.texImage2D(t.TEXTURE_2D,o,s,p[0],p[1],0,s,u,l.data.subarray(l.offset,l.offset+v)):t.texSubImage2D(t.TEXTURE_2D,o,r,e,p[0],p[1],s,u,l.data.subarray(l.offset,l.offset+v));else{var m;m=u===t.FLOAT?i.mallocFloat32(v):i.mallocUint8(v);var T=n(m,p,[p[2],p[2]*p[0],1]);g===t.FLOAT&&u===t.UNSIGNED_BYTE?h(T,l):a.assign(T,l),y?t.texImage2D(t.TEXTURE_2D,o,s,p[0],p[1],0,s,u,m.subarray(0,v)):t.texSubImage2D(t.TEXTURE_2D,o,r,e,p[0],p[1],s,u,m.subarray(0,v)),u===t.FLOAT?i.freeFloat32(m):i.freeUint8(m)}}(s,r,e,o,this.format,this.type,this._mipLevels,t)}}},function(t,r,e){var n=e(12),a=e(13),i="undefined"!=typeof Float64Array;function o(t,r){return t[0]-r[0]}function s(){var t,r=this.stride,e=new Array(r.length);for(t=0;t<e.length;++t)e[t]=[Math.abs(r[t]),t];e.sort(o);var n=new Array(e.length);for(t=0;t<n.length;++t)n[t]=e[t][1];return n}function u(t,r){var e=["View",r,"d",t].join("");r<0&&(e="View_Nil"+t);var a="generic"===t;if(-1===r){var i="function "+e+"(a){this.data=a;};var proto="+e+".prototype;proto.dtype='"+t+"';proto.index=function(){return -1};proto.size=0;proto.dimension=-1;proto.shape=proto.stride=proto.order=[];proto.lo=proto.hi=proto.transpose=proto.step=function(){return new "+e+"(this.data);};proto.get=proto.set=function(){};proto.pick=function(){return null};return function construct_"+e+"(a){return new "+e+"(a);}";return new Function(i)()}if(0===r){i="function "+e+"(a,d) {this.data = a;this.offset = d};var proto="+e+".prototype;proto.dtype='"+t+"';proto.index=function(){return this.offset};proto.dimension=0;proto.size=1;proto.shape=proto.stride=proto.order=[];proto.lo=proto.hi=proto.transpose=proto.step=function "+e+"_copy() {return new "+e+"(this.data,this.offset)};proto.pick=function "+e+"_pick(){return TrivialArray(this.data);};proto.valueOf=proto.get=function "+e+"_get(){return "+(a?"this.data.get(this.offset)":"this.data[this.offset]")+"};proto.set=function "+e+"_set(v){return "+(a?"this.data.set(this.offset,v)":"this.data[this.offset]=v")+"};return function construct_"+e+"(a,b,c,d){return new "+e+"(a,d)}";return new Function("TrivialArray",i)(f[t][0])}i=["'use strict'"];var o=n(r),u=o.map((function(t){return"i"+t})),l="this.offset+"+o.map((function(t){return"this.stride["+t+"]*i"+t})).join("+"),h=o.map((function(t){return"b"+t})).join(","),c=o.map((function(t){return"c"+t})).join(",");i.push("function "+e+"(a,"+h+","+c+",d){this.data=a","this.shape=["+h+"]","this.stride=["+c+"]","this.offset=d|0}","var proto="+e+".prototype","proto.dtype='"+t+"'","proto.dimension="+r),i.push("Object.defineProperty(proto,'size',{get:function "+e+"_size(){return "+o.map((function(t){return"this.shape["+t+"]"})).join("*"),"}})"),1===r?i.push("proto.order=[0]"):(i.push("Object.defineProperty(proto,'order',{get:"),r<4?(i.push("function "+e+"_order(){"),2===r?i.push("return (Math.abs(this.stride[0])>Math.abs(this.stride[1]))?[1,0]:[0,1]}})"):3===r&&i.push("var s0=Math.abs(this.stride[0]),s1=Math.abs(this.stride[1]),s2=Math.abs(this.stride[2]);if(s0>s1){if(s1>s2){return [2,1,0];}else if(s0>s2){return [1,2,0];}else{return [1,0,2];}}else if(s0>s2){return [2,0,1];}else if(s2>s1){return [0,1,2];}else{return [0,2,1];}}})")):i.push("ORDER})")),i.push("proto.set=function "+e+"_set("+u.join(",")+",v){"),a?i.push("return this.data.set("+l+",v)}"):i.push("return this.data["+l+"]=v}"),i.push("proto.get=function "+e+"_get("+u.join(",")+"){"),a?i.push("return this.data.get("+l+")}"):i.push("return this.data["+l+"]}"),i.push("proto.index=function "+e+"_index(",u.join(),"){return "+l+"}"),i.push("proto.hi=function "+e+"_hi("+u.join(",")+"){return new "+e+"(this.data,"+o.map((function(t){return["(typeof i",t,"!=='number'||i",t,"<0)?this.shape[",t,"]:i",t,"|0"].join("")})).join(",")+","+o.map((function(t){return"this.stride["+t+"]"})).join(",")+",this.offset)}");var p=o.map((function(t){return"a"+t+"=this.shape["+t+"]"})),g=o.map((function(t){return"c"+t+"=this.stride["+t+"]"}));i.push("proto.lo=function "+e+"_lo("+u.join(",")+"){var b=this.offset,d=0,"+p.join(",")+","+g.join(","));for(var _=0;_<r;++_)i.push("if(typeof i"+_+"==='number'&&i"+_+">=0){d=i"+_+"|0;b+=c"+_+"*d;a"+_+"-=d}");i.push("return new "+e+"(this.data,"+o.map((function(t){return"a"+t})).join(",")+","+o.map((function(t){return"c"+t})).join(",")+",b)}"),i.push("proto.step=function "+e+"_step("+u.join(",")+"){var "+o.map((function(t){return"a"+t+"=this.shape["+t+"]"})).join(",")+","+o.map((function(t){return"b"+t+"=this.stride["+t+"]"})).join(",")+",c=this.offset,d=0,ceil=Math.ceil");for(_=0;_<r;++_)i.push("if(typeof i"+_+"==='number'){d=i"+_+"|0;if(d<0){c+=b"+_+"*(a"+_+"-1);a"+_+"=ceil(-a"+_+"/d)}else{a"+_+"=ceil(a"+_+"/d)}b"+_+"*=d}");i.push("return new "+e+"(this.data,"+o.map((function(t){return"a"+t})).join(",")+","+o.map((function(t){return"b"+t})).join(",")+",c)}");var d=new Array(r),E=new Array(r);for(_=0;_<r;++_)d[_]="a[i"+_+"]",E[_]="b[i"+_+"]";i.push("proto.transpose=function "+e+"_transpose("+u+"){"+u.map((function(t,r){return t+"=("+t+"===undefined?"+r+":"+t+"|0)"})).join(";"),"var a=this.shape,b=this.stride;return new "+e+"(this.data,"+d.join(",")+","+E.join(",")+",this.offset)}"),i.push("proto.pick=function "+e+"_pick("+u+"){var a=[],b=[],c=this.offset");for(_=0;_<r;++_)i.push("if(typeof i"+_+"==='number'&&i"+_+">=0){c=(c+this.stride["+_+"]*i"+_+")|0}else{a.push(this.shape["+_+"]);b.push(this.stride["+_+"])}");return i.push("var ctor=CTOR_LIST[a.length+1];return ctor(this.data,a,b,c)}"),i.push("return function construct_"+e+"(data,shape,stride,offset){return new "+e+"(data,"+o.map((function(t){return"shape["+t+"]"})).join(",")+","+o.map((function(t){return"stride["+t+"]"})).join(",")+",offset)}"),new Function("CTOR_LIST","ORDER",i.join("\n"))(f[t],s)}var f={float32:[],float64:[],int8:[],int16:[],int32:[],uint8:[],uint16:[],uint32:[],array:[],uint8_clamped:[],buffer:[],generic:[]};t.exports=function(t,r,e,n){if(void 0===t)return(0,f.array[0])([]);"number"==typeof t&&(t=[t]),void 0===r&&(r=[t.length]);var o=r.length;if(void 0===e){e=new Array(o);for(var s=o-1,l=1;s>=0;--s)e[s]=l,l*=r[s]}if(void 0===n){n=0;for(s=0;s<o;++s)e[s]<0&&(n-=(r[s]-1)*e[s])}for(var h=function(t){if(a(t))return"buffer";if(i)switch(Object.prototype.toString.call(t)){case"[object Float64Array]":return"float64";case"[object Float32Array]":return"float32";case"[object Int8Array]":return"int8";case"[object Int16Array]":return"int16";case"[object Int32Array]":return"int32";case"[object Uint8Array]":return"uint8";case"[object Uint16Array]":return"uint16";case"[object Uint32Array]":return"uint32";case"[object Uint8ClampedArray]":return"uint8_clamped"}return Array.isArray(t)?"array":"generic"}(t),c=f[h];c.length<=o+1;)c.push(u(h,c.length-1));return(0,c[o+1])(t,r,e,n)}},function(t,r,e){"use strict";var n=e(14),a={body:"",args:[],thisVars:[],localVars:[]};function i(t){if(!t)return a;for(var r=0;r<t.args.length;++r){var e=t.args[r];t.args[r]=0===r?{name:e,lvalue:!0,rvalue:!!t.rvalue,count:t.count||1}:{name:e,lvalue:!1,rvalue:!0,count:1}}return t.thisVars||(t.thisVars=[]),t.localVars||(t.localVars=[]),t}function o(t){for(var r=[],e=0;e<t.args.length;++e)r.push("a"+e);return new Function("P",["return function ",t.funcName,"_ndarrayops(",r.join(","),") {P(",r.join(","),");return a0}"].join(""))(function(t){return n({args:t.args,pre:i(t.pre),body:i(t.body),post:i(t.proc),funcName:t.funcName})}(t))}var s={add:"+",sub:"-",mul:"*",div:"/",mod:"%",band:"&",bor:"|",bxor:"^",lshift:"<<",rshift:">>",rrshift:">>>"};!function(){for(var t in s){var e=s[t];r[t]=o({args:["array","array","array"],body:{args:["a","b","c"],body:"a=b"+e+"c"},funcName:t}),r[t+"eq"]=o({args:["array","array"],body:{args:["a","b"],body:"a"+e+"=b"},rvalue:!0,funcName:t+"eq"}),r[t+"s"]=o({args:["array","array","scalar"],body:{args:["a","b","s"],body:"a=b"+e+"s"},funcName:t+"s"}),r[t+"seq"]=o({args:["array","scalar"],body:{args:["a","s"],body:"a"+e+"=s"},rvalue:!0,funcName:t+"seq"})}}();var u={not:"!",bnot:"~",neg:"-",recip:"1.0/"};!function(){for(var t in u){var e=u[t];r[t]=o({args:["array","array"],body:{args:["a","b"],body:"a="+e+"b"},funcName:t}),r[t+"eq"]=o({args:["array"],body:{args:["a"],body:"a="+e+"a"},rvalue:!0,count:2,funcName:t+"eq"})}}();var f={and:"&&",or:"||",eq:"===",neq:"!==",lt:"<",gt:">",leq:"<=",geq:">="};!function(){for(var t in f){var e=f[t];r[t]=o({args:["array","array","array"],body:{args:["a","b","c"],body:"a=b"+e+"c"},funcName:t}),r[t+"s"]=o({args:["array","array","scalar"],body:{args:["a","b","s"],body:"a=b"+e+"s"},funcName:t+"s"}),r[t+"eq"]=o({args:["array","array"],body:{args:["a","b"],body:"a=a"+e+"b"},rvalue:!0,count:2,funcName:t+"eq"}),r[t+"seq"]=o({args:["array","scalar"],body:{args:["a","s"],body:"a=a"+e+"s"},rvalue:!0,count:2,funcName:t+"seq"})}}();var l=["abs","acos","asin","atan","ceil","cos","exp","floor","log","round","sin","sqrt","tan"];!function(){for(var t=0;t<l.length;++t){var e=l[t];r[e]=o({args:["array","array"],pre:{args:[],body:"this_f=Math."+e,thisVars:["this_f"]},body:{args:["a","b"],body:"a=this_f(b)",thisVars:["this_f"]},funcName:e}),r[e+"eq"]=o({args:["array"],pre:{args:[],body:"this_f=Math."+e,thisVars:["this_f"]},body:{args:["a"],body:"a=this_f(a)",thisVars:["this_f"]},rvalue:!0,count:2,funcName:e+"eq"})}}();var h=["max","min","atan2","pow"];!function(){for(var t=0;t<h.length;++t){var e=h[t];r[e]=o({args:["array","array","array"],pre:{args:[],body:"this_f=Math."+e,thisVars:["this_f"]},body:{args:["a","b","c"],body:"a=this_f(b,c)",thisVars:["this_f"]},funcName:e}),r[e+"s"]=o({args:["array","array","scalar"],pre:{args:[],body:"this_f=Math."+e,thisVars:["this_f"]},body:{args:["a","b","c"],body:"a=this_f(b,c)",thisVars:["this_f"]},funcName:e+"s"}),r[e+"eq"]=o({args:["array","array"],pre:{args:[],body:"this_f=Math."+e,thisVars:["this_f"]},body:{args:["a","b"],body:"a=this_f(a,b)",thisVars:["this_f"]},rvalue:!0,count:2,funcName:e+"eq"}),r[e+"seq"]=o({args:["array","scalar"],pre:{args:[],body:"this_f=Math."+e,thisVars:["this_f"]},body:{args:["a","b"],body:"a=this_f(a,b)",thisVars:["this_f"]},rvalue:!0,count:2,funcName:e+"seq"})}}();var c=["atan2","pow"];!function(){for(var t=0;t<c.length;++t){var e=c[t];r[e+"op"]=o({args:["array","array","array"],pre:{args:[],body:"this_f=Math."+e,thisVars:["this_f"]},body:{args:["a","b","c"],body:"a=this_f(c,b)",thisVars:["this_f"]},funcName:e+"op"}),r[e+"ops"]=o({args:["array","array","scalar"],pre:{args:[],body:"this_f=Math."+e,thisVars:["this_f"]},body:{args:["a","b","c"],body:"a=this_f(c,b)",thisVars:["this_f"]},funcName:e+"ops"}),r[e+"opeq"]=o({args:["array","array"],pre:{args:[],body:"this_f=Math."+e,thisVars:["this_f"]},body:{args:["a","b"],body:"a=this_f(b,a)",thisVars:["this_f"]},rvalue:!0,count:2,funcName:e+"opeq"}),r[e+"opseq"]=o({args:["array","scalar"],pre:{args:[],body:"this_f=Math."+e,thisVars:["this_f"]},body:{args:["a","b"],body:"a=this_f(b,a)",thisVars:["this_f"]},rvalue:!0,count:2,funcName:e+"opseq"})}}(),r.any=n({args:["array"],pre:a,body:{args:[{name:"a",lvalue:!1,rvalue:!0,count:1}],body:"if(a){return true}",localVars:[],thisVars:[]},post:{args:[],localVars:[],thisVars:[],body:"return false"},funcName:"any"}),r.all=n({args:["array"],pre:a,body:{args:[{name:"x",lvalue:!1,rvalue:!0,count:1}],body:"if(!x){return false}",localVars:[],thisVars:[]},post:{args:[],localVars:[],thisVars:[],body:"return true"},funcName:"all"}),r.sum=n({args:["array"],pre:{args:[],localVars:[],thisVars:["this_s"],body:"this_s=0"},body:{args:[{name:"a",lvalue:!1,rvalue:!0,count:1}],body:"this_s+=a",localVars:[],thisVars:["this_s"]},post:{args:[],localVars:[],thisVars:["this_s"],body:"return this_s"},funcName:"sum"}),r.prod=n({args:["array"],pre:{args:[],localVars:[],thisVars:["this_s"],body:"this_s=1"},body:{args:[{name:"a",lvalue:!1,rvalue:!0,count:1}],body:"this_s*=a",localVars:[],thisVars:["this_s"]},post:{args:[],localVars:[],thisVars:["this_s"],body:"return this_s"},funcName:"prod"}),r.norm2squared=n({args:["array"],pre:{args:[],localVars:[],thisVars:["this_s"],body:"this_s=0"},body:{args:[{name:"a",lvalue:!1,rvalue:!0,count:2}],body:"this_s+=a*a",localVars:[],thisVars:["this_s"]},post:{args:[],localVars:[],thisVars:["this_s"],body:"return this_s"},funcName:"norm2squared"}),r.norm2=n({args:["array"],pre:{args:[],localVars:[],thisVars:["this_s"],body:"this_s=0"},body:{args:[{name:"a",lvalue:!1,rvalue:!0,count:2}],body:"this_s+=a*a",localVars:[],thisVars:["this_s"]},post:{args:[],localVars:[],thisVars:["this_s"],body:"return Math.sqrt(this_s)"},funcName:"norm2"}),r.norminf=n({args:["array"],pre:{args:[],localVars:[],thisVars:["this_s"],body:"this_s=0"},body:{args:[{name:"a",lvalue:!1,rvalue:!0,count:4}],body:"if(-a>this_s){this_s=-a}else if(a>this_s){this_s=a}",localVars:[],thisVars:["this_s"]},post:{args:[],localVars:[],thisVars:["this_s"],body:"return this_s"},funcName:"norminf"}),r.norm1=n({args:["array"],pre:{args:[],localVars:[],thisVars:["this_s"],body:"this_s=0"},body:{args:[{name:"a",lvalue:!1,rvalue:!0,count:3}],body:"this_s+=a<0?-a:a",localVars:[],thisVars:["this_s"]},post:{args:[],localVars:[],thisVars:["this_s"],body:"return this_s"},funcName:"norm1"}),r.sup=n({args:["array"],pre:{body:"this_h=-Infinity",args:[],thisVars:["this_h"],localVars:[]},body:{body:"if(_inline_1_arg0_>this_h)this_h=_inline_1_arg0_",args:[{name:"_inline_1_arg0_",lvalue:!1,rvalue:!0,count:2}],thisVars:["this_h"],localVars:[]},post:{body:"return this_h",args:[],thisVars:["this_h"],localVars:[]}}),r.inf=n({args:["array"],pre:{body:"this_h=Infinity",args:[],thisVars:["this_h"],localVars:[]},body:{body:"if(_inline_1_arg0_<this_h)this_h=_inline_1_arg0_",args:[{name:"_inline_1_arg0_",lvalue:!1,rvalue:!0,count:2}],thisVars:["this_h"],localVars:[]},post:{body:"return this_h",args:[],thisVars:["this_h"],localVars:[]}}),r.argmin=n({args:["index","array","shape"],pre:{body:"{this_v=Infinity;this_i=_inline_0_arg2_.slice(0)}",args:[{name:"_inline_0_arg0_",lvalue:!1,rvalue:!1,count:0},{name:"_inline_0_arg1_",lvalue:!1,rvalue:!1,count:0},{name:"_inline_0_arg2_",lvalue:!1,rvalue:!0,count:1}],thisVars:["this_i","this_v"],localVars:[]},body:{body:"{if(_inline_1_arg1_<this_v){this_v=_inline_1_arg1_;for(var _inline_1_k=0;_inline_1_k<_inline_1_arg0_.length;++_inline_1_k){this_i[_inline_1_k]=_inline_1_arg0_[_inline_1_k]}}}",args:[{name:"_inline_1_arg0_",lvalue:!1,rvalue:!0,count:2},{name:"_inline_1_arg1_",lvalue:!1,rvalue:!0,count:2}],thisVars:["this_i","this_v"],localVars:["_inline_1_k"]},post:{body:"{return this_i}",args:[],thisVars:["this_i"],localVars:[]}}),r.argmax=n({args:["index","array","shape"],pre:{body:"{this_v=-Infinity;this_i=_inline_0_arg2_.slice(0)}",args:[{name:"_inline_0_arg0_",lvalue:!1,rvalue:!1,count:0},{name:"_inline_0_arg1_",lvalue:!1,rvalue:!1,count:0},{name:"_inline_0_arg2_",lvalue:!1,rvalue:!0,count:1}],thisVars:["this_i","this_v"],localVars:[]},body:{body:"{if(_inline_1_arg1_>this_v){this_v=_inline_1_arg1_;for(var _inline_1_k=0;_inline_1_k<_inline_1_arg0_.length;++_inline_1_k){this_i[_inline_1_k]=_inline_1_arg0_[_inline_1_k]}}}",args:[{name:"_inline_1_arg0_",lvalue:!1,rvalue:!0,count:2},{name:"_inline_1_arg1_",lvalue:!1,rvalue:!0,count:2}],thisVars:["this_i","this_v"],localVars:["_inline_1_k"]},post:{body:"{return this_i}",args:[],thisVars:["this_i"],localVars:[]}}),r.random=o({args:["array"],pre:{args:[],body:"this_f=Math.random",thisVars:["this_f"]},body:{args:["a"],body:"a=this_f()",thisVars:["this_f"]},funcName:"random"}),r.assign=o({args:["array","array"],body:{args:["a","b"],body:"a=b"},funcName:"assign"}),r.assigns=o({args:["array","scalar"],body:{args:["a","b"],body:"a=b"},funcName:"assigns"}),r.equals=n({args:["array","array"],pre:a,body:{args:[{name:"x",lvalue:!1,rvalue:!0,count:1},{name:"y",lvalue:!1,rvalue:!0,count:1}],body:"if(x!==y){return false}",localVars:[],thisVars:[]},post:{args:[],localVars:[],thisVars:[],body:"return true"},funcName:"equals"})},function(t,r,e){"use strict";(function(t,n){var a=e(22),i=e(23);t.__TYPEDARRAY_POOL||(t.__TYPEDARRAY_POOL={UINT8:i([32,0]),UINT16:i([32,0]),UINT32:i([32,0]),INT8:i([32,0]),INT16:i([32,0]),INT32:i([32,0]),FLOAT:i([32,0]),DOUBLE:i([32,0]),DATA:i([32,0]),UINT8C:i([32,0]),BUFFER:i([32,0])});var o="undefined"!=typeof Uint8ClampedArray,s=t.__TYPEDARRAY_POOL;s.UINT8C||(s.UINT8C=i([32,0])),s.BUFFER||(s.BUFFER=i([32,0]));var u=s.DATA,f=s.BUFFER;function l(t){if(t){var r=t.length||t.byteLength,e=a.log2(r);u[e].push(t)}}function h(t){t=a.nextPow2(t);var r=a.log2(t),e=u[r];return e.length>0?e.pop():new ArrayBuffer(t)}function c(t){return new Uint8Array(h(t),0,t)}function p(t){return new Uint16Array(h(2*t),0,t)}function g(t){return new Uint32Array(h(4*t),0,t)}function _(t){return new Int8Array(h(t),0,t)}function d(t){return new Int16Array(h(2*t),0,t)}function E(t){return new Int32Array(h(4*t),0,t)}function v(t){return new Float32Array(h(4*t),0,t)}function y(t){return new Float64Array(h(8*t),0,t)}function m(t){return o?new Uint8ClampedArray(h(t),0,t):c(t)}function T(t){return new DataView(h(t),0,t)}function A(t){t=a.nextPow2(t);var r=a.log2(t),e=f[r];return e.length>0?e.pop():new n(t)}r.free=function(t){if(n.isBuffer(t))f[a.log2(t.length)].push(t);else{if("[object ArrayBuffer]"!==Object.prototype.toString.call(t)&&(t=t.buffer),!t)return;var r=t.length||t.byteLength,e=0|a.log2(r);u[e].push(t)}},r.freeUint8=r.freeUint16=r.freeUint32=r.freeInt8=r.freeInt16=r.freeInt32=r.freeFloat32=r.freeFloat=r.freeFloat64=r.freeDouble=r.freeUint8Clamped=r.freeDataView=function(t){l(t.buffer)},r.freeArrayBuffer=l,r.freeBuffer=function(t){f[a.log2(t.length)].push(t)},r.malloc=function(t,r){if(void 0===r||"arraybuffer"===r)return h(t);switch(r){case"uint8":return c(t);case"uint16":return p(t);case"uint32":return g(t);case"int8":return _(t);case"int16":return d(t);case"int32":return E(t);case"float":case"float32":return v(t);case"double":case"float64":return y(t);case"uint8_clamped":return m(t);case"buffer":return A(t);case"data":case"dataview":return T(t);default:return null}return null},r.mallocArrayBuffer=h,r.mallocUint8=c,r.mallocUint16=p,r.mallocUint32=g,r.mallocInt8=_,r.mallocInt16=d,r.mallocInt32=E,r.mallocFloat32=r.mallocFloat=v,r.mallocFloat64=r.mallocDouble=y,r.mallocUint8Clamped=m,r.mallocDataView=T,r.mallocBuffer=A,r.clearCache=function(){for(var t=0;t<32;++t)s.UINT8[t].length=0,s.UINT16[t].length=0,s.UINT32[t].length=0,s.INT8[t].length=0,s.INT16[t].length=0,s.INT32[t].length=0,s.FLOAT[t].length=0,s.DOUBLE[t].length=0,s.UINT8C[t].length=0,u[t].length=0,f[t].length=0}}).call(this,e(5),e(18).Buffer)},function(t,r){var e;e=function(){return this}();try{e=e||new Function("return this")()}catch(t){"object"==typeof window&&(e=window)}t.exports=e},function(t,r,e){"use strict";t.exports=function(t,r){for(var e={},n=0;n<t.length;++n)for(var a=t[n].name.split("."),i=e,o=0;o<a.length;++o){var s=a[o].split("[");if(s.length>1){s[0]in i||(i[s[0]]=[]),i=i[s[0]];for(var u=1;u<s.length;++u){var f=parseInt(s[u]);u<s.length-1||o<a.length-1?(f in i||(u<s.length-1?i[f]=[]:i[f]={}),i=i[f]):i[f]=r?n:t[n].type}}else o<a.length-1?(s[0]in i||(i[s[0]]={}),i=i[s[0]]):i[s[0]]=r?n:t[n].type}return e}},function(t,r){t.exports=["precision","highp","mediump","lowp","attribute","const","uniform","varying","break","continue","do","for","while","if","else","in","out","inout","float","int","uint","void","bool","true","false","discard","return","mat2","mat3","mat4","vec2","vec3","vec4","ivec2","ivec3","ivec4","bvec2","bvec3","bvec4","sampler1D","sampler2D","sampler3D","samplerCube","sampler1DShadow","sampler2DShadow","struct","asm","class","union","enum","typedef","template","this","packed","goto","switch","default","inline","noinline","volatile","public","static","extern","external","interface","long","short","double","half","fixed","unsigned","input","output","hvec2","hvec3","hvec4","dvec2","dvec3","dvec4","fvec2","fvec3","fvec4","sampler2DRect","sampler3DRect","sampler2DRectShadow","sizeof","cast","namespace","using"]},function(t,r){t.exports=["abs","acos","all","any","asin","atan","ceil","clamp","cos","cross","dFdx","dFdy","degrees","distance","dot","equal","exp","exp2","faceforward","floor","fract","gl_BackColor","gl_BackLightModelProduct","gl_BackLightProduct","gl_BackMaterial","gl_BackSecondaryColor","gl_ClipPlane","gl_ClipVertex","gl_Color","gl_DepthRange","gl_DepthRangeParameters","gl_EyePlaneQ","gl_EyePlaneR","gl_EyePlaneS","gl_EyePlaneT","gl_Fog","gl_FogCoord","gl_FogFragCoord","gl_FogParameters","gl_FragColor","gl_FragCoord","gl_FragData","gl_FragDepth","gl_FragDepthEXT","gl_FrontColor","gl_FrontFacing","gl_FrontLightModelProduct","gl_FrontLightProduct","gl_FrontMaterial","gl_FrontSecondaryColor","gl_LightModel","gl_LightModelParameters","gl_LightModelProducts","gl_LightProducts","gl_LightSource","gl_LightSourceParameters","gl_MaterialParameters","gl_MaxClipPlanes","gl_MaxCombinedTextureImageUnits","gl_MaxDrawBuffers","gl_MaxFragmentUniformComponents","gl_MaxLights","gl_MaxTextureCoords","gl_MaxTextureImageUnits","gl_MaxTextureUnits","gl_MaxVaryingFloats","gl_MaxVertexAttribs","gl_MaxVertexTextureImageUnits","gl_MaxVertexUniformComponents","gl_ModelViewMatrix","gl_ModelViewMatrixInverse","gl_ModelViewMatrixInverseTranspose","gl_ModelViewMatrixTranspose","gl_ModelViewProjectionMatrix","gl_ModelViewProjectionMatrixInverse","gl_ModelViewProjectionMatrixInverseTranspose","gl_ModelViewProjectionMatrixTranspose","gl_MultiTexCoord0","gl_MultiTexCoord1","gl_MultiTexCoord2","gl_MultiTexCoord3","gl_MultiTexCoord4","gl_MultiTexCoord5","gl_MultiTexCoord6","gl_MultiTexCoord7","gl_Normal","gl_NormalMatrix","gl_NormalScale","gl_ObjectPlaneQ","gl_ObjectPlaneR","gl_ObjectPlaneS","gl_ObjectPlaneT","gl_Point","gl_PointCoord","gl_PointParameters","gl_PointSize","gl_Position","gl_ProjectionMatrix","gl_ProjectionMatrixInverse","gl_ProjectionMatrixInverseTranspose","gl_ProjectionMatrixTranspose","gl_SecondaryColor","gl_TexCoord","gl_TextureEnvColor","gl_TextureMatrix","gl_TextureMatrixInverse","gl_TextureMatrixInverseTranspose","gl_TextureMatrixTranspose","gl_Vertex","greaterThan","greaterThanEqual","inversesqrt","length","lessThan","lessThanEqual","log","log2","matrixCompMult","max","min","mix","mod","normalize","not","notEqual","pow","radians","reflect","refract","sign","sin","smoothstep","sqrt","step","tan","texture2D","texture2DLod","texture2DProj","texture2DProjLod","textureCube","textureCubeLod","texture2DLodEXT","texture2DProjLodEXT","textureCubeLodEXT","texture2DGradEXT","texture2DProjGradEXT","textureCubeGradEXT"]},function(t,r,e){"use strict";t.exports=function(t,r,e){r?r.bind():t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,null);var n=0|t.getParameter(t.MAX_VERTEX_ATTRIBS);if(e){if(e.length>n)throw new Error("gl-vao: Too many vertex attributes");for(var a=0;a<e.length;++a){var i=e[a];if(i.buffer){var o=i.buffer,s=i.size||4,u=i.type||t.FLOAT,f=!!i.normalized,l=i.stride||0,h=i.offset||0;o.bind(),t.enableVertexAttribArray(a),t.vertexAttribPointer(a,s,u,f,l,h)}else{if("number"==typeof i)t.vertexAttrib1f(a,i);else if(1===i.length)t.vertexAttrib1f(a,i[0]);else if(2===i.length)t.vertexAttrib2f(a,i[0],i[1]);else if(3===i.length)t.vertexAttrib3f(a,i[0],i[1],i[2]);else{if(4!==i.length)throw new Error("gl-vao: Invalid vertex attribute");t.vertexAttrib4f(a,i[0],i[1],i[2],i[3])}t.disableVertexAttribArray(a)}}for(;a<n;++a)t.disableVertexAttribArray(a)}else{t.bindBuffer(t.ARRAY_BUFFER,null);for(a=0;a<n;++a)t.disableVertexAttribArray(a)}}},function(t,r){t.exports=function(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}},function(t,r,e){"use strict";function n(){var t=.1,r=.5,e=0,n=.5,a=[],i=[];this.getNumVerts=()=>a.length/3|0,this.getNumPolys=()=>a.length/9|0,this.getVertArray=()=>a,this.getColorArray=()=>i,this.setArrays=(t,r)=>{a=t,i=r},this.setAlphaRange=(e,n)=>{(e||0===e)&&(t=e),(n||0===n)&&(r=n)},this.setAdjust=t=>{n=t},this.setFlattenZ=t=>{e=t};var o=()=>Math.random(),s=(t,r)=>t+(r-t)*Math.random(),u=t=>{if(!t)return o();var r=Math.max(0,t-n),e=Math.min(1,t+n);return s(r,e)},f=e=>{if(!e)return s(t,r);var a=Math.max(t,e-n),i=Math.min(r,e+n);return s(a,i)};this.addPoly=function(){for(var t=0;t<3;t++){for(var r=0;r<3;r++)a.push(u()),i.push(u());i.push(f())}if(e>0){var n=a.length,o=a[n-1];a[n-4]+=e*(o-a[n-4]),a[n-7]+=e*(o-a[n-7])}},this.removePoly=function(){if(!(this.getNumPolys()<2)){var t=o()*a.length/9|0;a.splice(9*t,9),i.splice(12*t,12)}},this.mutateValue=function(){if(o()<.5){var t=o()*i.length|0,r=t%4==3?f:u;i[t]=r(i[t])}else{var e=o()*a.length|0;a[e]=u(a[e])}},this.mutateVertex=function(){var t=o()*this.getNumVerts()|0;if(o()<.5){for(var r=4*t,e=0;e<3;e++)i[r+e]=u(i[r+e]);i[r+3]=f(i[r+3])}else for(var n=3*t,s=0;s<3;s++)a[n+s]=u(a[n+s])},this.cacheDataNow=function(){l=a.slice(),h=i.slice()},this.restoreCachedData=function(){a=l,i=h};var l=null,h=null;this.sortPolygonsByZ=function(){var t,r,e=[];for(t=0;t<a.length;t+=9){var n=(a[t+2]+a[t+5]+a[t+8])/3;e.push({index:t/9,z:n})}e.sort(c);var o=a.slice(),s=i.slice();for(t=0;t<e.length;t++){var u=e[t];for(r=0;r<9;r++)a[9*t+r]=o[9*u.index+r];for(r=0;r<12;r++)i[12*t+r]=s[12*u.index+r]}};var c=(t,r)=>t.z-r.z;this.addPoly(),this.sortPolygonsByZ()}
/*!
* glsl-projectron: experimental GPGPU thingy
* @url github.com/fenomas/glsl-projectron
* @author Andy Hall <andy@fenomas.com>
* @license MIT
*/e.d(r,"a",(function(){return h}));var a=e(1),i=e(24),o=e(25),s=e(47),u=e(48),f=e(51),l=e(52);function h(t,r){if(!t||!t.getContext)throw"Error: pass in a canvas element!";r=parseInt(r)||256;var h=Math.pow(2,Math.round(Math.log2(r))),c=t.getContext("webgl",{alpha:!1});if(!c)throw"Error: webgl not supported?";var p=.001,g=Math.max(32,h),_=null,d=-100;this.setTargetImage=function(t){C(),O(_=a(c,t),b,!0),B(R,.2,null),d=j(b,R)},this.setAlphaRange=(t,r)=>N.setAlphaRange(+t,+r),this.setAdjustAmount=t=>N.setAdjust(+t),this.setFewerPolyTolerance=t=>{p=t||0},this.getScore=()=>d,this.getNumPolys=()=>N.getNumPolys(),this.draw=(t,r)=>{!function(t,r){U&&(S.update(N.getVertArray()),M.update(N.getColorArray()));D=l.create(),l.rotateY(D,D,t||0),l.rotateX(D,D,r||0),B(null,.2,D)}(t,r)},this.drawTargetImage=()=>{!function(){if(!_)return;O(b.color[0],null,!1)}()},this._drawScratchImage=()=>{!function(){if(!_)return;O(R.color[0],null,!1)}()},this.version=e(81).version,c.disable(c.DEPTH_TEST),c.enable(c.BLEND),c.blendFunc(c.SRC_ALPHA,c.ONE_MINUS_SRC_ALPHA);var E={},v=e(82);v.keys().forEach(t=>{var r=/([\w-]+)/.exec(t)[1],e=v(t).default;E[r]=f(e)});var y=o(c,E["camera-vert"],E["camera-frag"]),m=o(c,E["flatTexture-vert"],E["flatTexture-frag"]),T=o(c,E["flatTexture-vert"],E["diffReduce4-frag"]),A=o(c,E["flatTexture-vert"],E["avgReduce4-frag"]),b=s(c,[g,g],{color:1});b.drawn=!1;for(var R=s(c,[g,g],{color:1}),w=[],x=g/4;x>=16;){var I=s(c,[x,x],{color:1});w.push(I),x/=4}if(0===w.length)throw new Error('Comparison framebuffer is too small - increase "fboSize"');var N=new n,S=i(c,N.getVertArray()),M=i(c,N.getColorArray()),U=!1,F=u(c,[{buffer:S,type:c.FLOAT,size:3},{buffer:M,type:c.FLOAT,size:4}]),P=i(c,[-1,-1,-1,1,1,-1,1,1,-1,1,1,-1]),L=u(c,[{buffer:P,type:c.FLOAT,size:2}]),D=l.create();function C(){c.bindFramebuffer(c.FRAMEBUFFER,null),c.viewport(0,0,c.canvas.width,c.canvas.height),c.clearStencil(0),c.clearColor(0,0,0,1),c.clearDepth(1),c.clear(c.COLOR_BUFFER_BIT|c.DEPTH_BUFFER_BIT|c.STENCIL_BUFFER_BIT)}function O(t,r,e){V(r,m,L,6,["multY","buffer"],[e?-1:1,t])}function B(t,r,e){D=e||l.create(),V(t,y,F,N.getNumVerts(),["perspective","camera"],[r,D])}function V(t,r,e,n,a,i){t?(t.bind(),c.colorMask(!0,!0,!0,!0),c.clear(c.COLOR_BUFFER_BIT),c.colorMask(!0,!0,!0,!1)):C(),r.bind();for(var o=0,s=0;s<a.length;s++){var u=a[s],f=i[s];"function"==typeof f.bind?r.uniforms[u]=f.bind(o++):r.uniforms[u]=f}e.bind(),e.draw(c.TRIANGLES,n),e.unbind()}function j(t,r){return function(t,r){var e,n,a;for(e=["multY","inputDim","bufferA","bufferB"],n=[1,t.shape[0],t.color[0],r.color[0]],V(w[0],T,L,6,e,n),a=1;a<w.length;a++)e=["multY","inputDim","buffer"],n=[1,w[a-1].shape[0],w[a-1].color[0]],V(w[a],A,L,6,e,n);var i=w[w.length-1],o=i.shape[0],s=new Uint8Array(o*o*4);i.bind(),c.readPixels(0,0,o,o,c.RGBA,c.UNSIGNED_BYTE,s);var u=0;for(a=0;a<s.length;a+=4)u+=s[a]+(s[a+1]+s[a+2]/255)/255;return 100*(1-3*u/o/o/128)}(t,r)}this.runGeneration=function(){if(_){N.cacheDataNow();var t,r=N.getNumVerts();(t=Math.random())<.25?N.mutateValue():t<.5?N.mutateVertex():t<.8?N.addPoly():N.removePoly(),N.sortPolygonsByZ(),S.update(N.getVertArray()),M.update(N.getColorArray()),U=!1,B(R,.2,null);var e=j(b,R),n=e>d;!n&&N.getNumVerts()<r&&e>d-p&&(n=!0),n?d=e:(N.restoreCachedData(),U=!0)}},this.exportData=function(){var t="vert-xyz,";return t+=N.getVertArray().map(t=>t.toFixed(8)).join(),t+=",\ncol-rgba,",t+=N.getColorArray().map(t=>t.toFixed(5)).join()},this.importData=function(t){var r,e=[],n=[],a=t.split(",");if(!(t.length<5)){if(a.forEach((function(t){var a=parseFloat(t);t.indexOf("vert-xyz")>-1?r=e:t.indexOf("col-rgba")>-1?r=n:r&&!isNaN(a)?r.push(a):console.warn("Import: ignoring value "+t)})),e.length/3==n.length/4)return N.setArrays(e,n),S.update(N.getVertArray()),M.update(N.getColorArray()),_&&(B(R,.2,null),d=j(b,R)),!0;console.warn(`Import failed: unbalanced counts, verts=${e.length/3} cols=${n.length/4}`)}}}},function(t,r,e){"use strict";t.exports=function(t){for(var r=new Array(t),e=0;e<t;++e)r[e]=e;return r}},function(t,r){function e(t){return!!t.constructor&&"function"==typeof t.constructor.isBuffer&&t.constructor.isBuffer(t)}
/*!
* Determine if an object is a Buffer
*
* @author Feross Aboukhadijeh <https://feross.org>
* @license MIT
*/
t.exports=function(t){return null!=t&&(e(t)||function(t){return"function"==typeof t.readFloatLE&&"function"==typeof t.slice&&e(t.slice(0,0))}(t)||!!t._isBuffer)}},function(t,r,e){"use strict";var n=e(15);function a(){this.argTypes=[],this.shimArgs=[],this.arrayArgs=[],this.arrayBlockIndices=[],this.scalarArgs=[],this.offsetArgs=[],this.offsetArgIndex=[],this.indexArgs=[],this.shapeArgs=[],this.funcName="",this.pre=null,this.body=null,this.post=null,this.debug=!1}t.exports=function(t){var r=new a;r.pre=t.pre,r.body=t.body,r.post=t.post;var e=t.args.slice(0);r.argTypes=e;for(var i=0;i<e.length;++i){var o=e[i];if("array"===o||"object"==typeof o&&o.blockIndices){if(r.argTypes[i]="array",r.arrayArgs.push(i),r.arrayBlockIndices.push(o.blockIndices?o.blockIndices:0),r.shimArgs.push("array"+i),i<r.pre.args.length&&r.pre.args[i].count>0)throw new Error("cwise: pre() block may not reference array args");if(i<r.post.args.length&&r.post.args[i].count>0)throw new Error("cwise: post() block may not reference array args")}else if("scalar"===o)r.scalarArgs.push(i),r.shimArgs.push("scalar"+i);else if("index"===o){if(r.indexArgs.push(i),i<r.pre.args.length&&r.pre.args[i].count>0)throw new Error("cwise: pre() block may not reference array index");if(i<r.body.args.length&&r.body.args[i].lvalue)throw new Error("cwise: body() block may not write to array index");if(i<r.post.args.length&&r.post.args[i].count>0)throw new Error("cwise: post() block may not reference array index")}else if("shape"===o){if(r.shapeArgs.push(i),i<r.pre.args.length&&r.pre.args[i].lvalue)throw new Error("cwise: pre() block may not write to array shape");if(i<r.body.args.length&&r.body.args[i].lvalue)throw new Error("cwise: body() block may not write to array shape");if(i<r.post.args.length&&r.post.args[i].lvalue)throw new Error("cwise: post() block may not write to array shape")}else{if("object"!=typeof o||!o.offset)throw new Error("cwise: Unknown argument type "+e[i]);r.argTypes[i]="offset",r.offsetArgs.push({array:o.array,offset:o.offset}),r.offsetArgIndex.push(i)}}if(r.arrayArgs.length<=0)throw new Error("cwise: No array arguments specified");if(r.pre.args.length>e.length)throw new Error("cwise: Too many arguments in pre() block");if(r.body.args.length>e.length)throw new Error("cwise: Too many arguments in body() block");if(r.post.args.length>e.length)throw new Error("cwise: Too many arguments in post() block");return r.debug=!!t.printCode||!!t.debug,r.funcName=t.funcName||"cwise",r.blockSize=t.blockSize||64,n(r)}},function(t,r,e){"use strict";var n=e(16);t.exports=function(t){var r=["'use strict'","var CACHED={}"],e=[],a=t.funcName+"_cwise_thunk";r.push(["return function ",a,"(",t.shimArgs.join(","),"){"].join(""));for(var i=[],o=[],s=[["array",t.arrayArgs[0],".shape.slice(",Math.max(0,t.arrayBlockIndices[0]),t.arrayBlockIndices[0]<0?","+t.arrayBlockIndices[0]+")":")"].join("")],u=[],f=[],l=0;l<t.arrayArgs.length;++l){var h=t.arrayArgs[l];e.push(["t",h,"=array",h,".dtype,","r",h,"=array",h,".order"].join("")),i.push("t"+h),i.push("r"+h),o.push("t"+h),o.push("r"+h+".join()"),s.push("array"+h+".data"),s.push("array"+h+".stride"),s.push("array"+h+".offset|0"),l>0&&(u.push("array"+t.arrayArgs[0]+".shape.length===array"+h+".shape.length+"+(Math.abs(t.arrayBlockIndices[0])-Math.abs(t.arrayBlockIndices[l]))),f.push("array"+t.arrayArgs[0]+".shape[shapeIndex+"+Math.max(0,t.arrayBlockIndices[0])+"]===array"+h+".shape[shapeIndex+"+Math.max(0,t.arrayBlockIndices[l])+"]"))}for(t.arrayArgs.length>1&&(r.push("if (!("+u.join(" && ")+")) throw new Error('cwise: Arrays do not all have the same dimensionality!')"),r.push("for(var shapeIndex=array"+t.arrayArgs[0]+".shape.length-"+Math.abs(t.arrayBlockIndices[0])+"; shapeIndex--\x3e0;) {"),r.push("if (!("+f.join(" && ")+")) throw new Error('cwise: Arrays do not all have the same shape!')"),r.push("}")),l=0;l<t.scalarArgs.length;++l)s.push("scalar"+t.scalarArgs[l]);return e.push(["type=[",o.join(","),"].join()"].join("")),e.push("proc=CACHED[type]"),r.push("var "+e.join(",")),r.push(["if(!proc){","CACHED[type]=proc=compile([",i.join(","),"])}","return proc(",s.join(","),")}"].join("")),t.debug&&console.log("-----Generated thunk:\n"+r.join("\n")+"\n----------"),new Function("compile",r.join("\n"))(n.bind(void 0,t))}},function(t,r,e){"use strict";var n=e(17);function a(t,r,e){var n,a,i=t.length,o=r.arrayArgs.length,s=r.indexArgs.length>0,u=[],f=[],l=0,h=0;for(n=0;n<i;++n)f.push(["i",n,"=0"].join(""));for(a=0;a<o;++a)for(n=0;n<i;++n)h=l,l=t[n],0===n?f.push(["d",a,"s",n,"=t",a,"p",l].join("")):f.push(["d",a,"s",n,"=(t",a,"p",l,"-s",h,"*t",a,"p",h,")"].join(""));for(f.length>0&&u.push("var "+f.join(",")),n=i-1;n>=0;--n)l=t[n],u.push(["for(i",n,"=0;i",n,"<s",l,";++i",n,"){"].join(""));for(u.push(e),n=0;n<i;++n){for(h=l,l=t[n],a=0;a<o;++a)u.push(["p",a,"+=d",a,"s",n].join(""));s&&(n>0&&u.push(["index[",h,"]-=s",h].join("")),u.push(["++index[",l,"]"].join(""))),u.push("}")}return u.join("\n")}function i(t,r,e){for(var n=t.body,a=[],i=[],o=0;o<t.args.length;++o){var s=t.args[o];if(!(s.count<=0)){var u=new RegExp(s.name,"g"),f="",l=r.arrayArgs.indexOf(o);switch(r.argTypes[o]){case"offset":var h=r.offsetArgIndex.indexOf(o);l=r.offsetArgs[h].array,f="+q"+h;case"array":f="p"+l+f;var c="l"+o,p="a"+l;if(0===r.arrayBlockIndices[l])1===s.count?"generic"===e[l]?s.lvalue?(a.push(["var ",c,"=",p,".get(",f,")"].join("")),n=n.replace(u,c),i.push([p,".set(",f,",",c,")"].join(""))):n=n.replace(u,[p,".get(",f,")"].join("")):n=n.replace(u,[p,"[",f,"]"].join("")):"generic"===e[l]?(a.push(["var ",c,"=",p,".get(",f,")"].join("")),n=n.replace(u,c),s.lvalue&&i.push([p,".set(",f,",",c,")"].join(""))):(a.push(["var ",c,"=",p,"[",f,"]"].join("")),n=n.replace(u,c),s.lvalue&&i.push([p,"[",f,"]=",c].join("")));else{for(var g=[s.name],_=[f],d=0;d<Math.abs(r.arrayBlockIndices[l]);d++)g.push("\\s*\\[([^\\]]+)\\]"),_.push("$"+(d+1)+"*t"+l+"b"+d);if(u=new RegExp(g.join(""),"g"),f=_.join("+"),"generic"===e[l])throw new Error("cwise: Generic arrays not supported in combination with blocks!");n=n.replace(u,[p,"[",f,"]"].join(""))}break;case"scalar":n=n.replace(u,"Y"+r.scalarArgs.indexOf(o));break;case"index":n=n.replace(u,"index");break;case"shape":n=n.replace(u,"shape")}}}return[a.join("\n"),n,i.join("\n")].join("\n").trim()}function o(t){for(var r=new Array(t.length),e=!0,n=0;n<t.length;++n){var a=t[n],i=a.match(/\d+/);i=i?i[0]:"",0===a.charAt(0)?r[n]="u"+a.charAt(1)+i:r[n]=a.charAt(0)+i,n>0&&(e=e&&r[n]===r[n-1])}return e?r[0]:r.join("")}t.exports=function(t,r){for(var e=r[1].length-Math.abs(t.arrayBlockIndices[0])|0,s=new Array(t.arrayArgs.length),u=new Array(t.arrayArgs.length),f=0;f<t.arrayArgs.length;++f)u[f]=r[2*f],s[f]=r[2*f+1];var l=[],h=[],c=[],p=[],g=[];for(f=0;f<t.arrayArgs.length;++f){t.arrayBlockIndices[f]<0?(c.push(0),p.push(e),l.push(e),h.push(e+t.arrayBlockIndices[f])):(c.push(t.arrayBlockIndices[f]),p.push(t.arrayBlockIndices[f]+e),l.push(0),h.push(t.arrayBlockIndices[f]));for(var _=[],d=0;d<s[f].length;d++)c[f]<=s[f][d]&&s[f][d]<p[f]&&_.push(s[f][d]-c[f]);g.push(_)}var E=["SS"],v=["'use strict'"],y=[];for(d=0;d<e;++d)y.push(["s",d,"=SS[",d,"]"].join(""));for(f=0;f<t.arrayArgs.length;++f){E.push("a"+f),E.push("t"+f),E.push("p"+f);for(d=0;d<e;++d)y.push(["t",f,"p",d,"=t",f,"[",c[f]+d,"]"].join(""));for(d=0;d<Math.abs(t.arrayBlockIndices[f]);++d)y.push(["t",f,"b",d,"=t",f,"[",l[f]+d,"]"].join(""))}for(f=0;f<t.scalarArgs.length;++f)E.push("Y"+f);if(t.shapeArgs.length>0&&y.push("shape=SS.slice(0)"),t.indexArgs.length>0){var m=new Array(e);for(f=0;f<e;++f)m[f]="0";y.push(["index=[",m.join(","),"]"].join(""))}for(f=0;f<t.offsetArgs.length;++f){var T=t.offsetArgs[f],A=[];for(d=0;d<T.offset.length;++d)0!==T.offset[d]&&(1===T.offset[d]?A.push(["t",T.array,"p",d].join("")):A.push([T.offset[d],"*t",T.array,"p",d].join("")));0===A.length?y.push("q"+f+"=0"):y.push(["q",f,"=",A.join("+")].join(""))}var b=n([].concat(t.pre.thisVars).concat(t.body.thisVars).concat(t.post.thisVars));for((y=y.concat(b)).length>0&&v.push("var "+y.join(",")),f=0;f<t.arrayArgs.length;++f)v.push("p"+f+"|=0");t.pre.body.length>3&&v.push(i(t.pre,t,u));var R=i(t.body,t,u),w=function(t){for(var r=0,e=t[0].length;r<e;){for(var n=1;n<t.length;++n)if(t[n][r]!==t[0][r])return r;++r}return r}(g);w<e?v.push(function(t,r,e,n){for(var i=r.length,o=e.arrayArgs.length,s=e.blockSize,u=e.indexArgs.length>0,f=[],l=0;l<o;++l)f.push(["var offset",l,"=p",l].join(""));for(l=t;l<i;++l)f.push(["for(var j"+l+"=SS[",r[l],"]|0;j",l,">0;){"].join("")),f.push(["if(j",l,"<",s,"){"].join("")),f.push(["s",r[l],"=j",l].join("")),f.push(["j",l,"=0"].join("")),f.push(["}else{s",r[l],"=",s].join("")),f.push(["j",l,"-=",s,"}"].join("")),u&&f.push(["index[",r[l],"]=j",l].join(""));for(l=0;l<o;++l){for(var h=["offset"+l],c=t;c<i;++c)h.push(["j",c,"*t",l,"p",r[c]].join(""));f.push(["p",l,"=(",h.join("+"),")"].join(""))}for(f.push(a(r,e,n)),l=t;l<i;++l)f.push("}");return f.join("\n")}(w,g[0],t,R)):v.push(a(g[0],t,R)),t.post.body.length>3&&v.push(i(t.post,t,u)),t.debug&&console.log("-----Generated cwise routine for ",r,":\n"+v.join("\n")+"\n----------");var x=[t.funcName||"unnamed","_cwise_loop_",s[0].join("s"),"m",w,o(u)].join("");return new Function(["function ",x,"(",E.join(","),"){",v.join("\n"),"} return ",x].join(""))()}},function(t,r,e){"use strict";t.exports=function(t,r,e){return 0===t.length?t:r?(e||t.sort(r),function(t,r){for(var e=1,n=t.length,a=t[0],i=t[0],o=1;o<n;++o)if(i=a,r(a=t[o],i)){if(o===e){e++;continue}t[e++]=a}return t.length=e,t}(t,r)):(e||t.sort(),function(t){for(var r=1,e=t.length,n=t[0],a=t[0],i=1;i<e;++i,a=n)if(a=n,(n=t[i])!==a){if(i===r){r++;continue}t[r++]=n}return t.length=r,t}(t))}},function(t,r,e){"use strict";(function(t){
/*!
* The buffer module from node.js, for the browser.
*
* @author Feross Aboukhadijeh <http://feross.org>
* @license MIT
*/
var n=e(19),a=e(20),i=e(21);function o(){return u.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function s(t,r){if(o()<r)throw new RangeError("Invalid typed array length");return u.TYPED_ARRAY_SUPPORT?(t=new Uint8Array(r)).__proto__=u.prototype:(null===t&&(t=new u(r)),t.length=r),t}function u(t,r,e){if(!(u.TYPED_ARRAY_SUPPORT||this instanceof u))return new u(t,r,e);if("number"==typeof t){if("string"==typeof r)throw new Error("If encoding is specified then the first argument must be a string");return h(this,t)}return f(this,t,r,e)}function f(t,r,e,n){if("number"==typeof r)throw new TypeError('"value" argument must not be a number');return"undefined"!=typeof ArrayBuffer&&r instanceof ArrayBuffer?function(t,r,e,n){if(r.byteLength,e<0||r.byteLength<e)throw new RangeError("'offset' is out of bounds");if(r.byteLength<e+(n||0))throw new RangeError("'length' is out of bounds");r=void 0===e&&void 0===n?new Uint8Array(r):void 0===n?new Uint8Array(r,e):new Uint8Array(r,e,n);u.TYPED_ARRAY_SUPPORT?(t=r).__proto__=u.prototype:t=c(t,r);return t}(t,r,e,n):"string"==typeof r?function(t,r,e){"string"==typeof e&&""!==e||(e="utf8");if(!u.isEncoding(e))throw new TypeError('"encoding" must be a valid string encoding');var n=0|g(r,e),a=(t=s(t,n)).write(r,e);a!==n&&(t=t.slice(0,a));return t}(t,r,e):function(t,r){if(u.isBuffer(r)){var e=0|p(r.length);return 0===(t=s(t,e)).length||r.copy(t,0,0,e),t}if(r){if("undefined"!=typeof ArrayBuffer&&r.buffer instanceof ArrayBuffer||"length"in r)return"number"!=typeof r.length||(n=r.length)!=n?s(t,0):c(t,r);if("Buffer"===r.type&&i(r.data))return c(t,r.data)}var n;throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")}(t,r)}function l(t){if("number"!=typeof t)throw new TypeError('"size" argument must be a number');if(t<0)throw new RangeError('"size" argument must not be negative')}function h(t,r){if(l(r),t=s(t,r<0?0:0|p(r)),!u.TYPED_ARRAY_SUPPORT)for(var e=0;e<r;++e)t[e]=0;return t}function c(t,r){var e=r.length<0?0:0|p(r.length);t=s(t,e);for(var n=0;n<e;n+=1)t[n]=255&r[n];return t}function p(t){if(t>=o())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+o().toString(16)+" bytes");return 0|t}function g(t,r){if(u.isBuffer(t))return t.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(t)||t instanceof ArrayBuffer))return t.byteLength;"string"!=typeof t&&(t=""+t);var e=t.length;if(0===e)return 0;for(var n=!1;;)switch(r){case"ascii":case"latin1":case"binary":return e;case"utf8":case"utf-8":case void 0:return j(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*e;case"hex":return e>>>1;case"base64":return k(t).length;default:if(n)return j(t).length;r=(""+r).toLowerCase(),n=!0}}function _(t,r,e){var n=!1;if((void 0===r||r<0)&&(r=0),r>this.length)return"";if((void 0===e||e>this.length)&&(e=this.length),e<=0)return"";if((e>>>=0)<=(r>>>=0))return"";for(t||(t="utf8");;)switch(t){case"hex":return S(this,r,e);case"utf8":case"utf-8":return x(this,r,e);case"ascii":return I(this,r,e);case"latin1":case"binary":return N(this,r,e);case"base64":return w(this,r,e);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return M(this,r,e);default:if(n)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),n=!0}}function d(t,r,e){var n=t[r];t[r]=t[e],t[e]=n}function E(t,r,e,n,a){if(0===t.length)return-1;if("string"==typeof e?(n=e,e=0):e>2147483647?e=2147483647:e<-2147483648&&(e=-2147483648),e=+e,isNaN(e)&&(e=a?0:t.length-1),e<0&&(e=t.length+e),e>=t.length){if(a)return-1;e=t.length-1}else if(e<0){if(!a)return-1;e=0}if("string"==typeof r&&(r=u.from(r,n)),u.isBuffer(r))return 0===r.length?-1:v(t,r,e,n,a);if("number"==typeof r)return r&=255,u.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?a?Uint8Array.prototype.indexOf.call(t,r,e):Uint8Array.prototype.lastIndexOf.call(t,r,e):v(t,[r],e,n,a);throw new TypeError("val must be string, number or Buffer")}function v(t,r,e,n,a){var i,o=1,s=t.length,u=r.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(t.length<2||r.length<2)return-1;o=2,s/=2,u/=2,e/=2}function f(t,r){return 1===o?t[r]:t.readUInt16BE(r*o)}if(a){var l=-1;for(i=e;i<s;i++)if(f(t,i)===f(r,-1===l?0:i-l)){if(-1===l&&(l=i),i-l+1===u)return l*o}else-1!==l&&(i-=i-l),l=-1}else for(e+u>s&&(e=s-u),i=e;i>=0;i--){for(var h=!0,c=0;c<u;c++)if(f(t,i+c)!==f(r,c)){h=!1;break}if(h)return i}return-1}function y(t,r,e,n){e=Number(e)||0;var a=t.length-e;n?(n=Number(n))>a&&(n=a):n=a;var i=r.length;if(i%2!=0)throw new TypeError("Invalid hex string");n>i/2&&(n=i/2);for(var o=0;o<n;++o){var s=parseInt(r.substr(2*o,2),16);if(isNaN(s))return o;t[e+o]=s}return o}function m(t,r,e,n){return X(j(r,t.length-e),t,e,n)}function T(t,r,e,n){return X(function(t){for(var r=[],e=0;e<t.length;++e)r.push(255&t.charCodeAt(e));return r}(r),t,e,n)}function A(t,r,e,n){return T(t,r,e,n)}function b(t,r,e,n){return X(k(r),t,e,n)}function R(t,r,e,n){return X(function(t,r){for(var e,n,a,i=[],o=0;o<t.length&&!((r-=2)<0);++o)e=t.charCodeAt(o),n=e>>8,a=e%256,i.push(a),i.push(n);return i}(r,t.length-e),t,e,n)}function w(t,r,e){return 0===r&&e===t.length?n.fromByteArray(t):n.fromByteArray(t.slice(r,e))}function x(t,r,e){e=Math.min(t.length,e);for(var n=[],a=r;a<e;){var i,o,s,u,f=t[a],l=null,h=f>239?4:f>223?3:f>191?2:1;if(a+h<=e)switch(h){case 1:f<128&&(l=f);break;case 2:128==(192&(i=t[a+1]))&&(u=(31&f)<<6|63&i)>127&&(l=u);break;case 3:i=t[a+1],o=t[a+2],128==(192&i)&&128==(192&o)&&(u=(15&f)<<12|(63&i)<<6|63&o)>2047&&(u<55296||u>57343)&&(l=u);break;case 4:i=t[a+1],o=t[a+2],s=t[a+3],128==(192&i)&&128==(192&o)&&128==(192&s)&&(u=(15&f)<<18|(63&i)<<12|(63&o)<<6|63&s)>65535&&u<1114112&&(l=u)}null===l?(l=65533,h=1):l>65535&&(l-=65536,n.push(l>>>10&1023|55296),l=56320|1023&l),n.push(l),a+=h}return function(t){var r=t.length;if(r<=4096)return String.fromCharCode.apply(String,t);var e="",n=0;for(;n<r;)e+=String.fromCharCode.apply(String,t.slice(n,n+=4096));return e}(n)}r.Buffer=u,r.SlowBuffer=function(t){+t!=t&&(t=0);return u.alloc(+t)},r.INSPECT_MAX_BYTES=50,u.TYPED_ARRAY_SUPPORT=void 0!==t.TYPED_ARRAY_SUPPORT?t.TYPED_ARRAY_SUPPORT:function(){try{var t=new Uint8Array(1);return t.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===t.foo()&&"function"==typeof t.subarray&&0===t.subarray(1,1).byteLength}catch(t){return!1}}(),r.kMaxLength=o(),u.poolSize=8192,u._augment=function(t){return t.__proto__=u.prototype,t},u.from=function(t,r,e){return f(null,t,r,e)},u.TYPED_ARRAY_SUPPORT&&(u.prototype.__proto__=Uint8Array.prototype,u.__proto__=Uint8Array,"undefined"!=typeof Symbol&&Symbol.species&&u[Symbol.species]===u&&Object.defineProperty(u,Symbol.species,{value:null,configurable:!0})),u.alloc=function(t,r,e){return function(t,r,e,n){return l(r),r<=0?s(t,r):void 0!==e?"string"==typeof n?s(t,r).fill(e,n):s(t,r).fill(e):s(t,r)}(null,t,r,e)},u.allocUnsafe=function(t){return h(null,t)},u.allocUnsafeSlow=function(t){return h(null,t)},u.isBuffer=function(t){return!(null==t||!t._isBuffer)},u.compare=function(t,r){if(!u.isBuffer(t)||!u.isBuffer(r))throw new TypeError("Arguments must be Buffers");if(t===r)return 0;for(var e=t.length,n=r.length,a=0,i=Math.min(e,n);a<i;++a)if(t[a]!==r[a]){e=t[a],n=r[a];break}return e<n?-1:n<e?1:0},u.isEncoding=function(t){switch(String(t).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},u.concat=function(t,r){if(!i(t))throw new TypeError('"list" argument must be an Array of Buffers');if(0===t.length)return u.alloc(0);var e;if(void 0===r)for(r=0,e=0;e<t.length;++e)r+=t[e].length;var n=u.allocUnsafe(r),a=0;for(e=0;e<t.length;++e){var o=t[e];if(!u.isBuffer(o))throw new TypeError('"list" argument must be an Array of Buffers');o.copy(n,a),a+=o.length}return n},u.byteLength=g,u.prototype._isBuffer=!0,u.prototype.swap16=function(){var t=this.length;if(t%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var r=0;r<t;r+=2)d(this,r,r+1);return this},u.prototype.swap32=function(){var t=this.length;if(t%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var r=0;r<t;r+=4)d(this,r,r+3),d(this,r+1,r+2);return this},u.prototype.swap64=function(){var t=this.length;if(t%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var r=0;r<t;r+=8)d(this,r,r+7),d(this,r+1,r+6),d(this,r+2,r+5),d(this,r+3,r+4);return this},u.prototype.toString=function(){var t=0|this.length;return 0===t?"":0===arguments.length?x(this,0,t):_.apply(this,arguments)},u.prototype.equals=function(t){if(!u.isBuffer(t))throw new TypeError("Argument must be a Buffer");return this===t||0===u.compare(this,t)},u.prototype.inspect=function(){var t="",e=r.INSPECT_MAX_BYTES;return this.length>0&&(t=this.toString("hex",0,e).match(/.{2}/g).join(" "),this.length>e&&(t+=" ... ")),"<Buffer "+t+">"},u.prototype.compare=function(t,r,e,n,a){if(!u.isBuffer(t))throw new TypeError("Argument must be a Buffer");if(void 0===r&&(r=0),void 0===e&&(e=t?t.length:0),void 0===n&&(n=0),void 0===a&&(a=this.length),r<0||e>t.length||n<0||a>this.length)throw new RangeError("out of range index");if(n>=a&&r>=e)return 0;if(n>=a)return-1;if(r>=e)return 1;if(this===t)return 0;for(var i=(a>>>=0)-(n>>>=0),o=(e>>>=0)-(r>>>=0),s=Math.min(i,o),f=this.slice(n,a),l=t.slice(r,e),h=0;h<s;++h)if(f[h]!==l[h]){i=f[h],o=l[h];break}return i<o?-1:o<i?1:0},u.prototype.includes=function(t,r,e){return-1!==this.indexOf(t,r,e)},u.prototype.indexOf=function(t,r,e){return E(this,t,r,e,!0)},u.prototype.lastIndexOf=function(t,r,e){return E(this,t,r,e,!1)},u.prototype.write=function(t,r,e,n){if(void 0===r)n="utf8",e=this.length,r=0;else if(void 0===e&&"string"==typeof r)n=r,e=this.length,r=0;else{if(!isFinite(r))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");r|=0,isFinite(e)?(e|=0,void 0===n&&(n="utf8")):(n=e,e=void 0)}var a=this.length-r;if((void 0===e||e>a)&&(e=a),t.length>0&&(e<0||r<0)||r>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var i=!1;;)switch(n){case"hex":return y(this,t,r,e);case"utf8":case"utf-8":return m(this,t,r,e);case"ascii":return T(this,t,r,e);case"latin1":case"binary":return A(this,t,r,e);case"base64":return b(this,t,r,e);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return R(this,t,r,e);default:if(i)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),i=!0}},u.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function I(t,r,e){var n="";e=Math.min(t.length,e);for(var a=r;a<e;++a)n+=String.fromCharCode(127&t[a]);return n}function N(t,r,e){var n="";e=Math.min(t.length,e);for(var a=r;a<e;++a)n+=String.fromCharCode(t[a]);return n}function S(t,r,e){var n=t.length;(!r||r<0)&&(r=0),(!e||e<0||e>n)&&(e=n);for(var a="",i=r;i<e;++i)a+=V(t[i]);return a}function M(t,r,e){for(var n=t.slice(r,e),a="",i=0;i<n.length;i+=2)a+=String.fromCharCode(n[i]+256*n[i+1]);return a}function U(t,r,e){if(t%1!=0||t<0)throw new RangeError("offset is not uint");if(t+r>e)throw new RangeError("Trying to access beyond buffer length")}function F(t,r,e,n,a,i){if(!u.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(r>a||r<i)throw new RangeError('"value" argument is out of bounds');if(e+n>t.length)throw new RangeError("Index out of range")}function P(t,r,e,n){r<0&&(r=65535+r+1);for(var a=0,i=Math.min(t.length-e,2);a<i;++a)t[e+a]=(r&255<<8*(n?a:1-a))>>>8*(n?a:1-a)}function L(t,r,e,n){r<0&&(r=4294967295+r+1);for(var a=0,i=Math.min(t.length-e,4);a<i;++a)t[e+a]=r>>>8*(n?a:3-a)&255}function D(t,r,e,n,a,i){if(e+n>t.length)throw new RangeError("Index out of range");if(e<0)throw new RangeError("Index out of range")}function C(t,r,e,n,i){return i||D(t,0,e,4),a.write(t,r,e,n,23,4),e+4}function O(t,r,e,n,i){return i||D(t,0,e,8),a.write(t,r,e,n,52,8),e+8}u.prototype.slice=function(t,r){var e,n=this.length;if((t=~~t)<0?(t+=n)<0&&(t=0):t>n&&(t=n),(r=void 0===r?n:~~r)<0?(r+=n)<0&&(r=0):r>n&&(r=n),r<t&&(r=t),u.TYPED_ARRAY_SUPPORT)(e=this.subarray(t,r)).__proto__=u.prototype;else{var a=r-t;e=new u(a,void 0);for(var i=0;i<a;++i)e[i]=this[i+t]}return e},u.prototype.readUIntLE=function(t,r,e){t|=0,r|=0,e||U(t,r,this.length);for(var n=this[t],a=1,i=0;++i<r&&(a*=256);)n+=this[t+i]*a;return n},u.prototype.readUIntBE=function(t,r,e){t|=0,r|=0,e||U(t,r,this.length);for(var n=this[t+--r],a=1;r>0&&(a*=256);)n+=this[t+--r]*a;return n},u.prototype.readUInt8=function(t,r){return r||U(t,1,this.length),this[t]},u.prototype.readUInt16LE=function(t,r){return r||U(t,2,this.length),this[t]|this[t+1]<<8},u.prototype.readUInt16BE=function(t,r){return r||U(t,2,this.length),this[t]<<8|this[t+1]},u.prototype.readUInt32LE=function(t,r){return r||U(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},u.prototype.readUInt32BE=function(t,r){return r||U(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},u.prototype.readIntLE=function(t,r,e){t|=0,r|=0,e||U(t,r,this.length);for(var n=this[t],a=1,i=0;++i<r&&(a*=256);)n+=this[t+i]*a;return n>=(a*=128)&&(n-=Math.pow(2,8*r)),n},u.prototype.readIntBE=function(t,r,e){t|=0,r|=0,e||U(t,r,this.length);for(var n=r,a=1,i=this[t+--n];n>0&&(a*=256);)i+=this[t+--n]*a;return i>=(a*=128)&&(i-=Math.pow(2,8*r)),i},u.prototype.readInt8=function(t,r){return r||U(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},u.prototype.readInt16LE=function(t,r){r||U(t,2,this.length);var e=this[t]|this[t+1]<<8;return 32768&e?4294901760|e:e},u.prototype.readInt16BE=function(t,r){r||U(t,2,this.length);var e=this[t+1]|this[t]<<8;return 32768&e?4294901760|e:e},u.prototype.readInt32LE=function(t,r){return r||U(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},u.prototype.readInt32BE=function(t,r){return r||U(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},u.prototype.readFloatLE=function(t,r){return r||U(t,4,this.length),a.read(this,t,!0,23,4)},u.prototype.readFloatBE=function(t,r){return r||U(t,4,this.length),a.read(this,t,!1,23,4)},u.prototype.readDoubleLE=function(t,r){return r||U(t,8,this.length),a.read(this,t,!0,52,8)},u.prototype.readDoubleBE=function(t,r){return r||U(t,8,this.length),a.read(this,t,!1,52,8)},u.prototype.writeUIntLE=function(t,r,e,n){(t=+t,r|=0,e|=0,n)||F(this,t,r,e,Math.pow(2,8*e)-1,0);var a=1,i=0;for(this[r]=255&t;++i<e&&(a*=256);)this[r+i]=t/a&255;return r+e},u.prototype.writeUIntBE=function(t,r,e,n){(t=+t,r|=0,e|=0,n)||F(this,t,r,e,Math.pow(2,8*e)-1,0);var a=e-1,i=1;for(this[r+a]=255&t;--a>=0&&(i*=256);)this[r+a]=t/i&255;return r+e},u.prototype.writeUInt8=function(t,r,e){return t=+t,r|=0,e||F(this,t,r,1,255,0),u.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),this[r]=255&t,r+1},u.prototype.writeUInt16LE=function(t,r,e){return t=+t,r|=0,e||F(this,t,r,2,65535,0),u.TYPED_ARRAY_SUPPORT?(this[r]=255&t,this[r+1]=t>>>8):P(this,t,r,!0),r+2},u.prototype.writeUInt16BE=function(t,r,e){return t=+t,r|=0,e||F(this,t,r,2,65535,0),u.TYPED_ARRAY_SUPPORT?(this[r]=t>>>8,this[r+1]=255&t):P(this,t,r,!1),r+2},u.prototype.writeUInt32LE=function(t,r,e){return t=+t,r|=0,e||F(this,t,r,4,4294967295,0),u.TYPED_ARRAY_SUPPORT?(this[r+3]=t>>>24,this[r+2]=t>>>16,this[r+1]=t>>>8,this[r]=255&t):L(this,t,r,!0),r+4},u.prototype.writeUInt32BE=function(t,r,e){return t=+t,r|=0,e||F(this,t,r,4,4294967295,0),u.TYPED_ARRAY_SUPPORT?(this[r]=t>>>24,this[r+1]=t>>>16,this[r+2]=t>>>8,this[r+3]=255&t):L(this,t,r,!1),r+4},u.prototype.writeIntLE=function(t,r,e,n){if(t=+t,r|=0,!n){var a=Math.pow(2,8*e-1);F(this,t,r,e,a-1,-a)}var i=0,o=1,s=0;for(this[r]=255&t;++i<e&&(o*=256);)t<0&&0===s&&0!==this[r+i-1]&&(s=1),this[r+i]=(t/o>>0)-s&255;return r+e},u.prototype.writeIntBE=function(t,r,e,n){if(t=+t,r|=0,!n){var a=Math.pow(2,8*e-1);F(this,t,r,e,a-1,-a)}var i=e-1,o=1,s=0;for(this[r+i]=255&t;--i>=0&&(o*=256);)t<0&&0===s&&0!==this[r+i+1]&&(s=1),this[r+i]=(t/o>>0)-s&255;return r+e},u.prototype.writeInt8=function(t,r,e){return t=+t,r|=0,e||F(this,t,r,1,127,-128),u.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),t<0&&(t=255+t+1),this[r]=255&t,r+1},u.prototype.writeInt16LE=function(t,r,e){return t=+t,r|=0,e||F(this,t,r,2,32767,-32768),u.TYPED_ARRAY_SUPPORT?(this[r]=255&t,this[r+1]=t>>>8):P(this,t,r,!0),r+2},u.prototype.writeInt16BE=function(t,r,e){return t=+t,r|=0,e||F(this,t,r,2,32767,-32768),u.TYPED_ARRAY_SUPPORT?(this[r]=t>>>8,this[r+1]=255&t):P(this,t,r,!1),r+2},u.prototype.writeInt32LE=function(t,r,e){return t=+t,r|=0,e||F(this,t,r,4,2147483647,-2147483648),u.TYPED_ARRAY_SUPPORT?(this[r]=255&t,this[r+1]=t>>>8,this[r+2]=t>>>16,this[r+3]=t>>>24):L(this,t,r,!0),r+4},u.prototype.writeInt32BE=function(t,r,e){return t=+t,r|=0,e||F(this,t,r,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),u.TYPED_ARRAY_SUPPORT?(this[r]=t>>>24,this[r+1]=t>>>16,this[r+2]=t>>>8,this[r+3]=255&t):L(this,t,r,!1),r+4},u.prototype.writeFloatLE=function(t,r,e){return C(this,t,r,!0,e)},u.prototype.writeFloatBE=function(t,r,e){return C(this,t,r,!1,e)},u.prototype.writeDoubleLE=function(t,r,e){return O(this,t,r,!0,e)},u.prototype.writeDoubleBE=function(t,r,e){return O(this,t,r,!1,e)},u.prototype.copy=function(t,r,e,n){if(e||(e=0),n||0===n||(n=this.length),r>=t.length&&(r=t.length),r||(r=0),n>0&&n<e&&(n=e),n===e)return 0;if(0===t.length||0===this.length)return 0;if(r<0)throw new RangeError("targetStart out of bounds");if(e<0||e>=this.length)throw new RangeError("sourceStart out of bounds");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),t.length-r<n-e&&(n=t.length-r+e);var a,i=n-e;if(this===t&&e<r&&r<n)for(a=i-1;a>=0;--a)t[a+r]=this[a+e];else if(i<1e3||!u.TYPED_ARRAY_SUPPORT)for(a=0;a<i;++a)t[a+r]=this[a+e];else Uint8Array.prototype.set.call(t,this.subarray(e,e+i),r);return i},u.prototype.fill=function(t,r,e,n){if("string"==typeof t){if("string"==typeof r?(n=r,r=0,e=this.length):"string"==typeof e&&(n=e,e=this.length),1===t.length){var a=t.charCodeAt(0);a<256&&(t=a)}if(void 0!==n&&"string"!=typeof n)throw new TypeError("encoding must be a string");if("string"==typeof n&&!u.isEncoding(n))throw new TypeError("Unknown encoding: "+n)}else"number"==typeof t&&(t&=255);if(r<0||this.length<r||this.length<e)throw new RangeError("Out of range index");if(e<=r)return this;var i;if(r>>>=0,e=void 0===e?this.length:e>>>0,t||(t=0),"number"==typeof t)for(i=r;i<e;++i)this[i]=t;else{var o=u.isBuffer(t)?t:j(new u(t,n).toString()),s=o.length;for(i=0;i<e-r;++i)this[i+r]=o[i%s]}return this};var B=/[^+\/0-9A-Za-z-_]/g;function V(t){return t<16?"0"+t.toString(16):t.toString(16)}function j(t,r){var e;r=r||1/0;for(var n=t.length,a=null,i=[],o=0;o<n;++o){if((e=t.charCodeAt(o))>55295&&e<57344){if(!a){if(e>56319){(r-=3)>-1&&i.push(239,191,189);continue}if(o+1===n){(r-=3)>-1&&i.push(239,191,189);continue}a=e;continue}if(e<56320){(r-=3)>-1&&i.push(239,191,189),a=e;continue}e=65536+(a-55296<<10|e-56320)}else a&&(r-=3)>-1&&i.push(239,191,189);if(a=null,e<128){if((r-=1)<0)break;i.push(e)}else if(e<2048){if((r-=2)<0)break;i.push(e>>6|192,63&e|128)}else if(e<65536){if((r-=3)<0)break;i.push(e>>12|224,e>>6&63|128,63&e|128)}else{if(!(e<1114112))throw new Error("Invalid code point");if((r-=4)<0)break;i.push(e>>18|240,e>>12&63|128,e>>6&63|128,63&e|128)}}return i}function k(t){return n.toByteArray(function(t){if((t=function(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}(t).replace(B,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(t))}function X(t,r,e,n){for(var a=0;a<n&&!(a+e>=r.length||a>=t.length);++a)r[a+e]=t[a];return a}}).call(this,e(5))},function(t,r,e){"use strict";r.byteLength=function(t){var r=f(t),e=r[0],n=r[1];return 3*(e+n)/4-n},r.toByteArray=function(t){var r,e,n=f(t),o=n[0],s=n[1],u=new i(function(t,r,e){return 3*(r+e)/4-e}(0,o,s)),l=0,h=s>0?o-4:o;for(e=0;e<h;e+=4)r=a[t.charCodeAt(e)]<<18|a[t.charCodeAt(e+1)]<<12|a[t.charCodeAt(e+2)]<<6|a[t.charCodeAt(e+3)],u[l++]=r>>16&255,u[l++]=r>>8&255,u[l++]=255&r;2===s&&(r=a[t.charCodeAt(e)]<<2|a[t.charCodeAt(e+1)]>>4,u[l++]=255&r);1===s&&(r=a[t.charCodeAt(e)]<<10|a[t.charCodeAt(e+1)]<<4|a[t.charCodeAt(e+2)]>>2,u[l++]=r>>8&255,u[l++]=255&r);return u},r.fromByteArray=function(t){for(var r,e=t.length,a=e%3,i=[],o=0,s=e-a;o<s;o+=16383)i.push(l(t,o,o+16383>s?s:o+16383));1===a?(r=t[e-1],i.push(n[r>>2]+n[r<<4&63]+"==")):2===a&&(r=(t[e-2]<<8)+t[e-1],i.push(n[r>>10]+n[r>>4&63]+n[r<<2&63]+"="));return i.join("")};for(var n=[],a=[],i="undefined"!=typeof Uint8Array?Uint8Array:Array,o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",s=0,u=o.length;s<u;++s)n[s]=o[s],a[o.charCodeAt(s)]=s;function f(t){var r=t.length;if(r%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var e=t.indexOf("=");return-1===e&&(e=r),[e,e===r?0:4-e%4]}function l(t,r,e){for(var a,i,o=[],s=r;s<e;s+=3)a=(t[s]<<16&16711680)+(t[s+1]<<8&65280)+(255&t[s+2]),o.push(n[(i=a)>>18&63]+n[i>>12&63]+n[i>>6&63]+n[63&i]);return o.join("")}a["-".charCodeAt(0)]=62,a["_".charCodeAt(0)]=63},function(t,r){
/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */
r.read=function(t,r,e,n,a){var i,o,s=8*a-n-1,u=(1<<s)-1,f=u>>1,l=-7,h=e?a-1:0,c=e?-1:1,p=t[r+h];for(h+=c,i=p&(1<<-l)-1,p>>=-l,l+=s;l>0;i=256*i+t[r+h],h+=c,l-=8);for(o=i&(1<<-l)-1,i>>=-l,l+=n;l>0;o=256*o+t[r+h],h+=c,l-=8);if(0===i)i=1-f;else{if(i===u)return o?NaN:1/0*(p?-1:1);o+=Math.pow(2,n),i-=f}return(p?-1:1)*o*Math.pow(2,i-n)},r.write=function(t,r,e,n,a,i){var o,s,u,f=8*i-a-1,l=(1<<f)-1,h=l>>1,c=23===a?Math.pow(2,-24)-Math.pow(2,-77):0,p=n?0:i-1,g=n?1:-1,_=r<0||0===r&&1/r<0?1:0;for(r=Math.abs(r),isNaN(r)||r===1/0?(s=isNaN(r)?1:0,o=l):(o=Math.floor(Math.log(r)/Math.LN2),r*(u=Math.pow(2,-o))<1&&(o--,u*=2),(r+=o+h>=1?c/u:c*Math.pow(2,1-h))*u>=2&&(o++,u/=2),o+h>=l?(s=0,o=l):o+h>=1?(s=(r*u-1)*Math.pow(2,a),o+=h):(s=r*Math.pow(2,h-1)*Math.pow(2,a),o=0));a>=8;t[e+p]=255&s,p+=g,s/=256,a-=8);for(o=o<<a|s,f+=a;f>0;t[e+p]=255&o,p+=g,o/=256,f-=8);t[e+p-g]|=128*_}},function(t,r){var e={}.toString;t.exports=Array.isArray||function(t){return"[object Array]"==e.call(t)}},function(t,r,e){"use strict";function n(t){var r=32;return(t&=-t)&&r--,65535&t&&(r-=16),16711935&t&&(r-=8),252645135&t&&(r-=4),858993459&t&&(r-=2),1431655765&t&&(r-=1),r}r.INT_BITS=32,r.INT_MAX=2147483647,r.INT_MIN=-1<<31,r.sign=function(t){return(t>0)-(t<0)},r.abs=function(t){var r=t>>31;return(t^r)-r},r.min=function(t,r){return r^(t^r)&-(t<r)},r.max=function(t,r){return t^(t^r)&-(t<r)},r.isPow2=function(t){return!(t&t-1||!t)},r.log2=function(t){var r,e;return r=(t>65535)<<4,r|=e=((t>>>=r)>255)<<3,r|=e=((t>>>=e)>15)<<2,(r|=e=((t>>>=e)>3)<<1)|(t>>>=e)>>1},r.log10=function(t){return t>=1e9?9:t>=1e8?8:t>=1e7?7:t>=1e6?6:t>=1e5?5:t>=1e4?4:t>=1e3?3:t>=100?2:t>=10?1:0},r.popCount=function(t){return 16843009*((t=(858993459&(t-=t>>>1&1431655765))+(t>>>2&858993459))+(t>>>4)&252645135)>>>24},r.countTrailingZeros=n,r.nextPow2=function(t){return t+=0===t,--t,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,(t|=t>>>16)+1},r.prevPow2=function(t){return t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,(t|=t>>>16)-(t>>>1)},r.parity=function(t){return t^=t>>>16,t^=t>>>8,t^=t>>>4,27030>>>(t&=15)&1};var a=new Array(256);!function(t){for(var r=0;r<256;++r){var e=r,n=r,a=7;for(e>>>=1;e;e>>>=1)n<<=1,n|=1&e,--a;t[r]=n<<a&255}}(a),r.reverse=function(t){return a[255&t]<<24|a[t>>>8&255]<<16|a[t>>>16&255]<<8|a[t>>>24&255]},r.interleave2=function(t,r){return(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t&=65535)|t<<8))|t<<4))|t<<2))|t<<1))|(r=1431655765&((r=858993459&((r=252645135&((r=16711935&((r&=65535)|r<<8))|r<<4))|r<<2))|r<<1))<<1},r.deinterleave2=function(t,r){return(t=65535&((t=16711935&((t=252645135&((t=858993459&((t=t>>>r&1431655765)|t>>>1))|t>>>2))|t>>>4))|t>>>16))<<16>>16},r.interleave3=function(t,r,e){return t=1227133513&((t=3272356035&((t=251719695&((t=4278190335&((t&=1023)|t<<16))|t<<8))|t<<4))|t<<2),(t|=(r=1227133513&((r=3272356035&((r=251719695&((r=4278190335&((r&=1023)|r<<16))|r<<8))|r<<4))|r<<2))<<1)|(e=1227133513&((e=3272356035&((e=251719695&((e=4278190335&((e&=1023)|e<<16))|e<<8))|e<<4))|e<<2))<<2},r.deinterleave3=function(t,r){return(t=1023&((t=4278190335&((t=251719695&((t=3272356035&((t=t>>>r&1227133513)|t>>>2))|t>>>4))|t>>>8))|t>>>16))<<22>>22},r.nextCombination=function(t){var r=t|t-1;return r+1|(~r&-~r)-1>>>n(t)+1}},function(t,r,e){"use strict";t.exports=function(t,r){switch(void 0===r&&(r=0),typeof t){case"number":if(t>0)return function(t,r){var e,n;for(e=new Array(t),n=0;n<t;++n)e[n]=r;return e}(0|t,r);break;case"object":if("number"==typeof t.length)return function t(r,e,n){var a=0|r[n];if(a<=0)return[];var i,o=new Array(a);if(n===r.length-1)for(i=0;i<a;++i)o[i]=e;else for(i=0;i<a;++i)o[i]=t(r,e,n+1);return o}(t,r,0)}return[]}},function(t,r,e){"use strict";var n=e(4),a=e(3),i=e(2),o=["uint8","uint8_clamped","uint16","uint32","int8","int16","int32","float32"];function s(t,r,e,n,a){this.gl=t,this.type=r,this.handle=e,this.length=n,this.usage=a}var u=s.prototype;function f(t,r,e,n,a,i){var o=a.length*a.BYTES_PER_ELEMENT;if(i<0)return t.bufferData(r,a,n),o;if(o+i>e)throw new Error("gl-buffer: If resizing buffer, must not specify offset");return t.bufferSubData(r,i,a),e}function l(t,r){for(var e=n.malloc(t.length,r),a=t.length,i=0;i<a;++i)e[i]=t[i];return e}u.bind=function(){this.gl.bindBuffer(this.type,this.handle)},u.unbind=function(){this.gl.bindBuffer(this.type,null)},u.dispose=function(){this.gl.deleteBuffer(this.handle)},u.update=function(t,r){if("number"!=typeof r&&(r=-1),this.bind(),"object"==typeof t&&void 0!==t.shape){var e=t.dtype;if(o.indexOf(e)<0&&(e="float32"),this.type===this.gl.ELEMENT_ARRAY_BUFFER)e=gl.getExtension("OES_element_index_uint")&&"uint16"!==e?"uint32":"uint16";if(e===t.dtype&&function(t,r){for(var e=1,n=r.length-1;n>=0;--n){if(r[n]!==e)return!1;e*=t[n]}return!0}(t.shape,t.stride))0===t.offset&&t.data.length===t.shape[0]?this.length=f(this.gl,this.type,this.length,this.usage,t.data,r):this.length=f(this.gl,this.type,this.length,this.usage,t.data.subarray(t.offset,t.shape[0]),r);else{var s=n.malloc(t.size,e),u=i(s,t.shape);a.assign(u,t),this.length=f(this.gl,this.type,this.length,this.usage,r<0?s:s.subarray(0,t.size),r),n.free(s)}}else if(Array.isArray(t)){var h;h=this.type===this.gl.ELEMENT_ARRAY_BUFFER?l(t,"uint16"):l(t,"float32"),this.length=f(this.gl,this.type,this.length,this.usage,r<0?h:h.subarray(0,t.length),r),n.free(h)}else if("object"==typeof t&&"number"==typeof t.length)this.length=f(this.gl,this.type,this.length,this.usage,t,r);else{if("number"!=typeof t&&void 0!==t)throw new Error("gl-buffer: Invalid data type");if(r>=0)throw new Error("gl-buffer: Cannot specify offset when resizing buffer");(t|=0)<=0&&(t=1),this.gl.bufferData(this.type,0|t,this.usage),this.length=t}},t.exports=function(t,r,e,n){if(e=e||t.ARRAY_BUFFER,n=n||t.DYNAMIC_DRAW,e!==t.ARRAY_BUFFER&&e!==t.ELEMENT_ARRAY_BUFFER)throw new Error("gl-buffer: Invalid type for webgl buffer, must be either gl.ARRAY_BUFFER or gl.ELEMENT_ARRAY_BUFFER");if(n!==t.DYNAMIC_DRAW&&n!==t.STATIC_DRAW&&n!==t.STREAM_DRAW)throw new Error("gl-buffer: Invalid usage for buffer, must be either gl.DYNAMIC_DRAW, gl.STATIC_DRAW or gl.STREAM_DRAW");var a=t.createBuffer(),i=new s(t,e,a,0,n);return i.update(r),i}},function(t,r,e){"use strict";var n=e(26),a=e(27),i=e(6),o=e(28),s=e(46),u=e(0);function f(t){this.gl=t,this.gl.lastAttribCount=0,this._vref=this._fref=this._relink=this.vertShader=this.fragShader=this.program=this.attributes=this.uniforms=this.types=null}var l=f.prototype;function h(t,r){return t.name<r.name?-1:1}l.bind=function(){var t;this.program||this._relink();var r=this.gl.getProgramParameter(this.program,this.gl.ACTIVE_ATTRIBUTES),e=this.gl.lastAttribCount;if(r>e)for(t=e;t<r;t++)this.gl.enableVertexAttribArray(t);else if(e>r)for(t=r;t<e;t++)this.gl.disableVertexAttribArray(t);this.gl.lastAttribCount=r,this.gl.useProgram(this.program)},l.dispose=function(){for(var t=this.gl.lastAttribCount,r=0;r<t;r++)this.gl.disableVertexAttribArray(r);this.gl.lastAttribCount=0,this._fref&&this._fref.dispose(),this._vref&&this._vref.dispose(),this.attributes=this.types=this.vertShader=this.fragShader=this.program=this._relink=this._fref=this._vref=null},l.update=function(t,r,e,f){if(!r||1===arguments.length){var l=t;t=l.vertex,r=l.fragment,e=l.uniforms,f=l.attributes}var c=this,p=c.gl,g=c._vref;c._vref=o.shader(p,p.VERTEX_SHADER,t),g&&g.dispose(),c.vertShader=c._vref.shader;var _=this._fref;if(c._fref=o.shader(p,p.FRAGMENT_SHADER,r),_&&_.dispose(),c.fragShader=c._fref.shader,!e||!f){var d=p.createProgram();if(p.attachShader(d,c.fragShader),p.attachShader(d,c.vertShader),p.linkProgram(d),!p.getProgramParameter(d,p.LINK_STATUS)){var E=p.getProgramInfoLog(d);throw new u(E,"Error linking program:"+E)}e=e||s.uniforms(p,d),f=f||s.attributes(p,d),p.deleteProgram(d)}(f=f.slice()).sort(h);var v,y=[],m=[],T=[];for(v=0;v<f.length;++v){var A=f[v];if(A.type.indexOf("mat")>=0){for(var b=0|A.type.charAt(A.type.length-1),R=new Array(b),w=0;w<b;++w)R[w]=T.length,m.push(A.name+"["+w+"]"),"number"==typeof A.location?T.push(A.location+w):Array.isArray(A.location)&&A.location.length===b&&"number"==typeof A.location[w]?T.push(0|A.location[w]):T.push(-1);y.push({name:A.name,type:A.type,locations:R})}else y.push({name:A.name,type:A.type,locations:[T.length]}),m.push(A.name),"number"==typeof A.location?T.push(0|A.location):T.push(-1)}var x=0;for(v=0;v<T.length;++v)if(T[v]<0){for(;T.indexOf(x)>=0;)x+=1;T[v]=x}var I=new Array(e.length);function N(){c.program=o.program(p,c._vref,c._fref,m,T);for(var t=0;t<e.length;++t)I[t]=p.getUniformLocation(c.program,e[t].name)}N(),c._relink=N,c.types={uniforms:i(e),attributes:i(f)},c.attributes=a(p,c,y,T),Object.defineProperty(c,"uniforms",n(p,c,e,I))},t.exports=function(t,r,e,n,a){var i=new f(t);return i.update(r,e,n,a),i}},function(t,r,e){"use strict";var n=e(6),a=e(0);function i(t){return new Function("y","return function(){return y}")(t)}function o(t,r){for(var e=new Array(t),n=0;n<t;++n)e[n]=r;return e}t.exports=function(t,r,e,s){function u(t,r,e){switch(e){case"bool":case"int":case"sampler2D":case"samplerCube":return"gl.uniform1i(locations["+r+"],obj"+t+")";case"float":return"gl.uniform1f(locations["+r+"],obj"+t+")";default:var n=e.indexOf("vec");if(!(0<=n&&n<=1&&e.length===4+n)){if(0===e.indexOf("mat")&&4===e.length){var i;if((i=e.charCodeAt(e.length-1)-48)<2||i>4)throw new a("","Invalid uniform dimension type for matrix "+name+": "+e);return"gl.uniformMatrix"+i+"fv(locations["+r+"],false,obj"+t+")"}throw new a("","Unknown uniform data type for "+name+": "+e)}if((i=e.charCodeAt(e.length-1)-48)<2||i>4)throw new a("","Invalid data type");switch(e.charAt(0)){case"b":case"i":return"gl.uniform"+i+"iv(locations["+r+"],obj"+t+")";case"v":return"gl.uniform"+i+"fv(locations["+r+"],obj"+t+")";default:throw new a("","Unrecognized data type for vector "+name+": "+e)}}}function f(r){for(var n=["return function updateProperty(obj){"],a=function t(r,e){if("object"!=typeof e)return[[r,e]];var n=[];for(var a in e){var i=e[a],o=r;parseInt(a)+""===a?o+="["+a+"]":o+="."+a,"object"==typeof i?n.push.apply(n,t(o,i)):n.push([o,i])}return n}("",r),i=0;i<a.length;++i){var o=a[i],f=o[0],l=o[1];s[l]&&n.push(u(f,l,e[l].type))}return n.push("return obj}"),new Function("gl","locations",n.join("\n"))(t,s)}function l(n,u,l){if("object"==typeof l){var c=h(l);Object.defineProperty(n,u,{get:i(c),set:f(l),enumerable:!0,configurable:!1})}else s[l]?Object.defineProperty(n,u,{get:(p=l,new Function("gl","wrapper","locations","return function(){return gl.getUniform(wrapper.program,locations["+p+"])}")(t,r,s)),set:f(l),enumerable:!0,configurable:!1}):n[u]=function(t){switch(t){case"bool":return!1;case"int":case"sampler2D":case"samplerCube":case"float":return 0;default:var r=t.indexOf("vec");if(0<=r&&r<=1&&t.length===4+r){if((e=t.charCodeAt(t.length-1)-48)<2||e>4)throw new a("","Invalid data type");return"b"===t.charAt(0)?o(e,!1):o(e,0)}if(0===t.indexOf("mat")&&4===t.length){var e;if((e=t.charCodeAt(t.length-1)-48)<2||e>4)throw new a("","Invalid uniform dimension type for matrix "+name+": "+t);return o(e*e,0)}throw new a("","Unknown uniform data type for "+name+": "+t)}}(e[l].type);var p}function h(t){var r;if(Array.isArray(t)){r=new Array(t.length);for(var e=0;e<t.length;++e)l(r,e,t[e])}else for(var n in r={},t)l(r,n,t[n]);return r}var c=n(e,!0);return{get:i(h(c)),set:f(c),enumerable:!0,configurable:!0}}},function(t,r,e){"use strict";t.exports=function(t,r,e,a){for(var i={},u=0,f=e.length;u<f;++u){var l=e[u],h=l.name,c=l.type,p=l.locations;switch(c){case"bool":case"int":case"float":o(t,r,p[0],a,1,i,h);break;default:if(c.indexOf("vec")>=0){if((g=c.charCodeAt(c.length-1)-48)<2||g>4)throw new n("","Invalid data type for attribute "+h+": "+c);o(t,r,p[0],a,g,i,h)}else{if(!(c.indexOf("mat")>=0))throw new n("","Unknown data type for attribute "+h+": "+c);var g;if((g=c.charCodeAt(c.length-1)-48)<2||g>4)throw new n("","Invalid data type for attribute "+h+": "+c);s(t,r,p,a,g,i,h)}}}return i};var n=e(0);function a(t,r,e,n,a,i){this._gl=t,this._wrapper=r,this._index=e,this._locations=n,this._dimension=a,this._constFunc=i}var i=a.prototype;function o(t,r,e,n,i,o,s){for(var u=["gl","v"],f=[],l=0;l<i;++l)u.push("x"+l),f.push("x"+l);u.push("if(x0.length===void 0){return gl.vertexAttrib"+i+"f(v,"+f.join()+")}else{return gl.vertexAttrib"+i+"fv(v,x0)}");var h=Function.apply(null,u),c=new a(t,r,e,n,i,h);Object.defineProperty(o,s,{set:function(r){return t.disableVertexAttribArray(n[e]),h(t,n[e],r),r},get:function(){return c},enumerable:!0})}function s(t,r,e,n,a,i,s){for(var u=new Array(a),f=new Array(a),l=0;l<a;++l)o(t,r,e[l],n,a,u,l),f[l]=u[l];Object.defineProperty(u,"location",{set:function(t){if(Array.isArray(t))for(var r=0;r<a;++r)f[r].location=t[r];else for(r=0;r<a;++r)f[r].location=t+r;return t},get:function(){for(var t=new Array(a),r=0;r<a;++r)t[r]=n[e[r]];return t},enumerable:!0}),u.pointer=function(r,i,o,s){r=r||t.FLOAT,i=!!i,o=o||a*a,s=s||0;for(var u=0;u<a;++u){var f=n[e[u]];t.vertexAttribPointer(f,a,r,i,o,s+u*a),t.enableVertexAttribArray(f)}};var h=new Array(a),c=t["vertexAttrib"+a+"fv"];Object.defineProperty(i,s,{set:function(r){for(var i=0;i<a;++i){var o=n[e[i]];if(t.disableVertexAttribArray(o),Array.isArray(r[0]))c.call(t,o,r[i]);else{for(var s=0;s<a;++s)h[s]=r[a*i+s];c.call(t,o,h)}}return r},get:function(){return u},enumerable:!0})}i.pointer=function(t,r,e,n){var a=this._gl,i=this._locations[this._index];a.vertexAttribPointer(i,this._dimension,t||a.FLOAT,!!r,e||0,n||0),a.enableVertexAttribArray(i)},i.set=function(t,r,e,n){return this._constFunc(this._locations[this._index],t,r,e,n)},Object.defineProperty(i,"location",{get:function(){return this._locations[this._index]},set:function(t){return t!==this._locations[this._index]&&(this._locations[this._index]=0|t,this._wrapper.program=null),0|t}})},function(t,r,e){"use strict";r.shader=function(t,r,e){return l(t).getShaderReference(r,e)},r.program=function(t,r,e,n,a){return l(t).getProgram(r,e,n,a)};var n=e(0),a=e(29),i=new("undefined"==typeof WeakMap?e(43):WeakMap),o=0;function s(t,r,e,n,a,i,o){this.id=t,this.src=r,this.type=e,this.shader=n,this.count=i,this.programs=[],this.cache=o}function u(t){this.gl=t,this.shaders=[{},{}],this.programs={}}s.prototype.dispose=function(){if(0==--this.count){for(var t=this.cache,r=t.gl,e=this.programs,n=0,a=e.length;n<a;++n){var i=t.programs[e[n]];i&&(delete t.programs[n],r.deleteProgram(i))}r.deleteShader(this.shader),delete t.shaders[this.type===r.FRAGMENT_SHADER|0][this.src]}};var f=u.prototype;function l(t){var r=i.get(t);return r||(r=new u(t),i.set(t,r)),r}f.getShaderReference=function(t,r){var e=this.gl,i=this.shaders[t===e.FRAGMENT_SHADER|0],u=i[r];if(u&&e.isShader(u.shader))u.count+=1;else{var f=function(t,r,e){var i=t.createShader(r);if(t.shaderSource(i,e),t.compileShader(i),!t.getShaderParameter(i,t.COMPILE_STATUS)){var o=t.getShaderInfoLog(i);try{var s=a(o,e,r)}catch(t){throw console.warn("Failed to format compiler error: "+t),new n(o,"Error compiling shader:\n"+o)}throw new n(o,s.short,s.long)}return i}(e,t,r);u=i[r]=new s(o++,r,t,f,[],1,this)}return u},f.getProgram=function(t,r,e,a){var i=[t.id,r.id,e.join(":"),a.join(":")].join("@"),o=this.programs[i];return o&&this.gl.isProgram(o)||(this.programs[i]=o=function(t,r,e,a,i){var o=t.createProgram();t.attachShader(o,r),t.attachShader(o,e);for(var s=0;s<a.length;++s)t.bindAttribLocation(o,i[s],a[s]);if(t.linkProgram(o),!t.getProgramParameter(o,t.LINK_STATUS)){var u=t.getProgramInfoLog(o);throw new n(u,"Error linking program: "+u)}return o}(this.gl,t.shader,r.shader,e,a),t.programs.push(i),r.programs.push(i)),o}},function(t,r,e){var n=e(30).sprintf,a=e(31),i=e(33),o=e(40);t.exports=function(t,r,e){"use strict";var s=i(r)||"of unknown name (see npm glsl-shader-name)",u="unknown type";void 0!==e&&(u=e===a.FRAGMENT_SHADER?"fragment":"vertex");for(var f=n("Error compiling %s shader %s:\n",u,s),l=n("%s%s",f,t),h=t.split("\n"),c={},p=0;p<h.length;p++){var g=h[p];if(""!==g&&"\0"!==g){var _=parseInt(g.split(":")[2]);if(isNaN(_))throw new Error(n("Could not parse error: %s",g));c[_]=g}}var d=o(r).split("\n");for(p=0;p<d.length;p++)if(c[p+3]||c[p+2]||c[p+1]){var E=d[p];if(f+=E+"\n",c[p+1]){var v=c[p+1];v=v.substr(v.split(":",3).join(":").length+1).trim(),f+=n("^^^ %s\n\n",v)}}return{long:f.trim(),short:l.trim()}}},function(t,r,e){var n;!function(){"use strict";var a={not_string:/[^s]/,not_bool:/[^t]/,not_type:/[^T]/,not_primitive:/[^v]/,number:/[diefg]/,numeric_arg:/[bcdiefguxX]/,json:/[j]/,not_json:/[^j]/,text:/^[^\x25]+/,modulo:/^\x25{2}/,placeholder:/^\x25(?:([1-9]\d*)\$|\(([^)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-gijostTuvxX])/,key:/^([a-z_][a-z_\d]*)/i,key_access:/^\.([a-z_][a-z_\d]*)/i,index_access:/^\[(\d+)\]/,sign:/^[+-]/};function i(t){return s(f(t),arguments)}function o(t,r){return i.apply(null,[t].concat(r||[]))}function s(t,r){var e,n,o,s,u,f,l,h,c,p=1,g=t.length,_="";for(n=0;n<g;n++)if("string"==typeof t[n])_+=t[n];else if("object"==typeof t[n]){if((s=t[n]).keys)for(e=r[p],o=0;o<s.keys.length;o++){if(null==e)throw new Error(i('[sprintf] Cannot access property "%s" of undefined value "%s"',s.keys[o],s.keys[o-1]));e=e[s.keys[o]]}else e=s.param_no?r[s.param_no]:r[p++];if(a.not_type.test(s.type)&&a.not_primitive.test(s.type)&&e instanceof Function&&(e=e()),a.numeric_arg.test(s.type)&&"number"!=typeof e&&isNaN(e))throw new TypeError(i("[sprintf] expecting number but found %T",e));switch(a.number.test(s.type)&&(h=e>=0),s.type){case"b":e=parseInt(e,10).toString(2);break;case"c":e=String.fromCharCode(parseInt(e,10));break;case"d":case"i":e=parseInt(e,10);break;case"j":e=JSON.stringify(e,null,s.width?parseInt(s.width):0);break;case"e":e=s.precision?parseFloat(e).toExponential(s.precision):parseFloat(e).toExponential();break;case"f":e=s.precision?parseFloat(e).toFixed(s.precision):parseFloat(e);break;case"g":e=s.precision?String(Number(e.toPrecision(s.precision))):parseFloat(e);break;case"o":e=(parseInt(e,10)>>>0).toString(8);break;case"s":e=String(e),e=s.precision?e.substring(0,s.precision):e;break;case"t":e=String(!!e),e=s.precision?e.substring(0,s.precision):e;break;case"T":e=Object.prototype.toString.call(e).slice(8,-1).toLowerCase(),e=s.precision?e.substring(0,s.precision):e;break;case"u":e=parseInt(e,10)>>>0;break;case"v":e=e.valueOf(),e=s.precision?e.substring(0,s.precision):e;break;case"x":e=(parseInt(e,10)>>>0).toString(16);break;case"X":e=(parseInt(e,10)>>>0).toString(16).toUpperCase()}a.json.test(s.type)?_+=e:(!a.number.test(s.type)||h&&!s.sign?c="":(c=h?"+":"-",e=e.toString().replace(a.sign,"")),f=s.pad_char?"0"===s.pad_char?"0":s.pad_char.charAt(1):" ",l=s.width-(c+e).length,u=s.width&&l>0?f.repeat(l):"",_+=s.align?c+e+u:"0"===f?c+u+e:u+c+e)}return _}var u=Object.create(null);function f(t){if(u[t])return u[t];for(var r,e=t,n=[],i=0;e;){if(null!==(r=a.text.exec(e)))n.push(r[0]);else if(null!==(r=a.modulo.exec(e)))n.push("%");else{if(null===(r=a.placeholder.exec(e)))throw new SyntaxError("[sprintf] unexpected placeholder");if(r[2]){i|=1;var o=[],s=r[2],f=[];if(null===(f=a.key.exec(s)))throw new SyntaxError("[sprintf] failed to parse named argument key");for(o.push(f[1]);""!==(s=s.substring(f[0].length));)if(null!==(f=a.key_access.exec(s)))o.push(f[1]);else{if(null===(f=a.index_access.exec(s)))throw new SyntaxError("[sprintf] failed to parse named argument key");o.push(f[1])}r[2]=o}else i|=2;if(3===i)throw new Error("[sprintf] mixing positional and named placeholders is not (yet) supported");n.push({placeholder:r[0],param_no:r[1],keys:r[2],sign:r[3],pad_char:r[4],align:r[5],width:r[6],precision:r[7],type:r[8]})}e=e.substring(r[0].length)}return u[t]=n}r.sprintf=i,r.vsprintf=o,"undefined"!=typeof window&&(window.sprintf=i,window.vsprintf=o,void 0===(n=function(){return{sprintf:i,vsprintf:o}}.call(r,e,r,t))||(t.exports=n))}()},function(t,r,e){var n=e(32);t.exports=function(t){return n[t]}},function(t,r){t.exports={0:"NONE",1:"ONE",2:"LINE_LOOP",3:"LINE_STRIP",4:"TRIANGLES",5:"TRIANGLE_STRIP",6:"TRIANGLE_FAN",256:"DEPTH_BUFFER_BIT",512:"NEVER",513:"LESS",514:"EQUAL",515:"LEQUAL",516:"GREATER",517:"NOTEQUAL",518:"GEQUAL",519:"ALWAYS",768:"SRC_COLOR",769:"ONE_MINUS_SRC_COLOR",770:"SRC_ALPHA",771:"ONE_MINUS_SRC_ALPHA",772:"DST_ALPHA",773:"ONE_MINUS_DST_ALPHA",774:"DST_COLOR",775:"ONE_MINUS_DST_COLOR",776:"SRC_ALPHA_SATURATE",1024:"STENCIL_BUFFER_BIT",1028:"FRONT",1029:"BACK",1032:"FRONT_AND_BACK",1280:"INVALID_ENUM",1281:"INVALID_VALUE",1282:"INVALID_OPERATION",1285:"OUT_OF_MEMORY",1286:"INVALID_FRAMEBUFFER_OPERATION",2304:"CW",2305:"CCW",2849:"LINE_WIDTH",2884:"CULL_FACE",2885:"CULL_FACE_MODE",2886:"FRONT_FACE",2928:"DEPTH_RANGE",2929:"DEPTH_TEST",2930:"DEPTH_WRITEMASK",2931:"DEPTH_CLEAR_VALUE",2932:"DEPTH_FUNC",2960:"STENCIL_TEST",2961:"STENCIL_CLEAR_VALUE",2962:"STENCIL_FUNC",2963:"STENCIL_VALUE_MASK",2964:"STENCIL_FAIL",2965:"STENCIL_PASS_DEPTH_FAIL",2966:"STENCIL_PASS_DEPTH_PASS",2967:"STENCIL_REF",2968:"STENCIL_WRITEMASK",2978:"VIEWPORT",3024:"DITHER",3042:"BLEND",3088:"SCISSOR_BOX",3089:"SCISSOR_TEST",3106:"COLOR_CLEAR_VALUE",3107:"COLOR_WRITEMASK",3317:"UNPACK_ALIGNMENT",3333:"PACK_ALIGNMENT",3379:"MAX_TEXTURE_SIZE",3386:"MAX_VIEWPORT_DIMS",3408:"SUBPIXEL_BITS",3410:"RED_BITS",3411:"GREEN_BITS",3412:"BLUE_BITS",3413:"ALPHA_BITS",3414:"DEPTH_BITS",3415:"STENCIL_BITS",3553:"TEXTURE_2D",4352:"DONT_CARE",4353:"FASTEST",4354:"NICEST",5120:"BYTE",5121:"UNSIGNED_BYTE",5122:"SHORT",5123:"UNSIGNED_SHORT",5124:"INT",5125:"UNSIGNED_INT",5126:"FLOAT",5386:"INVERT",5890:"TEXTURE",6401:"STENCIL_INDEX",6402:"DEPTH_COMPONENT",6406:"ALPHA",6407:"RGB",6408:"RGBA",6409:"LUMINANCE",6410:"LUMINANCE_ALPHA",7680:"KEEP",7681:"REPLACE",7682:"INCR",7683:"DECR",7936:"VENDOR",7937:"RENDERER",7938:"VERSION",9728:"NEAREST",9729:"LINEAR",9984:"NEAREST_MIPMAP_NEAREST",9985:"LINEAR_MIPMAP_NEAREST",9986:"NEAREST_MIPMAP_LINEAR",9987:"LINEAR_MIPMAP_LINEAR",10240:"TEXTURE_MAG_FILTER",10241:"TEXTURE_MIN_FILTER",10242:"TEXTURE_WRAP_S",10243:"TEXTURE_WRAP_T",10497:"REPEAT",10752:"POLYGON_OFFSET_UNITS",16384:"COLOR_BUFFER_BIT",32769:"CONSTANT_COLOR",32770:"ONE_MINUS_CONSTANT_COLOR",32771:"CONSTANT_ALPHA",32772:"ONE_MINUS_CONSTANT_ALPHA",32773:"BLEND_COLOR",32774:"FUNC_ADD",32777:"BLEND_EQUATION_RGB",32778:"FUNC_SUBTRACT",32779:"FUNC_REVERSE_SUBTRACT",32819:"UNSIGNED_SHORT_4_4_4_4",32820:"UNSIGNED_SHORT_5_5_5_1",32823:"POLYGON_OFFSET_FILL",32824:"POLYGON_OFFSET_FACTOR",32854:"RGBA4",32855:"RGB5_A1",32873:"TEXTURE_BINDING_2D",32926:"SAMPLE_ALPHA_TO_COVERAGE",32928:"SAMPLE_COVERAGE",32936:"SAMPLE_BUFFERS",32937:"SAMPLES",32938:"SAMPLE_COVERAGE_VALUE",32939:"SAMPLE_COVERAGE_INVERT",32968:"BLEND_DST_RGB",32969:"BLEND_SRC_RGB",32970:"BLEND_DST_ALPHA",32971:"BLEND_SRC_ALPHA",33071:"CLAMP_TO_EDGE",33170:"GENERATE_MIPMAP_HINT",33189:"DEPTH_COMPONENT16",33306:"DEPTH_STENCIL_ATTACHMENT",33635:"UNSIGNED_SHORT_5_6_5",33648:"MIRRORED_REPEAT",33901:"ALIASED_POINT_SIZE_RANGE",33902:"ALIASED_LINE_WIDTH_RANGE",33984:"TEXTURE0",33985:"TEXTURE1",33986:"TEXTURE2",33987:"TEXTURE3",33988:"TEXTURE4",33989:"TEXTURE5",33990:"TEXTURE6",33991:"TEXTURE7",33992:"TEXTURE8",33993:"TEXTURE9",33994:"TEXTURE10",33995:"TEXTURE11",33996:"TEXTURE12",33997:"TEXTURE13",33998:"TEXTURE14",33999:"TEXTURE15",34e3:"TEXTURE16",34001:"TEXTURE17",34002:"TEXTURE18",34003:"TEXTURE19",34004:"TEXTURE20",34005:"TEXTURE21",34006:"TEXTURE22",34007:"TEXTURE23",34008:"TEXTURE24",34009:"TEXTURE25",34010:"TEXTURE26",34011:"TEXTURE27",34012:"TEXTURE28",34013:"TEXTURE29",34014:"TEXTURE30",34015:"TEXTURE31",34016:"ACTIVE_TEXTURE",34024:"MAX_RENDERBUFFER_SIZE",34041:"DEPTH_STENCIL",34055:"INCR_WRAP",34056:"DECR_WRAP",34067:"TEXTURE_CUBE_MAP",34068:"TEXTURE_BINDING_CUBE_MAP",34069:"TEXTURE_CUBE_MAP_POSITIVE_X",34070:"TEXTURE_CUBE_MAP_NEGATIVE_X",34071:"TEXTURE_CUBE_MAP_POSITIVE_Y",34072:"TEXTURE_CUBE_MAP_NEGATIVE_Y",34073:"TEXTURE_CUBE_MAP_POSITIVE_Z",34074:"TEXTURE_CUBE_MAP_NEGATIVE_Z",34076:"MAX_CUBE_MAP_TEXTURE_SIZE",34338:"VERTEX_ATTRIB_ARRAY_ENABLED",34339:"VERTEX_ATTRIB_ARRAY_SIZE",34340:"VERTEX_ATTRIB_ARRAY_STRIDE",34341:"VERTEX_ATTRIB_ARRAY_TYPE",34342:"CURRENT_VERTEX_ATTRIB",34373:"VERTEX_ATTRIB_ARRAY_POINTER",34466:"NUM_COMPRESSED_TEXTURE_FORMATS",34467:"COMPRESSED_TEXTURE_FORMATS",34660:"BUFFER_SIZE",34661:"BUFFER_USAGE",34816:"STENCIL_BACK_FUNC",34817:"STENCIL_BACK_FAIL",34818:"STENCIL_BACK_PASS_DEPTH_FAIL",34819:"STENCIL_BACK_PASS_DEPTH_PASS",34877:"BLEND_EQUATION_ALPHA",34921:"MAX_VERTEX_ATTRIBS",34922:"VERTEX_ATTRIB_ARRAY_NORMALIZED",34930:"MAX_TEXTURE_IMAGE_UNITS",34962:"ARRAY_BUFFER",34963:"ELEMENT_ARRAY_BUFFER",34964:"ARRAY_BUFFER_BINDING",34965:"ELEMENT_ARRAY_BUFFER_BINDING",34975:"VERTEX_ATTRIB_ARRAY_BUFFER_BINDING",35040:"STREAM_DRAW",35044:"STATIC_DRAW",35048:"DYNAMIC_DRAW",35632:"FRAGMENT_SHADER",35633:"VERTEX_SHADER",35660:"MAX_VERTEX_TEXTURE_IMAGE_UNITS",35661:"MAX_COMBINED_TEXTURE_IMAGE_UNITS",35663:"SHADER_TYPE",35664:"FLOAT_VEC2",35665:"FLOAT_VEC3",35666:"FLOAT_VEC4",35667:"INT_VEC2",35668:"INT_VEC3",35669:"INT_VEC4",35670:"BOOL",35671:"BOOL_VEC2",35672:"BOOL_VEC3",35673:"BOOL_VEC4",35674:"FLOAT_MAT2",35675:"FLOAT_MAT3",35676:"FLOAT_MAT4",35678:"SAMPLER_2D",35680:"SAMPLER_CUBE",35712:"DELETE_STATUS",35713:"COMPILE_STATUS",35714:"LINK_STATUS",35715:"VALIDATE_STATUS",35716:"INFO_LOG_LENGTH",35717:"ATTACHED_SHADERS",35718:"ACTIVE_UNIFORMS",35719:"ACTIVE_UNIFORM_MAX_LENGTH",35720:"SHADER_SOURCE_LENGTH",35721:"ACTIVE_ATTRIBUTES",35722:"ACTIVE_ATTRIBUTE_MAX_LENGTH",35724:"SHADING_LANGUAGE_VERSION",35725:"CURRENT_PROGRAM",36003:"STENCIL_BACK_REF",36004:"STENCIL_BACK_VALUE_MASK",36005:"STENCIL_BACK_WRITEMASK",36006:"FRAMEBUFFER_BINDING",36007:"RENDERBUFFER_BINDING",36048:"FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE",36049:"FRAMEBUFFER_ATTACHMENT_OBJECT_NAME",36050:"FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL",36051:"FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE",36053:"FRAMEBUFFER_COMPLETE",36054:"FRAMEBUFFER_INCOMPLETE_ATTACHMENT",36055:"FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT",36057:"FRAMEBUFFER_INCOMPLETE_DIMENSIONS",36061:"FRAMEBUFFER_UNSUPPORTED",36064:"COLOR_ATTACHMENT0",36096:"DEPTH_ATTACHMENT",36128:"STENCIL_ATTACHMENT",36160:"FRAMEBUFFER",36161:"RENDERBUFFER",36162:"RENDERBUFFER_WIDTH",36163:"RENDERBUFFER_HEIGHT",36164:"RENDERBUFFER_INTERNAL_FORMAT",36168:"STENCIL_INDEX8",36176:"RENDERBUFFER_RED_SIZE",36177:"RENDERBUFFER_GREEN_SIZE",36178:"RENDERBUFFER_BLUE_SIZE",36179:"RENDERBUFFER_ALPHA_SIZE",36180:"RENDERBUFFER_DEPTH_SIZE",36181:"RENDERBUFFER_STENCIL_SIZE",36194:"RGB565",36336:"LOW_FLOAT",36337:"MEDIUM_FLOAT",36338:"HIGH_FLOAT",36339:"LOW_INT",36340:"MEDIUM_INT",36341:"HIGH_INT",36346:"SHADER_COMPILER",36347:"MAX_VERTEX_UNIFORM_VECTORS",36348:"MAX_VARYING_VECTORS",36349:"MAX_FRAGMENT_UNIFORM_VECTORS",37440:"UNPACK_FLIP_Y_WEBGL",37441:"UNPACK_PREMULTIPLY_ALPHA_WEBGL",37442:"CONTEXT_LOST_WEBGL",37443:"UNPACK_COLORSPACE_CONVERSION_WEBGL",37444:"BROWSER_DEFAULT_WEBGL"}},function(t,r,e){var n=e(34),a=e(39);t.exports=function(t){for(var r=Array.isArray(t)?t:n(t),e=0;e<r.length;e++){var i=r[e];if("preprocessor"===i.type){var o=i.data.match(/\#define\s+SHADER_NAME(_B64)?\s+(.+)$/);if(o&&o[2]){var s=o[1],u=o[2];return(s?a(u):u).trim()}}}}},function(t,r,e){var n=e(35);t.exports=function(t,r){var e=n(r),a=[];return a=(a=a.concat(e(t))).concat(e(null))}},function(t,r,e){t.exports=function(t){var r,e,f,l=0,h=0,c=999,p=[],g=[],_=1,d=0,E=0,v=!1,y=!1,m="",T=i,A=n;"300 es"===(t=t||{}).version&&(T=s,A=o);var b={},R={};for(l=0;l<T.length;l++)b[T[l]]=!0;for(l=0;l<A.length;l++)R[A[l]]=!0;return function(t){return g=[],null!==t?function(t){l=0,t.toString&&(t=t.toString());var e;m+=t.replace(/\r\n/g,"\n"),f=m.length;for(;r=m[l],l<f;){switch(e=l,c){case 0:l=S();break;case 1:case 2:l=N();break;case 3:l=M();break;case 4:l=P();break;case 11:l=F();break;case 5:l=L();break;case 9999:l=D();break;case 9:l=I();break;case 999:l=x()}if(e!==l)switch(m[e]){case"\n":d=0,++_;break;default:++d}}return h+=l,m=m.slice(l),g}(t):function(t){p.length&&w(p.join(""));return c=10,w("(eof)"),g}()};function w(t){t.length&&g.push({type:u[c],data:t,position:E,line:_,column:d})}function x(){return p=p.length?[]:p,"/"===e&&"*"===r?(E=h+l-1,c=0,e=r,l+1):"/"===e&&"/"===r?(E=h+l-1,c=1,e=r,l+1):"#"===r?(c=2,E=h+l,l):/\s/.test(r)?(c=9,E=h+l,l):(v=/\d/.test(r),y=/[^\w_]/.test(r),E=h+l,c=v?4:y?3:9999,l)}function I(){return/[^\s]/g.test(r)?(w(p.join("")),c=999,l):(p.push(r),e=r,l+1)}function N(){return"\r"!==r&&"\n"!==r||"\\"===e?(p.push(r),e=r,l+1):(w(p.join("")),c=999,l)}function S(){return"/"===r&&"*"===e?(p.push(r),w(p.join("")),c=999,l+1):(p.push(r),e=r,l+1)}function M(){if("."===e&&/\d/.test(r))return c=5,l;if("/"===e&&"*"===r)return c=0,l;if("/"===e&&"/"===r)return c=1,l;if("."===r&&p.length){for(;U(p););return c=5,l}if(";"===r||")"===r||"("===r){if(p.length)for(;U(p););return w(r),c=999,l+1}var t=2===p.length&&"="!==r;if(/[\w_\d\s]/.test(r)||t){for(;U(p););return c=999,l}return p.push(r),e=r,l+1}function U(t){for(var r,e,n=0;;){if(r=a.indexOf(t.slice(0,t.length+n).join("")),e=a[r],-1===r){if(n--+t.length>0)continue;e=t.slice(0,1).join("")}return w(e),E+=e.length,(p=p.slice(e.length)).length}}function F(){return/[^a-fA-F0-9]/.test(r)?(w(p.join("")),c=999,l):(p.push(r),e=r,l+1)}function P(){return"."===r||/[eE]/.test(r)?(p.push(r),c=5,e=r,l+1):"x"===r&&1===p.length&&"0"===p[0]?(c=11,p.push(r),e=r,l+1):/[^\d]/.test(r)?(w(p.join("")),c=999,l):(p.push(r),e=r,l+1)}function L(){return"f"===r&&(p.push(r),e=r,l+=1),/[eE]/.test(r)?(p.push(r),e=r,l+1):("-"!==r&&"+"!==r||!/[eE]/.test(e))&&/[^\d]/.test(r)?(w(p.join("")),c=999,l):(p.push(r),e=r,l+1)}function D(){if(/[^\d\w_]/.test(r)){var t=p.join("");return c=R[t]?8:b[t]?7:6,w(p.join("")),c=999,l}return p.push(r),e=r,l+1}};var n=e(7),a=e(36),i=e(8),o=e(37),s=e(38),u=["block-comment","line-comment","preprocessor","operator","integer","float","ident","builtin","keyword","whitespace","eof","integer"]},function(t,r){t.exports=["<<=",">>=","++","--","<<",">>","<=",">=","==","!=","&&","||","+=","-=","*=","/=","%=","&=","^^","^=","|=","(",")","[","]",".","!","~","*","/","%","+","-","<",">","&","^","|","?",":","=",",",";","{","}"]},function(t,r,e){var n=e(7);t.exports=n.slice().concat(["layout","centroid","smooth","case","mat2x2","mat2x3","mat2x4","mat3x2","mat3x3","mat3x4","mat4x2","mat4x3","mat4x4","uvec2","uvec3","uvec4","samplerCubeShadow","sampler2DArray","sampler2DArrayShadow","isampler2D","isampler3D","isamplerCube","isampler2DArray","usampler2D","usampler3D","usamplerCube","usampler2DArray","coherent","restrict","readonly","writeonly","resource","atomic_uint","noperspective","patch","sample","subroutine","common","partition","active","filter","image1D","image2D","image3D","imageCube","iimage1D","iimage2D","iimage3D","iimageCube","uimage1D","uimage2D","uimage3D","uimageCube","image1DArray","image2DArray","iimage1DArray","iimage2DArray","uimage1DArray","uimage2DArray","image1DShadow","image2DShadow","image1DArrayShadow","image2DArrayShadow","imageBuffer","iimageBuffer","uimageBuffer","sampler1DArray","sampler1DArrayShadow","isampler1D","isampler1DArray","usampler1D","usampler1DArray","isampler2DRect","usampler2DRect","samplerBuffer","isamplerBuffer","usamplerBuffer","sampler2DMS","isampler2DMS","usampler2DMS","sampler2DMSArray","isampler2DMSArray","usampler2DMSArray"])},function(t,r,e){var n=e(8);n=n.slice().filter((function(t){return!/^(gl\_|texture)/.test(t)})),t.exports=n.concat(["gl_VertexID","gl_InstanceID","gl_Position","gl_PointSize","gl_FragCoord","gl_FrontFacing","gl_FragDepth","gl_PointCoord","gl_MaxVertexAttribs","gl_MaxVertexUniformVectors","gl_MaxVertexOutputVectors","gl_MaxFragmentInputVectors","gl_MaxVertexTextureImageUnits","gl_MaxCombinedTextureImageUnits","gl_MaxTextureImageUnits","gl_MaxFragmentUniformVectors","gl_MaxDrawBuffers","gl_MinProgramTexelOffset","gl_MaxProgramTexelOffset","gl_DepthRangeParameters","gl_DepthRange","trunc","round","roundEven","isnan","isinf","floatBitsToInt","floatBitsToUint","intBitsToFloat","uintBitsToFloat","packSnorm2x16","unpackSnorm2x16","packUnorm2x16","unpackUnorm2x16","packHalf2x16","unpackHalf2x16","outerProduct","transpose","determinant","inverse","texture","textureSize","textureProj","textureLod","textureOffset","texelFetch","texelFetchOffset","textureProjOffset","textureLodOffset","textureProjLod","textureProjLodOffset","textureGrad","textureGradOffset","textureProjGrad","textureProjGradOffset"])},function(t,r){t.exports=function(t){return atob(t)}},function(t,r,e){var n=e(41);t.exports=function(t,r,e){r="number"==typeof r?r:1,e=e||": ";var a=t.split(/\r?\n/),i=String(a.length+r-1).length;return a.map((function(t,a){var o=a+r,s=String(o).length;return n(o,i-s)+e+t})).join("\n")}},function(t,r,e){"use strict";
/*!
* pad-left <https://github.com/jonschlinkert/pad-left>
*
* Copyright (c) 2014-2015, Jon Schlinkert.
* Licensed under the MIT license.
*/var n=e(42);t.exports=function(t,r,e){return n(e=void 0!==e?e+"":" ",r)+t}},function(t,r,e){"use strict";
/*!
* repeat-string <https://github.com/jonschlinkert/repeat-string>
*
* Copyright (c) 2014-2015, Jon Schlinkert.
* Licensed under the MIT License.
*/var n,a="";t.exports=function(t,r){if("string"!=typeof t)throw new TypeError("expected a string");if(1===r)return t;if(2===r)return t+t;var e=t.length*r;if(n!==t||void 0===n)n=t,a="";else if(a.length>=e)return a.substr(0,e);for(;e>a.length&&r>1;)1&r&&(a+=t),r>>=1,t+=t;return a=(a+=t).substr(0,e)}},function(t,r,e){var n=e(44);t.exports=function(){var t=n();return{get:function(r,e){var n=t(r);return n.hasOwnProperty("value")?n.value:e},set:function(r,e){return t(r).value=e,this},has:function(r){return"value"in t(r)},delete:function(r){return delete t(r).value}}}},function(t,r,e){var n=e(45);t.exports=function(){var t={};return function(r){if(("object"!=typeof r||null===r)&&"function"!=typeof r)throw new Error("Weakmap-shim: Key must be object");var e=r.valueOf(t);return e&&e.identity===t?e:n(r,t)}}},function(t,r){t.exports=function(t,r){var e={identity:r},n=t.valueOf;return Object.defineProperty(t,"valueOf",{value:function(t){return t!==r?n.apply(this,arguments):e},writable:!0}),e}},function(t,r,e){"use strict";r.uniforms=function(t,r){for(var e=t.getProgramParameter(r,t.ACTIVE_UNIFORMS),n=[],a=0;a<e;++a){var o=t.getActiveUniform(r,a);if(o){var s=i(t,o.type);if(o.size>1)for(var u=0;u<o.size;++u)n.push({name:o.name.replace("[0]","["+u+"]"),type:s});else n.push({name:o.name,type:s})}}return n},r.attributes=function(t,r){for(var e=t.getProgramParameter(r,t.ACTIVE_ATTRIBUTES),n=[],a=0;a<e;++a){var o=t.getActiveAttrib(r,a);o&&n.push({name:o.name,type:i(t,o.type)})}return n};var n={FLOAT:"float",FLOAT_VEC2:"vec2",FLOAT_VEC3:"vec3",FLOAT_VEC4:"vec4",INT:"int",INT_VEC2:"ivec2",INT_VEC3:"ivec3",INT_VEC4:"ivec4",BOOL:"bool",BOOL_VEC2:"bvec2",BOOL_VEC3:"bvec3",BOOL_VEC4:"bvec4",FLOAT_MAT2:"mat2",FLOAT_MAT3:"mat3",FLOAT_MAT4:"mat4",SAMPLER_2D:"sampler2D",SAMPLER_CUBE:"samplerCube"},a=null;function i(t,r){if(!a){var e=Object.keys(n);a={};for(var i=0;i<e.length;++i){var o=e[i];a[t[o]]=n[o]}}return a[r]}},function(t,r,e){"use strict";var n=e(1);t.exports=function(t,r,e,n){a||(a=t.FRAMEBUFFER_UNSUPPORTED,i=t.FRAMEBUFFER_INCOMPLETE_ATTACHMENT,o=t.FRAMEBUFFER_INCOMPLETE_DIMENSIONS,s=t.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT);var f=t.getExtension("WEBGL_draw_buffers");!u&&f&&function(t,r){var e=t.getParameter(r.MAX_COLOR_ATTACHMENTS_WEBGL);u=new Array(e+1);for(var n=0;n<=e;++n){for(var a=new Array(e),i=0;i<n;++i)a[i]=t.COLOR_ATTACHMENT0+i;for(i=n;i<e;++i)a[i]=t.NONE;u[n]=a}}(t,f);Array.isArray(r)&&(n=e,e=0|r[1],r=0|r[0]);if("number"!=typeof r)throw new Error("gl-fbo: Missing shape parameter");var l=t.getParameter(t.MAX_RENDERBUFFER_SIZE);if(r<0||r>l||e<0||e>l)throw new Error("gl-fbo: Parameters are too large for FBO");var h=1;if("color"in(n=n||{})){if((h=Math.max(0|n.color,0))<0)throw new Error("gl-fbo: Must specify a nonnegative number of colors");if(h>1){if(!f)throw new Error("gl-fbo: Multiple draw buffer extension not supported");if(h>t.getParameter(f.MAX_COLOR_ATTACHMENTS_WEBGL))throw new Error("gl-fbo: Context does not support "+h+" draw buffers")}}var c=t.UNSIGNED_BYTE,p=t.getExtension("OES_texture_float");if(n.float&&h>0){if(!p)throw new Error("gl-fbo: Context does not support floating point textures");c=t.FLOAT}else n.preferFloat&&h>0&&p&&(c=t.FLOAT);var _=!0;"depth"in n&&(_=!!n.depth);var d=!1;"stencil"in n&&(d=!!n.stencil);return new g(t,r,e,c,h,_,d,f)};var a,i,o,s,u=null;function f(t){return[t.getParameter(t.FRAMEBUFFER_BINDING),t.getParameter(t.RENDERBUFFER_BINDING),t.getParameter(t.TEXTURE_BINDING_2D)]}function l(t,r){t.bindFramebuffer(t.FRAMEBUFFER,r[0]),t.bindRenderbuffer(t.RENDERBUFFER,r[1]),t.bindTexture(t.TEXTURE_2D,r[2])}function h(t){switch(t){case a:throw new Error("gl-fbo: Framebuffer unsupported");case i:throw new Error("gl-fbo: Framebuffer incomplete attachment");case o:throw new Error("gl-fbo: Framebuffer incomplete dimensions");case s:throw new Error("gl-fbo: Framebuffer incomplete missing attachment");default:throw new Error("gl-fbo: Framebuffer failed for unspecified reason")}}function c(t,r,e,a,i,o){if(!a)return null;var s=n(t,r,e,i,a);return s.magFilter=t.NEAREST,s.minFilter=t.NEAREST,s.mipSamples=1,s.bind(),t.framebufferTexture2D(t.FRAMEBUFFER,o,t.TEXTURE_2D,s.handle,0),s}function p(t,r,e,n,a){var i=t.createRenderbuffer();return t.bindRenderbuffer(t.RENDERBUFFER,i),t.renderbufferStorage(t.RENDERBUFFER,n,r,e),t.framebufferRenderbuffer(t.FRAMEBUFFER,a,t.RENDERBUFFER,i),i}function g(t,r,e,n,a,i,o,s){this.gl=t,this._shape=[0|r,0|e],this._destroyed=!1,this._ext=s,this.color=new Array(a);for(var g=0;g<a;++g)this.color[g]=null;this._color_rb=null,this.depth=null,this._depth_rb=null,this._colorType=n,this._useDepth=i,this._useStencil=o;var _=this,d=[0|r,0|e];Object.defineProperties(d,{0:{get:function(){return _._shape[0]},set:function(t){return _.width=t}},1:{get:function(){return _._shape[1]},set:function(t){return _.height=t}}}),this._shapeVector=d,function(t){var r=f(t.gl),e=t.gl,n=t.handle=e.createFramebuffer(),a=t._shape[0],i=t._shape[1],o=t.color.length,s=t._ext,g=t._useStencil,_=t._useDepth,d=t._colorType;e.bindFramebuffer(e.FRAMEBUFFER,n);for(var E=0;E<o;++E)t.color[E]=c(e,a,i,d,e.RGBA,e.COLOR_ATTACHMENT0+E);0===o?(t._color_rb=p(e,a,i,e.RGBA4,e.COLOR_ATTACHMENT0),s&&s.drawBuffersWEBGL(u[0])):o>1&&s.drawBuffersWEBGL(u[o]);var v=e.getExtension("WEBGL_depth_texture");v?g?t.depth=c(e,a,i,v.UNSIGNED_INT_24_8_WEBGL,e.DEPTH_STENCIL,e.DEPTH_STENCIL_ATTACHMENT):_&&(t.depth=c(e,a,i,e.UNSIGNED_SHORT,e.DEPTH_COMPONENT,e.DEPTH_ATTACHMENT)):_&&g?t._depth_rb=p(e,a,i,e.DEPTH_STENCIL,e.DEPTH_STENCIL_ATTACHMENT):_?t._depth_rb=p(e,a,i,e.DEPTH_COMPONENT16,e.DEPTH_ATTACHMENT):g&&(t._depth_rb=p(e,a,i,e.STENCIL_INDEX,e.STENCIL_ATTACHMENT));var y=e.checkFramebufferStatus(e.FRAMEBUFFER);if(y!==e.FRAMEBUFFER_COMPLETE){t._destroyed=!0,e.bindFramebuffer(e.FRAMEBUFFER,null),e.deleteFramebuffer(t.handle),t.handle=null,t.depth&&(t.depth.dispose(),t.depth=null),t._depth_rb&&(e.deleteRenderbuffer(t._depth_rb),t._depth_rb=null);for(E=0;E<t.color.length;++E)t.color[E].dispose(),t.color[E]=null;t._color_rb&&(e.deleteRenderbuffer(t._color_rb),t._color_rb=null),l(e,r),h(y)}l(e,r)}(this)}var _=g.prototype;function d(t,r,e){if(t._destroyed)throw new Error("gl-fbo: Can't resize destroyed FBO");if(t._shape[0]!==r||t._shape[1]!==e){var n=t.gl,a=n.getParameter(n.MAX_RENDERBUFFER_SIZE);if(r<0||r>a||e<0||e>a)throw new Error("gl-fbo: Can't resize FBO, invalid dimensions");t._shape[0]=r,t._shape[1]=e;for(var i=f(n),o=0;o<t.color.length;++o)t.color[o].shape=t._shape;t._color_rb&&(n.bindRenderbuffer(n.RENDERBUFFER,t._color_rb),n.renderbufferStorage(n.RENDERBUFFER,n.RGBA4,t._shape[0],t._shape[1])),t.depth&&(t.depth.shape=t._shape),t._depth_rb&&(n.bindRenderbuffer(n.RENDERBUFFER,t._depth_rb),t._useDepth&&t._useStencil?n.renderbufferStorage(n.RENDERBUFFER,n.DEPTH_STENCIL,t._shape[0],t._shape[1]):t._useDepth?n.renderbufferStorage(n.RENDERBUFFER,n.DEPTH_COMPONENT16,t._shape[0],t._shape[1]):t._useStencil&&n.renderbufferStorage(n.RENDERBUFFER,n.STENCIL_INDEX,t._shape[0],t._shape[1])),n.bindFramebuffer(n.FRAMEBUFFER,t.handle);var s=n.checkFramebufferStatus(n.FRAMEBUFFER);s!==n.FRAMEBUFFER_COMPLETE&&(t.dispose(),l(n,i),h(s)),l(n,i)}}Object.defineProperties(_,{shape:{get:function(){return this._destroyed?[0,0]:this._shapeVector},set:function(t){if(Array.isArray(t)||(t=[0|t,0|t]),2!==t.length)throw new Error("gl-fbo: Shape vector must be length 2");var r=0|t[0],e=0|t[1];return d(this,r,e),[r,e]},enumerable:!1},width:{get:function(){return this._destroyed?0:this._shape[0]},set:function(t){return d(this,t|=0,this._shape[1]),t},enumerable:!1},height:{get:function(){return this._destroyed?0:this._shape[1]},set:function(t){return t|=0,d(this,this._shape[0],t),t},enumerable:!1}}),_.bind=function(){if(!this._destroyed){var t=this.gl;t.bindFramebuffer(t.FRAMEBUFFER,this.handle),t.viewport(0,0,this._shape[0],this._shape[1])}},_.dispose=function(){if(!this._destroyed){this._destroyed=!0;var t=this.gl;t.deleteFramebuffer(this.handle),this.handle=null,this.depth&&(this.depth.dispose(),this.depth=null),this._depth_rb&&(t.deleteRenderbuffer(this._depth_rb),this._depth_rb=null);for(var r=0;r<this.color.length;++r)this.color[r].dispose(),this.color[r]=null;this._color_rb&&(t.deleteRenderbuffer(this._color_rb),this._color_rb=null)}}},function(t,r,e){"use strict";var n=e(49),a=e(50);function i(t){this.bindVertexArrayOES=t.bindVertexArray.bind(t),this.createVertexArrayOES=t.createVertexArray.bind(t),this.deleteVertexArrayOES=t.deleteVertexArray.bind(t)}t.exports=function(t,r,e,o){var s,u=t.createVertexArray?new i(t):t.getExtension("OES_vertex_array_object");return(s=u?n(t,u):a(t)).update(r,e,o),s}},function(t,r,e){"use strict";var n=e(9);function a(t,r,e,n,a,i){this.location=t,this.dimension=r,this.a=e,this.b=n,this.c=a,this.d=i}function i(t,r,e){this.gl=t,this._ext=r,this.handle=e,this._attribs=[],this._useElements=!1,this._elementsType=t.UNSIGNED_SHORT}a.prototype.bind=function(t){switch(this.dimension){case 1:t.vertexAttrib1f(this.location,this.a);break;case 2:t.vertexAttrib2f(this.location,this.a,this.b);break;case 3:t.vertexAttrib3f(this.location,this.a,this.b,this.c);break;case 4:t.vertexAttrib4f(this.location,this.a,this.b,this.c,this.d)}},i.prototype.bind=function(){this._ext.bindVertexArrayOES(this.handle);for(var t=0;t<this._attribs.length;++t)this._attribs[t].bind(this.gl)},i.prototype.unbind=function(){this._ext.bindVertexArrayOES(null)},i.prototype.dispose=function(){this._ext.deleteVertexArrayOES(this.handle)},i.prototype.update=function(t,r,e){if(this.bind(),n(this.gl,r,t),this.unbind(),this._attribs.length=0,t)for(var i=0;i<t.length;++i){var o=t[i];"number"==typeof o?this._attribs.push(new a(i,1,o)):Array.isArray(o)&&this._attribs.push(new a(i,o.length,o[0],o[1],o[2],o[3]))}this._useElements=!!r,this._elementsType=e||this.gl.UNSIGNED_SHORT},i.prototype.draw=function(t,r,e){e=e||0;var n=this.gl;this._useElements?n.drawElements(t,r,this._elementsType,e):n.drawArrays(t,e,r)},t.exports=function(t,r){return new i(t,r,r.createVertexArrayOES())}},function(t,r,e){"use strict";var n=e(9);function a(t){this.gl=t,this._elements=null,this._attributes=null,this._elementsType=t.UNSIGNED_SHORT}a.prototype.bind=function(){n(this.gl,this._elements,this._attributes)},a.prototype.update=function(t,r,e){this._elements=r,this._attributes=t,this._elementsType=e||this.gl.UNSIGNED_SHORT},a.prototype.dispose=function(){},a.prototype.unbind=function(){},a.prototype.draw=function(t,r,e){e=e||0;var n=this.gl;this._elements?n.drawElements(t,r,this._elementsType,e):n.drawArrays(t,e,r)},t.exports=function(t){return new a(t)}},function(t,r){t.exports=function(t){"string"==typeof t&&(t=[t]);for(var r=[].slice.call(arguments,1),e=[],n=0;n<t.length-1;n++)e.push(t[n],r[n]||"");return e.push(t[n]),e.join("")}},function(t,r,e){t.exports={create:e(53),clone:e(54),copy:e(55),identity:e(10),transpose:e(56),invert:e(57),adjoint:e(58),determinant:e(59),multiply:e(60),translate:e(61),scale:e(62),rotate:e(63),rotateX:e(64),rotateY:e(65),rotateZ:e(66),fromRotation:e(67),fromRotationTranslation:e(68),fromScaling:e(69),fromTranslation:e(70),fromXRotation:e(71),fromYRotation:e(72),fromZRotation:e(73),fromQuat:e(74),frustum:e(75),perspective:e(76),perspectiveFromFieldOfView:e(77),ortho:e(78),lookAt:e(79),str:e(80)}},function(t,r){t.exports=function(){var t=new Float32Array(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}},function(t,r){t.exports=function(t){var r=new Float32Array(16);return r[0]=t[0],r[1]=t[1],r[2]=t[2],r[3]=t[3],r[4]=t[4],r[5]=t[5],r[6]=t[6],r[7]=t[7],r[8]=t[8],r[9]=t[9],r[10]=t[10],r[11]=t[11],r[12]=t[12],r[13]=t[13],r[14]=t[14],r[15]=t[15],r}},function(t,r){t.exports=function(t,r){return t[0]=r[0],t[1]=r[1],t[2]=r[2],t[3]=r[3],t[4]=r[4],t[5]=r[5],t[6]=r[6],t[7]=r[7],t[8]=r[8],t[9]=r[9],t[10]=r[10],t[11]=r[11],t[12]=r[12],t[13]=r[13],t[14]=r[14],t[15]=r[15],t}},function(t,r){t.exports=function(t,r){if(t===r){var e=r[1],n=r[2],a=r[3],i=r[6],o=r[7],s=r[11];t[1]=r[4],t[2]=r[8],t[3]=r[12],t[4]=e,t[6]=r[9],t[7]=r[13],t[8]=n,t[9]=i,t[11]=r[14],t[12]=a,t[13]=o,t[14]=s}else t[0]=r[0],t[1]=r[4],t[2]=r[8],t[3]=r[12],t[4]=r[1],t[5]=r[5],t[6]=r[9],t[7]=r[13],t[8]=r[2],t[9]=r[6],t[10]=r[10],t[11]=r[14],t[12]=r[3],t[13]=r[7],t[14]=r[11],t[15]=r[15];return t}},function(t,r){t.exports=function(t,r){var e=r[0],n=r[1],a=r[2],i=r[3],o=r[4],s=r[5],u=r[6],f=r[7],l=r[8],h=r[9],c=r[10],p=r[11],g=r[12],_=r[13],d=r[14],E=r[15],v=e*s-n*o,y=e*u-a*o,m=e*f-i*o,T=n*u-a*s,A=n*f-i*s,b=a*f-i*u,R=l*_-h*g,w=l*d-c*g,x=l*E-p*g,I=h*d-c*_,N=h*E-p*_,S=c*E-p*d,M=v*S-y*N+m*I+T*x-A*w+b*R;if(!M)return null;return M=1/M,t[0]=(s*S-u*N+f*I)*M,t[1]=(a*N-n*S-i*I)*M,t[2]=(_*b-d*A+E*T)*M,t[3]=(c*A-h*b-p*T)*M,t[4]=(u*x-o*S-f*w)*M,t[5]=(e*S-a*x+i*w)*M,t[6]=(d*m-g*b-E*y)*M,t[7]=(l*b-c*m+p*y)*M,t[8]=(o*N-s*x+f*R)*M,t[9]=(n*x-e*N-i*R)*M,t[10]=(g*A-_*m+E*v)*M,t[11]=(h*m-l*A-p*v)*M,t[12]=(s*w-o*I-u*R)*M,t[13]=(e*I-n*w+a*R)*M,t[14]=(_*y-g*T-d*v)*M,t[15]=(l*T-h*y+c*v)*M,t}},function(t,r){t.exports=function(t,r){var e=r[0],n=r[1],a=r[2],i=r[3],o=r[4],s=r[5],u=r[6],f=r[7],l=r[8],h=r[9],c=r[10],p=r[11],g=r[12],_=r[13],d=r[14],E=r[15];return t[0]=s*(c*E-p*d)-h*(u*E-f*d)+_*(u*p-f*c),t[1]=-(n*(c*E-p*d)-h*(a*E-i*d)+_*(a*p-i*c)),t[2]=n*(u*E-f*d)-s*(a*E-i*d)+_*(a*f-i*u),t[3]=-(n*(u*p-f*c)-s*(a*p-i*c)+h*(a*f-i*u)),t[4]=-(o*(c*E-p*d)-l*(u*E-f*d)+g*(u*p-f*c)),t[5]=e*(c*E-p*d)-l*(a*E-i*d)+g*(a*p-i*c),t[6]=-(e*(u*E-f*d)-o*(a*E-i*d)+g*(a*f-i*u)),t[7]=e*(u*p-f*c)-o*(a*p-i*c)+l*(a*f-i*u),t[8]=o*(h*E-p*_)-l*(s*E-f*_)+g*(s*p-f*h),t[9]=-(e*(h*E-p*_)-l*(n*E-i*_)+g*(n*p-i*h)),t[10]=e*(s*E-f*_)-o*(n*E-i*_)+g*(n*f-i*s),t[11]=-(e*(s*p-f*h)-o*(n*p-i*h)+l*(n*f-i*s)),t[12]=-(o*(h*d-c*_)-l*(s*d-u*_)+g*(s*c-u*h)),t[13]=e*(h*d-c*_)-l*(n*d-a*_)+g*(n*c-a*h),t[14]=-(e*(s*d-u*_)-o*(n*d-a*_)+g*(n*u-a*s)),t[15]=e*(s*c-u*h)-o*(n*c-a*h)+l*(n*u-a*s),t}},function(t,r){t.exports=function(t){var r=t[0],e=t[1],n=t[2],a=t[3],i=t[4],o=t[5],s=t[6],u=t[7],f=t[8],l=t[9],h=t[10],c=t[11],p=t[12],g=t[13],_=t[14],d=t[15];return(r*o-e*i)*(h*d-c*_)-(r*s-n*i)*(l*d-c*g)+(r*u-a*i)*(l*_-h*g)+(e*s-n*o)*(f*d-c*p)-(e*u-a*o)*(f*_-h*p)+(n*u-a*s)*(f*g-l*p)}},function(t,r){t.exports=function(t,r,e){var n=r[0],a=r[1],i=r[2],o=r[3],s=r[4],u=r[5],f=r[6],l=r[7],h=r[8],c=r[9],p=r[10],g=r[11],_=r[12],d=r[13],E=r[14],v=r[15],y=e[0],m=e[1],T=e[2],A=e[3];return t[0]=y*n+m*s+T*h+A*_,t[1]=y*a+m*u+T*c+A*d,t[2]=y*i+m*f+T*p+A*E,t[3]=y*o+m*l+T*g+A*v,y=e[4],m=e[5],T=e[6],A=e[7],t[4]=y*n+m*s+T*h+A*_,t[5]=y*a+m*u+T*c+A*d,t[6]=y*i+m*f+T*p+A*E,t[7]=y*o+m*l+T*g+A*v,y=e[8],m=e[9],T=e[10],A=e[11],t[8]=y*n+m*s+T*h+A*_,t[9]=y*a+m*u+T*c+A*d,t[10]=y*i+m*f+T*p+A*E,t[11]=y*o+m*l+T*g+A*v,y=e[12],m=e[13],T=e[14],A=e[15],t[12]=y*n+m*s+T*h+A*_,t[13]=y*a+m*u+T*c+A*d,t[14]=y*i+m*f+T*p+A*E,t[15]=y*o+m*l+T*g+A*v,t}},function(t,r){t.exports=function(t,r,e){var n,a,i,o,s,u,f,l,h,c,p,g,_=e[0],d=e[1],E=e[2];r===t?(t[12]=r[0]*_+r[4]*d+r[8]*E+r[12],t[13]=r[1]*_+r[5]*d+r[9]*E+r[13],t[14]=r[2]*_+r[6]*d+r[10]*E+r[14],t[15]=r[3]*_+r[7]*d+r[11]*E+r[15]):(n=r[0],a=r[1],i=r[2],o=r[3],s=r[4],u=r[5],f=r[6],l=r[7],h=r[8],c=r[9],p=r[10],g=r[11],t[0]=n,t[1]=a,t[2]=i,t[3]=o,t[4]=s,t[5]=u,t[6]=f,t[7]=l,t[8]=h,t[9]=c,t[10]=p,t[11]=g,t[12]=n*_+s*d+h*E+r[12],t[13]=a*_+u*d+c*E+r[13],t[14]=i*_+f*d+p*E+r[14],t[15]=o*_+l*d+g*E+r[15]);return t}},function(t,r){t.exports=function(t,r,e){var n=e[0],a=e[1],i=e[2];return t[0]=r[0]*n,t[1]=r[1]*n,t[2]=r[2]*n,t[3]=r[3]*n,t[4]=r[4]*a,t[5]=r[5]*a,t[6]=r[6]*a,t[7]=r[7]*a,t[8]=r[8]*i,t[9]=r[9]*i,t[10]=r[10]*i,t[11]=r[11]*i,t[12]=r[12],t[13]=r[13],t[14]=r[14],t[15]=r[15],t}},function(t,r){t.exports=function(t,r,e,n){var a,i,o,s,u,f,l,h,c,p,g,_,d,E,v,y,m,T,A,b,R,w,x,I,N=n[0],S=n[1],M=n[2],U=Math.sqrt(N*N+S*S+M*M);if(Math.abs(U)<1e-6)return null;N*=U=1/U,S*=U,M*=U,a=Math.sin(e),i=Math.cos(e),o=1-i,s=r[0],u=r[1],f=r[2],l=r[3],h=r[4],c=r[5],p=r[6],g=r[7],_=r[8],d=r[9],E=r[10],v=r[11],y=N*N*o+i,m=S*N*o+M*a,T=M*N*o-S*a,A=N*S*o-M*a,b=S*S*o+i,R=M*S*o+N*a,w=N*M*o+S*a,x=S*M*o-N*a,I=M*M*o+i,t[0]=s*y+h*m+_*T,t[1]=u*y+c*m+d*T,t[2]=f*y+p*m+E*T,t[3]=l*y+g*m+v*T,t[4]=s*A+h*b+_*R,t[5]=u*A+c*b+d*R,t[6]=f*A+p*b+E*R,t[7]=l*A+g*b+v*R,t[8]=s*w+h*x+_*I,t[9]=u*w+c*x+d*I,t[10]=f*w+p*x+E*I,t[11]=l*w+g*x+v*I,r!==t&&(t[12]=r[12],t[13]=r[13],t[14]=r[14],t[15]=r[15]);return t}},function(t,r){t.exports=function(t,r,e){var n=Math.sin(e),a=Math.cos(e),i=r[4],o=r[5],s=r[6],u=r[7],f=r[8],l=r[9],h=r[10],c=r[11];r!==t&&(t[0]=r[0],t[1]=r[1],t[2]=r[2],t[3]=r[3],t[12]=r[12],t[13]=r[13],t[14]=r[14],t[15]=r[15]);return t[4]=i*a+f*n,t[5]=o*a+l*n,t[6]=s*a+h*n,t[7]=u*a+c*n,t[8]=f*a-i*n,t[9]=l*a-o*n,t[10]=h*a-s*n,t[11]=c*a-u*n,t}},function(t,r){t.exports=function(t,r,e){var n=Math.sin(e),a=Math.cos(e),i=r[0],o=r[1],s=r[2],u=r[3],f=r[8],l=r[9],h=r[10],c=r[11];r!==t&&(t[4]=r[4],t[5]=r[5],t[6]=r[6],t[7]=r[7],t[12]=r[12],t[13]=r[13],t[14]=r[14],t[15]=r[15]);return t[0]=i*a-f*n,t[1]=o*a-l*n,t[2]=s*a-h*n,t[3]=u*a-c*n,t[8]=i*n+f*a,t[9]=o*n+l*a,t[10]=s*n+h*a,t[11]=u*n+c*a,t}},function(t,r){t.exports=function(t,r,e){var n=Math.sin(e),a=Math.cos(e),i=r[0],o=r[1],s=r[2],u=r[3],f=r[4],l=r[5],h=r[6],c=r[7];r!==t&&(t[8]=r[8],t[9]=r[9],t[10]=r[10],t[11]=r[11],t[12]=r[12],t[13]=r[13],t[14]=r[14],t[15]=r[15]);return t[0]=i*a+f*n,t[1]=o*a+l*n,t[2]=s*a+h*n,t[3]=u*a+c*n,t[4]=f*a-i*n,t[5]=l*a-o*n,t[6]=h*a-s*n,t[7]=c*a-u*n,t}},function(t,r){t.exports=function(t,r,e){var n,a,i,o=e[0],s=e[1],u=e[2],f=Math.sqrt(o*o+s*s+u*u);if(Math.abs(f)<1e-6)return null;return o*=f=1/f,s*=f,u*=f,n=Math.sin(r),a=Math.cos(r),i=1-a,t[0]=o*o*i+a,t[1]=s*o*i+u*n,t[2]=u*o*i-s*n,t[3]=0,t[4]=o*s*i-u*n,t[5]=s*s*i+a,t[6]=u*s*i+o*n,t[7]=0,t[8]=o*u*i+s*n,t[9]=s*u*i-o*n,t[10]=u*u*i+a,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}},function(t,r){t.exports=function(t,r,e){var n=r[0],a=r[1],i=r[2],o=r[3],s=n+n,u=a+a,f=i+i,l=n*s,h=n*u,c=n*f,p=a*u,g=a*f,_=i*f,d=o*s,E=o*u,v=o*f;return t[0]=1-(p+_),t[1]=h+v,t[2]=c-E,t[3]=0,t[4]=h-v,t[5]=1-(l+_),t[6]=g+d,t[7]=0,t[8]=c+E,t[9]=g-d,t[10]=1-(l+p),t[11]=0,t[12]=e[0],t[13]=e[1],t[14]=e[2],t[15]=1,t}},function(t,r){t.exports=function(t,r){return t[0]=r[0],t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=r[1],t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=r[2],t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}},function(t,r){t.exports=function(t,r){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=r[0],t[13]=r[1],t[14]=r[2],t[15]=1,t}},function(t,r){t.exports=function(t,r){var e=Math.sin(r),n=Math.cos(r);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=n,t[6]=e,t[7]=0,t[8]=0,t[9]=-e,t[10]=n,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}},function(t,r){t.exports=function(t,r){var e=Math.sin(r),n=Math.cos(r);return t[0]=n,t[1]=0,t[2]=-e,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=e,t[9]=0,t[10]=n,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}},function(t,r){t.exports=function(t,r){var e=Math.sin(r),n=Math.cos(r);return t[0]=n,t[1]=e,t[2]=0,t[3]=0,t[4]=-e,t[5]=n,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}},function(t,r){t.exports=function(t,r){var e=r[0],n=r[1],a=r[2],i=r[3],o=e+e,s=n+n,u=a+a,f=e*o,l=n*o,h=n*s,c=a*o,p=a*s,g=a*u,_=i*o,d=i*s,E=i*u;return t[0]=1-h-g,t[1]=l+E,t[2]=c-d,t[3]=0,t[4]=l-E,t[5]=1-f-g,t[6]=p+_,t[7]=0,t[8]=c+d,t[9]=p-_,t[10]=1-f-h,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}},function(t,r){t.exports=function(t,r,e,n,a,i,o){var s=1/(e-r),u=1/(a-n),f=1/(i-o);return t[0]=2*i*s,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=2*i*u,t[6]=0,t[7]=0,t[8]=(e+r)*s,t[9]=(a+n)*u,t[10]=(o+i)*f,t[11]=-1,t[12]=0,t[13]=0,t[14]=o*i*2*f,t[15]=0,t}},function(t,r){t.exports=function(t,r,e,n,a){var i=1/Math.tan(r/2),o=1/(n-a);return t[0]=i/e,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=i,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=(a+n)*o,t[11]=-1,t[12]=0,t[13]=0,t[14]=2*a*n*o,t[15]=0,t}},function(t,r){t.exports=function(t,r,e,n){var a=Math.tan(r.upDegrees*Math.PI/180),i=Math.tan(r.downDegrees*Math.PI/180),o=Math.tan(r.leftDegrees*Math.PI/180),s=Math.tan(r.rightDegrees*Math.PI/180),u=2/(o+s),f=2/(a+i);return t[0]=u,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=f,t[6]=0,t[7]=0,t[8]=-(o-s)*u*.5,t[9]=(a-i)*f*.5,t[10]=n/(e-n),t[11]=-1,t[12]=0,t[13]=0,t[14]=n*e/(e-n),t[15]=0,t}},function(t,r){t.exports=function(t,r,e,n,a,i,o){var s=1/(r-e),u=1/(n-a),f=1/(i-o);return t[0]=-2*s,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=-2*u,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=2*f,t[11]=0,t[12]=(r+e)*s,t[13]=(a+n)*u,t[14]=(o+i)*f,t[15]=1,t}},function(t,r,e){var n=e(10);t.exports=function(t,r,e,a){var i,o,s,u,f,l,h,c,p,g,_=r[0],d=r[1],E=r[2],v=a[0],y=a[1],m=a[2],T=e[0],A=e[1],b=e[2];if(Math.abs(_-T)<1e-6&&Math.abs(d-A)<1e-6&&Math.abs(E-b)<1e-6)return n(t);h=_-T,c=d-A,p=E-b,g=1/Math.sqrt(h*h+c*c+p*p),i=y*(p*=g)-m*(c*=g),o=m*(h*=g)-v*p,s=v*c-y*h,(g=Math.sqrt(i*i+o*o+s*s))?(i*=g=1/g,o*=g,s*=g):(i=0,o=0,s=0);u=c*s-p*o,f=p*i-h*s,l=h*o-c*i,(g=Math.sqrt(u*u+f*f+l*l))?(u*=g=1/g,f*=g,l*=g):(u=0,f=0,l=0);return t[0]=i,t[1]=u,t[2]=h,t[3]=0,t[4]=o,t[5]=f,t[6]=c,t[7]=0,t[8]=s,t[9]=l,t[10]=p,t[11]=0,t[12]=-(i*_+o*d+s*E),t[13]=-(u*_+f*d+l*E),t[14]=-(h*_+c*d+p*E),t[15]=1,t}},function(t,r){t.exports=function(t){return"mat4("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+", "+t[4]+", "+t[5]+", "+t[6]+", "+t[7]+", "+t[8]+", "+t[9]+", "+t[10]+", "+t[11]+", "+t[12]+", "+t[13]+", "+t[14]+", "+t[15]+")"}},function(t){t.exports=JSON.parse('{"name":"glsl-projectron","version":"0.4.0","description":"GPU demo to evolve vertex data matching a target image","author":"Andy Hall","license":"MIT","main":"src/index.js","files":["/src"],"scripts":{"start":"cd demo; webpack-dev-server","build":"cd demo; export NODE_OPTIONS=--openssl-legacy-provider; webpack --env.production"},"dependencies":{"game-shell":"github:mikolalysenko/game-shell","gl-buffer":"^2.1.2","gl-fbo":"^2.0.5","gl-mat4":"^1.2.0","gl-now":"github:stackgl/gl-now","gl-shader":"^4.2.1","gl-texture2d":"^2.1.0","gl-vao":"^1.3.0","glslify":"^7.0.0"},"devDependencies":{"glslify-loader":"^2.0.0","raw-loader":"^3.1.0","webpack":"^4.39.1","webpack-cli":"^3.3.6","webpack-dev-server":"^3.7.2"},"repository":{"type":"git","url":"https://github.com/fenomas/glsl-projectron.git"},"bugs":{"url":"https://github.com/fenomas/glsl-projectron/issues"},"keywords":["GLSL","GPGPU","image","projection"]}')},function(t,r,e){var n={"./avgReduce4-frag.glsl":83,"./camera-frag.glsl":84,"./camera-vert.glsl":85,"./diffReduce4-frag.glsl":86,"./flatTexture-frag.glsl":87,"./flatTexture-vert.glsl":88,"./simpleDiff-frag.glsl":89};function a(t){var r=i(t);return e(r)}function i(t){if(!e.o(n,t)){var r=new Error("Cannot find module '"+t+"'");throw r.code="MODULE_NOT_FOUND",r}return n[t]}a.keys=function(){return Object.keys(n)},a.resolve=i,t.exports=a,a.id=82},function(t,r,e){"use strict";e.r(r),r.default="precision highp float;\n#define GLSLIFY 1\n\nuniform float inputDim;\nuniform sampler2D buffer;\n\nconst float mag = 255.0; // magnitude for packing float into rgb channels\n\nvarying vec2 uv;\n\nvoid main() {\n\t\n\t// size of an input and output pixel in uv\n\tfloat ip = 1.0 / inputDim;\n\tfloat op = ip * 4.0;\n\t\n\t// lower left corner of square of pixels to be reduced\n\tvec2 p = vec2(floor(uv.x/op)*op, floor(uv.y/op)*op );\n\t\n\t// average values in rg over a 4x4 square. \n\t// r channel is 256 times more significant than g.\n\tfloat sum = 0.0;\n\tvec2 offset = vec2(0.0);\n\tvec4 col;\n\t\n\tfor (int i=0; i<4; ++i) {\n\t\tfor (int j=0; j<4; ++j) {\n\t\t\tcol = texture2D(buffer, p+offset);\n\t\t\tsum += col.r + (col.g + col.b/mag)/mag;\n\t\t\toffset.y += ip;\n\t\t}\n\t\toffset.x += ip;\n\t\toffset.y = 0.0;\n\t}\n\tfloat avg = sum/16.0;\n\t\n\t// divide magnitude into channels\n\tfloat r = floor( avg*mag ) / mag;\n\tfloat g = floor((avg-r)*mag*mag) / mag;\n\tfloat b = ((avg-r)*mag - g) * mag;\n\t\t\n\tgl_FragColor = vec4( r, g, b, 1.0 );\n\t\n}"},function(t,r,e){"use strict";e.r(r),r.default="precision mediump float;\n#define GLSLIFY 1\n\nvarying vec4 fragColor;\n\nvoid main() {\n\tgl_FragColor = fragColor;\n//\tgl_FragColor = vec4( fragColor, 1.0);\n}\n"},function(t,r,e){"use strict";e.r(r),r.default="precision mediump float;\n#define GLSLIFY 1\n\nattribute vec4 position;\nattribute vec4 vertColor;\n\nuniform float perspective;\nuniform mat4 camera;\n\nvarying vec4 fragColor;\n\nvoid main() {\n\t\n\t// transform xyz inputs from [0..1] to clipspace [-1..1]\n\tvec4 pos = 2.0 * position - 1.0;\n\t\n\t// squash z and move back a bit so overall shape is visible\n\t// when rotated\n\tpos.z = pos.z * 0.75 + 0.25;\n\t\n\t// rotate by camera transform\n\tpos = camera * pos;\n\t\n\t// apply perspective \n\tfloat w = 1.0 + perspective*( pos.z );\n\t\n\t// squash z more to lessen getting clipped by frustum\n\tpos.z = pos.z * 0.5;\n\t\n\t// outputs\n\tgl_Position = vec4(pos.xyz, w);\n\tfragColor = vertColor;\n}"},function(t,r,e){"use strict";e.r(r),r.default="precision highp float;\n#define GLSLIFY 1\n\nuniform float inputDim;\nuniform sampler2D bufferA;\nuniform sampler2D bufferB;\n\nconst float mag = 255.0; // magnitude for packing float into rgb channels\n\nvarying vec2 uv;\n\nvoid main() {\n\t\n\t// size of an input and output pixel in uv\n\tfloat ip = 1.0 / inputDim;\n\tfloat op = ip * 4.0;\n\t\n\t// lower left corner of square of pixels to be reduced\n\tvec2 p = vec2(floor(uv.x/op)*op, floor(uv.y/op)*op );\n\t\n\t// find the distance betweens A and B pixels\n\t// and average it over a 4x4 square\n\tfloat sum = 0.0;\n\tvec2 offset = vec2(0.0);\n\t\n\tvec3 diff;\n\t\n\t// 'score' of similarity between image pixels A,B is basically:\n\t// \t\taverage( dot( (A-B), (A-B) ) )\n\t\n\tfor (int i=0; i<4; ++i) {\n\t\tfor (int j=0; j<4; ++j) {\n\t\t\t\n\t\t\tdiff = texture2D(bufferA, p+offset).rgb - \n\t\t\t\ttexture2D(bufferB, p+offset).rgb;\n\t\t\t\n\t\t\tsum += dot(diff,diff);\n\t\t\t\n\t\t\toffset.y += ip;\n\t\t}\n\t\toffset.x += ip;\n\t\toffset.y = 0.0;\n\t}\n\tfloat avg = sum/16.0;\n\t\n\t// prevent clipping - scale avg to [0..1]\n\tavg /= 3.0;\n\t\n\t// divide magnitude into channels\n\tfloat r = floor( avg*mag ) / mag;\n\tfloat g = floor((avg-r)*mag*mag) / mag;\n\tfloat b = ((avg-r)*mag - g) * mag;\n\t\n\tgl_FragColor = vec4( r, g, b, 1.0 );\n\t\n}"},function(t,r,e){"use strict";e.r(r),r.default="precision mediump float;\n#define GLSLIFY 1\n\nuniform sampler2D buffer;\nvarying vec2 uv;\n\nvoid main() {\n\t\n\tgl_FragColor = texture2D(buffer, uv);\n\t\n}"},function(t,r,e){"use strict";e.r(r),r.default="precision mediump float;\n#define GLSLIFY 1\n\nattribute vec2 position;\nuniform float multY;\n\nvarying vec2 uv;\n\nvoid main() {\n\tgl_Position = vec4(position,0.0,1.0);\n\t\n//\tflip y for texture loookup\n\tuv = position * vec2( 1.0, multY );\n\tuv = 0.5 * (uv+1.0);\n\t\n}"},function(t,r,e){"use strict";e.r(r),r.default="precision highp float;\n#define GLSLIFY 1\n\nuniform sampler2D bufferA;\nuniform sampler2D bufferB;\n\nvoid main() {\n\n\tvec3 sum = vec3(0.0, 0.0, 0.0);\n\n for (float i=0.0; i < 128.0; i++) {\n for (float j=0.0; j < 128.0; j++) {\n\n sum += abs(\n texture2D(bufferA, vec2(i/128.0, j/128.0)).rgb - \n\t\t\t\ttexture2D(bufferB, vec2(i/128.0, j/128.0)).rgb);\n }\n\n sum /= 128.0;\n }\n\n float diff = (sum.x + sum.y + sum.z) / 3.0;\n\n float mag = 16.0;\n\tfloat r = floor(diff * mag) / mag;\n\tfloat g = floor((diff-r) * mag * mag) / mag;\n\tfloat b = ((diff-r)*mag - g) * mag;\n\t\t\n\tgl_FragColor = vec4( r, g, b, 1.0 );\n}"},function(t,r,e){"use strict";e.r(r);var n=e(11),a=t=>document.getElementById(t),i=256,o=parseInt(new URLSearchParams(location.search).get("size"));o>8&&(i=o);var s=a("view"),u=new n.a(s,i),f=new Image;function l(t){_=0,u.setTargetImage(t)}f.onload=()=>{l(f)},f.src="./img/mona512.jpg",console.log("GLSL-Projectron ver "+u.version);var h=!0,c=!1,p=!1,g=[0,0],_=0,d=20,E=0,v=!0,y=0,m=0,T=0;!function t(){if(!h){for(var r=0;r<d;r++)u.runGeneration();_+=d}var e=performance.now();if(e-T>500&&(E=(_-m)/(e-T)*1e3,a("polys").value=u.getNumPolys(),a("score").value=u.getScore().toFixed(5),a("gens").value=_,a("gps").value=E.toFixed(0),a("paused").checked=h,m=_,T=e),e-y>500||h&&v){switch(c?1:p?2:0){case 0:u.draw(-g[0],-g[1]);break;case 1:u.drawTargetImage();break;case 2:u._drawScratchImage()}v=!1,y=e}requestAnimationFrame(t)}();var A=(t,r)=>{a(t).addEventListener("change",t=>{var e=t.target.type;return r("checkbox"===e?t.target.checked:t.target.value)})};A("paused",t=>{h=t}),A("showRef",t=>{c=t}),A("showScr",t=>{p=t}),A("gensPerFrame",t=>{d=parseInt(t)});var b=.1,R=.5,w=()=>u.setAlphaRange(b,R);A("minAlpha",t=>{b=parseFloat(t),w()}),A("maxAlpha",t=>{R=parseFloat(t),w()}),A("adjust",t=>{u.setAdjustAmount(parseFloat(t)||.5)}),A("preferFewer",t=>{u.setFewerPolyTolerance(parseFloat(t)||0)}),a("export").addEventListener("click",t=>{var r=u.exportData();a("data").value=r}),a("import").addEventListener("click",t=>{var r=a("data").value;u.importData(r)&&(a("data").value="")}),document.onkeydown=t=>{32===t.keyCode&&(t.preventDefault(),h=!h,a("paused").checked=h)};var x=!1,I=[0,0],N=t=>{if("number"==typeof t.clientX)return[t.clientX,t.clientY];if(t.targetTouches&&t.targetTouches.length){var r=t.targetTouches[0];return[r.clientX,r.clientY]}return null},S=t=>{t.preventDefault(),x=!0,I=N(t)||I},M=t=>{if(x){var r=N(t);r&&(t.preventDefault(),g[0]+=(r[0]-I[0])*(1/150),g[1]+=(r[1]-I[1])*(1/150),I=r,v=!0)}},U=t=>{x=!1,F()};function F(){x||(g.forEach((t,r)=>{t*=.9,g[r]=Math.abs(t)<1e-4?0:t,v=!0}),(g[0]||g[1])&&requestAnimationFrame(F))}s.addEventListener("mousedown",S),s.addEventListener("touchstart",S),document.body.addEventListener("mouseup",U),document.body.addEventListener("touchend",U),document.body.addEventListener("mousemove",M),document.body.addEventListener("touchmove",M);var P=document.body;window.addEventListener("load",(function(){var t=t=>{t.stopPropagation(),t.preventDefault()};P.addEventListener("dragenter",t),P.addEventListener("dragover",t),P.addEventListener("drop",r=>{t(r);var e=r.dataTransfer.getData("text/plain"),n=new Image;if(e)n.onload=t=>{l(n)},n.src=e;else{var a=r.dataTransfer.files[0];if(!a.type.match(/image.*/))return;n.file=a,n.onload=t=>{l(n)};var i=new FileReader;i.onloadend=t=>{n.src=t.target.result},i.readAsDataURL(a)}})}))}]);