Skip to content

Instantly share code, notes, and snippets.

@mikolalysenko
Created March 17, 2014 23:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mikolalysenko/9610686 to your computer and use it in GitHub Desktop.
Save mikolalysenko/9610686 to your computer and use it in GitHub Desktop.
requirebin sketch
//Load shell
var shell = require("gl-now")({ clearColor: [0,0,0,0] })
var camera = require("game-shell-orbit-camera")(shell)
//Mesh creation tools
var createMesh = require("gl-simplicial-complex")
var polygonize = require("isosurface").surfaceNets
var createAxes = require("gl-axes")
//Matrix math
var mat4 = require("gl-matrix").mat4
//Bounds on function to plot
var extents = [[-5,-5,-5], [5,5,5]]
//Plot level set of f = 0
function f(x,y,z) {
return x*x + y*y + z*z - 2.0
}
//State variables
var mesh, axes
shell.on("gl-init", function() {
var gl = shell.gl
//Set up camera
camera.lookAt(extents[1], [0,0,0], [0, 1, 0])
//Create mesh
mesh = createMesh(gl, polygonize([64, 64, 64], f, extents))
//Create axes object
axes = createAxes(gl, {
extents: extents
})
})
shell.on("gl-render", function() {
var gl = shell.gl
gl.enable(gl.DEPTH_TEST)
//Compute camera parameters
var cameraParameters = {
view: camera.view(),
projection: mat4.perspective(
mat4.create(),
Math.PI/4.0,
shell.width/shell.height,
0.1,
1000.0)
}
//Draw mesh
mesh.draw(cameraParameters)
//Draw axes
axes.draw(cameraParameters)
})
function f(t,r,e){return t*t+r*r+e*e-2}require=function e(t,r,n){function i(o,s){if(!r[o]){if(!t[o]){var u="function"==typeof require&&require;if(!s&&u)return u(o,!0);if(a)return a(o,!0);throw Error("Cannot find module '"+o+"'")}var c=r[o]={exports:{}};t[o][0].call(c.exports,function(r){var e=t[o][1][r];return i(e?e:r)},c,c.exports,e,t,r,n)}return r[o].exports}for(var a="function"==typeof require&&require,o=0;n.length>o;o++)i(n[o]);return i}({1:[function(t,r){function e(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function n(t){return"function"==typeof t}function i(t){return"number"==typeof t}function a(t){return"object"==typeof t&&null!==t}function o(t){return void 0===t}r.exports=e,e.EventEmitter=e,e.prototype._events=void 0,e.prototype._maxListeners=void 0,e.defaultMaxListeners=10,e.prototype.setMaxListeners=function(t){if(!i(t)||0>t||isNaN(t))throw TypeError("n must be a positive number");return this._maxListeners=t,this},e.prototype.emit=function(t){var r,e,i,s,u,c;if(this._events||(this._events={}),"error"===t&&(!this._events.error||a(this._events.error)&&!this._events.error.length))throw r=arguments[1],r instanceof Error?r:TypeError('Uncaught, unspecified "error" event.');if(e=this._events[t],o(e))return!1;if(n(e))switch(arguments.length){case 1:e.call(this);break;case 2:e.call(this,arguments[1]);break;case 3:e.call(this,arguments[1],arguments[2]);break;default:for(i=arguments.length,s=Array(i-1),u=1;i>u;u++)s[u-1]=arguments[u];e.apply(this,s)}else if(a(e)){for(i=arguments.length,s=Array(i-1),u=1;i>u;u++)s[u-1]=arguments[u];for(c=e.slice(),i=c.length,u=0;i>u;u++)c[u].apply(this,s)}return!0},e.prototype.addListener=function(t,r){var i;if(!n(r))throw TypeError("listener must be a function");if(this._events||(this._events={}),this._events.newListener&&this.emit("newListener",t,n(r.listener)?r.listener:r),this._events[t]?a(this._events[t])?this._events[t].push(r):this._events[t]=[this._events[t],r]:this._events[t]=r,a(this._events[t])&&!this._events[t].warned){var i;i=o(this._maxListeners)?e.defaultMaxListeners:this._maxListeners,i&&i>0&&this._events[t].length>i&&(this._events[t].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[t].length),console.trace())}return this},e.prototype.on=e.prototype.addListener,e.prototype.once=function(t,r){function e(){this.removeListener(t,e),i||(i=!0,r.apply(this,arguments))}if(!n(r))throw TypeError("listener must be a function");var i=!1;return e.listener=r,this.on(t,e),this},e.prototype.removeListener=function(t,r){var e,i,o,s;if(!n(r))throw TypeError("listener must be a function");if(!this._events||!this._events[t])return this;if(e=this._events[t],o=e.length,i=-1,e===r||n(e.listener)&&e.listener===r)delete this._events[t],this._events.removeListener&&this.emit("removeListener",t,r);else if(a(e)){for(s=o;s-->0;)if(e[s]===r||e[s].listener&&e[s].listener===r){i=s;break}if(0>i)return this;1===e.length?(e.length=0,delete this._events[t]):e.splice(i,1),this._events.removeListener&&this.emit("removeListener",t,r)}return this},e.prototype.removeAllListeners=function(t){var r,e;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[t]&&delete this._events[t],this;if(0===arguments.length){for(r in this._events)"removeListener"!==r&&this.removeAllListeners(r);return this.removeAllListeners("removeListener"),this._events={},this}if(e=this._events[t],n(e))this.removeListener(t,e);else for(;e.length;)this.removeListener(t,e[e.length-1]);return delete this._events[t],this},e.prototype.listeners=function(t){var r;return r=this._events&&this._events[t]?n(this._events[t])?[this._events[t]]:this._events[t].slice():[]},e.listenerCount=function(t,r){var e;return e=t._events&&t._events[r]?n(t._events[r])?1:t._events[r].length:0}},{}],2:[function(t,r){r.exports="function"==typeof Object.create?function(t,r){t.super_=r,t.prototype=Object.create(r.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}})}:function(t,r){t.super_=r;var e=function(){};e.prototype=r.prototype,t.prototype=new e,t.prototype.constructor=t}},{}],3:[function(t,r){var e=r.exports={};e.nextTick=function(){var t="undefined"!=typeof window&&window.setImmediate,r="undefined"!=typeof window&&window.postMessage&&window.addEventListener;if(t)return function(t){return window.setImmediate(t)};if(r){var e=[];return window.addEventListener("message",function(t){var r=t.source;if((r===window||null===r)&&"process-tick"===t.data&&(t.stopPropagation(),e.length>0)){var n=e.shift();n()}},!0),function(t){e.push(t),window.postMessage("process-tick","*")}}return function(t){setTimeout(t,0)}}(),e.title="browser",e.browser=!0,e.env={},e.argv=[],e.binding=function(){throw Error("process.binding is not supported")},e.cwd=function(){return"/"},e.chdir=function(){throw Error("process.chdir is not supported")}},{}],4:[function(t,r){r.exports=function(t){return t&&"object"==typeof t&&"function"==typeof t.copy&&"function"==typeof t.fill&&"function"==typeof t.readUInt8}},{}],5:[function(t,r,e){(function(r,n){function i(t,r){var n={seen:[],stylize:o};return arguments.length>=3&&(n.depth=arguments[2]),arguments.length>=4&&(n.colors=arguments[3]),v(r)?n.showHidden=r:r&&e._extend(n,r),w(n.showHidden)&&(n.showHidden=!1),w(n.depth)&&(n.depth=2),w(n.colors)&&(n.colors=!1),w(n.customInspect)&&(n.customInspect=!0),n.colors&&(n.stylize=a),u(n,t,n.depth)}function a(t,r){var e=i.styles[r];return e?"["+i.colors[e][0]+"m"+t+"["+i.colors[e][1]+"m":t}function o(t){return t}function s(t){var r={};return t.forEach(function(t){r[t]=!0}),r}function u(t,r,n){if(t.customInspect&&r&&M(r.inspect)&&r.inspect!==e.inspect&&(!r.constructor||r.constructor.prototype!==r)){var i=r.inspect(n,t);return b(i)||(i=u(t,i,n)),i}var a=c(t,r);if(a)return a;var o=Object.keys(r),v=s(o);if(t.showHidden&&(o=Object.getOwnPropertyNames(r)),T(r)&&(o.indexOf("message")>=0||o.indexOf("description")>=0))return f(r);if(0===o.length){if(M(r)){var g=r.name?": "+r.name:"";return t.stylize("[Function"+g+"]","special")}if(E(r))return t.stylize(RegExp.prototype.toString.call(r),"regexp");if(x(r))return t.stylize(Date.prototype.toString.call(r),"date");if(T(r))return f(r)}var m="",y=!1,_=["{","}"];if(d(r)&&(y=!0,_=["[","]"]),M(r)){var w=r.name?": "+r.name:"";m=" [Function"+w+"]"}if(E(r)&&(m=" "+RegExp.prototype.toString.call(r)),x(r)&&(m=" "+Date.prototype.toUTCString.call(r)),T(r)&&(m=" "+f(r)),0===o.length&&(!y||0==r.length))return _[0]+m+_[1];if(0>n)return E(r)?t.stylize(RegExp.prototype.toString.call(r),"regexp"):t.stylize("[Object]","special");t.seen.push(r);var A;return A=y?l(t,r,n,v,o):o.map(function(e){return h(t,r,n,v,e,y)}),t.seen.pop(),p(A,m,_)}function c(t,r){if(w(r))return t.stylize("undefined","undefined");if(b(r)){var e="'"+JSON.stringify(r).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return t.stylize(e,"string")}return y(r)?t.stylize(""+r,"number"):v(r)?t.stylize(""+r,"boolean"):g(r)?t.stylize("null","null"):void 0}function f(t){return"["+Error.prototype.toString.call(t)+"]"}function l(t,r,e,n,i){for(var a=[],o=0,s=r.length;s>o;++o)N(r,o+"")?a.push(h(t,r,e,n,o+"",!0)):a.push("");return i.forEach(function(i){i.match(/^\d+$/)||a.push(h(t,r,e,n,i,!0))}),a}function h(t,r,e,n,i,a){var o,s,c;if(c=Object.getOwnPropertyDescriptor(r,i)||{value:r[i]},c.get?s=c.set?t.stylize("[Getter/Setter]","special"):t.stylize("[Getter]","special"):c.set&&(s=t.stylize("[Setter]","special")),N(n,i)||(o="["+i+"]"),s||(0>t.seen.indexOf(c.value)?(s=g(e)?u(t,c.value,null):u(t,c.value,e-1),s.indexOf("\n")>-1&&(s=a?s.split("\n").map(function(t){return" "+t}).join("\n").substr(2):"\n"+s.split("\n").map(function(t){return" "+t}).join("\n"))):s=t.stylize("[Circular]","special")),w(o)){if(a&&i.match(/^\d+$/))return s;o=JSON.stringify(""+i),o.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(o=o.substr(1,o.length-2),o=t.stylize(o,"name")):(o=o.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),o=t.stylize(o,"string"))}return o+": "+s}function p(t,r,e){var n=0,i=t.reduce(function(t,r){return n++,r.indexOf("\n")>=0&&n++,t+r.replace(/\u001b\[\d\d?m/g,"").length+1},0);return i>60?e[0]+(""===r?"":r+"\n ")+" "+t.join(",\n ")+" "+e[1]:e[0]+r+" "+t.join(", ")+" "+e[1]}function d(t){return Array.isArray(t)}function v(t){return"boolean"==typeof t}function g(t){return null===t}function m(t){return null==t}function y(t){return"number"==typeof t}function b(t){return"string"==typeof t}function _(t){return"symbol"==typeof t}function w(t){return void 0===t}function E(t){return A(t)&&"[object RegExp]"===L(t)}function A(t){return"object"==typeof t&&null!==t}function x(t){return A(t)&&"[object Date]"===L(t)}function T(t){return A(t)&&("[object Error]"===L(t)||t instanceof Error)}function M(t){return"function"==typeof t}function I(t){return null===t||"boolean"==typeof t||"number"==typeof t||"string"==typeof t||"symbol"==typeof t||t===void 0}function L(t){return Object.prototype.toString.call(t)}function j(t){return 10>t?"0"+t.toString(10):t.toString(10)}function S(){var t=new Date,r=[j(t.getHours()),j(t.getMinutes()),j(t.getSeconds())].join(":");return[t.getDate(),C[t.getMonth()],r].join(" ")}function N(t,r){return Object.prototype.hasOwnProperty.call(t,r)}var R=/%[sdj%]/g;e.format=function(t){if(!b(t)){for(var r=[],e=0;arguments.length>e;e++)r.push(i(arguments[e]));return r.join(" ")}for(var e=1,n=arguments,a=n.length,o=(t+"").replace(R,function(t){if("%%"===t)return"%";if(e>=a)return t;switch(t){case"%s":return n[e++]+"";case"%d":return Number(n[e++]);case"%j":try{return JSON.stringify(n[e++])}catch(r){return"[Circular]"}default:return t}}),s=n[e];a>e;s=n[++e])o+=g(s)||!A(s)?" "+s:" "+i(s);return o},e.deprecate=function(t,i){function a(){if(!o){if(r.throwDeprecation)throw Error(i);r.traceDeprecation?console.trace(i):console.error(i),o=!0}return t.apply(this,arguments)}if(w(n.process))return function(){return e.deprecate(t,i).apply(this,arguments)};if(r.noDeprecation===!0)return t;var o=!1;return a};var F,k={};e.debuglog=function(t){if(w(F)&&(F=r.env.NODE_DEBUG||""),t=t.toUpperCase(),!k[t])if(RegExp("\\b"+t+"\\b","i").test(F)){var n=r.pid;k[t]=function(){var r=e.format.apply(e,arguments);console.error("%s %d: %s",t,n,r)}}else k[t]=function(){};return k[t]},e.inspect=i,i.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},i.styles={special:"cyan",number:"yellow","boolean":"yellow",undefined:"grey","null":"bold",string:"green",date:"magenta",regexp:"red"},e.isArray=d,e.isBoolean=v,e.isNull=g,e.isNullOrUndefined=m,e.isNumber=y,e.isString=b,e.isSymbol=_,e.isUndefined=w,e.isRegExp=E,e.isObject=A,e.isDate=x,e.isError=T,e.isFunction=M,e.isPrimitive=I,e.isBuffer=t("./support/isBuffer");var C=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];e.log=function(){console.log("%s - %s",S(),e.format.apply(e,arguments))},e.inherits=t("inherits"),e._extend=function(t,r){if(!r||!A(r))return t;for(var e=Object.keys(r),n=e.length;n--;)t[e[n]]=r[e[n]];return t}}).call(this,t("/home/admin/browserify-cdn/node_modules/browserify/node_modules/insert-module-globals/node_modules/process/browser.js"),"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./support/isBuffer":4,"/home/admin/browserify-cdn/node_modules/browserify/node_modules/insert-module-globals/node_modules/process/browser.js":3,inherits:2}],"gl-now":[function(t,r){r.exports=t("mi7wPC")},{}],mi7wPC:[function(t,r){"use strict";function e(t){t=t||{};var r=t.extensions||[],e=n(t);return e.on("init",function(){var n=document.createElement("canvas"),a=n.getContext("webgl")||n.getContext("experimental-webgl");if(!a)return e.emit("gl-error",Error("Unable to initialize WebGL")),void 0;for(var o=i(a),s=0;r.length>s;++s)if(!(r[s]in o))return e.emit("gl-error",Error("Missing extension: "+r[s])),void 0;n.style.position="absolute",n.style.left="0px",n.style.top="0px",e.element.appendChild(n),n.width=e.width,n.height=e.height,e.canvas=n,e.gl=a,e.clearFlags=void 0===t.clearFlags?a.COLOR_BUFFER_BIT|a.DEPTH_BUFFER_BIT:t.clearFlags,e.clearColor=t.clearColor||[.2,.4,.8,1],e.clearDepth=t.clearDepth||1,e.clearStencil=t.clearStencil||0,e.on("resize",function(t,r){n.width=t,n.height=r}),e.on("render",function(t){a.bindFramebuffer(a.FRAMEBUFFER,null),a.viewport(0,0,e.width,e.height),e.clearFlags&a.STENCIL_BUFFER_BIT&&a.clearStencil(e.clearStencil),e.clearFlags&a.COLOR_BUFFER_BIT&&a.clearColor(e.clearColor[0],e.clearColor[1],e.clearColor[2],e.clearColor[3]),e.clearFlags&a.DEPTH_BUFFER_BIT&&a.clearDepth(e.clearDepth),e.clearFlags&&a.clear(a.COLOR_BUFFER_BIT|a.DEPTH_BUFFER_BIT|a.STENCIL_BUFFER_BIT),e.emit("gl-render",t)}),e.emit("gl-init")}),e}var n=t("game-shell"),i=t("webglew");r.exports=e},{"game-shell":17,webglew:18}],8:[function(t,r){"object"==typeof window.performance?window.performance.now?r.exports=function(){return window.performance.now()}:window.performance.webktiNow&&(r.exports=function(){return window.performance.webkitNow()}):r.exports=Date.now?Date.now:function(){return(new Date).getTime()}},{}],9:[function(t,r){function e(t,r,e,o){t[n](a+r,"wheel"==i?e:function(t){!t&&(t=window.event);var r={originalEvent:t,target:t.target||t.srcElement,type:"wheel",deltaMode:"MozMousePixelScroll"==t.type?0:1,deltaX:0,delatZ:0,preventDefault:function(){t.preventDefault?t.preventDefault():t.returnValue=!1}};return"mousewheel"==i?(r.deltaY=-1/40*t.wheelDelta,t.wheelDeltaX&&(r.deltaX=-1/40*t.wheelDeltaX)):r.deltaY=t.detail,e(r)},o||!1)}var n,i,a="";window.addEventListener?n="addEventListener":(n="attachEvent",a="on"),i="onwheel"in document.createElement("div")?"wheel":void 0!==document.onmousewheel?"mousewheel":"DOMMouseScroll",r.exports=function(t,r,n){e(t,i,r,n),"DOMMouseScroll"==i&&e(t,"MozMousePixelScroll",r,n)}},{}],10:[function(){for(var t=0,r=["ms","moz","webkit","o"],e=0;r.length>e&&!window.requestAnimationFrame;++e)window.requestAnimationFrame=window[r[e]+"RequestAnimationFrame"],window.cancelAnimationFrame=window[r[e]+"CancelAnimationFrame"]||window[r[e]+"CancelRequestAnimationFrame"];window.requestAnimationFrame||(window.requestAnimationFrame=function(r){var e=(new Date).getTime(),n=Math.max(0,16-(e-t)),i=window.setTimeout(function(){r(e+n)},n);return t=e+n,i}),window.cancelAnimationFrame||(window.cancelAnimationFrame=function(t){clearTimeout(t)})},{}],11:[function(t,r){"use strict";function e(t,r,e,n,i,a){var o=["function ",t,"(a,l,h,",n.join(","),"){",a?"":"var i=",e?"l-1":"h+1",";while(l<=h){var m=(l+h)>>>1,x=a",i?".get(m)":"[m]"];return a?0>r.indexOf("c")?o.push(";if(x===y){return m}else if(x<=y){"):o.push(";var p=c(x,y);if(p===0){return m}else if(p<=0){"):o.push(";if(",r,"){i=m;"),e?o.push("l=m+1}else{h=m-1}"):o.push("h=m-1}else{l=m+1}"),o.push("}"),a?o.push("return -1};"):o.push("return i};"),o.join("")}function n(t,r,n,i){var a=Function([e("A","x"+t+"y",r,["y"],!1,i),e("B","x"+t+"y",r,["y"],!0,i),e("P","c(x,y)"+t+"0",r,["y","c"],!1,i),e("Q","c(x,y)"+t+"0",r,["y","c"],!0,i),"function dispatchBsearch",n,"(a,y,c,l,h){if(a.shape){if(typeof(c)==='function'){return Q(a,(l===undefined)?0:l|0,(h===undefined)?a.shape[0]-1:h|0,y,c)}else{return B(a,(c===undefined)?0:c|0,(l===undefined)?a.shape[0]-1:l|0,y)}}else{if(typeof(c)==='function'){return P(a,(l===undefined)?0:l|0,(h===undefined)?a.length-1:h|0,y,c)}else{return A(a,(c===undefined)?0:c|0,(l===undefined)?a.length-1:l|0,y)}}}return dispatchBsearch",n].join(""));return a()}r.exports={ge:n(">=",!1,"GE"),gt:n(">",!1,"GT"),lt:n("<",!0,"LT"),le:n("<=",!0,"LE"),eq:n("-",!0,"EQ",!0)}},{}],12:[function(t,r){!function(t,e){r!==void 0?r.exports=e():"function"==typeof define&&"object"==typeof define.amd?define(e):this[t]=e()}("domready",function(t){function r(t){for(p=1;t=n.shift();)t()}var e,n=[],i=!1,a=document,o=a.documentElement,s=o.doScroll,u="DOMContentLoaded",c="addEventListener",f="onreadystatechange",l="readyState",h=s?/^loaded|^c/:/^loaded|c/,p=h.test(a[l]);return a[c]&&a[c](u,e=function(){a.removeEventListener(u,e,i),r()},i),s&&a.attachEvent(f,e=function(){/^c/.test(a[l])&&(a.detachEvent(f,e),r())}),t=s?function(r){self!=top?p?r():n.push(r):function(){try{o.doScroll("left")}catch(e){return setTimeout(function(){t(r)},50)}r()}()}:function(t){p?t():n.push(t)}})},{}],13:[function(t,r){"use strict";function e(t){var r={};for(var e in t)t.hasOwnProperty(e)&&(r[t[e]]=e);return r}r.exports=e},{}],14:[function(t,r){"use strict";function e(t){for(var r=Array(t),e=0;t>e;++e)r[e]=e;return r}r.exports=e},{}],15:[function(t,r){"use strict";function e(t,r){for(var e=1,n=t.length,i=t[0],a=t[0],o=1;n>o;++o)if(a=i,i=t[o],r(i,a)){if(o===e){e++;continue}t[e++]=i}return t.length=e,t}function n(t){for(var r=1,e=t.length,n=t[0],i=t[0],a=1;e>a;++a,i=n)if(i=n,n=t[a],n!==i){if(a===r){r++;continue}t[r++]=n}return t.length=r,t}function i(t,r,i){return 0===t.length?[]:r?(i||t.sort(r),e(t,r)):(i||t.sort(),n(t))}r.exports=i},{}],16:[function(t,r){var e,n="undefined"!=typeof window?window.navigator.userAgent:"",i=/OS X/.test(n),a=/Opera/.test(n),o=!/like Gecko/.test(n)&&!a,s=r.exports={0:i?"<menu>":"<UNK>",1:"<mouse 1>",2:"<mouse 2>",3:"<break>",4:"<mouse 3>",5:"<mouse 4>",6:"<mouse 5>",8:"<backspace>",9:"<tab>",12:"<clear>",13:"<enter>",16:"<shift>",17:"<control>",18:"<alt>",19:"<pause>",20:"<caps-lock>",21:"<ime-hangul>",23:"<ime-junja>",24:"<ime-final>",25:"<ime-kanji>",27:"<escape>",28:"<ime-convert>",29:"<ime-nonconvert>",30:"<ime-accept>",31:"<ime-mode-change>",27:"<escape>",32:"<space>",33:"<page-up>",34:"<page-down>",35:"<end>",36:"<home>",37:"<left>",38:"<up>",39:"<right>",40:"<down>",41:"<select>",42:"<print>",43:"<execute>",44:"<snapshot>",45:"<insert>",46:"<delete>",47:"<help>",91:"<meta>",92:"<meta>",93:i?"<meta>":"<menu>",95:"<sleep>",106:"<num-*>",107:"<num-+>",108:"<num-enter>",109:"<num-->",110:"<num-.>",111:"<num-/>",144:"<num-lock>",145:"<scroll-lock>",160:"<shift-left>",161:"<shift-right>",162:"<control-left>",163:"<control-right>",164:"<alt-left>",165:"<alt-right>",166:"<browser-back>",167:"<browser-forward>",168:"<browser-refresh>",169:"<browser-stop>",170:"<browser-search>",171:"<browser-favorites>",172:"<browser-home>",173:i&&o?"-":"<volume-mute>",174:"<volume-down>",175:"<volume-up>",176:"<next-track>",177:"<prev-track>",178:"<stop>",179:"<play-pause>",180:"<launch-mail>",181:"<launch-media-select>",182:"<launch-app 1>",183:"<launch-app 2>",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'",223:"<meta>",224:"<meta>",226:"<alt-gr>",229:"<ime-process>",231:a?"`":"<unicode>",246:"<attention>",247:"<crsel>",248:"<exsel>",249:"<erase-eof>",250:"<play>",251:"<zoom>",252:"<no-name>",253:"<pa-1>",254:"<clear>"};for(e=58;65>e;++e)s[e]=String.fromCharCode(e);for(e=48;58>e;++e)s[e]=e-48+"";for(e=65;91>e;++e)s[e]=String.fromCharCode(e);for(e=96;106>e;++e)s[e]="<num-"+(e-96)+">";for(e=112;136>e;++e)s[e]="F"+(e-111)},{}],17:[function(t,r){"use strict";function e(t){return k.eq(O,t)}function n(t){return e(B[t])}function i(){L.call(this),this._curKeyState=Array(O.length),this._pressCount=Array(O.length),this._releaseCount=Array(O.length),this._tickInterval=null,this._rafHandle=null,this._tickRate=0,this._lastTick=D(),this._frameTime=0,this._paused=!0,this._width=0,this._height=0,this._wantFullscreen=!1,this._wantPointerLock=!1,this._fullscreenActive=!1,this._pointerLockActive=!1,this._render=h.bind(void 0,this);for(var t=0;O.length>t;++t)this._curKeyState[t]=!1,this._pressCount[t]=this._releaseCount[t]=0;this.element=null,this.bindings={},this.frameSkip=100,this.tickCount=0,this.frameCount=0,this.startTime=D(),this.tickTime=this._tickRate,this.frameTime=10,this.stickyFullscreen=!1,this.stuckyPointLock=!1,this.scroll=[0,0,0],this.mouseX=0,this.mouseY=0,this.prevMouseX=0,this.prevMouseY=0}function a(t,r,n){if(n in r){for(var i=r[n],a=0,o=i.length;o>a;++a)if(t[e(i[a])])return!0;return!1}var s=e(n);return s>=0?t[s]:!1}function o(t,r,n){if(n in r){for(var i=r[n],a=0,o=0,s=i.length;s>o;++o)a+=t[e(i[o])];return a}var u=e(n);return u>=0?t[u]:0}function s(t){var r=t.element;if(t._wantFullscreen&&!t._fullscreenActive){var e=r.requestFullscreen||r.requestFullScreen||r.webkitRequestFullscreen||r.webkitRequestFullScreen||r.mozRequestFullscreen||r.mozRequestFullScreen||function(){};e.call(r)}if(t._wantPointerLock&&!t._pointerLockActive){var n=r.requestPointerLock||r.webkitRequestPointerLock||r.mozRequestPointerLock||r.msRequestPointerLock||r.oRequestPointerLock||function(){};n.call(r)}}function u(t){t._fullscreenActive=document.fullscreen||document.mozFullScreen||document.webkitIsFullScreen||!1,!t.stickyFullscreen&&t._fullscreenActive&&(t._wantFullscreen=!1)}function c(t){t._pointerLockActive=t.element===(document.pointerLockElement||document.mozPointerLockElement||document.webkitPointerLockElement||null),!t.stickyPointerLock&&t._pointerLockActive&&(t._wantPointerLock=!1)}function f(t,r,e){var n=t._curKeyState[r];n!==e&&(e?t._pressCount[r]++:t._releaseCount[r]++,t._curKeyState[r]=e)}function l(t){for(var r,e,n,i=D()+t.frameSkip,a=t._pressCount,o=t._releaseCount,s=t._tickRate,u=O.length;!t._paused&&D()>=t._lastTick+s;){if(D()>i)return t._lastTick=D()+s,void 0;for(e=D(),t.emit("tick"),n=D(),t.tickTime=n-e,++t.tickCount,t._lastTick+=s,r=0;u>r;++r)a[r]=o[r]=0;t._pointerLockActive?(t.prevMouseX=t.mouseX=t.width>>1,t.prevMouseY=t.mouseY=t.height>>1):(t.prevMouseX=t.mouseX,t.prevMouseY=t.mouseY),t.scroll[0]=t.scroll[1]=t.scroll[2]=0}}function h(t){t._rafHandle=requestAnimationFrame(t._render),l(t);var r;r=t._paused?t._frameTime:U(1,(D()-t._lastTick)/t._tickRate),++t.frameCount;var e=D();t.emit("render",r);var n=D();t.frameTime=n-e}function p(t){return document.activeElement===document.body||document.activeElement===t.element}function d(t,r){r.preventDefault();var e=n(r.keyCode||r.char||r.which||r.charCode);e>=0&&f(t,e,!1)}function v(t,r){if(p(t))if(r.metaKey)x(t,r);else{r.preventDefault();var e=n(r.keyCode||r.char||r.which||r.charCode);e>=0&&f(t,e,!0)}}function g(t,r){for(var e=0;32>e;++e)f(t,Y[e],!!(r&1<<e))}function m(t,r){if(t._pointerLockActive){var e=r.movementX||r.mozMovementX||r.webkitMovementX||0,n=r.movementY||r.mozMovementY||r.webkitMovementY||0;t.mouseX+=e,t.mouseY+=n}else t.mouseX=r.clientX-t.element.offsetLeft,t.mouseY=r.clientY-t.element.offsetTop;return!1}function y(t,r){return f(t,Y[r.button],!0),!1}function b(t,r){return f(t,Y[r.button],!1),!1}function _(t,r){return t._pointerLockActive?(t.prevMouseX=t.mouseX=t.width>>1,t.prevMouseY=t.mouseY=t.height>>1):(t.prevMouseX=t.mouseX=r.clientX-t.element.offsetLeft,t.prevMouseY=t.mouseY=r.clientY-t.element.offsetTop),!1}function w(t){return g(t,0),!1}function E(t,r){var e=1;switch(r.deltaMode){case 0:e=1;break;case 1:e=12;break;case 2:e=t.height}return t.scroll[0]+=r.deltaX*e,t.scroll[1]+=r.deltaY*e,t.scroll[2]+=r.deltaZ*e||0,!1}function A(){return!1}function x(t){var r,e=O.length,n=t._curKeyState,i=t._releaseCount;for(r=0;e>r;++r)n[r]&&++i[r],n[r]=!1;return!1}function T(t){var r=0|t.element.clientWidth,e=0|t.element.clientHeight;(r!==t._width||e!==t._height)&&(t._width=r,t._height=e,t.emit("resize",r,e))}function M(){var t=document.createElement("div");return t.tabindex=1,t.style.position="absolute",t.style.left="0px",t.style.right="0px",t.style.top="0px",t.style.bottom="0px",t.style.height="100%",t.style.overflow="hidden",document.body.appendChild(t),document.body.style.overflow="hidden",document.body.style.height="100%",t}function I(t){t=t||{};var r=!!t.fullscreen,e=r;void 0!==typeof t.pointerLock&&(e=!!t.pointerLock);var n=new i;return n._tickRate=t.tickRate||30,n.frameSkip=t.frameSkip||5*(n._tickRate+5),n.stickyFullscreen=!!t.stickyFullscreen||!!t.sticky,n.stickyPointerLock=!!t.stickPointerLock||!t.sticky,t.bindings&&(n.bindings=bindings),setTimeout(function(){S(function(){var i=t.element;if("string"==typeof i){var a=document.querySelector(i);a||(a=document.getElementById(i)),a||(a=document.getElementByClass(i)[0]),a||(a=M()),n.element=a}else n.element="object"==typeof i&&i?i:"function"==typeof i?i():M();n.element.style&&(n.element.style["-webkit-touch-callout"]="none",n.element.style["-webkit-user-select"]="none",n.element.style["-khtml-user-select"]="none",n.element.style["-moz-user-select"]="none",n.element.style["-ms-user-select"]="none",n.element.style["user-select"]="none"),n._width=n.element.clientWidth,n._height=n.element.clientHeight;var o=T.bind(void 0,n);if("undefined"!=typeof MutationObserver){var f=new MutationObserver(o);f.observe(n.element,{attributes:!0,subtree:!0})}else n.element.addEventListener("DOMSubtreeModified",o,!1);window.addEventListener("resize",o,!1),window.addEventListener("keydown",v.bind(void 0,n),!1),window.addEventListener("keyup",d.bind(void 0,n),!1),n.element.oncontextmenu=A.bind(void 0,n),n.element.addEventListener("mousedown",y.bind(void 0,n),!1),n.element.addEventListener("mouseup",b.bind(void 0,n),!1),n.element.addEventListener("mousemove",m.bind(void 0,n),!1),n.element.addEventListener("mouseenter",_.bind(void 0,n),!1);var l=w.bind(void 0,n);n.element.addEventListener("mouseleave",l,!1),n.element.addEventListener("mouseout",l,!1),window.addEventListener("mouseleave",l,!1),window.addEventListener("mouseout",l,!1);var h=x.bind(void 0,n);n.element.addEventListener("blur",h,!1),n.element.addEventListener("focusout",h,!1),n.element.addEventListener("focus",h,!1),window.addEventListener("blur",h,!1),window.addEventListener("focusout",h,!1),window.addEventListener("focus",h,!1),P(n.element,E.bind(void 0,n),!1);var p=u.bind(void 0,n);document.addEventListener("fullscreenchange",p,!1),document.addEventListener("mozfullscreenchange",p,!1),document.addEventListener("webkitfullscreenchange",p,!1),n.element.addEventListener("click",s.bind(void 0,n),!1);var g=c.bind(void 0,n);document.addEventListener("pointerlockchange",g,!1),document.addEventListener("mozpointerlockchange",g,!1),document.addEventListener("webkitpointerlockchange",g,!1),document.addEventListener("pointerlocklost",g,!1),document.addEventListener("webkitpointerlocklost",g,!1),document.addEventListener("mozpointerlocklost",g,!1),n.fullscreen=r,n.pointerLock=e,n.bind("mouse-left","mouse-1"),n.bind("mouse-right","mouse-3"),n.bind("mouse-middle","mouse-2"),n._lastTick=D(),n.startTime=D(),n.paused=!1,n.emit("init")})},0),n}var L=t("events").EventEmitter,j=t("util"),S=t("domready"),N=t("vkey"),R=t("invert-hash"),F=t("uniq"),k=t("binary-search-bounds"),C=t("iota-array"),U=Math.min;t("./lib/raf-polyfill.js");var P=t("./lib/mousewheel-polyfill.js"),D=t("./lib/hrtime-polyfill.js"),B=function(){var t,r,e=Array(256);for(t=0;256>t;++t)e[t]="UNK";for(t in N)r=N[t],"<"===r.charAt(0)&&">"===r.charAt(r.length-1)&&(r=r.substring(1,r.length-1)),r=r.replace(/\s/g,"-"),e[parseInt(t)]=r;return e}(),O=F(Object.keys(R(B)));j.inherits(i,L);var V=i.prototype;V.keyNames=O,V.bind=function(t){var r;r=t in this.bindings?this.bindings[t]:[];for(var n,i=1,a=arguments.length;a>i;++i)if(n=arguments[i],e(n)>=0)r.push(n);else if(n in this.bindings)for(var o=this.bindings[n],s=0;o.length>s;++s)r.push(o[s]);r=F(r),r.length>0&&(this.bindings[t]=r)},V.unbind=function(t){t in this.bindings&&delete this.bindings[t]},V.down=function(t){return a(this._curKeyState,this.bindings,t)},V.wasDown=function(t){return this.down(t)||!!this.press(t)},V.up=function(t){return!this.down(t)},V.wasUp=function(t){return this.up(t)||!!this.release(t)},V.press=function(t){return o(this._pressCount,this.bindings,t)},V.release=function(t){return o(this._releaseCount,this.bindings,t)},Object.defineProperty(V,"paused",{get:function(){return this._paused},set:function(t){var r=!!t;r!==this._paused&&(this._paused?(this._paused=!1,this._lastTick=D()-Math.floor(this._frameTime*this._tickRate),this._tickInterval=setInterval(l,this._tickRate,this),this._rafHandle=requestAnimationFrame(this._render)):(this._paused=!0,this._frameTime=U(1,(D()-this._lastTick)/this._tickRate),clearInterval(this._tickInterval)))}});var q=document.exitFullscreen||document.cancelFullscreen||document.cancelFullScreen||document.webkitCancelFullscreen||document.webkitCancelFullScreen||document.mozCancelFullscreen||document.mozCancelFullScreen||function(){};Object.defineProperty(V,"fullscreen",{get:function(){return this._fullscreenActive},set:function(t){var r=!!t;return r?(this._wantFullscreen=!0,s(this)):(this._wantFullscreen=!1,q.call(document)),this._fullscreenActive}});var z=document.exitPointerLock||document.webkitExitPointerLock||document.mozExitPointerLock||function(){};Object.defineProperty(V,"pointerLock",{get:function(){return this._pointerLockActive},set:function(t){var r=!!t;return r?(this._wantPointerLock=!0,s(this)):(this._wantPointerLock=!1,z.call(document)),this._pointerLockActive}}),Object.defineProperty(V,"width",{get:function(){return this.element.clientWidth}}),Object.defineProperty(V,"height",{get:function(){return this.element.clientHeight}});var Y=C(32).map(function(t){return e("mouse-"+(t+1))});r.exports=I},{"./lib/hrtime-polyfill.js":8,"./lib/mousewheel-polyfill.js":9,"./lib/raf-polyfill.js":10,"binary-search-bounds":11,domready:12,events:1,"invert-hash":13,"iota-array":14,uniq:15,util:5,vkey:16}],18:[function(t,r){"use strict";function e(t){for(var r=0;i.length>r;++r){var e=i[r];if(0===t.indexOf(e))return t.slice(e.length)}return t}function n(t){if(t._webglew_struct)return t._webglew_struct;for(var r={},n=t.getSupportedExtensions(),i=0;n.length>i;++i){var a=t.getExtension(n[i]);a&&(r[n[i]]=a,r[e(n[i])]=a)}return t._webglew_struct=r,r}var i=["WEBKIT_","MOZ_"];r.exports=n},{}]},{},[]),require=function e(t,r,n){function i(o,s){if(!r[o]){if(!t[o]){var u="function"==typeof require&&require;if(!s&&u)return u(o,!0);if(a)return a(o,!0);throw Error("Cannot find module '"+o+"'")}var c=r[o]={exports:{}};t[o][0].call(c.exports,function(r){var e=t[o][1][r];return i(e?e:r)},c,c.exports,e,t,r,n)}return r[o].exports}for(var a="function"==typeof require&&require,o=0;n.length>o;o++)i(n[o]);return i}({USIW0P:[function(t,r){"use strict";function e(t){var r=n();return t.on("tick",function(){var e=t.down("control"),n=t.down("shift"),i=t.down("mouse-left"),a=t.down("mouse-right"),o=t.down("mouse-middle");if(!i||e||n||r.rotate([t.mouseX/t.width-.5,t.mouseY/t.height-.5],[t.prevMouseX/t.width-.5,t.prevMouseY/t.height-.5]),(a||i&&e&&!n)&&r.pan([(t.mouseX-t.prevMouseX)/t.width,(t.mouseY-t.prevMouseY)/t.height]),t.scroll[1]&&(r.distance*=Math.exp(t.scroll[1]/t.height)),o||i&&!e&&n){var s=t.mouseY-t.prevMouseY;s&&(r.distance*=Math.exp(s/t.height))}}),r}var n=t("orbit-camera");r.exports=e},{"orbit-camera":4}],"game-shell-orbit-camera":[function(t,r){r.exports=t("USIW0P")},{}],3:[function(t,r,e){(function(){"use strict";var t={};e===void 0?"function"==typeof define&&"object"==typeof define.amd&&define.amd?(t.exports={},define(function(){return t.exports})):t.exports=window:t.exports=e,function(t){var r={};if(!e)var e=1e-6;r.create=function(){return new Float32Array(2)},r.clone=function(t){var r=new Float32Array(2);return r[0]=t[0],r[1]=t[1],r},r.fromValues=function(t,r){var e=new Float32Array(2);return e[0]=t,e[1]=r,e},r.copy=function(t,r){return t[0]=r[0],t[1]=r[1],t},r.set=function(t,r,e){return t[0]=r,t[1]=e,t},r.add=function(t,r,e){return t[0]=r[0]+e[0],t[1]=r[1]+e[1],t},r.sub=r.subtract=function(t,r,e){return t[0]=r[0]-e[0],t[1]=r[1]-e[1],t},r.mul=r.multiply=function(t,r,e){return t[0]=r[0]*e[0],t[1]=r[1]*e[1],t},r.div=r.divide=function(t,r,e){return t[0]=r[0]/e[0],t[1]=r[1]/e[1],t},r.min=function(t,r,e){return t[0]=Math.min(r[0],e[0]),t[1]=Math.min(r[1],e[1]),t},r.max=function(t,r,e){return t[0]=Math.max(r[0],e[0]),t[1]=Math.max(r[1],e[1]),t},r.scale=function(t,r,e){return t[0]=r[0]*e,t[1]=r[1]*e,t},r.dist=r.distance=function(t,r){var e=r[0]-t[0],n=r[1]-t[1];return Math.sqrt(e*e+n*n)},r.sqrDist=r.squaredDistance=function(t,r){var e=r[0]-t[0],n=r[1]-t[1];return e*e+n*n
},r.len=r.length=function(t){var r=t[0],e=t[1];return Math.sqrt(r*r+e*e)},r.sqrLen=r.squaredLength=function(t){var r=t[0],e=t[1];return r*r+e*e},r.negate=function(t,r){return t[0]=-r[0],t[1]=-r[1],t},r.normalize=function(t,r){var e=r[0],n=r[1],i=e*e+n*n;return i>0&&(i=1/Math.sqrt(i),t[0]=r[0]*i,t[1]=r[1]*i),t},r.dot=function(t,r){return t[0]*r[0]+t[1]*r[1]},r.cross=function(t,r,e){var n=r[0]*e[1]-r[1]*e[0];return t[0]=t[1]=0,t[2]=n,t},r.lerp=function(t,r,e,n){var i=r[0],a=r[1];return t[0]=i+n*(e[0]-i),t[1]=a+n*(e[1]-a),t},r.transformMat2=function(t,r,e){var n=r[0],i=r[1];return t[0]=n*e[0]+i*e[1],t[1]=n*e[2]+i*e[3],t},r.forEach=function(){var t=new Float32Array(2);return function(r,e,n,i,a,o){var s,u;for(e||(e=2),n||(n=0),u=i?Math.min(i*e+n,r.length):r.length,s=n;u>s;s+=e)t[0]=r[s],t[1]=r[s+1],a(t,t,o),r[s]=t[0],r[s+1]=t[1];return r}}(),r.str=function(t){return"vec2("+t[0]+", "+t[1]+")"},t!==void 0&&(t.vec2=r);var n={};if(!e)var e=1e-6;n.create=function(){return new Float32Array(3)},n.clone=function(t){var r=new Float32Array(3);return r[0]=t[0],r[1]=t[1],r[2]=t[2],r},n.fromValues=function(t,r,e){var n=new Float32Array(3);return n[0]=t,n[1]=r,n[2]=e,n},n.copy=function(t,r){return t[0]=r[0],t[1]=r[1],t[2]=r[2],t},n.set=function(t,r,e,n){return t[0]=r,t[1]=e,t[2]=n,t},n.add=function(t,r,e){return t[0]=r[0]+e[0],t[1]=r[1]+e[1],t[2]=r[2]+e[2],t},n.sub=n.subtract=function(t,r,e){return t[0]=r[0]-e[0],t[1]=r[1]-e[1],t[2]=r[2]-e[2],t},n.mul=n.multiply=function(t,r,e){return t[0]=r[0]*e[0],t[1]=r[1]*e[1],t[2]=r[2]*e[2],t},n.div=n.divide=function(t,r,e){return t[0]=r[0]/e[0],t[1]=r[1]/e[1],t[2]=r[2]/e[2],t},n.min=function(t,r,e){return t[0]=Math.min(r[0],e[0]),t[1]=Math.min(r[1],e[1]),t[2]=Math.min(r[2],e[2]),t},n.max=function(t,r,e){return t[0]=Math.max(r[0],e[0]),t[1]=Math.max(r[1],e[1]),t[2]=Math.max(r[2],e[2]),t},n.scale=function(t,r,e){return t[0]=r[0]*e,t[1]=r[1]*e,t[2]=r[2]*e,t},n.dist=n.distance=function(t,r){var e=r[0]-t[0],n=r[1]-t[1],i=r[2]-t[2];return Math.sqrt(e*e+n*n+i*i)},n.sqrDist=n.squaredDistance=function(t,r){var e=r[0]-t[0],n=r[1]-t[1],i=r[2]-t[2];return e*e+n*n+i*i},n.len=n.length=function(t){var r=t[0],e=t[1],n=t[2];return Math.sqrt(r*r+e*e+n*n)},n.sqrLen=n.squaredLength=function(t){var r=t[0],e=t[1],n=t[2];return r*r+e*e+n*n},n.negate=function(t,r){return t[0]=-r[0],t[1]=-r[1],t[2]=-r[2],t},n.normalize=function(t,r){var e=r[0],n=r[1],i=r[2],a=e*e+n*n+i*i;return a>0&&(a=1/Math.sqrt(a),t[0]=r[0]*a,t[1]=r[1]*a,t[2]=r[2]*a),t},n.dot=function(t,r){return t[0]*r[0]+t[1]*r[1]+t[2]*r[2]},n.cross=function(t,r,e){var n=r[0],i=r[1],a=r[2],o=e[0],s=e[1],u=e[2];return t[0]=i*u-a*s,t[1]=a*o-n*u,t[2]=n*s-i*o,t},n.lerp=function(t,r,e,n){var i=r[0],a=r[1],o=r[2];return t[0]=i+n*(e[0]-i),t[1]=a+n*(e[1]-a),t[2]=o+n*(e[2]-o),t},n.transformMat4=function(t,r,e){var n=r[0],i=r[1],a=r[2];return t[0]=e[0]*n+e[4]*i+e[8]*a+e[12],t[1]=e[1]*n+e[5]*i+e[9]*a+e[13],t[2]=e[2]*n+e[6]*i+e[10]*a+e[14],t},n.transformQuat=function(t,r,e){var n=r[0],i=r[1],a=r[2],o=e[0],s=e[1],u=e[2],c=e[3],f=c*n+s*a-u*i,l=c*i+u*n-o*a,h=c*a+o*i-s*n,p=-o*n-s*i-u*a;return t[0]=f*c+p*-o+l*-u-h*-s,t[1]=l*c+p*-s+h*-o-f*-u,t[2]=h*c+p*-u+f*-s-l*-o,t},n.forEach=function(){var t=new Float32Array(3);return function(r,e,n,i,a,o){var s,u;for(e||(e=3),n||(n=0),u=i?Math.min(i*e+n,r.length):r.length,s=n;u>s;s+=e)t[0]=r[s],t[1]=r[s+1],t[2]=r[s+2],a(t,t,o),r[s]=t[0],r[s+1]=t[1],r[s+2]=t[2];return r}}(),n.str=function(t){return"vec3("+t[0]+", "+t[1]+", "+t[2]+")"},t!==void 0&&(t.vec3=n);var i={};if(!e)var e=1e-6;i.create=function(){return new Float32Array(4)},i.clone=function(t){var r=new Float32Array(4);return r[0]=t[0],r[1]=t[1],r[2]=t[2],r[3]=t[3],r},i.fromValues=function(t,r,e,n){var i=new Float32Array(4);return i[0]=t,i[1]=r,i[2]=e,i[3]=n,i},i.copy=function(t,r){return t[0]=r[0],t[1]=r[1],t[2]=r[2],t[3]=r[3],t},i.set=function(t,r,e,n,i){return t[0]=r,t[1]=e,t[2]=n,t[3]=i,t},i.add=function(t,r,e){return t[0]=r[0]+e[0],t[1]=r[1]+e[1],t[2]=r[2]+e[2],t[3]=r[3]+e[3],t},i.sub=i.subtract=function(t,r,e){return t[0]=r[0]-e[0],t[1]=r[1]-e[1],t[2]=r[2]-e[2],t[3]=r[3]-e[3],t},i.mul=i.multiply=function(t,r,e){return t[0]=r[0]*e[0],t[1]=r[1]*e[1],t[2]=r[2]*e[2],t[3]=r[3]*e[3],t},i.div=i.divide=function(t,r,e){return t[0]=r[0]/e[0],t[1]=r[1]/e[1],t[2]=r[2]/e[2],t[3]=r[3]/e[3],t},i.min=function(t,r,e){return t[0]=Math.min(r[0],e[0]),t[1]=Math.min(r[1],e[1]),t[2]=Math.min(r[2],e[2]),t[3]=Math.min(r[3],e[3]),t},i.max=function(t,r,e){return t[0]=Math.max(r[0],e[0]),t[1]=Math.max(r[1],e[1]),t[2]=Math.max(r[2],e[2]),t[3]=Math.max(r[3],e[3]),t},i.scale=function(t,r,e){return t[0]=r[0]*e,t[1]=r[1]*e,t[2]=r[2]*e,t[3]=r[3]*e,t},i.dist=i.distance=function(t,r){var e=r[0]-t[0],n=r[1]-t[1],i=r[2]-t[2],a=r[3]-t[3];return Math.sqrt(e*e+n*n+i*i+a*a)},i.sqrDist=i.squaredDistance=function(t,r){var e=r[0]-t[0],n=r[1]-t[1],i=r[2]-t[2],a=r[3]-t[3];return e*e+n*n+i*i+a*a},i.len=i.length=function(t){var r=t[0],e=t[1],n=t[2],i=t[3];return Math.sqrt(r*r+e*e+n*n+i*i)},i.sqrLen=i.squaredLength=function(t){var r=t[0],e=t[1],n=t[2],i=t[3];return r*r+e*e+n*n+i*i},i.negate=function(t,r){return t[0]=-r[0],t[1]=-r[1],t[2]=-r[2],t[3]=-r[3],t},i.normalize=function(t,r){var e=r[0],n=r[1],i=r[2],a=r[3],o=e*e+n*n+i*i+a*a;return o>0&&(o=1/Math.sqrt(o),t[0]=r[0]*o,t[1]=r[1]*o,t[2]=r[2]*o,t[3]=r[3]*o),t},i.dot=function(t,r){return t[0]*r[0]+t[1]*r[1]+t[2]*r[2]+t[3]*r[3]},i.lerp=function(t,r,e,n){var i=r[0],a=r[1],o=r[2],s=r[3];return t[0]=i+n*(e[0]-i),t[1]=a+n*(e[1]-a),t[2]=o+n*(e[2]-o),t[3]=s+n*(e[3]-s),t},i.transformMat4=function(t,r,e){var n=r[0],i=r[1],a=r[2],o=r[3];return t[0]=e[0]*n+e[4]*i+e[8]*a+e[12]*o,t[1]=e[1]*n+e[5]*i+e[9]*a+e[13]*o,t[2]=e[2]*n+e[6]*i+e[10]*a+e[14]*o,t[3]=e[3]*n+e[7]*i+e[11]*a+e[15]*o,t},i.transformQuat=function(t,r,e){var n=r[0],i=r[1],a=r[2],o=e[0],s=e[1],u=e[2],c=e[3],f=c*n+s*a-u*i,l=c*i+u*n-o*a,h=c*a+o*i-s*n,p=-o*n-s*i-u*a;return t[0]=f*c+p*-o+l*-u-h*-s,t[1]=l*c+p*-s+h*-o-f*-u,t[2]=h*c+p*-u+f*-s-l*-o,t},i.forEach=function(){var t=new Float32Array(4);return function(r,e,n,i,a,o){var s,u;for(e||(e=4),n||(n=0),u=i?Math.min(i*e+n,r.length):r.length,s=n;u>s;s+=e)t[0]=r[s],t[1]=r[s+1],t[2]=r[s+2],t[3]=r[s+3],a(t,t,o),r[s]=t[0],r[s+1]=t[1],r[s+2]=t[2],r[s+3]=t[3];return r}}(),i.str=function(t){return"vec4("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+")"},t!==void 0&&(t.vec4=i);var a={},o=new Float32Array([1,0,0,1]);if(!e)var e=1e-6;a.create=function(){return new Float32Array(o)},a.clone=function(t){var r=new Float32Array(4);return r[0]=t[0],r[1]=t[1],r[2]=t[2],r[3]=t[3],r},a.copy=function(t,r){return t[0]=r[0],t[1]=r[1],t[2]=r[2],t[3]=r[3],t},a.identity=function(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t},a.transpose=function(t,r){if(t===r){var e=r[1];t[1]=r[2],t[2]=e}else t[0]=r[0],t[1]=r[2],t[2]=r[1],t[3]=r[3];return t},a.invert=function(t,r){var e=r[0],n=r[1],i=r[2],a=r[3],o=e*a-i*n;return o?(o=1/o,t[0]=a*o,t[1]=-n*o,t[2]=-i*o,t[3]=e*o,t):null},a.adjoint=function(t,r){var e=r[0];return t[0]=r[3],t[1]=-r[1],t[2]=-r[2],t[3]=e,t},a.determinant=function(t){return t[0]*t[3]-t[2]*t[1]},a.mul=a.multiply=function(t,r,e){var n=r[0],i=r[1],a=r[2],o=r[3],s=e[0],u=e[1],c=e[2],f=e[3];return t[0]=n*s+i*c,t[1]=n*u+i*f,t[2]=a*s+o*c,t[3]=a*u+o*f,t},a.rotate=function(t,r,e){var n=r[0],i=r[1],a=r[2],o=r[3],s=Math.sin(e),u=Math.cos(e);return t[0]=n*u+i*s,t[1]=n*-s+i*u,t[2]=a*u+o*s,t[3]=a*-s+o*u,t},a.scale=function(t,r,e){var n=r[0],i=r[1],a=r[2],o=r[3],s=e[0],u=e[1];return t[0]=n*s,t[1]=i*u,t[2]=a*s,t[3]=o*u,t},a.str=function(t){return"mat2("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+")"},t!==void 0&&(t.mat2=a);var s={},u=new Float32Array([1,0,0,0,1,0,0,0,1]);if(!e)var e=1e-6;s.create=function(){return new Float32Array(u)},s.clone=function(t){var r=new Float32Array(9);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},s.copy=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},s.identity=function(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},s.transpose=function(t,r){if(t===r){var e=r[1],n=r[2],i=r[5];t[1]=r[3],t[2]=r[6],t[3]=e,t[5]=r[7],t[6]=n,t[7]=i}else t[0]=r[0],t[1]=r[3],t[2]=r[6],t[3]=r[1],t[4]=r[4],t[5]=r[7],t[6]=r[2],t[7]=r[5],t[8]=r[8];return t},s.invert=function(t,r){var e=r[0],n=r[1],i=r[2],a=r[3],o=r[4],s=r[5],u=r[6],c=r[7],f=r[8],l=f*o-s*c,h=-f*a+s*u,p=c*a-o*u,d=e*l+n*h+i*p;return d?(d=1/d,t[0]=l*d,t[1]=(-f*n+i*c)*d,t[2]=(s*n-i*o)*d,t[3]=h*d,t[4]=(f*e-i*u)*d,t[5]=(-s*e+i*a)*d,t[6]=p*d,t[7]=(-c*e+n*u)*d,t[8]=(o*e-n*a)*d,t):null},s.adjoint=function(t,r){var e=r[0],n=r[1],i=r[2],a=r[3],o=r[4],s=r[5],u=r[6],c=r[7],f=r[8];return t[0]=o*f-s*c,t[1]=i*c-n*f,t[2]=n*s-i*o,t[3]=s*u-a*f,t[4]=e*f-i*u,t[5]=i*a-e*s,t[6]=a*c-o*u,t[7]=n*u-e*c,t[8]=e*o-n*a,t},s.determinant=function(t){var r=t[0],e=t[1],n=t[2],i=t[3],a=t[4],o=t[5],s=t[6],u=t[7],c=t[8];return r*(c*a-o*u)+e*(-c*i+o*s)+n*(u*i-a*s)},s.mul=s.multiply=function(t,r,e){var n=r[0],i=r[1],a=r[2],o=r[3],s=r[4],u=r[5],c=r[6],f=r[7],l=r[8],h=e[0],p=e[1],d=e[2],v=e[3],g=e[4],m=e[5],y=e[6],b=e[7],_=e[8];return t[0]=h*n+p*o+d*c,t[1]=h*i+p*s+d*f,t[2]=h*a+p*u+d*l,t[3]=v*n+g*o+m*c,t[4]=v*i+g*s+m*f,t[5]=v*a+g*u+m*l,t[6]=y*n+b*o+_*c,t[7]=y*i+b*s+_*f,t[8]=y*a+b*u+_*l,t},s.str=function(t){return"mat3("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+", "+t[4]+", "+t[5]+", "+t[6]+", "+t[7]+", "+t[8]+")"},t!==void 0&&(t.mat3=s);var c={},f=new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]);if(!e)var e=1e-6;c.create=function(){return new Float32Array(f)},c.clone=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},c.copy=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},c.identity=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},c.transpose=function(t,r){if(t===r){var e=r[1],n=r[2],i=r[3],a=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]=a,t[11]=r[14],t[12]=i,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},c.invert=function(t,r){var e=r[0],n=r[1],i=r[2],a=r[3],o=r[4],s=r[5],u=r[6],c=r[7],f=r[8],l=r[9],h=r[10],p=r[11],d=r[12],v=r[13],g=r[14],m=r[15],y=e*s-n*o,b=e*u-i*o,_=e*c-a*o,w=n*u-i*s,E=n*c-a*s,A=i*c-a*u,x=f*v-l*d,T=f*g-h*d,M=f*m-p*d,I=l*g-h*v,L=l*m-p*v,j=h*m-p*g,S=y*j-b*L+_*I+w*M-E*T+A*x;return S?(S=1/S,t[0]=(s*j-u*L+c*I)*S,t[1]=(i*L-n*j-a*I)*S,t[2]=(v*A-g*E+m*w)*S,t[3]=(h*E-l*A-p*w)*S,t[4]=(u*M-o*j-c*T)*S,t[5]=(e*j-i*M+a*T)*S,t[6]=(g*_-d*A-m*b)*S,t[7]=(f*A-h*_+p*b)*S,t[8]=(o*L-s*M+c*x)*S,t[9]=(n*M-e*L-a*x)*S,t[10]=(d*E-v*_+m*y)*S,t[11]=(l*_-f*E-p*y)*S,t[12]=(s*T-o*I-u*x)*S,t[13]=(e*I-n*T+i*x)*S,t[14]=(v*b-d*w-g*y)*S,t[15]=(f*w-l*b+h*y)*S,t):null},c.adjoint=function(t,r){var e=r[0],n=r[1],i=r[2],a=r[3],o=r[4],s=r[5],u=r[6],c=r[7],f=r[8],l=r[9],h=r[10],p=r[11],d=r[12],v=r[13],g=r[14],m=r[15];return t[0]=s*(h*m-p*g)-l*(u*m-c*g)+v*(u*p-c*h),t[1]=-(n*(h*m-p*g)-l*(i*m-a*g)+v*(i*p-a*h)),t[2]=n*(u*m-c*g)-s*(i*m-a*g)+v*(i*c-a*u),t[3]=-(n*(u*p-c*h)-s*(i*p-a*h)+l*(i*c-a*u)),t[4]=-(o*(h*m-p*g)-f*(u*m-c*g)+d*(u*p-c*h)),t[5]=e*(h*m-p*g)-f*(i*m-a*g)+d*(i*p-a*h),t[6]=-(e*(u*m-c*g)-o*(i*m-a*g)+d*(i*c-a*u)),t[7]=e*(u*p-c*h)-o*(i*p-a*h)+f*(i*c-a*u),t[8]=o*(l*m-p*v)-f*(s*m-c*v)+d*(s*p-c*l),t[9]=-(e*(l*m-p*v)-f*(n*m-a*v)+d*(n*p-a*l)),t[10]=e*(s*m-c*v)-o*(n*m-a*v)+d*(n*c-a*s),t[11]=-(e*(s*p-c*l)-o*(n*p-a*l)+f*(n*c-a*s)),t[12]=-(o*(l*g-h*v)-f*(s*g-u*v)+d*(s*h-u*l)),t[13]=e*(l*g-h*v)-f*(n*g-i*v)+d*(n*h-i*l),t[14]=-(e*(s*g-u*v)-o*(n*g-i*v)+d*(n*u-i*s)),t[15]=e*(s*h-u*l)-o*(n*h-i*l)+f*(n*u-i*s),t},c.determinant=function(t){var r=t[0],e=t[1],n=t[2],i=t[3],a=t[4],o=t[5],s=t[6],u=t[7],c=t[8],f=t[9],l=t[10],h=t[11],p=t[12],d=t[13],v=t[14],g=t[15],m=r*o-e*a,y=r*s-n*a,b=r*u-i*a,_=e*s-n*o,w=e*u-i*o,E=n*u-i*s,A=c*d-f*p,x=c*v-l*p,T=c*g-h*p,M=f*v-l*d,I=f*g-h*d,L=l*g-h*v;return m*L-y*I+b*M+_*T-w*x+E*A},c.mul=c.multiply=function(t,r,e){var n=r[0],i=r[1],a=r[2],o=r[3],s=r[4],u=r[5],c=r[6],f=r[7],l=r[8],h=r[9],p=r[10],d=r[11],v=r[12],g=r[13],m=r[14],y=r[15],b=e[0],_=e[1],w=e[2],E=e[3];return t[0]=b*n+_*s+w*l+E*v,t[1]=b*i+_*u+w*h+E*g,t[2]=b*a+_*c+w*p+E*m,t[3]=b*o+_*f+w*d+E*y,b=e[4],_=e[5],w=e[6],E=e[7],t[4]=b*n+_*s+w*l+E*v,t[5]=b*i+_*u+w*h+E*g,t[6]=b*a+_*c+w*p+E*m,t[7]=b*o+_*f+w*d+E*y,b=e[8],_=e[9],w=e[10],E=e[11],t[8]=b*n+_*s+w*l+E*v,t[9]=b*i+_*u+w*h+E*g,t[10]=b*a+_*c+w*p+E*m,t[11]=b*o+_*f+w*d+E*y,b=e[12],_=e[13],w=e[14],E=e[15],t[12]=b*n+_*s+w*l+E*v,t[13]=b*i+_*u+w*h+E*g,t[14]=b*a+_*c+w*p+E*m,t[15]=b*o+_*f+w*d+E*y,t},c.translate=function(t,r,e){var n,i,a,o,s,u,c,f,l,h,p,d,v=e[0],g=e[1],m=e[2];return r===t?(t[12]=r[0]*v+r[4]*g+r[8]*m+r[12],t[13]=r[1]*v+r[5]*g+r[9]*m+r[13],t[14]=r[2]*v+r[6]*g+r[10]*m+r[14],t[15]=r[3]*v+r[7]*g+r[11]*m+r[15]):(n=r[0],i=r[1],a=r[2],o=r[3],s=r[4],u=r[5],c=r[6],f=r[7],l=r[8],h=r[9],p=r[10],d=r[11],t[0]=n,t[1]=i,t[2]=a,t[3]=o,t[4]=s,t[5]=u,t[6]=c,t[7]=f,t[8]=l,t[9]=h,t[10]=p,t[11]=d,t[12]=n*v+s*g+l*m+r[12],t[13]=i*v+u*g+h*m+r[13],t[14]=a*v+c*g+p*m+r[14],t[15]=o*v+f*g+d*m+r[15]),t},c.scale=function(t,r,e){var n=e[0],i=e[1],a=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]*i,t[5]=r[5]*i,t[6]=r[6]*i,t[7]=r[7]*i,t[8]=r[8]*a,t[9]=r[9]*a,t[10]=r[10]*a,t[11]=r[11]*a,t[12]=r[12],t[13]=r[13],t[14]=r[14],t[15]=r[15],t},c.rotate=function(t,r,n,i){var a,o,s,u,c,f,l,h,p,d,v,g,m,y,b,_,w,E,A,x,T,M,I,L,j=i[0],S=i[1],N=i[2],R=Math.sqrt(j*j+S*S+N*N);return e>Math.abs(R)?null:(R=1/R,j*=R,S*=R,N*=R,a=Math.sin(n),o=Math.cos(n),s=1-o,u=r[0],c=r[1],f=r[2],l=r[3],h=r[4],p=r[5],d=r[6],v=r[7],g=r[8],m=r[9],y=r[10],b=r[11],_=j*j*s+o,w=S*j*s+N*a,E=N*j*s-S*a,A=j*S*s-N*a,x=S*S*s+o,T=N*S*s+j*a,M=j*N*s+S*a,I=S*N*s-j*a,L=N*N*s+o,t[0]=u*_+h*w+g*E,t[1]=c*_+p*w+m*E,t[2]=f*_+d*w+y*E,t[3]=l*_+v*w+b*E,t[4]=u*A+h*x+g*T,t[5]=c*A+p*x+m*T,t[6]=f*A+d*x+y*T,t[7]=l*A+v*x+b*T,t[8]=u*M+h*I+g*L,t[9]=c*M+p*I+m*L,t[10]=f*M+d*I+y*L,t[11]=l*M+v*I+b*L,r!==t&&(t[12]=r[12],t[13]=r[13],t[14]=r[14],t[15]=r[15]),t)},c.rotateX=function(t,r,e){var n=Math.sin(e),i=Math.cos(e),a=r[4],o=r[5],s=r[6],u=r[7],c=r[8],f=r[9],l=r[10],h=r[11];return 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]),t[4]=a*i+c*n,t[5]=o*i+f*n,t[6]=s*i+l*n,t[7]=u*i+h*n,t[8]=c*i-a*n,t[9]=f*i-o*n,t[10]=l*i-s*n,t[11]=h*i-u*n,t},c.rotateY=function(t,r,e){var n=Math.sin(e),i=Math.cos(e),a=r[0],o=r[1],s=r[2],u=r[3],c=r[8],f=r[9],l=r[10],h=r[11];return 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]),t[0]=a*i-c*n,t[1]=o*i-f*n,t[2]=s*i-l*n,t[3]=u*i-h*n,t[8]=a*n+c*i,t[9]=o*n+f*i,t[10]=s*n+l*i,t[11]=u*n+h*i,t},c.rotateZ=function(t,r,e){var n=Math.sin(e),i=Math.cos(e),a=r[0],o=r[1],s=r[2],u=r[3],c=r[4],f=r[5],l=r[6],h=r[7];return 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]),t[0]=a*i+c*n,t[1]=o*i+f*n,t[2]=s*i+l*n,t[3]=u*i+h*n,t[4]=c*i-a*n,t[5]=f*i-o*n,t[6]=l*i-s*n,t[7]=h*i-u*n,t},c.fromRotationTranslation=function(t,r,e){var n=r[0],i=r[1],a=r[2],o=r[3],s=n+n,u=i+i,c=a+a,f=n*s,l=n*u,h=n*c,p=i*u,d=i*c,v=a*c,g=o*s,m=o*u,y=o*c;return t[0]=1-(p+v),t[1]=l+y,t[2]=h-m,t[3]=0,t[4]=l-y,t[5]=1-(f+v),t[6]=d+g,t[7]=0,t[8]=h+m,t[9]=d-g,t[10]=1-(f+p),t[11]=0,t[12]=e[0],t[13]=e[1],t[14]=e[2],t[15]=1,t},c.frustum=function(t,r,e,n,i,a,o){var s=1/(e-r),u=1/(i-n),c=1/(a-o);return t[0]=2*a*s,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=2*a*u,t[6]=0,t[7]=0,t[8]=(e+r)*s,t[9]=(i+n)*u,t[10]=(o+a)*c,t[11]=-1,t[12]=0,t[13]=0,t[14]=2*o*a*c,t[15]=0,t},c.perspective=function(t,r,e,n,i){var a=1/Math.tan(r/2),o=1/(n-i);return t[0]=a/e,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=a,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=(i+n)*o,t[11]=-1,t[12]=0,t[13]=0,t[14]=2*i*n*o,t[15]=0,t},c.ortho=function(t,r,e,n,i,a,o){var s=1/(r-e),u=1/(n-i),c=1/(a-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*c,t[11]=0,t[12]=(r+e)*s,t[13]=(i+n)*u,t[14]=(o+a)*c,t[15]=1,t},c.lookAt=function(t,r,n,i){var a,o,s,u,f,l,h,p,d,v,g=r[0],m=r[1],y=r[2],b=i[0],_=i[1],w=i[2],E=n[0],A=n[1],x=n[2];return e>Math.abs(g-E)&&e>Math.abs(m-A)&&e>Math.abs(y-x)?c.identity(t):(h=g-E,p=m-A,d=y-x,v=1/Math.sqrt(h*h+p*p+d*d),h*=v,p*=v,d*=v,a=_*d-w*p,o=w*h-b*d,s=b*p-_*h,v=Math.sqrt(a*a+o*o+s*s),v?(v=1/v,a*=v,o*=v,s*=v):(a=0,o=0,s=0),u=p*s-d*o,f=d*a-h*s,l=h*o-p*a,v=Math.sqrt(u*u+f*f+l*l),v?(v=1/v,u*=v,f*=v,l*=v):(u=0,f=0,l=0),t[0]=a,t[1]=u,t[2]=h,t[3]=0,t[4]=o,t[5]=f,t[6]=p,t[7]=0,t[8]=s,t[9]=l,t[10]=d,t[11]=0,t[12]=-(a*g+o*m+s*y),t[13]=-(u*g+f*m+l*y),t[14]=-(h*g+p*m+d*y),t[15]=1,t)},c.str=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]+")"},t!==void 0&&(t.mat4=c);var l={},h=new Float32Array([0,0,0,1]);if(!e)var e=1e-6;l.create=function(){return new Float32Array(h)},l.clone=i.clone,l.fromValues=i.fromValues,l.copy=i.copy,l.set=i.set,l.identity=function(t){return t[0]=0,t[1]=0,t[2]=0,t[3]=1,t},l.setAxisAngle=function(t,r,e){e=.5*e;var n=Math.sin(e);return t[0]=n*r[0],t[1]=n*r[1],t[2]=n*r[2],t[3]=Math.cos(e),t},l.add=i.add,l.mul=l.multiply=function(t,r,e){var n=r[0],i=r[1],a=r[2],o=r[3],s=e[0],u=e[1],c=e[2],f=e[3];return t[0]=n*f+o*s+i*c-a*u,t[1]=i*f+o*u+a*s-n*c,t[2]=a*f+o*c+n*u-i*s,t[3]=o*f-n*s-i*u-a*c,t},l.scale=i.scale,l.rotateX=function(t,r,e){e*=.5;var n=r[0],i=r[1],a=r[2],o=r[3],s=Math.sin(e),u=Math.cos(e);return t[0]=n*u+o*s,t[1]=i*u+a*s,t[2]=a*u-i*s,t[3]=o*u-n*s,t},l.rotateY=function(t,r,e){e*=.5;var n=r[0],i=r[1],a=r[2],o=r[3],s=Math.sin(e),u=Math.cos(e);return t[0]=n*u-a*s,t[1]=i*u+o*s,t[2]=a*u+n*s,t[3]=o*u-i*s,t},l.rotateZ=function(t,r,e){e*=.5;var n=r[0],i=r[1],a=r[2],o=r[3],s=Math.sin(e),u=Math.cos(e);return t[0]=n*u+i*s,t[1]=i*u-n*s,t[2]=a*u+o*s,t[3]=o*u-a*s,t},l.calculateW=function(t,r){var e=r[0],n=r[1],i=r[2];return t[0]=e,t[1]=n,t[2]=i,t[3]=-Math.sqrt(Math.abs(1-e*e-n*n-i*i)),t},l.dot=i.dot,l.lerp=i.lerp,l.slerp=function(t,r,e,n){var i,a,o,s,u=r[0],c=r[1],f=r[2],l=r[3],h=e[0],p=e[1],d=e[2],v=r[3],g=u*h+c*p+f*d+l*v;return Math.abs(g)>=1?(t!==r&&(t[0]=u,t[1]=c,t[2]=f,t[3]=l),t):(i=Math.acos(g),a=Math.sqrt(1-g*g),.001>Math.abs(a)?(t[0]=.5*u+.5*h,t[1]=.5*c+.5*p,t[2]=.5*f+.5*d,t[3]=.5*l+.5*v,t):(o=Math.sin((1-n)*i)/a,s=Math.sin(n*i)/a,t[0]=u*o+h*s,t[1]=c*o+p*s,t[2]=f*o+d*s,t[3]=l*o+v*s,t))},l.invert=function(t,r){var e=r[0],n=r[1],i=r[2],a=r[3],o=e*e+n*n+i*i+a*a,s=o?1/o:0;return t[0]=-e*s,t[1]=-n*s,t[2]=-i*s,t[3]=a*s,t},l.conjugate=function(t,r){return t[0]=-r[0],t[1]=-r[1],t[2]=-r[2],t[3]=r[3],t},l.len=l.length=i.length,l.sqrLen=l.squaredLength=i.squaredLength,l.normalize=i.normalize,l.str=function(t){return"quat("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+")"},t!==void 0&&(t.quat=l)}(t.exports)})()},{}],4:[function(t,r){"use strict";function e(t,r){return t[0]=r[0],t[1]=r[1],t[2]=r[2],t[3]=r[4],t[4]=r[5],t[5]=r[6],t[6]=r[8],t[7]=r[9],t[8]=r[10],t}function n(t,r){var e,n=r[0]+r[4]+r[8];if(n>0)e=Math.sqrt(n+1),t[3]=.5*e,e=.5/e,t[0]=(r[7]-r[5])*e,t[1]=(r[2]-r[6])*e,t[2]=(r[3]-r[1])*e;else{var i=0;r[4]>r[0]&&(i=1),r[8]>r[3*i+i]&&(i=2);var a=(i+1)%3,o=(i+2)%3;e=Math.sqrt(r[3*i+i]-r[3*a+a]-r[3*o+o]+1),t[i]=.5*e,e=.5/e,t[3]=(r[3*o+a]-r[3*a+o])*e,t[a]=(r[3*a+i]+r[3*i+a])*e,t[o]=(r[3*o+i]+r[3*i+o])*e}return t}function i(t,r,e){this.rotation=t,this.center=r,this.distance=e}function a(t,r){var e=r[0],n=r[1];r[2];var i=e*e+n*n;i>1&&(i=1),t[0]=-r[0],t[1]=r[1],t[2]=r[2]||Math.sqrt(1-i),t[3]=0}function o(t,r,e){t=t||[0,0,-1],r=r||[0,0,0],e=e||[0,1,0];var n=new i(f.create(),u.create(),1);return n.lookAt(t,r,e),n}var s=t("gl-matrix"),u=s.vec3;s.mat3;var c=s.mat4,f=s.quat,l=new Float32Array(16),h=new Float32Array(16),p=i.prototype;p.view=function(t){return t||(t=c.create()),h[0]=h[1]=0,h[2]=-this.distance,c.fromRotationTranslation(t,f.conjugate(l,this.rotation),h),c.translate(t,t,u.negate(l,this.center)),t},p.lookAt=function(t,r,i){c.lookAt(l,t,r,i),e(l,l),n(this.rotation,l),u.copy(this.center,r),this.distance=u.distance(t,r)},p.pan=function(t){var r=this.distance;l[0]=-r*(t[0]||0),l[1]=r*(t[1]||0),l[2]=r*(t[2]||0),u.transformQuat(l,l,this.rotation),u.add(this.center,this.center,l)},p.zoom=function(t){this.distance+=t,0>this.distance&&(this.distance=0)},p.rotate=function(t,r){a(l,t),a(h,r),f.invert(h,h),f.multiply(l,l,h),1e-6>f.length(l)||(f.multiply(this.rotation,this.rotation,l),f.normalize(this.rotation,this.rotation))},r.exports=o},{"gl-matrix":3}]},{},[]),require=function e(t,r,n){function i(o,s){if(!r[o]){if(!t[o]){var u="function"==typeof require&&require;if(!s&&u)return u(o,!0);if(a)return a(o,!0);throw Error("Cannot find module '"+o+"'")}var c=r[o]={exports:{}};t[o][0].call(c.exports,function(r){var e=t[o][1][r];return i(e?e:r)},c,c.exports,e,t,r,n)}return r[o].exports}for(var a="function"==typeof require&&require,o=0;n.length>o;o++)i(n[o]);return i}({1:[function(t,r,e){function n(t,r,e){if(!(this instanceof n))return new n(t,r,e);var i=typeof t;if("base64"===r&&"string"===i)for(t=M(t);0!==t.length%4;)t+="=";var a;if("number"===i)a=j(t);else if("string"===i)a=n.byteLength(t,r);else{if("object"!==i)throw Error("First argument needs to be a number, array or string.");a=j(t.length)}var o;n._useTypedArrays?o=I(new Uint8Array(a)):(o=this,o.length=a,o._isBuffer=!0);var s;if(n._useTypedArrays&&"function"==typeof Uint8Array&&t instanceof Uint8Array)o._set(t);else if(N(t))for(s=0;a>s;s++)o[s]=n.isBuffer(t)?t.readUInt8(s):t[s];else if("string"===i)o.write(t,0,r);else if("number"===i&&!n._useTypedArrays&&!e)for(s=0;a>s;s++)o[s]=0;return o}function i(t,r,e,i){e=Number(e)||0;var a=t.length-e;i?(i=Number(i),i>a&&(i=a)):i=a;var o=r.length;V(0===o%2,"Invalid hex string"),i>o/2&&(i=o/2);for(var s=0;i>s;s++){var u=parseInt(r.substr(2*s,2),16);V(!isNaN(u),"Invalid hex string"),t[e+s]=u}return n._charsWritten=2*s,s}function a(t,r,e,i){var a=n._charsWritten=U(F(r),t,e,i);return a}function o(t,r,e,i){var a=n._charsWritten=U(k(r),t,e,i);return a}function s(t,r,e,n){return o(t,r,e,n)}function u(t,r,e,i){var a=n._charsWritten=U(C(r),t,e,i);return a}function c(t,r,e){return 0===r&&e===t.length?q.fromByteArray(t):q.fromByteArray(t.slice(r,e))}function f(t,r,e){var n="",i="";e=Math.min(t.length,e);for(var a=r;e>a;a++)127>=t[a]?(n+=P(i)+String.fromCharCode(t[a]),i=""):i+="%"+t[a].toString(16);return n+P(i)}function l(t,r,e){var n="";e=Math.min(t.length,e);for(var i=r;e>i;i++)n+=String.fromCharCode(t[i]);return n}function h(t,r,e){return l(t,r,e)}function p(t,r,e){var n=t.length;(!r||0>r)&&(r=0),(!e||0>e||e>n)&&(e=n);for(var i="",a=r;e>a;a++)i+=R(t[a]);return i}function d(t,r,e,n){n||(V("boolean"==typeof e,"missing or invalid endian"),V(void 0!==r&&null!==r,"missing offset"),V(t.length>r+1,"Trying to read beyond buffer length"));var i=t.length;if(!(r>=i)){var a;return e?(a=t[r],i>r+1&&(a|=t[r+1]<<8)):(a=t[r]<<8,i>r+1&&(a|=t[r+1])),a}}function v(t,r,e,n){n||(V("boolean"==typeof e,"missing or invalid endian"),V(void 0!==r&&null!==r,"missing offset"),V(t.length>r+3,"Trying to read beyond buffer length"));var i=t.length;if(!(r>=i)){var a;return e?(i>r+2&&(a=t[r+2]<<16),i>r+1&&(a|=t[r+1]<<8),a|=t[r],i>r+3&&(a+=t[r+3]<<24>>>0)):(i>r+1&&(a=t[r+1]<<16),i>r+2&&(a|=t[r+2]<<8),i>r+3&&(a|=t[r+3]),a+=t[r]<<24>>>0),a}}function g(t,r,e,n){n||(V("boolean"==typeof e,"missing or invalid endian"),V(void 0!==r&&null!==r,"missing offset"),V(t.length>r+1,"Trying to read beyond buffer length"));var i=t.length;if(!(r>=i)){var a=d(t,r,e,!0),o=32768&a;return o?-1*(65535-a+1):a}}function m(t,r,e,n){n||(V("boolean"==typeof e,"missing or invalid endian"),V(void 0!==r&&null!==r,"missing offset"),V(t.length>r+3,"Trying to read beyond buffer length"));var i=t.length;if(!(r>=i)){var a=v(t,r,e,!0),o=2147483648&a;return o?-1*(4294967295-a+1):a}}function y(t,r,e,n){return n||(V("boolean"==typeof e,"missing or invalid endian"),V(t.length>r+3,"Trying to read beyond buffer length")),z.read(t,r,e,23,4)}function b(t,r,e,n){return n||(V("boolean"==typeof e,"missing or invalid endian"),V(t.length>r+7,"Trying to read beyond buffer length")),z.read(t,r,e,52,8)}function _(t,r,e,n,i){i||(V(void 0!==r&&null!==r,"missing value"),V("boolean"==typeof n,"missing or invalid endian"),V(void 0!==e&&null!==e,"missing offset"),V(t.length>e+1,"trying to write beyond buffer length"),D(r,65535));var a=t.length;if(!(e>=a))for(var o=0,s=Math.min(a-e,2);s>o;o++)t[e+o]=(r&255<<8*(n?o:1-o))>>>8*(n?o:1-o)}function w(t,r,e,n,i){i||(V(void 0!==r&&null!==r,"missing value"),V("boolean"==typeof n,"missing or invalid endian"),V(void 0!==e&&null!==e,"missing offset"),V(t.length>e+3,"trying to write beyond buffer length"),D(r,4294967295));var a=t.length;if(!(e>=a))for(var o=0,s=Math.min(a-e,4);s>o;o++)t[e+o]=255&r>>>8*(n?o:3-o)}function E(t,r,e,n,i){i||(V(void 0!==r&&null!==r,"missing value"),V("boolean"==typeof n,"missing or invalid endian"),V(void 0!==e&&null!==e,"missing offset"),V(t.length>e+1,"Trying to write beyond buffer length"),B(r,32767,-32768));var a=t.length;e>=a||(r>=0?_(t,r,e,n,i):_(t,65535+r+1,e,n,i))}function A(t,r,e,n,i){i||(V(void 0!==r&&null!==r,"missing value"),V("boolean"==typeof n,"missing or invalid endian"),V(void 0!==e&&null!==e,"missing offset"),V(t.length>e+3,"Trying to write beyond buffer length"),B(r,2147483647,-2147483648));var a=t.length;e>=a||(r>=0?w(t,r,e,n,i):w(t,4294967295+r+1,e,n,i))}function x(t,r,e,n,i){i||(V(void 0!==r&&null!==r,"missing value"),V("boolean"==typeof n,"missing or invalid endian"),V(void 0!==e&&null!==e,"missing offset"),V(t.length>e+3,"Trying to write beyond buffer length"),O(r,3.4028234663852886e38,-3.4028234663852886e38));var a=t.length;e>=a||z.write(t,r,e,n,23,4)}function T(t,r,e,n,i){i||(V(void 0!==r&&null!==r,"missing value"),V("boolean"==typeof n,"missing or invalid endian"),V(void 0!==e&&null!==e,"missing offset"),V(t.length>e+7,"Trying to write beyond buffer length"),O(r,1.7976931348623157e308,-1.7976931348623157e308));var a=t.length;e>=a||z.write(t,r,e,n,52,8)}function M(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}function I(t){return t._isBuffer=!0,t._get=t.get,t._set=t.set,t.get=Y.get,t.set=Y.set,t.write=Y.write,t.toString=Y.toString,t.toLocaleString=Y.toString,t.toJSON=Y.toJSON,t.copy=Y.copy,t.slice=Y.slice,t.readUInt8=Y.readUInt8,t.readUInt16LE=Y.readUInt16LE,t.readUInt16BE=Y.readUInt16BE,t.readUInt32LE=Y.readUInt32LE,t.readUInt32BE=Y.readUInt32BE,t.readInt8=Y.readInt8,t.readInt16LE=Y.readInt16LE,t.readInt16BE=Y.readInt16BE,t.readInt32LE=Y.readInt32LE,t.readInt32BE=Y.readInt32BE,t.readFloatLE=Y.readFloatLE,t.readFloatBE=Y.readFloatBE,t.readDoubleLE=Y.readDoubleLE,t.readDoubleBE=Y.readDoubleBE,t.writeUInt8=Y.writeUInt8,t.writeUInt16LE=Y.writeUInt16LE,t.writeUInt16BE=Y.writeUInt16BE,t.writeUInt32LE=Y.writeUInt32LE,t.writeUInt32BE=Y.writeUInt32BE,t.writeInt8=Y.writeInt8,t.writeInt16LE=Y.writeInt16LE,t.writeInt16BE=Y.writeInt16BE,t.writeInt32LE=Y.writeInt32LE,t.writeInt32BE=Y.writeInt32BE,t.writeFloatLE=Y.writeFloatLE,t.writeFloatBE=Y.writeFloatBE,t.writeDoubleLE=Y.writeDoubleLE,t.writeDoubleBE=Y.writeDoubleBE,t.fill=Y.fill,t.inspect=Y.inspect,t.toArrayBuffer=Y.toArrayBuffer,t}function L(t,r,e){return"number"!=typeof t?e:(t=~~t,t>=r?r:t>=0?t:(t+=r,t>=0?t:0))}function j(t){return t=~~Math.ceil(+t),0>t?0:t}function S(t){return(Array.isArray||function(t){return"[object Array]"===Object.prototype.toString.call(t)})(t)}function N(t){return S(t)||n.isBuffer(t)||t&&"object"==typeof t&&"number"==typeof t.length}function R(t){return 16>t?"0"+t.toString(16):t.toString(16)}function F(t){for(var r=[],e=0;t.length>e;e++){var n=t.charCodeAt(e);if(127>=n)r.push(t.charCodeAt(e));else{var i=e;n>=55296&&57343>=n&&e++;for(var a=encodeURIComponent(t.slice(i,e+1)).substr(1).split("%"),o=0;a.length>o;o++)r.push(parseInt(a[o],16))}}return r}function k(t){for(var r=[],e=0;t.length>e;e++)r.push(255&t.charCodeAt(e));return r}function C(t){return q.toByteArray(t)}function U(t,r,e,n){for(var i=0;n>i&&!(i+e>=r.length||i>=t.length);i++)r[i+e]=t[i];return i}function P(t){try{return decodeURIComponent(t)}catch(r){return String.fromCharCode(65533)}}function D(t,r){V("number"==typeof t,"cannot write a non-number as a number"),V(t>=0,"specified a negative value for writing an unsigned value"),V(r>=t,"value is larger than maximum value for type"),V(Math.floor(t)===t,"value has a fractional component")}function B(t,r,e){V("number"==typeof t,"cannot write a non-number as a number"),V(r>=t,"value larger than maximum allowed value"),V(t>=e,"value smaller than minimum allowed value"),V(Math.floor(t)===t,"value has a fractional component")}function O(t,r,e){V("number"==typeof t,"cannot write a non-number as a number"),V(r>=t,"value larger than maximum allowed value"),V(t>=e,"value smaller than minimum allowed value")}function V(t,r){if(!t)throw Error(r||"Failed assertion")}var q=t("base64-js"),z=t("ieee754");e.Buffer=n,e.SlowBuffer=n,e.INSPECT_MAX_BYTES=50,n.poolSize=8192,n._useTypedArrays=function(){if("undefined"==typeof Uint8Array||"undefined"==typeof ArrayBuffer)return!1;try{var t=new Uint8Array(0);return t.foo=function(){return 42},42===t.foo()&&"function"==typeof t.subarray}catch(r){return!1}}(),n.isEncoding=function(t){switch((t+"").toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"raw":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},n.isBuffer=function(t){return!(null===t||void 0===t||!t._isBuffer)},n.byteLength=function(t,r){var e;switch(t+="",r||"utf8"){case"hex":e=t.length/2;break;case"utf8":case"utf-8":e=F(t).length;break;case"ascii":case"binary":case"raw":e=t.length;break;case"base64":e=C(t).length;break;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":e=2*t.length;break;default:throw Error("Unknown encoding")}return e},n.concat=function(t,r){if(V(S(t),"Usage: Buffer.concat(list, [totalLength])\nlist should be an Array."),0===t.length)return new n(0);if(1===t.length)return t[0];var e;if("number"!=typeof r)for(r=0,e=0;t.length>e;e++)r+=t[e].length;var i=new n(r),a=0;for(e=0;t.length>e;e++){var o=t[e];o.copy(i,a),a+=o.length}return i},n.prototype.write=function(t,r,e,n){if(isFinite(r))isFinite(e)||(n=e,e=void 0);else{var c=n;n=r,r=e,e=c}r=Number(r)||0;var f=this.length-r;switch(e?(e=Number(e),e>f&&(e=f)):e=f,n=((n||"utf8")+"").toLowerCase()){case"hex":return i(this,t,r,e);case"utf8":case"utf-8":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return a(this,t,r,e);case"ascii":return o(this,t,r,e);case"binary":return s(this,t,r,e);case"base64":return u(this,t,r,e);default:throw Error("Unknown encoding")}},n.prototype.toString=function(t,r,e){var n=this;if(t=((t||"utf8")+"").toLowerCase(),r=Number(r)||0,e=void 0!==e?Number(e):e=n.length,e===r)return"";switch(t){case"hex":return p(n,r,e);case"utf8":case"utf-8":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return f(n,r,e);case"ascii":return l(n,r,e);case"binary":return h(n,r,e);case"base64":return c(n,r,e);default:throw Error("Unknown encoding")}},n.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}},n.prototype.copy=function(t,r,e,n){var i=this;if(e||(e=0),n||0===n||(n=this.length),r||(r=0),n!==e&&0!==t.length&&0!==i.length){V(n>=e,"sourceEnd < sourceStart"),V(r>=0&&t.length>r,"targetStart out of bounds"),V(e>=0&&i.length>e,"sourceStart out of bounds"),V(n>=0&&i.length>=n,"sourceEnd out of bounds"),n>this.length&&(n=this.length),n-e>t.length-r&&(n=t.length-r+e);for(var a=0;n-e>a;a++)t[a+r]=this[a+e]}},n.prototype.slice=function(t,r){var e=this.length;if(t=L(t,e,0),r=L(r,e,e),n._useTypedArrays)return I(this.subarray(t,r));for(var i=r-t,a=new n(i,void 0,!0),o=0;i>o;o++)a[o]=this[o+t];return a},n.prototype.get=function(t){return console.log(".get() is deprecated. Access using array indexes instead."),this.readUInt8(t)
},n.prototype.set=function(t,r){return console.log(".set() is deprecated. Access using array indexes instead."),this.writeUInt8(t,r)},n.prototype.readUInt8=function(t,r){return r||(V(void 0!==t&&null!==t,"missing offset"),V(this.length>t,"Trying to read beyond buffer length")),t>=this.length?void 0:this[t]},n.prototype.readUInt16LE=function(t,r){return d(this,t,!0,r)},n.prototype.readUInt16BE=function(t,r){return d(this,t,!1,r)},n.prototype.readUInt32LE=function(t,r){return v(this,t,!0,r)},n.prototype.readUInt32BE=function(t,r){return v(this,t,!1,r)},n.prototype.readInt8=function(t,r){if(r||(V(void 0!==t&&null!==t,"missing offset"),V(this.length>t,"Trying to read beyond buffer length")),!(t>=this.length)){var e=128&this[t];return e?-1*(255-this[t]+1):this[t]}},n.prototype.readInt16LE=function(t,r){return g(this,t,!0,r)},n.prototype.readInt16BE=function(t,r){return g(this,t,!1,r)},n.prototype.readInt32LE=function(t,r){return m(this,t,!0,r)},n.prototype.readInt32BE=function(t,r){return m(this,t,!1,r)},n.prototype.readFloatLE=function(t,r){return y(this,t,!0,r)},n.prototype.readFloatBE=function(t,r){return y(this,t,!1,r)},n.prototype.readDoubleLE=function(t,r){return b(this,t,!0,r)},n.prototype.readDoubleBE=function(t,r){return b(this,t,!1,r)},n.prototype.writeUInt8=function(t,r,e){e||(V(void 0!==t&&null!==t,"missing value"),V(void 0!==r&&null!==r,"missing offset"),V(this.length>r,"trying to write beyond buffer length"),D(t,255)),r>=this.length||(this[r]=t)},n.prototype.writeUInt16LE=function(t,r,e){_(this,t,r,!0,e)},n.prototype.writeUInt16BE=function(t,r,e){_(this,t,r,!1,e)},n.prototype.writeUInt32LE=function(t,r,e){w(this,t,r,!0,e)},n.prototype.writeUInt32BE=function(t,r,e){w(this,t,r,!1,e)},n.prototype.writeInt8=function(t,r,e){e||(V(void 0!==t&&null!==t,"missing value"),V(void 0!==r&&null!==r,"missing offset"),V(this.length>r,"Trying to write beyond buffer length"),B(t,127,-128)),r>=this.length||(t>=0?this.writeUInt8(t,r,e):this.writeUInt8(255+t+1,r,e))},n.prototype.writeInt16LE=function(t,r,e){E(this,t,r,!0,e)},n.prototype.writeInt16BE=function(t,r,e){E(this,t,r,!1,e)},n.prototype.writeInt32LE=function(t,r,e){A(this,t,r,!0,e)},n.prototype.writeInt32BE=function(t,r,e){A(this,t,r,!1,e)},n.prototype.writeFloatLE=function(t,r,e){x(this,t,r,!0,e)},n.prototype.writeFloatBE=function(t,r,e){x(this,t,r,!1,e)},n.prototype.writeDoubleLE=function(t,r,e){T(this,t,r,!0,e)},n.prototype.writeDoubleBE=function(t,r,e){T(this,t,r,!1,e)},n.prototype.fill=function(t,r,e){if(t||(t=0),r||(r=0),e||(e=this.length),"string"==typeof t&&(t=t.charCodeAt(0)),V("number"==typeof t&&!isNaN(t),"value is not a number"),V(e>=r,"end < start"),e!==r&&0!==this.length){V(r>=0&&this.length>r,"start out of bounds"),V(e>=0&&this.length>=e,"end out of bounds");for(var n=r;e>n;n++)this[n]=t}},n.prototype.inspect=function(){for(var t=[],r=this.length,n=0;r>n;n++)if(t[n]=R(this[n]),n===e.INSPECT_MAX_BYTES){t[n+1]="...";break}return"<Buffer "+t.join(" ")+">"},n.prototype.toArrayBuffer=function(){if("function"==typeof Uint8Array){if(n._useTypedArrays)return new n(this).buffer;for(var t=new Uint8Array(this.length),r=0,e=t.length;e>r;r+=1)t[r]=this[r];return t.buffer}throw Error("Buffer.toArrayBuffer not supported in this browser")};var Y=n.prototype},{"base64-js":2,ieee754:3}],2:[function(t,r){var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";(function(){"use strict";function t(t){var r=t.charCodeAt(0);return r===o?62:r===s?63:u>r?-1:u+10>r?r-u+26+26:f+26>r?r-f:c+26>r?r-c+26:void 0}function n(r){function e(t){c[l++]=t}var n,i,o,s,u,c;if(r.length%4>0)throw Error("Invalid string. Length must be a multiple of 4");var f=r.length;u="="===r.charAt(f-2)?2:"="===r.charAt(f-1)?1:0,c=new a(3*r.length/4-u),o=u>0?r.length-4:r.length;var l=0;for(n=0,i=0;o>n;n+=4,i+=3)s=t(r.charAt(n))<<18|t(r.charAt(n+1))<<12|t(r.charAt(n+2))<<6|t(r.charAt(n+3)),e((16711680&s)>>16),e((65280&s)>>8),e(255&s);return 2===u?(s=t(r.charAt(n))<<2|t(r.charAt(n+1))>>4,e(255&s)):1===u&&(s=t(r.charAt(n))<<10|t(r.charAt(n+1))<<4|t(r.charAt(n+2))>>2,e(255&s>>8),e(255&s)),c}function i(t){function r(t){return e.charAt(t)}function n(t){return r(63&t>>18)+r(63&t>>12)+r(63&t>>6)+r(63&t)}var i,a,o,s=t.length%3,u="";for(i=0,o=t.length-s;o>i;i+=3)a=(t[i]<<16)+(t[i+1]<<8)+t[i+2],u+=n(a);switch(s){case 1:a=t[t.length-1],u+=r(a>>2),u+=r(63&a<<4),u+="==";break;case 2:a=(t[t.length-2]<<8)+t[t.length-1],u+=r(a>>10),u+=r(63&a>>4),u+=r(63&a<<2),u+="="}return u}var a="undefined"!=typeof Uint8Array?Uint8Array:Array;"0".charCodeAt(0);var o="+".charCodeAt(0),s="/".charCodeAt(0),u="0".charCodeAt(0),c="a".charCodeAt(0),f="A".charCodeAt(0);r.exports.toByteArray=n,r.exports.fromByteArray=i})()},{}],3:[function(t,r,e){e.read=function(t,r,e,n,i){var a,o,s=8*i-n-1,u=(1<<s)-1,c=u>>1,f=-7,l=e?i-1:0,h=e?-1:1,p=t[r+l];for(l+=h,a=p&(1<<-f)-1,p>>=-f,f+=s;f>0;a=256*a+t[r+l],l+=h,f-=8);for(o=a&(1<<-f)-1,a>>=-f,f+=n;f>0;o=256*o+t[r+l],l+=h,f-=8);if(0===a)a=1-c;else{if(a===u)return o?0/0:1/0*(p?-1:1);o+=Math.pow(2,n),a-=c}return(p?-1:1)*o*Math.pow(2,a-n)},e.write=function(t,r,e,n,i,a){var o,s,u,c=8*a-i-1,f=(1<<c)-1,l=f>>1,h=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,p=n?0:a-1,d=n?1:-1,v=0>r||0===r&&0>1/r?1:0;for(r=Math.abs(r),isNaN(r)||1/0===r?(s=isNaN(r)?1:0,o=f):(o=Math.floor(Math.log(r)/Math.LN2),1>r*(u=Math.pow(2,-o))&&(o--,u*=2),r+=o+l>=1?h/u:h*Math.pow(2,1-l),r*u>=2&&(o++,u/=2),o+l>=f?(s=0,o=f):o+l>=1?(s=(r*u-1)*Math.pow(2,i),o+=l):(s=r*Math.pow(2,l-1)*Math.pow(2,i),o=0));i>=8;t[e+p]=255&s,p+=d,s/=256,i-=8);for(o=o<<i|s,c+=i;c>0;t[e+p]=255&o,p+=d,o/=256,c-=8);t[e+p-d]|=128*v}},{}],b8yIKS:[function(t,r){"use strict";function e(t,r,e,n,i,a,o,s,u,c,f,l){this.gl=t,this.trianglePositions=r,this.triangleColors=e,this.triangleNormals=n,this.triangleVAO=i,this.triangleCount=0,this.edgePositions=a,this.edgeColors=o,this.edgeVAO=s,this.edgeCount=0,this.pointPositions=u,this.pointColors=c,this.pointSizes=f,this.pointVAO=l,this.pointCount=0}function n(t){var r=h(t);return r.attributes.position.location=0,r.attributes.color.location=1,r.attributes.normal.location=2,r}function i(t){var r=p(t);return r.attributes.position.location=0,r.attributes.color.location=1,r}function a(t){var r=d(t);return r.attributes.position.location=0,r.attributes.color.location=1,r.attributes.pointSize.location=2,r}function o(t,r){t.__SIMPLICIAL_MESH_SHADER||(t.__SIMPLICIAL_MESH_SHADER=n(t)),t.__SIMPLICIAL_WIRE_SHADER||(t.__SIMPLICIAL_WIRE_SHADER=i(t)),t.__SIMPLICIAL_POINT_SHADER||(t.__SIMPLICIAL_POINT_SHADER=a(t));var o=s(t,[]),c=s(t,[]),f=s(t,[]),l=u(t,[{buffer:o,type:t.FLOAT,size:3},{buffer:c,type:t.FLOAT,size:3},{buffer:f,type:t.FLOAT,size:3}]),h=s(t,[]),p=s(t,[]),d=u(t,[{buffer:h,type:t.FLOAT,size:3},{buffer:p,type:t.FLOAT,size:3}]),v=s(t,[]),g=s(t,[]),m=s(t,[]),y=u(t,[{buffer:v,type:t.FLOAT,size:3},{buffer:g,type:t.FLOAT,size:3},{buffer:m,type:t.FLOAT,size:1}]),b=new e(t,o,c,f,l,h,p,d,v,g,m,y);return b.update(r),b}var s=t("gl-buffer"),u=t("gl-vao");t("glslify");var c=t("gl-matrix"),f=t("normals"),l=c.mat4,h=t("glslify/adapter.js")("\nattribute vec3 position;\nattribute vec3 color;\nattribute vec3 normal;\nuniform mat4 model;\nuniform mat4 modelInverseTranspose;\nuniform mat4 view;\nuniform vec3 eyePosition;\nuniform mat4 projection;\nvarying vec3 f_position;\nvarying vec3 f_color;\nvarying vec3 f_normal;\nvarying vec3 viewDirection;\nvoid main() {\n vec4 m_position = model * vec4(position, 1.0);\n vec4 t_position = view * m_position;\n gl_Position = projection * t_position;\n f_color = color;\n f_normal = normalize((modelInverseTranspose * vec4(normal, 0.0)).xyz);\n f_position = m_position.xyz / m_position.w;\n viewDirection = eyePosition - f_position;\n}","\nprecision highp float;\nuniform vec3 lightPosition;\nuniform vec3 ambient;\nuniform vec3 diffuse;\nuniform vec3 specular;\nuniform float specularExponent;\nvarying vec3 f_position;\nvarying vec3 f_color;\nvarying vec3 f_normal;\nvarying vec3 viewDirection;\nvoid main() {\n vec3 lightDirection = normalize(lightPosition - f_position);\n vec3 normal = normalize(f_normal);\n float diffuseIntensity = clamp(dot(normal, lightDirection), 0.0, 1.0);\n vec3 halfView = normalize(lightDirection + normalize(viewDirection));\n float specularIntensity = pow(clamp(dot(normal, halfView), 0.0, 1.0), specularExponent);\n gl_FragColor = vec4(f_color * (ambient + diffuse * diffuseIntensity) + specular * specularIntensity, 1.0);\n}",[{name:"model",type:"mat4"},{name:"modelInverseTranspose",type:"mat4"},{name:"view",type:"mat4"},{name:"eyePosition",type:"vec3"},{name:"projection",type:"mat4"},{name:"lightPosition",type:"vec3"},{name:"ambient",type:"vec3"},{name:"diffuse",type:"vec3"},{name:"specular",type:"vec3"},{name:"specularExponent",type:"float"}],[{name:"position",type:"vec3"},{name:"color",type:"vec3"},{name:"normal",type:"vec3"}]),p=t("glslify/adapter.js")("\nattribute vec3 position;\nattribute vec3 color;\nuniform mat4 model;\nuniform mat4 view;\nuniform mat4 projection;\nvarying vec3 f_color;\nvoid main() {\n gl_Position = projection * view * model * vec4(position, 1.0);\n f_color = color;\n}","\nprecision highp float;\nvarying vec3 f_color;\nvoid main() {\n gl_FragColor = vec4(f_color, 1.0);\n}",[{name:"model",type:"mat4"},{name:"view",type:"mat4"},{name:"projection",type:"mat4"}],[{name:"position",type:"vec3"},{name:"color",type:"vec3"}]),d=t("glslify/adapter.js")("\nattribute vec3 position;\nattribute vec3 color;\nattribute float pointSize;\nuniform mat4 model;\nuniform mat4 view;\nuniform mat4 projection;\nvarying vec3 f_color;\nvoid main() {\n gl_Position = projection * view * model * vec4(position, 1.0);\n f_color = color;\n gl_PointSize = pointSize;\n}","\nprecision highp float;\nvarying vec3 f_color;\nvoid main() {\n gl_FragColor = vec4(f_color, 1.0);\n}",[{name:"model",type:"mat4"},{name:"view",type:"mat4"},{name:"projection",type:"mat4"}],[{name:"position",type:"vec3"},{name:"color",type:"vec3"},{name:"pointSize",type:"float"}]),v=l.identity(l.create());e.prototype.update=function(t){t=t||{},this.gl;var r=t.cells,e=t.positions,n=[],i=[],a=[],o=[],s=[],u=[],c=[],l=[],h=t.vertexNormals,p=t.cellNormals;t.useCellNormals&&!p&&(p=f.facetNormals(r,e)),p||h||(h=f.vertexNormals(r,e));var d=t.vertexColors,v=t.cellColors,g=t.meshColor||[.7,.5,.2];if(3!==g.length)throw Error("bad mesh color");for(var m=t.pointSizes,y=t.pointSize||1,b=0,_=0,w=0,E=0;r.length>E;++E){var A=r[E],x=r[E].length;switch(x){case 1:++w,u.push.apply(u,e[A[0]]),d?c.push.apply(c,d[A[0]]):v?c.push.apply(c,v[E]):c.push.apply(c,g),m?l.push(m[A[0]]):l.push(y);break;case 2:++_;for(var T=0;2>T;++T){var M=A[T];o.push.apply(o,e[M]),d?s.push.apply(s,d[M]):v?s.push.apply(s,v[E]):s.push.apply(s,g)}break;case 3:++b;for(var T=0;3>T;++T){var M=A[T];n.push.apply(n,e[M]),d?i.push.apply(i,d[M]):v?i.push.apply(i,v[E]):i.push.apply(i,g),h?a.push.apply(a,h[M]):a.push.apply(a,p[E])}break;default:}}this.pointCount=w,this.edgeCount=_,this.triangleCount=b,this.pointPositions.update(u),this.pointColors.update(c),this.pointSizes.update(l),this.edgePositions.update(o),this.edgeColors.update(s),this.trianglePositions.update(n),this.triangleColors.update(i),this.triangleNormals.update(a)},e.prototype.draw=function(t){t=t||{};var r=this.gl,e=t.model||v,n=t.view||v,i=t.projection||v;if(this.triangleCount>0){var a=r.__SIMPLICIAL_MESH_SHADER;a.bind(),a.uniforms.model=e,a.uniforms.view=n,a.uniforms.projection=i;var o=l.invert(l.create(),n);a.uniforms.lightPosition=t.lightPosition||[0,100,0],a.uniforms.ambient=t.ambient||[.3,.3,.3],a.uniforms.diffuse=t.diffuse||[.5,.5,.5],a.uniforms.specular=t.specular||[1,1,1],a.uniforms.specularExponent=t.specularExponent||10,a.uniforms.eyePosition=[o[12],o[13],o[14]];var s=l.create();a.uniforms.modelInverseTranspose=l.transpose(s,l.invert(s,e)),this.triangleVAO.bind(),r.drawArrays(r.TRIANGLES,0,3*this.triangleCount),this.triangleVAO.unbind()}if(this.edgeCount>0){var a=r.__SIMPLICIAL_WIRE_SHADER;a.bind(),a.uniforms.model=e,a.uniforms.view=n,a.uniforms.projection=i,this.edgeVAO.bind(),r.drawArrays(r.LINES,0,2*this.edgeCount),this.edgeVAO.unbind()}if(this.pointCount>0){var a=r.__SIMPLICIAL_POINT_SHADER;a.bind(),a.uniforms.model=e,a.uniforms.view=n,a.uniforms.projection=i,this.pointVAO.bind(),r.drawArrays(r.POINTS,0,this.pointCount),this.pointVAO.unbind()}},e.prototype.dispose=function(){this.triangleVAO.dispose(),this.edgeVAO.dispose(),this.pointVAO.dispose(),this.trianglePositions.dispose(),this.triangleColors.dispose(),this.triangleNormals.dispose(),this.edgePositions.dispose(),this.edgeColors.dispose(),this.pointPositions.dispose(),this.pointColors.dispose(),this.pointSizes.dispose()},r.exports=o},{"gl-buffer":6,"gl-matrix":17,"gl-vao":22,glslify:24,"glslify/adapter.js":23,normals:31}],"gl-simplicial-complex":[function(t,r){r.exports=t("b8yIKS")},{}],6:[function(t,r){"use strict";function e(t,r,e,n,i){this.gl=t,this.type=r,this.handle=e,this.length=n,this.usage=i}function n(t,r,e,n,i,a){if(0>=a&&i.length>e)return t.bufferData(r,i,n),i.length;if(i.length+a>e)throw Error("gl-buffer: If resizing buffer, offset must be 0");return t.bufferSubData(r,a,i),e}function i(t,r){for(var e=o.malloc(t.length,r),n=t.length,i=0;n>i;++i)e[i]=t[i];return e}function a(t,r,n,i){void 0===n&&(n=r,r=t.ARRAY_BUFFER),i||(i=t.DYNAMIC_DRAW);var a=0,c=t.createBuffer();if(t.bindBuffer(r,c),"number"==typeof n)t.bufferData(r,n,i),a=n;else if(n instanceof Array)r===t.ELEMENT_ARRAY_BUFFER?t.bufferData(r,new Uint16Array(n),i):t.bufferData(r,new Float32Array(n),i),a=n.length;else if(n.length)t.bufferData(r,n,i),a=n.length;else{if(!n.shape)throw Error("gl-buffer: Invalid format for buffer data");var f=n.dtype;if(("float64"===f||"array"===f||"generic"===f)&&(f="float32"),r===t.ELEMENT_ARRAY_BUFFER&&(f="uint16"),1!==n.shape.length)throw Error("gl-buffer: Array shape must be 1D");var a=n.shape[0];if(f===n.type&&1===n.stride[0])t.bufferData(r,n.data.subarray(n.offset,n.offset+a),i);else{var l=o.malloc(n.shape[0],f),h=u(l);s.assign(h,n),t.bufferData(r,l,i),o.free(l)}}if(r!==t.ARRAY_BUFFER&&r!==t.ELEMENT_ARRAY_BUFFER)throw Error("gl-buffer: Invalid type for webgl buffer");if(i!==t.DYNAMIC_DRAW&&i!==t.STATIC_DRAW&&i!==t.STREAM_DRAW)throw Error("gl-buffer: Invalid usage for buffer");return new e(t,r,c,a,i)}var o=t("typedarray-pool"),s=t("ndarray-ops"),u=t("ndarray");e.prototype.bind=function(){this.gl.bindBuffer(this.type,this.handle)},e.prototype.dispose=function(){this.gl.deleteBuffer(this.handle)},e.prototype.update=function(t,r){if(r||(r=0),this.bind(),"number"==typeof t){if(r>0)throw Error("gl-buffer: Cannot specify offset when resizing buffer");this.gl.bufferData(this.type,t,this.usage),this.length=t}else if(t.shape){var e=t.dtype;if(("float64"===e||"array"===e||"generic"===e)&&(e="float32"),this.type===this.gl.ELEMENT_ARRAY_BUFFER&&(e="uint16"),1!==t.shape.length)throw Error("gl-buffer: Array length must be 1");if(e===t.dtype&&1===t.stride[0])this.length=0===t.offset&&t.data.length===t.shape[0]?n(this.gl,this.type,this.length,this.usage,t.data,r):n(this.gl,this.type,this.length,this.usage,t.data.subarray(t.offset,t.shape[0]),r);else{var a=o.malloc(t.shape[0],e),c=u(a);s.assign(c,t),this.length=n(this.gl,this.type,this.length,this.usage,a,r),o.free(a)}}else if(Array.isArray(t))if(this.type===this.gl.ELEMENT_ARRAY_BUFFER){var f=i(t,"uint16");this.length=n(this.gl,this.type,this.length,this.usage,f.subarray(0,t.length),r),o.freeUint16(f)}else{var f=i(t,"float32");this.length=n(this.gl,this.type,this.length,this.usage,f.subarray(0,t.length),r),o.freeFloat32(f)}else this.length=n(this.gl,this.type,this.length,this.usage,t,r)},e.prototype.draw=function(t,r,e){e=e||0;var n=this.gl;if(this.type===n.ARRAY_BUFFER)n.drawArrays(t,e,r);else{if(this.type!==n.ELEMENT_ARRAY_BUFFER)throw Error("Invalid type for WebGL buffer");this.bind(),n.drawElements(t,r,n.UNSIGNED_SHORT,e)}},r.exports=a},{ndarray:12,"ndarray-ops":7,"typedarray-pool":16}],7:[function(t,r,e){"use strict";function n(t){if(!t)return s;for(var r=0;t.args.length>r;++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 i(t){return o({args:t.args,pre:n(t.pre),body:n(t.body),post:n(t.proc),funcName:t.funcName})}function a(t){for(var r=[],e=0;t.args.length>e;++e)r.push("a"+e);var n=Function("P",["return function ",t.funcName,"_ndarrayops(",r.join(","),") {P(",r.join(","),");return a0}"].join(""));return n(i(t))}var o=t("cwise-compiler"),s={body:"",args:[],thisVars:[],localVars:[]},u={add:"+",sub:"-",mul:"*",div:"/",mod:"%",band:"&",bor:"|",bxor:"^",lshift:"<<",rshift:">>",rrshift:">>>"};(function(){for(var t in u){var r=u[t];e[t]=a({args:["array","array","array"],body:{args:["a","b","c"],body:"a=b"+r+"c"},funcName:t}),e[t+"eq"]=a({args:["array","array"],body:{args:["a","b"],body:"a"+r+"=b"},rvalue:!0,funcName:t+"eq"}),e[t+"s"]=a({args:["array","array","scalar"],body:{args:["a","b","s"],body:"a=b"+r+"s"},funcName:t+"s"}),e[t+"seq"]=a({args:["array","scalar"],body:{args:["a","s"],body:"a"+r+"=s"},rvalue:!0,funcName:t+"seq"})}})();var c={not:"!",bnot:"~",neg:"-",recip:"1.0/"};(function(){for(var t in c){var r=c[t];e[t]=a({args:["array","array"],body:{args:["a","b"],body:"a="+r+"b"},funcName:t}),e[t+"eq"]=a({args:["array"],body:{args:["a"],body:"a="+r+"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 r=f[t];e[t]=a({args:["array","array","array"],body:{args:["a","b","c"],body:"a=b"+r+"c"},funcName:t}),e[t+"s"]=a({args:["array","array","scalar"],body:{args:["a","b","s"],body:"a=b"+r+"s"},funcName:t+"s"}),e[t+"eq"]=a({args:["array","array"],body:{args:["a","b"],body:"a=a"+r+"b"},rvalue:!0,count:2,funcName:t+"eq"}),e[t+"seq"]=a({args:["array","scalar"],body:{args:["a","s"],body:"a=a"+r+"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;l.length>t;++t){var r=l[t];e[r]=a({args:["array","array"],pre:{args:[],body:"this_f=Math."+r,thisVars:["this_f"]},body:{args:["a","b"],body:"a=this_f(b)",thisVars:["this_f"]},funcName:r}),e[r+"eq"]=a({args:["array"],pre:{args:[],body:"this_f=Math."+r,thisVars:["this_f"]},body:{args:["a"],body:"a=this_f(a)",thisVars:["this_f"]},rvalue:!0,count:2,funcName:r+"eq"})}})();var h=["max","min","atan2","pow"];(function(){for(var t=0;h.length>t;++t){var r=h[t];e[r]=a({args:["array","array","array"],pre:{args:[],body:"this_f=Math."+r,thisVars:["this_f"]},body:{args:["a","b","c"],body:"a=this_f(b,c)",thisVars:["this_f"]},funcName:r}),e[r+"s"]=a({args:["array","array","scalar"],pre:{args:[],body:"this_f=Math."+r,thisVars:["this_f"]},body:{args:["a","b","c"],body:"a=this_f(b,c)",thisVars:["this_f"]},funcName:r+"s"}),e[r+"eq"]=a({args:["array","array"],pre:{args:[],body:"this_f=Math."+r,thisVars:["this_f"]},body:{args:["a","b"],body:"a=this_f(a,b)",thisVars:["this_f"]},rvalue:!0,count:2,funcName:r+"eq"}),e[r+"seq"]=a({args:["array","scalar"],pre:{args:[],body:"this_f=Math."+r,thisVars:["this_f"]},body:{args:["a","b"],body:"a=this_f(a,b)",thisVars:["this_f"]},rvalue:!0,count:2,funcName:r+"seq"})}})();var p=["atan2","pow"];(function(){for(var t=0;p.length>t;++t){var r=p[t];e[r+"op"]=a({args:["array","array","array"],pre:{args:[],body:"this_f=Math."+r,thisVars:["this_f"]},body:{args:["a","b","c"],body:"a=this_f(c,b)",thisVars:["this_f"]},funcName:r+"op"}),e[r+"ops"]=a({args:["array","array","scalar"],pre:{args:[],body:"this_f=Math."+r,thisVars:["this_f"]},body:{args:["a","b","c"],body:"a=this_f(c,b)",thisVars:["this_f"]},funcName:r+"ops"}),e[r+"opeq"]=a({args:["array","array"],pre:{args:[],body:"this_f=Math."+r,thisVars:["this_f"]},body:{args:["a","b"],body:"a=this_f(b,a)",thisVars:["this_f"]},rvalue:!0,count:2,funcName:r+"opeq"}),e[r+"opseq"]=a({args:["array","scalar"],pre:{args:[],body:"this_f=Math."+r,thisVars:["this_f"]},body:{args:["a","b"],body:"a=this_f(b,a)",thisVars:["this_f"]},rvalue:!0,count:2,funcName:r+"opseq"})}})(),e.any=o({args:["array"],pre:s,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"}),e.all=o({args:["array"],pre:s,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"}),e.sum=o({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"}),e.prod=o({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"}),e.norm2squared=o({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"}),e.norm2=o({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"}),e.norminf=o({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"}),e.norm1=o({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"}),e.sup=o({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:[]}}),e.inf=o({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:[]}}),e.argmin=o({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:[]}}),e.argmax=o({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:[]}}),e.random=a({args:["array"],pre:{args:[],body:"this_f=Math.random",thisVars:["this_f"]},body:{args:["a"],body:"a=this_f()",thisVars:["this_f"]},funcName:"random"}),e.assign=a({args:["array","array"],body:{args:["a","b"],body:"a=b"},funcName:"assign"}),e.assigns=a({args:["array","scalar"],body:{args:["a","b"],body:"a=b"},funcName:"assigns"}),e.equals=o({args:["array","array"],pre:s,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"})},{"cwise-compiler":8}],8:[function(t,r){"use strict";function e(){this.argTypes=[],this.shimArgs=[],this.arrayArgs=[],this.scalarArgs=[],this.indexArgs=[],this.shapeArgs=[],this.funcName="",this.pre=null,this.body=null,this.post=null,this.debug=!1}function n(t){var r=new e;r.pre=t.pre,r.body=t.body,r.post=t.post;var n=t.args.slice(0);r.argTypes=n;for(var a=0;n.length>a;++a)switch(n[a]){case"array":if(r.arrayArgs.push(a),r.shimArgs.push("array"+a),r.pre.args.length>a&&r.pre.args[a].count>0)throw Error("cwise: pre() block may not reference array args");if(r.post.args.length>a&&r.post.args[a].count>0)throw Error("cwise: post() block may not reference array args");break;case"scalar":r.scalarArgs.push(a),r.shimArgs.push("scalar"+a);break;case"index":if(r.indexArgs.push(a),r.pre.args.length>a&&r.pre.args[a].count>0)throw Error("cwise: pre() block may not reference array index");if(r.body.args.length>a&&r.body.args[a].lvalue)throw Error("cwise: body() block may not write to array index");if(r.post.args.length>a&&r.post.args[a].count>0)throw Error("cwise: post() block may not reference array index");break;case"shape":if(r.shapeArgs.push(a),r.pre.args.length>a&&r.pre.args[a].lvalue)throw Error("cwise: pre() block may not write to array shape");if(r.body.args.length>a&&r.body.args[a].lvalue)throw Error("cwise: body() block may not write to array shape");if(r.post.args.length>a&&r.post.args[a].lvalue)throw Error("cwise: post() block may not write to array shape");break;default:throw Error("cwise: Unknown argument type "+n[a])}if(0>=r.arrayArgs.length)throw Error("cwise: No array arguments specified");if(r.pre.args.length>n.length)throw Error("cwise: Too many arguments in pre() block");if(r.body.args.length>n.length)throw Error("cwise: Too many arguments in body() block");if(r.post.args.length>n.length)throw 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,i(r)}var i=t("./lib/thunk.js");r.exports=n},{"./lib/thunk.js":10}],9:[function(t,r){"use strict";function e(t,r,e){var n,i,a=t.length,o=r.arrayArgs.length,s=r.indexArgs.length>0,u=[],c=[],f=0,l=0;for(n=0;a>n;++n)c.push(["i",n,"=0"].join(""));for(i=0;o>i;++i)for(n=0;a>n;++n)l=f,f=t[n],0===n?c.push(["d",i,"s",n,"=t",i,"[",f,"]"].join("")):c.push(["d",i,"s",n,"=(t",i,"[",f,"]-s",l,"*t",i,"[",l,"])"].join(""));for(u.push("var "+c.join(",")),n=a-1;n>=0;--n)f=t[n],u.push(["for(i",n,"=0;i",n,"<s",f,";++i",n,"){"].join(""));for(u.push(e),n=0;a>n;++n){for(l=f,f=t[n],i=0;o>i;++i)u.push(["p",i,"+=d",i,"s",n].join(""));s&&(n>0&&u.push(["index[",l,"]-=s",l].join("")),u.push(["++index[",f,"]"].join(""))),u.push("}")}return u.join("\n")}function n(t,r,n,i){for(var a=r.length,o=n.arrayArgs.length,s=n.blockSize,u=n.indexArgs.length>0,c=[],f=0;o>f;++f)c.push(["var offset",f,"=p",f].join(""));for(var f=t;a>f;++f)c.push(["for(var j"+f+"=SS[",r[f],"]|0;j",f,">0;){"].join("")),c.push(["if(j",f,"<",s,"){"].join("")),c.push(["s",r[f],"=j",f].join("")),c.push(["j",f,"=0"].join("")),c.push(["}else{s",r[f],"=",s].join("")),c.push(["j",f,"-=",s,"}"].join("")),u&&c.push(["index[",r[f],"]=j",f].join(""));for(var f=0;o>f;++f){for(var l=["offset"+f],h=t;a>h;++h)l.push(["j",h,"*t",f,"[",r[h],"]"].join(""));c.push(["p",f,"=(",l.join("+"),")"].join(""))}c.push(e(r,n,i));for(var f=t;a>f;++f)c.push("}");return c.join("\n")}function i(t){for(var r=0,e=t[0].length;e>r;){for(var n=1;t.length>n;++n)if(t[n][r]!==t[0][r])return r;++r}return r}function a(t,r,e){for(var n=t.body,i=[],a=[],o=0;t.args.length>o;++o){var s=t.args[o];if(!(0>=s.count)){var u=RegExp(s.name,"g");switch(r.argTypes[o]){case"array":var c=r.arrayArgs.indexOf(o);1===s.count?"generic"===e[c]?s.lvalue?(i.push(["var l",c,"=a",c,".get(p",c,")"].join("")),n=n.replace(u,"l"+c),a.push(["a",c,".set(p",c,",l",c,")"].join(""))):n=n.replace(u,["a",c,".get(p",c,")"].join("")):n=n.replace(u,["a",c,"[p",c,"]"].join("")):"generic"===e[c]?(i.push(["var l",c,"=a",c,".get(p",c,")"].join("")),n=n.replace(u,"l"+c),s.lvalue&&a.push(["a",c,".set(p",c,",l",c,")"].join(""))):(i.push(["var l",c,"=a",c,"[p",c,"]"].join("")),n=n.replace(u,"l"+c),s.lvalue&&a.push(["a",c,"[p",c,"]=l",c].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[i.join("\n"),n,a.join("\n")].join("\n").trim()}function o(t){for(var r=Array(t.length),e=!0,n=0;t.length>n;++n){var i=t[n],a=i.match(/\d+/);a=a?a[0]:"",r[n]=0===i.charAt(0)?"u"+i.charAt(1)+a:i.charAt(0)+a,n>0&&(e=e&&r[n]===r[n-1])}return e?r[0]:r.join("")}function s(t,r){for(var s=0|r[1].length,c=Array(t.arrayArgs.length),f=Array(t.arrayArgs.length),l=["SS"],h=["'use strict'"],p=[],d=0;s>d;++d)p.push(["s",d,"=SS[",d,"]"].join(""));for(var v=0;t.arrayArgs.length>v;++v)l.push("a"+v),l.push("t"+v),l.push("p"+v),f[v]=r[2*v],c[v]=r[2*v+1];for(var v=0;t.scalarArgs.length>v;++v)l.push("Y"+v);if(t.shapeArgs.length>0&&p.push("shape=SS.slice(0)"),t.indexArgs.length>0){for(var g=Array(s),v=0;s>v;++v)g[v]="0";p.push(["index=[",g.join(","),"]"].join(""))}var m=u([].concat(t.pre.thisVars).concat(t.body.thisVars).concat(t.post.thisVars));p=p.concat(m),h.push("var "+p.join(","));for(var v=0;t.arrayArgs.length>v;++v)h.push("p"+v+"|=0");t.pre.body.length>3&&h.push(a(t.pre,t,f));var y=a(t.body,t,f),b=i(c);s>b?h.push(n(b,c[0],t,y)):h.push(e(c[0],t,y)),t.post.body.length>3&&h.push(a(t.post,t,f)),t.debug&&console.log("Generated cwise routine for ",r,":\n\n",h.join("\n"));var _=[t.funcName||"unnamed","_cwise_loop_",c[0].join("s"),"m",b,o(f)].join(""),w=Function(["function ",_,"(",l.join(","),"){",h.join("\n"),"} return ",_].join(""));return w()}var u=t("uniq");r.exports=s},{uniq:11}],10:[function(t,r){"use strict";function e(t){var r=["'use strict'","var CACHED={}"],e=[],i=t.funcName+"_cwise_thunk";r.push(["return function ",i,"(",t.shimArgs.join(","),"){"].join(""));for(var a=[],o=[],s=[["array",t.arrayArgs[0],".shape"].join("")],u=0;t.arrayArgs.length>u;++u){var c=t.arrayArgs[u];e.push(["t",c,"=array",c,".dtype,","r",c,"=array",c,".order"].join("")),a.push("t"+c),a.push("r"+c),o.push("t"+c),o.push("r"+c+".join()"),s.push("array"+c+".data"),s.push("array"+c+".stride"),s.push("array"+c+".offset|0")}for(var u=0;t.scalarArgs.length>u;++u)s.push("scalar"+t.scalarArgs[u]);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([",a.join(","),"])}","return proc(",s.join(","),")}"].join("")),t.debug&&console.log("Generated thunk:",r.join("\n"));var f=Function("compile",r.join("\n"));return f(n.bind(void 0,t))}var n=t("./compile.js");r.exports=e},{"./compile.js":9}],11:[function(t,r){"use strict";function e(t,r){for(var e=1,n=t.length,i=t[0],a=t[0],o=1;n>o;++o)if(a=i,i=t[o],r(i,a)){if(o===e){e++;continue}t[e++]=i}return t.length=e,t}function n(t){for(var r=1,e=t.length,n=t[0],i=t[0],a=1;e>a;++a,i=n)if(i=n,n=t[a],n!==i){if(a===r){r++;
continue}t[r++]=n}return t.length=r,t}function i(t,r,i){return 0===t.length?[]:r?(i||t.sort(r),e(t,r)):(i||t.sort(),n(t))}r.exports=i},{}],12:[function(t,r){(function(e){"use strict";function n(t,r){return t[0]-r[0]}function i(){var t,r=this.stride,e=Array(r.length);for(t=0;e.length>t;++t)e[t]=[Math.abs(r[t]),t];e.sort(n);var i=Array(e.length);for(t=0;i.length>t;++t)i[t]=e[t][1];return i}function a(t,r){var e=["View",r,"d",t].join(""),n="generic"===t;if(0===r){var a=["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=proto.pick=function ",e,"_copy() {return new ",e,"(this.data,this.offset)};proto.get=function ",e,"_get(){return ",n?"this.data.get(this.offset)":"this.data[this.offset]","};proto.set=function ",e,"_set(v){return ",n?"this.data.get(this.offset)":"this.data[this.offset]","=v};return function construct_",e,"(a,b,c,d){return new ",e,"(a,d)}"].join(""),o=Function(a);return o()}var a=["'use strict'"],s=u(r),l=s.map(function(t){return"i"+t}),h="this.offset+"+s.map(function(t){return["this._stride",t,"*i",t].join("")}).join("+");a.push(["function ",e,"(a,",s.map(function(t){return"b"+t}).join(","),",",s.map(function(t){return"c"+t}).join(","),",d){this.data=a"].join(""));for(var p=0;r>p;++p)a.push(["this._shape",p,"=b",p,"|0"].join(""));for(var p=0;r>p;++p)a.push(["this._stride",p,"=c",p,"|0"].join(""));a.push("this.offset=d|0}"),a.push(["var proto=",e,".prototype"].join("")),a.push(["proto.dtype='",t,"'"].join("")),a.push("proto.dimension="+r);var d=["VStride",r,"d",t].join(""),v=["VShape",r,"d",t].join(""),g={stride:d,shape:v};for(var m in g){var y=g[m];a.push(["function ",y,"(v) {this._v=v} var aproto=",y,".prototype"].join("")),a.push(["aproto.length=",r].join(""));for(var b=[],p=0;r>p;++p)b.push(["this._v._",m,p].join(""));a.push(["aproto.toJSON=function ",y,"_toJSON(){return [",b.join(","),"]}"].join("")),a.push(["aproto.toString=function ",y,"_toString(){return [",b.join(","),"].join()}"].join(""));for(var p=0;r>p;++p)a.push(["Object.defineProperty(aproto,",p,",{get:function(){return this._v._",m,p,"},set:function(v){return this._v._",m,p,"=v|0},enumerable:true})"].join(""));for(var p=0;c.length>p;++p)c[p]in Array.prototype&&a.push(["aproto.",c[p],"=Array.prototype.",c[p]].join(""));a.push(["Object.defineProperty(proto,'",m,"',{get:function ",y,"_get(){return new ",y,"(this)},set: function ",y,"_set(v){"].join(""));for(var p=0;r>p;++p)a.push(["this._",m,p,"=v[",p,"]|0"].join(""));a.push("return v}})")}a.push(["Object.defineProperty(proto,'size',{get:function ",e,"_size(){return ",s.map(function(t){return["this._shape",t].join("")}).join("*"),"}})"].join("")),1===r?a.push("proto.order=[0]"):(a.push("Object.defineProperty(proto,'order',{get:"),4>r?(a.push(["function ",e,"_order(){"].join("")),2===r?a.push("return (Math.abs(this._stride0)>Math.abs(this._stride1))?[1,0]:[0,1]}})"):3===r&&a.push("var s0=Math.abs(this._stride0),s1=Math.abs(this._stride1),s2=Math.abs(this._stride2);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];}}})")):a.push("ORDER})")),a.push(["proto.set=function ",e,"_set(",l.join(","),",v){"].join("")),n?a.push(["return this.data.set(",h,",v)}"].join("")):a.push(["return this.data[",h,"]=v}"].join("")),a.push(["proto.get=function ",e,"_get(",l.join(","),"){"].join("")),n?a.push(["return this.data.get(",h,")}"].join("")):a.push(["return this.data[",h,"]}"].join("")),a.push(["proto.index=function ",e,"_index(",l.join(),"){return ",h,"}"].join("")),a.push(["proto.hi=function ",e,"_hi(",l.join(","),"){return new ",e,"(this.data,",s.map(function(t){return["(typeof i",t,"!=='number'||i",t,"<0)?this._shape",t,":i",t,"|0"].join("")}).join(","),",",s.map(function(t){return"this._stride"+t}).join(","),",this.offset)}"].join(""));var _=s.map(function(t){return"a"+t+"=this._shape"+t}),w=s.map(function(t){return"c"+t+"=this._stride"+t});a.push(["proto.lo=function ",e,"_lo(",l.join(","),"){var b=this.offset,d=0,",_.join(","),",",w.join(",")].join(""));for(var p=0;r>p;++p)a.push(["if(typeof i",p,"==='number'&&i",p,">=0){d=i",p,"|0;b+=c",p,"*d;a",p,"-=d}"].join(""));a.push(["return new ",e,"(this.data,",s.map(function(t){return"a"+t}).join(","),",",s.map(function(t){return"c"+t}).join(","),",b)}"].join("")),a.push(["proto.step=function ",e,"_step(",l.join(","),"){var ",s.map(function(t){return"a"+t+"=this._shape"+t}).join(","),",",s.map(function(t){return"b"+t+"=this._stride"+t}).join(","),",c=this.offset,d=0,ceil=Math.ceil"].join(""));for(var p=0;r>p;++p)a.push(["if(typeof i",p,"==='number'){d=i",p,"|0;if(d<0){c+=b",p,"*(a",p,"-1);a",p,"=ceil(-a",p,"/d)}else{a",p,"=ceil(a",p,"/d)}b",p,"*=d}"].join(""));a.push(["return new ",e,"(this.data,",s.map(function(t){return"a"+t}).join(","),",",s.map(function(t){return"b"+t}).join(","),",c)}"].join(""));for(var E=Array(r),A=Array(r),p=0;r>p;++p)E[p]=["a[i",p,"|0]"].join(""),A[p]=["b[i",p,"|0]"].join("");a.push(["proto.transpose=function ",e,"_transpose(",l,"){var a=this.shape,b=this.stride;return new ",e,"(this.data,",E.join(","),",",A.join(","),",this.offset)}"].join("")),a.push(["proto.pick=function ",e,"_pick(",l,"){var a=[],b=[],c=this.offset"].join(""));for(var p=0;r>p;++p)a.push(["if(typeof i",p,"==='number'&&i",p,">=0){c=(c+this._stride",p,"*i",p,")|0}else{a.push(this._shape",p,");b.push(this._stride",p,")}"].join(""));a.push("var ctor=CTOR_LIST[a.length];return ctor(this.data,a,b,c)}"),a.push(["return function construct_",e,"(data,shape,stride,offset){return new ",e,"(data,",s.map(function(t){return"shape["+t+"]"}).join(","),",",s.map(function(t){return"stride["+t+"]"}).join(","),",offset)}"].join(""));var o=Function("CTOR_LIST","ORDER",a.join("\n"));return o(f[t],i)}function o(t){return t instanceof Float64Array?"float64":t instanceof Float32Array?"float32":t instanceof Int32Array?"int32":t instanceof Uint32Array?"uint32":t instanceof Uint8Array?"uint8":t instanceof Uint16Array?"uint16":t instanceof Int16Array?"int16":t instanceof Int8Array?"int8":t instanceof Uint8ClampedArray?"uint8_clamped":e!==void 0&&t instanceof e?"buffer":t instanceof Array?"array":"generic"}function s(t,r,e,n){void 0===r&&(r=[t.length]);var i=r.length;if(void 0===e){e=Array(i);for(var s=i-1,u=1;s>=0;--s)e[s]=u,u*=r[s]}if(void 0===n){n=0;for(var s=0;i>s;++s)0>e[s]&&(n-=(r[s]-1)*e[s])}for(var c=o(t),l=f[c];i>=l.length;)l.push(a(c,l.length));var h=l[i];return h(t,r,e,n)}var u=t("iota-array"),c=["concat","join","slice","toString","indexOf","lastIndexOf","forEach","every","some","filter","map","reduce","reduceRight"],f={float32:[],float64:[],int8:[],int16:[],int32:[],uint8:[],uint16:[],uint32:[],array:[],uint8_clamped:[],buffer:[],generic:[]};r.exports=s}).call(this,t("buffer").Buffer)},{buffer:1,"iota-array":13}],13:[function(t,r){"use strict";function e(t){for(var r=Array(t),e=0;t>e;++e)r[e]=e;return r}r.exports=e},{}],14:[function(t,r,e){"use strict";"use restrict";function n(t){var r=32;return t&=-t,t&&r--,65535&t&&(r-=16),16711935&t&&(r-=8),252645135&t&&(r-=4),858993459&t&&(r-=2),1431655765&t&&(r-=1),r}var i=32;e.INT_BITS=i,e.INT_MAX=2147483647,e.INT_MIN=-1<<i-1,e.sign=function(t){return(t>0)-(0>t)},e.abs=function(t){var r=t>>i-1;return(t^r)-r},e.min=function(t,r){return r^(t^r)&-(r>t)},e.max=function(t,r){return t^(t^r)&-(r>t)},e.isPow2=function(t){return!(t&t-1||!t)},e.log2=function(t){var r,e;return r=(t>65535)<<4,t>>>=r,e=(t>255)<<3,t>>>=e,r|=e,e=(t>15)<<2,t>>>=e,r|=e,e=(t>3)<<1,t>>>=e,r|=e,r|t>>1},e.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},e.popCount=function(t){return t-=1431655765&t>>>1,t=(858993459&t)+(858993459&t>>>2),16843009*(252645135&t+(t>>>4))>>>24},e.countTrailingZeros=n,e.nextPow2=function(t){return t+=0===t,--t,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t+1},e.prevPow2=function(t){return t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t-(t>>>1)},e.parity=function(t){return t^=t>>>16,t^=t>>>8,t^=t>>>4,t&=15,1&27030>>>t};var a=Array(256);(function(t){for(var r=0;256>r;++r){var e=r,n=r,i=7;for(e>>>=1;e;e>>>=1)n<<=1,n|=1&e,--i;t[r]=255&n<<i}})(a),e.reverse=function(t){return a[255&t]<<24|a[255&t>>>8]<<16|a[255&t>>>16]<<8|a[255&t>>>24]},e.interleave2=function(t,r){return t&=65535,t=16711935&(t|t<<8),t=252645135&(t|t<<4),t=858993459&(t|t<<2),t=1431655765&(t|t<<1),r&=65535,r=16711935&(r|r<<8),r=252645135&(r|r<<4),r=858993459&(r|r<<2),r=1431655765&(r|r<<1),t|r<<1},e.deinterleave2=function(t,r){return t=1431655765&t>>>r,t=858993459&(t|t>>>1),t=252645135&(t|t>>>2),t=16711935&(t|t>>>4),t=65535&(t|t>>>16),t<<16>>16},e.interleave3=function(t,r,e){return t&=1023,t=4278190335&(t|t<<16),t=251719695&(t|t<<8),t=3272356035&(t|t<<4),t=1227133513&(t|t<<2),r&=1023,r=4278190335&(r|r<<16),r=251719695&(r|r<<8),r=3272356035&(r|r<<4),r=1227133513&(r|r<<2),t|=r<<1,e&=1023,e=4278190335&(e|e<<16),e=251719695&(e|e<<8),e=3272356035&(e|e<<4),e=1227133513&(e|e<<2),t|e<<2},e.deinterleave3=function(t,r){return t=1227133513&t>>>r,t=3272356035&(t|t>>>2),t=251719695&(t|t>>>4),t=4278190335&(t|t>>>8),t=1023&(t|t>>>16),t<<22>>22},e.nextCombination=function(t){var r=t|t-1;return r+1|(~r&-~r)-1>>>n(t)+1}},{}],15:[function(t,r){"use strict";function e(t,r,n){var i=0|t[n];if(0>=i)return[];var a,o=Array(i);if(n===t.length-1)for(a=0;i>a;++a)o[a]=r;else for(a=0;i>a;++a)o[a]=e(t,r,n+1);return o}function n(t,r){var e,n;for(e=Array(t),n=0;t>n;++n)e[n]=r;return e}function i(t,r){switch(r===void 0&&(r=0),typeof t){case"number":if(t>0)return n(0|t,r);break;case"object":if("number"==typeof t.length)return e(t,r,0)}return[]}r.exports=i},{}],16:[function(t,r,e){(function(r){"use strict";var n=t("bit-twiddle"),i=t("dup");r.__TYPEDARRAY_POOL||(r.__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])});var a=r.__TYPEDARRAY_POOL,o=a.UINT8,s=a.UINT16,u=a.UINT32,c=a.INT8,f=a.INT16,l=a.INT32,h=a.FLOAT,p=a.DOUBLE,d=a.DATA;e.free=function(t){if(t instanceof ArrayBuffer){var r=0|t.byteLength,e=n.log2(r);d[e].push(t)}else{var r=0|t.length,e=n.log2(r);t instanceof Uint8Array?o[e].push(t):t instanceof Uint16Array?s[e].push(t):t instanceof Uint32Array?u[e].push(t):t instanceof Int8Array?c[e].push(t):t instanceof Int16Array?f[e].push(t):t instanceof Int32Array?l[e].push(t):t instanceof Float32Array?h[e].push(t):t instanceof Float64Array&&p[e].push(t)}},e.freeUint8=function(t){o[n.log2(t.length)].push(t)},e.freeUint16=function(t){s[n.log2(t.length)].push(t)},e.freeUint32=function(t){u[n.log2(t.length)].push(t)},e.freeInt8=function(t){c[n.log2(t.length)].push(t)},e.freeInt16=function(t){f[n.log2(t.length)].push(t)},e.freeInt32=function(t){l[n.log2(t.length)].push(t)},e.freeFloat32=e.freeFloat=function(t){h[n.log2(t.length)].push(t)},e.freeFloat64=e.freeDouble=function(t){p[n.log2(t.length)].push(t)},e.freeArrayBuffer=function(t){d[n.log2(t.length)].push(t)},e.malloc=function(t,r){t=n.nextPow2(t);var e=n.log2(t);if(void 0===r){var i=d[e];if(i.length>0){var a=i[i.length-1];return i.pop(),a}return new ArrayBuffer(t)}switch(r){case"uint8":var v=o[e];return v.length>0?v.pop():new Uint8Array(t);case"uint16":var g=s[e];return g.length>0?g.pop():new Uint16Array(t);case"uint32":var m=u[e];return m.length>0?m.pop():new Uint32Array(t);case"int8":var y=c[e];return y.length>0?y.pop():new Int8Array(t);case"int16":var b=f[e];return b.length>0?b.pop():new Int16Array(t);case"int32":var _=l[e];return _.length>0?_.pop():new Int32Array(t);case"float":case"float32":var w=h[e];return w.length>0?w.pop():new Float32Array(t);case"double":case"float64":var E=p[e];return E.length>0?E.pop():new Float64Array(t);default:return null}return null},e.mallocUint8=function(t){t=n.nextPow2(t);var r=n.log2(t),e=o[r];return e.length>0?e.pop():new Uint8Array(t)},e.mallocUint16=function(t){t=n.nextPow2(t);var r=n.log2(t),e=s[r];return e.length>0?e.pop():new Uint16Array(t)},e.mallocUint32=function(t){t=n.nextPow2(t);var r=n.log2(t),e=u[r];return e.length>0?e.pop():new Uint32Array(t)},e.mallocInt8=function(t){t=n.nextPow2(t);var r=n.log2(t),e=c[r];return e.length>0?e.pop():new Int8Array(t)},e.mallocInt16=function(t){t=n.nextPow2(t);var r=n.log2(t),e=f[r];return e.length>0?e.pop():new Int16Array(t)},e.mallocInt32=function(t){t=n.nextPow2(t);var r=n.log2(t),e=l[r];return e.length>0?e.pop():new Int32Array(t)},e.mallocFloat32=e.mallocFloat=function(t){t=n.nextPow2(t);var r=n.log2(t),e=h[r];return e.length>0?e.pop():new Float32Array(t)},e.mallocFloat64=e.mallocDouble=function(t){t=n.nextPow2(t);var r=n.log2(t),e=p[r];return e.length>0?e.pop():new Float64Array(t)},e.mallocArrayBuffer=function(t){t=n.nextPow2(t);var r=n.log2(t),e=d[r];return e.length>0?e.pop():new ArrayBuffer(t)},e.clearCache=function(){for(var t=0;32>t;++t)o[t].length=0,s[t].length=0,u[t].length=0,c[t].length=0,f[t].length=0,l[t].length=0,h[t].length=0,p[t].length=0,d[t].length=0}}).call(this,"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"bit-twiddle":14,dup:15}],17:[function(t,r,e){(function(){"use strict";var t={};e===void 0?"function"==typeof define&&"object"==typeof define.amd&&define.amd?(t.exports={},define(function(){return t.exports})):t.exports=window:t.exports=e,function(t){if(!r)var r=1e-6;if(!e)var e="undefined"!=typeof Float32Array?Float32Array:Array;var n={};n.setMatrixArrayType=function(t){e=t},t!==void 0&&(t.glMatrix=n);var i={};i.create=function(){var t=new e(2);return t[0]=0,t[1]=0,t},i.clone=function(t){var r=new e(2);return r[0]=t[0],r[1]=t[1],r},i.fromValues=function(t,r){var n=new e(2);return n[0]=t,n[1]=r,n},i.copy=function(t,r){return t[0]=r[0],t[1]=r[1],t},i.set=function(t,r,e){return t[0]=r,t[1]=e,t},i.add=function(t,r,e){return t[0]=r[0]+e[0],t[1]=r[1]+e[1],t},i.subtract=function(t,r,e){return t[0]=r[0]-e[0],t[1]=r[1]-e[1],t},i.sub=i.subtract,i.multiply=function(t,r,e){return t[0]=r[0]*e[0],t[1]=r[1]*e[1],t},i.mul=i.multiply,i.divide=function(t,r,e){return t[0]=r[0]/e[0],t[1]=r[1]/e[1],t},i.div=i.divide,i.min=function(t,r,e){return t[0]=Math.min(r[0],e[0]),t[1]=Math.min(r[1],e[1]),t},i.max=function(t,r,e){return t[0]=Math.max(r[0],e[0]),t[1]=Math.max(r[1],e[1]),t},i.scale=function(t,r,e){return t[0]=r[0]*e,t[1]=r[1]*e,t},i.distance=function(t,r){var e=r[0]-t[0],n=r[1]-t[1];return Math.sqrt(e*e+n*n)},i.dist=i.distance,i.squaredDistance=function(t,r){var e=r[0]-t[0],n=r[1]-t[1];return e*e+n*n},i.sqrDist=i.squaredDistance,i.length=function(t){var r=t[0],e=t[1];return Math.sqrt(r*r+e*e)},i.len=i.length,i.squaredLength=function(t){var r=t[0],e=t[1];return r*r+e*e},i.sqrLen=i.squaredLength,i.negate=function(t,r){return t[0]=-r[0],t[1]=-r[1],t},i.normalize=function(t,r){var e=r[0],n=r[1],i=e*e+n*n;return i>0&&(i=1/Math.sqrt(i),t[0]=r[0]*i,t[1]=r[1]*i),t},i.dot=function(t,r){return t[0]*r[0]+t[1]*r[1]},i.cross=function(t,r,e){var n=r[0]*e[1]-r[1]*e[0];return t[0]=t[1]=0,t[2]=n,t},i.lerp=function(t,r,e,n){var i=r[0],a=r[1];return t[0]=i+n*(e[0]-i),t[1]=a+n*(e[1]-a),t},i.transformMat2=function(t,r,e){var n=r[0],i=r[1];return t[0]=e[0]*n+e[2]*i,t[1]=e[1]*n+e[3]*i,t},i.transformMat2d=function(t,r,e){var n=r[0],i=r[1];return t[0]=e[0]*n+e[2]*i+e[4],t[1]=e[1]*n+e[3]*i+e[5],t},i.transformMat3=function(t,r,e){var n=r[0],i=r[1];return t[0]=e[0]*n+e[3]*i+e[6],t[1]=e[1]*n+e[4]*i+e[7],t},i.transformMat4=function(t,r,e){var n=r[0],i=r[1];return t[0]=e[0]*n+e[4]*i+e[12],t[1]=e[1]*n+e[5]*i+e[13],t},i.forEach=function(){var t=i.create();return function(r,e,n,i,a,o){var s,u;for(e||(e=2),n||(n=0),u=i?Math.min(i*e+n,r.length):r.length,s=n;u>s;s+=e)t[0]=r[s],t[1]=r[s+1],a(t,t,o),r[s]=t[0],r[s+1]=t[1];return r}}(),i.str=function(t){return"vec2("+t[0]+", "+t[1]+")"},t!==void 0&&(t.vec2=i);var a={};a.create=function(){var t=new e(3);return t[0]=0,t[1]=0,t[2]=0,t},a.clone=function(t){var r=new e(3);return r[0]=t[0],r[1]=t[1],r[2]=t[2],r},a.fromValues=function(t,r,n){var i=new e(3);return i[0]=t,i[1]=r,i[2]=n,i},a.copy=function(t,r){return t[0]=r[0],t[1]=r[1],t[2]=r[2],t},a.set=function(t,r,e,n){return t[0]=r,t[1]=e,t[2]=n,t},a.add=function(t,r,e){return t[0]=r[0]+e[0],t[1]=r[1]+e[1],t[2]=r[2]+e[2],t},a.subtract=function(t,r,e){return t[0]=r[0]-e[0],t[1]=r[1]-e[1],t[2]=r[2]-e[2],t},a.sub=a.subtract,a.multiply=function(t,r,e){return t[0]=r[0]*e[0],t[1]=r[1]*e[1],t[2]=r[2]*e[2],t},a.mul=a.multiply,a.divide=function(t,r,e){return t[0]=r[0]/e[0],t[1]=r[1]/e[1],t[2]=r[2]/e[2],t},a.div=a.divide,a.min=function(t,r,e){return t[0]=Math.min(r[0],e[0]),t[1]=Math.min(r[1],e[1]),t[2]=Math.min(r[2],e[2]),t},a.max=function(t,r,e){return t[0]=Math.max(r[0],e[0]),t[1]=Math.max(r[1],e[1]),t[2]=Math.max(r[2],e[2]),t},a.scale=function(t,r,e){return t[0]=r[0]*e,t[1]=r[1]*e,t[2]=r[2]*e,t},a.distance=function(t,r){var e=r[0]-t[0],n=r[1]-t[1],i=r[2]-t[2];return Math.sqrt(e*e+n*n+i*i)},a.dist=a.distance,a.squaredDistance=function(t,r){var e=r[0]-t[0],n=r[1]-t[1],i=r[2]-t[2];return e*e+n*n+i*i},a.sqrDist=a.squaredDistance,a.length=function(t){var r=t[0],e=t[1],n=t[2];return Math.sqrt(r*r+e*e+n*n)},a.len=a.length,a.squaredLength=function(t){var r=t[0],e=t[1],n=t[2];return r*r+e*e+n*n},a.sqrLen=a.squaredLength,a.negate=function(t,r){return t[0]=-r[0],t[1]=-r[1],t[2]=-r[2],t},a.normalize=function(t,r){var e=r[0],n=r[1],i=r[2],a=e*e+n*n+i*i;return a>0&&(a=1/Math.sqrt(a),t[0]=r[0]*a,t[1]=r[1]*a,t[2]=r[2]*a),t},a.dot=function(t,r){return t[0]*r[0]+t[1]*r[1]+t[2]*r[2]},a.cross=function(t,r,e){var n=r[0],i=r[1],a=r[2],o=e[0],s=e[1],u=e[2];return t[0]=i*u-a*s,t[1]=a*o-n*u,t[2]=n*s-i*o,t},a.lerp=function(t,r,e,n){var i=r[0],a=r[1],o=r[2];return t[0]=i+n*(e[0]-i),t[1]=a+n*(e[1]-a),t[2]=o+n*(e[2]-o),t},a.transformMat4=function(t,r,e){var n=r[0],i=r[1],a=r[2];return t[0]=e[0]*n+e[4]*i+e[8]*a+e[12],t[1]=e[1]*n+e[5]*i+e[9]*a+e[13],t[2]=e[2]*n+e[6]*i+e[10]*a+e[14],t},a.transformQuat=function(t,r,e){var n=r[0],i=r[1],a=r[2],o=e[0],s=e[1],u=e[2],c=e[3],f=c*n+s*a-u*i,l=c*i+u*n-o*a,h=c*a+o*i-s*n,p=-o*n-s*i-u*a;return t[0]=f*c+p*-o+l*-u-h*-s,t[1]=l*c+p*-s+h*-o-f*-u,t[2]=h*c+p*-u+f*-s-l*-o,t},a.forEach=function(){var t=a.create();return function(r,e,n,i,a,o){var s,u;for(e||(e=3),n||(n=0),u=i?Math.min(i*e+n,r.length):r.length,s=n;u>s;s+=e)t[0]=r[s],t[1]=r[s+1],t[2]=r[s+2],a(t,t,o),r[s]=t[0],r[s+1]=t[1],r[s+2]=t[2];return r}}(),a.str=function(t){return"vec3("+t[0]+", "+t[1]+", "+t[2]+")"},t!==void 0&&(t.vec3=a);var o={};o.create=function(){var t=new e(4);return t[0]=0,t[1]=0,t[2]=0,t[3]=0,t},o.clone=function(t){var r=new e(4);return r[0]=t[0],r[1]=t[1],r[2]=t[2],r[3]=t[3],r},o.fromValues=function(t,r,n,i){var a=new e(4);return a[0]=t,a[1]=r,a[2]=n,a[3]=i,a},o.copy=function(t,r){return t[0]=r[0],t[1]=r[1],t[2]=r[2],t[3]=r[3],t},o.set=function(t,r,e,n,i){return t[0]=r,t[1]=e,t[2]=n,t[3]=i,t},o.add=function(t,r,e){return t[0]=r[0]+e[0],t[1]=r[1]+e[1],t[2]=r[2]+e[2],t[3]=r[3]+e[3],t},o.subtract=function(t,r,e){return t[0]=r[0]-e[0],t[1]=r[1]-e[1],t[2]=r[2]-e[2],t[3]=r[3]-e[3],t},o.sub=o.subtract,o.multiply=function(t,r,e){return t[0]=r[0]*e[0],t[1]=r[1]*e[1],t[2]=r[2]*e[2],t[3]=r[3]*e[3],t},o.mul=o.multiply,o.divide=function(t,r,e){return t[0]=r[0]/e[0],t[1]=r[1]/e[1],t[2]=r[2]/e[2],t[3]=r[3]/e[3],t},o.div=o.divide,o.min=function(t,r,e){return t[0]=Math.min(r[0],e[0]),t[1]=Math.min(r[1],e[1]),t[2]=Math.min(r[2],e[2]),t[3]=Math.min(r[3],e[3]),t},o.max=function(t,r,e){return t[0]=Math.max(r[0],e[0]),t[1]=Math.max(r[1],e[1]),t[2]=Math.max(r[2],e[2]),t[3]=Math.max(r[3],e[3]),t},o.scale=function(t,r,e){return t[0]=r[0]*e,t[1]=r[1]*e,t[2]=r[2]*e,t[3]=r[3]*e,t},o.distance=function(t,r){var e=r[0]-t[0],n=r[1]-t[1],i=r[2]-t[2],a=r[3]-t[3];return Math.sqrt(e*e+n*n+i*i+a*a)},o.dist=o.distance,o.squaredDistance=function(t,r){var e=r[0]-t[0],n=r[1]-t[1],i=r[2]-t[2],a=r[3]-t[3];return e*e+n*n+i*i+a*a},o.sqrDist=o.squaredDistance,o.length=function(t){var r=t[0],e=t[1],n=t[2],i=t[3];return Math.sqrt(r*r+e*e+n*n+i*i)},o.len=o.length,o.squaredLength=function(t){var r=t[0],e=t[1],n=t[2],i=t[3];return r*r+e*e+n*n+i*i},o.sqrLen=o.squaredLength,o.negate=function(t,r){return t[0]=-r[0],t[1]=-r[1],t[2]=-r[2],t[3]=-r[3],t},o.normalize=function(t,r){var e=r[0],n=r[1],i=r[2],a=r[3],o=e*e+n*n+i*i+a*a;return o>0&&(o=1/Math.sqrt(o),t[0]=r[0]*o,t[1]=r[1]*o,t[2]=r[2]*o,t[3]=r[3]*o),t},o.dot=function(t,r){return t[0]*r[0]+t[1]*r[1]+t[2]*r[2]+t[3]*r[3]},o.lerp=function(t,r,e,n){var i=r[0],a=r[1],o=r[2],s=r[3];return t[0]=i+n*(e[0]-i),t[1]=a+n*(e[1]-a),t[2]=o+n*(e[2]-o),t[3]=s+n*(e[3]-s),t},o.transformMat4=function(t,r,e){var n=r[0],i=r[1],a=r[2],o=r[3];return t[0]=e[0]*n+e[4]*i+e[8]*a+e[12]*o,t[1]=e[1]*n+e[5]*i+e[9]*a+e[13]*o,t[2]=e[2]*n+e[6]*i+e[10]*a+e[14]*o,t[3]=e[3]*n+e[7]*i+e[11]*a+e[15]*o,t},o.transformQuat=function(t,r,e){var n=r[0],i=r[1],a=r[2],o=e[0],s=e[1],u=e[2],c=e[3],f=c*n+s*a-u*i,l=c*i+u*n-o*a,h=c*a+o*i-s*n,p=-o*n-s*i-u*a;return t[0]=f*c+p*-o+l*-u-h*-s,t[1]=l*c+p*-s+h*-o-f*-u,t[2]=h*c+p*-u+f*-s-l*-o,t},o.forEach=function(){var t=o.create();return function(r,e,n,i,a,o){var s,u;for(e||(e=4),n||(n=0),u=i?Math.min(i*e+n,r.length):r.length,s=n;u>s;s+=e)t[0]=r[s],t[1]=r[s+1],t[2]=r[s+2],t[3]=r[s+3],a(t,t,o),r[s]=t[0],r[s+1]=t[1],r[s+2]=t[2],r[s+3]=t[3];return r}}(),o.str=function(t){return"vec4("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+")"},t!==void 0&&(t.vec4=o);var s={};new Float32Array([1,0,0,1]),s.create=function(){var t=new e(4);return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t},s.clone=function(t){var r=new e(4);return r[0]=t[0],r[1]=t[1],r[2]=t[2],r[3]=t[3],r},s.copy=function(t,r){return t[0]=r[0],t[1]=r[1],t[2]=r[2],t[3]=r[3],t},s.identity=function(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t},s.transpose=function(t,r){if(t===r){var e=r[1];t[1]=r[2],t[2]=e}else t[0]=r[0],t[1]=r[2],t[2]=r[1],t[3]=r[3];return t},s.invert=function(t,r){var e=r[0],n=r[1],i=r[2],a=r[3],o=e*a-i*n;return o?(o=1/o,t[0]=a*o,t[1]=-n*o,t[2]=-i*o,t[3]=e*o,t):null},s.adjoint=function(t,r){var e=r[0];return t[0]=r[3],t[1]=-r[1],t[2]=-r[2],t[3]=e,t},s.determinant=function(t){return t[0]*t[3]-t[2]*t[1]},s.multiply=function(t,r,e){var n=r[0],i=r[1],a=r[2],o=r[3],s=e[0],u=e[1],c=e[2],f=e[3];return t[0]=n*s+i*c,t[1]=n*u+i*f,t[2]=a*s+o*c,t[3]=a*u+o*f,t},s.mul=s.multiply,s.rotate=function(t,r,e){var n=r[0],i=r[1],a=r[2],o=r[3],s=Math.sin(e),u=Math.cos(e);return t[0]=n*u+i*s,t[1]=n*-s+i*u,t[2]=a*u+o*s,t[3]=a*-s+o*u,t},s.scale=function(t,r,e){var n=r[0],i=r[1],a=r[2],o=r[3],s=e[0],u=e[1];return t[0]=n*s,t[1]=i*u,t[2]=a*s,t[3]=o*u,t},s.str=function(t){return"mat2("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+")"},t!==void 0&&(t.mat2=s);var u={};new Float32Array([1,0,0,1,0,0]),u.create=function(){var t=new e(6);return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t[4]=0,t[5]=0,t},u.clone=function(t){var r=new e(6);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},u.copy=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},u.identity=function(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t[4]=0,t[5]=0,t},u.invert=function(t,r){var e=r[0],n=r[1],i=r[2],a=r[3],o=r[4],s=r[5],u=e*a-n*i;return u?(u=1/u,t[0]=a*u,t[1]=-n*u,t[2]=-i*u,t[3]=e*u,t[4]=(i*s-a*o)*u,t[5]=(n*o-e*s)*u,t):null},u.determinant=function(t){return t[0]*t[3]-t[1]*t[2]},u.multiply=function(t,r,e){var n=r[0],i=r[1],a=r[2],o=r[3],s=r[4],u=r[5],c=e[0],f=e[1],l=e[2],h=e[3],p=e[4],d=e[5];return t[0]=n*c+i*l,t[1]=n*f+i*h,t[2]=a*c+o*l,t[3]=a*f+o*h,t[4]=c*s+l*u+p,t[5]=f*s+h*u+d,t},u.mul=u.multiply,u.rotate=function(t,r,e){var n=r[0],i=r[1],a=r[2],o=r[3],s=r[4],u=r[5],c=Math.sin(e),f=Math.cos(e);return t[0]=n*f+i*c,t[1]=-n*c+i*f,t[2]=a*f+o*c,t[3]=-a*c+f*o,t[4]=f*s+c*u,t[5]=f*u-c*s,t},u.scale=function(t,r,e){var n=e[0],i=e[1];return t[0]=r[0]*n,t[1]=r[1]*i,t[2]=r[2]*n,t[3]=r[3]*i,t[4]=r[4]*n,t[5]=r[5]*i,t},u.translate=function(t,r,e){return t[0]=r[0],t[1]=r[1],t[2]=r[2],t[3]=r[3],t[4]=r[4]+e[0],t[5]=r[5]+e[1],t},u.str=function(t){return"mat2d("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+", "+t[4]+", "+t[5]+")"},t!==void 0&&(t.mat2d=u);var c={};new Float32Array([1,0,0,0,1,0,0,0,1]),c.create=function(){var t=new e(9);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},c.clone=function(t){var r=new e(9);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},c.copy=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},c.identity=function(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},c.transpose=function(t,r){if(t===r){var e=r[1],n=r[2],i=r[5];t[1]=r[3],t[2]=r[6],t[3]=e,t[5]=r[7],t[6]=n,t[7]=i}else t[0]=r[0],t[1]=r[3],t[2]=r[6],t[3]=r[1],t[4]=r[4],t[5]=r[7],t[6]=r[2],t[7]=r[5],t[8]=r[8];return t},c.invert=function(t,r){var e=r[0],n=r[1],i=r[2],a=r[3],o=r[4],s=r[5],u=r[6],c=r[7],f=r[8],l=f*o-s*c,h=-f*a+s*u,p=c*a-o*u,d=e*l+n*h+i*p;return d?(d=1/d,t[0]=l*d,t[1]=(-f*n+i*c)*d,t[2]=(s*n-i*o)*d,t[3]=h*d,t[4]=(f*e-i*u)*d,t[5]=(-s*e+i*a)*d,t[6]=p*d,t[7]=(-c*e+n*u)*d,t[8]=(o*e-n*a)*d,t):null},c.adjoint=function(t,r){var e=r[0],n=r[1],i=r[2],a=r[3],o=r[4],s=r[5],u=r[6],c=r[7],f=r[8];return t[0]=o*f-s*c,t[1]=i*c-n*f,t[2]=n*s-i*o,t[3]=s*u-a*f,t[4]=e*f-i*u,t[5]=i*a-e*s,t[6]=a*c-o*u,t[7]=n*u-e*c,t[8]=e*o-n*a,t},c.determinant=function(t){var r=t[0],e=t[1],n=t[2],i=t[3],a=t[4],o=t[5],s=t[6],u=t[7],c=t[8];return r*(c*a-o*u)+e*(-c*i+o*s)+n*(u*i-a*s)},c.multiply=function(t,r,e){var n=r[0],i=r[1],a=r[2],o=r[3],s=r[4],u=r[5],c=r[6],f=r[7],l=r[8],h=e[0],p=e[1],d=e[2],v=e[3],g=e[4],m=e[5],y=e[6],b=e[7],_=e[8];return t[0]=h*n+p*o+d*c,t[1]=h*i+p*s+d*f,t[2]=h*a+p*u+d*l,t[3]=v*n+g*o+m*c,t[4]=v*i+g*s+m*f,t[5]=v*a+g*u+m*l,t[6]=y*n+b*o+_*c,t[7]=y*i+b*s+_*f,t[8]=y*a+b*u+_*l,t},c.mul=c.multiply,c.translate=function(t,r,e){var n=r[0],i=r[1],a=r[2],o=r[3],s=r[4],u=r[5],c=r[6],f=r[7],l=r[8],h=e[0],p=e[1];return t[0]=n,t[1]=i,t[2]=a,t[3]=o,t[4]=s,t[5]=u,t[6]=h*n+p*o+c,t[7]=h*i+p*s+f,t[8]=h*a+p*u+l,t},c.rotate=function(t,r,e){var n=r[0],i=r[1],a=r[2],o=r[3],s=r[4],u=r[5],c=r[6],f=r[7],l=r[8],h=Math.sin(e),p=Math.cos(e);return t[0]=p*n+h*o,t[1]=p*i+h*s,t[2]=p*a+h*u,t[3]=p*o-h*n,t[4]=p*s-h*i,t[5]=p*u-h*a,t[6]=c,t[7]=f,t[8]=l,t},c.scale=function(t,r,e){var n=e[0],i=e[2];return t[0]=n*r[0],t[1]=n*r[1],t[2]=n*r[2],t[3]=i*r[3],t[4]=i*r[4],t[5]=i*r[5],t[6]=r[6],t[7]=r[7],t[8]=r[8],t},c.fromMat2d=function(t,r){return t[0]=r[0],t[1]=r[1],t[2]=0,t[3]=r[2],t[4]=r[3],t[5]=0,t[6]=r[4],t[7]=r[5],t[8]=1,t},c.fromQuat=function(t,r){var e=r[0],n=r[1],i=r[2],a=r[3],o=e+e,s=n+n,u=i+i,c=e*o,f=e*s,l=e*u,h=n*s,p=n*u,d=i*u,v=a*o,g=a*s,m=a*u;return t[0]=1-(h+d),t[1]=f+m,t[2]=l-g,t[3]=f-m,t[4]=1-(c+d),t[5]=p+v,t[6]=l+g,t[7]=p-v,t[8]=1-(c+h),t},c.str=function(t){return"mat3("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+", "+t[4]+", "+t[5]+", "+t[6]+", "+t[7]+", "+t[8]+")"},t!==void 0&&(t.mat3=c);var f={};new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]),f.create=function(){var t=new e(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},f.clone=function(t){var r=new e(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},f.copy=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},f.identity=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},f.transpose=function(t,r){if(t===r){var e=r[1],n=r[2],i=r[3],a=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]=a,t[11]=r[14],t[12]=i,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},f.invert=function(t,r){var e=r[0],n=r[1],i=r[2],a=r[3],o=r[4],s=r[5],u=r[6],c=r[7],f=r[8],l=r[9],h=r[10],p=r[11],d=r[12],v=r[13],g=r[14],m=r[15],y=e*s-n*o,b=e*u-i*o,_=e*c-a*o,w=n*u-i*s,E=n*c-a*s,A=i*c-a*u,x=f*v-l*d,T=f*g-h*d,M=f*m-p*d,I=l*g-h*v,L=l*m-p*v,j=h*m-p*g,S=y*j-b*L+_*I+w*M-E*T+A*x;return S?(S=1/S,t[0]=(s*j-u*L+c*I)*S,t[1]=(i*L-n*j-a*I)*S,t[2]=(v*A-g*E+m*w)*S,t[3]=(h*E-l*A-p*w)*S,t[4]=(u*M-o*j-c*T)*S,t[5]=(e*j-i*M+a*T)*S,t[6]=(g*_-d*A-m*b)*S,t[7]=(f*A-h*_+p*b)*S,t[8]=(o*L-s*M+c*x)*S,t[9]=(n*M-e*L-a*x)*S,t[10]=(d*E-v*_+m*y)*S,t[11]=(l*_-f*E-p*y)*S,t[12]=(s*T-o*I-u*x)*S,t[13]=(e*I-n*T+i*x)*S,t[14]=(v*b-d*w-g*y)*S,t[15]=(f*w-l*b+h*y)*S,t):null},f.adjoint=function(t,r){var e=r[0],n=r[1],i=r[2],a=r[3],o=r[4],s=r[5],u=r[6],c=r[7],f=r[8],l=r[9],h=r[10],p=r[11],d=r[12],v=r[13],g=r[14],m=r[15];return t[0]=s*(h*m-p*g)-l*(u*m-c*g)+v*(u*p-c*h),t[1]=-(n*(h*m-p*g)-l*(i*m-a*g)+v*(i*p-a*h)),t[2]=n*(u*m-c*g)-s*(i*m-a*g)+v*(i*c-a*u),t[3]=-(n*(u*p-c*h)-s*(i*p-a*h)+l*(i*c-a*u)),t[4]=-(o*(h*m-p*g)-f*(u*m-c*g)+d*(u*p-c*h)),t[5]=e*(h*m-p*g)-f*(i*m-a*g)+d*(i*p-a*h),t[6]=-(e*(u*m-c*g)-o*(i*m-a*g)+d*(i*c-a*u)),t[7]=e*(u*p-c*h)-o*(i*p-a*h)+f*(i*c-a*u),t[8]=o*(l*m-p*v)-f*(s*m-c*v)+d*(s*p-c*l),t[9]=-(e*(l*m-p*v)-f*(n*m-a*v)+d*(n*p-a*l)),t[10]=e*(s*m-c*v)-o*(n*m-a*v)+d*(n*c-a*s),t[11]=-(e*(s*p-c*l)-o*(n*p-a*l)+f*(n*c-a*s)),t[12]=-(o*(l*g-h*v)-f*(s*g-u*v)+d*(s*h-u*l)),t[13]=e*(l*g-h*v)-f*(n*g-i*v)+d*(n*h-i*l),t[14]=-(e*(s*g-u*v)-o*(n*g-i*v)+d*(n*u-i*s)),t[15]=e*(s*h-u*l)-o*(n*h-i*l)+f*(n*u-i*s),t},f.determinant=function(t){var r=t[0],e=t[1],n=t[2],i=t[3],a=t[4],o=t[5],s=t[6],u=t[7],c=t[8],f=t[9],l=t[10],h=t[11],p=t[12],d=t[13],v=t[14],g=t[15],m=r*o-e*a,y=r*s-n*a,b=r*u-i*a,_=e*s-n*o,w=e*u-i*o,E=n*u-i*s,A=c*d-f*p,x=c*v-l*p,T=c*g-h*p,M=f*v-l*d,I=f*g-h*d,L=l*g-h*v;return m*L-y*I+b*M+_*T-w*x+E*A},f.multiply=function(t,r,e){var n=r[0],i=r[1],a=r[2],o=r[3],s=r[4],u=r[5],c=r[6],f=r[7],l=r[8],h=r[9],p=r[10],d=r[11],v=r[12],g=r[13],m=r[14],y=r[15],b=e[0],_=e[1],w=e[2],E=e[3];return t[0]=b*n+_*s+w*l+E*v,t[1]=b*i+_*u+w*h+E*g,t[2]=b*a+_*c+w*p+E*m,t[3]=b*o+_*f+w*d+E*y,b=e[4],_=e[5],w=e[6],E=e[7],t[4]=b*n+_*s+w*l+E*v,t[5]=b*i+_*u+w*h+E*g,t[6]=b*a+_*c+w*p+E*m,t[7]=b*o+_*f+w*d+E*y,b=e[8],_=e[9],w=e[10],E=e[11],t[8]=b*n+_*s+w*l+E*v,t[9]=b*i+_*u+w*h+E*g,t[10]=b*a+_*c+w*p+E*m,t[11]=b*o+_*f+w*d+E*y,b=e[12],_=e[13],w=e[14],E=e[15],t[12]=b*n+_*s+w*l+E*v,t[13]=b*i+_*u+w*h+E*g,t[14]=b*a+_*c+w*p+E*m,t[15]=b*o+_*f+w*d+E*y,t},f.mul=f.multiply,f.translate=function(t,r,e){var n,i,a,o,s,u,c,f,l,h,p,d,v=e[0],g=e[1],m=e[2];return r===t?(t[12]=r[0]*v+r[4]*g+r[8]*m+r[12],t[13]=r[1]*v+r[5]*g+r[9]*m+r[13],t[14]=r[2]*v+r[6]*g+r[10]*m+r[14],t[15]=r[3]*v+r[7]*g+r[11]*m+r[15]):(n=r[0],i=r[1],a=r[2],o=r[3],s=r[4],u=r[5],c=r[6],f=r[7],l=r[8],h=r[9],p=r[10],d=r[11],t[0]=n,t[1]=i,t[2]=a,t[3]=o,t[4]=s,t[5]=u,t[6]=c,t[7]=f,t[8]=l,t[9]=h,t[10]=p,t[11]=d,t[12]=n*v+s*g+l*m+r[12],t[13]=i*v+u*g+h*m+r[13],t[14]=a*v+c*g+p*m+r[14],t[15]=o*v+f*g+d*m+r[15]),t},f.scale=function(t,r,e){var n=e[0],i=e[1],a=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]*i,t[5]=r[5]*i,t[6]=r[6]*i,t[7]=r[7]*i,t[8]=r[8]*a,t[9]=r[9]*a,t[10]=r[10]*a,t[11]=r[11]*a,t[12]=r[12],t[13]=r[13],t[14]=r[14],t[15]=r[15],t},f.rotate=function(t,e,n,i){var a,o,s,u,c,f,l,h,p,d,v,g,m,y,b,_,w,E,A,x,T,M,I,L,j=i[0],S=i[1],N=i[2],R=Math.sqrt(j*j+S*S+N*N);return r>Math.abs(R)?null:(R=1/R,j*=R,S*=R,N*=R,a=Math.sin(n),o=Math.cos(n),s=1-o,u=e[0],c=e[1],f=e[2],l=e[3],h=e[4],p=e[5],d=e[6],v=e[7],g=e[8],m=e[9],y=e[10],b=e[11],_=j*j*s+o,w=S*j*s+N*a,E=N*j*s-S*a,A=j*S*s-N*a,x=S*S*s+o,T=N*S*s+j*a,M=j*N*s+S*a,I=S*N*s-j*a,L=N*N*s+o,t[0]=u*_+h*w+g*E,t[1]=c*_+p*w+m*E,t[2]=f*_+d*w+y*E,t[3]=l*_+v*w+b*E,t[4]=u*A+h*x+g*T,t[5]=c*A+p*x+m*T,t[6]=f*A+d*x+y*T,t[7]=l*A+v*x+b*T,t[8]=u*M+h*I+g*L,t[9]=c*M+p*I+m*L,t[10]=f*M+d*I+y*L,t[11]=l*M+v*I+b*L,e!==t&&(t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t)},f.rotateX=function(t,r,e){var n=Math.sin(e),i=Math.cos(e),a=r[4],o=r[5],s=r[6],u=r[7],c=r[8],f=r[9],l=r[10],h=r[11];return 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]),t[4]=a*i+c*n,t[5]=o*i+f*n,t[6]=s*i+l*n,t[7]=u*i+h*n,t[8]=c*i-a*n,t[9]=f*i-o*n,t[10]=l*i-s*n,t[11]=h*i-u*n,t
},f.rotateY=function(t,r,e){var n=Math.sin(e),i=Math.cos(e),a=r[0],o=r[1],s=r[2],u=r[3],c=r[8],f=r[9],l=r[10],h=r[11];return 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]),t[0]=a*i-c*n,t[1]=o*i-f*n,t[2]=s*i-l*n,t[3]=u*i-h*n,t[8]=a*n+c*i,t[9]=o*n+f*i,t[10]=s*n+l*i,t[11]=u*n+h*i,t},f.rotateZ=function(t,r,e){var n=Math.sin(e),i=Math.cos(e),a=r[0],o=r[1],s=r[2],u=r[3],c=r[4],f=r[5],l=r[6],h=r[7];return 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]),t[0]=a*i+c*n,t[1]=o*i+f*n,t[2]=s*i+l*n,t[3]=u*i+h*n,t[4]=c*i-a*n,t[5]=f*i-o*n,t[6]=l*i-s*n,t[7]=h*i-u*n,t},f.fromRotationTranslation=function(t,r,e){var n=r[0],i=r[1],a=r[2],o=r[3],s=n+n,u=i+i,c=a+a,f=n*s,l=n*u,h=n*c,p=i*u,d=i*c,v=a*c,g=o*s,m=o*u,y=o*c;return t[0]=1-(p+v),t[1]=l+y,t[2]=h-m,t[3]=0,t[4]=l-y,t[5]=1-(f+v),t[6]=d+g,t[7]=0,t[8]=h+m,t[9]=d-g,t[10]=1-(f+p),t[11]=0,t[12]=e[0],t[13]=e[1],t[14]=e[2],t[15]=1,t},f.fromQuat=function(t,r){var e=r[0],n=r[1],i=r[2],a=r[3],o=e+e,s=n+n,u=i+i,c=e*o,f=e*s,l=e*u,h=n*s,p=n*u,d=i*u,v=a*o,g=a*s,m=a*u;return t[0]=1-(h+d),t[1]=f+m,t[2]=l-g,t[3]=0,t[4]=f-m,t[5]=1-(c+d),t[6]=p+v,t[7]=0,t[8]=l+g,t[9]=p-v,t[10]=1-(c+h),t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},f.frustum=function(t,r,e,n,i,a,o){var s=1/(e-r),u=1/(i-n),c=1/(a-o);return t[0]=2*a*s,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=2*a*u,t[6]=0,t[7]=0,t[8]=(e+r)*s,t[9]=(i+n)*u,t[10]=(o+a)*c,t[11]=-1,t[12]=0,t[13]=0,t[14]=2*o*a*c,t[15]=0,t},f.perspective=function(t,r,e,n,i){var a=1/Math.tan(r/2),o=1/(n-i);return t[0]=a/e,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=a,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=(i+n)*o,t[11]=-1,t[12]=0,t[13]=0,t[14]=2*i*n*o,t[15]=0,t},f.ortho=function(t,r,e,n,i,a,o){var s=1/(r-e),u=1/(n-i),c=1/(a-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*c,t[11]=0,t[12]=(r+e)*s,t[13]=(i+n)*u,t[14]=(o+a)*c,t[15]=1,t},f.lookAt=function(t,e,n,i){var a,o,s,u,c,l,h,p,d,v,g=e[0],m=e[1],y=e[2],b=i[0],_=i[1],w=i[2],E=n[0],A=n[1],x=n[2];return r>Math.abs(g-E)&&r>Math.abs(m-A)&&r>Math.abs(y-x)?f.identity(t):(h=g-E,p=m-A,d=y-x,v=1/Math.sqrt(h*h+p*p+d*d),h*=v,p*=v,d*=v,a=_*d-w*p,o=w*h-b*d,s=b*p-_*h,v=Math.sqrt(a*a+o*o+s*s),v?(v=1/v,a*=v,o*=v,s*=v):(a=0,o=0,s=0),u=p*s-d*o,c=d*a-h*s,l=h*o-p*a,v=Math.sqrt(u*u+c*c+l*l),v?(v=1/v,u*=v,c*=v,l*=v):(u=0,c=0,l=0),t[0]=a,t[1]=u,t[2]=h,t[3]=0,t[4]=o,t[5]=c,t[6]=p,t[7]=0,t[8]=s,t[9]=l,t[10]=d,t[11]=0,t[12]=-(a*g+o*m+s*y),t[13]=-(u*g+c*m+l*y),t[14]=-(h*g+p*m+d*y),t[15]=1,t)},f.str=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]+")"},t!==void 0&&(t.mat4=f);var l={};new Float32Array([0,0,0,1]),l.create=function(){var t=new e(4);return t[0]=0,t[1]=0,t[2]=0,t[3]=1,t},l.clone=o.clone,l.fromValues=o.fromValues,l.copy=o.copy,l.set=o.set,l.identity=function(t){return t[0]=0,t[1]=0,t[2]=0,t[3]=1,t},l.setAxisAngle=function(t,r,e){e=.5*e;var n=Math.sin(e);return t[0]=n*r[0],t[1]=n*r[1],t[2]=n*r[2],t[3]=Math.cos(e),t},l.add=o.add,l.multiply=function(t,r,e){var n=r[0],i=r[1],a=r[2],o=r[3],s=e[0],u=e[1],c=e[2],f=e[3];return t[0]=n*f+o*s+i*c-a*u,t[1]=i*f+o*u+a*s-n*c,t[2]=a*f+o*c+n*u-i*s,t[3]=o*f-n*s-i*u-a*c,t},l.mul=l.multiply,l.scale=o.scale,l.rotateX=function(t,r,e){e*=.5;var n=r[0],i=r[1],a=r[2],o=r[3],s=Math.sin(e),u=Math.cos(e);return t[0]=n*u+o*s,t[1]=i*u+a*s,t[2]=a*u-i*s,t[3]=o*u-n*s,t},l.rotateY=function(t,r,e){e*=.5;var n=r[0],i=r[1],a=r[2],o=r[3],s=Math.sin(e),u=Math.cos(e);return t[0]=n*u-a*s,t[1]=i*u+o*s,t[2]=a*u+n*s,t[3]=o*u-i*s,t},l.rotateZ=function(t,r,e){e*=.5;var n=r[0],i=r[1],a=r[2],o=r[3],s=Math.sin(e),u=Math.cos(e);return t[0]=n*u+i*s,t[1]=i*u-n*s,t[2]=a*u+o*s,t[3]=o*u-a*s,t},l.calculateW=function(t,r){var e=r[0],n=r[1],i=r[2];return t[0]=e,t[1]=n,t[2]=i,t[3]=-Math.sqrt(Math.abs(1-e*e-n*n-i*i)),t},l.dot=o.dot,l.lerp=o.lerp,l.slerp=function(t,r,e,n){var i,a,o,s,u=r[0],c=r[1],f=r[2],l=r[3],h=e[0],p=e[1],d=e[2],v=e[3],g=u*h+c*p+f*d+l*v;return Math.abs(g)>=1?(t!==r&&(t[0]=u,t[1]=c,t[2]=f,t[3]=l),t):(i=Math.acos(g),a=Math.sqrt(1-g*g),.001>Math.abs(a)?(t[0]=.5*u+.5*h,t[1]=.5*c+.5*p,t[2]=.5*f+.5*d,t[3]=.5*l+.5*v,t):(o=Math.sin((1-n)*i)/a,s=Math.sin(n*i)/a,t[0]=u*o+h*s,t[1]=c*o+p*s,t[2]=f*o+d*s,t[3]=l*o+v*s,t))},l.invert=function(t,r){var e=r[0],n=r[1],i=r[2],a=r[3],o=e*e+n*n+i*i+a*a,s=o?1/o:0;return t[0]=-e*s,t[1]=-n*s,t[2]=-i*s,t[3]=a*s,t},l.conjugate=function(t,r){return t[0]=-r[0],t[1]=-r[1],t[2]=-r[2],t[3]=r[3],t},l.length=o.length,l.len=l.length,l.squaredLength=o.squaredLength,l.sqrLen=l.squaredLength,l.normalize=o.normalize,l.fromMat3=function(){var t=[1,2,0];return function(r,e){var n,i=e[0]+e[4]+e[8];if(i>0)n=Math.sqrt(i+1),r[3]=.5*n,n=.5/n,r[0]=(e[7]-e[5])*n,r[1]=(e[2]-e[6])*n,r[2]=(e[3]-e[1])*n;else{var a=0;e[4]>e[0]&&(a=1),e[8]>e[3*a+a]&&(a=2);var o=t[a],s=t[o];n=Math.sqrt(e[3*a+a]-e[3*o+o]-e[3*s+s]+1),r[a]=.5*n,n=.5/n,r[3]=(e[3*s+o]-e[3*o+s])*n,r[o]=(e[3*o+a]+e[3*a+o])*n,r[s]=(e[3*s+a]+e[3*a+s])*n}return r}}(),l.str=function(t){return"quat("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+")"},t!==void 0&&(t.quat=l)}(t.exports)})()},{}],18:[function(t,r){"use strict";function e(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 Error("gl-vao: Too many vertex attributes");for(var i=0;e.length>i;++i){var a=e[i];if(a.buffer){var o=a.buffer,s=a.size||4,u=a.type||t.FLOAT,c=!!a.normalized,f=a.stride||0,l=a.offset||0;o.bind(),t.enableVertexAttribArray(i),t.vertexAttribPointer(i,s,u,c,f,l)}else{if("number"==typeof a)t.vertexAttrib1f(i,a);else if(1===a.length)t.vertexAttrib1f(i,a[0]);else if(2===a.length)t.vertexAttrib2f(i,a[0],a[1]);else if(3===a.length)t.vertexAttrib3f(i,a[0],a[1],a[2]);else{if(4!==a.length)throw Error("gl-vao: Invalid vertex attribute");t.vertexAttrib4f(i,a[0],a[1],a[2],a[3])}t.disableVertexAttribArray(i)}}for(;n>i;++i)t.disableVertexAttribArray(i)}else{t.bindBuffer(t.ARRAY_BUFFER,null);for(var i=0;n>i;++i)t.disableVertexAttribArray(i)}}r.exports=e},{}],19:[function(t,r){"use strict";function e(t){this.gl=t,this._elements=null,this._attributes=null}function n(t){return new e(t)}var i=t("./do-bind.js");e.prototype.bind=function(){i(this.gl,this._elements,this._attributes)},e.prototype.update=function(t,r){this._elements=r,this._attributes=t},e.prototype.dispose=function(){},e.prototype.unbind=function(){},e.prototype.draw=function(t,r,e){e=e||0;var n=this.gl;this._elements?n.drawElements(t,r,n.UNSIGNED_SHORT,e):n.drawArrays(t,e,r)},r.exports=n},{"./do-bind.js":18}],20:[function(t,r){"use strict";function e(t,r,e,n,i,a){this.location=t,this.dimension=r,this.a=e,this.b=n,this.c=i,this.d=a}function n(t,r,e){this.gl=t,this._ext=r,this.handle=e,this._attribs=[],this._useElements=!1}function i(t,r){return new n(t,r,r.createVertexArrayOES())}var a=t("./do-bind.js");e.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)}},n.prototype.bind=function(){this._ext.bindVertexArrayOES(this.handle);for(var t=0;this._attribs.length>t;++t)this._attribs[t].bind(this.gl)},n.prototype.unbind=function(){this._ext.bindVertexArrayOES(null)},n.prototype.dispose=function(){this._ext.deleteVertexArrayOES(this.handle)},n.prototype.update=function(t,r){if(this.bind(),a(this.gl,r,t),this.unbind(),this._attribs.length=0,t)for(var n=0;t.length>n;++n){var i=t[n];"number"==typeof i?this._attribs.push(new e(n,1,i)):Array.isArray(i)&&this._attribs.push(new e(n,i.length,i[0],i[1],i[2],i[3]))}this._useElements=!!r},n.prototype.draw=function(t,r,e){e=e||0;var n=this.gl;this._useElements?n.drawElements(t,r,n.UNSIGNED_SHORT,e):n.drawArrays(t,e,r)},r.exports=i},{"./do-bind.js":18}],21:[function(t,r){"use strict";function e(t){for(var r=0;i.length>r;++r){var e=i[r];if(0===t.indexOf(e))return t.slice(e.length)}return t}function n(t){if(t._webglew_struct)return t._webglew_struct;for(var r={},n=t.getSupportedExtensions(),i=0;n.length>i;++i){var a=t.getExtension(n[i]);a&&(r[n[i]]=a,r[e(n[i])]=a)}return t._webglew_struct=r,r}var i=["WEBKIT_","MOZ_"];r.exports=n},{}],22:[function(t,r){"use strict";function e(t,r,e){var o,s=n(t).OES_vertex_array_object;return o=s?i(t,s):a(t),o.update(r,e),o}var n=t("webglew"),i=t("./lib/vao-native.js"),a=t("./lib/vao-emulated.js");r.exports=e},{"./lib/vao-emulated.js":19,"./lib/vao-native.js":20,webglew:21}],23:[function(t,r){function e(t,r,e,i){return function(a){return n(a,t,r,e,i)}}r.exports=e;var n=t("gl-shader-core")},{"gl-shader-core":30}],24:[function(t,r){function e(){throw Error("You should bundle your code using `glslify` as a transform.")}r.exports=e},{}],25:[function(t,r){"use strict";function e(t){for(var r={},e=0;t.length>e;++e)for(var n=t[e].name,i=n.split("."),a=r,o=0;i.length>o;++o){var s=i[o].split("[");if(s.length>1){s[0]in a||(a[s[0]]=[]),a=a[s[0]];for(var u=1;s.length>u;++u){var c=parseInt(s[u]);s.length-1>u||i.length-1>o?(c in a||(a[c]=s.length-1>u?[]:{}),a=a[c]):a[c]=e}}else i.length-1>o?(s[0]in a||(a[s[0]]={}),a=a[s[0]]):a[s[0]]=e}return r}r.exports=e},{}],26:[function(t,r){"use strict";function e(t,r,e,n,i,a,o){this._gl=t,this._program=r,this._location=e,this._dimension=n,this._name=i,this._constFunc=a,this._relink=o}function n(t,r,n,i,a,o,s){for(var u=["gl","v"],c=[],f=0;i>f;++f)u.push("x"+f),c.push("x"+f);u.push(["if(x0.length===undefined){return gl.vertexAttrib",i,"f(v,",c.join(","),")}else{return gl.vertexAttrib",i,"fv(v,x0)}"].join(""));var l=Function.apply(void 0,u),h=new e(t,r,n,i,o,l,s);Object.defineProperty(a,o,{set:function(r){return t.disableVertexAttribArray(h._location),l(t,h._location,r),r},get:function(){return h},enumerable:!0})}function i(t,r,e,i){for(var a={},o=0,s=e.length;s>o;++o){var u=e[o],c=u.name,f=u.type,l=t.getAttribLocation(r,c);switch(f){case"bool":case"int":case"float":n(t,r,l,1,a,c,i);break;default:if(!(f.indexOf("vec")>=0))throw Error("Unknown data type for attribute "+c+": "+f);var h=f.charCodeAt(f.length-1)-48;if(2>h||h>4)throw Error("Invalid data type for attribute "+c+": "+f);n(t,r,l,h,a,c,i)}}return a}r.exports=i;var a=e.prototype;a.pointer=function(t,r,e,n){var i=this._gl;i.vertexAttribPointer(this._location,this._dimension,t||i.FLOAT,r?i.TRUE:i.FALSE,e||0,n||0),this._gl.enableVertexAttribArray(this._location)},Object.defineProperty(a,"location",{get:function(){return this._location},set:function(t){t!==this._location&&(this._location=t,this._gl.bindAttribLocation(this._program,t,this._name),this._gl.linkProgram(this._program),this._relink())}})},{}],27:[function(t,r){"use strict";function e(t){var r=Function("y","return function(){return y}");return r(t)}function n(t,r,n,o){function s(e){var n=Function("gl","prog","locations","return function(){return gl.getUniform(prog,locations["+e+"])}");return n(t,r,o)}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(!(n>=0&&1>=n&&e.length===4+n)){if(0===e.indexOf("mat")&&4===e.length){var i=e.charCodeAt(e.length-1)-48;if(2>i||i>4)throw Error("Invalid uniform dimension type for matrix "+name+": "+e);return"gl.uniformMatrix"+i+"fv(locations["+r+"],false,obj"+t+")"}throw Error("Unknown uniform data type for "+name+": "+e)}var i=e.charCodeAt(e.length-1)-48;if(2>i||i>4)throw Error("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 Error("Unrecognized data type for vector "+name+": "+e)}}}function c(t,r){if("object"!=typeof r)return[[t,r]];var e=[];for(var n in r){var i=r[n],a=t;a+=parseInt(n)+""===n?"["+n+"]":"."+n,"object"==typeof i?e.push.apply(e,c(a,i)):e.push([a,i])}return e}function f(e){for(var i=["return function updateProperty(obj){"],a=c("",e),s=0;a.length>s;++s){var f=a[s],l=f[0],h=f[1];o[h]&&i.push(u(l,h,n[h].type))}i.push("return obj}");var p=Function("gl","prog","locations",i.join("\n"));return p(t,r,o)}function l(t){switch(t){case"bool":return!1;case"int":case"sampler2D":case"samplerCube":return 0;case"float":return 0;default:var r=t.indexOf("vec");if(r>=0&&1>=r&&t.length===4+r){var e=t.charCodeAt(t.length-1)-48;if(2>e||e>4)throw Error("Invalid data type");return"b"===t.charAt(0)?i(e,!1):i(e)}if(0===t.indexOf("mat")&&4===t.length){var e=t.charCodeAt(t.length-1)-48;if(2>e||e>4)throw Error("Invalid uniform dimension type for matrix "+name+": "+t);return i([e,e])}throw Error("Unknown uniform data type for "+name+": "+t)}}function h(t,r,i){if("object"==typeof i){var a=p(i);Object.defineProperty(t,r,{get:e(a),set:f(i),enumerable:!0,configurable:!1})}else o[i]?Object.defineProperty(t,r,{get:s(i),set:f(i),enumerable:!0,configurable:!1}):t[r]=l(n[i].type)}function p(t){var r;if(Array.isArray(t)){r=Array(t.length);for(var e=0;t.length>e;++e)h(r,e,t[e])}else{r={};for(var n in t)h(r,n,t[n])}return r}var d=a(n);return{get:e(p(d)),set:f(d),enumerable:!0,configurable:!1}}var i=t("dup"),a=t("./coallesce-uniforms.js");r.exports=n},{"./coallesce-uniforms.js":25,dup:29}],28:[function(t,r){"use strict";function e(t){for(var r={},e=0;t.length>e;++e)for(var n=t[e].name,i=n.split("."),a=r,o=0;i.length>o;++o){var s=i[o].split("[");if(s.length>1){s[0]in a||(a[s[0]]=[]),a=a[s[0]];for(var u=1;s.length>u;++u){var c=parseInt(s[u]);s.length-1>u||i.length-1>o?(c in a||(a[c]=s.length-1>u?[]:{}),a=a[c]):a[c]=t[e].type}}else i.length-1>o?(s[0]in a||(a[s[0]]={}),a=a[s[0]]):a[s[0]]=t[e].type}return r}r.exports=e},{}],29:[function(t,r){r.exports=t(15)},{}],30:[function(t,r){"use strict";function e(t,r,e,n,i,a){this.gl=t,this.handle=r,this.attributes=e,this.types=n,this.vertexShader=i,this.fragmentShader=a}function n(t,r,e,n){for(var i=0;n.length>i;++i)e[i]=t.getUniformLocation(r,n[i].name)}function i(t,r,i,u,c){var f=t.createShader(t.VERTEX_SHADER);if(t.shaderSource(f,r),t.compileShader(f),!t.getShaderParameter(f,t.COMPILE_STATUS))throw Error("Error compiling vertex shader: "+t.getShaderInfoLog(f));var l=t.createShader(t.FRAGMENT_SHADER);if(t.shaderSource(l,i),t.compileShader(l),!t.getShaderParameter(l,t.COMPILE_STATUS))throw Error("Error compiling fragment shader: "+t.getShaderInfoLog(l));var h=t.createProgram();if(t.attachShader(h,l),t.attachShader(h,f),t.linkProgram(h),!t.getProgramParameter(h,t.LINK_STATUS))throw Error("Error linking shader program: "+t.getProgramInfoLog(h));var p=Array(u.length),d=n.bind(void 0,t,h,p,u);d();var v=new e(t,h,o(t,h,c,d),{uniforms:s(u),attributes:s(c)},f,l);return Object.defineProperty(v,"uniforms",a(t,h,u,p)),v}var a=t("./lib/create-uniforms.js"),o=t("./lib/create-attributes.js"),s=t("./lib/reflect.js");e.prototype.bind=function(){this.gl.useProgram(this.handle)},e.prototype.dispose=function(){var t=this.gl;t.deleteShader(this.vertexShader),t.deleteShader(this.fragmentShader),t.deleteProgram(this.handle)},r.exports=i},{"./lib/create-attributes.js":26,"./lib/create-uniforms.js":27,"./lib/reflect.js":28}],31:[function(t,r,e){var n=1e-6;e.vertexNormals=function(t,r){for(var e=r.length,i=Array(e),a=0;e>a;++a)i[a]=[0,0,0];for(var a=0;t.length>a;++a)for(var o=t[a],s=0,u=o[o.length-1],c=o[0],f=0;o.length>f;++f){s=u,u=c,c=o[(f+1)%o.length];for(var l=r[s],h=r[u],p=r[c],d=Array(3),v=0,g=Array(3),m=0,y=0;3>y;++y)d[y]=l[y]-h[y],v+=d[y]*d[y],g[y]=p[y]-h[y],m+=g[y]*g[y];if(v*m>n)for(var b=i[u],_=1/Math.sqrt(v*m),y=0;3>y;++y){var w=(y+1)%3,E=(y+2)%3;b[y]+=_*(g[w]*d[E]-g[E]*d[w])}}for(var a=0;e>a;++a){for(var b=i[a],A=0,y=0;3>y;++y)A+=b[y]*b[y];if(A>n)for(var _=1/Math.sqrt(A),y=0;3>y;++y)b[y]*=_;else for(var y=0;3>y;++y)b[y]=0}return i},e.faceNormals=function(t,r){for(var e=t.length,i=Array(e),a=0;e>a;++a){for(var o=t[a],s=Array(3),u=0;3>u;++u)s[u]=r[o[u]];for(var c=Array(3),f=Array(3),u=0;3>u;++u)c[u]=s[1][u]-s[0][u],f[u]=s[2][u]-s[0][u];for(var l=Array(3),h=0,u=0;3>u;++u){var p=(u+1)%3,d=(u+2)%3;l[u]=c[p]*f[d]-c[d]*f[p],h+=l[u]*l[u]}h=h>n?1/Math.sqrt(h):0;for(var u=0;3>u;++u)l[u]*=h;i[a]=l}return i}},{}]},{},[]),require=function e(t,r,n){function i(o,s){if(!r[o]){if(!t[o]){var u="function"==typeof require&&require;if(!s&&u)return u(o,!0);if(a)return a(o,!0);throw Error("Cannot find module '"+o+"'")}var c=r[o]={exports:{}};t[o][0].call(c.exports,function(r){var e=t[o][1][r];return i(e?e:r)},c,c.exports,e,t,r,n)}return r[o].exports}for(var a="function"==typeof require&&require,o=0;n.length>o;o++)i(n[o]);return i}({"6PqFoK":[function(t,r,e){e.surfaceNets=t("./lib/surfacenets.js").surfaceNets,e.marchingCubes=t("./lib/marchingcubes.js").marchingCubes,e.marchingTetrahedra=t("./lib/marchingtetrahedra.js").marchingTetrahedra},{"./lib/marchingcubes.js":3,"./lib/marchingtetrahedra.js":4,"./lib/surfacenets.js":5}],isosurface:[function(t,r){r.exports=t("6PqFoK")},{}],3:[function(t,r,e){var n=new Uint32Array([0,265,515,778,1030,1295,1541,1804,2060,2309,2575,2822,3082,3331,3593,3840,400,153,915,666,1430,1183,1941,1692,2460,2197,2975,2710,3482,3219,3993,3728,560,825,51,314,1590,1855,1077,1340,2620,2869,2111,2358,3642,3891,3129,3376,928,681,419,170,1958,1711,1445,1196,2988,2725,2479,2214,4010,3747,3497,3232,1120,1385,1635,1898,102,367,613,876,3180,3429,3695,3942,2154,2403,2665,2912,1520,1273,2035,1786,502,255,1013,764,3580,3317,4095,3830,2554,2291,3065,2800,1616,1881,1107,1370,598,863,85,348,3676,3925,3167,3414,2650,2899,2137,2384,1984,1737,1475,1226,966,719,453,204,4044,3781,3535,3270,3018,2755,2505,2240,2240,2505,2755,3018,3270,3535,3781,4044,204,453,719,966,1226,1475,1737,1984,2384,2137,2899,2650,3414,3167,3925,3676,348,85,863,598,1370,1107,1881,1616,2800,3065,2291,2554,3830,4095,3317,3580,764,1013,255,502,1786,2035,1273,1520,2912,2665,2403,2154,3942,3695,3429,3180,876,613,367,102,1898,1635,1385,1120,3232,3497,3747,4010,2214,2479,2725,2988,1196,1445,1711,1958,170,419,681,928,3376,3129,3891,3642,2358,2111,2869,2620,1340,1077,1855,1590,314,51,825,560,3728,3993,3219,3482,2710,2975,2197,2460,1692,1941,1183,1430,666,915,153,400,3840,3593,3331,3082,2822,2575,2309,2060,1804,1541,1295,1030,778,515,265,0]),i=[[],[0,8,3],[0,1,9],[1,8,3,9,8,1],[1,2,10],[0,8,3,1,2,10],[9,2,10,0,2,9],[2,8,3,2,10,8,10,9,8],[3,11,2],[0,11,2,8,11,0],[1,9,0,2,3,11],[1,11,2,1,9,11,9,8,11],[3,10,1,11,10,3],[0,10,1,0,8,10,8,11,10],[3,9,0,3,11,9,11,10,9],[9,8,10,10,8,11],[4,7,8],[4,3,0,7,3,4],[0,1,9,8,4,7],[4,1,9,4,7,1,7,3,1],[1,2,10,8,4,7],[3,4,7,3,0,4,1,2,10],[9,2,10,9,0,2,8,4,7],[2,10,9,2,9,7,2,7,3,7,9,4],[8,4,7,3,11,2],[11,4,7,11,2,4,2,0,4],[9,0,1,8,4,7,2,3,11],[4,7,11,9,4,11,9,11,2,9,2,1],[3,10,1,3,11,10,7,8,4],[1,11,10,1,4,11,1,0,4,7,11,4],[4,7,8,9,0,11,9,11,10,11,0,3],[4,7,11,4,11,9,9,11,10],[9,5,4],[9,5,4,0,8,3],[0,5,4,1,5,0],[8,5,4,8,3,5,3,1,5],[1,2,10,9,5,4],[3,0,8,1,2,10,4,9,5],[5,2,10,5,4,2,4,0,2],[2,10,5,3,2,5,3,5,4,3,4,8],[9,5,4,2,3,11],[0,11,2,0,8,11,4,9,5],[0,5,4,0,1,5,2,3,11],[2,1,5,2,5,8,2,8,11,4,8,5],[10,3,11,10,1,3,9,5,4],[4,9,5,0,8,1,8,10,1,8,11,10],[5,4,0,5,0,11,5,11,10,11,0,3],[5,4,8,5,8,10,10,8,11],[9,7,8,5,7,9],[9,3,0,9,5,3,5,7,3],[0,7,8,0,1,7,1,5,7],[1,5,3,3,5,7],[9,7,8,9,5,7,10,1,2],[10,1,2,9,5,0,5,3,0,5,7,3],[8,0,2,8,2,5,8,5,7,10,5,2],[2,10,5,2,5,3,3,5,7],[7,9,5,7,8,9,3,11,2],[9,5,7,9,7,2,9,2,0,2,7,11],[2,3,11,0,1,8,1,7,8,1,5,7],[11,2,1,11,1,7,7,1,5],[9,5,8,8,5,7,10,1,3,10,3,11],[5,7,0,5,0,9,7,11,0,1,0,10,11,10,0],[11,10,0,11,0,3,10,5,0,8,0,7,5,7,0],[11,10,5,7,11,5],[10,6,5],[0,8,3,5,10,6],[9,0,1,5,10,6],[1,8,3,1,9,8,5,10,6],[1,6,5,2,6,1],[1,6,5,1,2,6,3,0,8],[9,6,5,9,0,6,0,2,6],[5,9,8,5,8,2,5,2,6,3,2,8],[2,3,11,10,6,5],[11,0,8,11,2,0,10,6,5],[0,1,9,2,3,11,5,10,6],[5,10,6,1,9,2,9,11,2,9,8,11],[6,3,11,6,5,3,5,1,3],[0,8,11,0,11,5,0,5,1,5,11,6],[3,11,6,0,3,6,0,6,5,0,5,9],[6,5,9,6,9,11,11,9,8],[5,10,6,4,7,8],[4,3,0,4,7,3,6,5,10],[1,9,0,5,10,6,8,4,7],[10,6,5,1,9,7,1,7,3,7,9,4],[6,1,2,6,5,1,4,7,8],[1,2,5,5,2,6,3,0,4,3,4,7],[8,4,7,9,0,5,0,6,5,0,2,6],[7,3,9,7,9,4,3,2,9,5,9,6,2,6,9],[3,11,2,7,8,4,10,6,5],[5,10,6,4,7,2,4,2,0,2,7,11],[0,1,9,4,7,8,2,3,11,5,10,6],[9,2,1,9,11,2,9,4,11,7,11,4,5,10,6],[8,4,7,3,11,5,3,5,1,5,11,6],[5,1,11,5,11,6,1,0,11,7,11,4,0,4,11],[0,5,9,0,6,5,0,3,6,11,6,3,8,4,7],[6,5,9,6,9,11,4,7,9,7,11,9],[10,4,9,6,4,10],[4,10,6,4,9,10,0,8,3],[10,0,1,10,6,0,6,4,0],[8,3,1,8,1,6,8,6,4,6,1,10],[1,4,9,1,2,4,2,6,4],[3,0,8,1,2,9,2,4,9,2,6,4],[0,2,4,4,2,6],[8,3,2,8,2,4,4,2,6],[10,4,9,10,6,4,11,2,3],[0,8,2,2,8,11,4,9,10,4,10,6],[3,11,2,0,1,6,0,6,4,6,1,10],[6,4,1,6,1,10,4,8,1,2,1,11,8,11,1],[9,6,4,9,3,6,9,1,3,11,6,3],[8,11,1,8,1,0,11,6,1,9,1,4,6,4,1],[3,11,6,3,6,0,0,6,4],[6,4,8,11,6,8],[7,10,6,7,8,10,8,9,10],[0,7,3,0,10,7,0,9,10,6,7,10],[10,6,7,1,10,7,1,7,8,1,8,0],[10,6,7,10,7,1,1,7,3],[1,2,6,1,6,8,1,8,9,8,6,7],[2,6,9,2,9,1,6,7,9,0,9,3,7,3,9],[7,8,0,7,0,6,6,0,2],[7,3,2,6,7,2],[2,3,11,10,6,8,10,8,9,8,6,7],[2,0,7,2,7,11,0,9,7,6,7,10,9,10,7],[1,8,0,1,7,8,1,10,7,6,7,10,2,3,11],[11,2,1,11,1,7,10,6,1,6,7,1],[8,9,6,8,6,7,9,1,6,11,6,3,1,3,6],[0,9,1,11,6,7],[7,8,0,7,0,6,3,11,0,11,6,0],[7,11,6],[7,6,11],[3,0,8,11,7,6],[0,1,9,11,7,6],[8,1,9,8,3,1,11,7,6],[10,1,2,6,11,7],[1,2,10,3,0,8,6,11,7],[2,9,0,2,10,9,6,11,7],[6,11,7,2,10,3,10,8,3,10,9,8],[7,2,3,6,2,7],[7,0,8,7,6,0,6,2,0],[2,7,6,2,3,7,0,1,9],[1,6,2,1,8,6,1,9,8,8,7,6],[10,7,6,10,1,7,1,3,7],[10,7,6,1,7,10,1,8,7,1,0,8],[0,3,7,0,7,10,0,10,9,6,10,7],[7,6,10,7,10,8,8,10,9],[6,8,4,11,8,6],[3,6,11,3,0,6,0,4,6],[8,6,11,8,4,6,9,0,1],[9,4,6,9,6,3,9,3,1,11,3,6],[6,8,4,6,11,8,2,10,1],[1,2,10,3,0,11,0,6,11,0,4,6],[4,11,8,4,6,11,0,2,9,2,10,9],[10,9,3,10,3,2,9,4,3,11,3,6,4,6,3],[8,2,3,8,4,2,4,6,2],[0,4,2,4,6,2],[1,9,0,2,3,4,2,4,6,4,3,8],[1,9,4,1,4,2,2,4,6],[8,1,3,8,6,1,8,4,6,6,10,1],[10,1,0,10,0,6,6,0,4],[4,6,3,4,3,8,6,10,3,0,3,9,10,9,3],[10,9,4,6,10,4],[4,9,5,7,6,11],[0,8,3,4,9,5,11,7,6],[5,0,1,5,4,0,7,6,11],[11,7,6,8,3,4,3,5,4,3,1,5],[9,5,4,10,1,2,7,6,11],[6,11,7,1,2,10,0,8,3,4,9,5],[7,6,11,5,4,10,4,2,10,4,0,2],[3,4,8,3,5,4,3,2,5,10,5,2,11,7,6],[7,2,3,7,6,2,5,4,9],[9,5,4,0,8,6,0,6,2,6,8,7],[3,6,2,3,7,6,1,5,0,5,4,0],[6,2,8,6,8,7,2,1,8,4,8,5,1,5,8],[9,5,4,10,1,6,1,7,6,1,3,7],[1,6,10,1,7,6,1,0,7,8,7,0,9,5,4],[4,0,10,4,10,5,0,3,10,6,10,7,3,7,10],[7,6,10,7,10,8,5,4,10,4,8,10],[6,9,5,6,11,9,11,8,9],[3,6,11,0,6,3,0,5,6,0,9,5],[0,11,8,0,5,11,0,1,5,5,6,11],[6,11,3,6,3,5,5,3,1],[1,2,10,9,5,11,9,11,8,11,5,6],[0,11,3,0,6,11,0,9,6,5,6,9,1,2,10],[11,8,5,11,5,6,8,0,5,10,5,2,0,2,5],[6,11,3,6,3,5,2,10,3,10,5,3],[5,8,9,5,2,8,5,6,2,3,8,2],[9,5,6,9,6,0,0,6,2],[1,5,8,1,8,0,5,6,8,3,8,2,6,2,8],[1,5,6,2,1,6],[1,3,6,1,6,10,3,8,6,5,6,9,8,9,6],[10,1,0,10,0,6,9,5,0,5,6,0],[0,3,8,5,6,10],[10,5,6],[11,5,10,7,5,11],[11,5,10,11,7,5,8,3,0],[5,11,7,5,10,11,1,9,0],[10,7,5,10,11,7,9,8,1,8,3,1],[11,1,2,11,7,1,7,5,1],[0,8,3,1,2,7,1,7,5,7,2,11],[9,7,5,9,2,7,9,0,2,2,11,7],[7,5,2,7,2,11,5,9,2,3,2,8,9,8,2],[2,5,10,2,3,5,3,7,5],[8,2,0,8,5,2,8,7,5,10,2,5],[9,0,1,5,10,3,5,3,7,3,10,2],[9,8,2,9,2,1,8,7,2,10,2,5,7,5,2],[1,3,5,3,7,5],[0,8,7,0,7,1,1,7,5],[9,0,3,9,3,5,5,3,7],[9,8,7,5,9,7],[5,8,4,5,10,8,10,11,8],[5,0,4,5,11,0,5,10,11,11,3,0],[0,1,9,8,4,10,8,10,11,10,4,5],[10,11,4,10,4,5,11,3,4,9,4,1,3,1,4],[2,5,1,2,8,5,2,11,8,4,5,8],[0,4,11,0,11,3,4,5,11,2,11,1,5,1,11],[0,2,5,0,5,9,2,11,5,4,5,8,11,8,5],[9,4,5,2,11,3],[2,5,10,3,5,2,3,4,5,3,8,4],[5,10,2,5,2,4,4,2,0],[3,10,2,3,5,10,3,8,5,4,5,8,0,1,9],[5,10,2,5,2,4,1,9,2,9,4,2],[8,4,5,8,5,3,3,5,1],[0,4,5,1,0,5],[8,4,5,8,5,3,9,0,5,0,3,5],[9,4,5],[4,11,7,4,9,11,9,10,11],[0,8,3,4,9,7,9,11,7,9,10,11],[1,10,11,1,11,4,1,4,0,7,4,11],[3,1,4,3,4,8,1,10,4,7,4,11,10,11,4],[4,11,7,9,11,4,9,2,11,9,1,2],[9,7,4,9,11,7,9,1,11,2,11,1,0,8,3],[11,7,4,11,4,2,2,4,0],[11,7,4,11,4,2,8,3,4,3,2,4],[2,9,10,2,7,9,2,3,7,7,4,9],[9,10,7,9,7,4,10,2,7,8,7,0,2,0,7],[3,7,10,3,10,2,7,4,10,1,10,0,4,0,10],[1,10,2,8,7,4],[4,9,1,4,1,7,7,1,3],[4,9,1,4,1,7,0,8,1,8,7,1],[4,0,3,7,4,3],[4,8,7],[9,10,8,10,11,8],[3,0,9,3,9,11,11,9,10],[0,1,10,0,10,8,8,10,11],[3,1,10,11,3,10],[1,2,11,1,11,9,9,11,8],[3,0,9,3,9,11,1,2,9,2,11,9],[0,2,11,8,0,11],[3,2,11],[2,3,8,2,8,10,10,8,9],[9,10,2,0,9,2],[2,3,8,2,8,10,0,1,8,1,10,8],[1,10,2],[1,3,8,9,1,8],[0,9,1],[0,3,8],[]],a=[[0,0,0],[1,0,0],[1,1,0],[0,1,0],[0,0,1],[1,0,1],[1,1,1],[0,1,1]],o=[[0,1],[1,2],[2,3],[3,0],[4,5],[5,6],[6,7],[7,4],[0,4],[1,5],[2,6],[3,7]];e.marchingCubes=function(t,r,e){e||(e=[[0,0,0],t]);for(var s=[0,0,0],u=[0,0,0],c=0;3>c;++c)s[c]=(e[1][c]-e[0][c])/t[c],u[c]=e[0][c];var f=[],l=[],h=0,p=Array(8),d=Array(12),v=[0,0,0];for(v[2]=0;v[2]<t[2]-1;++v[2],h+=t[0])for(v[1]=0;v[1]<t[1]-1;++v[1],++h)for(v[0]=0;v[0]<t[0]-1;++v[0],++h){for(var g=0,c=0;8>c;++c){var m=a[c],y=r(s[0]*(v[0]+m[0])+u[0],s[1]*(v[1]+m[1])+u[1],s[2]*(v[2]+m[2])+u[2]);p[c]=y,g|=y>0?1<<c:0}var b=n[g];if(0!==b){for(var c=0;12>c;++c)if(0!==(b&1<<c)){d[c]=f.length;var _=[0,0,0],w=o[c],E=a[w[0]],A=a[w[1]],x=p[w[0]],T=p[w[1]],M=x-T,I=0;Math.abs(M)>1e-6&&(I=x/M);for(var L=0;3>L;++L)_[L]=s[L]*(v[L]+E[L]+I*(A[L]-E[L]))+u[L];f.push(_)}for(var j=i[g],c=0;j.length>c;c+=3)l.push([d[j[c]],d[j[c+1]],d[j[c+2]]])}}return{positions:f,cells:l}}},{}],4:[function(t,r,e){var n=[[0,0,0],[1,0,0],[1,1,0],[0,1,0],[0,0,1],[1,0,1],[1,1,1],[0,1,1]],i=[[0,2,3,7],[0,6,2,7],[0,4,6,7],[0,6,1,2],[0,1,6,4],[5,6,1,4]];e.marchingTetrahedra=function(t,r,e){function a(t,r){var e=h[t],i=h[r],a=n[t],u=n[r],f=[p[0],p[1],p[2]],l=e-i;Math.abs(l)>1e-6&&(l=e/l);for(var d=0;3>d;++d)f[d]=o[d]*(f[d]+a[d]+l*(u[d]-a[d]))+s[d];return c.push(f),c.length-1}e||(e=[[0,0,0],t]);for(var o=[0,0,0],s=[0,0,0],u=0;3>u;++u)o[u]=(e[1][u]-e[0][u])/t[u],s[u]=e[0][u];var c=[],f=[],l=0,h=new Float32Array(8),p=(new Int32Array(12),[0,0,0]);for(p[2]=0;p[2]<t[2]-1;++p[2],l+=t[0])for(p[1]=0;p[1]<t[1]-1;++p[1],++l)for(p[0]=0;p[0]<t[0]-1;++p[0],++l){for(var u=0;8>u;++u){var d=n[u];h[u]=r(o[0]*(p[0]+d[0])+s[0],o[1]*(p[1]+d[1])+s[1],o[2]*(p[2]+d[2])+s[2])}for(var u=0;i.length>u;++u){var v=i[u],g=0;switch(0>h[v[0]]&&(g|=1),0>h[v[1]]&&(g|=2),0>h[v[2]]&&(g|=4),0>h[v[3]]&&(g|=8),g){case 0:case 15:break;case 14:f.push([a(v[0],v[1]),a(v[0],v[3]),a(v[0],v[2])]);break;case 1:f.push([a(v[0],v[1]),a(v[0],v[2]),a(v[0],v[3])]);break;case 13:f.push([a(v[1],v[0]),a(v[1],v[2]),a(v[1],v[3])]);break;case 2:f.push([a(v[1],v[0]),a(v[1],v[3]),a(v[1],v[2])]);break;case 12:f.push([a(v[1],v[2]),a(v[1],v[3]),a(v[0],v[3]),a(v[0],v[2])]);break;case 3:f.push([a(v[1],v[2]),a(v[0],v[2]),a(v[0],v[3]),a(v[1],v[3])]);break;case 4:f.push([a(v[2],v[0]),a(v[2],v[1]),a(v[2],v[3])]);break;case 11:f.push([a(v[2],v[0]),a(v[2],v[3]),a(v[2],v[1])]);break;case 5:f.push([a(v[0],v[1]),a(v[1],v[2]),a(v[2],v[3]),a(v[0],v[3])]);break;case 10:f.push([a(v[0],v[1]),a(v[0],v[3]),a(v[2],v[3]),a(v[1],v[2])]);break;case 6:f.push([a(v[2],v[3]),a(v[0],v[2]),a(v[0],v[1]),a(v[1],v[3])]);break;case 9:f.push([a(v[2],v[3]),a(v[1],v[3]),a(v[0],v[1]),a(v[0],v[2])]);break;case 7:f.push([a(v[3],v[0]),a(v[3],v[1]),a(v[3],v[2])]);break;case 8:f.push([a(v[3],v[0]),a(v[3],v[2]),a(v[3],v[1])])}}}return{positions:c,cells:f}}},{}],5:[function(t,r,e){"use strict";var n=new Int32Array(24),i=new Int32Array(256);(function(){for(var t=0,r=0;8>r;++r)for(var e=1;4>=e;e<<=1){var a=r^e;a>=r&&(n[t++]=r,n[t++]=a)}for(var r=0;256>r;++r){for(var o=0,e=0;24>e;e+=2){var s=!!(r&1<<n[e]),u=!!(r&1<<n[e+1]);o|=s!==u?1<<(e>>1):0}i[r]=o}})();var a=Array(4096);(function(){for(var t=0;a.length>t;++t)a[t]=0})(),e.surfaceNets=function(t,r,e){e||(e=[[0,0,0],t]);for(var o=[0,0,0],s=[0,0,0],u=0;3>u;++u)o[u]=(e[1][u]-e[0][u])/t[u],s[u]=e[0][u];var c=[],f=[],l=0,h=[0,0,0],p=[1,t[0]+1,(t[0]+1)*(t[1]+1)],d=[0,0,0,0,0,0,0,0],v=1;if(2*p[2]>a.length){var g=a.length;for(a.length=2*p[2];a.length>g;)a[g++]=0}for(h[2]=0;h[2]<t[2]-1;++h[2],l+=t[0],v^=1,p[2]=-p[2]){var m=1+(t[0]+1)*(1+v*(t[1]+1));for(h[1]=0;h[1]<t[1]-1;++h[1],++l,m+=2)for(h[0]=0;h[0]<t[0]-1;++h[0],++l,++m){for(var y=0,b=0,_=0;2>_;++_)for(var w=0;2>w;++w)for(var u=0;2>u;++u,++b){var E=r(o[0]*(h[0]+u)+s[0],o[1]*(h[1]+w)+s[1],o[2]*(h[2]+_)+s[2]);d[b]=E,y|=0>E?1<<b:0}if(0!==y&&255!==y){for(var A=i[y],x=[0,0,0],T=0,u=0;12>u;++u)if(A&1<<u){++T;var M=n[u<<1],I=n[(u<<1)+1],L=d[M],j=d[I],S=L-j;if(Math.abs(S)>1e-6){S=L/S;for(var w=0,_=1;3>w;++w,_<<=1){var N=M&_,R=I&_;x[w]+=N!==R?N?1-S:S:N?1:0}}}for(var F=1/T,u=0;3>u;++u)x[u]=o[u]*(h[u]+F*x[u])+s[u];a[m]=c.length,c.push(x);for(var u=0;3>u;++u)if(A&1<<u){var k=(u+1)%3,C=(u+2)%3;if(0!==h[k]&&0!==h[C]){var U=p[k],P=p[C];1&y?(f.push([a[m],a[m-U],a[m-P]]),f.push([a[m-P],a[m-U],a[m-U-P]])):(f.push([a[m],a[m-P],a[m-U]]),f.push([a[m-U],a[m-P],a[m-U-P]]))}}}}}return{positions:c,cells:f}}},{}]},{},[]),require=function e(t,r,n){function i(o,s){if(!r[o]){if(!t[o]){var u="function"==typeof require&&require;if(!s&&u)return u(o,!0);if(a)return a(o,!0);throw Error("Cannot find module '"+o+"'")}var c=r[o]={exports:{}};t[o][0].call(c.exports,function(r){var e=t[o][1][r];return i(e?e:r)},c,c.exports,e,t,r,n)}return r[o].exports}for(var a="function"==typeof require&&require,o=0;n.length>o;o++)i(n[o]);return i}({"0QExjN":[function(t,r,e){(function(){"use strict";var t={};e===void 0?"function"==typeof define&&"object"==typeof define.amd&&define.amd?(t.exports={},define(function(){return t.exports})):t.exports=window:t.exports=e,function(t){if(!r)var r=1e-6;if(!e)var e="undefined"!=typeof Float32Array?Float32Array:Array;var n={};n.setMatrixArrayType=function(t){e=t},t!==void 0&&(t.glMatrix=n);var i={};i.create=function(){var t=new e(2);return t[0]=0,t[1]=0,t},i.clone=function(t){var r=new e(2);return r[0]=t[0],r[1]=t[1],r},i.fromValues=function(t,r){var n=new e(2);return n[0]=t,n[1]=r,n},i.copy=function(t,r){return t[0]=r[0],t[1]=r[1],t},i.set=function(t,r,e){return t[0]=r,t[1]=e,t},i.add=function(t,r,e){return t[0]=r[0]+e[0],t[1]=r[1]+e[1],t},i.subtract=function(t,r,e){return t[0]=r[0]-e[0],t[1]=r[1]-e[1],t},i.sub=i.subtract,i.multiply=function(t,r,e){return t[0]=r[0]*e[0],t[1]=r[1]*e[1],t},i.mul=i.multiply,i.divide=function(t,r,e){return t[0]=r[0]/e[0],t[1]=r[1]/e[1],t},i.div=i.divide,i.min=function(t,r,e){return t[0]=Math.min(r[0],e[0]),t[1]=Math.min(r[1],e[1]),t},i.max=function(t,r,e){return t[0]=Math.max(r[0],e[0]),t[1]=Math.max(r[1],e[1]),t},i.scale=function(t,r,e){return t[0]=r[0]*e,t[1]=r[1]*e,t},i.distance=function(t,r){var e=r[0]-t[0],n=r[1]-t[1];return Math.sqrt(e*e+n*n)},i.dist=i.distance,i.squaredDistance=function(t,r){var e=r[0]-t[0],n=r[1]-t[1];return e*e+n*n},i.sqrDist=i.squaredDistance,i.length=function(t){var r=t[0],e=t[1];return Math.sqrt(r*r+e*e)},i.len=i.length,i.squaredLength=function(t){var r=t[0],e=t[1];return r*r+e*e},i.sqrLen=i.squaredLength,i.negate=function(t,r){return t[0]=-r[0],t[1]=-r[1],t},i.normalize=function(t,r){var e=r[0],n=r[1],i=e*e+n*n;return i>0&&(i=1/Math.sqrt(i),t[0]=r[0]*i,t[1]=r[1]*i),t},i.dot=function(t,r){return t[0]*r[0]+t[1]*r[1]},i.cross=function(t,r,e){var n=r[0]*e[1]-r[1]*e[0];return t[0]=t[1]=0,t[2]=n,t},i.lerp=function(t,r,e,n){var i=r[0],a=r[1];return t[0]=i+n*(e[0]-i),t[1]=a+n*(e[1]-a),t},i.transformMat2=function(t,r,e){var n=r[0],i=r[1];return t[0]=e[0]*n+e[2]*i,t[1]=e[1]*n+e[3]*i,t},i.transformMat2d=function(t,r,e){var n=r[0],i=r[1];return t[0]=e[0]*n+e[2]*i+e[4],t[1]=e[1]*n+e[3]*i+e[5],t},i.transformMat3=function(t,r,e){var n=r[0],i=r[1];return t[0]=e[0]*n+e[3]*i+e[6],t[1]=e[1]*n+e[4]*i+e[7],t},i.transformMat4=function(t,r,e){var n=r[0],i=r[1];return t[0]=e[0]*n+e[4]*i+e[12],t[1]=e[1]*n+e[5]*i+e[13],t},i.forEach=function(){var t=i.create();return function(r,e,n,i,a,o){var s,u;for(e||(e=2),n||(n=0),u=i?Math.min(i*e+n,r.length):r.length,s=n;u>s;s+=e)t[0]=r[s],t[1]=r[s+1],a(t,t,o),r[s]=t[0],r[s+1]=t[1];return r}}(),i.str=function(t){return"vec2("+t[0]+", "+t[1]+")"},t!==void 0&&(t.vec2=i);var a={};a.create=function(){var t=new e(3);return t[0]=0,t[1]=0,t[2]=0,t},a.clone=function(t){var r=new e(3);return r[0]=t[0],r[1]=t[1],r[2]=t[2],r},a.fromValues=function(t,r,n){var i=new e(3);return i[0]=t,i[1]=r,i[2]=n,i},a.copy=function(t,r){return t[0]=r[0],t[1]=r[1],t[2]=r[2],t},a.set=function(t,r,e,n){return t[0]=r,t[1]=e,t[2]=n,t},a.add=function(t,r,e){return t[0]=r[0]+e[0],t[1]=r[1]+e[1],t[2]=r[2]+e[2],t},a.subtract=function(t,r,e){return t[0]=r[0]-e[0],t[1]=r[1]-e[1],t[2]=r[2]-e[2],t
},a.sub=a.subtract,a.multiply=function(t,r,e){return t[0]=r[0]*e[0],t[1]=r[1]*e[1],t[2]=r[2]*e[2],t},a.mul=a.multiply,a.divide=function(t,r,e){return t[0]=r[0]/e[0],t[1]=r[1]/e[1],t[2]=r[2]/e[2],t},a.div=a.divide,a.min=function(t,r,e){return t[0]=Math.min(r[0],e[0]),t[1]=Math.min(r[1],e[1]),t[2]=Math.min(r[2],e[2]),t},a.max=function(t,r,e){return t[0]=Math.max(r[0],e[0]),t[1]=Math.max(r[1],e[1]),t[2]=Math.max(r[2],e[2]),t},a.scale=function(t,r,e){return t[0]=r[0]*e,t[1]=r[1]*e,t[2]=r[2]*e,t},a.distance=function(t,r){var e=r[0]-t[0],n=r[1]-t[1],i=r[2]-t[2];return Math.sqrt(e*e+n*n+i*i)},a.dist=a.distance,a.squaredDistance=function(t,r){var e=r[0]-t[0],n=r[1]-t[1],i=r[2]-t[2];return e*e+n*n+i*i},a.sqrDist=a.squaredDistance,a.length=function(t){var r=t[0],e=t[1],n=t[2];return Math.sqrt(r*r+e*e+n*n)},a.len=a.length,a.squaredLength=function(t){var r=t[0],e=t[1],n=t[2];return r*r+e*e+n*n},a.sqrLen=a.squaredLength,a.negate=function(t,r){return t[0]=-r[0],t[1]=-r[1],t[2]=-r[2],t},a.normalize=function(t,r){var e=r[0],n=r[1],i=r[2],a=e*e+n*n+i*i;return a>0&&(a=1/Math.sqrt(a),t[0]=r[0]*a,t[1]=r[1]*a,t[2]=r[2]*a),t},a.dot=function(t,r){return t[0]*r[0]+t[1]*r[1]+t[2]*r[2]},a.cross=function(t,r,e){var n=r[0],i=r[1],a=r[2],o=e[0],s=e[1],u=e[2];return t[0]=i*u-a*s,t[1]=a*o-n*u,t[2]=n*s-i*o,t},a.lerp=function(t,r,e,n){var i=r[0],a=r[1],o=r[2];return t[0]=i+n*(e[0]-i),t[1]=a+n*(e[1]-a),t[2]=o+n*(e[2]-o),t},a.transformMat4=function(t,r,e){var n=r[0],i=r[1],a=r[2];return t[0]=e[0]*n+e[4]*i+e[8]*a+e[12],t[1]=e[1]*n+e[5]*i+e[9]*a+e[13],t[2]=e[2]*n+e[6]*i+e[10]*a+e[14],t},a.transformQuat=function(t,r,e){var n=r[0],i=r[1],a=r[2],o=e[0],s=e[1],u=e[2],c=e[3],f=c*n+s*a-u*i,l=c*i+u*n-o*a,h=c*a+o*i-s*n,p=-o*n-s*i-u*a;return t[0]=f*c+p*-o+l*-u-h*-s,t[1]=l*c+p*-s+h*-o-f*-u,t[2]=h*c+p*-u+f*-s-l*-o,t},a.forEach=function(){var t=a.create();return function(r,e,n,i,a,o){var s,u;for(e||(e=3),n||(n=0),u=i?Math.min(i*e+n,r.length):r.length,s=n;u>s;s+=e)t[0]=r[s],t[1]=r[s+1],t[2]=r[s+2],a(t,t,o),r[s]=t[0],r[s+1]=t[1],r[s+2]=t[2];return r}}(),a.str=function(t){return"vec3("+t[0]+", "+t[1]+", "+t[2]+")"},t!==void 0&&(t.vec3=a);var o={};o.create=function(){var t=new e(4);return t[0]=0,t[1]=0,t[2]=0,t[3]=0,t},o.clone=function(t){var r=new e(4);return r[0]=t[0],r[1]=t[1],r[2]=t[2],r[3]=t[3],r},o.fromValues=function(t,r,n,i){var a=new e(4);return a[0]=t,a[1]=r,a[2]=n,a[3]=i,a},o.copy=function(t,r){return t[0]=r[0],t[1]=r[1],t[2]=r[2],t[3]=r[3],t},o.set=function(t,r,e,n,i){return t[0]=r,t[1]=e,t[2]=n,t[3]=i,t},o.add=function(t,r,e){return t[0]=r[0]+e[0],t[1]=r[1]+e[1],t[2]=r[2]+e[2],t[3]=r[3]+e[3],t},o.subtract=function(t,r,e){return t[0]=r[0]-e[0],t[1]=r[1]-e[1],t[2]=r[2]-e[2],t[3]=r[3]-e[3],t},o.sub=o.subtract,o.multiply=function(t,r,e){return t[0]=r[0]*e[0],t[1]=r[1]*e[1],t[2]=r[2]*e[2],t[3]=r[3]*e[3],t},o.mul=o.multiply,o.divide=function(t,r,e){return t[0]=r[0]/e[0],t[1]=r[1]/e[1],t[2]=r[2]/e[2],t[3]=r[3]/e[3],t},o.div=o.divide,o.min=function(t,r,e){return t[0]=Math.min(r[0],e[0]),t[1]=Math.min(r[1],e[1]),t[2]=Math.min(r[2],e[2]),t[3]=Math.min(r[3],e[3]),t},o.max=function(t,r,e){return t[0]=Math.max(r[0],e[0]),t[1]=Math.max(r[1],e[1]),t[2]=Math.max(r[2],e[2]),t[3]=Math.max(r[3],e[3]),t},o.scale=function(t,r,e){return t[0]=r[0]*e,t[1]=r[1]*e,t[2]=r[2]*e,t[3]=r[3]*e,t},o.distance=function(t,r){var e=r[0]-t[0],n=r[1]-t[1],i=r[2]-t[2],a=r[3]-t[3];return Math.sqrt(e*e+n*n+i*i+a*a)},o.dist=o.distance,o.squaredDistance=function(t,r){var e=r[0]-t[0],n=r[1]-t[1],i=r[2]-t[2],a=r[3]-t[3];return e*e+n*n+i*i+a*a},o.sqrDist=o.squaredDistance,o.length=function(t){var r=t[0],e=t[1],n=t[2],i=t[3];return Math.sqrt(r*r+e*e+n*n+i*i)},o.len=o.length,o.squaredLength=function(t){var r=t[0],e=t[1],n=t[2],i=t[3];return r*r+e*e+n*n+i*i},o.sqrLen=o.squaredLength,o.negate=function(t,r){return t[0]=-r[0],t[1]=-r[1],t[2]=-r[2],t[3]=-r[3],t},o.normalize=function(t,r){var e=r[0],n=r[1],i=r[2],a=r[3],o=e*e+n*n+i*i+a*a;return o>0&&(o=1/Math.sqrt(o),t[0]=r[0]*o,t[1]=r[1]*o,t[2]=r[2]*o,t[3]=r[3]*o),t},o.dot=function(t,r){return t[0]*r[0]+t[1]*r[1]+t[2]*r[2]+t[3]*r[3]},o.lerp=function(t,r,e,n){var i=r[0],a=r[1],o=r[2],s=r[3];return t[0]=i+n*(e[0]-i),t[1]=a+n*(e[1]-a),t[2]=o+n*(e[2]-o),t[3]=s+n*(e[3]-s),t},o.transformMat4=function(t,r,e){var n=r[0],i=r[1],a=r[2],o=r[3];return t[0]=e[0]*n+e[4]*i+e[8]*a+e[12]*o,t[1]=e[1]*n+e[5]*i+e[9]*a+e[13]*o,t[2]=e[2]*n+e[6]*i+e[10]*a+e[14]*o,t[3]=e[3]*n+e[7]*i+e[11]*a+e[15]*o,t},o.transformQuat=function(t,r,e){var n=r[0],i=r[1],a=r[2],o=e[0],s=e[1],u=e[2],c=e[3],f=c*n+s*a-u*i,l=c*i+u*n-o*a,h=c*a+o*i-s*n,p=-o*n-s*i-u*a;return t[0]=f*c+p*-o+l*-u-h*-s,t[1]=l*c+p*-s+h*-o-f*-u,t[2]=h*c+p*-u+f*-s-l*-o,t},o.forEach=function(){var t=o.create();return function(r,e,n,i,a,o){var s,u;for(e||(e=4),n||(n=0),u=i?Math.min(i*e+n,r.length):r.length,s=n;u>s;s+=e)t[0]=r[s],t[1]=r[s+1],t[2]=r[s+2],t[3]=r[s+3],a(t,t,o),r[s]=t[0],r[s+1]=t[1],r[s+2]=t[2],r[s+3]=t[3];return r}}(),o.str=function(t){return"vec4("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+")"},t!==void 0&&(t.vec4=o);var s={};new Float32Array([1,0,0,1]),s.create=function(){var t=new e(4);return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t},s.clone=function(t){var r=new e(4);return r[0]=t[0],r[1]=t[1],r[2]=t[2],r[3]=t[3],r},s.copy=function(t,r){return t[0]=r[0],t[1]=r[1],t[2]=r[2],t[3]=r[3],t},s.identity=function(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t},s.transpose=function(t,r){if(t===r){var e=r[1];t[1]=r[2],t[2]=e}else t[0]=r[0],t[1]=r[2],t[2]=r[1],t[3]=r[3];return t},s.invert=function(t,r){var e=r[0],n=r[1],i=r[2],a=r[3],o=e*a-i*n;return o?(o=1/o,t[0]=a*o,t[1]=-n*o,t[2]=-i*o,t[3]=e*o,t):null},s.adjoint=function(t,r){var e=r[0];return t[0]=r[3],t[1]=-r[1],t[2]=-r[2],t[3]=e,t},s.determinant=function(t){return t[0]*t[3]-t[2]*t[1]},s.multiply=function(t,r,e){var n=r[0],i=r[1],a=r[2],o=r[3],s=e[0],u=e[1],c=e[2],f=e[3];return t[0]=n*s+i*c,t[1]=n*u+i*f,t[2]=a*s+o*c,t[3]=a*u+o*f,t},s.mul=s.multiply,s.rotate=function(t,r,e){var n=r[0],i=r[1],a=r[2],o=r[3],s=Math.sin(e),u=Math.cos(e);return t[0]=n*u+i*s,t[1]=n*-s+i*u,t[2]=a*u+o*s,t[3]=a*-s+o*u,t},s.scale=function(t,r,e){var n=r[0],i=r[1],a=r[2],o=r[3],s=e[0],u=e[1];return t[0]=n*s,t[1]=i*u,t[2]=a*s,t[3]=o*u,t},s.str=function(t){return"mat2("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+")"},t!==void 0&&(t.mat2=s);var u={};new Float32Array([1,0,0,1,0,0]),u.create=function(){var t=new e(6);return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t[4]=0,t[5]=0,t},u.clone=function(t){var r=new e(6);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},u.copy=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},u.identity=function(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t[4]=0,t[5]=0,t},u.invert=function(t,r){var e=r[0],n=r[1],i=r[2],a=r[3],o=r[4],s=r[5],u=e*a-n*i;return u?(u=1/u,t[0]=a*u,t[1]=-n*u,t[2]=-i*u,t[3]=e*u,t[4]=(i*s-a*o)*u,t[5]=(n*o-e*s)*u,t):null},u.determinant=function(t){return t[0]*t[3]-t[1]*t[2]},u.multiply=function(t,r,e){var n=r[0],i=r[1],a=r[2],o=r[3],s=r[4],u=r[5],c=e[0],f=e[1],l=e[2],h=e[3],p=e[4],d=e[5];return t[0]=n*c+i*l,t[1]=n*f+i*h,t[2]=a*c+o*l,t[3]=a*f+o*h,t[4]=c*s+l*u+p,t[5]=f*s+h*u+d,t},u.mul=u.multiply,u.rotate=function(t,r,e){var n=r[0],i=r[1],a=r[2],o=r[3],s=r[4],u=r[5],c=Math.sin(e),f=Math.cos(e);return t[0]=n*f+i*c,t[1]=-n*c+i*f,t[2]=a*f+o*c,t[3]=-a*c+f*o,t[4]=f*s+c*u,t[5]=f*u-c*s,t},u.scale=function(t,r,e){var n=e[0],i=e[1];return t[0]=r[0]*n,t[1]=r[1]*i,t[2]=r[2]*n,t[3]=r[3]*i,t[4]=r[4]*n,t[5]=r[5]*i,t},u.translate=function(t,r,e){return t[0]=r[0],t[1]=r[1],t[2]=r[2],t[3]=r[3],t[4]=r[4]+e[0],t[5]=r[5]+e[1],t},u.str=function(t){return"mat2d("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+", "+t[4]+", "+t[5]+")"},t!==void 0&&(t.mat2d=u);var c={};new Float32Array([1,0,0,0,1,0,0,0,1]),c.create=function(){var t=new e(9);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},c.clone=function(t){var r=new e(9);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},c.copy=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},c.identity=function(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},c.transpose=function(t,r){if(t===r){var e=r[1],n=r[2],i=r[5];t[1]=r[3],t[2]=r[6],t[3]=e,t[5]=r[7],t[6]=n,t[7]=i}else t[0]=r[0],t[1]=r[3],t[2]=r[6],t[3]=r[1],t[4]=r[4],t[5]=r[7],t[6]=r[2],t[7]=r[5],t[8]=r[8];return t},c.invert=function(t,r){var e=r[0],n=r[1],i=r[2],a=r[3],o=r[4],s=r[5],u=r[6],c=r[7],f=r[8],l=f*o-s*c,h=-f*a+s*u,p=c*a-o*u,d=e*l+n*h+i*p;return d?(d=1/d,t[0]=l*d,t[1]=(-f*n+i*c)*d,t[2]=(s*n-i*o)*d,t[3]=h*d,t[4]=(f*e-i*u)*d,t[5]=(-s*e+i*a)*d,t[6]=p*d,t[7]=(-c*e+n*u)*d,t[8]=(o*e-n*a)*d,t):null},c.adjoint=function(t,r){var e=r[0],n=r[1],i=r[2],a=r[3],o=r[4],s=r[5],u=r[6],c=r[7],f=r[8];return t[0]=o*f-s*c,t[1]=i*c-n*f,t[2]=n*s-i*o,t[3]=s*u-a*f,t[4]=e*f-i*u,t[5]=i*a-e*s,t[6]=a*c-o*u,t[7]=n*u-e*c,t[8]=e*o-n*a,t},c.determinant=function(t){var r=t[0],e=t[1],n=t[2],i=t[3],a=t[4],o=t[5],s=t[6],u=t[7],c=t[8];return r*(c*a-o*u)+e*(-c*i+o*s)+n*(u*i-a*s)},c.multiply=function(t,r,e){var n=r[0],i=r[1],a=r[2],o=r[3],s=r[4],u=r[5],c=r[6],f=r[7],l=r[8],h=e[0],p=e[1],d=e[2],v=e[3],g=e[4],m=e[5],y=e[6],b=e[7],_=e[8];return t[0]=h*n+p*o+d*c,t[1]=h*i+p*s+d*f,t[2]=h*a+p*u+d*l,t[3]=v*n+g*o+m*c,t[4]=v*i+g*s+m*f,t[5]=v*a+g*u+m*l,t[6]=y*n+b*o+_*c,t[7]=y*i+b*s+_*f,t[8]=y*a+b*u+_*l,t},c.mul=c.multiply,c.translate=function(t,r,e){var n=r[0],i=r[1],a=r[2],o=r[3],s=r[4],u=r[5],c=r[6],f=r[7],l=r[8],h=e[0],p=e[1];return t[0]=n,t[1]=i,t[2]=a,t[3]=o,t[4]=s,t[5]=u,t[6]=h*n+p*o+c,t[7]=h*i+p*s+f,t[8]=h*a+p*u+l,t},c.rotate=function(t,r,e){var n=r[0],i=r[1],a=r[2],o=r[3],s=r[4],u=r[5],c=r[6],f=r[7],l=r[8],h=Math.sin(e),p=Math.cos(e);return t[0]=p*n+h*o,t[1]=p*i+h*s,t[2]=p*a+h*u,t[3]=p*o-h*n,t[4]=p*s-h*i,t[5]=p*u-h*a,t[6]=c,t[7]=f,t[8]=l,t},c.scale=function(t,r,e){var n=e[0],i=e[2];return t[0]=n*r[0],t[1]=n*r[1],t[2]=n*r[2],t[3]=i*r[3],t[4]=i*r[4],t[5]=i*r[5],t[6]=r[6],t[7]=r[7],t[8]=r[8],t},c.fromMat2d=function(t,r){return t[0]=r[0],t[1]=r[1],t[2]=0,t[3]=r[2],t[4]=r[3],t[5]=0,t[6]=r[4],t[7]=r[5],t[8]=1,t},c.fromQuat=function(t,r){var e=r[0],n=r[1],i=r[2],a=r[3],o=e+e,s=n+n,u=i+i,c=e*o,f=e*s,l=e*u,h=n*s,p=n*u,d=i*u,v=a*o,g=a*s,m=a*u;return t[0]=1-(h+d),t[1]=f+m,t[2]=l-g,t[3]=f-m,t[4]=1-(c+d),t[5]=p+v,t[6]=l+g,t[7]=p-v,t[8]=1-(c+h),t},c.str=function(t){return"mat3("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+", "+t[4]+", "+t[5]+", "+t[6]+", "+t[7]+", "+t[8]+")"},t!==void 0&&(t.mat3=c);var f={};new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]),f.create=function(){var t=new e(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},f.clone=function(t){var r=new e(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},f.copy=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},f.identity=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},f.transpose=function(t,r){if(t===r){var e=r[1],n=r[2],i=r[3],a=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]=a,t[11]=r[14],t[12]=i,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},f.invert=function(t,r){var e=r[0],n=r[1],i=r[2],a=r[3],o=r[4],s=r[5],u=r[6],c=r[7],f=r[8],l=r[9],h=r[10],p=r[11],d=r[12],v=r[13],g=r[14],m=r[15],y=e*s-n*o,b=e*u-i*o,_=e*c-a*o,w=n*u-i*s,E=n*c-a*s,A=i*c-a*u,x=f*v-l*d,T=f*g-h*d,M=f*m-p*d,I=l*g-h*v,L=l*m-p*v,j=h*m-p*g,S=y*j-b*L+_*I+w*M-E*T+A*x;return S?(S=1/S,t[0]=(s*j-u*L+c*I)*S,t[1]=(i*L-n*j-a*I)*S,t[2]=(v*A-g*E+m*w)*S,t[3]=(h*E-l*A-p*w)*S,t[4]=(u*M-o*j-c*T)*S,t[5]=(e*j-i*M+a*T)*S,t[6]=(g*_-d*A-m*b)*S,t[7]=(f*A-h*_+p*b)*S,t[8]=(o*L-s*M+c*x)*S,t[9]=(n*M-e*L-a*x)*S,t[10]=(d*E-v*_+m*y)*S,t[11]=(l*_-f*E-p*y)*S,t[12]=(s*T-o*I-u*x)*S,t[13]=(e*I-n*T+i*x)*S,t[14]=(v*b-d*w-g*y)*S,t[15]=(f*w-l*b+h*y)*S,t):null},f.adjoint=function(t,r){var e=r[0],n=r[1],i=r[2],a=r[3],o=r[4],s=r[5],u=r[6],c=r[7],f=r[8],l=r[9],h=r[10],p=r[11],d=r[12],v=r[13],g=r[14],m=r[15];return t[0]=s*(h*m-p*g)-l*(u*m-c*g)+v*(u*p-c*h),t[1]=-(n*(h*m-p*g)-l*(i*m-a*g)+v*(i*p-a*h)),t[2]=n*(u*m-c*g)-s*(i*m-a*g)+v*(i*c-a*u),t[3]=-(n*(u*p-c*h)-s*(i*p-a*h)+l*(i*c-a*u)),t[4]=-(o*(h*m-p*g)-f*(u*m-c*g)+d*(u*p-c*h)),t[5]=e*(h*m-p*g)-f*(i*m-a*g)+d*(i*p-a*h),t[6]=-(e*(u*m-c*g)-o*(i*m-a*g)+d*(i*c-a*u)),t[7]=e*(u*p-c*h)-o*(i*p-a*h)+f*(i*c-a*u),t[8]=o*(l*m-p*v)-f*(s*m-c*v)+d*(s*p-c*l),t[9]=-(e*(l*m-p*v)-f*(n*m-a*v)+d*(n*p-a*l)),t[10]=e*(s*m-c*v)-o*(n*m-a*v)+d*(n*c-a*s),t[11]=-(e*(s*p-c*l)-o*(n*p-a*l)+f*(n*c-a*s)),t[12]=-(o*(l*g-h*v)-f*(s*g-u*v)+d*(s*h-u*l)),t[13]=e*(l*g-h*v)-f*(n*g-i*v)+d*(n*h-i*l),t[14]=-(e*(s*g-u*v)-o*(n*g-i*v)+d*(n*u-i*s)),t[15]=e*(s*h-u*l)-o*(n*h-i*l)+f*(n*u-i*s),t},f.determinant=function(t){var r=t[0],e=t[1],n=t[2],i=t[3],a=t[4],o=t[5],s=t[6],u=t[7],c=t[8],f=t[9],l=t[10],h=t[11],p=t[12],d=t[13],v=t[14],g=t[15],m=r*o-e*a,y=r*s-n*a,b=r*u-i*a,_=e*s-n*o,w=e*u-i*o,E=n*u-i*s,A=c*d-f*p,x=c*v-l*p,T=c*g-h*p,M=f*v-l*d,I=f*g-h*d,L=l*g-h*v;return m*L-y*I+b*M+_*T-w*x+E*A},f.multiply=function(t,r,e){var n=r[0],i=r[1],a=r[2],o=r[3],s=r[4],u=r[5],c=r[6],f=r[7],l=r[8],h=r[9],p=r[10],d=r[11],v=r[12],g=r[13],m=r[14],y=r[15],b=e[0],_=e[1],w=e[2],E=e[3];return t[0]=b*n+_*s+w*l+E*v,t[1]=b*i+_*u+w*h+E*g,t[2]=b*a+_*c+w*p+E*m,t[3]=b*o+_*f+w*d+E*y,b=e[4],_=e[5],w=e[6],E=e[7],t[4]=b*n+_*s+w*l+E*v,t[5]=b*i+_*u+w*h+E*g,t[6]=b*a+_*c+w*p+E*m,t[7]=b*o+_*f+w*d+E*y,b=e[8],_=e[9],w=e[10],E=e[11],t[8]=b*n+_*s+w*l+E*v,t[9]=b*i+_*u+w*h+E*g,t[10]=b*a+_*c+w*p+E*m,t[11]=b*o+_*f+w*d+E*y,b=e[12],_=e[13],w=e[14],E=e[15],t[12]=b*n+_*s+w*l+E*v,t[13]=b*i+_*u+w*h+E*g,t[14]=b*a+_*c+w*p+E*m,t[15]=b*o+_*f+w*d+E*y,t},f.mul=f.multiply,f.translate=function(t,r,e){var n,i,a,o,s,u,c,f,l,h,p,d,v=e[0],g=e[1],m=e[2];return r===t?(t[12]=r[0]*v+r[4]*g+r[8]*m+r[12],t[13]=r[1]*v+r[5]*g+r[9]*m+r[13],t[14]=r[2]*v+r[6]*g+r[10]*m+r[14],t[15]=r[3]*v+r[7]*g+r[11]*m+r[15]):(n=r[0],i=r[1],a=r[2],o=r[3],s=r[4],u=r[5],c=r[6],f=r[7],l=r[8],h=r[9],p=r[10],d=r[11],t[0]=n,t[1]=i,t[2]=a,t[3]=o,t[4]=s,t[5]=u,t[6]=c,t[7]=f,t[8]=l,t[9]=h,t[10]=p,t[11]=d,t[12]=n*v+s*g+l*m+r[12],t[13]=i*v+u*g+h*m+r[13],t[14]=a*v+c*g+p*m+r[14],t[15]=o*v+f*g+d*m+r[15]),t},f.scale=function(t,r,e){var n=e[0],i=e[1],a=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]*i,t[5]=r[5]*i,t[6]=r[6]*i,t[7]=r[7]*i,t[8]=r[8]*a,t[9]=r[9]*a,t[10]=r[10]*a,t[11]=r[11]*a,t[12]=r[12],t[13]=r[13],t[14]=r[14],t[15]=r[15],t},f.rotate=function(t,e,n,i){var a,o,s,u,c,f,l,h,p,d,v,g,m,y,b,_,w,E,A,x,T,M,I,L,j=i[0],S=i[1],N=i[2],R=Math.sqrt(j*j+S*S+N*N);return r>Math.abs(R)?null:(R=1/R,j*=R,S*=R,N*=R,a=Math.sin(n),o=Math.cos(n),s=1-o,u=e[0],c=e[1],f=e[2],l=e[3],h=e[4],p=e[5],d=e[6],v=e[7],g=e[8],m=e[9],y=e[10],b=e[11],_=j*j*s+o,w=S*j*s+N*a,E=N*j*s-S*a,A=j*S*s-N*a,x=S*S*s+o,T=N*S*s+j*a,M=j*N*s+S*a,I=S*N*s-j*a,L=N*N*s+o,t[0]=u*_+h*w+g*E,t[1]=c*_+p*w+m*E,t[2]=f*_+d*w+y*E,t[3]=l*_+v*w+b*E,t[4]=u*A+h*x+g*T,t[5]=c*A+p*x+m*T,t[6]=f*A+d*x+y*T,t[7]=l*A+v*x+b*T,t[8]=u*M+h*I+g*L,t[9]=c*M+p*I+m*L,t[10]=f*M+d*I+y*L,t[11]=l*M+v*I+b*L,e!==t&&(t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t)},f.rotateX=function(t,r,e){var n=Math.sin(e),i=Math.cos(e),a=r[4],o=r[5],s=r[6],u=r[7],c=r[8],f=r[9],l=r[10],h=r[11];return 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]),t[4]=a*i+c*n,t[5]=o*i+f*n,t[6]=s*i+l*n,t[7]=u*i+h*n,t[8]=c*i-a*n,t[9]=f*i-o*n,t[10]=l*i-s*n,t[11]=h*i-u*n,t},f.rotateY=function(t,r,e){var n=Math.sin(e),i=Math.cos(e),a=r[0],o=r[1],s=r[2],u=r[3],c=r[8],f=r[9],l=r[10],h=r[11];return 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]),t[0]=a*i-c*n,t[1]=o*i-f*n,t[2]=s*i-l*n,t[3]=u*i-h*n,t[8]=a*n+c*i,t[9]=o*n+f*i,t[10]=s*n+l*i,t[11]=u*n+h*i,t},f.rotateZ=function(t,r,e){var n=Math.sin(e),i=Math.cos(e),a=r[0],o=r[1],s=r[2],u=r[3],c=r[4],f=r[5],l=r[6],h=r[7];return 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]),t[0]=a*i+c*n,t[1]=o*i+f*n,t[2]=s*i+l*n,t[3]=u*i+h*n,t[4]=c*i-a*n,t[5]=f*i-o*n,t[6]=l*i-s*n,t[7]=h*i-u*n,t},f.fromRotationTranslation=function(t,r,e){var n=r[0],i=r[1],a=r[2],o=r[3],s=n+n,u=i+i,c=a+a,f=n*s,l=n*u,h=n*c,p=i*u,d=i*c,v=a*c,g=o*s,m=o*u,y=o*c;return t[0]=1-(p+v),t[1]=l+y,t[2]=h-m,t[3]=0,t[4]=l-y,t[5]=1-(f+v),t[6]=d+g,t[7]=0,t[8]=h+m,t[9]=d-g,t[10]=1-(f+p),t[11]=0,t[12]=e[0],t[13]=e[1],t[14]=e[2],t[15]=1,t},f.fromQuat=function(t,r){var e=r[0],n=r[1],i=r[2],a=r[3],o=e+e,s=n+n,u=i+i,c=e*o,f=e*s,l=e*u,h=n*s,p=n*u,d=i*u,v=a*o,g=a*s,m=a*u;return t[0]=1-(h+d),t[1]=f+m,t[2]=l-g,t[3]=0,t[4]=f-m,t[5]=1-(c+d),t[6]=p+v,t[7]=0,t[8]=l+g,t[9]=p-v,t[10]=1-(c+h),t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},f.frustum=function(t,r,e,n,i,a,o){var s=1/(e-r),u=1/(i-n),c=1/(a-o);return t[0]=2*a*s,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=2*a*u,t[6]=0,t[7]=0,t[8]=(e+r)*s,t[9]=(i+n)*u,t[10]=(o+a)*c,t[11]=-1,t[12]=0,t[13]=0,t[14]=2*o*a*c,t[15]=0,t},f.perspective=function(t,r,e,n,i){var a=1/Math.tan(r/2),o=1/(n-i);return t[0]=a/e,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=a,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=(i+n)*o,t[11]=-1,t[12]=0,t[13]=0,t[14]=2*i*n*o,t[15]=0,t},f.ortho=function(t,r,e,n,i,a,o){var s=1/(r-e),u=1/(n-i),c=1/(a-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*c,t[11]=0,t[12]=(r+e)*s,t[13]=(i+n)*u,t[14]=(o+a)*c,t[15]=1,t},f.lookAt=function(t,e,n,i){var a,o,s,u,c,l,h,p,d,v,g=e[0],m=e[1],y=e[2],b=i[0],_=i[1],w=i[2],E=n[0],A=n[1],x=n[2];return r>Math.abs(g-E)&&r>Math.abs(m-A)&&r>Math.abs(y-x)?f.identity(t):(h=g-E,p=m-A,d=y-x,v=1/Math.sqrt(h*h+p*p+d*d),h*=v,p*=v,d*=v,a=_*d-w*p,o=w*h-b*d,s=b*p-_*h,v=Math.sqrt(a*a+o*o+s*s),v?(v=1/v,a*=v,o*=v,s*=v):(a=0,o=0,s=0),u=p*s-d*o,c=d*a-h*s,l=h*o-p*a,v=Math.sqrt(u*u+c*c+l*l),v?(v=1/v,u*=v,c*=v,l*=v):(u=0,c=0,l=0),t[0]=a,t[1]=u,t[2]=h,t[3]=0,t[4]=o,t[5]=c,t[6]=p,t[7]=0,t[8]=s,t[9]=l,t[10]=d,t[11]=0,t[12]=-(a*g+o*m+s*y),t[13]=-(u*g+c*m+l*y),t[14]=-(h*g+p*m+d*y),t[15]=1,t)},f.str=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]+")"},t!==void 0&&(t.mat4=f);var l={};new Float32Array([0,0,0,1]),l.create=function(){var t=new e(4);return t[0]=0,t[1]=0,t[2]=0,t[3]=1,t},l.clone=o.clone,l.fromValues=o.fromValues,l.copy=o.copy,l.set=o.set,l.identity=function(t){return t[0]=0,t[1]=0,t[2]=0,t[3]=1,t},l.setAxisAngle=function(t,r,e){e=.5*e;var n=Math.sin(e);return t[0]=n*r[0],t[1]=n*r[1],t[2]=n*r[2],t[3]=Math.cos(e),t},l.add=o.add,l.multiply=function(t,r,e){var n=r[0],i=r[1],a=r[2],o=r[3],s=e[0],u=e[1],c=e[2],f=e[3];return t[0]=n*f+o*s+i*c-a*u,t[1]=i*f+o*u+a*s-n*c,t[2]=a*f+o*c+n*u-i*s,t[3]=o*f-n*s-i*u-a*c,t},l.mul=l.multiply,l.scale=o.scale,l.rotateX=function(t,r,e){e*=.5;var n=r[0],i=r[1],a=r[2],o=r[3],s=Math.sin(e),u=Math.cos(e);return t[0]=n*u+o*s,t[1]=i*u+a*s,t[2]=a*u-i*s,t[3]=o*u-n*s,t},l.rotateY=function(t,r,e){e*=.5;var n=r[0],i=r[1],a=r[2],o=r[3],s=Math.sin(e),u=Math.cos(e);return t[0]=n*u-a*s,t[1]=i*u+o*s,t[2]=a*u+n*s,t[3]=o*u-i*s,t},l.rotateZ=function(t,r,e){e*=.5;var n=r[0],i=r[1],a=r[2],o=r[3],s=Math.sin(e),u=Math.cos(e);return t[0]=n*u+i*s,t[1]=i*u-n*s,t[2]=a*u+o*s,t[3]=o*u-a*s,t},l.calculateW=function(t,r){var e=r[0],n=r[1],i=r[2];return t[0]=e,t[1]=n,t[2]=i,t[3]=-Math.sqrt(Math.abs(1-e*e-n*n-i*i)),t},l.dot=o.dot,l.lerp=o.lerp,l.slerp=function(t,r,e,n){var i,a,o,s,u=r[0],c=r[1],f=r[2],l=r[3],h=e[0],p=e[1],d=e[2],v=e[3],g=u*h+c*p+f*d+l*v;return Math.abs(g)>=1?(t!==r&&(t[0]=u,t[1]=c,t[2]=f,t[3]=l),t):(i=Math.acos(g),a=Math.sqrt(1-g*g),.001>Math.abs(a)?(t[0]=.5*u+.5*h,t[1]=.5*c+.5*p,t[2]=.5*f+.5*d,t[3]=.5*l+.5*v,t):(o=Math.sin((1-n)*i)/a,s=Math.sin(n*i)/a,t[0]=u*o+h*s,t[1]=c*o+p*s,t[2]=f*o+d*s,t[3]=l*o+v*s,t))},l.invert=function(t,r){var e=r[0],n=r[1],i=r[2],a=r[3],o=e*e+n*n+i*i+a*a,s=o?1/o:0;return t[0]=-e*s,t[1]=-n*s,t[2]=-i*s,t[3]=a*s,t},l.conjugate=function(t,r){return t[0]=-r[0],t[1]=-r[1],t[2]=-r[2],t[3]=r[3],t},l.length=o.length,l.len=l.length,l.squaredLength=o.squaredLength,l.sqrLen=l.squaredLength,l.normalize=o.normalize,l.fromMat3=function(){var t=[1,2,0];return function(r,e){var n,i=e[0]+e[4]+e[8];if(i>0)n=Math.sqrt(i+1),r[3]=.5*n,n=.5/n,r[0]=(e[7]-e[5])*n,r[1]=(e[2]-e[6])*n,r[2]=(e[3]-e[1])*n;else{var a=0;e[4]>e[0]&&(a=1),e[8]>e[3*a+a]&&(a=2);var o=t[a],s=t[o];n=Math.sqrt(e[3*a+a]-e[3*o+o]-e[3*s+s]+1),r[a]=.5*n,n=.5/n,r[3]=(e[3*s+o]-e[3*o+s])*n,r[o]=(e[3*o+a]+e[3*a+o])*n,r[s]=(e[3*s+a]+e[3*a+s])*n}return r}}(),l.str=function(t){return"quat("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+")"},t!==void 0&&(t.quat=l)}(t.exports)})()},{}],"gl-matrix":[function(t,r){r.exports=t("0QExjN")},{}]},{},[]),require=function e(t,r,n){function i(o,s){if(!r[o]){if(!t[o]){var u="function"==typeof require&&require;if(!s&&u)return u(o,!0);if(a)return a(o,!0);throw Error("Cannot find module '"+o+"'")}var c=r[o]={exports:{}};t[o][0].call(c.exports,function(r){var e=t[o][1][r];return i(e?e:r)},c,c.exports,e,t,r,n)}return r[o].exports}for(var a="function"==typeof require&&require,o=0;n.length>o;o++)i(n[o]);return i}({1:[function(t,r,e){function n(t,r,e){if(!(this instanceof n))return new n(t,r,e);var i=typeof t;if("base64"===r&&"string"===i)for(t=M(t);0!==t.length%4;)t+="=";var a;if("number"===i)a=j(t);else if("string"===i)a=n.byteLength(t,r);else{if("object"!==i)throw Error("First argument needs to be a number, array or string.");a=j(t.length)}var o;n._useTypedArrays?o=I(new Uint8Array(a)):(o=this,o.length=a,o._isBuffer=!0);var s;if(n._useTypedArrays&&"function"==typeof Uint8Array&&t instanceof Uint8Array)o._set(t);else if(N(t))for(s=0;a>s;s++)o[s]=n.isBuffer(t)?t.readUInt8(s):t[s];else if("string"===i)o.write(t,0,r);else if("number"===i&&!n._useTypedArrays&&!e)for(s=0;a>s;s++)o[s]=0;return o}function i(t,r,e,i){e=Number(e)||0;var a=t.length-e;i?(i=Number(i),i>a&&(i=a)):i=a;var o=r.length;V(0===o%2,"Invalid hex string"),i>o/2&&(i=o/2);for(var s=0;i>s;s++){var u=parseInt(r.substr(2*s,2),16);V(!isNaN(u),"Invalid hex string"),t[e+s]=u}return n._charsWritten=2*s,s}function a(t,r,e,i){var a=n._charsWritten=U(F(r),t,e,i);return a}function o(t,r,e,i){var a=n._charsWritten=U(k(r),t,e,i);return a}function s(t,r,e,n){return o(t,r,e,n)}function u(t,r,e,i){var a=n._charsWritten=U(C(r),t,e,i);return a}function c(t,r,e){return 0===r&&e===t.length?q.fromByteArray(t):q.fromByteArray(t.slice(r,e))}function f(t,r,e){var n="",i="";e=Math.min(t.length,e);for(var a=r;e>a;a++)127>=t[a]?(n+=P(i)+String.fromCharCode(t[a]),i=""):i+="%"+t[a].toString(16);return n+P(i)}function l(t,r,e){var n="";e=Math.min(t.length,e);for(var i=r;e>i;i++)n+=String.fromCharCode(t[i]);return n}function h(t,r,e){return l(t,r,e)}function p(t,r,e){var n=t.length;(!r||0>r)&&(r=0),(!e||0>e||e>n)&&(e=n);for(var i="",a=r;e>a;a++)i+=R(t[a]);return i}function d(t,r,e,n){n||(V("boolean"==typeof e,"missing or invalid endian"),V(void 0!==r&&null!==r,"missing offset"),V(t.length>r+1,"Trying to read beyond buffer length"));var i=t.length;if(!(r>=i)){var a;return e?(a=t[r],i>r+1&&(a|=t[r+1]<<8)):(a=t[r]<<8,i>r+1&&(a|=t[r+1])),a}}function v(t,r,e,n){n||(V("boolean"==typeof e,"missing or invalid endian"),V(void 0!==r&&null!==r,"missing offset"),V(t.length>r+3,"Trying to read beyond buffer length"));var i=t.length;if(!(r>=i)){var a;return e?(i>r+2&&(a=t[r+2]<<16),i>r+1&&(a|=t[r+1]<<8),a|=t[r],i>r+3&&(a+=t[r+3]<<24>>>0)):(i>r+1&&(a=t[r+1]<<16),i>r+2&&(a|=t[r+2]<<8),i>r+3&&(a|=t[r+3]),a+=t[r]<<24>>>0),a}}function g(t,r,e,n){n||(V("boolean"==typeof e,"missing or invalid endian"),V(void 0!==r&&null!==r,"missing offset"),V(t.length>r+1,"Trying to read beyond buffer length"));var i=t.length;if(!(r>=i)){var a=d(t,r,e,!0),o=32768&a;return o?-1*(65535-a+1):a}}function m(t,r,e,n){n||(V("boolean"==typeof e,"missing or invalid endian"),V(void 0!==r&&null!==r,"missing offset"),V(t.length>r+3,"Trying to read beyond buffer length"));var i=t.length;if(!(r>=i)){var a=v(t,r,e,!0),o=2147483648&a;return o?-1*(4294967295-a+1):a}}function y(t,r,e,n){return n||(V("boolean"==typeof e,"missing or invalid endian"),V(t.length>r+3,"Trying to read beyond buffer length")),z.read(t,r,e,23,4)}function b(t,r,e,n){return n||(V("boolean"==typeof e,"missing or invalid endian"),V(t.length>r+7,"Trying to read beyond buffer length")),z.read(t,r,e,52,8)}function _(t,r,e,n,i){i||(V(void 0!==r&&null!==r,"missing value"),V("boolean"==typeof n,"missing or invalid endian"),V(void 0!==e&&null!==e,"missing offset"),V(t.length>e+1,"trying to write beyond buffer length"),D(r,65535));var a=t.length;if(!(e>=a))for(var o=0,s=Math.min(a-e,2);s>o;o++)t[e+o]=(r&255<<8*(n?o:1-o))>>>8*(n?o:1-o)}function w(t,r,e,n,i){i||(V(void 0!==r&&null!==r,"missing value"),V("boolean"==typeof n,"missing or invalid endian"),V(void 0!==e&&null!==e,"missing offset"),V(t.length>e+3,"trying to write beyond buffer length"),D(r,4294967295));var a=t.length;if(!(e>=a))for(var o=0,s=Math.min(a-e,4);s>o;o++)t[e+o]=255&r>>>8*(n?o:3-o)}function E(t,r,e,n,i){i||(V(void 0!==r&&null!==r,"missing value"),V("boolean"==typeof n,"missing or invalid endian"),V(void 0!==e&&null!==e,"missing offset"),V(t.length>e+1,"Trying to write beyond buffer length"),B(r,32767,-32768));var a=t.length;e>=a||(r>=0?_(t,r,e,n,i):_(t,65535+r+1,e,n,i))}function A(t,r,e,n,i){i||(V(void 0!==r&&null!==r,"missing value"),V("boolean"==typeof n,"missing or invalid endian"),V(void 0!==e&&null!==e,"missing offset"),V(t.length>e+3,"Trying to write beyond buffer length"),B(r,2147483647,-2147483648));var a=t.length;e>=a||(r>=0?w(t,r,e,n,i):w(t,4294967295+r+1,e,n,i))}function x(t,r,e,n,i){i||(V(void 0!==r&&null!==r,"missing value"),V("boolean"==typeof n,"missing or invalid endian"),V(void 0!==e&&null!==e,"missing offset"),V(t.length>e+3,"Trying to write beyond buffer length"),O(r,3.4028234663852886e38,-3.4028234663852886e38));var a=t.length;e>=a||z.write(t,r,e,n,23,4)}function T(t,r,e,n,i){i||(V(void 0!==r&&null!==r,"missing value"),V("boolean"==typeof n,"missing or invalid endian"),V(void 0!==e&&null!==e,"missing offset"),V(t.length>e+7,"Trying to write beyond buffer length"),O(r,1.7976931348623157e308,-1.7976931348623157e308));var a=t.length;e>=a||z.write(t,r,e,n,52,8)}function M(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}function I(t){return t._isBuffer=!0,t._get=t.get,t._set=t.set,t.get=Y.get,t.set=Y.set,t.write=Y.write,t.toString=Y.toString,t.toLocaleString=Y.toString,t.toJSON=Y.toJSON,t.copy=Y.copy,t.slice=Y.slice,t.readUInt8=Y.readUInt8,t.readUInt16LE=Y.readUInt16LE,t.readUInt16BE=Y.readUInt16BE,t.readUInt32LE=Y.readUInt32LE,t.readUInt32BE=Y.readUInt32BE,t.readInt8=Y.readInt8,t.readInt16LE=Y.readInt16LE,t.readInt16BE=Y.readInt16BE,t.readInt32LE=Y.readInt32LE,t.readInt32BE=Y.readInt32BE,t.readFloatLE=Y.readFloatLE,t.readFloatBE=Y.readFloatBE,t.readDoubleLE=Y.readDoubleLE,t.readDoubleBE=Y.readDoubleBE,t.writeUInt8=Y.writeUInt8,t.writeUInt16LE=Y.writeUInt16LE,t.writeUInt16BE=Y.writeUInt16BE,t.writeUInt32LE=Y.writeUInt32LE,t.writeUInt32BE=Y.writeUInt32BE,t.writeInt8=Y.writeInt8,t.writeInt16LE=Y.writeInt16LE,t.writeInt16BE=Y.writeInt16BE,t.writeInt32LE=Y.writeInt32LE,t.writeInt32BE=Y.writeInt32BE,t.writeFloatLE=Y.writeFloatLE,t.writeFloatBE=Y.writeFloatBE,t.writeDoubleLE=Y.writeDoubleLE,t.writeDoubleBE=Y.writeDoubleBE,t.fill=Y.fill,t.inspect=Y.inspect,t.toArrayBuffer=Y.toArrayBuffer,t}function L(t,r,e){return"number"!=typeof t?e:(t=~~t,t>=r?r:t>=0?t:(t+=r,t>=0?t:0))}function j(t){return t=~~Math.ceil(+t),0>t?0:t}function S(t){return(Array.isArray||function(t){return"[object Array]"===Object.prototype.toString.call(t)})(t)}function N(t){return S(t)||n.isBuffer(t)||t&&"object"==typeof t&&"number"==typeof t.length}function R(t){return 16>t?"0"+t.toString(16):t.toString(16)}function F(t){for(var r=[],e=0;t.length>e;e++){var n=t.charCodeAt(e);if(127>=n)r.push(t.charCodeAt(e));else{var i=e;n>=55296&&57343>=n&&e++;for(var a=encodeURIComponent(t.slice(i,e+1)).substr(1).split("%"),o=0;a.length>o;o++)r.push(parseInt(a[o],16))}}return r}function k(t){for(var r=[],e=0;t.length>e;e++)r.push(255&t.charCodeAt(e));return r}function C(t){return q.toByteArray(t)}function U(t,r,e,n){for(var i=0;n>i&&!(i+e>=r.length||i>=t.length);i++)r[i+e]=t[i];return i}function P(t){try{return decodeURIComponent(t)}catch(r){return String.fromCharCode(65533)}}function D(t,r){V("number"==typeof t,"cannot write a non-number as a number"),V(t>=0,"specified a negative value for writing an unsigned value"),V(r>=t,"value is larger than maximum value for type"),V(Math.floor(t)===t,"value has a fractional component")}function B(t,r,e){V("number"==typeof t,"cannot write a non-number as a number"),V(r>=t,"value larger than maximum allowed value"),V(t>=e,"value smaller than minimum allowed value"),V(Math.floor(t)===t,"value has a fractional component")}function O(t,r,e){V("number"==typeof t,"cannot write a non-number as a number"),V(r>=t,"value larger than maximum allowed value"),V(t>=e,"value smaller than minimum allowed value")}function V(t,r){if(!t)throw Error(r||"Failed assertion")}var q=t("base64-js"),z=t("ieee754");e.Buffer=n,e.SlowBuffer=n,e.INSPECT_MAX_BYTES=50,n.poolSize=8192,n._useTypedArrays=function(){if("undefined"==typeof Uint8Array||"undefined"==typeof ArrayBuffer)return!1;try{var t=new Uint8Array(0);return t.foo=function(){return 42},42===t.foo()&&"function"==typeof t.subarray}catch(r){return!1}}(),n.isEncoding=function(t){switch((t+"").toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"raw":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},n.isBuffer=function(t){return!(null===t||void 0===t||!t._isBuffer)},n.byteLength=function(t,r){var e;switch(t+="",r||"utf8"){case"hex":e=t.length/2;break;case"utf8":case"utf-8":e=F(t).length;break;case"ascii":case"binary":case"raw":e=t.length;break;case"base64":e=C(t).length;break;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":e=2*t.length;break;default:throw Error("Unknown encoding")}return e},n.concat=function(t,r){if(V(S(t),"Usage: Buffer.concat(list, [totalLength])\nlist should be an Array."),0===t.length)return new n(0);if(1===t.length)return t[0];var e;if("number"!=typeof r)for(r=0,e=0;t.length>e;e++)r+=t[e].length;var i=new n(r),a=0;for(e=0;t.length>e;e++){var o=t[e];o.copy(i,a),a+=o.length}return i},n.prototype.write=function(t,r,e,n){if(isFinite(r))isFinite(e)||(n=e,e=void 0);else{var c=n;n=r,r=e,e=c}r=Number(r)||0;var f=this.length-r;switch(e?(e=Number(e),e>f&&(e=f)):e=f,n=((n||"utf8")+"").toLowerCase()){case"hex":return i(this,t,r,e);case"utf8":case"utf-8":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return a(this,t,r,e);case"ascii":return o(this,t,r,e);case"binary":return s(this,t,r,e);case"base64":return u(this,t,r,e);default:throw Error("Unknown encoding")}},n.prototype.toString=function(t,r,e){var n=this;if(t=((t||"utf8")+"").toLowerCase(),r=Number(r)||0,e=void 0!==e?Number(e):e=n.length,e===r)return"";switch(t){case"hex":return p(n,r,e);case"utf8":case"utf-8":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return f(n,r,e);case"ascii":return l(n,r,e);case"binary":return h(n,r,e);case"base64":return c(n,r,e);default:throw Error("Unknown encoding")}},n.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}},n.prototype.copy=function(t,r,e,n){var i=this;if(e||(e=0),n||0===n||(n=this.length),r||(r=0),n!==e&&0!==t.length&&0!==i.length){V(n>=e,"sourceEnd < sourceStart"),V(r>=0&&t.length>r,"targetStart out of bounds"),V(e>=0&&i.length>e,"sourceStart out of bounds"),V(n>=0&&i.length>=n,"sourceEnd out of bounds"),n>this.length&&(n=this.length),n-e>t.length-r&&(n=t.length-r+e);for(var a=0;n-e>a;a++)t[a+r]=this[a+e]}},n.prototype.slice=function(t,r){var e=this.length;
if(t=L(t,e,0),r=L(r,e,e),n._useTypedArrays)return I(this.subarray(t,r));for(var i=r-t,a=new n(i,void 0,!0),o=0;i>o;o++)a[o]=this[o+t];return a},n.prototype.get=function(t){return console.log(".get() is deprecated. Access using array indexes instead."),this.readUInt8(t)},n.prototype.set=function(t,r){return console.log(".set() is deprecated. Access using array indexes instead."),this.writeUInt8(t,r)},n.prototype.readUInt8=function(t,r){return r||(V(void 0!==t&&null!==t,"missing offset"),V(this.length>t,"Trying to read beyond buffer length")),t>=this.length?void 0:this[t]},n.prototype.readUInt16LE=function(t,r){return d(this,t,!0,r)},n.prototype.readUInt16BE=function(t,r){return d(this,t,!1,r)},n.prototype.readUInt32LE=function(t,r){return v(this,t,!0,r)},n.prototype.readUInt32BE=function(t,r){return v(this,t,!1,r)},n.prototype.readInt8=function(t,r){if(r||(V(void 0!==t&&null!==t,"missing offset"),V(this.length>t,"Trying to read beyond buffer length")),!(t>=this.length)){var e=128&this[t];return e?-1*(255-this[t]+1):this[t]}},n.prototype.readInt16LE=function(t,r){return g(this,t,!0,r)},n.prototype.readInt16BE=function(t,r){return g(this,t,!1,r)},n.prototype.readInt32LE=function(t,r){return m(this,t,!0,r)},n.prototype.readInt32BE=function(t,r){return m(this,t,!1,r)},n.prototype.readFloatLE=function(t,r){return y(this,t,!0,r)},n.prototype.readFloatBE=function(t,r){return y(this,t,!1,r)},n.prototype.readDoubleLE=function(t,r){return b(this,t,!0,r)},n.prototype.readDoubleBE=function(t,r){return b(this,t,!1,r)},n.prototype.writeUInt8=function(t,r,e){e||(V(void 0!==t&&null!==t,"missing value"),V(void 0!==r&&null!==r,"missing offset"),V(this.length>r,"trying to write beyond buffer length"),D(t,255)),r>=this.length||(this[r]=t)},n.prototype.writeUInt16LE=function(t,r,e){_(this,t,r,!0,e)},n.prototype.writeUInt16BE=function(t,r,e){_(this,t,r,!1,e)},n.prototype.writeUInt32LE=function(t,r,e){w(this,t,r,!0,e)},n.prototype.writeUInt32BE=function(t,r,e){w(this,t,r,!1,e)},n.prototype.writeInt8=function(t,r,e){e||(V(void 0!==t&&null!==t,"missing value"),V(void 0!==r&&null!==r,"missing offset"),V(this.length>r,"Trying to write beyond buffer length"),B(t,127,-128)),r>=this.length||(t>=0?this.writeUInt8(t,r,e):this.writeUInt8(255+t+1,r,e))},n.prototype.writeInt16LE=function(t,r,e){E(this,t,r,!0,e)},n.prototype.writeInt16BE=function(t,r,e){E(this,t,r,!1,e)},n.prototype.writeInt32LE=function(t,r,e){A(this,t,r,!0,e)},n.prototype.writeInt32BE=function(t,r,e){A(this,t,r,!1,e)},n.prototype.writeFloatLE=function(t,r,e){x(this,t,r,!0,e)},n.prototype.writeFloatBE=function(t,r,e){x(this,t,r,!1,e)},n.prototype.writeDoubleLE=function(t,r,e){T(this,t,r,!0,e)},n.prototype.writeDoubleBE=function(t,r,e){T(this,t,r,!1,e)},n.prototype.fill=function(t,r,e){if(t||(t=0),r||(r=0),e||(e=this.length),"string"==typeof t&&(t=t.charCodeAt(0)),V("number"==typeof t&&!isNaN(t),"value is not a number"),V(e>=r,"end < start"),e!==r&&0!==this.length){V(r>=0&&this.length>r,"start out of bounds"),V(e>=0&&this.length>=e,"end out of bounds");for(var n=r;e>n;n++)this[n]=t}},n.prototype.inspect=function(){for(var t=[],r=this.length,n=0;r>n;n++)if(t[n]=R(this[n]),n===e.INSPECT_MAX_BYTES){t[n+1]="...";break}return"<Buffer "+t.join(" ")+">"},n.prototype.toArrayBuffer=function(){if("function"==typeof Uint8Array){if(n._useTypedArrays)return new n(this).buffer;for(var t=new Uint8Array(this.length),r=0,e=t.length;e>r;r+=1)t[r]=this[r];return t.buffer}throw Error("Buffer.toArrayBuffer not supported in this browser")};var Y=n.prototype},{"base64-js":2,ieee754:3}],2:[function(t,r){var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";(function(){"use strict";function t(t){var r=t.charCodeAt(0);return r===o?62:r===s?63:u>r?-1:u+10>r?r-u+26+26:f+26>r?r-f:c+26>r?r-c+26:void 0}function n(r){function e(t){c[l++]=t}var n,i,o,s,u,c;if(r.length%4>0)throw Error("Invalid string. Length must be a multiple of 4");var f=r.length;u="="===r.charAt(f-2)?2:"="===r.charAt(f-1)?1:0,c=new a(3*r.length/4-u),o=u>0?r.length-4:r.length;var l=0;for(n=0,i=0;o>n;n+=4,i+=3)s=t(r.charAt(n))<<18|t(r.charAt(n+1))<<12|t(r.charAt(n+2))<<6|t(r.charAt(n+3)),e((16711680&s)>>16),e((65280&s)>>8),e(255&s);return 2===u?(s=t(r.charAt(n))<<2|t(r.charAt(n+1))>>4,e(255&s)):1===u&&(s=t(r.charAt(n))<<10|t(r.charAt(n+1))<<4|t(r.charAt(n+2))>>2,e(255&s>>8),e(255&s)),c}function i(t){function r(t){return e.charAt(t)}function n(t){return r(63&t>>18)+r(63&t>>12)+r(63&t>>6)+r(63&t)}var i,a,o,s=t.length%3,u="";for(i=0,o=t.length-s;o>i;i+=3)a=(t[i]<<16)+(t[i+1]<<8)+t[i+2],u+=n(a);switch(s){case 1:a=t[t.length-1],u+=r(a>>2),u+=r(63&a<<4),u+="==";break;case 2:a=(t[t.length-2]<<8)+t[t.length-1],u+=r(a>>10),u+=r(63&a>>4),u+=r(63&a<<2),u+="="}return u}var a="undefined"!=typeof Uint8Array?Uint8Array:Array;"0".charCodeAt(0);var o="+".charCodeAt(0),s="/".charCodeAt(0),u="0".charCodeAt(0),c="a".charCodeAt(0),f="A".charCodeAt(0);r.exports.toByteArray=n,r.exports.fromByteArray=i})()},{}],3:[function(t,r,e){e.read=function(t,r,e,n,i){var a,o,s=8*i-n-1,u=(1<<s)-1,c=u>>1,f=-7,l=e?i-1:0,h=e?-1:1,p=t[r+l];for(l+=h,a=p&(1<<-f)-1,p>>=-f,f+=s;f>0;a=256*a+t[r+l],l+=h,f-=8);for(o=a&(1<<-f)-1,a>>=-f,f+=n;f>0;o=256*o+t[r+l],l+=h,f-=8);if(0===a)a=1-c;else{if(a===u)return o?0/0:1/0*(p?-1:1);o+=Math.pow(2,n),a-=c}return(p?-1:1)*o*Math.pow(2,a-n)},e.write=function(t,r,e,n,i,a){var o,s,u,c=8*a-i-1,f=(1<<c)-1,l=f>>1,h=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,p=n?0:a-1,d=n?1:-1,v=0>r||0===r&&0>1/r?1:0;for(r=Math.abs(r),isNaN(r)||1/0===r?(s=isNaN(r)?1:0,o=f):(o=Math.floor(Math.log(r)/Math.LN2),1>r*(u=Math.pow(2,-o))&&(o--,u*=2),r+=o+l>=1?h/u:h*Math.pow(2,1-l),r*u>=2&&(o++,u/=2),o+l>=f?(s=0,o=f):o+l>=1?(s=(r*u-1)*Math.pow(2,i),o+=l):(s=r*Math.pow(2,l-1)*Math.pow(2,i),o=0));i>=8;t[e+p]=255&s,p+=d,s/=256,i-=8);for(o=o<<i|s,c+=i;c>0;t[e+p]=255&o,p+=d,o/=256,c-=8);t[e+p-d]|=128*v}},{}],bILoee:[function(t,r){"use strict";function e(t){this.gl=t,this.extents=[[-10,-10,-10],[10,10,10]],this.labels=["x","y","z"],this.tickSpacing=[.5,.5,.5],this.tickWidth=.01,this.showTicks=[!0,!0,!0],this.font="sans-serif",this.fontSize=32,this._textSprites=null,this._box=null,this._lines=null,this._state=u(t,[t.BLEND,t.BLEND_DST_ALPHA,t.BLEND_DST_RGB,t.BLEND_SRC_ALPHA,t.BLEND_SRC_RGB,t.BLEND_EQUATION_ALPHA,t.BLEND_EQUATION_RGB,t.CULL_FACE,t.CULL_FACE_MODE,t.DEPTH_WRITEMASK,t.DEPTH_TEST,t.LINE_WIDTH])}function n(t,r){var n=new e(t);return n.update(r),n}r.exports=n;var i=t("./lib/textSprites.js"),a=t("./lib/box.js"),o=t("./lib/lines.js"),s=t("bit-twiddle"),u=t("gl-state"),c=t("gl-matrix"),f=c.mat4,l=c.vec4,h=new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]),p=[new Float32Array(16),new Float32Array(16)],d=e.prototype;d.update=function(t){t=t||{},"extents"in t&&(this.extents=t.extents),"labels"in t&&(this.labels=t.labels),"tickSpacing"in t&&("number"==typeof t.tickSpacing&&(this.tickSpacing=[t.tickSpacing,t.tickSpacing,t.tickSpacing]),this.tickSpacing=t.tickSpacing),"showTicks"in t&&("boolean"==typeof t.showTicks&&(this.showTicks=[t.showTicks,t.showTicks,t.showTicks]),this.showTicks=t.showTicks),"tickWidth"in t&&(this.tickWidth=t.tickWidth),"font"in t&&(this.font=t.font),"fontSize"in t&&(this.fontSize=t.fontSize),this._textSprites&&this._textSprites.dispose(),this._textSprites=i(this.gl,this.extents,this.tickSpacing,this.font,this.fontSize,4,this.labels),this._box||(this._box=a(this.gl)),this._lines&&this._lines.dispose(),this._lines=o(this.gl,this.extents,this.tickSpacing)},d.draw=function(t){t=t||{};var r=t.model||h,e=t.view||h,n=t.projection||h,i=p[0],a=p[1],o=this.extents;f.multiply(i,e,r),f.multiply(i,n,i),f.invert(a,i);for(var u=[],c=[0,0,0,1],d=[0,0,0,0],v=0,g=0;2>g;++g){c[2]=o[g][2];for(var m=0;2>m;++m){c[1]=o[m][1];for(var y=0;2>y;++y){c[0]=o[y][0],l.transformMat4(d,c,i);var b=[d[0]/d[3],d[1]/d[3],d[2]/Math.abs(d[3])];u.push(b),b[1]<u[v][1]&&(v=u.length-1)}}}for(var _=1^v,g=0;8>g;++g)g!==v&&u[g][2]<u[_][2]&&(_=g);var w=1^v,E=2^v;w===_&&(w=4^v),E===_&&(E=4^v);for(var g=0;3>g;++g){var A=v^1<<g;if(A!==_){var x=u[A];x[0]<u[w][0]&&(w=A,E=v^1<<(g+1)%3,E===_&&(E=v^1<<(g+2)%3))}}for(var g=0;3>g;++g){var A=v^1<<g;if(A!==w&&A!==_){var x=u[A];x[0]>u[E][0]&&(E=A)}}var T=[0,0,0];T[s.log2(w^v)]=v&w,T[s.log2(v^E)]=v&E;var M=7^E;M===_?(M=7^w,T[s.log2(E^M)]=M&E):T[s.log2(w^M)]=M&w;for(var I=[1,1,1],L=w^M^v,g=0;8>g;++g)if(g!==w&&g!=v&&g!==M&&g!=E){var x=u[g];x[2]<u[L][2]&&(L=g)}for(var j=0;3>j;++j)I[j]=L&1<<j?-1:1;this._state.push();var S=this.gl;S.enable(S.CULL_FACE),S.cullFace(S.BACK),S.enable(S.DEPTH_TEST),S.depthMask(!0),S.disable(S.BLEND),S.lineWidth(1),this._lines.bind(r,e,n,this);for(var g=0;3>g;++g)if(this.showTicks[g]){for(var N=T[g],R=[0,0,0],F=[0,0,0],m=0;3>m;++m)N&1<<m?(R[m]=o[1][m]+.5*this.tickSpacing[m],F[m]=-.125*this.tickSpacing[m]):(R[m]=o[0][m]-.5*this.tickSpacing[m],F[m]=.125*this.tickSpacing[m]);R[g]=.5*(o[0][g]+o[1][g]),F[g]=0,this._lines.draw(g,R,F)}S.enable(S.BLEND),S.blendEquation(S.FUNC_ADD),S.blendFunc(S.ONE,S.ONE_MINUS_SRC_ALPHA),this._box.draw(r,e,n,I,this),S.depthMask(!1),this._textSprites.bind(r,e,n,this);for(var g=0;3>g;++g)if(this.showTicks[g]){for(var N=T[g],R=[0,0,0],k=[0,0,0],m=0;3>m;++m)N&1<<m?(R[m]=o[1][m]+1*this.tickSpacing[m],k[m]=o[1][m]+1.5*this.tickSpacing[m]):(R[m]=o[0][m]-1*this.tickSpacing[m],k[m]=o[0][m]-1.5*this.tickSpacing[m]);k[g]=R[g]=.5*(o[0][g]+o[1][g]),this._textSprites.drawAxis(g,R),this._textSprites.drawLabel(g,k)}this._state.pop()},d.dispose=function(){this._textSprites.dispose(),this._box.dispose(),this._lines.dispose()}},{"./lib/box.js":6,"./lib/lines.js":7,"./lib/textSprites.js":8,"bit-twiddle":9,"gl-matrix":21,"gl-state":23}],"gl-axes":[function(t,r){r.exports=t("bILoee")},{}],6:[function(t,r){"use strict";function e(t,r,e,n){this.gl=t,this.vertBuffer=r,this.vao=e,this.shader=n}function n(t){for(var r=[],n=0;3>n;++n)for(var s=-1;1>=s;s+=2){var u=[0,0,0],c=[0,0,0],f=[0,0,0];u[n]=s,c[(n+1)%3]=1,f[(n+2)%3]=s,r.push(u[0]-c[0]+f[0],u[1]-c[1]+f[1],u[2]-c[2]+f[2],n,u[0],u[1],u[2],u[0]+c[0]+f[0],u[1]+c[1]+f[1],u[2]+c[2]+f[2],n,u[0],u[1],u[2],u[0]+c[0]-f[0],u[1]+c[1]-f[1],u[2]+c[2]-f[2],n,u[0],u[1],u[2],u[0]-c[0]+f[0],u[1]-c[1]+f[1],u[2]-c[2]+f[2],n,u[0],u[1],u[2],u[0]+c[0]-f[0],u[1]+c[1]-f[1],u[2]+c[2]-f[2],n,u[0],u[1],u[2],u[0]-c[0]-f[0],u[1]-c[1]-f[1],u[2]-c[2]-f[2],n,u[0],u[1],u[2])}var l=i(t,new Float32Array(r)),h=a(t,[{buffer:l,type:t.FLOAT,size:4,stride:28,offset:0},{buffer:l,type:t.FLOAT,size:3,stride:28,offset:16}]),p=o(t);return p.attributes.position.location=0,p.attributes.normal.location=1,new e(t,l,h,p)}r.exports=n;var i=t("gl-buffer"),a=t("gl-vao");t("glslify");var o=t("glslify/adapter.js")("\nattribute vec4 position;\nattribute vec3 normal;\nuniform mat4 model, view, projection;\nuniform vec3 extents[2];\nuniform vec3 axis;\nvarying vec3 dimension;\nvarying vec3 coordinate;\nvoid main() {\n if(dot(axis, normal) < 0.0) {\n gl_Position = vec4(10, 10, 10, 0);\n } else {\n vec3 worldPosition = extents[0] + 0.5 * (extents[1] - extents[0]) * (position.xyz + 1.);\n coordinate = worldPosition;\n if(position.w == 0.) {\n dimension = vec3(1, 0, 0);\n } else if(position.w == 1.) {\n dimension = vec3(0, 1, 0);\n } else if(position.w == 2.) {\n dimension = vec3(0, 0, 1);\n }\n \n gl_Position = projection * view * model * vec4(worldPosition, 1);\n }\n}","\nprecision highp float;\n#define PI 3.1415926535897932384626433832795\n\nuniform vec3 extents[2];\nuniform vec3 tickSpacing;\nuniform float tickWidth;\nvarying vec3 dimension;\nvarying vec3 coordinate;\nvoid main() {\n vec3 center = 0.5 * (extents[0] + extents[1]);\n vec3 freq = 2.0 * PI * (coordinate - center) / tickSpacing;\n vec3 weight = cos(freq);\n vec3 cutoff = cos(PI * tickWidth / tickSpacing);\n vec3 lines = 2. / (1. + exp(20.0 * (cutoff - weight)));\n lines -= dimension * lines;\n float intensity = lines.x + lines.y + lines.z;\n gl_FragColor = vec4(0.25, 0.25, 0.25, intensity + 0.3);\n}",[{name:"model",type:"mat4"},{name:"view",type:"mat4"},{name:"projection",type:"mat4"},{name:"extents[0]",type:"vec3"},{name:"extents[1]",type:"vec3"},{name:"axis",type:"vec3"},{name:"extents[0]",type:"vec3"},{name:"extents[1]",type:"vec3"},{name:"tickSpacing",type:"vec3"},{name:"tickWidth",type:"float"}],[{name:"position",type:"vec4"},{name:"normal",type:"vec3"}]),s=e.prototype;s.draw=function(t,r,e,n,i){var a=this.gl,o=this.shader,s=this.vao;o.bind(),o.uniforms.model=t,o.uniforms.view=r,o.uniforms.projection=e,o.uniforms.axis=n,o.uniforms.extents=i.extents,o.uniforms.tickSpacing=i.tickSpacing,o.uniforms.tickWidth=i.tickWidth,s.bind(),s.draw(a.TRIANGLES,36),s.unbind()},s.dispose=function(){this.vao.dispose(),this.faceBuffer.dispose(),this.vertBuffer.dispose(),this.shader.dispose()}},{"gl-buffer":11,"gl-vao":39,glslify:41,"glslify/adapter.js":40}],7:[function(t,r){"use strict";function e(t,r,e,n,i,a){this.gl=t,this.vertBuffer=r,this.vao=e,this.shader=n,this.lineCount=i,this.lineOffset=a}function n(t,r,n){for(var s=[],u=[0,0,0],c=[0,0,0],f=0;3>f;++f){var l=0|s.length/2;s.push(r[0][f],0,r[1][f],0),s.push(0,-1,0,1);for(var h=1;h*n[f]<=r[1][f];++h){var p=n[f]*h;s.push(p,-1,p,1)}for(var h=-1;h*n[f]>=r[0][f];--h){var p=n[f]*h;s.push(p,-1,p,1)}var d=0|s.length/2;u[f]=l,c[f]=d-l}var v=i(t,new Float32Array(s)),g=a(t,[{buffer:v,type:t.FLOAT,size:2,stride:0,offset:0}]),m=o(t);return m.attributes.position.location=0,new e(t,v,g,m,c,u)}r.exports=n;var i=t("gl-buffer"),a=t("gl-vao");t("glslify");var o=t("glslify/adapter.js")("\nattribute vec3 position;\nuniform mat4 model, view, projection;\nuniform vec3 offset, majorAxis, minorAxis;\nvoid main() {\n gl_Position = projection * view * model * vec4(position.x * majorAxis + position.y * minorAxis + offset, 1.0);\n}","\nvoid main() {\n gl_FragColor = vec4(0, 0, 0, 1);\n}",[{name:"model",type:"mat4"},{name:"view",type:"mat4"},{name:"projection",type:"mat4"},{name:"offset",type:"vec3"},{name:"majorAxis",type:"vec3"},{name:"minorAxis",type:"vec3"}],[{name:"position",type:"vec3"}]),s=e.prototype;s.bind=function(t,r,e){this.shader.bind(),this.shader.uniforms.model=t,this.shader.uniforms.view=r,this.shader.uniforms.projection=e,this.vao.bind()},s.draw=function(t,r,e){this.shader.uniforms.offset=r;var n=[0,0,0];n[t]=1,this.shader.uniforms.majorAxis=n,this.shader.uniforms.minorAxis=e,this.vao.draw(this.gl.LINES,this.lineCount[t],this.lineOffset[t])},s.dispose=function(){this.vao.dispose(),this.faceBuffer.dispose(),this.vertBuffer.dispose(),this.shader.dispose()}},{"gl-buffer":11,"gl-vao":39,glslify:41,"glslify/adapter.js":40}],8:[function(t,r){"use strict";function e(t,r,e,n,i,a,o,s){this.gl=t,this.shader=r,this.buffer=e,this.vao=n,this.textures=i,this.axesStart=a,this.axesCount=o,this.labelOffset=s}function n(t){return t+""}function i(t,r,i,h,p,d,v){function g(){w=a({width:b.width,height:b.height}),_.clearRect(0,0,b.width,b.height)}function m(){var r=u(t,b);r.generateMipmap(),E.push(r)}function y(t,r){var e=_.measureText(r),n=e.width,i=p,a=w.pack({width:n+2*d,height:i+2*d});a||(m(),g(),a=w.pack({width:n+2*d,height:i+2*d})),_.fillText(r,a.x+d+n/2,a.y+i);var o=E.length,s=[(a.x+d)/b.width,(a.y+d)/b.height],u=[n/b.width,i/b.height],c=.5*n/i;A.push(t,o,s[0],s[1]+u[1],-c,-.5,t,o,s[0]+u[0],s[1]+u[1],c,-.5,t,o,s[0],s[1],-c,.5,t,o,s[0]+u[0],s[1],c,.5,t,o,s[0],s[1],-c,.5,t,o,s[0]+u[0],s[1]+u[1],c,-.5)}var b=document.createElement("canvas");b.width=1024,b.height=1024;var _=b.getContext("2d");_.font=p+"px "+h,_.textAlign="center",_.textBaseLine="middle";var w,E=[],A=[];g();for(var x=[],T=[],M=[],I=0;3>I;++I){x.push(0|A.length/f);for(var L=.5*(r[0][I]+r[1][I]),j=L;r[1][I]>=j;j+=i[I])y(j,n(j));for(var j=L-i[I];j>=r[0][I];j-=i[I])y(j,n(j));T.push((0|A.length/f)-x[I]),M.push(0|A.length/f),y(L,v[I])}m();var S=o(t,A),N=s(t,[{buffer:S,offset:0,size:1,stride:l},{buffer:S,offset:4,size:1,stride:l},{buffer:S,offset:8,size:2,stride:l},{buffer:S,offset:16,size:2,stride:l}]),R=c(t);return R.attributes.t.location=0,R.attributes.textureId.location=1,R.attributes.texCoord.location=2,R.attributes.screenOffset.location=3,new e(t,R,S,N,E,x,T,M)}r.exports=i;var a=t("boxpack"),o=t("gl-buffer"),s=t("gl-vao"),u=t("gl-texture2d");t("glslify");var c=t("glslify/adapter.js")("\nattribute float t;\nattribute float textureId;\nattribute vec2 texCoord;\nattribute vec2 screenOffset;\nuniform mat4 model, view, projection;\nuniform vec3 offset, axis;\nvarying float fragTexId;\nvarying vec2 fragTexCoord;\nvoid main() {\n vec4 worldPosition = model * vec4(t * axis + offset, 1);\n vec4 viewPosition = view * worldPosition;\n gl_Position = projection * (viewPosition + 0.25 * vec4(screenOffset, 0, 1));\n fragTexId = textureId;\n fragTexCoord = texCoord;\n}","\nprecision highp float;\nuniform sampler2D textures[8];\nvarying float fragTexId;\nvarying vec2 fragTexCoord;\nvec4 intensity() {\n if(fragTexId < 0.5) {\n return texture2D(textures[0], fragTexCoord);\n } else if(fragTexId < 1.5) {\n return texture2D(textures[1], fragTexCoord);\n } else if(fragTexId < 2.5) {\n return texture2D(textures[2], fragTexCoord);\n } else if(fragTexId < 3.5) {\n return texture2D(textures[3], fragTexCoord);\n } else if(fragTexId < 4.5) {\n return texture2D(textures[4], fragTexCoord);\n } else if(fragTexId < 5.5) {\n return texture2D(textures[5], fragTexCoord);\n } else if(fragTexId < 6.5) {\n return texture2D(textures[6], fragTexCoord);\n } else if(fragTexId < 7.5) {\n return texture2D(textures[7], fragTexCoord);\n } else {\n return vec4(0, 0, 0, 0);\n }\n \n \n \n \n \n \n \n}\nvoid main() {\n gl_FragColor = intensity();\n}",[{name:"model",type:"mat4"},{name:"view",type:"mat4"},{name:"projection",type:"mat4"},{name:"offset",type:"vec3"},{name:"axis",type:"vec3"},{name:"textures[0]",type:"sampler2D"},{name:"textures[1]",type:"sampler2D"},{name:"textures[2]",type:"sampler2D"},{name:"textures[3]",type:"sampler2D"},{name:"textures[4]",type:"sampler2D"},{name:"textures[5]",type:"sampler2D"},{name:"textures[6]",type:"sampler2D"},{name:"textures[7]",type:"sampler2D"}],[{name:"t",type:"float"},{name:"textureId",type:"float"},{name:"texCoord",type:"vec2"},{name:"screenOffset",type:"vec2"}]),f=6,l=4*f,h=e.prototype;h.bind=function(t,r,e){this.vao.bind(),this.shader.bind(),this.shader.uniforms.model=t,this.shader.uniforms.view=r,this.shader.uniforms.projection=e;for(var n=0;this.textures.length>n;++n)this.shader.uniforms.textures[n]=this.textures[n].bind(n)},h.drawAxis=function(t,r){this.shader.uniforms.offset=r;var e=[0,0,0];e[t]=1,this.shader.uniforms.axis=e,this.vao.draw(this.gl.TRIANGLES,this.axesCount[t],this.axesStart[t])},h.drawLabel=function(t,r){this.shader.uniforms.offset=r,this.shader.uniforms.axis=[0,0,0],this.vao.draw(this.gl.TRIANGLES,6,this.labelOffset[t])},h.dispose=function(){this.shader.dispose(),this.vao.dispose(),this.buffer.dispose();for(var t=0;this.textures.length>t;++t)this.textures[t].dispose()}},{boxpack:10,"gl-buffer":11,"gl-texture2d":34,"gl-vao":39,glslify:41,"glslify/adapter.js":40}],9:[function(t,r,e){"use strict";"use restrict";function n(t){var r=32;return t&=-t,t&&r--,65535&t&&(r-=16),16711935&t&&(r-=8),252645135&t&&(r-=4),858993459&t&&(r-=2),1431655765&t&&(r-=1),r}var i=32;e.INT_BITS=i,e.INT_MAX=2147483647,e.INT_MIN=-1<<i-1,e.sign=function(t){return(t>0)-(0>t)},e.abs=function(t){var r=t>>i-1;return(t^r)-r},e.min=function(t,r){return r^(t^r)&-(r>t)},e.max=function(t,r){return t^(t^r)&-(r>t)},e.isPow2=function(t){return!(t&t-1||!t)},e.log2=function(t){var r,e;return r=(t>65535)<<4,t>>>=r,e=(t>255)<<3,t>>>=e,r|=e,e=(t>15)<<2,t>>>=e,r|=e,e=(t>3)<<1,t>>>=e,r|=e,r|t>>1},e.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},e.popCount=function(t){return t-=1431655765&t>>>1,t=(858993459&t)+(858993459&t>>>2),16843009*(252645135&t+(t>>>4))>>>24},e.countTrailingZeros=n,e.nextPow2=function(t){return t+=0===t,--t,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t+1},e.prevPow2=function(t){return t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t-(t>>>1)},e.parity=function(t){return t^=t>>>16,t^=t>>>8,t^=t>>>4,t&=15,1&27030>>>t};var a=Array(256);(function(t){for(var r=0;256>r;++r){var e=r,n=r,i=7;for(e>>>=1;e;e>>>=1)n<<=1,n|=1&e,--i;t[r]=255&n<<i}})(a),e.reverse=function(t){return a[255&t]<<24|a[255&t>>>8]<<16|a[255&t>>>16]<<8|a[255&t>>>24]},e.interleave2=function(t,r){return t&=65535,t=16711935&(t|t<<8),t=252645135&(t|t<<4),t=858993459&(t|t<<2),t=1431655765&(t|t<<1),r&=65535,r=16711935&(r|r<<8),r=252645135&(r|r<<4),r=858993459&(r|r<<2),r=1431655765&(r|r<<1),t|r<<1},e.deinterleave2=function(t,r){return t=1431655765&t>>>r,t=858993459&(t|t>>>1),t=252645135&(t|t>>>2),t=16711935&(t|t>>>4),t=65535&(t|t>>>16),t<<16>>16},e.interleave3=function(t,r,e){return t&=1023,t=4278190335&(t|t<<16),t=251719695&(t|t<<8),t=3272356035&(t|t<<4),t=1227133513&(t|t<<2),r&=1023,r=4278190335&(r|r<<16),r=251719695&(r|r<<8),r=3272356035&(r|r<<4),r=1227133513&(r|r<<2),t|=r<<1,e&=1023,e=4278190335&(e|e<<16),e=251719695&(e|e<<8),e=3272356035&(e|e<<4),e=1227133513&(e|e<<2),t|e<<2},e.deinterleave3=function(t,r){return t=1227133513&t>>>r,t=3272356035&(t|t>>>2),t=251719695&(t|t>>>4),t=4278190335&(t|t>>>8),t=1023&(t|t>>>16),t<<22>>22},e.nextCombination=function(t){var r=t|t-1;return r+1|(~r&-~r)-1>>>n(t)+1}},{}],10:[function(t,r){"use strict";function e(t){var r=Object.create(e.prototype);return t=t||{},r._packed=[],r._empty=[{x:0,y:0,width:t.width||1/0,height:t.height||1/0}],r.algo=t.algo||e.algo.dist,r}function n(t,r){return function(e,n){var i=e[t]-n[t];return 0!==i?i:e[r]-n[r]}}e.prototype={_packOne:function(t){var r=this,n=!1;if(r._empty.some(function(r){return e.rectFit(t,r)?(n=r,!0):!1}),!n)return!1;var i=Object.create(t);i.x=n.x,i.y=n.y,i.width=t.width,i.height=t.height,r._packed.push(i);var a=[];r._empty.forEach(function(t){return e.intersect(i,t)?(a=a.concat(e.subtract(i,t)),void 0):a.push(t)});var o=a.sort(r.algo);return this._empty=o.filter(function(t){return o.every(function(r){return t===r||!e.boxFit(t,r)})}),i},pack:function(t){var r=this;return t instanceof Array?t.map(function(t){return r._packOne(t)||t}):r._packOne(t)}},e.algo={dist:function(t,r){return Math.pow(t.x,2)+Math.pow(t.y,2)-(Math.pow(r.x,2)+Math.pow(r.y,2))},top:n("y","x"),left:n("x","y")},e.rectFit=function(t,r){return t.width<=r.width&&t.height<=r.height},e.boxFit=function(t,r){return t.x>=r.x&&t.x+t.width<=r.x+r.width&&t.y>=r.y&&t.y+t.height<=r.y+r.height},e.intersect=function(t,r){return t.x<r.x+r.width&&t.x+t.width>r.x&&t.y<r.y+r.height&&t.y+t.height>r.y},e.divideX=function(t,r){return t.x>=r||r>=t.x+t.width?[]:[{x:t.x,y:t.y,width:r-t.x,height:t.height},{x:r,y:t.y,width:t.x+t.width-r,height:t.height}]},e.divideY=function(t,r){return t.y>=r||r>=t.y+t.height?[]:[{x:t.x,y:t.y,width:t.width,height:r-t.y},{x:t.x,y:r,width:t.width,height:t.y+t.height-r}]},e.subtract=function(t,r){return[t].concat(e.divideX(r,t.x),e.divideX(r,t.x+t.width),e.divideY(r,t.y),e.divideY(r,t.y+t.height)).filter(function(r){return!e.intersect(t,r)})},r.exports=e},{}],11:[function(t,r){"use strict";function e(t,r,e,n,i){this.gl=t,this.type=r,this.handle=e,this.length=n,this.usage=i}function n(t,r,e,n,i,a){var o=i.length*i.BYTES_PER_ELEMENT;if(0>a)return t.bufferData(r,i,n),o;if(o+a>e)throw Error("gl-buffer: If resizing buffer, must not specify offset");return t.bufferSubData(r,a,i),e}function i(t,r){for(var e=s.malloc(t.length,r),n=t.length,i=0;n>i;++i)e[i]=t[i];return e}function a(t,r){for(var e=1,n=r.length-1;n>=0;--n){if(r[n]!==e)return!1;e*=t[n]}return!0}function o(t,r,n,i){if(n=n||t.ARRAY_BUFFER,i=i||t.DYNAMIC_DRAW,n!==t.ARRAY_BUFFER&&n!==t.ELEMENT_ARRAY_BUFFER)throw Error("gl-buffer: Invalid type for webgl buffer, must be either gl.ARRAY_BUFFER or gl.ELEMENT_ARRAY_BUFFER");if(i!==t.DYNAMIC_DRAW&&i!==t.STATIC_DRAW&&i!==t.STREAM_DRAW)throw Error("gl-buffer: Invalid usage for buffer, must be either gl.DYNAMIC_DRAW, gl.STATIC_DRAW or gl.STREAM_DRAW");var a=t.createBuffer(),o=new e(t,n,a,0,i);return o.update(r),o}var s=t("typedarray-pool"),u=t("ndarray-ops"),c=t("ndarray"),f=["uint8","uint8_clamped","uint16","uint32","int8","int16","int32","float32"],l=e.prototype;l.bind=function(){this.gl.bindBuffer(this.type,this.handle)},l.dispose=function(){this.gl.deleteBuffer(this.handle)},l.update=function(t,r){if("number"!=typeof r&&(r=-1),this.bind(),"object"==typeof t&&t.shape!==void 0){var e=t.dtype;if(0>f.indexOf(e)&&(e="float32"),this.type===this.gl.ELEMENT_ARRAY_BUFFER&&(e="uint16"),e===t.dtype&&a(t.shape,t.stride))this.length=0===t.offset&&t.data.length===t.shape[0]?n(this.gl,this.type,this.length,this.usage,t.data,r):n(this.gl,this.type,this.length,this.usage,t.data.subarray(t.offset,t.shape[0]),r);else{var o=s.malloc(t.size,e),l=c(o,t.shape);u.assign(l,t),this.length=0>r?n(this.gl,this.type,this.length,this.usage,o,r):n(this.gl,this.type,this.length,this.usage,o.subarray(0,t.size),r),s.free(o)}}else if(Array.isArray(t)){var h;h=this.type===this.gl.ELEMENT_ARRAY_BUFFER?i(t,"uint16"):i(t,"float32"),this.length=0>r?n(this.gl,this.type,this.length,this.usage,h,r):n(this.gl,this.type,this.length,this.usage,h.subarray(0,t.length),r),s.free(h)}else if("object"==typeof t&&"number"==typeof t.length)this.length=n(this.gl,this.type,this.length,this.usage,t,r);else{if("number"!=typeof t&&void 0!==t)throw Error("gl-buffer: Invalid data type");if(r>=0)throw Error("gl-buffer: Cannot specify offset when resizing buffer");t=0|t,0>=t&&(t=1),this.gl.bufferData(this.type,0|t,this.usage),this.length=t}},r.exports=o},{ndarray:17,"ndarray-ops":12,"typedarray-pool":20}],12:[function(t,r,e){"use strict";function n(t){if(!t)return s;for(var r=0;t.args.length>r;++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 i(t){return o({args:t.args,pre:n(t.pre),body:n(t.body),post:n(t.proc),funcName:t.funcName})}function a(t){for(var r=[],e=0;t.args.length>e;++e)r.push("a"+e);var n=Function("P",["return function ",t.funcName,"_ndarrayops(",r.join(","),") {P(",r.join(","),");return a0}"].join(""));return n(i(t))}var o=t("cwise-compiler"),s={body:"",args:[],thisVars:[],localVars:[]},u={add:"+",sub:"-",mul:"*",div:"/",mod:"%",band:"&",bor:"|",bxor:"^",lshift:"<<",rshift:">>",rrshift:">>>"};(function(){for(var t in u){var r=u[t];e[t]=a({args:["array","array","array"],body:{args:["a","b","c"],body:"a=b"+r+"c"},funcName:t}),e[t+"eq"]=a({args:["array","array"],body:{args:["a","b"],body:"a"+r+"=b"},rvalue:!0,funcName:t+"eq"}),e[t+"s"]=a({args:["array","array","scalar"],body:{args:["a","b","s"],body:"a=b"+r+"s"},funcName:t+"s"}),e[t+"seq"]=a({args:["array","scalar"],body:{args:["a","s"],body:"a"+r+"=s"},rvalue:!0,funcName:t+"seq"})}})();var c={not:"!",bnot:"~",neg:"-",recip:"1.0/"};(function(){for(var t in c){var r=c[t];e[t]=a({args:["array","array"],body:{args:["a","b"],body:"a="+r+"b"},funcName:t}),e[t+"eq"]=a({args:["array"],body:{args:["a"],body:"a="+r+"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 r=f[t];e[t]=a({args:["array","array","array"],body:{args:["a","b","c"],body:"a=b"+r+"c"},funcName:t}),e[t+"s"]=a({args:["array","array","scalar"],body:{args:["a","b","s"],body:"a=b"+r+"s"},funcName:t+"s"}),e[t+"eq"]=a({args:["array","array"],body:{args:["a","b"],body:"a=a"+r+"b"},rvalue:!0,count:2,funcName:t+"eq"}),e[t+"seq"]=a({args:["array","scalar"],body:{args:["a","s"],body:"a=a"+r+"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;l.length>t;++t){var r=l[t];e[r]=a({args:["array","array"],pre:{args:[],body:"this_f=Math."+r,thisVars:["this_f"]},body:{args:["a","b"],body:"a=this_f(b)",thisVars:["this_f"]},funcName:r}),e[r+"eq"]=a({args:["array"],pre:{args:[],body:"this_f=Math."+r,thisVars:["this_f"]},body:{args:["a"],body:"a=this_f(a)",thisVars:["this_f"]},rvalue:!0,count:2,funcName:r+"eq"})}})();var h=["max","min","atan2","pow"];(function(){for(var t=0;h.length>t;++t){var r=h[t];e[r]=a({args:["array","array","array"],pre:{args:[],body:"this_f=Math."+r,thisVars:["this_f"]},body:{args:["a","b","c"],body:"a=this_f(b,c)",thisVars:["this_f"]},funcName:r}),e[r+"s"]=a({args:["array","array","scalar"],pre:{args:[],body:"this_f=Math."+r,thisVars:["this_f"]},body:{args:["a","b","c"],body:"a=this_f(b,c)",thisVars:["this_f"]},funcName:r+"s"}),e[r+"eq"]=a({args:["array","array"],pre:{args:[],body:"this_f=Math."+r,thisVars:["this_f"]},body:{args:["a","b"],body:"a=this_f(a,b)",thisVars:["this_f"]},rvalue:!0,count:2,funcName:r+"eq"}),e[r+"seq"]=a({args:["array","scalar"],pre:{args:[],body:"this_f=Math."+r,thisVars:["this_f"]},body:{args:["a","b"],body:"a=this_f(a,b)",thisVars:["this_f"]},rvalue:!0,count:2,funcName:r+"seq"})}})();var p=["atan2","pow"];(function(){for(var t=0;p.length>t;++t){var r=p[t];e[r+"op"]=a({args:["array","array","array"],pre:{args:[],body:"this_f=Math."+r,thisVars:["this_f"]},body:{args:["a","b","c"],body:"a=this_f(c,b)",thisVars:["this_f"]},funcName:r+"op"}),e[r+"ops"]=a({args:["array","array","scalar"],pre:{args:[],body:"this_f=Math."+r,thisVars:["this_f"]},body:{args:["a","b","c"],body:"a=this_f(c,b)",thisVars:["this_f"]},funcName:r+"ops"}),e[r+"opeq"]=a({args:["array","array"],pre:{args:[],body:"this_f=Math."+r,thisVars:["this_f"]},body:{args:["a","b"],body:"a=this_f(b,a)",thisVars:["this_f"]},rvalue:!0,count:2,funcName:r+"opeq"}),e[r+"opseq"]=a({args:["array","scalar"],pre:{args:[],body:"this_f=Math."+r,thisVars:["this_f"]},body:{args:["a","b"],body:"a=this_f(b,a)",thisVars:["this_f"]},rvalue:!0,count:2,funcName:r+"opseq"})}})(),e.any=o({args:["array"],pre:s,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"}),e.all=o({args:["array"],pre:s,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"}),e.sum=o({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"}),e.prod=o({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"}),e.norm2squared=o({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"}),e.norm2=o({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"}),e.norminf=o({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"}),e.norm1=o({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"}),e.sup=o({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:[]}}),e.inf=o({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:[]}}),e.argmin=o({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:[]}}),e.argmax=o({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:[]}}),e.random=a({args:["array"],pre:{args:[],body:"this_f=Math.random",thisVars:["this_f"]},body:{args:["a"],body:"a=this_f()",thisVars:["this_f"]},funcName:"random"}),e.assign=a({args:["array","array"],body:{args:["a","b"],body:"a=b"},funcName:"assign"}),e.assigns=a({args:["array","scalar"],body:{args:["a","b"],body:"a=b"},funcName:"assigns"}),e.equals=o({args:["array","array"],pre:s,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"})
},{"cwise-compiler":13}],13:[function(t,r){"use strict";function e(){this.argTypes=[],this.shimArgs=[],this.arrayArgs=[],this.scalarArgs=[],this.indexArgs=[],this.shapeArgs=[],this.funcName="",this.pre=null,this.body=null,this.post=null,this.debug=!1}function n(t){var r=new e;r.pre=t.pre,r.body=t.body,r.post=t.post;var n=t.args.slice(0);r.argTypes=n;for(var a=0;n.length>a;++a)switch(n[a]){case"array":if(r.arrayArgs.push(a),r.shimArgs.push("array"+a),r.pre.args.length>a&&r.pre.args[a].count>0)throw Error("cwise: pre() block may not reference array args");if(r.post.args.length>a&&r.post.args[a].count>0)throw Error("cwise: post() block may not reference array args");break;case"scalar":r.scalarArgs.push(a),r.shimArgs.push("scalar"+a);break;case"index":if(r.indexArgs.push(a),r.pre.args.length>a&&r.pre.args[a].count>0)throw Error("cwise: pre() block may not reference array index");if(r.body.args.length>a&&r.body.args[a].lvalue)throw Error("cwise: body() block may not write to array index");if(r.post.args.length>a&&r.post.args[a].count>0)throw Error("cwise: post() block may not reference array index");break;case"shape":if(r.shapeArgs.push(a),r.pre.args.length>a&&r.pre.args[a].lvalue)throw Error("cwise: pre() block may not write to array shape");if(r.body.args.length>a&&r.body.args[a].lvalue)throw Error("cwise: body() block may not write to array shape");if(r.post.args.length>a&&r.post.args[a].lvalue)throw Error("cwise: post() block may not write to array shape");break;default:throw Error("cwise: Unknown argument type "+n[a])}if(0>=r.arrayArgs.length)throw Error("cwise: No array arguments specified");if(r.pre.args.length>n.length)throw Error("cwise: Too many arguments in pre() block");if(r.body.args.length>n.length)throw Error("cwise: Too many arguments in body() block");if(r.post.args.length>n.length)throw 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,i(r)}var i=t("./lib/thunk.js");r.exports=n},{"./lib/thunk.js":15}],14:[function(t,r){"use strict";function e(t,r,e){var n,i,a=t.length,o=r.arrayArgs.length,s=r.indexArgs.length>0,u=[],c=[],f=0,l=0;for(n=0;a>n;++n)c.push(["i",n,"=0"].join(""));for(i=0;o>i;++i)for(n=0;a>n;++n)l=f,f=t[n],0===n?c.push(["d",i,"s",n,"=t",i,"[",f,"]"].join("")):c.push(["d",i,"s",n,"=(t",i,"[",f,"]-s",l,"*t",i,"[",l,"])"].join(""));for(u.push("var "+c.join(",")),n=a-1;n>=0;--n)f=t[n],u.push(["for(i",n,"=0;i",n,"<s",f,";++i",n,"){"].join(""));for(u.push(e),n=0;a>n;++n){for(l=f,f=t[n],i=0;o>i;++i)u.push(["p",i,"+=d",i,"s",n].join(""));s&&(n>0&&u.push(["index[",l,"]-=s",l].join("")),u.push(["++index[",f,"]"].join(""))),u.push("}")}return u.join("\n")}function n(t,r,n,i){for(var a=r.length,o=n.arrayArgs.length,s=n.blockSize,u=n.indexArgs.length>0,c=[],f=0;o>f;++f)c.push(["var offset",f,"=p",f].join(""));for(var f=t;a>f;++f)c.push(["for(var j"+f+"=SS[",r[f],"]|0;j",f,">0;){"].join("")),c.push(["if(j",f,"<",s,"){"].join("")),c.push(["s",r[f],"=j",f].join("")),c.push(["j",f,"=0"].join("")),c.push(["}else{s",r[f],"=",s].join("")),c.push(["j",f,"-=",s,"}"].join("")),u&&c.push(["index[",r[f],"]=j",f].join(""));for(var f=0;o>f;++f){for(var l=["offset"+f],h=t;a>h;++h)l.push(["j",h,"*t",f,"[",r[h],"]"].join(""));c.push(["p",f,"=(",l.join("+"),")"].join(""))}c.push(e(r,n,i));for(var f=t;a>f;++f)c.push("}");return c.join("\n")}function i(t){for(var r=0,e=t[0].length;e>r;){for(var n=1;t.length>n;++n)if(t[n][r]!==t[0][r])return r;++r}return r}function a(t,r,e){for(var n=t.body,i=[],a=[],o=0;t.args.length>o;++o){var s=t.args[o];if(!(0>=s.count)){var u=RegExp(s.name,"g");switch(r.argTypes[o]){case"array":var c=r.arrayArgs.indexOf(o);1===s.count?"generic"===e[c]?s.lvalue?(i.push(["var l",c,"=a",c,".get(p",c,")"].join("")),n=n.replace(u,"l"+c),a.push(["a",c,".set(p",c,",l",c,")"].join(""))):n=n.replace(u,["a",c,".get(p",c,")"].join("")):n=n.replace(u,["a",c,"[p",c,"]"].join("")):"generic"===e[c]?(i.push(["var l",c,"=a",c,".get(p",c,")"].join("")),n=n.replace(u,"l"+c),s.lvalue&&a.push(["a",c,".set(p",c,",l",c,")"].join(""))):(i.push(["var l",c,"=a",c,"[p",c,"]"].join("")),n=n.replace(u,"l"+c),s.lvalue&&a.push(["a",c,"[p",c,"]=l",c].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[i.join("\n"),n,a.join("\n")].join("\n").trim()}function o(t){for(var r=Array(t.length),e=!0,n=0;t.length>n;++n){var i=t[n],a=i.match(/\d+/);a=a?a[0]:"",r[n]=0===i.charAt(0)?"u"+i.charAt(1)+a:i.charAt(0)+a,n>0&&(e=e&&r[n]===r[n-1])}return e?r[0]:r.join("")}function s(t,r){for(var s=0|r[1].length,c=Array(t.arrayArgs.length),f=Array(t.arrayArgs.length),l=["SS"],h=["'use strict'"],p=[],d=0;s>d;++d)p.push(["s",d,"=SS[",d,"]"].join(""));for(var v=0;t.arrayArgs.length>v;++v)l.push("a"+v),l.push("t"+v),l.push("p"+v),f[v]=r[2*v],c[v]=r[2*v+1];for(var v=0;t.scalarArgs.length>v;++v)l.push("Y"+v);if(t.shapeArgs.length>0&&p.push("shape=SS.slice(0)"),t.indexArgs.length>0){for(var g=Array(s),v=0;s>v;++v)g[v]="0";p.push(["index=[",g.join(","),"]"].join(""))}var m=u([].concat(t.pre.thisVars).concat(t.body.thisVars).concat(t.post.thisVars));p=p.concat(m),h.push("var "+p.join(","));for(var v=0;t.arrayArgs.length>v;++v)h.push("p"+v+"|=0");t.pre.body.length>3&&h.push(a(t.pre,t,f));var y=a(t.body,t,f),b=i(c);s>b?h.push(n(b,c[0],t,y)):h.push(e(c[0],t,y)),t.post.body.length>3&&h.push(a(t.post,t,f)),t.debug&&console.log("Generated cwise routine for ",r,":\n\n",h.join("\n"));var _=[t.funcName||"unnamed","_cwise_loop_",c[0].join("s"),"m",b,o(f)].join(""),w=Function(["function ",_,"(",l.join(","),"){",h.join("\n"),"} return ",_].join(""));return w()}var u=t("uniq");r.exports=s},{uniq:16}],15:[function(t,r){"use strict";function e(t){var r=["'use strict'","var CACHED={}"],e=[],i=t.funcName+"_cwise_thunk";r.push(["return function ",i,"(",t.shimArgs.join(","),"){"].join(""));for(var a=[],o=[],s=[["array",t.arrayArgs[0],".shape"].join("")],u=0;t.arrayArgs.length>u;++u){var c=t.arrayArgs[u];e.push(["t",c,"=array",c,".dtype,","r",c,"=array",c,".order"].join("")),a.push("t"+c),a.push("r"+c),o.push("t"+c),o.push("r"+c+".join()"),s.push("array"+c+".data"),s.push("array"+c+".stride"),s.push("array"+c+".offset|0")}for(var u=0;t.scalarArgs.length>u;++u)s.push("scalar"+t.scalarArgs[u]);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([",a.join(","),"])}","return proc(",s.join(","),")}"].join("")),t.debug&&console.log("Generated thunk:",r.join("\n"));var f=Function("compile",r.join("\n"));return f(n.bind(void 0,t))}var n=t("./compile.js");r.exports=e},{"./compile.js":14}],16:[function(t,r){"use strict";function e(t,r){for(var e=1,n=t.length,i=t[0],a=t[0],o=1;n>o;++o)if(a=i,i=t[o],r(i,a)){if(o===e){e++;continue}t[e++]=i}return t.length=e,t}function n(t){for(var r=1,e=t.length,n=t[0],i=t[0],a=1;e>a;++a,i=n)if(i=n,n=t[a],n!==i){if(a===r){r++;continue}t[r++]=n}return t.length=r,t}function i(t,r,i){return 0===t.length?[]:r?(i||t.sort(r),e(t,r)):(i||t.sort(),n(t))}r.exports=i},{}],17:[function(t,r){(function(e){"use strict";function n(t,r){return t[0]-r[0]}function i(){var t,r=this.stride,e=Array(r.length);for(t=0;e.length>t;++t)e[t]=[Math.abs(r[t]),t];e.sort(n);var i=Array(e.length);for(t=0;i.length>t;++t)i[t]=e[t][1];return i}function a(t,r){var e=["View",r,"d",t].join(""),n="generic"===t;if(0===r){var a=["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=proto.pick=function ",e,"_copy() {return new ",e,"(this.data,this.offset)};proto.get=function ",e,"_get(){return ",n?"this.data.get(this.offset)":"this.data[this.offset]","};proto.set=function ",e,"_set(v){return ",n?"this.data.get(this.offset)":"this.data[this.offset]","=v};return function construct_",e,"(a,b,c,d){return new ",e,"(a,d)}"].join(""),o=Function(a);return o()}var a=["'use strict'"],s=u(r),l=s.map(function(t){return"i"+t}),h="this.offset+"+s.map(function(t){return["this._stride",t,"*i",t].join("")}).join("+");a.push(["function ",e,"(a,",s.map(function(t){return"b"+t}).join(","),",",s.map(function(t){return"c"+t}).join(","),",d){this.data=a"].join(""));for(var p=0;r>p;++p)a.push(["this._shape",p,"=b",p,"|0"].join(""));for(var p=0;r>p;++p)a.push(["this._stride",p,"=c",p,"|0"].join(""));a.push("this.offset=d|0}"),a.push(["var proto=",e,".prototype"].join("")),a.push(["proto.dtype='",t,"'"].join("")),a.push("proto.dimension="+r);var d=["VStride",r,"d",t].join(""),v=["VShape",r,"d",t].join(""),g={stride:d,shape:v};for(var m in g){var y=g[m];a.push(["function ",y,"(v) {this._v=v} var aproto=",y,".prototype"].join("")),a.push(["aproto.length=",r].join(""));for(var b=[],p=0;r>p;++p)b.push(["this._v._",m,p].join(""));a.push(["aproto.toJSON=function ",y,"_toJSON(){return [",b.join(","),"]}"].join("")),a.push(["aproto.toString=function ",y,"_toString(){return [",b.join(","),"].join()}"].join(""));for(var p=0;r>p;++p)a.push(["Object.defineProperty(aproto,",p,",{get:function(){return this._v._",m,p,"},set:function(v){return this._v._",m,p,"=v|0},enumerable:true})"].join(""));for(var p=0;c.length>p;++p)c[p]in Array.prototype&&a.push(["aproto.",c[p],"=Array.prototype.",c[p]].join(""));a.push(["Object.defineProperty(proto,'",m,"',{get:function ",y,"_get(){return new ",y,"(this)},set: function ",y,"_set(v){"].join(""));for(var p=0;r>p;++p)a.push(["this._",m,p,"=v[",p,"]|0"].join(""));a.push("return v}})")}a.push(["Object.defineProperty(proto,'size',{get:function ",e,"_size(){return ",s.map(function(t){return["this._shape",t].join("")}).join("*"),"}})"].join("")),1===r?a.push("proto.order=[0]"):(a.push("Object.defineProperty(proto,'order',{get:"),4>r?(a.push(["function ",e,"_order(){"].join("")),2===r?a.push("return (Math.abs(this._stride0)>Math.abs(this._stride1))?[1,0]:[0,1]}})"):3===r&&a.push("var s0=Math.abs(this._stride0),s1=Math.abs(this._stride1),s2=Math.abs(this._stride2);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];}}})")):a.push("ORDER})")),a.push(["proto.set=function ",e,"_set(",l.join(","),",v){"].join("")),n?a.push(["return this.data.set(",h,",v)}"].join("")):a.push(["return this.data[",h,"]=v}"].join("")),a.push(["proto.get=function ",e,"_get(",l.join(","),"){"].join("")),n?a.push(["return this.data.get(",h,")}"].join("")):a.push(["return this.data[",h,"]}"].join("")),a.push(["proto.index=function ",e,"_index(",l.join(),"){return ",h,"}"].join("")),a.push(["proto.hi=function ",e,"_hi(",l.join(","),"){return new ",e,"(this.data,",s.map(function(t){return["(typeof i",t,"!=='number'||i",t,"<0)?this._shape",t,":i",t,"|0"].join("")}).join(","),",",s.map(function(t){return"this._stride"+t}).join(","),",this.offset)}"].join(""));var _=s.map(function(t){return"a"+t+"=this._shape"+t}),w=s.map(function(t){return"c"+t+"=this._stride"+t});a.push(["proto.lo=function ",e,"_lo(",l.join(","),"){var b=this.offset,d=0,",_.join(","),",",w.join(",")].join(""));for(var p=0;r>p;++p)a.push(["if(typeof i",p,"==='number'&&i",p,">=0){d=i",p,"|0;b+=c",p,"*d;a",p,"-=d}"].join(""));a.push(["return new ",e,"(this.data,",s.map(function(t){return"a"+t}).join(","),",",s.map(function(t){return"c"+t}).join(","),",b)}"].join("")),a.push(["proto.step=function ",e,"_step(",l.join(","),"){var ",s.map(function(t){return"a"+t+"=this._shape"+t}).join(","),",",s.map(function(t){return"b"+t+"=this._stride"+t}).join(","),",c=this.offset,d=0,ceil=Math.ceil"].join(""));for(var p=0;r>p;++p)a.push(["if(typeof i",p,"==='number'){d=i",p,"|0;if(d<0){c+=b",p,"*(a",p,"-1);a",p,"=ceil(-a",p,"/d)}else{a",p,"=ceil(a",p,"/d)}b",p,"*=d}"].join(""));a.push(["return new ",e,"(this.data,",s.map(function(t){return"a"+t}).join(","),",",s.map(function(t){return"b"+t}).join(","),",c)}"].join(""));for(var E=Array(r),A=Array(r),p=0;r>p;++p)E[p]=["a[i",p,"|0]"].join(""),A[p]=["b[i",p,"|0]"].join("");a.push(["proto.transpose=function ",e,"_transpose(",l,"){var a=this.shape,b=this.stride;return new ",e,"(this.data,",E.join(","),",",A.join(","),",this.offset)}"].join("")),a.push(["proto.pick=function ",e,"_pick(",l,"){var a=[],b=[],c=this.offset"].join(""));for(var p=0;r>p;++p)a.push(["if(typeof i",p,"==='number'&&i",p,">=0){c=(c+this._stride",p,"*i",p,")|0}else{a.push(this._shape",p,");b.push(this._stride",p,")}"].join(""));a.push("var ctor=CTOR_LIST[a.length];return ctor(this.data,a,b,c)}"),a.push(["return function construct_",e,"(data,shape,stride,offset){return new ",e,"(data,",s.map(function(t){return"shape["+t+"]"}).join(","),",",s.map(function(t){return"stride["+t+"]"}).join(","),",offset)}"].join(""));var o=Function("CTOR_LIST","ORDER",a.join("\n"));return o(f[t],i)}function o(t){return t instanceof Float64Array?"float64":t instanceof Float32Array?"float32":t instanceof Int32Array?"int32":t instanceof Uint32Array?"uint32":t instanceof Uint8Array?"uint8":t instanceof Uint16Array?"uint16":t instanceof Int16Array?"int16":t instanceof Int8Array?"int8":t instanceof Uint8ClampedArray?"uint8_clamped":e!==void 0&&t instanceof e?"buffer":t instanceof Array?"array":"generic"}function s(t,r,e,n){void 0===r&&(r=[t.length]);var i=r.length;if(void 0===e){e=Array(i);for(var s=i-1,u=1;s>=0;--s)e[s]=u,u*=r[s]}if(void 0===n){n=0;for(var s=0;i>s;++s)0>e[s]&&(n-=(r[s]-1)*e[s])}for(var c=o(t),l=f[c];i>=l.length;)l.push(a(c,l.length));var h=l[i];return h(t,r,e,n)}var u=t("iota-array"),c=["concat","join","slice","toString","indexOf","lastIndexOf","forEach","every","some","filter","map","reduce","reduceRight"],f={float32:[],float64:[],int8:[],int16:[],int32:[],uint8:[],uint16:[],uint32:[],array:[],uint8_clamped:[],buffer:[],generic:[]};r.exports=s}).call(this,t("buffer").Buffer)},{buffer:1,"iota-array":18}],18:[function(t,r){"use strict";function e(t){for(var r=Array(t),e=0;t>e;++e)r[e]=e;return r}r.exports=e},{}],19:[function(t,r){"use strict";function e(t,r,n){var i=0|t[n];if(0>=i)return[];var a,o=Array(i);if(n===t.length-1)for(a=0;i>a;++a)o[a]=r;else for(a=0;i>a;++a)o[a]=e(t,r,n+1);return o}function n(t,r){var e,n;for(e=Array(t),n=0;t>n;++n)e[n]=r;return e}function i(t,r){switch(r===void 0&&(r=0),typeof t){case"number":if(t>0)return n(0|t,r);break;case"object":if("number"==typeof t.length)return e(t,r,0)}return[]}r.exports=i},{}],20:[function(t,r,e){(function(r){"use strict";var n=t("bit-twiddle"),i=t("dup");r.__TYPEDARRAY_POOL||(r.__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])});var a=r.__TYPEDARRAY_POOL,o=a.UINT8,s=a.UINT16,u=a.UINT32,c=a.INT8,f=a.INT16,l=a.INT32,h=a.FLOAT,p=a.DOUBLE,d=a.DATA;e.free=function(t){if(t instanceof ArrayBuffer){var r=0|t.byteLength,e=n.log2(r);d[e].push(t)}else{var r=0|t.length,e=n.log2(r);t instanceof Uint8Array?o[e].push(t):t instanceof Uint16Array?s[e].push(t):t instanceof Uint32Array?u[e].push(t):t instanceof Int8Array?c[e].push(t):t instanceof Int16Array?f[e].push(t):t instanceof Int32Array?l[e].push(t):t instanceof Float32Array?h[e].push(t):t instanceof Float64Array&&p[e].push(t)}},e.freeUint8=function(t){o[n.log2(t.length)].push(t)},e.freeUint16=function(t){s[n.log2(t.length)].push(t)},e.freeUint32=function(t){u[n.log2(t.length)].push(t)},e.freeInt8=function(t){c[n.log2(t.length)].push(t)},e.freeInt16=function(t){f[n.log2(t.length)].push(t)},e.freeInt32=function(t){l[n.log2(t.length)].push(t)},e.freeFloat32=e.freeFloat=function(t){h[n.log2(t.length)].push(t)},e.freeFloat64=e.freeDouble=function(t){p[n.log2(t.length)].push(t)},e.freeArrayBuffer=function(t){d[n.log2(t.length)].push(t)},e.malloc=function(t,r){t=n.nextPow2(t);var e=n.log2(t);if(void 0===r){var i=d[e];if(i.length>0){var a=i[i.length-1];return i.pop(),a}return new ArrayBuffer(t)}switch(r){case"uint8":var v=o[e];return v.length>0?v.pop():new Uint8Array(t);case"uint16":var g=s[e];return g.length>0?g.pop():new Uint16Array(t);case"uint32":var m=u[e];return m.length>0?m.pop():new Uint32Array(t);case"int8":var y=c[e];return y.length>0?y.pop():new Int8Array(t);case"int16":var b=f[e];return b.length>0?b.pop():new Int16Array(t);case"int32":var _=l[e];return _.length>0?_.pop():new Int32Array(t);case"float":case"float32":var w=h[e];return w.length>0?w.pop():new Float32Array(t);case"double":case"float64":var E=p[e];return E.length>0?E.pop():new Float64Array(t);default:return null}return null},e.mallocUint8=function(t){t=n.nextPow2(t);var r=n.log2(t),e=o[r];return e.length>0?e.pop():new Uint8Array(t)},e.mallocUint16=function(t){t=n.nextPow2(t);var r=n.log2(t),e=s[r];return e.length>0?e.pop():new Uint16Array(t)},e.mallocUint32=function(t){t=n.nextPow2(t);var r=n.log2(t),e=u[r];return e.length>0?e.pop():new Uint32Array(t)},e.mallocInt8=function(t){t=n.nextPow2(t);var r=n.log2(t),e=c[r];return e.length>0?e.pop():new Int8Array(t)},e.mallocInt16=function(t){t=n.nextPow2(t);var r=n.log2(t),e=f[r];return e.length>0?e.pop():new Int16Array(t)},e.mallocInt32=function(t){t=n.nextPow2(t);var r=n.log2(t),e=l[r];return e.length>0?e.pop():new Int32Array(t)},e.mallocFloat32=e.mallocFloat=function(t){t=n.nextPow2(t);var r=n.log2(t),e=h[r];return e.length>0?e.pop():new Float32Array(t)},e.mallocFloat64=e.mallocDouble=function(t){t=n.nextPow2(t);var r=n.log2(t),e=p[r];return e.length>0?e.pop():new Float64Array(t)},e.mallocArrayBuffer=function(t){t=n.nextPow2(t);var r=n.log2(t),e=d[r];return e.length>0?e.pop():new ArrayBuffer(t)},e.clearCache=function(){for(var t=0;32>t;++t)o[t].length=0,s[t].length=0,u[t].length=0,c[t].length=0,f[t].length=0,l[t].length=0,h[t].length=0,p[t].length=0,d[t].length=0}}).call(this,"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"bit-twiddle":9,dup:19}],21:[function(t,r,e){(function(){"use strict";var t={};e===void 0?"function"==typeof define&&"object"==typeof define.amd&&define.amd?(t.exports={},define(function(){return t.exports})):t.exports=window:t.exports=e,function(t){if(!r)var r=1e-6;if(!e)var e="undefined"!=typeof Float32Array?Float32Array:Array;var n={};n.setMatrixArrayType=function(t){e=t},t!==void 0&&(t.glMatrix=n);var i={};i.create=function(){var t=new e(2);return t[0]=0,t[1]=0,t},i.clone=function(t){var r=new e(2);return r[0]=t[0],r[1]=t[1],r},i.fromValues=function(t,r){var n=new e(2);return n[0]=t,n[1]=r,n},i.copy=function(t,r){return t[0]=r[0],t[1]=r[1],t},i.set=function(t,r,e){return t[0]=r,t[1]=e,t},i.add=function(t,r,e){return t[0]=r[0]+e[0],t[1]=r[1]+e[1],t},i.subtract=function(t,r,e){return t[0]=r[0]-e[0],t[1]=r[1]-e[1],t},i.sub=i.subtract,i.multiply=function(t,r,e){return t[0]=r[0]*e[0],t[1]=r[1]*e[1],t},i.mul=i.multiply,i.divide=function(t,r,e){return t[0]=r[0]/e[0],t[1]=r[1]/e[1],t},i.div=i.divide,i.min=function(t,r,e){return t[0]=Math.min(r[0],e[0]),t[1]=Math.min(r[1],e[1]),t},i.max=function(t,r,e){return t[0]=Math.max(r[0],e[0]),t[1]=Math.max(r[1],e[1]),t},i.scale=function(t,r,e){return t[0]=r[0]*e,t[1]=r[1]*e,t},i.distance=function(t,r){var e=r[0]-t[0],n=r[1]-t[1];return Math.sqrt(e*e+n*n)},i.dist=i.distance,i.squaredDistance=function(t,r){var e=r[0]-t[0],n=r[1]-t[1];return e*e+n*n},i.sqrDist=i.squaredDistance,i.length=function(t){var r=t[0],e=t[1];return Math.sqrt(r*r+e*e)},i.len=i.length,i.squaredLength=function(t){var r=t[0],e=t[1];return r*r+e*e},i.sqrLen=i.squaredLength,i.negate=function(t,r){return t[0]=-r[0],t[1]=-r[1],t},i.normalize=function(t,r){var e=r[0],n=r[1],i=e*e+n*n;return i>0&&(i=1/Math.sqrt(i),t[0]=r[0]*i,t[1]=r[1]*i),t},i.dot=function(t,r){return t[0]*r[0]+t[1]*r[1]},i.cross=function(t,r,e){var n=r[0]*e[1]-r[1]*e[0];return t[0]=t[1]=0,t[2]=n,t},i.lerp=function(t,r,e,n){var i=r[0],a=r[1];return t[0]=i+n*(e[0]-i),t[1]=a+n*(e[1]-a),t},i.transformMat2=function(t,r,e){var n=r[0],i=r[1];return t[0]=e[0]*n+e[2]*i,t[1]=e[1]*n+e[3]*i,t},i.transformMat2d=function(t,r,e){var n=r[0],i=r[1];return t[0]=e[0]*n+e[2]*i+e[4],t[1]=e[1]*n+e[3]*i+e[5],t},i.transformMat3=function(t,r,e){var n=r[0],i=r[1];return t[0]=e[0]*n+e[3]*i+e[6],t[1]=e[1]*n+e[4]*i+e[7],t},i.transformMat4=function(t,r,e){var n=r[0],i=r[1];return t[0]=e[0]*n+e[4]*i+e[12],t[1]=e[1]*n+e[5]*i+e[13],t},i.forEach=function(){var t=i.create();return function(r,e,n,i,a,o){var s,u;for(e||(e=2),n||(n=0),u=i?Math.min(i*e+n,r.length):r.length,s=n;u>s;s+=e)t[0]=r[s],t[1]=r[s+1],a(t,t,o),r[s]=t[0],r[s+1]=t[1];return r}}(),i.str=function(t){return"vec2("+t[0]+", "+t[1]+")"},t!==void 0&&(t.vec2=i);var a={};a.create=function(){var t=new e(3);return t[0]=0,t[1]=0,t[2]=0,t},a.clone=function(t){var r=new e(3);return r[0]=t[0],r[1]=t[1],r[2]=t[2],r},a.fromValues=function(t,r,n){var i=new e(3);return i[0]=t,i[1]=r,i[2]=n,i},a.copy=function(t,r){return t[0]=r[0],t[1]=r[1],t[2]=r[2],t},a.set=function(t,r,e,n){return t[0]=r,t[1]=e,t[2]=n,t},a.add=function(t,r,e){return t[0]=r[0]+e[0],t[1]=r[1]+e[1],t[2]=r[2]+e[2],t},a.subtract=function(t,r,e){return t[0]=r[0]-e[0],t[1]=r[1]-e[1],t[2]=r[2]-e[2],t},a.sub=a.subtract,a.multiply=function(t,r,e){return t[0]=r[0]*e[0],t[1]=r[1]*e[1],t[2]=r[2]*e[2],t},a.mul=a.multiply,a.divide=function(t,r,e){return t[0]=r[0]/e[0],t[1]=r[1]/e[1],t[2]=r[2]/e[2],t},a.div=a.divide,a.min=function(t,r,e){return t[0]=Math.min(r[0],e[0]),t[1]=Math.min(r[1],e[1]),t[2]=Math.min(r[2],e[2]),t},a.max=function(t,r,e){return t[0]=Math.max(r[0],e[0]),t[1]=Math.max(r[1],e[1]),t[2]=Math.max(r[2],e[2]),t},a.scale=function(t,r,e){return t[0]=r[0]*e,t[1]=r[1]*e,t[2]=r[2]*e,t},a.distance=function(t,r){var e=r[0]-t[0],n=r[1]-t[1],i=r[2]-t[2];return Math.sqrt(e*e+n*n+i*i)},a.dist=a.distance,a.squaredDistance=function(t,r){var e=r[0]-t[0],n=r[1]-t[1],i=r[2]-t[2];return e*e+n*n+i*i},a.sqrDist=a.squaredDistance,a.length=function(t){var r=t[0],e=t[1],n=t[2];return Math.sqrt(r*r+e*e+n*n)},a.len=a.length,a.squaredLength=function(t){var r=t[0],e=t[1],n=t[2];return r*r+e*e+n*n},a.sqrLen=a.squaredLength,a.negate=function(t,r){return t[0]=-r[0],t[1]=-r[1],t[2]=-r[2],t},a.normalize=function(t,r){var e=r[0],n=r[1],i=r[2],a=e*e+n*n+i*i;return a>0&&(a=1/Math.sqrt(a),t[0]=r[0]*a,t[1]=r[1]*a,t[2]=r[2]*a),t},a.dot=function(t,r){return t[0]*r[0]+t[1]*r[1]+t[2]*r[2]},a.cross=function(t,r,e){var n=r[0],i=r[1],a=r[2],o=e[0],s=e[1],u=e[2];return t[0]=i*u-a*s,t[1]=a*o-n*u,t[2]=n*s-i*o,t},a.lerp=function(t,r,e,n){var i=r[0],a=r[1],o=r[2];return t[0]=i+n*(e[0]-i),t[1]=a+n*(e[1]-a),t[2]=o+n*(e[2]-o),t},a.transformMat4=function(t,r,e){var n=r[0],i=r[1],a=r[2];return t[0]=e[0]*n+e[4]*i+e[8]*a+e[12],t[1]=e[1]*n+e[5]*i+e[9]*a+e[13],t[2]=e[2]*n+e[6]*i+e[10]*a+e[14],t},a.transformQuat=function(t,r,e){var n=r[0],i=r[1],a=r[2],o=e[0],s=e[1],u=e[2],c=e[3],f=c*n+s*a-u*i,l=c*i+u*n-o*a,h=c*a+o*i-s*n,p=-o*n-s*i-u*a;return t[0]=f*c+p*-o+l*-u-h*-s,t[1]=l*c+p*-s+h*-o-f*-u,t[2]=h*c+p*-u+f*-s-l*-o,t},a.forEach=function(){var t=a.create();return function(r,e,n,i,a,o){var s,u;for(e||(e=3),n||(n=0),u=i?Math.min(i*e+n,r.length):r.length,s=n;u>s;s+=e)t[0]=r[s],t[1]=r[s+1],t[2]=r[s+2],a(t,t,o),r[s]=t[0],r[s+1]=t[1],r[s+2]=t[2];return r}}(),a.str=function(t){return"vec3("+t[0]+", "+t[1]+", "+t[2]+")"},t!==void 0&&(t.vec3=a);var o={};o.create=function(){var t=new e(4);return t[0]=0,t[1]=0,t[2]=0,t[3]=0,t},o.clone=function(t){var r=new e(4);return r[0]=t[0],r[1]=t[1],r[2]=t[2],r[3]=t[3],r},o.fromValues=function(t,r,n,i){var a=new e(4);return a[0]=t,a[1]=r,a[2]=n,a[3]=i,a},o.copy=function(t,r){return t[0]=r[0],t[1]=r[1],t[2]=r[2],t[3]=r[3],t},o.set=function(t,r,e,n,i){return t[0]=r,t[1]=e,t[2]=n,t[3]=i,t},o.add=function(t,r,e){return t[0]=r[0]+e[0],t[1]=r[1]+e[1],t[2]=r[2]+e[2],t[3]=r[3]+e[3],t},o.subtract=function(t,r,e){return t[0]=r[0]-e[0],t[1]=r[1]-e[1],t[2]=r[2]-e[2],t[3]=r[3]-e[3],t},o.sub=o.subtract,o.multiply=function(t,r,e){return t[0]=r[0]*e[0],t[1]=r[1]*e[1],t[2]=r[2]*e[2],t[3]=r[3]*e[3],t},o.mul=o.multiply,o.divide=function(t,r,e){return t[0]=r[0]/e[0],t[1]=r[1]/e[1],t[2]=r[2]/e[2],t[3]=r[3]/e[3],t},o.div=o.divide,o.min=function(t,r,e){return t[0]=Math.min(r[0],e[0]),t[1]=Math.min(r[1],e[1]),t[2]=Math.min(r[2],e[2]),t[3]=Math.min(r[3],e[3]),t},o.max=function(t,r,e){return t[0]=Math.max(r[0],e[0]),t[1]=Math.max(r[1],e[1]),t[2]=Math.max(r[2],e[2]),t[3]=Math.max(r[3],e[3]),t},o.scale=function(t,r,e){return t[0]=r[0]*e,t[1]=r[1]*e,t[2]=r[2]*e,t[3]=r[3]*e,t},o.distance=function(t,r){var e=r[0]-t[0],n=r[1]-t[1],i=r[2]-t[2],a=r[3]-t[3];return Math.sqrt(e*e+n*n+i*i+a*a)},o.dist=o.distance,o.squaredDistance=function(t,r){var e=r[0]-t[0],n=r[1]-t[1],i=r[2]-t[2],a=r[3]-t[3];return e*e+n*n+i*i+a*a},o.sqrDist=o.squaredDistance,o.length=function(t){var r=t[0],e=t[1],n=t[2],i=t[3];return Math.sqrt(r*r+e*e+n*n+i*i)},o.len=o.length,o.squaredLength=function(t){var r=t[0],e=t[1],n=t[2],i=t[3];return r*r+e*e+n*n+i*i},o.sqrLen=o.squaredLength,o.negate=function(t,r){return t[0]=-r[0],t[1]=-r[1],t[2]=-r[2],t[3]=-r[3],t},o.normalize=function(t,r){var e=r[0],n=r[1],i=r[2],a=r[3],o=e*e+n*n+i*i+a*a;return o>0&&(o=1/Math.sqrt(o),t[0]=r[0]*o,t[1]=r[1]*o,t[2]=r[2]*o,t[3]=r[3]*o),t},o.dot=function(t,r){return t[0]*r[0]+t[1]*r[1]+t[2]*r[2]+t[3]*r[3]},o.lerp=function(t,r,e,n){var i=r[0],a=r[1],o=r[2],s=r[3];return t[0]=i+n*(e[0]-i),t[1]=a+n*(e[1]-a),t[2]=o+n*(e[2]-o),t[3]=s+n*(e[3]-s),t},o.transformMat4=function(t,r,e){var n=r[0],i=r[1],a=r[2],o=r[3];return t[0]=e[0]*n+e[4]*i+e[8]*a+e[12]*o,t[1]=e[1]*n+e[5]*i+e[9]*a+e[13]*o,t[2]=e[2]*n+e[6]*i+e[10]*a+e[14]*o,t[3]=e[3]*n+e[7]*i+e[11]*a+e[15]*o,t},o.transformQuat=function(t,r,e){var n=r[0],i=r[1],a=r[2],o=e[0],s=e[1],u=e[2],c=e[3],f=c*n+s*a-u*i,l=c*i+u*n-o*a,h=c*a+o*i-s*n,p=-o*n-s*i-u*a;return t[0]=f*c+p*-o+l*-u-h*-s,t[1]=l*c+p*-s+h*-o-f*-u,t[2]=h*c+p*-u+f*-s-l*-o,t},o.forEach=function(){var t=o.create();return function(r,e,n,i,a,o){var s,u;for(e||(e=4),n||(n=0),u=i?Math.min(i*e+n,r.length):r.length,s=n;u>s;s+=e)t[0]=r[s],t[1]=r[s+1],t[2]=r[s+2],t[3]=r[s+3],a(t,t,o),r[s]=t[0],r[s+1]=t[1],r[s+2]=t[2],r[s+3]=t[3];return r}}(),o.str=function(t){return"vec4("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+")"},t!==void 0&&(t.vec4=o);var s={};new Float32Array([1,0,0,1]),s.create=function(){var t=new e(4);return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t},s.clone=function(t){var r=new e(4);return r[0]=t[0],r[1]=t[1],r[2]=t[2],r[3]=t[3],r},s.copy=function(t,r){return t[0]=r[0],t[1]=r[1],t[2]=r[2],t[3]=r[3],t},s.identity=function(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t},s.transpose=function(t,r){if(t===r){var e=r[1];t[1]=r[2],t[2]=e}else t[0]=r[0],t[1]=r[2],t[2]=r[1],t[3]=r[3];return t},s.invert=function(t,r){var e=r[0],n=r[1],i=r[2],a=r[3],o=e*a-i*n;return o?(o=1/o,t[0]=a*o,t[1]=-n*o,t[2]=-i*o,t[3]=e*o,t):null},s.adjoint=function(t,r){var e=r[0];return t[0]=r[3],t[1]=-r[1],t[2]=-r[2],t[3]=e,t},s.determinant=function(t){return t[0]*t[3]-t[2]*t[1]},s.multiply=function(t,r,e){var n=r[0],i=r[1],a=r[2],o=r[3],s=e[0],u=e[1],c=e[2],f=e[3];return t[0]=n*s+i*c,t[1]=n*u+i*f,t[2]=a*s+o*c,t[3]=a*u+o*f,t},s.mul=s.multiply,s.rotate=function(t,r,e){var n=r[0],i=r[1],a=r[2],o=r[3],s=Math.sin(e),u=Math.cos(e);return t[0]=n*u+i*s,t[1]=n*-s+i*u,t[2]=a*u+o*s,t[3]=a*-s+o*u,t},s.scale=function(t,r,e){var n=r[0],i=r[1],a=r[2],o=r[3],s=e[0],u=e[1];return t[0]=n*s,t[1]=i*u,t[2]=a*s,t[3]=o*u,t},s.str=function(t){return"mat2("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+")"},t!==void 0&&(t.mat2=s);var u={};new Float32Array([1,0,0,1,0,0]),u.create=function(){var t=new e(6);return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t[4]=0,t[5]=0,t},u.clone=function(t){var r=new e(6);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},u.copy=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},u.identity=function(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t[4]=0,t[5]=0,t},u.invert=function(t,r){var e=r[0],n=r[1],i=r[2],a=r[3],o=r[4],s=r[5],u=e*a-n*i;return u?(u=1/u,t[0]=a*u,t[1]=-n*u,t[2]=-i*u,t[3]=e*u,t[4]=(i*s-a*o)*u,t[5]=(n*o-e*s)*u,t):null},u.determinant=function(t){return t[0]*t[3]-t[1]*t[2]},u.multiply=function(t,r,e){var n=r[0],i=r[1],a=r[2],o=r[3],s=r[4],u=r[5],c=e[0],f=e[1],l=e[2],h=e[3],p=e[4],d=e[5];return t[0]=n*c+i*l,t[1]=n*f+i*h,t[2]=a*c+o*l,t[3]=a*f+o*h,t[4]=c*s+l*u+p,t[5]=f*s+h*u+d,t},u.mul=u.multiply,u.rotate=function(t,r,e){var n=r[0],i=r[1],a=r[2],o=r[3],s=r[4],u=r[5],c=Math.sin(e),f=Math.cos(e);return t[0]=n*f+i*c,t[1]=-n*c+i*f,t[2]=a*f+o*c,t[3]=-a*c+f*o,t[4]=f*s+c*u,t[5]=f*u-c*s,t},u.scale=function(t,r,e){var n=e[0],i=e[1];return t[0]=r[0]*n,t[1]=r[1]*i,t[2]=r[2]*n,t[3]=r[3]*i,t[4]=r[4]*n,t[5]=r[5]*i,t},u.translate=function(t,r,e){return t[0]=r[0],t[1]=r[1],t[2]=r[2],t[3]=r[3],t[4]=r[4]+e[0],t[5]=r[5]+e[1],t},u.str=function(t){return"mat2d("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+", "+t[4]+", "+t[5]+")"},t!==void 0&&(t.mat2d=u);var c={};new Float32Array([1,0,0,0,1,0,0,0,1]),c.create=function(){var t=new e(9);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},c.clone=function(t){var r=new e(9);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},c.copy=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},c.identity=function(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},c.transpose=function(t,r){if(t===r){var e=r[1],n=r[2],i=r[5];t[1]=r[3],t[2]=r[6],t[3]=e,t[5]=r[7],t[6]=n,t[7]=i}else t[0]=r[0],t[1]=r[3],t[2]=r[6],t[3]=r[1],t[4]=r[4],t[5]=r[7],t[6]=r[2],t[7]=r[5],t[8]=r[8];return t},c.invert=function(t,r){var e=r[0],n=r[1],i=r[2],a=r[3],o=r[4],s=r[5],u=r[6],c=r[7],f=r[8],l=f*o-s*c,h=-f*a+s*u,p=c*a-o*u,d=e*l+n*h+i*p;return d?(d=1/d,t[0]=l*d,t[1]=(-f*n+i*c)*d,t[2]=(s*n-i*o)*d,t[3]=h*d,t[4]=(f*e-i*u)*d,t[5]=(-s*e+i*a)*d,t[6]=p*d,t[7]=(-c*e+n*u)*d,t[8]=(o*e-n*a)*d,t):null},c.adjoint=function(t,r){var e=r[0],n=r[1],i=r[2],a=r[3],o=r[4],s=r[5],u=r[6],c=r[7],f=r[8];return t[0]=o*f-s*c,t[1]=i*c-n*f,t[2]=n*s-i*o,t[3]=s*u-a*f,t[4]=e*f-i*u,t[5]=i*a-e*s,t[6]=a*c-o*u,t[7]=n*u-e*c,t[8]=e*o-n*a,t},c.determinant=function(t){var r=t[0],e=t[1],n=t[2],i=t[3],a=t[4],o=t[5],s=t[6],u=t[7],c=t[8];return r*(c*a-o*u)+e*(-c*i+o*s)+n*(u*i-a*s)},c.multiply=function(t,r,e){var n=r[0],i=r[1],a=r[2],o=r[3],s=r[4],u=r[5],c=r[6],f=r[7],l=r[8],h=e[0],p=e[1],d=e[2],v=e[3],g=e[4],m=e[5],y=e[6],b=e[7],_=e[8];return t[0]=h*n+p*o+d*c,t[1]=h*i+p*s+d*f,t[2]=h*a+p*u+d*l,t[3]=v*n+g*o+m*c,t[4]=v*i+g*s+m*f,t[5]=v*a+g*u+m*l,t[6]=y*n+b*o+_*c,t[7]=y*i+b*s+_*f,t[8]=y*a+b*u+_*l,t},c.mul=c.multiply,c.translate=function(t,r,e){var n=r[0],i=r[1],a=r[2],o=r[3],s=r[4],u=r[5],c=r[6],f=r[7],l=r[8],h=e[0],p=e[1];return t[0]=n,t[1]=i,t[2]=a,t[3]=o,t[4]=s,t[5]=u,t[6]=h*n+p*o+c,t[7]=h*i+p*s+f,t[8]=h*a+p*u+l,t},c.rotate=function(t,r,e){var n=r[0],i=r[1],a=r[2],o=r[3],s=r[4],u=r[5],c=r[6],f=r[7],l=r[8],h=Math.sin(e),p=Math.cos(e);return t[0]=p*n+h*o,t[1]=p*i+h*s,t[2]=p*a+h*u,t[3]=p*o-h*n,t[4]=p*s-h*i,t[5]=p*u-h*a,t[6]=c,t[7]=f,t[8]=l,t},c.scale=function(t,r,e){var n=e[0],i=e[2];return t[0]=n*r[0],t[1]=n*r[1],t[2]=n*r[2],t[3]=i*r[3],t[4]=i*r[4],t[5]=i*r[5],t[6]=r[6],t[7]=r[7],t[8]=r[8],t},c.fromMat2d=function(t,r){return t[0]=r[0],t[1]=r[1],t[2]=0,t[3]=r[2],t[4]=r[3],t[5]=0,t[6]=r[4],t[7]=r[5],t[8]=1,t},c.fromQuat=function(t,r){var e=r[0],n=r[1],i=r[2],a=r[3],o=e+e,s=n+n,u=i+i,c=e*o,f=e*s,l=e*u,h=n*s,p=n*u,d=i*u,v=a*o,g=a*s,m=a*u;return t[0]=1-(h+d),t[1]=f+m,t[2]=l-g,t[3]=f-m,t[4]=1-(c+d),t[5]=p+v,t[6]=l+g,t[7]=p-v,t[8]=1-(c+h),t},c.str=function(t){return"mat3("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+", "+t[4]+", "+t[5]+", "+t[6]+", "+t[7]+", "+t[8]+")"},t!==void 0&&(t.mat3=c);var f={};new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]),f.create=function(){var t=new e(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},f.clone=function(t){var r=new e(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
},f.copy=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},f.identity=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},f.transpose=function(t,r){if(t===r){var e=r[1],n=r[2],i=r[3],a=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]=a,t[11]=r[14],t[12]=i,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},f.invert=function(t,r){var e=r[0],n=r[1],i=r[2],a=r[3],o=r[4],s=r[5],u=r[6],c=r[7],f=r[8],l=r[9],h=r[10],p=r[11],d=r[12],v=r[13],g=r[14],m=r[15],y=e*s-n*o,b=e*u-i*o,_=e*c-a*o,w=n*u-i*s,E=n*c-a*s,A=i*c-a*u,x=f*v-l*d,T=f*g-h*d,M=f*m-p*d,I=l*g-h*v,L=l*m-p*v,j=h*m-p*g,S=y*j-b*L+_*I+w*M-E*T+A*x;return S?(S=1/S,t[0]=(s*j-u*L+c*I)*S,t[1]=(i*L-n*j-a*I)*S,t[2]=(v*A-g*E+m*w)*S,t[3]=(h*E-l*A-p*w)*S,t[4]=(u*M-o*j-c*T)*S,t[5]=(e*j-i*M+a*T)*S,t[6]=(g*_-d*A-m*b)*S,t[7]=(f*A-h*_+p*b)*S,t[8]=(o*L-s*M+c*x)*S,t[9]=(n*M-e*L-a*x)*S,t[10]=(d*E-v*_+m*y)*S,t[11]=(l*_-f*E-p*y)*S,t[12]=(s*T-o*I-u*x)*S,t[13]=(e*I-n*T+i*x)*S,t[14]=(v*b-d*w-g*y)*S,t[15]=(f*w-l*b+h*y)*S,t):null},f.adjoint=function(t,r){var e=r[0],n=r[1],i=r[2],a=r[3],o=r[4],s=r[5],u=r[6],c=r[7],f=r[8],l=r[9],h=r[10],p=r[11],d=r[12],v=r[13],g=r[14],m=r[15];return t[0]=s*(h*m-p*g)-l*(u*m-c*g)+v*(u*p-c*h),t[1]=-(n*(h*m-p*g)-l*(i*m-a*g)+v*(i*p-a*h)),t[2]=n*(u*m-c*g)-s*(i*m-a*g)+v*(i*c-a*u),t[3]=-(n*(u*p-c*h)-s*(i*p-a*h)+l*(i*c-a*u)),t[4]=-(o*(h*m-p*g)-f*(u*m-c*g)+d*(u*p-c*h)),t[5]=e*(h*m-p*g)-f*(i*m-a*g)+d*(i*p-a*h),t[6]=-(e*(u*m-c*g)-o*(i*m-a*g)+d*(i*c-a*u)),t[7]=e*(u*p-c*h)-o*(i*p-a*h)+f*(i*c-a*u),t[8]=o*(l*m-p*v)-f*(s*m-c*v)+d*(s*p-c*l),t[9]=-(e*(l*m-p*v)-f*(n*m-a*v)+d*(n*p-a*l)),t[10]=e*(s*m-c*v)-o*(n*m-a*v)+d*(n*c-a*s),t[11]=-(e*(s*p-c*l)-o*(n*p-a*l)+f*(n*c-a*s)),t[12]=-(o*(l*g-h*v)-f*(s*g-u*v)+d*(s*h-u*l)),t[13]=e*(l*g-h*v)-f*(n*g-i*v)+d*(n*h-i*l),t[14]=-(e*(s*g-u*v)-o*(n*g-i*v)+d*(n*u-i*s)),t[15]=e*(s*h-u*l)-o*(n*h-i*l)+f*(n*u-i*s),t},f.determinant=function(t){var r=t[0],e=t[1],n=t[2],i=t[3],a=t[4],o=t[5],s=t[6],u=t[7],c=t[8],f=t[9],l=t[10],h=t[11],p=t[12],d=t[13],v=t[14],g=t[15],m=r*o-e*a,y=r*s-n*a,b=r*u-i*a,_=e*s-n*o,w=e*u-i*o,E=n*u-i*s,A=c*d-f*p,x=c*v-l*p,T=c*g-h*p,M=f*v-l*d,I=f*g-h*d,L=l*g-h*v;return m*L-y*I+b*M+_*T-w*x+E*A},f.multiply=function(t,r,e){var n=r[0],i=r[1],a=r[2],o=r[3],s=r[4],u=r[5],c=r[6],f=r[7],l=r[8],h=r[9],p=r[10],d=r[11],v=r[12],g=r[13],m=r[14],y=r[15],b=e[0],_=e[1],w=e[2],E=e[3];return t[0]=b*n+_*s+w*l+E*v,t[1]=b*i+_*u+w*h+E*g,t[2]=b*a+_*c+w*p+E*m,t[3]=b*o+_*f+w*d+E*y,b=e[4],_=e[5],w=e[6],E=e[7],t[4]=b*n+_*s+w*l+E*v,t[5]=b*i+_*u+w*h+E*g,t[6]=b*a+_*c+w*p+E*m,t[7]=b*o+_*f+w*d+E*y,b=e[8],_=e[9],w=e[10],E=e[11],t[8]=b*n+_*s+w*l+E*v,t[9]=b*i+_*u+w*h+E*g,t[10]=b*a+_*c+w*p+E*m,t[11]=b*o+_*f+w*d+E*y,b=e[12],_=e[13],w=e[14],E=e[15],t[12]=b*n+_*s+w*l+E*v,t[13]=b*i+_*u+w*h+E*g,t[14]=b*a+_*c+w*p+E*m,t[15]=b*o+_*f+w*d+E*y,t},f.mul=f.multiply,f.translate=function(t,r,e){var n,i,a,o,s,u,c,f,l,h,p,d,v=e[0],g=e[1],m=e[2];return r===t?(t[12]=r[0]*v+r[4]*g+r[8]*m+r[12],t[13]=r[1]*v+r[5]*g+r[9]*m+r[13],t[14]=r[2]*v+r[6]*g+r[10]*m+r[14],t[15]=r[3]*v+r[7]*g+r[11]*m+r[15]):(n=r[0],i=r[1],a=r[2],o=r[3],s=r[4],u=r[5],c=r[6],f=r[7],l=r[8],h=r[9],p=r[10],d=r[11],t[0]=n,t[1]=i,t[2]=a,t[3]=o,t[4]=s,t[5]=u,t[6]=c,t[7]=f,t[8]=l,t[9]=h,t[10]=p,t[11]=d,t[12]=n*v+s*g+l*m+r[12],t[13]=i*v+u*g+h*m+r[13],t[14]=a*v+c*g+p*m+r[14],t[15]=o*v+f*g+d*m+r[15]),t},f.scale=function(t,r,e){var n=e[0],i=e[1],a=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]*i,t[5]=r[5]*i,t[6]=r[6]*i,t[7]=r[7]*i,t[8]=r[8]*a,t[9]=r[9]*a,t[10]=r[10]*a,t[11]=r[11]*a,t[12]=r[12],t[13]=r[13],t[14]=r[14],t[15]=r[15],t},f.rotate=function(t,e,n,i){var a,o,s,u,c,f,l,h,p,d,v,g,m,y,b,_,w,E,A,x,T,M,I,L,j=i[0],S=i[1],N=i[2],R=Math.sqrt(j*j+S*S+N*N);return r>Math.abs(R)?null:(R=1/R,j*=R,S*=R,N*=R,a=Math.sin(n),o=Math.cos(n),s=1-o,u=e[0],c=e[1],f=e[2],l=e[3],h=e[4],p=e[5],d=e[6],v=e[7],g=e[8],m=e[9],y=e[10],b=e[11],_=j*j*s+o,w=S*j*s+N*a,E=N*j*s-S*a,A=j*S*s-N*a,x=S*S*s+o,T=N*S*s+j*a,M=j*N*s+S*a,I=S*N*s-j*a,L=N*N*s+o,t[0]=u*_+h*w+g*E,t[1]=c*_+p*w+m*E,t[2]=f*_+d*w+y*E,t[3]=l*_+v*w+b*E,t[4]=u*A+h*x+g*T,t[5]=c*A+p*x+m*T,t[6]=f*A+d*x+y*T,t[7]=l*A+v*x+b*T,t[8]=u*M+h*I+g*L,t[9]=c*M+p*I+m*L,t[10]=f*M+d*I+y*L,t[11]=l*M+v*I+b*L,e!==t&&(t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t)},f.rotateX=function(t,r,e){var n=Math.sin(e),i=Math.cos(e),a=r[4],o=r[5],s=r[6],u=r[7],c=r[8],f=r[9],l=r[10],h=r[11];return 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]),t[4]=a*i+c*n,t[5]=o*i+f*n,t[6]=s*i+l*n,t[7]=u*i+h*n,t[8]=c*i-a*n,t[9]=f*i-o*n,t[10]=l*i-s*n,t[11]=h*i-u*n,t},f.rotateY=function(t,r,e){var n=Math.sin(e),i=Math.cos(e),a=r[0],o=r[1],s=r[2],u=r[3],c=r[8],f=r[9],l=r[10],h=r[11];return 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]),t[0]=a*i-c*n,t[1]=o*i-f*n,t[2]=s*i-l*n,t[3]=u*i-h*n,t[8]=a*n+c*i,t[9]=o*n+f*i,t[10]=s*n+l*i,t[11]=u*n+h*i,t},f.rotateZ=function(t,r,e){var n=Math.sin(e),i=Math.cos(e),a=r[0],o=r[1],s=r[2],u=r[3],c=r[4],f=r[5],l=r[6],h=r[7];return 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]),t[0]=a*i+c*n,t[1]=o*i+f*n,t[2]=s*i+l*n,t[3]=u*i+h*n,t[4]=c*i-a*n,t[5]=f*i-o*n,t[6]=l*i-s*n,t[7]=h*i-u*n,t},f.fromRotationTranslation=function(t,r,e){var n=r[0],i=r[1],a=r[2],o=r[3],s=n+n,u=i+i,c=a+a,f=n*s,l=n*u,h=n*c,p=i*u,d=i*c,v=a*c,g=o*s,m=o*u,y=o*c;return t[0]=1-(p+v),t[1]=l+y,t[2]=h-m,t[3]=0,t[4]=l-y,t[5]=1-(f+v),t[6]=d+g,t[7]=0,t[8]=h+m,t[9]=d-g,t[10]=1-(f+p),t[11]=0,t[12]=e[0],t[13]=e[1],t[14]=e[2],t[15]=1,t},f.fromQuat=function(t,r){var e=r[0],n=r[1],i=r[2],a=r[3],o=e+e,s=n+n,u=i+i,c=e*o,f=e*s,l=e*u,h=n*s,p=n*u,d=i*u,v=a*o,g=a*s,m=a*u;return t[0]=1-(h+d),t[1]=f+m,t[2]=l-g,t[3]=0,t[4]=f-m,t[5]=1-(c+d),t[6]=p+v,t[7]=0,t[8]=l+g,t[9]=p-v,t[10]=1-(c+h),t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},f.frustum=function(t,r,e,n,i,a,o){var s=1/(e-r),u=1/(i-n),c=1/(a-o);return t[0]=2*a*s,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=2*a*u,t[6]=0,t[7]=0,t[8]=(e+r)*s,t[9]=(i+n)*u,t[10]=(o+a)*c,t[11]=-1,t[12]=0,t[13]=0,t[14]=2*o*a*c,t[15]=0,t},f.perspective=function(t,r,e,n,i){var a=1/Math.tan(r/2),o=1/(n-i);return t[0]=a/e,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=a,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=(i+n)*o,t[11]=-1,t[12]=0,t[13]=0,t[14]=2*i*n*o,t[15]=0,t},f.ortho=function(t,r,e,n,i,a,o){var s=1/(r-e),u=1/(n-i),c=1/(a-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*c,t[11]=0,t[12]=(r+e)*s,t[13]=(i+n)*u,t[14]=(o+a)*c,t[15]=1,t},f.lookAt=function(t,e,n,i){var a,o,s,u,c,l,h,p,d,v,g=e[0],m=e[1],y=e[2],b=i[0],_=i[1],w=i[2],E=n[0],A=n[1],x=n[2];return r>Math.abs(g-E)&&r>Math.abs(m-A)&&r>Math.abs(y-x)?f.identity(t):(h=g-E,p=m-A,d=y-x,v=1/Math.sqrt(h*h+p*p+d*d),h*=v,p*=v,d*=v,a=_*d-w*p,o=w*h-b*d,s=b*p-_*h,v=Math.sqrt(a*a+o*o+s*s),v?(v=1/v,a*=v,o*=v,s*=v):(a=0,o=0,s=0),u=p*s-d*o,c=d*a-h*s,l=h*o-p*a,v=Math.sqrt(u*u+c*c+l*l),v?(v=1/v,u*=v,c*=v,l*=v):(u=0,c=0,l=0),t[0]=a,t[1]=u,t[2]=h,t[3]=0,t[4]=o,t[5]=c,t[6]=p,t[7]=0,t[8]=s,t[9]=l,t[10]=d,t[11]=0,t[12]=-(a*g+o*m+s*y),t[13]=-(u*g+c*m+l*y),t[14]=-(h*g+p*m+d*y),t[15]=1,t)},f.str=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]+")"},t!==void 0&&(t.mat4=f);var l={};new Float32Array([0,0,0,1]),l.create=function(){var t=new e(4);return t[0]=0,t[1]=0,t[2]=0,t[3]=1,t},l.clone=o.clone,l.fromValues=o.fromValues,l.copy=o.copy,l.set=o.set,l.identity=function(t){return t[0]=0,t[1]=0,t[2]=0,t[3]=1,t},l.setAxisAngle=function(t,r,e){e=.5*e;var n=Math.sin(e);return t[0]=n*r[0],t[1]=n*r[1],t[2]=n*r[2],t[3]=Math.cos(e),t},l.add=o.add,l.multiply=function(t,r,e){var n=r[0],i=r[1],a=r[2],o=r[3],s=e[0],u=e[1],c=e[2],f=e[3];return t[0]=n*f+o*s+i*c-a*u,t[1]=i*f+o*u+a*s-n*c,t[2]=a*f+o*c+n*u-i*s,t[3]=o*f-n*s-i*u-a*c,t},l.mul=l.multiply,l.scale=o.scale,l.rotateX=function(t,r,e){e*=.5;var n=r[0],i=r[1],a=r[2],o=r[3],s=Math.sin(e),u=Math.cos(e);return t[0]=n*u+o*s,t[1]=i*u+a*s,t[2]=a*u-i*s,t[3]=o*u-n*s,t},l.rotateY=function(t,r,e){e*=.5;var n=r[0],i=r[1],a=r[2],o=r[3],s=Math.sin(e),u=Math.cos(e);return t[0]=n*u-a*s,t[1]=i*u+o*s,t[2]=a*u+n*s,t[3]=o*u-i*s,t},l.rotateZ=function(t,r,e){e*=.5;var n=r[0],i=r[1],a=r[2],o=r[3],s=Math.sin(e),u=Math.cos(e);return t[0]=n*u+i*s,t[1]=i*u-n*s,t[2]=a*u+o*s,t[3]=o*u-a*s,t},l.calculateW=function(t,r){var e=r[0],n=r[1],i=r[2];return t[0]=e,t[1]=n,t[2]=i,t[3]=-Math.sqrt(Math.abs(1-e*e-n*n-i*i)),t},l.dot=o.dot,l.lerp=o.lerp,l.slerp=function(t,r,e,n){var i,a,o,s,u=r[0],c=r[1],f=r[2],l=r[3],h=e[0],p=e[1],d=e[2],v=e[3],g=u*h+c*p+f*d+l*v;return Math.abs(g)>=1?(t!==r&&(t[0]=u,t[1]=c,t[2]=f,t[3]=l),t):(i=Math.acos(g),a=Math.sqrt(1-g*g),.001>Math.abs(a)?(t[0]=.5*u+.5*h,t[1]=.5*c+.5*p,t[2]=.5*f+.5*d,t[3]=.5*l+.5*v,t):(o=Math.sin((1-n)*i)/a,s=Math.sin(n*i)/a,t[0]=u*o+h*s,t[1]=c*o+p*s,t[2]=f*o+d*s,t[3]=l*o+v*s,t))},l.invert=function(t,r){var e=r[0],n=r[1],i=r[2],a=r[3],o=e*e+n*n+i*i+a*a,s=o?1/o:0;return t[0]=-e*s,t[1]=-n*s,t[2]=-i*s,t[3]=a*s,t},l.conjugate=function(t,r){return t[0]=-r[0],t[1]=-r[1],t[2]=-r[2],t[3]=r[3],t},l.length=o.length,l.len=l.length,l.squaredLength=o.squaredLength,l.sqrLen=l.squaredLength,l.normalize=o.normalize,l.fromMat3=function(){var t=[1,2,0];return function(r,e){var n,i=e[0]+e[4]+e[8];if(i>0)n=Math.sqrt(i+1),r[3]=.5*n,n=.5/n,r[0]=(e[7]-e[5])*n,r[1]=(e[2]-e[6])*n,r[2]=(e[3]-e[1])*n;else{var a=0;e[4]>e[0]&&(a=1),e[8]>e[3*a+a]&&(a=2);var o=t[a],s=t[o];n=Math.sqrt(e[3*a+a]-e[3*o+o]-e[3*s+s]+1),r[a]=.5*n,n=.5/n,r[3]=(e[3*s+o]-e[3*o+s])*n,r[o]=(e[3*o+a]+e[3*a+o])*n,r[s]=(e[3*s+a]+e[3*a+s])*n}return r}}(),l.str=function(t){return"quat("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+")"},t!==void 0&&(t.quat=l)}(t.exports)})()},{}],22:[function(t,r){r.exports=t(16)},{}],23:[function(t,r){"use strict";function e(t,r){r||(r=[t.ACTIVE_TEXTURE,t.ARRAY_BUFFER_BINDING,t.BLEND,t.BLEND_COLOR,t.BLEND_SRC_ALPHA,t.BLEND_SRC_RGB,t.BLEND_DST_ALPHA,t.BLEND_DST_RGB,t.BLEND_EQUATION_ALPHA,t.BLEND_EQUATION_RGB,t.COLOR_WRITEMASK,t.COLOR_CLEAR_VALUE,t.CULL_FACE,t.CULL_FACE_MODE,t.CURRENT_PROGRAM,t.DEPTH_CLEAR_VALUE,t.DEPTH_FUNC,t.DEPTH_RANGE,t.DEPTH_WRITEMASK,t.DITHER,t.ELEMENT_ARRAY_BUFFER_BINDING,t.FRAMEBUFFER_BINDING,t.FRONT_FACE,t.GENERATE_MIPMAP_HINT,t.LINE_WIDTH,t.PACK_ALIGNMENT,t.POLYGON_OFFSET_FACTOR,t.POLYGON_OFFSET_FILL,t.POLYGON_OFFSET_UNITS,t.RENDERBUFFER_BINDING,t.SAMPLE_COVERAGE,t.SAMPLE_COVERAGE_INVERT,t.SAMPLE_COVERAGE_VALUE,t.SCISSOR_BOX,t.SCISSOR_TEST,t.STENCIL_BACK_FAIL,t.STENCIL_BACK_FUNC,t.STENCIL_BACK_PASS_DEPTH_FAIL,t.STENCIL_BACK_PASS_DEPTH_PASS,t.STENCIL_BACK_REF,t.STENCIL_BACK_VALUE_MASK,t.STENCIL_BACK_WRITEMASK,t.STENCIL_CLEAR_VALUE,t.STENCIL_FAIL,t.STENCIL_FUNC,t.STENCIL_PASS_DEPTH_FAIL,t.STENCIL_PASS_DEPTH_PASS,t.STENCIL_REF,t.STENCIL_TEST,t.STENCIL_VALUE_MASK,t.STENCIL_WRITEMASK,t.TEXTURE,t.UNPACK_ALIGNMENT,t.UNPACK_COLORSPACE_CONVERSION_WEBGL,t.UNPACK_FLIP_Y_WEBGL,t.UNPACK_PREMULTIPLY_ALPHA_WEBGL,t.VIEWPORT]);var e=["'use strict'\nfunction StateStack(gl){this.gl=gl;"],i=["proto.push=function(){var gl=this.gl;"],a=["proto.pop=function(){var gl=this.gl;"],o=r.slice();o.sort(function(t,r){return t-r}),n(o,void 0,!0);var s=[t.TEXTURE,t.TEXTURE_2D,t.TEXTURE_CUBE_MAP,t.TEXTURE_BINDING_2D,t.TEXTURE_BINDING_CUBE_MAP];if(s.some(function(t){return o.indexOf(t)>=0})){var u=t.getParameter(t.MAX_TEXTURE_IMAGE_UNITS);e.push("this.textures=[];"),i.push("var curTex=gl.getParameter(",t.ACTIVE_TEXTURE,"),texState=new Array(",u,");");for(var c=0;u>c;++c)i.push("gl.activeTexture(",t.TEXTURE0+c,");texState[",c,"]=[gl.getParameter(",t.TEXTURE_BINDING_2D,"),gl.getParameter(",t.TEXTURE_BINDING_CUBE_MAP,")];");i.push("this.textures.push(texState);gl.activeTexture(curTex);"),a.push("var texState=this.textures.pop();");var f=0>o.indexOf(t.ACTIVE_TEXTURE);f&&a.push("var curTex=gl.getParameter(",t.ACTIVE_TEXTURE,");");for(var c=0;u>c;++c)a.push("gl.activeTexture(",t.TEXTURE0+c,");","gl.bindTexture(",t.TEXTURE_2D,",texState[",c,"][0]);","gl.bindTexture(",t.TEXTURE_CUBE_MAP,",texState[",c,"][1]);");f&&a.push("gl.activeTexture(curTex);")}var l={blendEquationSeparate:[t.BLEND_EQUATION_ALPHA,t.BLEND_EQUATION_RGB],blendFuncSeparate:[t.BLEND_SRC_RGB,t.BLEND_DST_RGB,t.BLEND_SRC_ALPHA,t.BLEND_DST_ALPHA],sampleCoverage:[t.SAMPLE_COVERAGE_INVERT,t.SAMPLE_COVERAGE_VALUE],polygonOffset:[t.POLYGON_OFFSET_FACTOR,t.POLYGON_OFFSET_UNITS],stencilFuncSeparate_FRONT:[t.STENCIL_FUNC,t.STENCIL_REF,t.STENCIL_VALUE_MASK],stencilFuncSeparate_BACK:[t.STENCIL_BACK_FUNC,t.STENCIL_BACK_REF,t.STENCIL_BACK_VALUE_MASK],stencilOpSeparate_FRONT:[t.STENCIL_FAIL,t.STENCIL_PASS_DEPTH_FAIL,t.STENCIL_PASS_DEPTH_PASS],stencilOpSeparate_BACK:[t.STENCIL_BACK_FAIL,t.STENCIL_BACK_PASS_DEPTH_FAIL,t.STENCIL_BACK_PASS_DEPTH_PASS]};for(var h in l){for(var p=l[h],r=[],d=[],c=0;p.length>c;++c){var v="v"+p[c],g=[v,"=gl.getParameter(",p[c],");"].join("");r.push(v),d.push(g)}l[h]={present:!1,variables:r,snippets:d,parameters:p}}t:for(var c=0;o.length>c;++c){var m=o[c];if(!(s.indexOf(m)>=0)){var y="this["+m+"]";switch(e.push(y,"=[];"),m){case t.SAMPLE_COVERAGE:i.push(y,".push(gl.isEnabled(",t.SAMPLE_COVERAGE,"));");break;default:i.push(y,".push(gl.getParameter(",m,"));")}var b=y+".pop()";switch(m){case t.ACTIVE_TEXTURE:a.push("gl.activeTexture(",b,");");break;case t.ARRAY_BUFFER_BINDING:a.push("gl.bindBuffer(",t.ARRAY_BUFFER,",",b,");");break;case t.BLEND_COLOR:a.push("var c=",b,";gl.blendColor(c[0], c[1], c[2], c[3]);");break;case t.COLOR_CLEAR_VALUE:a.push("var c=",b,";gl.clearColor(c[0], c[1], c[2], c[3]);");break;case t.COLOR_WRITEMASK:a.push("var c=",b,";gl.colorMask(c[0], c[1], c[2], c[3]);");break;case t.CULL_FACE_MODE:a.push("gl.cullFace(",b,");");break;case t.CURRENT_PROGRAM:a.push("gl.useProgram(",b,");");break;case t.DEPTH_CLEAR_VALUE:a.push("gl.clearDepth(",b,");");break;case t.DEPTH_FUNC:a.push("gl.depthFunc(",b,");");break;case t.DEPTH_RANGE:a.push("var z=",b,";gl.depthRange(z[0], z[1]);");break;case t.DEPTH_WRITEMASK:a.push("gl.depthMask(",b,");");break;case t.ELEMENT_ARRAY_BUFFER_BINDING:a.push("gl.bindBuffer(",t.ELEMENT_ARRAY_BUFFER,",",b,");");break;case t.FRAMEBUFFER_BINDING:a.push("gl.bindFramebuffer(",t.FRAMEBUFFER,",",b,");");break;case t.FRONT_FACE:a.push("gl.frontFace(",b,");");break;case t.LINE_WIDTH:a.push("gl.lineWidth(",b,");");break;case t.RENDERBUFFER_BINDING:a.push("gl.bindRenderbuffer(",t.RENDERBUFFER,",",b,");");break;case t.SCISSOR_BOX:a.push("var c=",b,";gl.scissor(c[0],c[1],c[2],c[3]);");break;case t.STENCIL_WRITEMASK:a.push("gl.stencilMaskSeparate(",t.FRONT,",",b,");");break;case t.STENCIL_BACK_WRITEMASK:a.push("gl.stencilMaskSeparate(",t.BACK,",",b,");");break;case t.STENCIL_CLEAR_VALUE:a.push("gl.clearStencil(",b,");");break;case t.VIEWPORT:a.push("var c=",b,";gl.viewport(c[0],c[1],c[2],c[3]);");break;case t.PACK_ALIGNMENT:case t.UNPACK_ALIGNMENT:case t.UNPACK_COLORSPACE_CONVERSION_WEBGL:case t.UNPACK_FLIP_Y_WEBGL:case t.UNPACK_PREMULTIPLY_ALPHA_WEBGL:a.push("gl.pixelStorei(",m,",",b,");");break;case t.BLEND:case t.CULL_FACE:case t.DEPTH_TEST:case t.DITHER:case t.POLYGON_OFFSET_FILL:case t.SAMPLE_COVERAGE:case t.SCISSOR_TEST:case t.STENCIL_TEST:a.push("if(",b,"){gl.enable(",m,")}else{gl.disable(",m,")}");break;case t.GENERATE_MIPMAP_HINT:a.push("gl.hint(",m,",",b,");");break;default:for(var h in l){var _=l[h],w=_.parameters.indexOf(m);if(!(0>w)){_.present=!0,_.snippets[w]="var "+_.variables[w]+"="+b+";";continue t}}throw Error("gl-state: Error, unknown state parameter "+m)}}}for(var h in l){var E=l[h];if(E.present){a.push.apply(a,E.snippets);var A=h.split("_");1===A.length?a.push("gl.",A[0],"(",E.variables.join(","),");"):a.push("gl.",A[0],"(gl.",A[1],",",E.variables.join(","),");")}}var x=[e.join(""),"};var proto=StateStack.prototype;",i.join(""),"};",a.join(""),"};","return new StateStack(gl);"].join(""),T=Function("gl",x);return T(t)}r.exports=e;var n=t("uniq")},{uniq:22}],24:[function(t,r,e){arguments[4][12][0].apply(e,arguments)},{"cwise-compiler":25}],25:[function(t,r,e){arguments[4][13][0].apply(e,arguments)},{"./lib/thunk.js":27}],26:[function(t,r){r.exports=t(14)},{uniq:28}],27:[function(t,r,e){arguments[4][15][0].apply(e,arguments)},{"./compile.js":26}],28:[function(t,r){r.exports=t(16)},{}],29:[function(t,r){r.exports=t(17)},{buffer:1,"iota-array":30}],30:[function(t,r){r.exports=t(18)},{}],31:[function(t,r){r.exports=t(19)},{}],32:[function(t,r){r.exports=t(20)},{"bit-twiddle":9,dup:31}],33:[function(t,r){"use strict";function e(t){for(var r=0;i.length>r;++r){var e=i[r];if(0===t.indexOf(e))return t.slice(e.length)}return t}function n(t){if(t._webglew_struct)return t._webglew_struct;for(var r={},n=t.getSupportedExtensions(),i=0;n.length>i;++i){var a=t.getExtension(n[i]);a&&(r[n[i]]=a,r[e(n[i])]=a)}return t._webglew_struct=r,r}var i=["WEBKIT_","MOZ_"];r.exports=n},{}],34:[function(t,r){"use strict";function e(t){v=[t.LINEAR,t.NEAREST_MIPMAP_LINEAR,t.LINEAR_MIPMAP_NEAREST,t.LINEAR_MIPMAP_NEAREST],g=[t.NEAREST,t.LINEAR,t.NEAREST_MIPMAP_NEAREST,t.NEAREST_MIPMAP_LINEAR,t.LINEAR_MIPMAP_NEAREST,t.LINEAR_MIPMAP_LINEAR],m=[t.REPEAT,t.CLAMP_TO_EDGE,t.MIRRORED_REPEAT]}function n(t,r,e,n,i,a){this.gl=t,this.handle=r,this.shape=[n,e],this.format=i,this.type=a,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}function i(t,r,e,n,i,a,o,s){var c=s.dtype||l.dtype(s),f=s.shape,d=u(s),v=0,g=0;if("float32"===c?v=t.FLOAT:"float64"===c?(v=t.FLOAT,d=!1,c="float32"):"uint8"===c?v=t.UNSIGNED_BYTE:(v=t.UNSIGNED_BYTE,d=!1),2===f.length)g=t.LUMINANCE;else{if(3!==f.length)throw Error("Invalid shape for texture");if(1===f[2])g=t.ALPHA;else if(2===f[2])g=t.LUMINANCE_ALPHA;else if(3===f[2])g=t.RGB;else{if(4!==f[2])throw Error("Invalid shape for pixel coords");g=t.RGBA}}if(g!==t.LUMINANCE&&g!==t.ALPHA||i!==t.LUMINANCE&&i!==t.ALPHA||(g=i),g!==i)throw Error("Incompatible texture format for setPixels");var m=s.size;"number"!=typeof m&&(m=l.size(s));var b=0>o.indexOf(n);if(b&&o.push(n),v===a&&d)0===s.offset&&s.data.length===m?b?t.texImage2D(t.TEXTURE_2D,n,i,f[1],f[0],0,i,a,s.data):t.texSubImage2D(t.TEXTURE_2D,n,r,e,f[1],f[0],i,a,s.data):b?t.texImage2D(t.TEXTURE_2D,n,i,f[1],f[0],0,i,a,s.data.subarray(s.offset,s.offset+m)):t.texSubImage2D(t.TEXTURE_2D,n,r,e,f[1],f[0],i,a,s.data.subarray(s.offset,s.offset+m));else{var _;_=a===t.FLOAT?p.mallocFloat32(m):p.mallocUint8(m);var w=l(_,f);v===t.FLOAT&&a===t.UNSIGNED_BYTE?y(w,s):h.assign(w,s),b?t.texImage2D(t.TEXTURE_2D,n,i,f[1],f[0],0,i,a,_.subarray(0,m)):t.texSubImage2D(t.TEXTURE_2D,n,r,e,f[1],f[0],i,a,_.subarray(0,m)),a===t.FLOAT?p.freeFloat32(_):p.freeUint8(_)}}function a(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 o(t,r,e,i,o){var s=a(t);return t.texImage2D(t.TEXTURE_2D,0,i,r,e,0,i,o,null),new n(t,s,r,e,i,o)}function s(t,r,e,i){var o=a(t);return t.texImage2D(t.TEXTURE_2D,0,e,e,i,r),new n(t,o,0|r.width,0|r.height,e,i)}function u(t){for(var r=t.shape,e=t.stride,n=1,i=r.length-1;i>=0;--i){if(e[i]!==n)return!1;n*=r[i]}return!0}function c(t,r){var e=r.dtype||l.dtype(r),i=r.shape,o=u(r),s=0;"float32"===e?s=t.FLOAT:"float64"===e?(s=t.FLOAT,o=!1,e="float32"):"uint8"===e?s=t.UNSIGNED_BYTE:(s=t.UNSIGNED_BYTE,o=!1);var c=0;if(2===i.length)c=t.LUMINANCE;else{if(3!==i.length)throw Error("Invalid shape for texture");if(1===i[2])c=t.ALPHA;else if(2===i[2])c=t.LUMINANCE_ALPHA;else if(3===i[2])c=t.RGB;else{if(4!==i[2])throw Error("Invalid shape for pixel coords");c=t.RGBA}}s===t.FLOAT&&d(t).texture_float&&(s=t.UNSIGNED_BYTE,o=!1);var f,v;if(o){var g=r.size;"number"!=typeof g&&(g=l.size(r)),f=r.data.subarray(r.offset,r.offset+g)}else{for(var m=1,b=Array(i.length),_=i.length-1;_>=0;--_)b[_]=m,m*=i[_];v=p.malloc(m,e);var w=l(v,r.shape,b,0);"float32"!==e&&"float64"!==e||s!==t.UNSIGNED_BYTE?h.assign(w,r):y(w,r),f=v.subarray(0,m)}var E=a(t);return t.texImage2D(t.TEXTURE_2D,0,c,i[1],i[0],0,c,s,f),o||p.free(v),new n(t,E,i[1],i[0],c,s)}function f(t){if(1>=arguments.length)throw Error("Missing arguments for texture2d constructor");if(v||e(t),"number"==typeof arguments[1])return o(t,arguments[1],arguments[2],arguments[3]||t.RGBA,arguments[4]||t.UNSIGNED_BYTE);if("object"==typeof arguments[1]){var r=arguments[1];if(r instanceof HTMLCanvasElement||r instanceof HTMLImageElement||r instanceof HTMLVideoElement||r instanceof ImageData)return s(t,r,arguments[2]||t.RGBA,arguments[3]||t.UNSIGNED_BYTE);if(r.shape&&r.data&&r.stride)return c(t,r)}throw Error("Invalid arguments for texture2d constructor")}var l=t("ndarray"),h=t("ndarray-ops"),p=t("typedarray-pool"),d=t("webglew"),v=null,g=null,m=null,y=function(t,r){h.muls(t,r,255)};Object.defineProperty(n.prototype,"minFilter",{get:function(){return this._minFilter},set:function(t){this.bind();var r=this.gl;if(this.type===r.FLOAT&&v.indexOf(t)>=0&&(d(r).OES_texture_float_linear||(t=r.NEAREST)),0>g.indexOf(t))throw Error("gl-texture2d: Unknown filter mode "+t);return r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MIN_FILTER,t),this._minFilter=t}});var b=n.prototype;Object.defineProperty(b,"magFilter",{get:function(){return this._magFilter},set:function(t){this.bind();var r=this.gl;if(this.type===r.FLOAT&&v.indexOf(t)>=0&&(d(r).OES_texture_float_linear||(t=r.NEAREST)),0>g.indexOf(t))throw Error("gl-texture2d: Unknown filter mode "+t);return r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MAG_FILTER,t),this._magFilter=t}}),Object.defineProperty(b,"wrapS",{get:function(){return this._wrapS},set:function(t){if(this.bind(),0>m.indexOf(t))throw Error("gl-texture2d: Unknown wrap mode "+t);return this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_S,t),this._wrapS=t}}),Object.defineProperty(b,"wrapT",{get:function(){return this._wrapT},set:function(t){if(this.bind(),0>m.indexOf(t))throw Error("gl-texture2d: Unknown wrap mode "+t);return this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_T,t),this._wrapT=t}}),Object.defineProperty(b,"mipSamples",{get:function(){return this._anisoSamples},set:function(t){var r=this._anisoSamples;if(this._anisoSamples=0|t,r!==this._anisoSamples){var e=d(this.gl).EXT_texture_filter_anisotropic;e&&this.gl.texParameterf(this.gl.TEXTURE_2D,e.TEXTURE_MAX_ANISOTROPY_EXT,this._anisoSamples)}return this._anisoSamples}}),b.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?t:r.getParameter(r.ACTIVE_TEXTURE)-r.TEXTURE0},b.dispose=function(){this.gl.deleteTexture(this.handle)},b.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)0>this._mipLevels.indexOf(r)&&this._mipLevels.push(r)},b.setPixels=function(t,r,e,n){var a=this.gl;if(this.bind(),r=r||0,e=e||0,n=n||0,t instanceof HTMLCanvasElement||t instanceof ImageData||t instanceof HTMLImageElement||t instanceof HTMLVideoElement){var o=0>this._mipLevels.indexOf(n);o?(a.texImage2D(a.TEXTURE_2D,0,this.format,this.format,this.type,t),this._mipLevels.push(n)):a.texSubImage2D(a.TEXTURE_2D,n,r,e,this.format,this.type,t)}else{if(!(t.shape&&t.stride&&t.data))throw Error("Unsupported data type");if(2>t.shape.length||r+t.shape[1]>this.shape[1]>>>n||e+t.shape[0]>this.shape[0]>>>n||0>r||0>e)throw Error("Texture dimensions are out of bounds");i(a,r,e,n,this.format,this.type,this._mipLevels,t)}},r.exports=f},{ndarray:29,"ndarray-ops":24,"typedarray-pool":32,webglew:33}],35:[function(t,r){"use strict";function e(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 Error("gl-vao: Too many vertex attributes");for(var i=0;e.length>i;++i){var a=e[i];if(a.buffer){var o=a.buffer,s=a.size||4,u=a.type||t.FLOAT,c=!!a.normalized,f=a.stride||0,l=a.offset||0;o.bind(),t.enableVertexAttribArray(i),t.vertexAttribPointer(i,s,u,c,f,l)}else{if("number"==typeof a)t.vertexAttrib1f(i,a);else if(1===a.length)t.vertexAttrib1f(i,a[0]);else if(2===a.length)t.vertexAttrib2f(i,a[0],a[1]);else if(3===a.length)t.vertexAttrib3f(i,a[0],a[1],a[2]);else{if(4!==a.length)throw Error("gl-vao: Invalid vertex attribute");t.vertexAttrib4f(i,a[0],a[1],a[2],a[3])}t.disableVertexAttribArray(i)}}for(;n>i;++i)t.disableVertexAttribArray(i)}else{t.bindBuffer(t.ARRAY_BUFFER,null);for(var i=0;n>i;++i)t.disableVertexAttribArray(i)}}r.exports=e},{}],36:[function(t,r){"use strict";function e(t){this.gl=t,this._elements=null,this._attributes=null}function n(t){return new e(t)}var i=t("./do-bind.js");e.prototype.bind=function(){i(this.gl,this._elements,this._attributes)},e.prototype.update=function(t,r){this._elements=r,this._attributes=t},e.prototype.dispose=function(){},e.prototype.unbind=function(){},e.prototype.draw=function(t,r,e){e=e||0;var n=this.gl;this._elements?n.drawElements(t,r,n.UNSIGNED_SHORT,e):n.drawArrays(t,e,r)},r.exports=n},{"./do-bind.js":35}],37:[function(t,r){"use strict";function e(t,r,e,n,i,a){this.location=t,this.dimension=r,this.a=e,this.b=n,this.c=i,this.d=a}function n(t,r,e){this.gl=t,this._ext=r,this.handle=e,this._attribs=[],this._useElements=!1}function i(t,r){return new n(t,r,r.createVertexArrayOES())}var a=t("./do-bind.js");e.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)}},n.prototype.bind=function(){this._ext.bindVertexArrayOES(this.handle);for(var t=0;this._attribs.length>t;++t)this._attribs[t].bind(this.gl)},n.prototype.unbind=function(){this._ext.bindVertexArrayOES(null)},n.prototype.dispose=function(){this._ext.deleteVertexArrayOES(this.handle)},n.prototype.update=function(t,r){if(this.bind(),a(this.gl,r,t),this.unbind(),this._attribs.length=0,t)for(var n=0;t.length>n;++n){var i=t[n];"number"==typeof i?this._attribs.push(new e(n,1,i)):Array.isArray(i)&&this._attribs.push(new e(n,i.length,i[0],i[1],i[2],i[3]))}this._useElements=!!r},n.prototype.draw=function(t,r,e){e=e||0;var n=this.gl;this._useElements?n.drawElements(t,r,n.UNSIGNED_SHORT,e):n.drawArrays(t,e,r)},r.exports=i},{"./do-bind.js":35}],38:[function(t,r){r.exports=t(33)},{}],39:[function(t,r){"use strict";function e(t,r,e){var o,s=n(t).OES_vertex_array_object;return o=s?i(t,s):a(t),o.update(r,e),o}var n=t("webglew"),i=t("./lib/vao-native.js"),a=t("./lib/vao-emulated.js");r.exports=e},{"./lib/vao-emulated.js":36,"./lib/vao-native.js":37,webglew:38}],40:[function(t,r){function e(t,r,e,i){return function(a){return n(a,t,r,e,i)}}r.exports=e;var n=t("gl-shader-core")},{"gl-shader-core":47}],41:[function(t,r){function e(){throw Error("You should bundle your code using `glslify` as a transform.")}r.exports=e},{}],42:[function(t,r){"use strict";function e(t){for(var r={},e=0;t.length>e;++e)for(var n=t[e].name,i=n.split("."),a=r,o=0;i.length>o;++o){var s=i[o].split("[");if(s.length>1){s[0]in a||(a[s[0]]=[]),a=a[s[0]];for(var u=1;s.length>u;++u){var c=parseInt(s[u]);s.length-1>u||i.length-1>o?(c in a||(a[c]=s.length-1>u?[]:{}),a=a[c]):a[c]=e}}else i.length-1>o?(s[0]in a||(a[s[0]]={}),a=a[s[0]]):a[s[0]]=e}return r}r.exports=e},{}],43:[function(t,r){"use strict";function e(t,r,e,n,i,a,o){this._gl=t,this._program=r,this._location=e,this._dimension=n,this._name=i,this._constFunc=a,this._relink=o}function n(t,r,n,i,a,o,s){for(var u=["gl","v"],c=[],f=0;i>f;++f)u.push("x"+f),c.push("x"+f);u.push(["if(x0.length===undefined){return gl.vertexAttrib",i,"f(v,",c.join(","),")}else{return gl.vertexAttrib",i,"fv(v,x0)}"].join(""));var l=Function.apply(void 0,u),h=new e(t,r,n,i,o,l,s);Object.defineProperty(a,o,{set:function(r){return t.disableVertexAttribArray(h._location),l(t,h._location,r),r},get:function(){return h},enumerable:!0})}function i(t,r,e,i){for(var a={},o=0,s=e.length;s>o;++o){var u=e[o],c=u.name,f=u.type,l=t.getAttribLocation(r,c);switch(f){case"bool":case"int":case"float":n(t,r,l,1,a,c,i);break;default:if(!(f.indexOf("vec")>=0))throw Error("Unknown data type for attribute "+c+": "+f);var h=f.charCodeAt(f.length-1)-48;if(2>h||h>4)throw Error("Invalid data type for attribute "+c+": "+f);n(t,r,l,h,a,c,i)}}return a}r.exports=i;var a=e.prototype;a.pointer=function(t,r,e,n){var i=this._gl;i.vertexAttribPointer(this._location,this._dimension,t||i.FLOAT,r?i.TRUE:i.FALSE,e||0,n||0),this._gl.enableVertexAttribArray(this._location)},Object.defineProperty(a,"location",{get:function(){return this._location},set:function(t){t!==this._location&&(this._location=t,this._gl.bindAttribLocation(this._program,t,this._name),this._gl.linkProgram(this._program),this._relink())}})},{}],44:[function(t,r){"use strict";function e(t){var r=Function("y","return function(){return y}");return r(t)}function n(t,r,n,o){function s(e){var n=Function("gl","prog","locations","return function(){return gl.getUniform(prog,locations["+e+"])}");return n(t,r,o)}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(!(n>=0&&1>=n&&e.length===4+n)){if(0===e.indexOf("mat")&&4===e.length){var i=e.charCodeAt(e.length-1)-48;if(2>i||i>4)throw Error("Invalid uniform dimension type for matrix "+name+": "+e);return"gl.uniformMatrix"+i+"fv(locations["+r+"],false,obj"+t+")"}throw Error("Unknown uniform data type for "+name+": "+e)}var i=e.charCodeAt(e.length-1)-48;if(2>i||i>4)throw Error("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 Error("Unrecognized data type for vector "+name+": "+e)}}}function c(t,r){if("object"!=typeof r)return[[t,r]];var e=[];for(var n in r){var i=r[n],a=t;a+=parseInt(n)+""===n?"["+n+"]":"."+n,"object"==typeof i?e.push.apply(e,c(a,i)):e.push([a,i])}return e}function f(e){for(var i=["return function updateProperty(obj){"],a=c("",e),s=0;a.length>s;++s){var f=a[s],l=f[0],h=f[1];o[h]&&i.push(u(l,h,n[h].type))}i.push("return obj}");var p=Function("gl","prog","locations",i.join("\n"));return p(t,r,o)}function l(t){switch(t){case"bool":return!1;case"int":case"sampler2D":case"samplerCube":return 0;case"float":return 0;default:var r=t.indexOf("vec");if(r>=0&&1>=r&&t.length===4+r){var e=t.charCodeAt(t.length-1)-48;if(2>e||e>4)throw Error("Invalid data type");return"b"===t.charAt(0)?i(e,!1):i(e)}if(0===t.indexOf("mat")&&4===t.length){var e=t.charCodeAt(t.length-1)-48;if(2>e||e>4)throw Error("Invalid uniform dimension type for matrix "+name+": "+t);return i([e,e])}throw Error("Unknown uniform data type for "+name+": "+t)}}function h(t,r,i){if("object"==typeof i){var a=p(i);Object.defineProperty(t,r,{get:e(a),set:f(i),enumerable:!0,configurable:!1})}else o[i]?Object.defineProperty(t,r,{get:s(i),set:f(i),enumerable:!0,configurable:!1}):t[r]=l(n[i].type)}function p(t){var r;if(Array.isArray(t)){r=Array(t.length);for(var e=0;t.length>e;++e)h(r,e,t[e])}else{r={};for(var n in t)h(r,n,t[n])}return r}var d=a(n);return{get:e(p(d)),set:f(d),enumerable:!0,configurable:!1}}var i=t("dup"),a=t("./coallesce-uniforms.js");r.exports=n},{"./coallesce-uniforms.js":42,dup:46}],45:[function(t,r){"use strict";function e(t){for(var r={},e=0;t.length>e;++e)for(var n=t[e].name,i=n.split("."),a=r,o=0;i.length>o;++o){var s=i[o].split("[");if(s.length>1){s[0]in a||(a[s[0]]=[]),a=a[s[0]];
for(var u=1;s.length>u;++u){var c=parseInt(s[u]);s.length-1>u||i.length-1>o?(c in a||(a[c]=s.length-1>u?[]:{}),a=a[c]):a[c]=t[e].type}}else i.length-1>o?(s[0]in a||(a[s[0]]={}),a=a[s[0]]):a[s[0]]=t[e].type}return r}r.exports=e},{}],46:[function(t,r){r.exports=t(19)},{}],47:[function(t,r){"use strict";function e(t,r,e,n,i,a){this.gl=t,this.handle=r,this.attributes=e,this.types=n,this.vertexShader=i,this.fragmentShader=a}function n(t,r,e,n){for(var i=0;n.length>i;++i)e[i]=t.getUniformLocation(r,n[i].name)}function i(t,r,i,u,c){var f=t.createShader(t.VERTEX_SHADER);if(t.shaderSource(f,r),t.compileShader(f),!t.getShaderParameter(f,t.COMPILE_STATUS))throw Error("Error compiling vertex shader: "+t.getShaderInfoLog(f));var l=t.createShader(t.FRAGMENT_SHADER);if(t.shaderSource(l,i),t.compileShader(l),!t.getShaderParameter(l,t.COMPILE_STATUS))throw Error("Error compiling fragment shader: "+t.getShaderInfoLog(l));var h=t.createProgram();if(t.attachShader(h,l),t.attachShader(h,f),t.linkProgram(h),!t.getProgramParameter(h,t.LINK_STATUS))throw Error("Error linking shader program: "+t.getProgramInfoLog(h));var p=Array(u.length),d=n.bind(void 0,t,h,p,u);d();var v=new e(t,h,o(t,h,c,d),{uniforms:s(u),attributes:s(c)},f,l);return Object.defineProperty(v,"uniforms",a(t,h,u,p)),v}var a=t("./lib/create-uniforms.js"),o=t("./lib/create-attributes.js"),s=t("./lib/reflect.js");e.prototype.bind=function(){this.gl.useProgram(this.handle)},e.prototype.dispose=function(){var t=this.gl;t.deleteShader(this.vertexShader),t.deleteShader(this.fragmentShader),t.deleteProgram(this.handle)},r.exports=i},{"./lib/create-attributes.js":43,"./lib/create-uniforms.js":44,"./lib/reflect.js":45}]},{},[]);var shell=require("gl-now")({clearColor:[0,0,0,0]}),camera=require("game-shell-orbit-camera")(shell),createMesh=require("gl-simplicial-complex"),polygonize=require("isosurface").surfaceNets,createAxes=require("gl-axes"),mat4=require("gl-matrix").mat4,extents=[[-5,-5,-5],[5,5,5]],mesh,axes;shell.on("gl-init",function(){var t=shell.gl;camera.lookAt(extents[1],[0,0,0],[0,1,0]),mesh=createMesh(t,polygonize([64,64,64],f,extents)),axes=createAxes(t,{extents:extents})}),shell.on("gl-render",function(){var t=shell.gl;t.enable(t.DEPTH_TEST);var r={view:camera.view(),projection:mat4.perspective(mat4.create(),Math.PI/4,shell.width/shell.height,.1,1e3)};mesh.draw(r),axes.draw(r)});
{
"name": "requirebin-sketch",
"version": "1.0.0",
"dependencies": {
"gl-now": "1.0.0",
"game-shell-orbit-camera": "0.0.0",
"gl-simplicial-complex": "1.0.0",
"isosurface": "0.1.0",
"gl-matrix": "2.1.0",
"gl-axes": "0.0.0"
}
}
<style type='text/css'>html, body { margin: 0; padding: 0; border: 0; }
body, html { height: 100%; width: 100%; }</style>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment