(function(Q,B,j,ec,p){function Ja(d,j){if(d in Q)return Q[d];return typeof Q[j]==="function"?Q[j]:function(d){if(d instanceof Array)return d;else if(typeof d==="number"){var j=[];j.length=d;return j}}}function yb(d){if(d.constructor===String){for(var x=0,Ka=0;Ka0&&typeof arguments[0]!=="number"?p=arguments[0]:(p=[],p.length=0| arguments[0]);this.get=function(d){return p[d]};this.contains=function(d){return this.indexOf(d)>-1};this.indexOf=function(d){for(var j=0,q=p.length;j=0&&d<=p.length)p.splice(d,0,arguments[1]);else throw d+" is not a valid index";else throw typeof d+" is not a number";}else throw"Please use the proper number of parameters."; };this.addAll=function(d,j){var q;if(typeof d==="number"){if(d<0||d>p.length)throw"Index out of bounds for addAll: "+d+" greater or equal than "+p.length;for(q=new Ma(j);q.hasNext();)p.splice(d++,0,q.next())}else for(q=new Ma(d);q.hasNext();)p.push(q.next())};this.set=function(){if(arguments.length===2){var d=arguments[0];if(typeof d==="number")if(d>=0&&d-1)return p.splice(d,1),!0;return!1}};this.isEmpty=function(){return!p.length};this.clone=function(){return new j(p.slice(0))};this.toArray=function(){return p.slice(0)};this.iterator=function(){return new d(p)}}return j}(),hc=function(){function d(){function j(d){d=yb(d)%E.length;return d<0?E.length+d:d}function y(){if(!(B<=J* E.length)){for(var d=[],q=0;q=E.length)t=!0;else if(E[u]===p||x>=E[u].length)x=-1,++u;else break}var u=0,x=-1,t=!1;this.hasNext=function(){return!t};this.next=function(){var j=d(E[u][x]);q();return j};this.remove=function(){j(this.next());--x};q()}function H(d,j,q){this.clear=function(){G.clear()}; this.contains=function(d){return j(d)};this.containsAll=function(d){for(d=d.iterator();d.hasNext();)if(!this.contains(d.next()))return!1;return!0};this.isEmpty=function(){return G.isEmpty()};this.iterator=function(){return new t(d,q)};this.remove=function(d){if(this.contains(d))return q(d),!0;return!1};this.removeAll=function(d){for(d=d.iterator();d.hasNext();){var j=d.next();this.contains(j)&&q(j)}return!0};this.retainAll=function(d){for(var j=this.iterator(),p=[];j.hasNext();){var u=j.next();d.contains(u)|| p.push(u)}for(d=0;d0};this.size=function(){return G.size()};this.toArray=function(){for(var d=[],j=this.iterator();j.hasNext();)d.push(j.next());return d}}function u(d){this._isIn=function(j){return j===G&&d.removed===p};this.equals=function(j){return qa(d.key,j.getKey())};this.getKey=function(){return d.key};this.getValue=function(){return d.value};this.hashCode=function(){return yb(d.key)};this.setValue=function(j){var q=d.value;d.value=j;return q}}if(arguments.length=== 1&&arguments[0].constructor===d)return arguments[0].clone();var X=arguments.length>0?arguments[0]:16,J=arguments.length>1?arguments[1]:0.75,E=[];E.length=X;var B=0,G=this;this.clear=function(){B=0;E=[];E.length=X};this.clone=function(){var j=new d;j.putAll(this);return j};this.containsKey=function(d){var q=j(d),q=E[q];if(q===p)return!1;for(var u=0;u1?u.splice(t,1):E[q]=p,d;return null}; this.size=function(){return B};this.values=function(){for(var d=[],j=this.entrySet().iterator();j.hasNext();){var q=j.next();d.push(q.getValue())}return d}}return d}(),V=function(){function d(j,q,p){this.x=j||0;this.y=q||0;this.z=p||0}function p(d){return function(j,q){var p=j.get();p[d](q);return p}}function y(d){return function(j,q){return j[d](q)}}var t="dist dot cross".split(" "),H=t.length;d.angleBetween=function(d,q){return j.acos(d.dot(q)/(d.mag()*q.mag()))};for(d.prototype={set:function(d, j,q){arguments.length===1?this.set(d.x||d[0],d.y||d[1],d.z||d[2]):(this.x=d,this.y=j,this.z=q)},get:function(){return new d(this.x,this.y,this.z)},mag:function(){return j.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)},add:function(d,j,q){arguments.length===3?(this.x+=d,this.y+=j,this.z+=q):arguments.length===1&&(this.x+=d.x,this.y+=d.y,this.z+=d.z)},sub:function(d,j,q){arguments.length===3?(this.x-=d,this.y-=j,this.z-=q):arguments.length===1&&(this.x-=d.x,this.y-=d.y,this.z-=d.z)},mult:function(d){typeof d=== "number"?(this.x*=d,this.y*=d,this.z*=d):typeof d==="object"&&(this.x*=d.x,this.y*=d.y,this.z*=d.z)},div:function(d){typeof d==="number"?(this.x/=d,this.y/=d,this.z/=d):typeof d==="object"&&(this.x/=d.x,this.y/=d.y,this.z/=d.z)},dist:function(d){var q=this.x-d.x,p=this.y-d.y,d=this.z-d.z;return j.sqrt(q*q+p*p+d*d)},dot:function(d,j,q){if(arguments.length===3)return this.x*d+this.y*j+this.z*q;else if(arguments.length===1)return this.x*d.x+this.y*d.y+this.z*d.z},cross:function(j){return new d(this.y* j.z-j.y*this.z,this.z*j.x-j.z*this.x,this.x*j.y-j.x*this.y)},normalize:function(){var d=this.mag();d>0&&this.div(d)},limit:function(d){this.mag()>d&&(this.normalize(),this.mult(d))},heading2D:function(){return-j.atan2(-this.y,this.x)},toString:function(){return"["+this.x+", "+this.y+", "+this.z+"]"},array:function(){return[this.x,this.y,this.z]}};H--;)d[t[H]]=y(t[H]);for(H in d.prototype)d.prototype.hasOwnProperty(H)&&!d.hasOwnProperty(H)&&(d[H]=p(H));return d}();Jb.prototype=d;var Na=new Jb;Na.ArrayList= gc;Na.HashMap=hc;Na.PVector=V;Na.ObjectIterator=Ma;var Kb={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b", darkgray:"#a9a9a9",darkgreen:"#006400",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff", gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgrey:"#d3d3d3",lightgreen:"#90ee90",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa", lightslategray:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370d8",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080", oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#d87093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0", skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ib=[],Lb={},y=this.Processing=function(q,x){function Ka(a){y.debug("Unimplemented - "+a)}function t(a,b,f,c){var e=xa.locations[a];e===p&&(e=h.getUniformLocation(b,f),xa.locations[a]=e);e!==-1&& (c.length===4?h.uniform4fv(e,c):c.length===3?h.uniform3fv(e,c):c.length===2?h.uniform2fv(e,c):h.uniform1f(e,c))}function H(a,b,f,c){var e=xa.locations[a];e===p&&(e=h.getUniformLocation(b,f),xa.locations[a]=e);e!==-1&&(c.length===4?h.uniform4iv(e,c):c.length===3?h.uniform3iv(e,c):c.length===2?h.uniform2iv(e,c):h.uniform1i(e,c))}function u(a,b,f,c,e){var d=xa.attributes[a];d===p&&(d=h.getAttribLocation(b,f),xa.attributes[a]=d);d!==-1&&(h.bindBuffer(h.ARRAY_BUFFER,e),h.vertexAttribPointer(d,c,h.FLOAT, !1,0,0),h.enableVertexAttribArray(d))}function X(a,b,f){var c=xa.attributes[a];c===p&&(c=h.getAttribLocation(b,f),xa.attributes[a]=c);c!==-1&&h.disableVertexAttribArray(c)}function J(a,b,f,c,e){var d=xa.locations[a];d===p&&(d=h.getUniformLocation(b,f),xa.locations[a]=d);d!==-1&&(e.length===16?h.uniformMatrix4fv(d,c,e):e.length===9?h.uniformMatrix3fv(d,c,e):h.uniformMatrix2fv(d,c,e))}function E(a,b,f,m){ya===d.HSB?(f=c.color.toRGB(a,b,f),a=f[0],b=f[1],f=f[2]):(a=j.round(255*(a/ca)),b=j.round(255*(b/ ra)),f=j.round(255*(f/ia)));m=j.round(255*(m/ja));return(m>255?255:m)<<24&d.ALPHA_MASK|(a>255?255:a)<<16&d.RED_MASK|(b>255?255:b)<<8&d.GREEN_MASK|(f>255?255:f)&d.BLUE_MASK}function Ab(){h.restore();Oa=Mb=!0}function Kc(a,b){var f=1;f<<=b-1;for(var c="",e=0;e>>=1;return c}function zb(a,b,f,c,e,d){b=a<0?f:b;f=e===0;e=e===p||e<0?0:e;a=j.abs(a);if(f){e=1;for(a*=10;j.abs(j.round(a)-a)>1.0E-6&&e<7;)++e,a*=10}else e!==0&&(a*=j.pow(10,e));f=a*2;j.floor(a)===a?f=a:j.floor(f)===f?(a= j.floor(a),f=a+a%2):f=j.round(a);a="";for(c+=e;c>0||f>0;)c--,a=""+f%10+a,f=j.floor(f/10);if(d!==p)for(c=a.length-3-e;c>0;)a=a.substring(0,c)+d+a.substring(c),c-=3;return e>0?b+a.substring(0,a.length-e)+"."+a.substring(a.length-e,a.length):b+a}function wa(a,b,f,c,e,d){if(a instanceof Array){for(var i=[],k=0,l=a.length;k2147483647&&(a-=4294967296);return a}function ha(a){return Array.prototype.slice.call(a, 1)}function Aa(a){if(typeof a==="number")return a!==0;else if(typeof a==="boolean")return a;else if(typeof a==="string")return a.toLowerCase()==="true";else if(a instanceof ka)return a.code===49||a.code===84||a.code===116}function va(a){if(typeof a==="number")return a;else if(typeof a==="boolean")return a?1:0;else if(typeof a==="string")return parseFloat(a);else if(a instanceof ka)return a.code}function Jc(a,b){if(typeof a==="number")return a&4294967295;else if(typeof a==="boolean")return a?1:0;else if(typeof a=== "string")return parseInt(a,b||10)&4294967295;else if(a instanceof ka)return a.code}function Pa(a,b){var f=a||362436069,c=b||521288629,e=function(){f=36969*(f&65535)+(f>>>16)&4294967295;c=18E3*(c&65535)+(c>>>16)&4294967295;return((f&65535)<<16|c&65535)&4294967295};this.nextDouble=function(){var a=e()/4294967296;return a<0?1+a:a};this.nextInt=e}function vd(a){function b(a,b,f,c){a&=15;var m=a<8?b:f,b=a<4?f:a===12||a===14?b:c;return((a&1)===0?m:-m)+((a&2)===0?b:-b)}function f(a,b,f){b=(a&1)===0?b:f; return(a&2)===0?-b:b}function c(a,b,f){return b+a*(f-b)}var a=a!==p?new Pa(a):Pa.createRandomized(),e,d,i=new Ic(512);for(e=0;e<256;++e)i[e]=e;for(e=0;e<256;++e){var k=i[d=a.nextInt()&255];i[d]=i[e];i[e]=k}for(e=0;e<256;++e)i[e+256]=i[e];this.noise3d=function(a,f,e){var d=j.floor(a)&255,g=j.floor(f)&255,k=j.floor(e)&255;a-=j.floor(a);f-=j.floor(f);e-=j.floor(e);var h=(3-2*a)*a*a,o=(3-2*f)*f*f,r=i[d]+g,q=i[r]+k,r=i[r+1]+k,g=i[d+1]+g,d=i[g]+k,k=i[g+1]+k;return c((3-2*e)*e*e,c(o,c(h,b(i[q],a,f,e),b(i[d], a-1,f,e)),c(h,b(i[r],a,f-1,e),b(i[k],a-1,f-1,e))),c(o,c(h,b(i[q+1],a,f,e-1),b(i[d+1],a-1,f,e-1)),c(h,b(i[r+1],a,f-1,e-1),b(i[k+1],a-1,f-1,e-1))))};this.noise2d=function(a,b){var e=j.floor(a)&255,d=j.floor(b)&255;a-=j.floor(a);b-=j.floor(b);var g=(3-2*a)*a*a,k=i[e]+d,e=i[e+1]+d;return c((3-2*b)*b*b,c(g,f(i[k],a,b),f(i[e],a-1,b)),c(g,f(i[k+1],a,b-1),f(i[e+1],a-1,b-1)))};this.noise1d=function(a){var b=j.floor(a)&255;a-=j.floor(a);return c((3-2*a)*a*a,(i[b]&1)===0?-a:a,(i[b+1]&1)===0?-(a-1):a-1)}}function S(){if(P){if(Oa)h.fillStyle= c.color.toString(Qa),Oa=!1;h.fill()}}function da(){if(L){if(Mb)h.strokeStyle=c.color.toString(Y),Mb=!1;h.stroke()}}function Wa(a,b,f){f=0|f*((b&d.ALPHA_MASK)>>>24);return j.min(((a&d.ALPHA_MASK)>>>24)+f,255)<<24|c.mix(a&d.RED_MASK,b&d.RED_MASK,f)&d.RED_MASK|c.mix(a&d.GREEN_MASK,b&d.GREEN_MASK,f)&d.GREEN_MASK|c.mix(a&d.BLUE_MASK,b&d.BLUE_MASK,f)}function Z(a,b,f){var c=Lc.shift();if(c===p)c={},c.canvas=B.createElement("canvas"),c.context=c.canvas.getContext("2d");Lc.push(c);var e=c.canvas,d=c.context, b=b||a.width,f=f||a.height;e.width=b;e.height=f;a?"data"in a?d.putImageData(a,0,0):(d.clearRect(0,0,b,f),d.drawImage(a,0,0,b,f)):d.clearRect(0,0,b,f);return c}function Ba(){Bb&&(h=Mc,Bb=!1,c.updatePixels())}function wd(){function a(a,b){a[b]=function(){Ba();h[b].apply(h,arguments)}}function b(a,b){c.defineProperty(a,b,{get:function(){Ba();return h[b]},set:function(a){Ba();h[b]=a}})}for(var f in h)typeof h[f]==="function"?a(this,f):b(this,f)}function Ra(a){this.name="sans-serif";if(a!==p)switch(a){case "sans-serif":case "serif":case "monospace":case "fantasy":case "cursive":this.name= a;break;default:this.name='"'+a+'", sans-serif'}this.origName=a}function Ca(a){return a instanceof String?a:typeof a==="number"?a===(0|a)?a.toString():c.nf(a,0,3):a===null||a===p?"":a.toString()}function Nc(a,b,f,c){this.canvas=B.createElement("canvas");this.canvas.setAttribute("width",b+"px");this.canvas.setAttribute("height",b+"px");this.ctx=this.canvas.getContext("2d");this.ctx.font=b+"pt "+a;this.ctx.fillStyle="black";this.ctx.fillRect(0,0,b,b);this.ctx.fillStyle="white";this.ctx.fillText(c,0, f);this.imageData=this.ctx.getImageData(0,0,b,b);this.get=function(a,b){return this.imageData.data[b*this.imageData.width*4+a*4]}}function Oc(a,b,f,c){var e;a.indexOf("\n")<0?(a=[a],e=1):(a=a.split(/\r?\n/g),e=a.length);var g;g=jb===d.TOP?(1-Nb)*Xa:jb===d.CENTER?(1-Nb-e/2)*Xa:jb===d.BOTTOM?(1-Nb-e)*Xa:0;for(var i=0;ie)){var i=-1,k=0,l=0,j=0;h.font=N+"px "+W.name;for(var o=[],q=0,n=a.length;q0)i=q;else return;p==="\n"?(o.push({text:a.substring(k,q),width:l,offset:j}),k=q+1):(o.push({text:a.substring(k,i),width:l,offset:j}),k=i+1);j+=Xa;l=0;q=k-1}}ke)break; $.text$line(j.text,b+a,f+j.offset+c+i,g,kb)}}}function lb(a){$=a==="3D"?new F:a==="2D"?new w:new A;for(var b in A.prototype)A.prototype.hasOwnProperty(b)&&b.indexOf("$")<0&&(c[b]=$[b]);$.$init()}function D(a){return function(){lb("2D");return $[a].apply(this,arguments)}}function ic(a,b){function f(f){c.defineProperty(a,f,{get:function(){return b[f]},set:function(a){b[f]=a},enumerable:!0})}var m=[],e;for(e in b)typeof b[e]==="function"?a.hasOwnProperty(e)||(a[e]=b[e]):e.charAt(0)!=="$"&&!(e in a)&& m.push(e);for(;m.length>0;)f(m.shift())}function U(a,b,f){a.addEventListener?a.addEventListener(b,f,!1):a.attachEvent("on"+b,f);Sa.push([a,b,f])}function Ja(a,b,f){a.removeEventListener?a.removeEventListener(b,f,!1):a.detachEvent&&a.detachEvent("on"+b,f)}function La(a){var b=a,f=0,m=0;c.pmouseX=c.mouseX;c.pmouseY=c.mouseY;if(b.offsetParent){do f+=b.offsetLeft,m+=b.offsetTop;while(b=b.offsetParent)}b=a;do f-=b.scrollLeft||0,m-=b.scrollTop||0;while(b=b.parentNode);f+=Qc;m+=Rc;f+=Sc;m+=Tc;f+=Q.pageXOffset; m+=Q.pageYOffset;return{X:f,Y:m}}function Ob(a,b){var f=La(a,b);c.mouseX=b.pageX-f.X;c.mouseY=b.pageY-f.Y}function Pb(a){var b=La(a.changedTouches[0].target,a.changedTouches[0]),f;for(f=0;f cos( light.angle ) ) { spotAttenuation = pow( spotDot, light.concentration ); } else{ spotAttenuation = 0.0; } attenuation *= spotAttenuation;")+" float nDotVP = max( 0.0, dot( vertNormal, VP )); vec3 halfVector = normalize( VP - normalize(ecPos) ); float nDotHV = max( 0.0, dot( vertNormal, halfVector )); if( nDotVP == 0.0 ) { powerfactor = 0.0; } else { powerfactor = pow( nDotHV, shininess ); } spec += specular * powerfactor * attenuation; col += light.color * nDotVP * attenuation;}void main(void) { vec3 finalAmbient = vec3( 0.0, 0.0, 0.0 ); vec3 finalDiffuse = vec3( 0.0, 0.0, 0.0 ); vec3 finalSpecular = vec3( 0.0, 0.0, 0.0 ); vec4 col = color; if(color[0] == -1.0){ col = aColor; } vec3 norm = normalize(vec3( normalTransform * vec4( Normal, 0.0 ) )); vec4 ecPos4 = view * model * vec4(Vertex,1.0); vec3 ecPos = (vec3(ecPos4))/ecPos4.w; if( lightCount == 0 ) { frontColor = col + vec4(mat_specular,1.0); } else { for( int i = 0; i < 8; i++ ) { Light l = getLight(i); if( i >= lightCount ){ break; } if( l.type == 0 ) { AmbientLight( finalAmbient, ecPos, l ); } else if( l.type == 1 ) { DirectionalLight( finalDiffuse, finalSpecular, norm, ecPos, l ); } else if( l.type == 2 ) { PointLight( finalDiffuse, finalSpecular, norm, ecPos, l ); } else { SpotLight( finalDiffuse, finalSpecular, norm, ecPos, l ); } } if( usingMat == false ) { frontColor = vec4( vec3(col) * finalAmbient + vec3(col) * finalDiffuse + vec3(col) * finalSpecular, col[3] ); } else{ frontColor = vec4( mat_emissive + (vec3(col) * mat_ambient * finalAmbient) + (vec3(col) * finalDiffuse) + (mat_specular * finalSpecular), col[3] ); } } vTexture.xy = aTexture.xy; gl_Position = projection * view * model * vec4( Vertex, 1.0 );}", kd=function(a,b,f,c){return{x:a,y:b,w:f,h:c}},ac=kd,Cd=function(a,b,f,c,e){return{x:a,y:b,w:e?f:f-a,h:e?c:c-b}},Dd=function(a,b,f,c){return{x:a-f/2,y:b-c/2,w:f,h:c}},Gc=function(a,b,f){var c=a.createShader(a.VERTEX_SHADER);a.shaderSource(c,b);a.compileShader(c);if(!a.getShaderParameter(c,a.COMPILE_STATUS))throw a.getShaderInfoLog(c);b=a.createShader(a.FRAGMENT_SHADER);a.shaderSource(b,f);a.compileShader(b);if(!a.getShaderParameter(b,a.COMPILE_STATUS))throw a.getShaderInfoLog(b);f=a.createProgram(); a.attachShader(f,c);a.attachShader(f,b);a.linkProgram(f);if(!a.getProgramParameter(f,a.LINK_STATUS))throw"Error linking shaders.";return f},C=function(){},w=function(){},F=function(){},A=function(){};w.prototype=new C;w.prototype.constructor=w;F.prototype=new C;F.prototype.constructor=F;A.prototype=new C;A.prototype.constructor=A;C.prototype.a3DOnlyFunction=function(){};var Hc={},ka=c.Character=function(a){this.code=typeof a==="string"&&a.length===1?a.charCodeAt(0):typeof a==="number"?a:a instanceof ka?a:NaN;return Hc[this.code]===p?Hc[this.code]=this:Hc[this.code]};ka.prototype.toString=function(){return String.fromCharCode(this.code)};ka.prototype.valueOf=function(){return this.code};var Hb=c.PShape=function(a){this.family=a||d.GROUP;this.style=this.visible=!0;this.children=[];this.nameTable=[];this.params=[];this.name="";this.parent=this.height=this.width=this.close=this.kind=this.matrix=this.image=null};Hb.prototype={isVisible:function(){return this.visible},setVisible:function(a){this.visible= a},disableStyle:function(){this.style=!1;for(var a=0,b=this.children.length;a0){b=0;for(f=this.nameTable.length;b, it's <"+this.element.getName()+">";}else if(arguments.length===2)if(typeof arguments[1]==="string"){if(arguments[1].indexOf(".svg")>-1)this.element=new c.XMLElement(null,arguments[1]),this.vertexCodes=[],this.vertices=[],this.opacity=1,this.stroke=!1,this.strokeColor=d.ALPHA_MASK,this.strokeWeight=1,this.strokeCap=d.SQUARE,this.strokeJoin=d.MITER,this.strokeName= this.strokeGradientPaint=this.strokeGradient="",this.strokeOpacity=1,this.fill=!0,this.fillColor=d.ALPHA_MASK,this.fillGradientPaint=this.fillGradient=null,this.fillOpacity=1}else if(arguments[0])this.element=arguments[1],this.vertexCodes=arguments[0].vertexCodes.slice(),this.vertices=arguments[0].vertices.slice(),this.stroke=arguments[0].stroke,this.strokeColor=arguments[0].strokeColor,this.strokeWeight=arguments[0].strokeWeight,this.strokeCap=arguments[0].strokeCap,this.strokeJoin=arguments[0].strokeJoin, this.strokeGradient=arguments[0].strokeGradient,this.strokeGradientPaint=arguments[0].strokeGradientPaint,this.strokeName=arguments[0].strokeName,this.fill=arguments[0].fill,this.fillColor=arguments[0].fillColor,this.fillGradient=arguments[0].fillGradient,this.fillGradientPaint=arguments[0].fillGradientPaint,this.fillName=arguments[0].fillName,this.strokeOpacity=arguments[0].strokeOpacity,this.fillOpacity=arguments[0].fillOpacity,this.opacity=arguments[0].opacity;this.name=this.element.getStringAttribute("id"); this.visible=this.element.getStringAttribute("display","inline")!=="none";var a=this.element.getAttribute("transform");if(a)this.matrix=this.parseMatrix(a);a=this.element.getStringAttribute("viewBox");if(a!==null)a=a.split(" "),this.width=a[2],this.height=a[3];var a=this.element.getStringAttribute("width"),b=this.element.getStringAttribute("height");if(a!==null)this.width=this.parseUnitSize(a),this.height=this.parseUnitSize(b);else if(this.width===0||this.height===0)throw this.height=this.width=1, "The width and/or height is not readable in the tag of this file.";this.parseColors(this.element);this.parseChildren(this.element)};M.prototype=new Hb;M.prototype.parseMatrix=function(){function a(a){a.replace(/\((.*?)\)/,function(){return function(a,b){b.replace(/,+/g," ").split(/\s+/)}}())}return function(b){this.checkMatrix(2);var f=[];b.replace(/\s*(\w+)\((.*?)\)/g,function(a){f.push(c.trim(a))});if(f.length===0)return null;for(var b=0,m=f.length;b=65&&j<=90||j>=97&&j<=122){r=h;h++;if(h=65&&j<=90||j>=97&&j<=100||j>=102&&j<=122)&&q===!1;)j===32? o!==""&&(n.push(parseFloat(o)),o=""):j===45?a[h-1].valueOf()===101?o+=a[h].toString():(o!==""&&n.push(parseFloat(o)),o=a[h].toString()):o+=a[h].toString(),h++,h===a.length?q=!0:j=a[h].valueOf()}o!==""&&(n.push(parseFloat(o)),o="");s=a[r];j=s.valueOf();if(j===77){if(n.length>=2&&n.length%2===0&&(b=n[0],f=n[1],this.parsePathMoveto(b,f),n.length>2)){r=2;for(j=n.length;r=2&&n.length%2===0&&(this.parsePathMoveto(b,f),n.length> 2)){r=2;for(j=n.length;r=2&&n.length%2===0){r=0;for(j=n.length;r=2&&n.length%2===0){r=0;for(j=n.length;r=6&&n.length%6===0){r=0;for(j=n.length;r=6&&n.length%6===0){r=0;for(j=n.length;r= 4&&n.length%4===0){r=0;for(j=n.length;r=4&&n.length%4===0){r= 0;for(j=n.length;r=4&&n.length%4===0){r=0;for(j=n.length;r< j;r+=4)m=n[r],e=n[r+1],k=n[r+2],l=n[r+3],this.parsePathQuadto(b,f,m,e,k,l),b=k,f=l}}else if(j===113){if(n.length>=4&&n.length%4===0){r=0;for(j=n.length;r=2&&n.length%2===0){r=0;for(j=n.length;r=2&&n.length%2===0){r=0;for(j=n.length;r0)this.parsePathCode(d.BEZIER_VERTEX),this.parsePathVertex(a+(f-a)*2/3,b+(c-b)*2/3),this.parsePathVertex(e+(f-e)*2/3,g+(c-g)*2/3),this.parsePathVertex(e,g);else throw"Path must start with M/m";};M.prototype.parsePathCurveto=function(a,b,f,c,e,g){if(this.vertices.length>0)this.parsePathCode(d.BEZIER_VERTEX),this.parsePathVertex(a,b),this.parsePathVertex(f,c),this.parsePathVertex(e, g);else throw"Path must start with M/m";};M.prototype.parsePathLineto=function(a,b){if(this.vertices.length>0)this.parsePathCode(d.VERTEX),this.parsePathVertex(a,b),this.vertices[this.vertices.length-1].moveTo=!1;else throw"Path must start with M/m";};M.prototype.parsePathMoveto=function(a,b){this.vertices.length>0&&this.parsePathCode(d.BREAK);this.parsePathCode(d.VERTEX);this.parsePathVertex(a,b);this.vertices[this.vertices.length-1].moveTo=!0};M.prototype.parsePathVertex=function(a,b){var f=[]; f[0]=a;f[1]=b;this.vertices.push(f)};M.prototype.parsePathCode=function(a){this.vertexCodes.push(a)};M.prototype.parsePoly=function(a){this.family=d.PATH;this.close=a;a=c.trim(this.element.getStringAttribute("points").replace(/[,\s]+/g," "));if(a!==null)if(a=a.split(" "),a.length%2===0)for(var b=0,f=a.length;b=1&&arguments[0]!==null&&a.isVisible()&&(c.pushMatrix(),Gb===d.CENTER?arguments.length===5?(c.translate(b-m/2,f-e/2),c.scale(m/a.getWidth(),e/a.getHeight())):arguments.length===3?c.translate(b-a.getWidth()/2,-a.getHeight()/2):c.translate(-a.getWidth()/2,-a.getHeight()/2):Gb===d.CORNER?arguments.length===5?(c.translate(b,f),c.scale(m/a.getWidth(), e/a.getHeight())):arguments.length===3&&c.translate(b,f):Gb===d.CORNERS&&(arguments.length===5?(m-=b,e-=f,c.translate(b,f),c.scale(m/a.getWidth(),e/a.getHeight())):arguments.length===3&&c.translate(b,f)),a.draw(),(arguments.length===1&&Gb===d.CENTER||arguments.length>1)&&c.popMatrix())};c.shapeMode=function(a){Gb=a};c.loadShape=function(a){if(arguments.length===1&&a.indexOf(".svg")>-1)return new M(null,a);return null};var bc=function(a,b,f,c,e){this.fullName=a||"";this.name=b||"";this.namespace=f|| "";this.value=c;this.type=e};bc.prototype={getName:function(){return this.name},getFullName:function(){return this.fullName},getNamespace:function(){return this.namespace},getValue:function(){return this.value},getType:function(){return this.type},setValue:function(a){this.value=a}};var $a=c.XMLElement=function(){this.attributes=[];this.children=[];this.name=this.fullName=null;this.namespace="";this.parent=this.content=null;this.systemID=this.lineNr="";this.type="ELEMENT";if(arguments.length===4){this.fullName= arguments[0]||"";if(arguments[1])this.name=arguments[1];else{var a=this.fullName.indexOf(":");this.name=a>=0?this.fullName.substring(a+1):this.fullName}this.namespace=arguments[1];this.lineNr=arguments[3];this.systemID=arguments[2]}else arguments.length===2&&arguments[1].indexOf(".")>-1?this.parse(arguments[arguments.length-1]):arguments.length===1&&typeof arguments[0]==="string"&&this.parse(arguments[0])};$a.prototype={parse:function(a){var b;try{if(a.indexOf(".xml")>-1||a.indexOf(".svg")>-1)a=fc(a); b=(new DOMParser).parseFromString(a,"text/xml");var f=b.documentElement;if(f)this.parseChildrenRecursive(null,f);else throw"Error loading document";return this}catch(c){throw c;}},parseChildrenRecursive:function(a,b){var f,c,e,d;a?(f=new $a(b.localName,b.nodeName,"",""),f.parent=a):(this.fullName=b.localName,this.name=b.nodeName,f=this);if(b.nodeType===3&&b.textContent!=="")return this.createPCDataElement(b.textContent);e=0;for(d=b.attributes.length;e0){b=0;for(f=this.children.length;b0},addChild:function(a){if(a!==null)a.parent=this,this.children.push(a)},insertChild:function(a,b){if(a){if(a.getLocalName()===null&&!this.hasChildren()){var f=this.children[this.children.length-1];if(f.getLocalName()===null){f.setContent(f.getContent()+a.getContent());return}}a.parent= this;this.children.splice(b,0,a)}},getChild:function(a){if(typeof a==="number")return this.children[a];else if(a.indexOf("/")!==-1)this.getChildRecursive(a.split("/"),0);else{for(var b,f,c=0,e=this.getChildCount();ca&&this.children.splice(a,1)},findAttribute:function(a,b){this.namespace=b||"";for(var f=0,c=this.attributes.length;f0&&y.debug("Tried to set content for XMLElement with children"); this.content=a},setName:function(){if(arguments.length===1)this.name=arguments[0],this.fullName=arguments[0],this.namespace=null;else{var a=arguments[0].indexOf(":");this.name=arguments[1]===null||a<0?arguments[0]:arguments[0].substring(a+1);this.fullName=arguments[0];this.namespace=arguments[1]}},getName:function(){return this.fullName},getLocalName:function(){return this.name},getAttributeCount:function(){return this.attributes.length},toString:function(){if(this.type==="TEXT")return this.content; var a=(this.namespace!==""&&this.namespace!==this.name?this.namespace+":":"")+this.name,b="<"+a,f;for(f=0;f":">"+this.content+"";else{b+=">";for(f=0;f"}return b}};$a.parse=function(a){var b=new $a;b.parse(a);return b};var ld=function(a){for(var b=0,f=0;fd.MIN_INT){var b=this.elements[0],f=this.elements[1],c=this.elements[2],e=this.elements[3],g=this.elements[4],i=this.elements[5];this.elements[0]=g/a;this.elements[3]=-e/a;this.elements[1]=-f/a;this.elements[4]= b/a;this.elements[2]=(f*i-g*c)/a;this.elements[5]=(e*c-b*i)/a;return!0}return!1},scale:function(a,b){a&&!b&&(b=a);a&&b&&(this.elements[0]*=a,this.elements[1]*=b,this.elements[3]*=a,this.elements[4]*=b)},invScale:function(a,b){a&&!b&&(b=a);this.scale(1/a,1/b)},apply:function(){var a;arguments.length===1&&arguments[0]instanceof Ta?a=arguments[0].array():arguments.length===6?a=Array.prototype.slice.call(arguments):arguments.length===1&&arguments[0]instanceof Array&&(a=arguments[0]);for(var b=[0,0,this.elements[2], 0,0,this.elements[5]],f=0,c=0;c<2;c++)for(var e=0;e<3;e++,f++)b[f]+=this.elements[c*3+0]*a[e+0]+this.elements[c*3+1]*a[e+3];this.elements=b.slice()},preApply:function(){var a;arguments.length===1&&arguments[0]instanceof Ta?a=arguments[0].array():arguments.length===6?a=Array.prototype.slice.call(arguments):arguments.length===1&&arguments[0]instanceof Array&&(a=arguments[0]);var b=[0,0,a[2],0,0,a[5]];b[2]=a[2]+this.elements[2]*a[0]+this.elements[5]*a[1];b[5]=a[5]+this.elements[2]*a[3]+this.elements[5]* a[4];b[0]=this.elements[0]*a[0]+this.elements[3]*a[1];b[3]=this.elements[0]*a[3]+this.elements[3]*a[4];b[1]=this.elements[1]*a[0]+this.elements[4]*a[1];b[4]=this.elements[1]*a[3]+this.elements[4]*a[4];this.elements=b.slice()},rotate:function(a){var b=j.cos(a),a=j.sin(a),f=this.elements[0],c=this.elements[1];this.elements[0]=b*f+a*c;this.elements[1]=-a*f+b*c;f=this.elements[3];c=this.elements[4];this.elements[3]=b*f+a*c;this.elements[4]=-a*f+b*c},rotateZ:function(a){this.rotate(a)},invRotateZ:function(a){this.rotateZ(a- j.PI)},print:function(){var a=ld(this.elements),a=""+c.nfs(this.elements[0],a,4)+" "+c.nfs(this.elements[1],a,4)+" "+c.nfs(this.elements[2],a,4)+"\n"+c.nfs(this.elements[3],a,4)+" "+c.nfs(this.elements[4],a,4)+" "+c.nfs(this.elements[5],a,4)+"\n\n";c.println(a)}};var z=c.PMatrix3D=function(){this.reset()};z.prototype={set:function(){if(arguments.length===16)this.elements=Array.prototype.slice.call(arguments);else if(arguments.length===1&&arguments[0]instanceof z)this.elements=arguments[0].array(); else if(arguments.length===1&&arguments[0]instanceof Array)this.elements=arguments[0].slice()},get:function(){var a=new z;a.set(this.elements);return a},reset:function(){this.set([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1])},array:function(){return this.elements.slice()},translate:function(a,b,f){f===p&&(f=0);this.elements[3]+=a*this.elements[0]+b*this.elements[1]+f*this.elements[2];this.elements[7]+=a*this.elements[4]+b*this.elements[5]+f*this.elements[6];this.elements[11]+=a*this.elements[8]+b*this.elements[9]+ f*this.elements[10];this.elements[15]+=a*this.elements[12]+b*this.elements[13]+f*this.elements[14]},transpose:function(){var a=this.elements.slice();this.elements[0]=a[0];this.elements[1]=a[4];this.elements[2]=a[8];this.elements[3]=a[12];this.elements[4]=a[1];this.elements[5]=a[5];this.elements[6]=a[9];this.elements[7]=a[13];this.elements[8]=a[2];this.elements[9]=a[6];this.elements[10]=a[10];this.elements[11]=a[14];this.elements[12]=a[3];this.elements[13]=a[7];this.elements[14]=a[11];this.elements[15]= a[15]},mult:function(a,b){var f,c,e,d;if(a instanceof V)f=a.x,c=a.y,e=a.z,d=1,b||(b=new V);else if(a instanceof Array&&(f=a[0],c=a[1],e=a[2],d=a[3]||1,!b||b.length!==3&&b.length!==4))b=[0,0,0];b instanceof Array&&(b.length===3?(b[0]=this.elements[0]*f+this.elements[1]*c+this.elements[2]*e+this.elements[3],b[1]=this.elements[4]*f+this.elements[5]*c+this.elements[6]*e+this.elements[7],b[2]=this.elements[8]*f+this.elements[9]*c+this.elements[10]*e+this.elements[11]):b.length===4&&(b[0]=this.elements[0]* f+this.elements[1]*c+this.elements[2]*e+this.elements[3]*d,b[1]=this.elements[4]*f+this.elements[5]*c+this.elements[6]*e+this.elements[7]*d,b[2]=this.elements[8]*f+this.elements[9]*c+this.elements[10]*e+this.elements[11]*d,b[3]=this.elements[12]*f+this.elements[13]*c+this.elements[14]*e+this.elements[15]*d));if(b instanceof V)b.x=this.elements[0]*f+this.elements[1]*c+this.elements[2]*e+this.elements[3],b.y=this.elements[4]*f+this.elements[5]*c+this.elements[6]*e+this.elements[7],b.z=this.elements[8]* f+this.elements[9]*c+this.elements[10]*e+this.elements[11];return b},preApply:function(){var a;arguments.length===1&&arguments[0]instanceof z?a=arguments[0].array():arguments.length===16?a=Array.prototype.slice.call(arguments):arguments.length===1&&arguments[0]instanceof Array&&(a=arguments[0]);for(var b=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],f=0,c=0;c<4;c++)for(var e=0;e<4;e++,f++)b[f]+=this.elements[e+0]*a[c*4+0]+this.elements[e+4]*a[c*4+1]+this.elements[e+8]*a[c*4+2]+this.elements[e+12]*a[c*4+3];this.elements= b.slice()},apply:function(){var a;arguments.length===1&&arguments[0]instanceof z?a=arguments[0].array():arguments.length===16?a=Array.prototype.slice.call(arguments):arguments.length===1&&arguments[0]instanceof Array&&(a=arguments[0]);for(var b=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],f=0,c=0;c<4;c++)for(var e=0;e<4;e++,f++)b[f]+=this.elements[c*4+0]*a[e+0]+this.elements[c*4+1]*a[e+4]+this.elements[c*4+2]*a[e+8]+this.elements[c*4+3]*a[e+12];this.elements=b.slice()},rotate:function(a,b,f,d){if(f){var e=c.cos(a), a=c.sin(a),g=1-e;this.apply(g*b*b+e,g*b*f-a*d,g*b*d+a*f,0,g*b*f+a*d,g*f*f+e,g*f*d-a*b,0,g*b*d-a*f,g*f*d+a*b,g*d*d+e,0,0,0,0,1)}else this.rotateZ(a)},invApply:function(){Fb===p&&(Fb=new z);var a=arguments;Fb.set(a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9],a[10],a[11],a[12],a[13],a[14],a[15]);if(!Fb.invert())return!1;this.preApply(Fb);return!0},rotateX:function(a){var b=c.cos(a),a=c.sin(a);this.apply([1,0,0,0,0,b,-a,0,0,a,b,0,0,0,0,1])},rotateY:function(a){var b=c.cos(a),a=c.sin(a);this.apply([b, 0,a,0,0,1,0,0,-a,0,b,0,0,0,0,1])},rotateZ:function(a){var b=j.cos(a),a=j.sin(a);this.apply([b,-a,0,0,a,b,0,0,0,0,1,0,0,0,0,1])},scale:function(a,b,f){a&&!b&&!f?b=f=a:a&&b&&!f&&(f=1);a&&b&&f&&(this.elements[0]*=a,this.elements[1]*=b,this.elements[2]*=f,this.elements[4]*=a,this.elements[5]*=b,this.elements[6]*=f,this.elements[8]*=a,this.elements[9]*=b,this.elements[10]*=f,this.elements[12]*=a,this.elements[13]*=b,this.elements[14]*=f)},skewX:function(a){this.apply(1,j.tan(a),0,0,0,1,0,0,0,0,1,0,0,0, 0,1)},skewY:function(a){this.apply(1,0,0,0,j.tan(a),1,0,0,0,0,1,0,0,0,0,1)},multX:function(a,b,f,c){return f?c?this.elements[0]*a+this.elements[1]*b+this.elements[2]*f+this.elements[3]*c:this.elements[0]*a+this.elements[1]*b+this.elements[2]*f+this.elements[3]:this.elements[0]*a+this.elements[1]*b+this.elements[3]},multY:function(a,b,f,c){return f?c?this.elements[4]*a+this.elements[5]*b+this.elements[6]*f+this.elements[7]*c:this.elements[4]*a+this.elements[5]*b+this.elements[6]*f+this.elements[7]: this.elements[4]*a+this.elements[5]*b+this.elements[7]},multZ:function(a,b,f,c){return c?this.elements[8]*a+this.elements[9]*b+this.elements[10]*f+this.elements[11]*c:this.elements[8]*a+this.elements[9]*b+this.elements[10]*f+this.elements[11]},multW:function(a,b,f,c){return c?this.elements[12]*a+this.elements[13]*b+this.elements[14]*f+this.elements[15]*c:this.elements[12]*a+this.elements[13]*b+this.elements[14]*f+this.elements[15]},invert:function(){var a=this.elements[0]*this.elements[5]-this.elements[1]* this.elements[4],b=this.elements[0]*this.elements[6]-this.elements[2]*this.elements[4],f=this.elements[0]*this.elements[7]-this.elements[3]*this.elements[4],c=this.elements[1]*this.elements[6]-this.elements[2]*this.elements[5],e=this.elements[1]*this.elements[7]-this.elements[3]*this.elements[5],d=this.elements[2]*this.elements[7]-this.elements[3]*this.elements[6],i=this.elements[8]*this.elements[13]-this.elements[9]*this.elements[12],k=this.elements[8]*this.elements[14]-this.elements[10]*this.elements[12], l=this.elements[8]*this.elements[15]-this.elements[11]*this.elements[12],h=this.elements[9]*this.elements[14]-this.elements[10]*this.elements[13],o=this.elements[9]*this.elements[15]-this.elements[11]*this.elements[13],q=this.elements[10]*this.elements[15]-this.elements[11]*this.elements[14],n=a*q-b*o+f*h+c*l-e*k+d*i;if(j.abs(n)<=1.0E-9)return!1;var p=[];p[0]=+this.elements[5]*q-this.elements[6]*o+this.elements[7]*h;p[4]=-this.elements[4]*q+this.elements[6]*l-this.elements[7]*k;p[8]=+this.elements[4]* o-this.elements[5]*l+this.elements[7]*i;p[12]=-this.elements[4]*h+this.elements[5]*k-this.elements[6]*i;p[1]=-this.elements[1]*q+this.elements[2]*o-this.elements[3]*h;p[5]=+this.elements[0]*q-this.elements[2]*l+this.elements[3]*k;p[9]=-this.elements[0]*o+this.elements[1]*l-this.elements[3]*i;p[13]=+this.elements[0]*h-this.elements[1]*k+this.elements[2]*i;p[2]=+this.elements[13]*d-this.elements[14]*e+this.elements[15]*c;p[6]=-this.elements[12]*d+this.elements[14]*f-this.elements[15]*b;p[10]=+this.elements[12]* e-this.elements[13]*f+this.elements[15]*a;p[14]=-this.elements[12]*c+this.elements[13]*b-this.elements[14]*a;p[3]=-this.elements[9]*d+this.elements[10]*e-this.elements[11]*c;p[7]=+this.elements[8]*d-this.elements[10]*f+this.elements[11]*b;p[11]=-this.elements[8]*e+this.elements[9]*f-this.elements[11]*a;p[15]=+this.elements[8]*c-this.elements[9]*b+this.elements[10]*a;a=1/n;p[0]*=a;p[1]*=a;p[2]*=a;p[3]*=a;p[4]*=a;p[5]*=a;p[6]*=a;p[7]*=a;p[8]*=a;p[9]*=a;p[10]*=a;p[11]*=a;p[12]*=a;p[13]*=a;p[14]*=a;p[15]*= a;this.elements=p.slice();return!0},toString:function(){for(var a="",b=0;b<15;b++)a+=this.elements[b]+", ";a+=this.elements[15];return a},print:function(){var a=ld(this.elements),a=""+c.nfs(this.elements[0],a,4)+" "+c.nfs(this.elements[1],a,4)+" "+c.nfs(this.elements[2],a,4)+" "+c.nfs(this.elements[3],a,4)+"\n"+c.nfs(this.elements[4],a,4)+" "+c.nfs(this.elements[5],a,4)+" "+c.nfs(this.elements[6],a,4)+" "+c.nfs(this.elements[7],a,4)+"\n"+c.nfs(this.elements[8],a,4)+" "+c.nfs(this.elements[9],a,4)+ " "+c.nfs(this.elements[10],a,4)+" "+c.nfs(this.elements[11],a,4)+"\n"+c.nfs(this.elements[12],a,4)+" "+c.nfs(this.elements[13],a,4)+" "+c.nfs(this.elements[14],a,4)+" "+c.nfs(this.elements[15],a,4)+"\n\n";c.println(a)},invTranslate:function(a,b,f){this.preApply(1,0,0,-a,0,1,0,-b,0,0,1,-f,0,0,0,1)},invRotateX:function(a){var b=j.cos(-a),a=j.sin(-a);this.preApply([1,0,0,0,0,b,-a,0,0,a,b,0,0,0,0,1])},invRotateY:function(a){var b=j.cos(-a),a=j.sin(-a);this.preApply([b,0,a,0,0,1,0,0,-a,0,b,0,0,0,0,1])}, invRotateZ:function(a){var b=j.cos(-a),a=j.sin(-a);this.preApply([b,-a,0,0,a,b,0,0,0,0,1,0,0,0,0,1])},invScale:function(a,b,f){this.preApply([1/a,0,0,0,0,1/b,0,0,0,0,1/f,0,0,0,0,1])}};var Ua=c.PMatrixStack=function(){this.matrixStack=[]};Ua.prototype.load=function(){var a=$.$newPMatrix();arguments.length===1?a.set(arguments[0]):a.set(arguments);this.matrixStack.push(a)};w.prototype.$newPMatrix=function(){return new Ta};F.prototype.$newPMatrix=function(){return new z};Ua.prototype.push=function(){this.matrixStack.push(this.peek())}; Ua.prototype.pop=function(){return this.matrixStack.pop()};Ua.prototype.peek=function(){var a=$.$newPMatrix();a.set(this.matrixStack[this.matrixStack.length-1]);return a};Ua.prototype.mult=function(a){this.matrixStack[this.matrixStack.length-1].apply(a)};c.split=function(a,b){return a.split(b)};c.splitTokens=function(a,b){arguments.length===1&&(b="\n\t\r\u000c ");for(var b="["+b+"]",f=[],c=0,e=a.search(b);e>=0;)e===0?a=a.substring(1):(f[c]=a.substring(0,e),c++,a=a.substring(e)),e=a.search(b);a.length> 0&&(f[c]=a);f.length===0&&(f=p);return f};c.append=function(a,b){a[a.length]=b;return a};c.concat=function(a,b){return a.concat(b)};c.sort=function(a,b){var f=[];if(a.length>0){for(var c=b>0?b:a.length,e=0;e0)for(c=f.length;c>8)};c.peg=function(a){return a<0?0:a>255?255:a};c.modes={replace:function(a,b){return b},blend:function(a,b){var f=(b&d.ALPHA_MASK)>>>24;return j.min(((a& d.ALPHA_MASK)>>>24)+f,255)<<24|c.mix(a&d.RED_MASK,b&d.RED_MASK,f)&d.RED_MASK|c.mix(a&d.GREEN_MASK,b&d.GREEN_MASK,f)&d.GREEN_MASK|c.mix(a&d.BLUE_MASK,b&d.BLUE_MASK,f)},add:function(a,b){var c=(b&d.ALPHA_MASK)>>>24;return j.min(((a&d.ALPHA_MASK)>>>24)+c,255)<<24|j.min((a&d.RED_MASK)+((b&d.RED_MASK)>>8)*c,d.RED_MASK)&d.RED_MASK|j.min((a&d.GREEN_MASK)+((b&d.GREEN_MASK)>>8)*c,d.GREEN_MASK)&d.GREEN_MASK|j.min((a&d.BLUE_MASK)+((b&d.BLUE_MASK)*c>>8),d.BLUE_MASK)},subtract:function(a,b){var c=(b&d.ALPHA_MASK)>>> 24;return j.min(((a&d.ALPHA_MASK)>>>24)+c,255)<<24|j.max((a&d.RED_MASK)-((b&d.RED_MASK)>>8)*c,d.GREEN_MASK)&d.RED_MASK|j.max((a&d.GREEN_MASK)-((b&d.GREEN_MASK)>>8)*c,d.BLUE_MASK)&d.GREEN_MASK|j.max((a&d.BLUE_MASK)-((b&d.BLUE_MASK)*c>>8),0)},lightest:function(a,b){var c=(b&d.ALPHA_MASK)>>>24;return j.min(((a&d.ALPHA_MASK)>>>24)+c,255)<<24|j.max(a&d.RED_MASK,((b&d.RED_MASK)>>8)*c)&d.RED_MASK|j.max(a&d.GREEN_MASK,((b&d.GREEN_MASK)>>8)*c)&d.GREEN_MASK|j.max(a&d.BLUE_MASK,(b&d.BLUE_MASK)*c>>8)},darkest:function(a, b){var f=(b&d.ALPHA_MASK)>>>24;return j.min(((a&d.ALPHA_MASK)>>>24)+f,255)<<24|c.mix(a&d.RED_MASK,j.min(a&d.RED_MASK,((b&d.RED_MASK)>>8)*f),f)&d.RED_MASK|c.mix(a&d.GREEN_MASK,j.min(a&d.GREEN_MASK,((b&d.GREEN_MASK)>>8)*f),f)&d.GREEN_MASK|c.mix(a&d.BLUE_MASK,j.min(a&d.BLUE_MASK,(b&d.BLUE_MASK)*f>>8),f)},difference:function(a,b){var f=(b&d.ALPHA_MASK)>>>24,m=(a&d.RED_MASK)>>16,e=(a&d.GREEN_MASK)>>8,g=a&d.BLUE_MASK,i=(b&d.RED_MASK)>>16,k=(b&d.GREEN_MASK)>>8,l=b&d.BLUE_MASK,i=m>i?m-i:i-m,k=e>k?e-k:k-e, l=g>l?g-l:l-g;return j.min(((a&d.ALPHA_MASK)>>>24)+f,255)<<24|c.peg(m+((i-m)*f>>8))<<16|c.peg(e+((k-e)*f>>8))<<8|c.peg(g+((l-g)*f>>8))},exclusion:function(a,b){var f=(b&d.ALPHA_MASK)>>>24,m=(a&d.RED_MASK)>>16,e=(a&d.GREEN_MASK)>>8,g=a&d.BLUE_MASK,i=(b&d.RED_MASK)>>16,k=(b&d.GREEN_MASK)>>8,l=b&d.BLUE_MASK,i=m+i-(m*i>>7),k=e+k-(e*k>>7),l=g+l-(g*l>>7);return j.min(((a&d.ALPHA_MASK)>>>24)+f,255)<<24|c.peg(m+((i-m)*f>>8))<<16|c.peg(e+((k-e)*f>>8))<<8|c.peg(g+((l-g)*f>>8))},multiply:function(a,b){var f= (b&d.ALPHA_MASK)>>>24,m=(a&d.RED_MASK)>>16,e=(a&d.GREEN_MASK)>>8,g=a&d.BLUE_MASK,i=m*((b&d.RED_MASK)>>16)>>8,k=e*((b&d.GREEN_MASK)>>8)>>8,l=g*(b&d.BLUE_MASK)>>8;return j.min(((a&d.ALPHA_MASK)>>>24)+f,255)<<24|c.peg(m+((i-m)*f>>8))<<16|c.peg(e+((k-e)*f>>8))<<8|c.peg(g+((l-g)*f>>8))},screen:function(a,b){var f=(b&d.ALPHA_MASK)>>>24,m=(a&d.RED_MASK)>>16,e=(a&d.GREEN_MASK)>>8,g=a&d.BLUE_MASK,i=255-((255-m)*(255-((b&d.RED_MASK)>>16))>>8),k=255-((255-e)*(255-((b&d.GREEN_MASK)>>8))>>8),l=255-((255-g)*(255- (b&d.BLUE_MASK))>>8);return j.min(((a&d.ALPHA_MASK)>>>24)+f,255)<<24|c.peg(m+((i-m)*f>>8))<<16|c.peg(e+((k-e)*f>>8))<<8|c.peg(g+((l-g)*f>>8))},hard_light:function(a,b){var f=(b&d.ALPHA_MASK)>>>24,m=(a&d.RED_MASK)>>16,e=(a&d.GREEN_MASK)>>8,g=a&d.BLUE_MASK,i=(b&d.RED_MASK)>>16,k=(b&d.GREEN_MASK)>>8,l=b&d.BLUE_MASK,i=i<128?m*i>>7:255-((255-m)*(255-i)>>7),k=k<128?e*k>>7:255-((255-e)*(255-k)>>7),l=l<128?g*l>>7:255-((255-g)*(255-l)>>7);return j.min(((a&d.ALPHA_MASK)>>>24)+f,255)<<24|c.peg(m+((i-m)*f>>8))<< 16|c.peg(e+((k-e)*f>>8))<<8|c.peg(g+((l-g)*f>>8))},soft_light:function(a,b){var f=(b&d.ALPHA_MASK)>>>24,m=(a&d.RED_MASK)>>16,e=(a&d.GREEN_MASK)>>8,g=a&d.BLUE_MASK,i=(b&d.RED_MASK)>>16,k=(b&d.GREEN_MASK)>>8,l=b&d.BLUE_MASK,i=(m*i>>7)+(m*m>>8)-(m*m*i>>15),k=(e*k>>7)+(e*e>>8)-(e*e*k>>15),l=(g*l>>7)+(g*g>>8)-(g*g*l>>15);return j.min(((a&d.ALPHA_MASK)>>>24)+f,255)<<24|c.peg(m+((i-m)*f>>8))<<16|c.peg(e+((k-e)*f>>8))<<8|c.peg(g+((l-g)*f>>8))},overlay:function(a,b){var f=(b&d.ALPHA_MASK)>>>24,m=(a&d.RED_MASK)>> 16,e=(a&d.GREEN_MASK)>>8,g=a&d.BLUE_MASK,i=(b&d.RED_MASK)>>16,k=(b&d.GREEN_MASK)>>8,l=b&d.BLUE_MASK,i=m<128?m*i>>7:255-((255-m)*(255-i)>>7),k=e<128?e*k>>7:255-((255-e)*(255-k)>>7),l=g<128?g*l>>7:255-((255-g)*(255-l)>>7);return j.min(((a&d.ALPHA_MASK)>>>24)+f,255)<<24|c.peg(m+((i-m)*f>>8))<<16|c.peg(e+((k-e)*f>>8))<<8|c.peg(g+((l-g)*f>>8))},dodge:function(a,b){var f=(b&d.ALPHA_MASK)>>>24,m=(a&d.RED_MASK)>>16,e=(a&d.GREEN_MASK)>>8,g=a&d.BLUE_MASK,i=(b&d.RED_MASK)>>16,k=(b&d.GREEN_MASK)>>8,l=b&d.BLUE_MASK, i=i===255?255:c.peg((m<<8)/(255-i)),k=k===255?255:c.peg((e<<8)/(255-k)),l=l===255?255:c.peg((g<<8)/(255-l));return j.min(((a&d.ALPHA_MASK)>>>24)+f,255)<<24|c.peg(m+((i-m)*f>>8))<<16|c.peg(e+((k-e)*f>>8))<<8|c.peg(g+((l-g)*f>>8))},burn:function(a,b){var f=(b&d.ALPHA_MASK)>>>24,m=(a&d.RED_MASK)>>16,e=(a&d.GREEN_MASK)>>8,g=a&d.BLUE_MASK,i=(b&d.RED_MASK)>>16,k=(b&d.GREEN_MASK)>>8,l=b&d.BLUE_MASK,i=i===0?0:255-c.peg((255-m<<8)/i),k=k===0?0:255-c.peg((255-e<<8)/k),l=l===0?0:255-c.peg((255-g<<8)/l);return j.min(((a& d.ALPHA_MASK)>>>24)+f,255)<<24|c.peg(m+((i-m)*f>>8))<<16|c.peg(e+((k-e)*f>>8))<<8|c.peg(g+((l-g)*f>>8))}};c.color=function(a,b,c,m){if(a!==p&&b!==p&&c!==p&&m!==p)return E(a,b,c,m);if(a!==p&&b!==p&&c!==p)return E(a,b,c,ja);if(a!==p&&b!==p){var e;a&d.ALPHA_MASK?(b=j.round(255*(b/ja)),e=a-(a&d.ALPHA_MASK)+((b>255?255:b)<<24&d.ALPHA_MASK)):ya===d.RGB?e=E(a,a,a,b):ya===d.HSB&&(e=E(0,0,a/ca*ia,b));return e}if(typeof a==="number"){var g;a<=ca&&a>=0?ya===d.RGB?g=E(a,a,a,ja):ya===d.HSB&&(g=E(0,0,a/ca*ia,ja)): a&&(g=a);return g}return E(ca,ra,ia,ja)};c.color.toString=function(a){return"rgba("+((a&d.RED_MASK)>>>16)+","+((a&d.GREEN_MASK)>>>8)+","+(a&d.BLUE_MASK)+","+((a&d.ALPHA_MASK)>>>24)/255+")"};c.color.toInt=function(a,b,c,m){return m<<24&d.ALPHA_MASK|a<<16&d.RED_MASK|b<<8&d.GREEN_MASK|c&d.BLUE_MASK};c.color.toArray=function(a){return[(a&d.RED_MASK)>>>16,(a&d.GREEN_MASK)>>>8,a&d.BLUE_MASK,(a&d.ALPHA_MASK)>>>24]};c.color.toGLArray=function(a){return[((a&d.RED_MASK)>>>16)/255,((a&d.GREEN_MASK)>>>8)/255, (a&d.BLUE_MASK)/255,((a&d.ALPHA_MASK)>>>24)/255]};c.color.toRGB=function(a,b,c){var a=a>ca?ca:a,b=b>ra?ra:b,c=c>ia?ia:c,a=a/ca*360,b=b/ra*100,c=c/ia*100,d=j.round(c/100*255);if(b===0)return[d,d,d];else{a%=360;var e=a%60,g=j.round(c*(100-b)/1E4*255),i=j.round(c*(6E3-b*e)/6E5*255),b=j.round(c*(6E3-b*(60-e))/6E5*255);switch(j.floor(a/60)){case 0:return[d,b,g];case 1:return[i,d,g];case 2:return[g,d,b];case 3:return[g,i,d];case 4:return[b,g,d];case 5:return[d,g,i]}}};c.color.toHSB=function(a){var b,f, m;b=((a&d.RED_MASK)>>>16)/255;f=((a&d.GREEN_MASK)>>>8)/255;m=(a&d.BLUE_MASK)/255;var a=c.max(c.max(b,f),m),e=c.min(c.min(b,f),m);if(e===a)return[0,0,a];else b=b===a?(f-m)/(a-e):f===a?2+(m-b)/(a-e):4+(b-f)/(a-e),b/=6,b<0?b+=1:b>1&&(b-=1);return[b*ca,(a-e)/a*ra,a*ia]};c.brightness=function(a){return c.color.toHSB(a)[2]};c.saturation=function(a){return c.color.toHSB(a)[1]};c.hue=function(a){return c.color.toHSB(a)[0]};c.red=function(a){return((a&d.RED_MASK)>>>16)/255*ca};c.green=function(a){return((a& d.GREEN_MASK)>>>8)/255*ra};c.blue=function(a){return(a&d.BLUE_MASK)/255*ia};c.alpha=function(a){return((a&d.ALPHA_MASK)>>>24)/255*ja};c.lerpColor=function(a,b,f){var m=c.color(a),e=(m&d.RED_MASK)>>>16,g=(m&d.GREEN_MASK)>>>8,a=m&d.BLUE_MASK,m=((m&d.ALPHA_MASK)>>>24)/ja,i=c.color(b),k=(i&d.GREEN_MASK)>>>8,l=i&d.BLUE_MASK,b=((i&d.ALPHA_MASK)>>>24)/ja,e=parseInt(c.lerp(e,(i&d.RED_MASK)>>>16,f),10),g=parseInt(c.lerp(g,k,f),10),a=parseInt(c.lerp(a,l,f),10),f=parseFloat(c.lerp(m,b,f)*ja);return c.color.toInt(e, g,a,f)};c.defaultColor=function(a,b,f){var m=ya;ya=d.RGB;a=c.color(a/255*ca,b/255*ra,f/255*ia);ya=m;return a};c.colorMode=function(){ya=arguments[0];arguments.length>1&&(ca=arguments[1],ra=arguments[2]||arguments[1],ia=arguments[3]||arguments[1],ja=arguments[4]||arguments[1])};c.blendColor=function(a,b,f){var m=0;switch(f){case d.REPLACE:m=c.modes.replace(a,b);break;case d.BLEND:m=c.modes.blend(a,b);break;case d.ADD:m=c.modes.add(a,b);break;case d.SUBTRACT:m=c.modes.subtract(a,b);break;case d.LIGHTEST:m= c.modes.lightest(a,b);break;case d.DARKEST:m=c.modes.darkest(a,b);break;case d.DIFFERENCE:m=c.modes.difference(a,b);break;case d.EXCLUSION:m=c.modes.exclusion(a,b);break;case d.MULTIPLY:m=c.modes.multiply(a,b);break;case d.SCREEN:m=c.modes.screen(a,b);break;case d.HARD_LIGHT:m=c.modes.hard_light(a,b);break;case d.SOFT_LIGHT:m=c.modes.soft_light(a,b);break;case d.OVERLAY:m=c.modes.overlay(a,b);break;case d.DODGE:m=c.modes.dodge(a,b);break;case d.BURN:m=c.modes.burn(a,b)}return m};c.printMatrix=function(){O.print()}; w.prototype.translate=function(a,b){ea.translate(a,b);fa.invTranslate(a,b);h.translate(a,b)};F.prototype.translate=function(a,b,c){ea.translate(a,b,c);fa.invTranslate(a,b,c)};w.prototype.scale=function(a,b){ea.scale(a,b);fa.invScale(a,b);h.scale(a,b||a)};F.prototype.scale=function(a,b,c){ea.scale(a,b,c);fa.invScale(a,b,c)};w.prototype.pushMatrix=function(){rb.load(O);sb.load(Ha);h.save()};F.prototype.pushMatrix=function(){rb.load(O);sb.load(Ha)};w.prototype.popMatrix=function(){O.set(rb.pop());Ha.set(sb.pop()); Ab()};F.prototype.popMatrix=function(){O.set(rb.pop());Ha.set(sb.pop())};w.prototype.resetMatrix=function(){ea.reset();fa.reset();h.setTransform(1,0,0,1,0,0)};F.prototype.resetMatrix=function(){ea.reset();fa.reset()};C.prototype.applyMatrix=function(){var a=arguments;ea.apply(a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9],a[10],a[11],a[12],a[13],a[14],a[15]);fa.invApply(a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9],a[10],a[11],a[12],a[13],a[14],a[15])};w.prototype.applyMatrix=function(){for(var a= arguments,b=a.length;b<16;b++)a[b]=0;a[10]=a[15]=1;C.prototype.applyMatrix.apply(this,a)};c.rotateX=function(a){ea.rotateX(a);fa.invRotateX(a)};c.rotateZ=function(a){ea.rotateZ(a);fa.invRotateZ(a);c.use3DContext||h.rotate(a)};c.rotateY=function(a){ea.rotateY(a);fa.invRotateY(a)};w.prototype.rotate=function(a){c.rotateZ(a)};F.prototype.rotate=function(a){c.rotateZ(a)};c.pushStyle=function(){h.save();c.pushMatrix();hd.push({doFill:P,currentFillColor:Qa,doStroke:L,currentStrokeColor:Y,curTint:db,curRectMode:cb, curColorMode:ya,colorModeX:ca,colorModeZ:ia,colorModeY:ra,colorModeA:ja,curTextFont:W,curTextSize:N})};c.popStyle=function(){var a=hd.pop();if(a)Ab(),c.popMatrix(),P=a.doFill,Qa=a.currentFillColor,L=a.doStroke,Y=a.currentStrokeColor,db=a.curTint,cb=a.curRectmode,ya=a.curColorMode,ca=a.colorModeX,ia=a.colorModeZ,ra=a.colorModeY,ja=a.colorModeA,W=a.curTextFont,N=a.curTextSize;else throw"Too many popStyle() without enough pushStyle()";};c.year=function(){return(new Date).getFullYear()};c.month=function(){return(new Date).getMonth()+ 1};c.day=function(){return(new Date).getDate()};c.hour=function(){return(new Date).getHours()};c.minute=function(){return(new Date).getMinutes()};c.second=function(){return(new Date).getSeconds()};c.millis=function(){return(new Date).getTime()-Wc};C.prototype.redraw=function(){var a=((new Date).getTime()-qc)/1E3;Tb++;var b=Tb/a;if(a>0.5)qc=(new Date).getTime(),Tb=0,c.__frameRate=b;c.frameCount++};w.prototype.redraw=function(){C.prototype.redraw.apply(this,arguments);h.lineWidth=aa;h.save();c.draw(); Ab()};F.prototype.redraw=function(){C.prototype.redraw.apply(this,arguments);h.clear(h.DEPTH_BUFFER_BIT);xa={attributes:{},locations:{}};c.noLights();c.lightFalloff(1,0,0);c.shininess(1);c.ambient(255,255,255);c.specular(0,0,0);c.emissive(0,0,0);c.camera();c.draw()};c.noLoop=function(){Qb=bb=!1;clearInterval(Rb)};c.loop=function(){Qb||(qc=(new Date).getTime(),Tb=0,Rb=Q.setInterval(function(){try{c.redraw()}catch(a){throw Q.clearInterval(Rb),a;}},Uc),Qb=bb=!0)};c.frameRate=function(a){mc=a;Uc=1E3/ mc;bb&&(c.noLoop(),c.loop())};var Sa=[];c.exit=function(){Q.clearInterval(Rb);var a=c.externals.canvas.id;ib.splice(Lb[a],1);delete Lb[a];for(var b in y.lib)y.lib.hasOwnProperty(b)&&y.lib[b].hasOwnProperty("detach")&&y.lib[b].detach(c);a=0;for(b=Sa.length;a1||arguments.length===1&&arguments[0]instanceof c.PImage){var a=arguments[0], b,f;if(arguments.length>=3){if(b=arguments[1],f=arguments[2],b<0||f<0||f>=a.height||b>=a.width)throw"x and y must be non-negative and less than the dimensions of the image";}else b=a.width>>>1,f=a.height>>>1;a='url("'+a.toDataURL()+'") '+b+" "+f+", default";q.style.cursor=a}else q.style.cursor=arguments.length===1?arguments[0]:yd};c.noCursor=function(){q.style.cursor=d.NOCURSOR};c.link=function(a,b){b!==p?Q.open(a,b):Q.location=a};c.beginDraw=function(){};c.endDraw=function(){};c.Import=function(){}; var md=function(a){a.preventDefault();a.stopPropagation()};c.disableContextMenu=function(){q.addEventListener("contextmenu",md,!1)};c.enableContextMenu=function(){q.removeEventListener("contextmenu",md,!1)};c.status=function(a){Q.status=a};c.binary=function(a,b){var c=32;if(typeof a==="number")return b&&(c=b),Kc(a,c);a instanceof ka&&(a=a.toString().charCodeAt(0),c=b?32:16);c=Kc(a,c);b&&(c=c.substr(-b));return c};c.unbinary=function(a){var b=/^[0|1]{8}$/,f=0;if(a instanceof Array){f=[];for(b=0;b< a.length;b++)f[b]=c.unbinary(a[b]);return f}else if(isNaN(a))throw"NaN_Err";else if(arguments.length===1||a.length===8)if(b.test(a)){for(b=0;b<8;b++)f+=j.pow(2,b)*parseInt(a.charAt(7-b),10);return f+""}else throw"notBinary: the value passed into unbinary was not an 8 bit binary number";else throw"longErr";};c.nf=function(a,b,c){return wa(a,"","-",b,c)};c.nfs=function(a,b,c){return wa(a," ","-",b,c)};c.nfp=function(a,b,c){return wa(a,"+","-",b,c)};c.nfc=function(a,b,c){return wa(a,"","-",b,c,",")}; c.hex=function(a,b){arguments.length===1&&(b=a instanceof ka?4:8);var c=a,d=b,d=d===p||d===null?d=8:d;c<0&&(c=4294967295+c+1);for(c=Number(c).toString(16).toUpperCase();c.length=d&&(c=c.substring(c.length-d,c.length));return c};c.unhex=function(a){if(a instanceof Array){for(var b=[],c=0;c0?c:null};c.__contains=function(a,b){if(typeof a!=="string")return a.contains.apply(a,ha(arguments));return a!==null&&b!==null&&typeof b==="string"&&a.indexOf(b)>-1}; c.__replaceAll=function(a,b,c){if(typeof a!=="string")return a.replaceAll.apply(a,ha(arguments));return a.replace(RegExp(b,"g"),c)};c.__replaceFirst=function(a,b,c){if(typeof a!=="string")return a.replaceFirst.apply(a,ha(arguments));return a.replace(RegExp(b,""),c)};c.__replace=function(a,b,c){if(typeof a!=="string")return a.replace.apply(a,ha(arguments));if(b instanceof RegExp)return a.replace(b,c);typeof b!=="string"&&(b=b.toString());if(b==="")return a;var d=a.indexOf(b);if(d<0)return a;var e= 0,g="";do g+=a.substring(e,d)+c,e=d+b.length;while((d=a.indexOf(b,e))>=0);return g+a.substring(e)};c.__equals=function(a,b){if(a.equals instanceof Function)return a.equals.apply(a,ha(arguments));return a.valueOf()===b.valueOf()};c.__toCharArray=function(a){if(typeof a!=="string")return a.toCharArray.apply(a,ha(arguments));for(var b=[],c=0,d=a.length;c0;){c=d.shift();if(c===b)return!0;c.$interfaces&&(d=d.concat(c.$interfaces))}return!1}for(;c.hasOwnProperty("$base");)if(c=c.$base,c===b)return!0;return!1};c.abs=j.abs;c.ceil=j.ceil;c.constrain=function(a,b,c){return a>c?c:a0))throw"Non-empty array is expected";for(var b=a[0],c=a.length,d=1;d0))throw"Non-empty array is expected";for(var b=a[0],c=a.length,d=1;d< c;++d)b>a[d]&&(b=a[d]);return b}};c.norm=function(a,b,c){return(a-b)/(c-b)};c.pow=j.pow;c.round=j.round;c.sq=function(a){return a*a};c.sqrt=j.sqrt;c.acos=j.acos;c.asin=j.asin;c.atan=j.atan;c.atan2=j.atan2;c.cos=j.cos;c.degrees=function(a){return a*180/j.PI};c.radians=function(a){return a/180*j.PI};c.sin=j.sin;c.tan=j.tan;var dc=j.random;c.random=function(){if(arguments.length===0)return dc();else if(arguments.length===1)return dc()*arguments[0];else{var a=arguments[0],b=arguments[1];return dc()*(b- a)+a}};Pa.createRandomized=function(){var a=new Date;return new Pa(a/6E4&4294967295,a&4294967295)};c.randomSeed=function(a){dc=(new Pa(a)).nextDouble};c.Random=function(a){var b=!1,c,d;this.nextGaussian=function(){if(b)return b=!1,c;else{var a,g,i;do a=2*d()-1,g=2*d()-1,i=a*a+g*g;while(i>=1||i===0);i=j.sqrt(-2*j.log(i)/i);c=g*i;b=!0;return a*i}};d=a===p?j.random:(new Pa(a)).nextDouble};var Ia={generator:p,octaves:4,fallout:0.5,seed:p};c.noise=function(a,b,c){if(Ia.generator===p)Ia.generator=new vd(Ia.seed); for(var d=Ia.generator,e=1,g=1,i=0,k=0;k 0&&(q.style.removeProperty("width"),q.style.removeProperty("height"));q.width=c.width=a||100;q.height=c.height=b||100;for(var m in f)f.hasOwnProperty(m)&&(h[m]=f[m]);c.textSize(N);c.background();dd=j.max(1E3,a*b*0.05);c.externals.context=h;for(f=0;f0?(b=new z,b.set(a),c=new z,c.set(d),b.mult(c),c=new z,c.set(b),c.invert(),c.transpose(),J("normalTransform3d",s,"normalTransform", !1,c.array()),u("normal3d",s,"Normal",3,uc)):X("normal3d",s,"Normal"),u("vertex3d",s,"Vertex",3,tc),X("aColor3d",s,"aColor"),X("aTexture3d",s,"aTexture"),h.drawArrays(h.TRIANGLES,0,id.length/3),h.disable(h.POLYGON_OFFSET_FILL));aa>0&&L&&(h.useProgram(v),J("model2d",v,"model",!1,d.array()),J("view2d",v,"view",!1,a.array()),t("color2d",v,"color",la),H("picktype2d",v,"picktype",0),u("vertex2d",v,"Vertex",3,vc),X("aTextureCoord2d",v,"aTextureCoord"),h.lineWidth(aa),h.drawArrays(h.LINES,0,jd.length/3))}; c.sphereDetail=function(a,b){var c;arguments.length===1&&(a=b=arguments[0]);a<3&&(a=3);b<2&&(b=2);if(!(a===eb&&b===Yb)){var m=d.SINCOS_LENGTH/a,e=new G(a),g=new G(a);for(c=0;c0){var f=new z;f.set(a);var d=new z;d.set(b);f.mult(d);d=new z;d.set(f);d.invert();d.transpose();J("normalTransform3d",s,"normalTransform",!1,d.array());u("normal3d",s,"Normal",3,Eb)}else X("normal3d",s,"Normal");h.useProgram(s);X("aTexture3d",s,"aTexture");J("model3d",s,"model",!1,b.array());J("view3d",s,"view",!1,a.array());u("vertex3d",s,"Vertex",3,Eb);X("aColor3d",s,"aColor");h.enable(h.POLYGON_OFFSET_FILL);h.polygonOffset(1, 1);t("color3d",s,"color",ma);h.drawArrays(h.TRIANGLE_STRIP,0,K.length/3);h.disable(h.POLYGON_OFFSET_FILL)}aa>0&&L&&(h.useProgram(v),J("model2d",v,"model",!1,b.array()),J("view2d",v,"view",!1,a.array()),u("vertex2d",v,"Vertex",3,Eb),X("aTextureCoord2d",v,"aTextureCoord"),t("color2d",v,"color",la),H("picktype2d",v,"picktype",0),h.lineWidth(aa),h.drawArrays(h.LINE_STRIP,0,K.length/3))};c.modelX=function(a,b,c){var d=O.array(),e=Ga.array(),g=d[0]*a+d[1]*b+d[2]*c+d[3],i=d[4]*a+d[5]*b+d[6]*c+d[7],k=d[8]* a+d[9]*b+d[10]*c+d[11],b=d[12]*a+d[13]*b+d[14]*c+d[15],a=e[0]*g+e[1]*i+e[2]*k+e[3]*b,e=e[12]*g+e[13]*i+e[14]*k+e[15]*b;return e!==0?a/e:a};c.modelY=function(a,b,c){var d=O.array(),e=Ga.array(),g=d[0]*a+d[1]*b+d[2]*c+d[3],i=d[4]*a+d[5]*b+d[6]*c+d[7],k=d[8]*a+d[9]*b+d[10]*c+d[11],b=d[12]*a+d[13]*b+d[14]*c+d[15],a=e[4]*g+e[5]*i+e[6]*k+e[7]*b,e=e[12]*g+e[13]*i+e[14]*k+e[15]*b;return e!==0?a/e:a};c.modelZ=function(a,b,c){var d=O.array(),e=Ga.array(),g=d[0]*a+d[1]*b+d[2]*c+d[3],i=d[4]*a+d[5]*b+d[6]*c+d[7], k=d[8]*a+d[9]*b+d[10]*c+d[11],b=d[12]*a+d[13]*b+d[14]*c+d[15],a=e[8]*g+e[9]*i+e[10]*k+e[11]*b,e=e[12]*g+e[13]*i+e[14]*k+e[15]*b;return e!==0?a/e:a};w.prototype.ambient=C.prototype.a3DOnlyFunction;F.prototype.ambient=function(){var a=arguments;h.useProgram(s);H("usingMat3d",s,"usingMat",!0);a.length===1?typeof a[0]==="string"?(a=a[0].slice(5,-1).split(","),t("mat_ambient3d",s,"mat_ambient",[a[0]/255,a[1]/255,a[2]/255])):t("mat_ambient3d",s,"mat_ambient",[a[0]/255,a[0]/255,a[0]/255]):t("mat_ambient3d", s,"mat_ambient",[a[0]/255,a[1]/255,a[2]/255])};w.prototype.emissive=C.prototype.a3DOnlyFunction;F.prototype.emissive=function(){var a=arguments;h.useProgram(s);H("usingMat3d",s,"usingMat",!0);a.length===1?typeof a[0]==="string"?(a=a[0].slice(5,-1).split(","),t("mat_emissive3d",s,"mat_emissive",[a[0]/255,a[1]/255,a[2]/255])):t("mat_emissive3d",s,"mat_emissive",[a[0]/255,a[0]/255,a[0]/255]):t("mat_emissive3d",s,"mat_emissive",[a[0]/255,a[1]/255,a[2]/255])};w.prototype.shininess=C.prototype.a3DOnlyFunction; F.prototype.shininess=function(a){h.useProgram(s);H("usingMat3d",s,"usingMat",!0);t("shininess3d",s,"shininess",a)};w.prototype.specular=C.prototype.a3DOnlyFunction;F.prototype.specular=function(){var a=c.color.apply(this,arguments);h.useProgram(s);H("usingMat3d",s,"usingMat",!0);t("mat_specular3d",s,"mat_specular",c.color.toGLArray(a).slice(0,3))};c.screenX=function(a,b,f){var d=O.array();if(d.length===16){var e=d[0]*a+d[1]*b+d[2]*f+d[3],g=d[4]*a+d[5]*b+d[6]*f+d[7],i=d[8]*a+d[9]*b+d[10]*f+d[11], b=d[12]*a+d[13]*b+d[14]*f+d[15],f=za.array(),a=f[0]*e+f[1]*g+f[2]*i+f[3]*b,e=f[12]*e+f[13]*g+f[14]*i+f[15]*b;e!==0&&(a/=e);return c.width*(1+a)/2}else return O.multX(a,b)};c.screenY=function(a,b,f){var d=O.array();if(d.length===16){var e=d[0]*a+d[1]*b+d[2]*f+d[3],g=d[4]*a+d[5]*b+d[6]*f+d[7],i=d[8]*a+d[9]*b+d[10]*f+d[11],b=d[12]*a+d[13]*b+d[14]*f+d[15],f=za.array(),a=f[4]*e+f[5]*g+f[6]*i+f[7]*b,e=f[12]*e+f[13]*g+f[14]*i+f[15]*b;e!==0&&(a/=e);return c.height*(1+a)/2}else return O.multY(a,b)};c.screenZ= function(a,b,c){var d=O.array();if(d.length!==16)return 0;var e=za.array(),g=d[0]*a+d[1]*b+d[2]*c+d[3],i=d[4]*a+d[5]*b+d[6]*c+d[7],k=d[8]*a+d[9]*b+d[10]*c+d[11],b=d[12]*a+d[13]*b+d[14]*c+d[15],a=e[8]*g+e[9]*i+e[10]*k+e[11]*b,e=e[12]*g+e[13]*i+e[14]*k+e[15]*b;e!==0&&(a/=e);return(a+1)/2};C.prototype.fill=function(a,b,f,d){a=c.color(a,b,f,d);a===Qa&&P||(P=!0,Qa=a)};w.prototype.fill=function(){C.prototype.fill.apply(this,arguments);Oa=!0};F.prototype.fill=function(){C.prototype.fill.apply(this,arguments); ma=c.color.toGLArray(Qa)};c.noFill=function(){P=!1};C.prototype.stroke=function(a,b,f,d){a=c.color(a,b,f,d);a===Y&&L||(L=!0,Y=a)};w.prototype.stroke=function(){C.prototype.stroke.apply(this,arguments);Mb=!0};F.prototype.stroke=function(){C.prototype.stroke.apply(this,arguments);la=c.color.toGLArray(Y)};c.noStroke=function(){L=!1};C.prototype.strokeWeight=function(a){aa=a};w.prototype.strokeWeight=function(a){C.prototype.strokeWeight.apply(this,arguments);h.lineWidth=a};F.prototype.strokeWeight=function(a){C.prototype.strokeWeight.apply(this, arguments);h.useProgram(v);t("pointSize2d",v,"pointSize",a)};c.strokeCap=function(a){$.$ensureContext().lineCap=a};c.strokeJoin=function(a){$.$ensureContext().lineJoin=a};C.prototype.smooth=function(){q.style.setProperty("image-rendering","optimizeQuality","important")};w.prototype.smooth=function(){C.prototype.smooth.apply(this,arguments);if("mozImageSmoothingEnabled"in h)h.mozImageSmoothingEnabled=!0};C.prototype.noSmooth=function(){q.style.setProperty("image-rendering","optimizeSpeed","important")}; w.prototype.noSmooth=function(){C.prototype.noSmooth.apply(this,arguments);if("mozImageSmoothingEnabled"in h)h.mozImageSmoothingEnabled=!1};w.prototype.point=function(a,b){if(L)if(T.options.crispLines){var f=j.PI/4,m=c.get(a,b);c.set(a,b,Wa(m,Y,f))}else aa>1?(h.fillStyle=c.color.toString(Y),Oa=!0,h.beginPath(),h.arc(a,b,aa/2,0,d.TWO_PI,!1),h.fill(),h.closePath()):(h.fillStyle=c.color.toString(Y),h.fillRect(j.round(a),j.round(b),1,1),Oa=!0)};F.prototype.point=function(a,b,c){var d=new z;d.translate(a, b,c||0);d.transpose();a=new z;a.scale(1,-1,1);a.apply(O.array());a.transpose();h.useProgram(v);J("model2d",v,"model",!1,d.array());J("view2d",v,"view",!1,a.array());aa>0&&L&&(t("color2d",v,"color",la),H("picktype2d",v,"picktype",0),u("vertex2d",v,"Vertex",3,Wb),X("aTextureCoord2d",v,"aTextureCoord"),h.drawArrays(h.POINTS,0,1))};c.beginShape=function(a){R=a;o=[]};C.prototype.vertex=function(){var a=[];vb&&(vb=!1);arguments.length===4?(a[0]=arguments[0],a[1]=arguments[1],a[2]=0,a[3]=arguments[2],a[4]= arguments[3]):(a[0]=arguments[0],a[1]=arguments[1],a[2]=arguments[2]||0,a[3]=arguments[3]||0,a[4]=arguments[4]||0);a.isVert=!0;return a};w.prototype.vertex=function(){var a=C.prototype.vertex.apply(this,arguments);a[5]=Qa;a[6]=Y;o.push(a)};F.prototype.vertex=function(){var a=C.prototype.vertex.apply(this,arguments);a[5]=ma[0];a[6]=ma[1];a[7]=ma[2];a[8]=ma[3];a[9]=la[0];a[10]=la[1];a[11]=la[2];a[12]=la[3];a[13]=jc;a[14]=kc;a[15]=lc;o.push(a)};var nd=function(a,b){var c=new z;c.scale(1,-1,1);c.apply(O.array()); c.transpose();h.useProgram(na);J("uViewUS",na,"uView",!1,c.array());u("aVertexUS",na,"aVertex",3,Wb);h.bufferData(h.ARRAY_BUFFER,new G(a),h.STREAM_DRAW);u("aColorUS",na,"aColor",4,yc);h.bufferData(h.ARRAY_BUFFER,new G(b),h.STREAM_DRAW);h.drawArrays(h.POINTS,0,a.length/3)},ta=function(a,b,c){var b=b==="LINES"?h.LINES:b==="LINE_LOOP"?h.LINE_LOOP:h.LINE_STRIP,d=new z;d.scale(1,-1,1);d.apply(O.array());d.transpose();h.useProgram(na);J("uViewUS",na,"uView",!1,d.array());u("aVertexUS",na,"aVertex",3,xc); h.bufferData(h.ARRAY_BUFFER,new G(a),h.STREAM_DRAW);u("aColorUS",na,"aColor",4,Yc);h.bufferData(h.ARRAY_BUFFER,new G(c),h.STREAM_DRAW);h.lineWidth(aa);h.drawArrays(b,0,a.length/3)},Va=function(a,b,c,m){var b=b==="TRIANGLES"?h.TRIANGLES:b==="TRIANGLE_FAN"?h.TRIANGLE_FAN:h.TRIANGLE_STRIP,e=new z;e.scale(1,-1,1);e.apply(O.array());e.transpose();h.useProgram(s);J("model3d",s,"model",!1,[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]);J("view3d",s,"view",!1,e.array());h.enable(h.POLYGON_OFFSET_FILL);h.polygonOffset(1, 1);t("color3d",s,"color",[-1,0,0,0]);u("vertex3d",s,"Vertex",3,Xc);h.bufferData(h.ARRAY_BUFFER,new G(a),h.STREAM_DRAW);u("aColor3d",s,"aColor",4,yc);h.bufferData(h.ARRAY_BUFFER,new G(c),h.STREAM_DRAW);X("normal3d",s,"Normal");if(oa){if(bd===d.IMAGE)for(c=0;c1&&(m[c+0]-=m[c+0]-1),m[c+1]>1&&(m[c+1]-=m[c+1]-1);H("usingTexture3d",s,"usingTexture",oa);u("aTexture3d",s,"aTexture",2,Zc);h.bufferData(h.ARRAY_BUFFER,new G(m),h.STREAM_DRAW)}h.drawArrays(b, 0,a.length/3);h.disable(h.POLYGON_OFFSET_FILL)};w.prototype.endShape=function(a){if(o.length!==0){var a=a===d.CLOSE,b=[],f=[],m=[],e=[],g;vb=!0;var i,k,l=o.length;for(i=0;i3){b=[];f=1-nc;h.beginPath();h.moveTo(o[1][0],o[1][1]);for(i=1;i+22){h.beginPath();h.moveTo(o[0][0],o[0][1]);h.lineTo(o[1][0],o[1][1]);h.lineTo(o[2][0],o[2][1]); P&&(c.fill(o[2][5]),S());L&&(c.stroke(o[2][6]),da());h.closePath();for(i=3;i3)for(i=0;i+ 12)for(k=0;k+22)for(k=0;k+2 2){for(k=0;k<3;k++){i=o[k];for(l=0;l<3;l++)a.push(i[l])}for(k=0;k<3;k++){i=o[k];for(l=9;l<13;l++)e.push(i[l])}L&&ta(a,"LINE_LOOP",e);for(k=2;k+13){for(k=0;k<2;k++){i=o[k];for(l=0;l<3;l++)a.push(i[l])}for(k=0;k<2;k++){i=o[k];for(l=9;l<13;l++)e.push(i[l])}ta(a,"LINE_STRIP",e);j>4&&j%2>0&&(c.splice(c.length-3),o.pop());for(k=0;k+33){var e=ga[ba-4][0],g=ga[ba-4][1],i=ga[ba-4][2],k=ga[ba-3][0],l=ga[ba-3][1],h=ga[ba-3][2],j=ga[ba-2][0],o=ga[ba-2][1],n=ga[ba-2][2],p=ga[ba-1][0],q=ga[ba-1][1],s=ga[ba-1][2],a=k,b=l,d=h,r=nb.array(),m=r[4]*e+r[5]*k+r[6]*j+r[7]*p,x=r[8]*e+r[9]*k+r[10]*j+r[11]*p,e=r[12]*e+r[13]*k+r[14]*j+r[15]*p,k=r[4]*g+r[5]*l+r[6]*o+r[7]*q,j=r[8]*g+r[9]*l+r[10]*o+r[11]*q,g=r[12]*g+r[13]*l+r[14]*o+r[15]*q,l=r[4]*i+r[5]*h+r[6]*n+r[7]*s,o=r[8]*i+ r[9]*h+r[10]*n+r[11]*s,i=r[12]*i+r[13]*h+r[14]*n+r[15]*s;c.vertex(a,b,d);for(h=0;hd.TWO_PI)e=0,g=d.TWO_PI;f/=2;m/=2;a+=f;b+=m;var e=0|-0.5+e/d.TWO_PI*d.SINCOS_LENGTH,g=0|0.5+g/d.TWO_PI*d.SINCOS_LENGTH,i,k;if(P){var l=L;L=!1;c.beginShape();c.vertex(a,b);for(k=i=e;i=d.SINCOS_LENGTH&&(k-=d.SINCOS_LENGTH),c.vertex(a+qb[k]*f,b+pb[k]*m);c.endShape(d.CLOSE);L=l}if(L){l=P;P=!1;c.beginShape();for(k=i=e;i=d.SINCOS_LENGTH&& (k-=d.SINCOS_LENGTH),c.vertex(a+qb[k]*f,b+pb[k]*m);k=g%d.SINCOS_LENGTH;c.vertex(a+qb[k]*f,b+pb[k]*m);c.endShape();P=l}}};w.prototype.line=function(a,b,d,m){if(a===d&&b===m)c.point(a,b);else if((a===d||b===m)&&aa<=1&&L&&T.options.crispLines){var e;if(a===d){b>m&&(e=b,b=m,m=e);for(;b<=m;++b)c.set(a,b,Y)}else{a>d&&(e=a,a=d,d=e);for(;a<=d;++a)c.set(a,b,Y)}}else L&&(h.beginPath(),h.moveTo(a||0,b||0),h.lineTo(d||0,m||0),da(),h.closePath())};F.prototype.line=function(){var a,b,d,m,e,g;arguments.length=== 6?(a=arguments[0],b=arguments[1],d=arguments[2],m=arguments[3],e=arguments[4],g=arguments[5]):arguments.length===4&&(a=arguments[0],b=arguments[1],d=0,m=arguments[2],e=arguments[3],g=0);a===m&&b===e&&d===g?c.point(a,b,d):(a=[a,b,d,m,e,g],b=new z,b.scale(1,-1,1),b.apply(O.array()),b.transpose(),aa>0&&L&&(h.useProgram(v),J("model2d",v,"model",!1,[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]),J("view2d",v,"view",!1,b.array()),t("color2d",v,"color",la),H("picktype2d",v,"picktype",0),h.lineWidth(aa),u("vertex2d", v,"Vertex",3,xc),X("aTextureCoord2d",v,"aTextureCoord"),h.bufferData(h.ARRAY_BUFFER,new G(a),h.STREAM_DRAW),h.drawArrays(h.LINES,0,2)))};w.prototype.bezier=function(){if(arguments.length!==8)throw"You must use 8 parameters for bezier() in 2D mode";c.beginShape();c.vertex(arguments[0],arguments[1]);c.bezierVertex(arguments[2],arguments[3],arguments[4],arguments[5],arguments[6],arguments[7]);c.endShape()};F.prototype.bezier=function(){if(arguments.length!==12)throw"You must use 12 parameters for bezier() in 3D mode"; c.beginShape();c.vertex(arguments[0],arguments[1],arguments[2]);c.bezierVertex(arguments[3],arguments[4],arguments[5],arguments[6],arguments[7],arguments[8],arguments[9],arguments[10],arguments[11]);c.endShape()};c.bezierDetail=function(a){pc=a};c.bezierPoint=function(a,b,c,d,e){return(1-e)*(1-e)*(1-e)*a+3*(1-e)*(1-e)*e*b+3*(1-e)*e*e*c+e*e*e*d};c.bezierTangent=function(a,b,c,d,e){return 3*e*e*(-a+3*b-3*c+d)+6*e*(a-2*b+c)+3*(-a+b)};c.curvePoint=function(a,b,c,d,e){return 0.5*(2*b+(-a+c)*e+(2*a-5*b+ 4*c-d)*e*e+(-a+3*b-3*c+d)*e*e*e)};c.curveTangent=function(a,b,c,d,e){return 0.5*(-a+c+2*(2*a-5*b+4*c-d)*e+3*(-a+3*b-3*c+d)*e*e)};c.triangle=function(a,b,f,m,e,g){c.beginShape(d.TRIANGLES);c.vertex(a,b,0);c.vertex(f,m,0);c.vertex(e,g,0);c.endShape()};c.quad=function(a,b,f,m,e,g,i,k){c.beginShape(d.QUADS);c.vertex(a,b,0);c.vertex(f,m,0);c.vertex(e,g,0);c.vertex(i,k,0);c.endShape()};w.prototype.rect=function(a,b,f,m){if(f||m)if(L&&!P&&aa<=1&&T.options.crispLines){var e,g=a+f-1,i=b+m-1;for(e=0;e0&&L&&(h.useProgram(v),J("model2d",v,"model",!1,e.array()),J("view2d",v,"view", !1,b.array()),t("color2d",v,"color",la),H("picktype2d",v,"picktype",0),u("vertex2d",v,"Vertex",3,Vb),X("aTextureCoord2d",v,"aTextureCoord"),h.lineWidth(aa),h.drawArrays(h.LINE_LOOP,0,Fc.length/3));P&&(h.useProgram(s),J("model3d",s,"model",!1,e.array()),J("view3d",s,"view",!1,b.array()),h.enable(h.POLYGON_OFFSET_FILL),h.polygonOffset(1,1),t("color3d",s,"color",ma),I>0?(a=new z,a.set(b),b=new z,b.set(e),a.mult(b),e=new z,e.set(a),e.invert(),e.transpose(),J("normalTransform3d",s,"normalTransform",!1, e.array()),u("normal3d",s,"Normal",3,wc)):X("normal3d",s,"Normal"),u("vertex3d",s,"Vertex",3,Vb),h.drawArrays(h.TRIANGLE_FAN,0,Fc.length/3),h.disable(h.POLYGON_OFFSET_FILL))};C.prototype.ellipse=function(a,b,c,m){a=a||0;b=b||0;if(!(c<=0&&m<=0)){Za===d.RADIUS&&(c*=2,m*=2);Za===d.CORNERS&&(c-=a,m-=b);if(Za===d.CORNER||Za===d.CORNERS)a+=c/2,b+=m/2;return{x:a,y:b,width:c,height:m}}};w.prototype.ellipse=function(a,b,f,m){var e=C.prototype.ellipse.apply(this,arguments);if(e)if(a=e.x,b=e.y,f=e.width,m=e.height, f===m)h.beginPath(),h.arc(a-0,b-0,f/2,0,d.TWO_PI,!1),S(),da(),h.closePath();else{var e=f/2,g=m/2,i=0.5522847498307933*e,k=0.5522847498307933*g;c.beginShape();c.vertex(a+e,b);c.bezierVertex(a+e,b-k,a+i,b-g,a,b-g);c.bezierVertex(a-i,b-g,a-e,b-k,a-e,b);c.bezierVertex(a-e,b+k,a-i,b+g,a,b+g);c.bezierVertex(a+i,b+g,a+e,b+k,a+e,b);c.endShape()}};F.prototype.ellipse=function(a,b,d,m){var e=C.prototype.ellipse.apply(this,arguments);if(e){var a=e.x,b=e.y,d=e.width,m=e.height,e=d/2,g=m/2,i=0.5522847498307933* e,k=0.5522847498307933*g;c.beginShape();c.vertex(a+e,b);c.bezierVertex(a+e,b-k,0,a+i,b-g,0,a,b-g,0);c.bezierVertex(a-i,b-g,0,a-e,b-k,0,a-e,b,0);c.bezierVertex(a-e,b+k,0,a-i,b+g,0,a,b+g,0);c.bezierVertex(a+i,b+g,0,a+e,b+k,0,a+e,b,0);c.endShape();if(P){var k=i=0,l;for(l=0;l>>16;a.imageData.data[f+1]=(c&d.GREEN_MASK)>>>8;a.imageData.data[f+2]=c&d.BLUE_MASK;a.imageData.data[f+3]=(c&d.ALPHA_MASK)>>>24}}(this),set:function(a){if(this.isRemote)throw"Image is loaded remotely. Cannot set pixels.";else for(var b=0,c=a.length;b=0&&b>=0&& b=0&&b>=0&&bdd&&Ba()):d instanceof ua&&c.image(d,a,b);else if(arguments.length===4)if(m.isRemote)throw"Image is loaded remotely. Cannot set x,y.";else{var e=c.color.toArray(d),g= b*m.width*4+a*4,i=m.imageData.data;i[g]=e[0];i[g+1]=e[1];i[g+2]=e[2];i[g+3]=e[3]}};c.imageData={};c.pixels={getLength:function(){return c.imageData.data.length?c.imageData.data.length/4:0},getPixel:function(a){a*=4;return c.imageData.data[a+3]<<24&4278190080|c.imageData.data[a+0]<<16&16711680|c.imageData.data[a+1]<<8&65280|c.imageData.data[a+2]&255},setPixel:function(a,b){var d=a*4;c.imageData.data[d+0]=(b&16711680)>>>16;c.imageData.data[d+1]=(b&65280)>>>8;c.imageData.data[d+2]=b&255;c.imageData.data[d+ 3]=(b&4278190080)>>>24},set:function(a){for(var b=0,c=a.length;b0&&C.prototype.background.apply(this,arguments);Cb instanceof ua?(h.save(),h.setTransform(1,0,0,1,0,0),c.image(Cb, 0,0)):(h.save(),h.setTransform(1,0,0,1,0,0),T.options.isTransparent&&h.clearRect(0,0,c.width,c.height),h.fillStyle=c.color.toString(Cb),h.fillRect(0,0,c.width,c.height),Oa=!0);Ab()};F.prototype.background=function(){arguments.length>0&&C.prototype.background.apply(this,arguments);var a=c.color.toGLArray(Cb);h.clearColor(a[0],a[1],a[2],a[3]);h.clear(h.COLOR_BUFFER_BIT|h.DEPTH_BUFFER_BIT)};w.prototype.image=function(a,b,c,d,e){if(a.width>0){var g=ac(b||0,c||0,d||a.width,e||a.height,arguments.length< 4);if(a.sourceImg&&db===null&&!a.__mask){var i=a.sourceImg;h.drawImage(i,0,0,i.width,i.height,g.x,g.y,g.w,g.h)}else{i=a.toImageData();if(a.__mask){var k,l;if(a.__mask instanceof ua){var j=a.__mask.toImageData();k=2;for(l=a.width*a.height*4;k0&&(m=m||a.width,e=e||a.height,c.beginShape(c.QUADS), c.texture(a.externals.canvas),c.vertex(b,d,0,0,0),c.vertex(b,d+e,0,0,e),c.vertex(b+m,d+e,0,m,e),c.vertex(b+m,d,0,m,0),c.endShape())};c.tint=function(){var a=c.color.apply(this,arguments),b=c.red(a)/ca,d=c.green(a)/ra,m=c.blue(a)/ia,e=c.alpha(a)/ja;db=function(a){for(var c=a.data,a=4*a.width*a.height,k=0;k=i&&(j=c),p<0&&(p=0),n>=d&&(n=c),p=b.pixels.getPixel(p),o=b.pixels.getPixel(o),n=b.pixels.getPixel(n),j=b.pixels.getPixel(j),k=77*(k>>16&255)+151*(k>>8& 255)+28*(k&255),s=77*(o>>16&255)+151*(o>>8&255)+28*(o&255),q=77*(j>>16&255)+151*(j>>8&255)+28*(j&255),x=77*(p>>16&255)+151*(p>>8&255)+28*(p&255),r=77*(n>>16&255)+151*(n>>8&255)+28*(n&255),s=i&&(j=c),p<0&&(p=0),n>=d&&(n=c),p=b.pixels.getPixel(p),o=b.pixels.getPixel(o),n=b.pixels.getPixel(n),j=b.pixels.getPixel(j),k=77*(k>> 16&255)+151*(k>>8&255)+28*(k&255),s=77*(o>>16&255)+151*(o>>8&255)+28*(o&255),q=77*(j>>16&255)+151*(j>>8&255)+28*(j&255),x=77*(p>>16&255)+151*(p>>8&255)+28*(p&255),r=77*(n>>16&255)+151*(n>>8&255)+28*(n&255),s>k&&(h=o,k=s),q>k&&(h=j,k=q),x>k&&(h=p,k=x),r>k&&(h=n),e[c++]=h}b.pixels.set(e)};c.filter=function(a,b,f){var h,e,g,i;arguments.length===3?(f.loadPixels(),h=f):(c.loadPixels(),h=c);b===p&&(b=null);if(h.isRemote)throw"Image is loaded remotely. Cannot filter image.";else{var k=h.pixels.getLength(); switch(a){case d.BLUR:var l=b||1,j=h,o,q,n,s,x,t,r,u,y;g=j.pixels.getLength();i=new G(g);k=new G(g);e=new G(g);g=new G(g);var z=0,v,A,D,l=c.floor(l*3.5),w,l=l<1?1:l<248?l:248;if(c.shared.blurRadius!==l){c.shared.blurRadius=l;c.shared.blurKernelSize=1+(c.shared.blurRadius<<1);c.shared.blurKernel=new G(c.shared.blurKernelSize);var C=c.shared.blurKernel,H=c.shared.blurKernelSize;for(w=0;w=w)break;x=0}for(D=x;D=w)break;r=(t+z)*4;x=H[D];s+=x*B[r+3];o+=x*B[r];q+=x*B[r+1];n+=x*B[r+2];j+=x;t++}r=z+v;g[r]=s/j;i[r]=o/j;k[r]=q/j;e[r]=n/j}z+=w}z=0;u=-u;y=u*w;for(A=0;A=l)break;x=0;r=u;t=v+y}for(D=x;D=l)break;x=H[D];s+=x*g[t];o+=x*i[t];q+=x*k[t];n+=x*e[t];j+= x;r++;t+=w}r=(v+z)*4;B[r]=o/j;B[r+1]=q/j;B[r+2]=n/j;B[r+3]=s/j}z+=w;y+=w;u++}break;case d.GRAY:if(h.format===d.ALPHA){for(i=0;i>16&255)+151*(e>>8&255)+28*(e&255)>>8,h.pixels.setPixel(i,e&d.ALPHA_MASK|g<<16|g<<8|g);break;case d.INVERT:for(i=0;i255)throw"Levels must be between 2 and 255 for filter(POSTERIZE, levels)";g=e-1;for(i=0;i>16&255,l=h.pixels.getPixel(i)>>8&255,w=h.pixels.getPixel(i)&255,z=(z*e>>8)*255/g,l=(l*e>>8)*255/g,w=(w*e>>8)*255/g,h.pixels.setPixel(i,4278190080&h.pixels.getPixel(i)|z<<16|l<<8|w);break;case d.OPAQUE:for(i=0;i1)throw"Level must be between 0 and 1 for filter(THRESHOLD, level)"; e=c.floor(b*255);for(i=0;i>16,c.max((h.pixels.getPixel(i)&d.GREEN_MASK)>>8,h.pixels.getPixel(i)&d.BLUE_MASK)),h.pixels.setPixel(i,h.pixels.getPixel(i)&d.ALPHA_MASK|(gc&&(i=c)):(a=c+a-e,i>a&&(i=a));gd&&(k=d)):(b=d+b-g,k>b&&(k=b));return!(i<=0||k<=0)};c.filter_new_scanline=function(){c.shared.sX=c.shared.srcXOffset;c.shared.fracV=c.shared.srcYOffset&d.PREC_MAXVAL;c.shared.ifV=d.PREC_MAXVAL-c.shared.fracV;c.shared.v1=(c.shared.srcYOffset>>d.PRECISIONB)*c.shared.iw;c.shared.v2=j.min((c.shared.srcYOffset>>d.PRECISIONB)+1,c.shared.ih1)* c.shared.iw};c.filter_bilinear=function(){c.shared.fracU=c.shared.sX&d.PREC_MAXVAL;c.shared.ifU=d.PREC_MAXVAL-c.shared.fracU;c.shared.ul=c.shared.ifU*c.shared.ifV>>d.PRECISIONB;c.shared.ll=c.shared.ifU*c.shared.fracV>>d.PRECISIONB;c.shared.ur=c.shared.fracU*c.shared.ifV>>d.PRECISIONB;c.shared.lr=c.shared.fracU*c.shared.fracV>>d.PRECISIONB;c.shared.u1=c.shared.sX>>d.PRECISIONB;c.shared.u2=j.min(c.shared.u1+1,c.shared.iw1);var a=(c.shared.v1+c.shared.u1)*4,b=(c.shared.v1+c.shared.u2)*4,f=(c.shared.v2+ c.shared.u1)*4,h=(c.shared.v2+c.shared.u2)*4;c.shared.cUL=c.color.toInt(c.shared.srcBuffer[a],c.shared.srcBuffer[a+1],c.shared.srcBuffer[a+2],c.shared.srcBuffer[a+3]);c.shared.cUR=c.color.toInt(c.shared.srcBuffer[b],c.shared.srcBuffer[b+1],c.shared.srcBuffer[b+2],c.shared.srcBuffer[b+3]);c.shared.cLL=c.color.toInt(c.shared.srcBuffer[f],c.shared.srcBuffer[f+1],c.shared.srcBuffer[f+2],c.shared.srcBuffer[f+3]);c.shared.cLR=c.color.toInt(c.shared.srcBuffer[h],c.shared.srcBuffer[h+1],c.shared.srcBuffer[h+ 2],c.shared.srcBuffer[h+3]);c.shared.r=c.shared.ul*((c.shared.cUL&d.RED_MASK)>>16)+c.shared.ll*((c.shared.cLL&d.RED_MASK)>>16)+c.shared.ur*((c.shared.cUR&d.RED_MASK)>>16)+c.shared.lr*((c.shared.cLR&d.RED_MASK)>>16)<>>d.PRECISIONB&d.GREEN_MASK;c.shared.b=c.shared.ul*(c.shared.cUL&d.BLUE_MASK)+c.shared.ll* (c.shared.cLL&d.BLUE_MASK)+c.shared.ur*(c.shared.cUR&d.BLUE_MASK)+c.shared.lr*(c.shared.cLR&d.BLUE_MASK)>>>d.PRECISIONB;c.shared.a=c.shared.ul*((c.shared.cUL&d.ALPHA_MASK)>>>24)+c.shared.ll*((c.shared.cLL&d.ALPHA_MASK)>>>24)+c.shared.ur*((c.shared.cUR&d.ALPHA_MASK)>>>24)+c.shared.lr*((c.shared.cLR&d.ALPHA_MASK)>>>24)<=a.width&&(h=a.width-1); e>=a.height&&(e=a.height-1);h-=b;e-=f;p-=l;q-=o;if(!(p<=0||q<=0||h<=0||e<=0||l>=i||o>=k||b>=a.width||f>=a.height))switch(h=j.floor(h/p*d.PRECISIONF),e=j.floor(e/q*d.PRECISIONF),c.shared.srcXOffset=j.floor(l<0?-l*h:b*d.PRECISIONF),c.shared.srcYOffset=j.floor(o<0?-o*e:f*d.PRECISIONF),l<0&&(p+=l,l=0),o<0&&(q+=o,o=0),p=j.min(p,i-l),q=j.min(q,k-o),b=o*i+l,c.shared.srcBuffer=a.imageData.data,c.shared.iw=a.width,c.shared.iw1=a.width-1,c.shared.ih1=a.height-1,n){case d.BLEND:for(f=0;f":return a.greater;case "?":return a.question;case "@":return a.at;case "[":return a.bracketleft;case "\\":return a.backslash;case "]":return a.bracketright;case "^":return a.asciicircum;case "`":return a.grave;case "{":return a.braceleft;case "|":return a.bar;case "}":return a.braceright;case "~":return a.asciitilde;default:return a[b]}}catch(c){y.debug(c)}};w.prototype.text$line=function(a,b,f,j,e){j=j=0;if(W.glyph){j= c.glyphTable[W.name];h.save();h.translate(b,f+N);(e===d.RIGHT||e===d.CENTER)&&j.width(a);b=1/j.units_per_em*N;h.scale(b,b);b=0;for(f=a.length;b0;)b.pop().$self=a};c.extendStaticMembers=function(a,b){ic(a,b)};c.extendInterfaceMembers=function(a,b){ic(a, b)};c.addMethod=function(a,b,c){if(a[b]){var d=c.length,e=a[b];a[b]=function(){return arguments.length===d?c.apply(this,arguments):e.apply(this,arguments)}}else a[b]=c};c.createJavaArray=function(a,b){var d=null;if(typeof b[0]==="number"){var h=0|b[0];if(b.length<=1){d=[];d.length=h;for(var e=0;ej&&(d=j-p);da.height=d/j*100+"%";V.paddingBottom=S.clientHeight+"px"},Ma=[wa(j,"mousemove",function(d){if(pa)La(E.innerHeight-d.clientY),Z.scrollTop=Ca}),wa(j,"mouseup",function(){pa&&(pa=Ca=!1)}),wa(Wa,"dblclick",function(d){d.preventDefault();Ra?(La(Ra),Ra=!1):(Ra=S.clientHeight,da.height="0px")}),wa(Wa,"mousedown",function(d){d.preventDefault();pa=!0;Ca=Z.scrollTop}),wa(Wa,"contextmenu",function(){pa=!1}),wa(Ba,"click",function(){Pa()})];Pa=function(){for(var j=Ma.length;j--;)qa.apply(d, Ma[j]);Q.removeChild(S);V.paddingBottom=Na;ha(Z);ha(S);d.log=va};zb(S,p,Z,t,Wa,y,Ba,u);Ba.title="Close Log";Aa(Ba,j.createTextNode("\u2716"));Wa.title="Double-click to toggle log minimization";Q.insertBefore(S,Q.firstChild);d.log=function(d){Ja===512?Z.removeChild(Z.firstChild):Ja++;var p=Aa(Z,j.createElement("div")),q=Aa(p,j.createElement("div"));p.title=(new Date).toLocaleTimeString();zb(p,G,q,J);Aa(q,j.createTextNode(d));Z.scrollTop=Z.scrollHeight};d.log(B);V.paddingBottom=S.clientHeight+"px"}}(): typeof print==="function"&&(d.log=print);return d}();y.logger=La;y.version="1.2.1";y.lib={};y.registerLibrary=function(d,j){y.lib[d]=j;j.hasOwnProperty("init")&&j.init(Na)};y.instances=ib;y.getInstanceById=function(d){return ib[Lb[d]]};y.Sketch=function(d){this.attachFunction=d;this.options={isTransparent:!1,crispLines:!1,pauseOnBlur:!1,globalKeyEvents:!1};this.params={};this.imageCache={pending:0,images:{},add:function(d){if(va){var j=new Image;j.onload=function(d){return function(){d.pending--}}(this); this.pending++;this.images[d]=j;j.src=d}else this.images[d]=null}};this.fonts={template:function(){if(!va)return null;var d=B.createElement("p");d.style.fontFamily="serif";d.style.fontSize="72px";d.style.visibility="hidden";d.innerHTML="abcmmmmmmmmmmlll";B.getElementsByTagName("body")[0].appendChild(d);return d}(),attempt:0,pending:function(){for(var d=!0,j=0;j=30){d=!0;for(j=0;j "+x);if(J===G)if(u.length===0)try{return new y(d,B.join("\n"))}catch(E){y.logger.log("Unable to execute pjs sketch: "+E)}else y.logger.log("Unable to load pjs sketch files:\n"+u.join("\n"))})}for(var B=[],u=[],G=j.length,J=0,E=0;E