(function(Aa,ja,x,Tc,E){function Ec(v,z){if(v in Aa)return Aa[v];return typeof Aa[z]==="function"?Aa[z]:function(D){if(D instanceof Array)return D;else if(typeof D==="number"){var C=[];C.length=D;return C}}}function qd(v){if(v.constructor===String){for(var z=0,D=0;D<v.length;++D)z=z*31+v.charCodeAt(D)&4294967295;return z}else if(typeof v!=="object")return v&4294967295;else if(v.hashCode instanceof Function)return v.hashCode();else{if(v.$id===E)v.$id=x.floor(x.random()*65536)-32768<<16|x.floor(x.random()*
65536);return v.$id}}function Pb(v,z){return v===null||z===null?v===null&&z===null:v.constructor===String?v===z:typeof v!=="object"?v===z:v.equals instanceof Function?v.equals(z):v===z}function rd(){}function Wd(){var v=["abs","acos","alpha","ambient","ambientLight","append","applyMatrix","arc","arrayCopy","asin","atan","atan2","background","beginCamera","beginDraw","beginShape","bezier","bezierDetail","bezierPoint","bezierTangent","bezierVertex","binary","blend","blendColor","blit_resize","blue",
"box","breakShape","brightness","camera","ceil","Character","color","colorMode","concat","console","constrain","copy","cos","createFont","createGraphics","createImage","cursor","curve","curveDetail","curvePoint","curveTangent","curveTightness","curveVertex","day","defaultColor","degrees","directionalLight","disableContextMenu","dist","draw","ellipse","ellipseMode","emissive","enableContextMenu","endCamera","endDraw","endShape","exit","exp","expand","externals","fill","filter","filter_bilinear","filter_new_scanline",
"floor","focused","frameCount","frameRate","frustum","get","glyphLook","glyphTable","green","height","hex","hint","hour","hue","image","imageMode","Import","intersect","join","key","keyCode","keyPressed","keyReleased","keyTyped","lerp","lerpColor","lightFalloff","lights","lightSpecular","line","link","loadBytes","loadFont","loadGlyphs","loadImage","loadPixels","loadShape","loadStrings","log","loop","mag","map","match","matchAll","max","millis","min","minute","mix","modelX","modelY","modelZ","modes",
"month","mouseButton","mouseClicked","mouseDragged","mouseMoved","mouseOut","mouseOver","mousePressed","mouseReleased","mouseScroll","mouseScrolled","mouseX","mouseY","name","nf","nfc","nfp","nfs","noCursor","noFill","noise","noiseDetail","noiseSeed","noLights","noLoop","norm","normal","noSmooth","noStroke","noTint","ortho","param","parseBoolean","parseByte","parseChar","parseFloat","parseInt","peg","perspective","PFont","PImage","pixels","PMatrix2D","PMatrix3D","PMatrixStack","pmouseX","pmouseY",
"point","pointLight","popMatrix","popStyle","pow","print","printCamera","println","printMatrix","printProjection","PShape","PShapeSVG","pushMatrix","pushStyle","quad","radians","random","Random","randomSeed","rect","rectMode","red","redraw","requestImage","resetMatrix","reverse","rotate","rotateX","rotateY","rotateZ","round","saturation","save","saveFrame","saveStrings","scale","screenX","screenY","screenZ","second","set","setup","shape","shapeMode","shared","shininess","shorten","sin","size","smooth",
"sort","specular","sphere","sphereDetail","splice","split","splitTokens","spotLight","sq","sqrt","status","str","stroke","strokeCap","strokeJoin","strokeWeight","subset","tan","text","textAlign","textAscent","textDescent","textFont","textLeading","textMode","textSize","texture","textureMode","textWidth","tint","touchCancel","touchEnd","touchMove","touchStart","translate","triangle","trim","unbinary","unhex","updatePixels","use3DContext","vertex","width","XMLElement","year","__contains","__equals",
"__frameRate","__hashCode","__int_cast","__instanceof","__keyPressed","__mousePressed","__printStackTrace","__replace","__replaceAll","__replaceFirst","__toCharArray","__split"],z={},D,C;D=0;for(C=v.length;D<C;++D)z[v[D]]=null;for(var N in V.lib)if(V.lib.hasOwnProperty(N))if(V.lib[N].exports){v=V.lib[N].exports;D=0;for(C=v.length;D<C;++D)z[v[D]]=null}return z}function Xd(v){function z(l){var o=/^\s*/.exec(l);if(o[0].length===l.length)l={left:o[0],middle:"",right:""};else{var p=/\s*$/.exec(l);l={left:o[0],
middle:l.substring(o[0].length,p.index),right:p[0]}}l.untrim=function(q){return this.left+q+this.right};return l}function D(l){return l.replace(/^\s+/,"").replace(/\s+$/,"")}function C(l,o){for(var p=0,q=o.length;p<q;++p)l[o[p]]=null;return l}function N(l){for(var o in l)if(l.hasOwnProperty(o))return false;return true}function B(l){return l.substring(2,l.length-1)}function Q(l,o){var p=da.length;da.push(l);return'"'+o+p+'"'}function K(l){l=l.replace(Db,function(o){return Q(o,"E")});l=l.replace(Qb,
function(o){return Q(o,"D")});return l=l.replace(sc,function(o){return Q(o,"H")})}function M(l,o){return l.replace(tc,function(p,q,w){return w!==o?p:Q(p,"G")})}function ga(l){this.name=l}function ra(l){this.params=l}function G(l){var o=D(l.substring(1,l.length-1));l=[];if(o!==""){o=o.split(",");for(var p=0;p<o.length;++p){var q=/\b([A-Za-z_$][\w$]*\b)(\s*"[ABC][\d]*")*\s*$/.exec(o[p]);l.push(new ga(q[1]))}}return new ra(l)}function J(l){function o(w,y,F,S){w=da[S];q=true;w=z(w.substring(1,w.length-
1));return"__"+F+(w.middle===""?Q("("+y.replace(/\.\s*$/,"")+")","B"):Q("("+y.replace(/\.\s*$/,"")+","+w.middle+")","B"))}function p(w,y,F){q=true;return"__instanceof"+Q("("+y+", "+F+")","B")}l=l.replace(/\bnew\s+([A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*)(?:\s*"C\d+")+\s*("A\d+")/g,function(w,y,F){return F});l=l.replace(/\bnew\s+([A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*)(?:\s*"B\d+")\s*("A\d+")/g,function(w){return Q(w,"F")});l=l.replace(sc,function(w){return Q(w,"H")});l=l.replace(/\bnew\s+([A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*)\s*("C\d+"(?:\s*"C\d+")*)/g,
function(w,y,F){w=F.replace(/"C(\d+)"/g,function(S,R){return da[R]}).replace(/\[\s*\]/g,"[null]").replace(/\s*\]\s*\[\s*/g,", ");w="{"+w.substring(1,w.length-1)+"}";y="('"+y+"', "+Q(w,"A")+")";return"$p.createJavaArray"+Q(y,"B")});l=l.replace(/(\.\s*length)\s*"B\d+"/g,"$1");l=l.replace(/#([0-9A-Fa-f]{6})\b/g,function(w,y){return"0xFF"+y});l=l.replace(/"B(\d+)"(\s*(?:[\w$']|"B))/g,function(w,y,F){y=da[y];if(/^\(\s*[A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*\s*(?:"C\d+"\s*)*\)$/.test(y))if(/^\(\s*int\s*\)$/.test(y))return"(int)"+
F;else{y=y.split(/"C(\d+)"/g);if(y.length>1)if(!/^\[\s*\]$/.test(da[y[1]]))return w;return""+F}else return w});l=l.replace(/\(int\)([^,\]\)\}\?\:\*\+\-\/\^\|\%\&\~<\>\=]+)/g,function(w,y){var F=z(y);return F.untrim("__int_cast("+F.middle+")")});l=l.replace(/\bsuper(\s*"B\d+")/g,"$$superCstr$1").replace(/\bsuper(\s*\.)/g,"$$super$1");l=l.replace(/\b0+((\d*)(?:\.[\d*])?(?:[eE][\-\+]?\d+)?[fF]?)\b/,function(w,y,F){if(y===F)return w;return F===""?"0"+y:y});l=l.replace(/\b(\.?\d+\.?)[fF]\b/g,"$1");l=l.replace(/([^\s])%([^=\s])/g,
"$1 % $2");l=l.replace(/\b(frameRate|keyPressed|mousePressed)\b(?!\s*"B)/g,"__$1");l=l.replace(/\b(boolean|byte|char|float|int)\s*"B/g,function(w,y){return"parse"+y.substring(0,1).toUpperCase()+y.substring(1)+'"B'});l=l.replace(/\bpixels\s*(("C(\d+)")|\.length)?(\s*=(?!=)([^,\]\)\}]+))?/g,function(w,y,F,S,R,T){if(F){w=da[S];return R?"pixels.setPixel"+Q("("+w.substring(1,w.length-1)+","+T+")","B"):"pixels.getPixel"+Q("("+w.substring(1,w.length-1)+")","B")}else return y?"pixels.getLength"+Q("()","B"):
R?"pixels.set"+Q("("+T+")","B"):"pixels.toArray"+Q("()","B")});var q;do{q=false;l=l.replace(/((?:'\d+'|\b[A-Za-z_$][\w$]*\s*(?:"[BC]\d+")*)\s*\.\s*(?:[A-Za-z_$][\w$]*\s*(?:"[BC]\d+"\s*)*\.\s*)*)(replace|replaceAll|replaceFirst|contains|equals|hashCode|toCharArray|printStackTrace|split)\s*"B(\d+)"/g,o)}while(q);do{q=false;l=l.replace(/((?:'\d+'|\b[A-Za-z_$][\w$]*\s*(?:"[BC]\d+")*)\s*(?:\.\s*[A-Za-z_$][\w$]*\s*(?:"[BC]\d+"\s*)*)*)instanceof\s+([A-Za-z_$][\w$]*\s*(?:\.\s*[A-Za-z_$][\w$]*)*)/g,p)}while(q);
return l=l.replace(/\bthis(\s*"B\d+")/g,"$$constr$1")}function U(l,o){this.baseInterfaceName=l;this.body=o;o.owner=this}function O(l){var o=RegExp(/\bnew\s*([A-Za-z_$][\w$]*\s*(?:\.\s*[A-Za-z_$][\w$]*)*)\s*"B\d+"\s*"A(\d+)"/).exec(l);l=Oa;var p="class"+ ++gb;Oa=p;var q=o[1]+"$"+p;o=new U(q,Eb(da[o[2]],q,"","implements "+o[1]));o.classId=p;o.scopeId=l;Ia[p]=o;Oa=l;return o}function qa(l,o,p){this.name=l;this.params=o;this.body=p}function Pa(l){l=RegExp(/\b([A-Za-z_$][\w$]*)\s*"B(\d+)"\s*"A(\d+)"/).exec(l);
return new qa(l[1]!=="function"?l[1]:null,G(da[l[2]]),qb(da[l[3]]))}function na(l){this.members=l}function va(l){l=l.split(",");for(var o=0;o<l.length;++o){var p=l[o].indexOf(":");l[o]=p<0?{value:Ua(l[o])}:{label:D(l[o].substring(0,p)),value:Ua(D(l[o].substring(p+1)))}}return new na(l)}function Ea(l){if(l.charAt(0)==="("||l.charAt(0)==="[")return l.charAt(0)+Ea(l.substring(1,l.length-1))+l.charAt(l.length-1);else if(l.charAt(0)==="{")return/^\{\s*(?:[A-Za-z_$][\w$]*|'\d+')\s*:/.test(l)?"{"+Q(l.substring(1,
l.length-1),"I")+"}":"["+Ea(l.substring(1,l.length-1))+"]";else{l=z(l);var o=J(l.middle);o=o.replace(/"[ABC](\d+)"/g,function(p,q){return Ea(da[q])});return l.untrim(o)}}function sa(l){return l.replace(/(\.\s*)?(\b[A-Za-z_$][\w$]*\b)(\s*\.\s*(\b[A-Za-z_$][\w$]*\b)(\s*\()?)?/g,function(o,p,q,w,y,F){return p?o:la({name:q,member:y,callSign:!!F})+(w===E?"":w)})}function La(l,o){this.expr=l;this.transforms=o}function mb(l,o,p){this.name=l;this.value=o;this.isDefault=p}function Ka(l,o){var p=l.indexOf("="),
q,w;if(p<0){q=l;p=o;w=true}else{q=l.substring(0,p);p=Ua(l.substring(p+1));w=false}return new mb(D(q.replace(/(\s*"C\d+")+/g,"")),p,w)}function $a(l){return l==="int"||l==="float"?"0":l==="boolean"?"false":l==="color"?"0x00000000":"null"}function ab(l,o){this.definitions=l;this.varType=o}function hb(l){this.expression=l}function Qa(l){if(wa.test(l)){var o=Zb.exec(l);l=l.substring(o[0].length).split(",");for(var p=$a(o[2]),q=0;q<l.length;++q)l[q]=Ka(l[q],p);return new ab(l,o[2])}else return new hb(Ua(l))}
function Fb(l,o,p){this.initStatement=l;this.condition=o;this.step=p}function Gb(l,o){this.initStatement=l;this.container=o}function rb(l,o){this.initStatement=l;this.container=o}function ya(l){if(/\bin\b/.test(l)){l=l.substring(1,l.length-1).split(/\bin\b/g);return new Gb(Qa(D(l[0])),Ua(l[1]))}else if(l.indexOf(":")>=0&&l.indexOf(";")<0){l=l.substring(1,l.length-1).split(":");return new rb(Qa(D(l[0])),Ua(l[1]))}else{l=l.substring(1,l.length-1).split(";");return new Fb(Qa(D(l[0])),Ua(l[1]),Ua(l[2]))}}
function W(l){l.sort(function(o,p){return p.weight-o.weight})}function bb(l,o,p){this.name=l;this.body=o;this.isStatic=p;o.owner=this}function Ba(l,o,p){this.name=l;this.body=o;this.isStatic=p;o.owner=this}function Fc(l){var o=Db.exec(l);Db.lastIndex=0;var p=o[1].indexOf("static")>=0,q=da[B(o[6])];l=Oa;var w="class"+ ++gb;Oa=w;o=o[2]==="interface"?new bb(o[3],Rb(q,o[3],o[4]),p):new Ba(o[3],Eb(q,o[3],o[4],o[5]),p);o.classId=w;o.scopeId=l;Ia[w]=o;Oa=l;return o}function uc(l,o,p,q){this.name=l;this.params=
o;this.body=p;this.isStatic=q}function Sb(l){l=Qb.exec(l);Qb.lastIndex=0;var o=l[1].indexOf("static")>=0,p=l[6]!==";"?da[B(l[6])]:"{}";return new uc(l[3],G(da[B(l[4])]),qb(p),o)}function Hb(l,o,p){this.definitions=l;this.fieldType=o;this.isStatic=p}function vc(l){var o=Zb.exec(l),p=o[1].indexOf("static")>=0;l=l.substring(o[0].length).split(/,\s*/g);for(var q=$a(o[2]),w=0;w<l.length;++w)l[w]=Ka(l[w],q);return new Hb(l,o[2],p)}function wc(l,o){this.params=l;this.body=o}function xc(l){l=RegExp(/"B(\d+)"\s*"A(\d+)"/).exec(l);
var o=G(da[l[1]]);return new wc(o,qb(da[l[2]]))}function $b(l,o,p,q,w,y){this.name=l;this.interfacesNames=o;this.methodsNames=p;this.fields=q;this.innerClasses=w;this.misc=y;l=0;for(o=q.length;l<o;++l)q[l].owner=this}function ac(l,o,p,q,w,y,F,S,R){this.name=l;this.baseClassName=o;this.interfacesNames=p;this.functions=q;this.methods=w;this.fields=y;this.cstrs=F;this.innerClasses=S;this.misc=R;l=0;for(o=y.length;l<o;++l)y[l].owner=this}function bc(l,o){this.name=l;this.body=o;o.owner=this}function cc(l,
o){this.name=l;this.body=o;o.owner=this}function Uc(l){var o=Db.exec(l);Db.lastIndex=0;var p=da[B(o[6])];l=Oa;var q="class"+ ++gb;Oa=q;o=o[2]==="interface"?new bc(o[3],Rb(p,o[3],o[4])):new cc(o[3],Eb(p,o[3],o[4],o[5]));o.classId=q;o.scopeId=l;Ia[q]=o;Oa=l;return o}function d(l,o,p){this.name=l;this.params=o;this.body=p}function Ib(l){l=Qb.exec(l);Qb.lastIndex=0;return new d(l[3],G(da[B(l[4])]),qb(da[B(l[6])]))}function m(l,o){this.argument=l;this.misc=o}function Ca(l,o){this.argument=l;this.misc=
o}function Ja(l,o,p){this.name=l;this.argument=o;this.misc=p}function ma(l){this.expr=l}function Ra(l){this.label=l}function ib(l){for(var o=[],p=0,q=l.length;p<q;++p){var w=l[p];if(w instanceof ab)o=o.concat(w.getNames());else if(w instanceof m&&w.argument.initStatement instanceof ab)o=o.concat(w.argument.initStatement.getNames());else if(w instanceof bb||w instanceof Ba||w instanceof bc||w instanceof cc||w instanceof d||w instanceof qa)o.push(w.name)}return C({},o)}function jb(l){this.statements=
l}function ea(l){this.statements=l}var Sa=Wd(),Fa=[],Jb;v=v.replace(/\r\n?|\n\r/g,"\n").replace(/("(?:[^"\\\n]|\\.)*")|('(?:[^'\\\n]|\\.)*')|(([\[\(=|&!\^:?]\s*)(\/(?![*\/])(?:[^\/\\\n]|\\.)*\/[gim]*)\b)|(\/\/[^\n]*\n)|(\/\*(?:(?!\*\/)(?:.|\n))*\*\/)/g,function(l,o,p,q,w,y,F,S){if(o||p){o=Fa.length;Fa.push(l);return"'"+o+"'"}else if(q){o=Fa.length;Fa.push(y);return w+"'"+o+"'"}else return S!==""?" ":"\n"});var Ma=function(l,o,p,q){if(o||q)return l;Jb=true;return""};do{Jb=false;v=v.replace(/([<]?)<\s*((?:\?|[A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*)(?:\s+(?:extends|super)\s+[A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*)?(?:\s*,\s*(?:\?|[A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*)(?:\s+(?:extends|super)\s+[A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*)?)*)\s*>([=]?)/g,
Ma)}while(Jb);var da=function(l){var o=[];l=l.split(/([\{\[\(\)\]\}])/);for(var p=l[0],q=[],w=1;w<l.length;w+=2){var y=l[w];if(y==="["||y==="{"||y==="("){q.push(p);p=y}else if(y==="]"||y==="}"||y===")"){var F=y==="}"?"A":y===")"?"B":"C",S=o.length;o.push(p+y);p=q.pop()+'"'+F+(S+1)+'"'}p+=l[w+1]}o.unshift(p);return o}(v),la,Ia={},Oa,gb=0,Eb,Rb,qb,Kb,Ua,Db=/\b((?:(?:public|private|final|protected|static|abstract)\s+)*)(class|interface)\s+([A-Za-z_$][\w$]*\b)(\s+extends\s+[A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*(?:\s*,\s*[A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*\b)*)?(\s+implements\s+[A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*(?:\s*,\s*[A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*\b)*)?\s*("A\d+")/g,
Qb=/\b((?:(?:public|private|final|protected|static|abstract|synchronized)\s+)*)((?!(?:else|new|return|throw|function|public|private|protected)\b)[A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*(?:\s*"C\d+")*)\s*([A-Za-z_$][\w$]*\b)\s*("B\d+")(\s*throws\s+[A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*(?:\s*,\s*[A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*)*)?\s*("A\d+"|;)/g,wa=/^((?:(?:public|private|final|protected|static)\s+)*)((?!(?:else|new|return|throw)\b)[A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*(?:\s*"C\d+")*)\s*([A-Za-z_$][\w$]*\b)\s*(?:"C\d+"\s*)*([=,]|$)/,
tc=/\b((?:(?:public|private|final|protected|static|abstract)\s+)*)((?!(?:new|return|throw)\b)[A-Za-z_$][\w$]*\b)\s*("B\d+")(\s*throws\s+[A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*(?:\s*,\s*[A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*)*)?\s*("A\d+")/g,Zb=/^((?:(?:public|private|final|protected|static)\s+)*)((?!(?:new|return|throw)\b)[A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*(?:\s*"C\d+")*)\s*/,sc=/\bfunction(?:\s+([A-Za-z_$][\w$]*))?\s*("B\d+")\s*("A\d+")/g;ga.prototype.toString=
function(){return this.name};ra.prototype.getNames=function(){for(var l=[],o=0,p=this.params.length;o<p;++o)l.push(this.params[o].name);return l};ra.prototype.toString=function(){if(this.params.length===0)return"()";for(var l="(",o=0,p=this.params.length;o<p;++o)l+=this.params[o]+", ";return l.substring(0,l.length-2)+")"};U.prototype.toString=function(){return"new ("+this.body+")"};qa.prototype.toString=function(){var l=la,o=C({"this":null},this.params.getNames());la=function(q){return o.hasOwnProperty(q.name)?
q.name:l(q)};var p="function";if(this.name)p+=" "+this.name;p+=this.params+" "+this.body;la=l;return p};na.prototype.toString=function(){var l=la;la=function(w){return w.name==="this"?"this":l(w)};for(var o="",p=0,q=this.members.length;p<q;++p){if(this.members[p].label)o+=this.members[p].label+": ";o+=this.members[p].value.toString()+", "}la=l;return o.substring(0,o.length-2)};La.prototype.toString=function(){var l=this.transforms;return sa(this.expr).replace(/"!(\d+)"/g,function(o,p){return l[p].toString()})};
Ua=function(l){var o=[];l=Ea(l);l=l.replace(/"H(\d+)"/g,function(p,q){o.push(Pa(da[q]));return'"!'+(o.length-1)+'"'});l=l.replace(/"F(\d+)"/g,function(p,q){o.push(O(da[q]));return'"!'+(o.length-1)+'"'});l=l.replace(/"I(\d+)"/g,function(p,q){o.push(va(da[q]));return'"!'+(o.length-1)+'"'});return new La(l,o)};mb.prototype.toString=function(){return this.name+" = "+this.value};ab.prototype.getNames=function(){for(var l=[],o=0,p=this.definitions.length;o<p;++o)l.push(this.definitions[o].name);return l};
ab.prototype.toString=function(){return"var "+this.definitions.join(",")};hb.prototype.toString=function(){return this.expression.toString()};Fb.prototype.toString=function(){return"("+this.initStatement+"; "+this.condition+"; "+this.step+")"};Gb.prototype.toString=function(){var l=this.initStatement.toString();if(l.indexOf("=")>=0)l=l.substring(0,l.indexOf("="));return"("+l+" in "+this.container+")"};rb.iteratorId=0;rb.prototype.toString=function(){var l=this.initStatement.toString(),o="$it"+rb.iteratorId++;
l=l.replace(/^\s*var\s*/,"").split("=")[0];return"("+("var "+o+" = new $p.ObjectIterator("+this.container+"), "+l+" = void(0)")+"; "+(o+".hasNext() && (("+l+" = "+o+".next()) || true)")+";)"};bb.prototype.toString=function(){return""+this.body};Ba.prototype.toString=function(){return""+this.body};uc.prototype.toString=function(){var l=C({},this.params.getNames()),o=la;la=function(q){return l.hasOwnProperty(q.name)?q.name:o(q)};var p="function "+this.methodId+this.params+" "+this.body+"\n";la=o;return p};
Hb.prototype.getNames=function(){for(var l=[],o=0,p=this.definitions.length;o<p;++o)l.push(this.definitions[o].name);return l};Hb.prototype.toString=function(){var l=la({name:"[this]"});if(this.isStatic){for(var o=this.owner.name,p=[],q=0,w=this.definitions.length;q<w;++q){var y=this.definitions[q],F=y.name,S=o+"."+F;p.push("if("+S+" === void(0)) {\n "+S+" = "+y.value+"; }\n$p.defineProperty("+l+", '"+F+"', { get: function(){return "+S+";}, set: function(val){"+S+" = val;} });\n")}return p.join("")}else return l+
"."+this.definitions.join("; "+l+".")};wc.prototype.toString=function(){var l=C({},this.params.getNames()),o=la;la=function(w){return l.hasOwnProperty(w.name)?w.name:o(w)};var p="function $constr_"+this.params.params.length+this.params.toString(),q=this.body.toString();/\$(superCstr|constr)\b/.test(q)||(q="{\n$superCstr();\n"+q.substring(1));la=o;return p+q+"\n"};$b.prototype.getMembers=function(l,o,p){this.owner.base&&this.owner.base.body.getMembers(l,o,p);var q,w,y,F;q=0;for(y=this.fields.length;q<
y;++q){var S=this.fields[q].getNames();w=0;for(F=S.length;w<F;++w)l[S[w]]=this.fields[q]}q=0;for(y=this.methodsNames.length;q<y;++q)o[this.methodsNames[q]]=true;q=0;for(y=this.innerClasses.length;q<y;++q){l=this.innerClasses[q];p[l.name]=l}};$b.prototype.toString=function(){(function(S){for(var R=0;S;){++R;S=S.scope}return R})(this.owner);var l=this.name,o="",p="";this.getMembers({},{},{});var q,w;if(this.owner.interfaces){var y=[],F;q=0;for(w=this.interfacesNames.length;q<w;++q)if(this.owner.interfaces[q]){F=
la({name:this.interfacesNames[q]});y.push(F);o+="$p.extendInterfaceMembers("+l+", "+F+");\n"}p+=l+".$interfaces = ["+y.join(", ")+"];\n"}p+=l+".$isInterface = true;\n";p+=l+".$methods = ['"+this.methodsNames.join("', '")+"'];\n";W(this.innerClasses);q=0;for(w=this.innerClasses.length;q<w;++q){y=this.innerClasses[q];if(y.isStatic)o+=l+"."+y.name+" = "+y+";\n"}q=0;for(w=this.fields.length;q<w;++q){y=this.fields[q];if(y.isStatic)o+=l+"."+y.definitions.join(";\n"+l+".")+";\n"}return"(function() {\nfunction "+
l+"() { throw 'Unable to create the interface'; }\n"+o+p+"return "+l+";\n})()"};Rb=function(l,o,p){l=l.substring(1,l.length-1);l=K(l);l=M(l,o);var q=[],w=[];l=l.replace(/"([DE])(\d+)"/g,function(R,T,za){if(T==="D")q.push(za);else T==="E"&&w.push(za);return""});l=l.split(/;(?:\s*;)*/g);var y,F;if(p!==E)y=p.replace(/^\s*extends\s+(.+?)\s*$/g,"$1").split(/\s*,\s*/g);p=0;for(F=q.length;p<F;++p){var S=Sb(da[q[p]]);q[p]=S.name}p=0;for(F=l.length-1;p<F;++p){S=z(l[p]);l[p]=vc(S.middle)}S=l.pop();p=0;for(F=
w.length;p<F;++p)w[p]=Fc(da[w[p]]);return new $b(o,y,q,l,w,{tail:S})};ac.prototype.getMembers=function(l,o,p){this.owner.base&&this.owner.base.body.getMembers(l,o,p);var q,w,y,F;q=0;for(y=this.fields.length;q<y;++q){var S=this.fields[q].getNames();w=0;for(F=S.length;w<F;++w)l[S[w]]=this.fields[q]}q=0;for(y=this.methods.length;q<y;++q){l=this.methods[q];o[l.name]=l}q=0;for(y=this.innerClasses.length;q<y;++q){o=this.innerClasses[q];p[o.name]=o}};ac.prototype.toString=function(){var l="$this_"+function(cb){for(var Ha=
0;cb;){++Ha;cb=cb.scope}return Ha}(this.owner),o=this.name,p="var "+l+" = this;\n",q="",w="",y={},F={},S={};this.getMembers(y,F,S);var R=la;la=function(cb){var Ha=cb.name;if(Ha==="this")return cb.callSign||!cb.member?l+".$self":l;else if(y.hasOwnProperty(Ha))return y[Ha].isStatic?o+"."+Ha:l+"."+Ha;else if(S.hasOwnProperty(Ha))return l+"."+Ha;else if(F.hasOwnProperty(Ha))return F[Ha].isStatic?o+"."+Ha:l+".$self."+Ha;return R(cb)};var T;if(this.baseClassName){T=R({name:this.baseClassName});p+="var $super = { $upcast: "+
l+" };\n";p+="function $superCstr(){"+T+".apply($super,arguments);if(!('$self' in $super)) $p.extendClassChain($super)}\n";w+=o+".$base = "+T+";\n"}else p+="function $superCstr(){$p.extendClassChain("+l+")}\n";if(this.owner.base)q+="$p.extendStaticMembers("+o+", "+T+");\n";var za,ka,ha;if(this.owner.interfaces){ka=[];T=0;for(za=this.interfacesNames.length;T<za;++T)if(this.owner.interfaces[T]){ha=R({name:this.interfacesNames[T]});ka.push(ha);q+="$p.extendInterfaceMembers("+o+", "+ha+");\n"}w+=o+".$interfaces = ["+
ka.join(", ")+"];\n"}if(this.functions.length>0)p+=this.functions.join("\n")+"\n";W(this.innerClasses);T=0;for(za=this.innerClasses.length;T<za;++T){ka=this.innerClasses[T];if(ka.isStatic){q+=o+"."+ka.name+" = "+ka+";\n";p+=l+"."+ka.name+" = "+o+"."+ka.name+";\n"}else p+=l+"."+ka.name+" = "+ka+";\n"}T=0;for(za=this.fields.length;T<za;++T){var Da=this.fields[T];if(Da.isStatic){q+=o+"."+Da.definitions.join(";\n"+o+".")+";\n";ka=0;for(ha=Da.definitions.length;ka<ha;++ka){var Ga=Da.definitions[ka].name,
Lb=o+"."+Ga;p+="$p.defineProperty("+l+", '"+Ga+"', {get: function(){return "+Lb+"}, set: function(val){"+Lb+" = val}});\n"}}else p+=l+"."+Da.definitions.join(";\n"+l+".")+";\n"}ka={};T=0;for(za=this.methods.length;T<za;++T){ha=this.methods[T];Da=ka[ha.name];Ga=ha.name+"$"+ha.params.params.length;if(Da){++Da;Ga+="_"+Da}else Da=1;ha.methodId=Ga;ka[ha.name]=Da;if(ha.isStatic){q+=ha;q+="$p.addMethod("+o+", '"+ha.name+"', "+Ga+");\n"}else p+=ha;p+="$p.addMethod("+l+", '"+ha.name+"', "+Ga+");\n"}p+=D(this.misc.tail);
if(this.cstrs.length>0)p+=this.cstrs.join("\n")+"\n";p+="function $constr() {\n";ka=[];T=0;for(za=this.cstrs.length;T<za;++T){ha=this.cstrs[T].params.params.length;ka.push("if(arguments.length === "+ha+") { $constr_"+ha+".apply("+l+", arguments); }")}if(ka.length>0)p+=ka.join(" else ")+" else ";p+="$superCstr();\n}\n";p+="$constr.apply(null, arguments);\n";la=R;return"(function() {\nfunction "+o+"() {\n"+p+"}\n"+q+w+"return "+o+";\n})()"};Eb=function(l,o,p,q){l=l.substring(1,l.length-1);l=K(l);l=
M(l,o);var w=[],y=[],F=[],S=[];l=l.replace(/"([DEGH])(\d+)"/g,function(za,ka,ha){if(ka==="D")w.push(ha);else if(ka==="E")y.push(ha);else ka==="H"?S.push(ha):F.push(ha);return""});l=l.replace(/^(?:\s*;)+/,"").split(/;(?:\s*;)*/g);var R,T;if(p!==E)R=p.replace(/^\s*extends\s+([A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*)\s*$/g,"$1");if(q!==E)T=q.replace(/^\s*implements\s+(.+?)\s*$/g,"$1").split(/\s*,\s*/g);for(p=0;p<S.length;++p)S[p]=Pa(da[S[p]]);for(p=0;p<w.length;++p)w[p]=Sb(da[w[p]]);for(p=0;p<
l.length-1;++p){q=z(l[p]);l[p]=vc(q.middle)}q=l.pop();for(p=0;p<F.length;++p)F[p]=xc(da[F[p]]);for(p=0;p<y.length;++p)y[p]=Fc(da[y[p]]);return new ac(o,R,T,S,w,l,F,y,{tail:q})};bc.prototype.toString=function(){return"var "+this.name+" = "+this.body+";\n$p."+this.name+" = "+this.name+";\n"};cc.prototype.toString=function(){return"var "+this.name+" = "+this.body+";\n$p."+this.name+" = "+this.name+";\n"};d.prototype.toString=function(){var l=C({},this.params.getNames()),o=la;la=function(q){return l.hasOwnProperty(q.name)?
q.name:o(q)};var p="function "+this.name+this.params+" "+this.body+"\n$p."+this.name+" = "+this.name+";";la=o;return p};m.prototype.toString=function(){return this.misc.prefix+this.argument.toString()};Ca.prototype.toString=function(){return this.misc.prefix+this.argument.toString()};Ja.prototype.toString=function(){var l=this.misc.prefix;if(this.argument!==E)l+=this.argument.toString();return l};ma.prototype.toString=function(){return"case "+this.expr+":"};Ra.prototype.toString=function(){return this.label};
Kb=function(l,o,p){var q=RegExp(/\b(catch|for|if|switch|while|with)\s*"B(\d+)"|\b(do|else|finally|return|throw|try|break|continue)\b|("[ADEH](\d+)")|\b(case)\s+([^:]+):|\b([A-Za-z_$][\w$]*\s*:)|(;)/g),w=[];l=l.replace(/\b(catch\s*"B\d+"\s*"A\d+")(\s*catch\s*"B\d+"\s*"A\d+")+/g,"$1");for(var y=0,F,S;(F=q.exec(l))!==null;){if(F[1]!==E){S=l.lastIndexOf('"B',q.lastIndex);y=l.substring(y,S);if(F[1]==="for")w.push(new m(ya(da[F[2]]),{prefix:y}));else F[1]==="catch"?w.push(new Ca(G(da[F[2]]),{prefix:y})):
w.push(new Ja(F[1],Ua(da[F[2]]),{prefix:y}))}else if(F[3]!==E)w.push(new Ja(F[3],E,{prefix:l.substring(y,q.lastIndex)}));else if(F[4]!==E){S=l.substring(y,q.lastIndex-F[4].length);if(D(S).length!==0)continue;w.push(S);y=F[4].charAt(1);F=F[5];if(y==="D")w.push(o(da[F]));else if(y==="E")w.push(p(da[F]));else y==="H"?w.push(Pa(da[F])):w.push(qb(da[F]))}else if(F[6]!==E)w.push(new ma(Ua(D(F[7]))));else if(F[8]!==E){S=l.substring(y,q.lastIndex-F[8].length);if(D(S).length!==0)continue;w.push(new Ra(l.substring(y,
q.lastIndex)))}else{F=z(l.substring(y,q.lastIndex-1));w.push(F.left);w.push(Qa(F.middle));w.push(F.right+";")}y=q.lastIndex}o=z(l.substring(y));w.push(o.left);if(o.middle!==""){w.push(Qa(o.middle));w.push(";"+o.right)}return w};jb.prototype.toString=function(){var l=ib(this.statements),o=la;N(l)||(la=function(q){return l.hasOwnProperty(q.name)?q.name:o(q)});var p="{\n"+this.statements.join("")+"\n}";la=o;return p};qb=function(l){l=z(l.substring(1,l.length-1));return new jb(Kb(l.middle))};ea.prototype.toString=
function(){for(var l=[],o=[],p,q=0,w=this.statements.length;q<w;++q){p=this.statements[q];p instanceof cc||p instanceof bc?l.push(p):o.push(p)}W(l);var y=ib(this.statements);la=function(F){F=F.name;if(!y.hasOwnProperty(F))if(Sa.hasOwnProperty(F)||k.hasOwnProperty(F)||Mb.hasOwnProperty(F))return"$p."+F;return F};l="// this code was autogenerated from PJS\n(function($p) {\n"+l.join("")+"\n"+o.join("")+"\n})";la=null;return l};v=function(){var l=K(da[0]);l=l.replace(/\bimport\s+[^;]+;/g,"");return new ea(Kb(l,
Ib,Uc))}();(function(){function l(T,za){for(var ka=za.split("."),ha=T.scope,Da;ha;){if(ha.hasOwnProperty(ka[0])){Da=ha[ka[0]];break}ha=ha.scope}if(Da===E)Da=o[ka[0]];ha=1;for(var Ga=ka.length;ha<Ga&&Da;++ha)Da=Da.inScope[ka[ha]];return Da}var o={},p,q;for(p in Ia)if(Ia.hasOwnProperty(p)){q=Ia[p];var w=q.scopeId,y=q.name;if(w){w=Ia[w];q.scope=w;if(w.inScope===E)w.inScope={};w.inScope[y]=q}else o[y]=q}for(p in Ia)if(Ia.hasOwnProperty(p)){q=Ia[p];if(y=q.body.baseClassName)if(y=l(q,y)){q.base=y;if(!y.derived)y.derived=
[];y.derived.push(q)}y=q.body.interfacesNames;w=[];var F,S;if(y&&y.length>0){F=0;for(S=y.length;F<S;++F){var R=l(q,y[F]);w.push(R);if(R){if(!R.derived)R.derived=[];R.derived.push(q)}}if(w.length>0)q.interfaces=w}}})(v);(function(){var l=[],o={},p,q;for(p in Ia)if(Ia.hasOwnProperty(p)){q=Ia[p];if(!q.inScope&&!q.derived){l.push(p);o[p]=true;q.weight=0}}for(;l.length>0;){p=l.shift();q=Ia[p];if(q.scopeId&&!o[q.scopeId]){l.push(q.scopeId);o[q.scopeId]=true;Ia[q.scopeId].weight=q.weight+1}if(q.base&&!o[q.base.classId]){l.push(q.base.classId);
o[q.base.classId]=true;q.base.weight=q.weight+1}if(q.interfaces){var w;p=0;for(w=q.interfaces.length;p<w;++p)if(!(!q.interfaces[p]||o[q.interfaces[p].classId])){l.push(q.interfaces[p].classId);o[q.interfaces[p].classId]=true;q.interfaces[p].weight=q.weight+1}}}})(v);v=v.toString();v=v.replace(/\s*\n(?:[\t ]*\n)+/g,"\n\n");return function(l,o){return l.replace(/'(\d+)'/g,function(p,q){var w=o[q];return w.charAt(0)==="/"?w:/^'((?:[^'\\\n])|(?:\\.[0-9A-Fa-f]*))'$/.test(w)?"(new $p.Character("+w+"))":
w})}(v,Fa)}function Yd(v,z){var D=RegExp(/\/\*\s*@pjs\s+((?:[^\*]|\*+[^\*\/])*)\*\//g).exec(v);if(D&&D.length===2){var C=[];D=D.splice(1,2)[0].replace(/\{([\s\S]*?)\}/g,function(){return function(J,U){C.push(U);return"{"+(C.length-1)+"}"}}()).replace("\n","").replace("\r","").split(";");for(var N=function(J){return J.replace(/^\s*["']?/,"").replace(/["']?\s*$/,"")},B=0,Q=D.length;B<Q;B++){var K=D[B].split("=");if(K&&K.length===2){var M=N(K[0]),ga=N(K[1]);K=[];if(M==="preload"){K=ga.split(",");M=0;
for(ga=K.length;M<ga;M++){var ra=N(K[M]);z.imageCache.add(ra)}}else if(M==="transparent")z.options.isTransparent=ga==="true";else if(M==="font"){K=ga.split(",");M=0;for(ga=K.length;M<ga;M++){ra=N(K[M]);var G=/^\{(\d*?)\}$/.exec(ra);z.fonts.add(G?JSON.parse("{"+C[G[1]]+"}"):ra)}}else if(M==="crisp")z.options.crispLines=ga==="true";else if(M==="pauseOnBlur")z.options.pauseOnBlur=ga==="true";else if(M==="globalKeyEvents")z.options.globalKeyEvents=ga==="true";else if(M.substring(0,6)==="param-")z.params[M.substring(6)]=
ga;else z.options[M]=ga}}}return v}var Vc=function(){return"console"in Aa?function(v){Aa.console.log("Processing.js: "+v)}:Tc()}(),Wc=function(v){var z=new XMLHttpRequest;z.open("GET",v,false);z.overrideMimeType&&z.overrideMimeType("text/plain");z.setRequestHeader("If-Modified-Since","Fri, 01 Jan 1960 00:00:00 GMT");z.send(null);if(z.status!==200&&z.status!==0)throw"XMLHttpRequest failed, status code "+z.status;return z.responseText},dc="document"in this&&!("fake"in this.document);(function(){try{if(!("createImageData"in
CanvasRenderingContext2D.prototype))CanvasRenderingContext2D.prototype.createImageData=function(z,D){return new ImageData(z,D)}}catch(v){}})();var ua=Ec("Float32Array","WebGLFloatArray"),Zd=Ec("Int32Array","WebGLIntArray"),$d=Ec("Uint16Array","WebGLUnsignedShortArray"),sd=Ec("Uint8Array","WebGLUnsignedByteArray"),k={X:0,Y:1,Z:2,R:3,G:4,B:5,A:6,U:7,V:8,NX:9,NY:10,NZ:11,EDGE:12,SR:13,SG:14,SB:15,SA:16,SW:17,TX:18,TY:19,TZ:20,VX:21,VY:22,VZ:23,VW:24,AR:25,AG:26,AB:27,DR:3,DG:4,DB:5,DA:6,SPR:28,SPG:29,
SPB:30,SHINE:31,ER:32,EG:33,EB:34,BEEN_LIT:35,VERTEX_FIELD_COUNT:36,P2D:1,JAVA2D:1,WEBGL:2,P3D:2,OPENGL:2,PDF:0,DXF:0,OTHER:0,WINDOWS:1,MAXOSX:2,LINUX:3,EPSILON:1.0E-4,MAX_FLOAT:3.4028235E38,MIN_FLOAT:-3.4028235E38,MAX_INT:2147483647,MIN_INT:-2147483648,PI:x.PI,TWO_PI:2*x.PI,HALF_PI:x.PI/2,THIRD_PI:x.PI/3,QUARTER_PI:x.PI/4,DEG_TO_RAD:x.PI/180,RAD_TO_DEG:180/x.PI,WHITESPACE:" \t\n\r\u000c\u00a0",RGB:1,ARGB:2,HSB:3,ALPHA:4,CMYK:5,TIFF:0,TARGA:1,JPEG:2,GIF:3,BLUR:11,GRAY:12,INVERT:13,OPAQUE:14,POSTERIZE:15,
THRESHOLD:16,ERODE:17,DILATE:18,REPLACE:0,BLEND:1,ADD:2,SUBTRACT:4,LIGHTEST:8,DARKEST:16,DIFFERENCE:32,EXCLUSION:64,MULTIPLY:128,SCREEN:256,OVERLAY:512,HARD_LIGHT:1024,SOFT_LIGHT:2048,DODGE:4096,BURN:8192,ALPHA_MASK:4278190080,RED_MASK:16711680,GREEN_MASK:65280,BLUE_MASK:255,CUSTOM:0,ORTHOGRAPHIC:2,PERSPECTIVE:3,POINT:2,POINTS:2,LINE:4,LINES:4,TRIANGLE:8,TRIANGLES:9,TRIANGLE_STRIP:10,TRIANGLE_FAN:11,QUAD:16,QUADS:16,QUAD_STRIP:17,POLYGON:20,PATH:21,RECT:30,ELLIPSE:31,ARC:32,SPHERE:40,BOX:41,GROUP:0,
PRIMITIVE:1,GEOMETRY:3,VERTEX:0,BEZIER_VERTEX:1,CURVE_VERTEX:2,BREAK:3,CLOSESHAPE:4,OPEN:1,CLOSE:2,CORNER:0,CORNERS:1,RADIUS:2,CENTER_RADIUS:2,CENTER:3,DIAMETER:3,CENTER_DIAMETER:3,BASELINE:0,TOP:101,BOTTOM:102,NORMAL:1,NORMALIZED:1,IMAGE:2,MODEL:4,SHAPE:5,SQUARE:"butt",ROUND:"round",PROJECT:"square",MITER:"miter",BEVEL:"bevel",AMBIENT:0,DIRECTIONAL:1,SPOT:3,BACKSPACE:8,TAB:9,ENTER:10,RETURN:13,ESC:27,DELETE:127,CODED:65535,SHIFT:16,CONTROL:17,ALT:18,CAPSLK:20,PGUP:33,PGDN:34,END:35,HOME:36,LEFT:37,
UP:38,RIGHT:39,DOWN:40,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,NUMLK:144,META:157,INSERT:155,ARROW:"default",CROSS:"crosshair",HAND:"pointer",MOVE:"move",TEXT:"text",WAIT:"wait",NOCURSOR:"url('data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw=='), auto",DISABLE_OPENGL_2X_SMOOTH:1,ENABLE_OPENGL_2X_SMOOTH:-1,ENABLE_OPENGL_4X_SMOOTH:2,ENABLE_NATIVE_FONTS:3,DISABLE_DEPTH_TEST:4,ENABLE_DEPTH_TEST:-4,ENABLE_DEPTH_SORT:5,DISABLE_DEPTH_SORT:-5,
DISABLE_OPENGL_ERROR_REPORT:6,ENABLE_OPENGL_ERROR_REPORT:-6,ENABLE_ACCURATE_TEXTURES:7,DISABLE_ACCURATE_TEXTURES:-7,HINT_COUNT:10,SINCOS_LENGTH:parseInt(720,10),PRECISIONB:15,PRECISIONF:32768,PREC_MAXVAL:32767,PREC_ALPHA_SHIFT:9,PREC_RED_SHIFT:1,NORMAL_MODE_AUTO:0,NORMAL_MODE_SHAPE:1,NORMAL_MODE_VERTEX:2,MAX_LIGHTS:8},Xc=function(v){if(v.iterator instanceof Function)return v.iterator();else if(v instanceof Array){var z=-1;this.hasNext=function(){return++z<v.length};this.next=function(){return v[z]}}else throw"Unable to iterate: "+
v;},ae=function(){function v(D){var C=0;this.hasNext=function(){return C<D.length};this.next=function(){return D[C++]};this.remove=function(){D.splice(C,1)}}function z(){var D;if(arguments.length===0)D=[];else if(arguments.length>0&&typeof arguments[0]!=="number")D=arguments[0];else{D=[];D.length=0|arguments[0]}this.get=function(C){return D[C]};this.contains=function(C){return this.indexOf(C)>-1};this.indexOf=function(C){for(var N=0,B=D.length;N<B;++N)if(Pb(C,D[N]))return N;return-1};this.add=function(){if(arguments.length===
1)D.push(arguments[0]);else if(arguments.length===2){var C=arguments[0];if(typeof C==="number")if(C>=0&&C<=D.length)D.splice(C,0,arguments[1]);else throw C+" is not a valid index";else throw typeof C+" is not a number";}else throw"Please use the proper number of parameters.";};this.addAll=function(C,N){var B;if(typeof C==="number"){if(C<0||C>D.length)throw"Index out of bounds for addAll: "+C+" greater or equal than "+D.length;for(B=new Xc(N);B.hasNext();)D.splice(C++,0,B.next())}else for(B=new Xc(C);B.hasNext();)D.push(B.next())};
this.set=function(){if(arguments.length===2){var C=arguments[0];if(typeof C==="number")if(C>=0&&C<D.length)D.splice(C,1,arguments[1]);else throw C+" is not a valid index.";else throw typeof C+" is not a number";}else throw"Please use the proper number of parameters.";};this.size=function(){return D.length};this.clear=function(){D.length=0};this.remove=function(C){if(typeof C==="number")return D.splice(C,1)[0];else{C=this.indexOf(C);if(C>-1){D.splice(C,1);return true}return false}};this.isEmpty=function(){return!D.length};
this.clone=function(){return new z(D.slice(0))};this.toArray=function(){return D.slice(0)};this.iterator=function(){return new v(D)}}return z}(),be=function(){function v(){function z(G){G=qd(G)%M.length;return G<0?M.length+G:G}function D(){if(!(ga<=K*M.length)){for(var G=[],J=0;J<M.length;++J)if(M[J]!==E)G=G.concat(M[J]);J=M.length*2;M=[];M.length=J;for(J=0;J<G.length;++J){var U=z(G[J].key),O=M[U];if(O===E)M[U]=O=[];O.push(G[J])}}}function C(G,J){function U(){for(;!Pa;){++qa;if(O>=M.length)Pa=true;
else if(M[O]===E||qa>=M[O].length){qa=-1;++O}else break}}var O=0,qa=-1,Pa=false;this.hasNext=function(){return!Pa};this.next=function(){var na=G(M[O][qa]);U();return na};this.remove=function(){J(this.next());--qa};U()}function N(G,J,U){this.clear=function(){ra.clear()};this.contains=function(O){return J(O)};this.containsAll=function(O){for(O=O.iterator();O.hasNext();)if(!this.contains(O.next()))return false;return true};this.isEmpty=function(){return ra.isEmpty()};this.iterator=function(){return new C(G,
U)};this.remove=function(O){if(this.contains(O)){U(O);return true}return false};this.removeAll=function(O){for(O=O.iterator();O.hasNext();){var qa=O.next();this.contains(qa)&&U(qa)}return true};this.retainAll=function(O){for(var qa=this.iterator(),Pa=[];qa.hasNext();){var na=qa.next();O.contains(na)||Pa.push(na)}for(O=0;O<Pa.length;++O)U(Pa[O]);return Pa.length>0};this.size=function(){return ra.size()};this.toArray=function(){for(var O=[],qa=this.iterator();qa.hasNext();)O.push(qa.next());return O}}
function B(G){this._isIn=function(J){return J===ra&&G.removed===E};this.equals=function(J){return Pb(G.key,J.getKey())};this.getKey=function(){return G.key};this.getValue=function(){return G.value};this.hashCode=function(){return qd(G.key)};this.setValue=function(J){var U=G.value;G.value=J;return U}}if(arguments.length===1&&arguments[0].constructor===v)return arguments[0].clone();var Q=arguments.length>0?arguments[0]:16,K=arguments.length>1?arguments[1]:0.75,M=[];M.length=Q;var ga=0,ra=this;this.clear=
function(){ga=0;M=[];M.length=Q};this.clone=function(){var G=new v;G.putAll(this);return G};this.containsKey=function(G){var J=z(G);J=M[J];if(J===E)return false;for(var U=0;U<J.length;++U)if(Pb(J[U].key,G))return true;return false};this.containsValue=function(G){for(var J=0;J<M.length;++J){var U=M[J];if(U!==E)for(var O=0;O<U.length;++O)if(Pb(U[O].value,G))return true}return false};this.entrySet=function(){return new N(function(G){return new B(G)},function(G){return G.constructor===B&&G._isIn(ra)},
function(G){return ra.remove(G.getKey())})};this.get=function(G){var J=z(G);J=M[J];if(J===E)return null;for(var U=0;U<J.length;++U)if(Pb(J[U].key,G))return J[U].value;return null};this.isEmpty=function(){return ga===0};this.keySet=function(){return new N(function(G){return G.key},function(G){return ra.containsKey(G)},function(G){return ra.remove(G)})};this.put=function(G,J){var U=z(G),O=M[U];if(O===E){++ga;M[U]=[{key:G,value:J}];D();return null}for(U=0;U<O.length;++U)if(Pb(O[U].key,G)){var qa=O[U].value;
O[U].value=J;return qa}++ga;O.push({key:G,value:J});D();return null};this.putAll=function(G){for(G=G.entrySet().iterator();G.hasNext();){var J=G.next();this.put(J.getKey(),J.getValue())}};this.remove=function(G){var J=z(G),U=M[J];if(U===E)return null;for(var O=0;O<U.length;++O)if(Pb(U[O].key,G)){--ga;G=U[O].value;U[O].removed=true;if(U.length>1)U.splice(O,1);else M[J]=E;return G}return null};this.size=function(){return ga};this.values=function(){for(var G=[],J=this.entrySet().iterator();J.hasNext();){var U=
J.next();G.push(U.getValue())}return G}}return v}(),Ya=function(){function v(B,Q,K){this.x=B||0;this.y=Q||0;this.z=K||0}function z(B){return function(Q,K){var M=Q.get();M[B](K);return M}}function D(B){return function(Q,K){return Q[B](K)}}var C="dist dot cross".split(" "),N=C.length;v.angleBetween=function(B,Q){return x.acos(B.dot(Q)/(B.mag()*Q.mag()))};for(v.prototype={set:function(B,Q,K){if(arguments.length===1)this.set(B.x||B[0],B.y||B[1],B.z||B[2]);else{this.x=B;this.y=Q;this.z=K}},get:function(){return new v(this.x,
this.y,this.z)},mag:function(){return x.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)},add:function(B,Q,K){if(arguments.length===3){this.x+=B;this.y+=Q;this.z+=K}else if(arguments.length===1){this.x+=B.x;this.y+=B.y;this.z+=B.z}},sub:function(B,Q,K){if(arguments.length===3){this.x-=B;this.y-=Q;this.z-=K}else if(arguments.length===1){this.x-=B.x;this.y-=B.y;this.z-=B.z}},mult:function(B){if(typeof B==="number"){this.x*=B;this.y*=B;this.z*=B}else if(typeof B==="object"){this.x*=B.x;this.y*=B.y;this.z*=
B.z}},div:function(B){if(typeof B==="number"){this.x/=B;this.y/=B;this.z/=B}else if(typeof B==="object"){this.x/=B.x;this.y/=B.y;this.z/=B.z}},dist:function(B){var Q=this.x-B.x,K=this.y-B.y;B=this.z-B.z;return x.sqrt(Q*Q+K*K+B*B)},dot:function(B,Q,K){if(arguments.length===3)return this.x*B+this.y*Q+this.z*K;else if(arguments.length===1)return this.x*B.x+this.y*B.y+this.z*B.z},cross:function(B){return new v(this.y*B.z-B.y*this.z,this.z*B.x-B.z*this.x,this.x*B.y-B.x*this.y)},normalize:function(){var B=
this.mag();B>0&&this.div(B)},limit:function(B){if(this.mag()>B){this.normalize();this.mult(B)}},heading2D:function(){return-x.atan2(-this.y,this.x)},toString:function(){return"["+this.x+", "+this.y+", "+this.z+"]"},array:function(){return[this.x,this.y,this.z]}};N--;)v[C[N]]=D(C[N]);for(N in v.prototype)if(v.prototype.hasOwnProperty(N)&&!v.hasOwnProperty(N))v[N]=z(N);return v}();rd.prototype=k;var Mb=new rd;Mb.ArrayList=ae;Mb.HashMap=be;Mb.PVector=Ya;Mb.ObjectIterator=Xc;var Gc={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"},ec=[],Hc={},V=this.Processing=function(v,z){function D(a){V.debug("Unimplemented - "+a)}function C(a,b,c,e){var f=nb.locations[a];if(f===E){f=m.getUniformLocation(b,c);nb.locations[a]=f}if(f!==-1)if(e.length===4)m.uniform4fv(f,e);else if(e.length===3)m.uniform3fv(f,e);else e.length===2?
m.uniform2fv(f,e):m.uniform1f(f,e)}function N(a,b,c,e){var f=nb.locations[a];if(f===E){f=m.getUniformLocation(b,c);nb.locations[a]=f}if(f!==-1)if(e.length===4)m.uniform4iv(f,e);else if(e.length===3)m.uniform3iv(f,e);else e.length===2?m.uniform2iv(f,e):m.uniform1i(f,e)}function B(a,b,c,e,f){var g=nb.attributes[a];if(g===E){g=m.getAttribLocation(b,c);nb.attributes[a]=g}if(g!==-1){m.bindBuffer(m.ARRAY_BUFFER,f);m.vertexAttribPointer(g,e,m.FLOAT,false,0,0);m.enableVertexAttribArray(g)}}function Q(a,b,
c){var e=nb.attributes[a];if(e===E){e=m.getAttribLocation(b,c);nb.attributes[a]=e}e!==-1&&m.disableVertexAttribArray(e)}function K(a,b,c,e,f){var g=nb.locations[a];if(g===E){g=m.getUniformLocation(b,c);nb.locations[a]=g}if(g!==-1)if(f.length===16)m.uniformMatrix4fv(g,e,f);else f.length===9?m.uniformMatrix3fv(g,e,f):m.uniformMatrix2fv(g,e,f)}function M(a,b,c,e){if(F===k.HSB){c=d.color.toRGB(a,b,c);a=c[0];b=c[1];c=c[2]}else{a=x.round(255*(a/q));b=x.round(255*(b/w));c=x.round(255*(c/y))}e=x.round(255*
(e/p));return(e>255?255:e)<<24&k.ALPHA_MASK|(a>255?255:a)<<16&k.RED_MASK|(b>255?255:b)<<8&k.GREEN_MASK|(c>255?255:c)&k.BLUE_MASK}function ga(){m.restore();jb=Jb=true}function ra(a,b){var c=1;c<<=b-1;for(var e="",f=0;f<b;f++){e+=c&a?"1":"0";c>>>=1}return e}function G(a,b,c,e,f,g){b=a<0?c:b;c=f===0;f=f===E||f<0?0:f;a=x.abs(a);if(c){f=1;for(a*=10;x.abs(x.round(a)-a)>1.0E-6&&f<7;){++f;a*=10}}else if(f!==0)a*=x.pow(10,f);c=a*2;if(x.floor(a)===a)c=a;else if(x.floor(c)===c){a=x.floor(a);c=a+a%2}else c=x.round(a);
a="";for(e+=f;e>0||c>0;){e--;a=""+c%10+a;c=x.floor(c/10)}if(g!==E)for(e=a.length-3-f;e>0;){a=a.substring(0,e)+g+a.substring(e);e-=3}return f>0?b+a.substring(0,a.length-f)+"."+a.substring(a.length-f,a.length):b+a}function J(a,b,c,e,f,g){if(a instanceof Array){for(var h=[],i=0,j=a.length;i<j;i++)h.push(G(a[i],b,c,e,f,g));return h}else return G(a,b,c,e,f,g)}function U(a){a=parseInt("0x"+a,16);if(a>2147483647)a-=4294967296;return a}function O(a){return Array.prototype.slice.call(a,1)}function qa(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 Za)return a.code===49||a.code===84||a.code===116}function Pa(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 Za)return a.code}function na(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 Za)return a.code}function va(a,b){var c=a||362436069,e=b||521288629,f=function(){c=36969*(c&65535)+(c>>>16)&4294967295;e=18E3*(e&65535)+(e>>>16)&4294967295;return((c&65535)<<16|e&65535)&4294967295};this.nextDouble=function(){var g=f()/4294967296;return g<0?1+g:g};this.nextInt=f}function Ea(a){function b(j,r,s,A){j&=15;var n=j<8?r:s;r=j<4?s:j===12||j===14?r:A;return((j&1)===0?n:-n)+((j&2)===0?r:-r)}function c(j,r,s){r=(j&1)===0?r:s;return(j&2)===0?-r:r}function e(j,
r,s){return r+j*(s-r)}a=a!==E?new va(a):va.createRandomized();var f,g,h=new sd(512);for(f=0;f<256;++f)h[f]=f;for(f=0;f<256;++f){var i=h[g=a.nextInt()&255];h[g]=h[f];h[f]=i}for(f=0;f<256;++f)h[f+256]=h[f];this.noise3d=function(j,r,s){var A=x.floor(j)&255,n=x.floor(r)&255,I=x.floor(s)&255;j-=x.floor(j);r-=x.floor(r);s-=x.floor(s);var P=(3-2*j)*j*j,L=(3-2*r)*r*r,u=h[A]+n,ta=h[u]+I;u=h[u+1]+I;n=h[A+1]+n;A=h[n]+I;I=h[n+1]+I;return e((3-2*s)*s*s,e(L,e(P,b(h[ta],j,r,s),b(h[A],j-1,r,s)),e(P,b(h[u],j,r-1,
s),b(h[I],j-1,r-1,s))),e(L,e(P,b(h[ta+1],j,r,s-1),b(h[A+1],j-1,r,s-1)),e(P,b(h[u+1],j,r-1,s-1),b(h[I+1],j-1,r-1,s-1))))};this.noise2d=function(j,r){var s=x.floor(j)&255,A=x.floor(r)&255;j-=x.floor(j);r-=x.floor(r);var n=(3-2*j)*j*j,I=h[s]+A;s=h[s+1]+A;return e((3-2*r)*r*r,e(n,c(h[I],j,r),c(h[s],j-1,r)),e(n,c(h[I+1],j,r-1),c(h[s+1],j-1,r-1)))};this.noise1d=function(j){var r=x.floor(j)&255;j-=x.floor(j);return e((3-2*j)*j*j,(h[r]&1)===0?-j:j,(h[r+1]&1)===0?-(j-1):j-1)}}function sa(){if(ma){if(jb){m.fillStyle=
d.color.toString(ib);jb=false}m.fill()}}function La(){if(ea){if(Jb){m.strokeStyle=d.color.toString(Fa);Jb=false}m.stroke()}}function mb(a,b,c){c=0|c*((b&k.ALPHA_MASK)>>>24);return x.min(((a&k.ALPHA_MASK)>>>24)+c,255)<<24|d.mix(a&k.RED_MASK,b&k.RED_MASK,c)&k.RED_MASK|d.mix(a&k.GREEN_MASK,b&k.GREEN_MASK,c)&k.GREEN_MASK|d.mix(a&k.BLUE_MASK,b&k.BLUE_MASK,c)}function Ka(a,b,c){var e=td.shift();if(e===E){e={};e.canvas=ja.createElement("canvas");e.context=e.canvas.getContext("2d")}td.push(e);var f=e.canvas,
g=e.context;b=b||a.width;c=c||a.height;f.width=b;f.height=c;if(a)if("data"in a)g.putImageData(a,0,0);else{g.clearRect(0,0,b,c);g.drawImage(a,0,0,b,c)}else g.clearRect(0,0,b,c);return e}function $a(){if(yc){m=ud;yc=false;d.updatePixels()}}function ab(){function a(e,f){e[f]=function(){$a();m[f].apply(m,arguments)}}function b(e,f){d.defineProperty(e,f,{get:function(){$a();return m[f]},set:function(g){$a();m[f]=g}})}for(var c in m)typeof m[c]==="function"?a(this,c):b(this,c)}function hb(a){this.name=
"sans-serif";if(a!==E)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 Qa(a){return a instanceof String?a:typeof a==="number"?a===(0|a)?a.toString():d.nf(a,0,3):a===null||a===E?"":a.toString()}function Fb(a,b,c,e){this.canvas=ja.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(e,0,c);this.imageData=this.ctx.getImageData(0,0,b,b);this.get=function(f,g){return this.imageData.data[g*this.imageData.width*4+f*4]}}function Gb(a,b,c,e){var f;if(a.indexOf("\n")<0){a=[a];f=1}else{a=a.split(/\r?\n/g);f=a.length}var g;g=fc===k.TOP?(1-Ic)*za:fc===k.CENTER?(1-Ic-f/2)*za:fc===k.BOTTOM?(1-Ic-f)*za:0;for(var h=0;h<f;++h){Ja.text$line(a[h],b,c+g,e,gc);g+=za}}function rb(a,b,c,e,
f,g){if(!(a.length===0||e===0||f===0))if(!(R>f)){var h=-1,i=0,j=0,r=0;m.font=R+"px "+T.name;for(var s=[],A=0,n=a.length;A<n;A++){var I=a[A],P=I===" ",L=m.measureText(I).width;if(I!=="\n"&&j+L<e){if(P)h=A;j+=L}else{if(h+1===i)if(A>0)h=A;else return;if(I==="\n"){s.push({text:a.substring(i,A),width:j,offset:r});i=A+1}else{s.push({text:a.substring(i,h),width:j,offset:r});i=h+1}r+=za;j=0;A=i-1}}i<n&&s.push({text:a.substring(i),width:j,offset:r});a=0;if(gc===k.CENTER)a=e/2;else if(gc===k.RIGHT)a=e;e=(1-
Ic)*R;h=0;if(fc===k.BOTTOM)h=f-s.length*za;else if(fc===k.CENTER)h=(f-s.length*za)/2;i=0;for(j=s.length;i<j;i++){r=s[i];if(!(r.offset+h<0)){if(r.offset+h+R>f)break;Ja.text$line(r.text,b+a,c+r.offset+e+h,g,gc)}}}}function ya(a){Ja=a==="3D"?new ba:a==="2D"?new $:new Z;for(var b in Z.prototype)if(Z.prototype.hasOwnProperty(b)&&b.indexOf("$")<0)d[b]=Ja[b];Ja.$init()}function W(a){return function(){ya("2D");return Ja[a].apply(this,arguments)}}function bb(a,b){function c(g){d.defineProperty(a,g,{get:function(){return b[g]},
set:function(h){b[g]=h},enumerable:true})}var e=[],f;for(f in b)if(typeof b[f]==="function")a.hasOwnProperty(f)||(a[f]=b[f]);else f.charAt(0)!=="$"&&!(f in a)&&e.push(f);for(;e.length>0;)c(e.shift())}function Ba(a,b,c){a.addEventListener?a.addEventListener(b,c,false):a.attachEvent("on"+b,c);yb.push([a,b,c])}function Fc(a,b,c){if(a.removeEventListener)a.removeEventListener(b,c,false);else a.detachEvent&&a.detachEvent("on"+b,c)}function uc(a){var b=a,c=0,e=0;d.pmouseX=d.mouseX;d.pmouseY=d.mouseY;if(b.offsetParent){do{c+=
b.offsetLeft;e+=b.offsetTop}while(b=b.offsetParent)}b=a;do{c-=b.scrollLeft||0;e-=b.scrollTop||0}while(b=b.parentNode);c+=vd;e+=wd;c+=xd;e+=yd;c+=Aa.pageXOffset;e+=Aa.pageYOffset;return{X:c,Y:e}}function Sb(a,b){var c=uc(a,b);d.mouseX=b.pageX-c.X;d.mouseY=b.pageY-c.Y}function Hb(a){var b=uc(a.changedTouches[0].target,a.changedTouches[0]),c;for(c=0;c<a.touches.length;c++){var e=a.touches[c];e.offsetX=e.pageX-b.X;e.offsetY=e.pageY-b.Y}for(c=0;c<a.targetTouches.length;c++){e=a.targetTouches[c];e.offsetX=
e.pageX-b.X;e.offsetY=e.pageY-b.Y}for(c=0;c<a.changedTouches.length;c++){e=a.changedTouches[c];e.offsetX=e.pageX-b.X;e.offsetY=e.pageY-b.Y}return a}function vc(a){a=a.which||a.keyCode;switch(a){case 13:return 10;case 91:case 93:case 224:return 157;case 57392:return 17;case 46:return 127;case 45:return 155}return a}function wc(a){if(typeof a.preventDefault==="function")a.preventDefault();else typeof a.stopPropagation==="function"&&a.stopPropagation();return false}function xc(){for(var a in Tb)if(Tb.hasOwnProperty(a)){d.__keyPressed=
true;return}d.__keyPressed=false}function $b(){d.__keyPressed=false;Tb=[];hc=null}function ac(a,b){Tb[a]=b;hc=null;d.key=b;d.keyCode=a;d.keyPressed();d.keyCode=0;d.keyTyped();xc()}function bc(a){var b=vc(a);if(b===k.DELETE)ac(b,new Za(127));else if(ce.indexOf(b)<0)hc=b;else{var c=new Za(k.CODED);d.key=c;d.keyCode=b;Tb[b]=c;d.keyPressed();hc=null;xc();return wc(a)}}function cc(a){if(hc!==null){var b=hc,c;c=a.which||a.keyCode;var e=a.shiftKey||a.ctrlKey||a.altKey||a.metaKey;switch(c){case 13:c=e?13:
10;break;case 8:c=e?127:8}c=new Za(c);ac(b,c);return wc(a)}}function Uc(a){a=vc(a);var b=Tb[a];if(b!==E){d.key=b;d.keyCode=a;d.keyReleased();delete Tb[a];xc()}}if(!(this instanceof V))throw"called Processing constructor as if it were a function: missing 'new'.";var d=this,Ib=arguments.length===0;if(Ib){v=ja.createElement("canvas");d.canvas=v}d.externals={canvas:v,context:E,sketch:E};d.name="Processing.js Instance";d.use3DContext=false;d.focused=false;d.breakShape=false;d.glyphTable={};d.pmouseX=0;
d.pmouseY=0;d.mouseX=0;d.mouseY=0;d.mouseButton=0;d.mouseScroll=0;d.mouseClicked=E;d.mouseDragged=E;d.mouseMoved=E;d.mousePressed=E;d.mouseReleased=E;d.mouseScrolled=E;d.mouseOver=E;d.mouseOut=E;d.touchStart=E;d.touchEnd=E;d.touchMove=E;d.touchCancel=E;d.key=E;d.keyCode=E;d.keyPressed=function(){};d.keyReleased=function(){};d.keyTyped=function(){};d.draw=E;d.setup=E;d.__mousePressed=false;d.__keyPressed=false;d.__frameRate=60;d.frameCount=0;d.width=100;d.height=100;d.defineProperty=function(a,b,c){if("defineProperty"in
Object)Object.defineProperty(a,b,c);else{c.hasOwnProperty("get")&&a.__defineGetter__(b,c.get);c.hasOwnProperty("set")&&a.__defineSetter__(b,c.set)}};var m,Ca,Ja,ma=true,Ra=[1,1,1,1],ib=4294967295,jb=true,ea=true,Sa=[0.8,0.8,0.8,1],Fa=4294835709,Jb=true,Ma=1,da=false,la=true,Ia=0,Oa=k.CORNER,gb=k.CENTER,Eb=0,Rb=0,qb=0,Kb=k.NORMAL_MODE_AUTO,Ua=60,Db=1E3/Ua,Qb=v.style.cursor,wa=k.POLYGON,tc=0,Zb=20,sc=false,l,o=20,p=255,q=255,w=255,y=255,F=k.RGB,S=null,R=12,T={name:'"Arial", sans-serif',origName:"Arial"},
za=14,ka=(new Date).getTime(),ha=ka,Da=0,Ga,Lb,cb,Ha,ic,Yc,Zc,nb={attributes:{},locations:{}},H,Y,db,$c,ad,bd,Jc,cd,zc,dd,zd,ed,Ad,Kc,Bd,Cd,Dd,Lc={width:0,height:0},Ed=k.IMAGE,eb=false,fd,gd,hd,gc=k.LEFT,fc=k.BASELINE,Ic=0.2,id=k.MODEL,ud,jd=null,yc=false,Fd,Gd=1E3,Tb=[],hc=null,ce=[k.SHIFT,k.CONTROL,k.ALT,k.CAPSLK,k.PGUP,k.PGDN,k.END,k.HOME,k.LEFT,k.UP,k.RIGHT,k.DOWN,k.NUMLK,k.INSERT,k.F1,k.F2,k.F3,k.F4,k.F5,k.F6,k.F7,k.F8,k.F9,k.F10,k.F11,k.F12,k.META],vd,wd,xd,yd;if(ja.defaultView&&ja.defaultView.getComputedStyle){vd=
parseInt(ja.defaultView.getComputedStyle(v,null).paddingLeft,10)||0;wd=parseInt(ja.defaultView.getComputedStyle(v,null).paddingTop,10)||0;xd=parseInt(ja.defaultView.getComputedStyle(v,null).borderLeftWidth,10)||0;yd=parseInt(ja.defaultView.getComputedStyle(v,null).borderTopWidth,10)||0}var ca=0,Mc=0,Ub=0,sb=[],tb=[],ub=[],jc=new ua(k.SINCOS_LENGTH),kc=new ua(k.SINCOS_LENGTH),fa,Vb,vb,Va,Wa,oa,wb,lc,mc,Ac,ob,Nc=false,Oc=60*(x.PI/180),kd=d.width/2,Wb=d.height/2,Xb=Wb/x.tan(Oc/2),Hd=Xb/10,Id=Xb*10,Jd=
d.width/d.height,t=[],Xa=[],Ta=0,nc=false,oc=false,pc=true,Bc=k.CORNER,Kd=[],Ld=new ua([0.5,0.5,-0.5,0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,0.5,-0.5,0.5,0.5,-0.5,0.5,0.5,0.5,-0.5,0.5,0.5,-0.5,-0.5,0.5,-0.5,-0.5,0.5,0.5,-0.5,0.5,0.5,0.5,0.5,0.5,0.5,-0.5,0.5,0.5,0.5,0.5,-0.5,0.5,0.5,-0.5,0.5,0.5,-0.5,-0.5,0.5,0.5,-0.5,0.5,-0.5,-0.5,0.5,-0.5,0.5,-0.5,-0.5,0.5,-0.5,-0.5,0.5,-0.5,-0.5,-0.5,0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,0.5,-0.5,0.5,0.5,-0.5,0.5,0.5,-0.5,0.5,-0.5,-0.5,-0.5,-0.5,0.5,0.5,
0.5,0.5,0.5,-0.5,-0.5,0.5,-0.5,-0.5,0.5,-0.5,-0.5,0.5,0.5,0.5,0.5,0.5]),Md=new ua([0.5,0.5,0.5,0.5,-0.5,0.5,0.5,0.5,-0.5,0.5,-0.5,-0.5,-0.5,0.5,-0.5,-0.5,-0.5,-0.5,-0.5,0.5,0.5,-0.5,-0.5,0.5,0.5,0.5,0.5,0.5,0.5,-0.5,0.5,0.5,-0.5,-0.5,0.5,-0.5,-0.5,0.5,-0.5,-0.5,0.5,0.5,-0.5,0.5,0.5,0.5,0.5,0.5,0.5,-0.5,0.5,0.5,-0.5,-0.5,0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,0.5,-0.5,-0.5,0.5,0.5,-0.5,0.5]),de=new ua([0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,0,
0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0]),ld=new ua([0,0,0,0,1,0,1,1,0,1,0,0]),ee=new ua([0,0,1,0,0,1,0,0,1,0,0,1]),fe="varying vec4 frontColor;attribute vec3 Vertex;attribute vec3 Normal;attribute vec4 aColor;attribute vec2 aTexture;varying   vec2 vTexture;uniform vec4 color;uniform bool usingMat;uniform vec3 specular;uniform vec3 mat_emissive;uniform vec3 mat_ambient;uniform vec3 mat_specular;uniform float shininess;uniform mat4 model;uniform mat4 view;uniform mat4 projection;uniform mat4 normalTransform;uniform int lightCount;uniform vec3 falloff;struct Light {  int type;  vec3 color;  vec3 position;  vec3 direction;  float angle;  vec3 halfVector;  float concentration;};uniform Light lights0;uniform Light lights1;uniform Light lights2;uniform Light lights3;uniform Light lights4;uniform Light lights5;uniform Light lights6;uniform Light lights7;Light getLight(int index){  if(index == 0) return lights0;  if(index == 1) return lights1;  if(index == 2) return lights2;  if(index == 3) return lights3;  if(index == 4) return lights4;  if(index == 5) return lights5;  if(index == 6) return lights6;  return lights7;}void AmbientLight( inout vec3 totalAmbient, in vec3 ecPos, in Light light ) {  float d = length( light.position - ecPos );  float attenuation = 1.0 / ( falloff[0] + ( falloff[1] * d ) + ( falloff[2] * d * d ));  totalAmbient += light.color * attenuation;}void DirectionalLight( inout vec3 col, inout vec3 spec, in vec3 vertNormal, in vec3 ecPos, in Light light ) {  float powerfactor = 0.0;  float nDotVP = max(0.0, dot( vertNormal, normalize(-light.position) ));  float nDotVH = max(0.0, dot( vertNormal, normalize(-light.position-normalize(ecPos) )));  if( nDotVP != 0.0 ){    powerfactor = pow( nDotVH, shininess );  }  col += light.color * nDotVP;  spec += specular * powerfactor;}void PointLight( inout vec3 col, inout vec3 spec, in vec3 vertNormal, in vec3 ecPos, in Light light ) {  float powerfactor;   vec3 VP = light.position - ecPos;  float d = length( VP );   VP = normalize( VP );  float attenuation = 1.0 / ( falloff[0] + ( falloff[1] * d ) + ( falloff[2] * d * d ));  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 SpotLight( inout vec3 col, inout vec3 spec, in vec3 vertNormal, in vec3 ecPos, in Light light ) {  float spotAttenuation;  float powerfactor;  vec3 VP = light.position - ecPos;   vec3 ldir = normalize( -light.direction );  float d = length( VP );  VP = normalize( VP );  float attenuation = 1.0 / ( falloff[0] + ( falloff[1] * d ) + ( falloff[2] * d * d ) );  float spotDot = dot( VP, ldir );"+
(/Windows/.test(navigator.userAgent)?"  spotAttenuation = 1.0; ":"  if( spotDot > 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 );}",
Nd=function(a,b,c,e){return{x:a,y:b,w:c,h:e}},Pc=Nd,ge=function(a,b,c,e,f){return{x:a,y:b,w:f?c:c-a,h:f?e:e-b}},he=function(a,b,c,e){return{x:a-c/2,y:b-e/2,w:c,h:e}},md=function(a,b,c){var e=a.createShader(a.VERTEX_SHADER);a.shaderSource(e,b);a.compileShader(e);if(!a.getShaderParameter(e,a.COMPILE_STATUS))throw a.getShaderInfoLog(e);b=a.createShader(a.FRAGMENT_SHADER);a.shaderSource(b,c);a.compileShader(b);if(!a.getShaderParameter(b,a.COMPILE_STATUS))throw a.getShaderInfoLog(b);c=a.createProgram();
a.attachShader(c,e);a.attachShader(c,b);a.linkProgram(c);if(!a.getProgramParameter(c,a.LINK_STATUS))throw"Error linking shaders.";return c},aa=function(){},$=function(){},ba=function(){},Z=function(){};$.prototype=new aa;$.prototype.constructor=$;ba.prototype=new aa;ba.prototype.constructor=ba;Z.prototype=new aa;Z.prototype.constructor=Z;aa.prototype.a3DOnlyFunction=function(){};var nd={},Za=d.Character=function(a){this.code=typeof a==="string"&&a.length===1?a.charCodeAt(0):typeof a==="number"?a:
a instanceof Za?a:NaN;return nd[this.code]===E?nd[this.code]=this:nd[this.code]};Za.prototype.toString=function(){return String.fromCharCode(this.code)};Za.prototype.valueOf=function(){return this.code};var Cc=d.PShape=function(a){this.family=a||k.GROUP;this.style=this.visible=true;this.children=[];this.nameTable=[];this.params=[];this.name="";this.parent=this.height=this.width=this.close=this.kind=this.matrix=this.image=null};Cc.prototype={isVisible:function(){return this.visible},setVisible:function(a){this.visible=
a},disableStyle:function(){this.style=false;for(var a=0,b=this.children.length;a<b;a++)this.children[a].disableStyle()},enableStyle:function(){this.style=true;for(var a=0,b=this.children.length;a<b;a++)this.children[a].enableStyle()},getFamily:function(){return this.family},getWidth:function(){return this.width},getHeight:function(){return this.height},setName:function(a){this.name=a},getName:function(){return this.name},draw:function(){if(this.visible){this.pre();this.drawImpl();this.post()}},drawImpl:function(){if(this.family===
k.GROUP)this.drawGroup();else if(this.family===k.PRIMITIVE)this.drawPrimitive();else if(this.family===k.GEOMETRY)this.drawGeometry();else this.family===k.PATH&&this.drawPath()},drawPath:function(){var a,b;if(this.vertices.length!==0){d.beginShape();if(this.vertexCodes.length===0)if(this.vertices[0].length===2){a=0;for(b=this.vertices.length;a<b;a++)d.vertex(this.vertices[a][0],this.vertices[a][1])}else{a=0;for(b=this.vertices.length;a<b;a++)d.vertex(this.vertices[a][0],this.vertices[a][1],this.vertices[a][2])}else{var c=
0;if(this.vertices[0].length===2){a=0;for(b=this.vertexCodes.length;a<b;a++)if(this.vertexCodes[a]===k.VERTEX){d.vertex(this.vertices[c][0],this.vertices[c][1]);if(this.vertices[c].moveTo===true)t[t.length-1].moveTo=true;else if(this.vertices[c].moveTo===false)t[t.length-1].moveTo=false;d.breakShape=false;c++}else if(this.vertexCodes[a]===k.BEZIER_VERTEX){d.bezierVertex(this.vertices[c+0][0],this.vertices[c+0][1],this.vertices[c+1][0],this.vertices[c+1][1],this.vertices[c+2][0],this.vertices[c+2][1]);
c+=3}else if(this.vertexCodes[a]===k.CURVE_VERTEX){d.curveVertex(this.vertices[c][0],this.vertices[c][1]);c++}else if(this.vertexCodes[a]===k.BREAK)d.breakShape=true}else{a=0;for(b=this.vertexCodes.length;a<b;a++)if(this.vertexCodes[a]===k.VERTEX){d.vertex(this.vertices[c][0],this.vertices[c][1],this.vertices[c][2]);if(this.vertices[c].moveTo===true)t[t.length-1].moveTo=true;else if(this.vertices[c].moveTo===false)t[t.length-1].moveTo=false;d.breakShape=false}else if(this.vertexCodes[a]===k.BEZIER_VERTEX){d.bezierVertex(this.vertices[c+
0][0],this.vertices[c+0][1],this.vertices[c+0][2],this.vertices[c+1][0],this.vertices[c+1][1],this.vertices[c+1][2],this.vertices[c+2][0],this.vertices[c+2][1],this.vertices[c+2][2]);c+=3}else if(this.vertexCodes[a]===k.CURVE_VERTEX){d.curveVertex(this.vertices[c][0],this.vertices[c][1],this.vertices[c][2]);c++}else if(this.vertexCodes[a]===k.BREAK)d.breakShape=true}}d.endShape(this.close?k.CLOSE:k.OPEN)}},drawGeometry:function(){var a,b;d.beginShape(this.kind);if(this.style){a=0;for(b=this.vertices.length;a<
b;a++)d.vertex(this.vertices[a])}else{a=0;for(b=this.vertices.length;a<b;a++){var c=this.vertices[a];c[2]===0?d.vertex(c[0],c[1]):d.vertex(c[0],c[1],c[2])}}d.endShape()},drawGroup:function(){for(var a=0,b=this.children.length;a<b;a++)this.children[a].draw()},drawPrimitive:function(){if(this.kind===k.POINT)d.point(this.params[0],this.params[1]);else if(this.kind===k.LINE)this.params.length===4?d.line(this.params[0],this.params[1],this.params[2],this.params[3]):d.line(this.params[0],this.params[1],
this.params[2],this.params[3],this.params[4],this.params[5]);else if(this.kind===k.TRIANGLE)d.triangle(this.params[0],this.params[1],this.params[2],this.params[3],this.params[4],this.params[5]);else if(this.kind===k.QUAD)d.quad(this.params[0],this.params[1],this.params[2],this.params[3],this.params[4],this.params[5],this.params[6],this.params[7]);else if(this.kind===k.RECT)if(this.image!==null){d.imageMode(k.CORNER);d.image(this.image,this.params[0],this.params[1],this.params[2],this.params[3])}else{d.rectMode(k.CORNER);
d.rect(this.params[0],this.params[1],this.params[2],this.params[3])}else if(this.kind===k.ELLIPSE){d.ellipseMode(k.CORNER);d.ellipse(this.params[0],this.params[1],this.params[2],this.params[3])}else if(this.kind===k.ARC){d.ellipseMode(k.CORNER);d.arc(this.params[0],this.params[1],this.params[2],this.params[3],this.params[4],this.params[5])}else if(this.kind===k.BOX)this.params.length===1?d.box(this.params[0]):d.box(this.params[0],this.params[1],this.params[2]);else this.kind===k.SPHERE&&d.sphere(this.params[0])},
pre:function(){if(this.matrix){d.pushMatrix();m.transform(this.matrix.elements[0],this.matrix.elements[3],this.matrix.elements[1],this.matrix.elements[4],this.matrix.elements[2],this.matrix.elements[5])}if(this.style){d.pushStyle();this.styles()}},post:function(){this.matrix&&d.popMatrix();this.style&&d.popStyle()},styles:function(){if(this.stroke){d.stroke(this.strokeColor);d.strokeWeight(this.strokeWeight);d.strokeCap(this.strokeCap);d.strokeJoin(this.strokeJoin)}else d.noStroke();this.fill?d.fill(this.fillColor):
d.noFill()},getChild:function(a){var b,c;if(typeof a==="number")return this.children[a];else{var e;if(a===""||this.name===a)return this;else{if(this.nameTable.length>0){b=0;for(c=this.nameTable.length;b<c||e;b++)if(this.nameTable[b].getName===a)e=this.nameTable[b];if(e)return e}b=0;for(c=this.children.length;b<c;b++)if(e=this.children[b].getChild(a))return e}return null}},getChildCount:function(){return this.children.length},addChild:function(a){this.children.push(a);a.parent=this;a.getName()!==null&&
this.addName(a.getName(),a)},addName:function(a,b){this.parent!==null?this.parent.addName(a,b):this.nameTable.push([a,b])},translate:function(){if(arguments.length===2){this.checkMatrix(2);this.matrix.translate(arguments[0],arguments[1])}else{this.checkMatrix(3);this.matrix.translate(arguments[0],arguments[1],0)}},checkMatrix:function(a){if(this.matrix===null)this.matrix=a===2?new d.PMatrix2D:new d.PMatrix3D;else if(a===3&&this.matrix instanceof d.PMatrix2D)this.matrix=new d.PMatrix3D},rotateX:function(a){this.rotate(a,
1,0,0)},rotateY:function(a){this.rotate(a,0,1,0)},rotateZ:function(a){this.rotate(a,0,0,1)},rotate:function(){if(arguments.length===1){this.checkMatrix(2);this.matrix.rotate(arguments[0])}else{this.checkMatrix(3);this.matrix.rotate(arguments[0],arguments[1],arguments[2],arguments[3])}},scale:function(){if(arguments.length===2){this.checkMatrix(2);this.matrix.scale(arguments[0],arguments[1])}else if(arguments.length===3){this.checkMatrix(2);this.matrix.scale(arguments[0],arguments[1],arguments[2])}else{this.checkMatrix(2);
this.matrix.scale(arguments[0])}},resetMatrix:function(){this.checkMatrix(2);this.matrix.reset()},applyMatrix:function(a){if(arguments.length===1)this.applyMatrix(a.elements[0],a.elements[1],0,a.elements[2],a.elements[3],a.elements[4],0,a.elements[5],0,0,1,0,0,0,0,1);else if(arguments.length===6){this.checkMatrix(2);this.matrix.apply(arguments[0],arguments[1],arguments[2],0,arguments[3],arguments[4],arguments[5],0,0,0,1,0,0,0,0,1)}else if(arguments.length===16){this.checkMatrix(3);this.matrix.apply(arguments[0],
arguments[1],arguments[2],arguments[3],arguments[4],arguments[5],arguments[6],arguments[7],arguments[8],arguments[9],arguments[10],arguments[11],arguments[12],arguments[13],arguments[14],arguments[15])}}};var ia=d.PShapeSVG=function(){d.PShape.call(this);if(arguments.length===1){this.element=arguments[0];this.vertexCodes=[];this.vertices=[];this.opacity=1;this.stroke=false;this.strokeColor=k.ALPHA_MASK;this.strokeWeight=1;this.strokeCap=k.SQUARE;this.strokeJoin=k.MITER;this.strokeName=this.strokeGradientPaint=
this.strokeGradient=null;this.strokeOpacity=1;this.fill=true;this.fillColor=k.ALPHA_MASK;this.fillName=this.fillGradientPaint=this.fillGradient=null;this.fillOpacity=1;if(this.element.getName()!=="svg")throw"root is not <svg>, it's <"+this.element.getName()+">";}else if(arguments.length===2)if(typeof arguments[1]==="string"){if(arguments[1].indexOf(".svg")>-1){this.element=new d.XMLElement(null,arguments[1]);this.vertexCodes=[];this.vertices=[];this.opacity=1;this.stroke=false;this.strokeColor=k.ALPHA_MASK;
this.strokeWeight=1;this.strokeCap=k.SQUARE;this.strokeJoin=k.MITER;this.strokeName=this.strokeGradientPaint=this.strokeGradient="";this.strokeOpacity=1;this.fill=true;this.fillColor=k.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]}a=this.element.getStringAttribute("width");var 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){this.height=this.width=1;throw"The width and/or height is not readable in the <svg> tag of this file.";}this.parseColors(this.element);this.parseChildren(this.element)};ia.prototype=new Cc;ia.prototype.parseMatrix=function(){function a(b){b.replace(/\((.*?)\)/,function(){return function(c,e){e.replace(/,+/g," ").split(/\s+/)}}())}return function(b){this.checkMatrix(2);var c=[];b.replace(/\s*(\w+)\((.*?)\)/g,function(h){c.push(d.trim(h))});if(c.length===0)return null;b=0;for(var e=
c.length;b<e;b++){var f=a(c[b]);if(c[b].indexOf("matrix")!==-1)this.matrix.set(f[0],f[2],f[4],f[1],f[3],f[5]);else if(c[b].indexOf("translate")!==-1)this.matrix.translate(f[0],f.length===2?f[1]:0);else if(c[b].indexOf("scale")!==-1)this.matrix.scale(f[0],f.length===2?f[1]:f[0]);else if(c[b].indexOf("rotate")!==-1){var g=f[0];if(f.length===1)this.matrix.rotate(d.radians(g));else if(f.length===3){this.matrix.translate(f[1],f[2]);this.matrix.rotate(d.radians(f[0]));this.matrix.translate(-f[1],-f[2])}}else if(c[b].indexOf("skewX")!==
-1)this.matrix.skewX(parseFloat(f[0]));else c[b].indexOf("skewY")!==-1&&this.matrix.skewY(f[0])}return this.matrix}}();ia.prototype.parseChildren=function(a){a=a.getChildren();for(var b=new d.PShape,c=0,e=a.length;c<e;c++){var f=this.parseChild(a[c]);f&&b.addChild(f)}this.children.push(b)};ia.prototype.getName=function(){return this.name};ia.prototype.parseChild=function(a){var b=a.getName(),c;if(b==="g")c=new ia(this,a);else if(b==="defs")c=new ia(this,a);else if(b==="line"){c=new ia(this,a);c.parseLine()}else if(b===
"circle"){c=new ia(this,a);c.parseEllipse(true)}else if(b==="ellipse"){c=new ia(this,a);c.parseEllipse(false)}else if(b==="rect"){c=new ia(this,a);c.parseRect()}else if(b==="polygon"){c=new ia(this,a);c.parsePoly(true)}else if(b==="polyline"){c=new ia(this,a);c.parsePoly(false)}else if(b==="path"){c=new ia(this,a);c.parsePath()}else if(b==="radialGradient")D("PShapeSVG.prototype.parseChild, name = radialGradient");else if(b==="linearGradient")D("PShapeSVG.prototype.parseChild, name = linearGradient");
else if(b==="text")D("PShapeSVG.prototype.parseChild, name = text");else if(b==="filter")D("PShapeSVG.prototype.parseChild, name = filter");else b==="mask"?D("PShapeSVG.prototype.parseChild, name = mask"):Tc();return c};ia.prototype.parsePath=function(){this.family=k.PATH;this.kind=0;var a=d.trim(this.element.getStringAttribute("d").replace(/[\s,]+/g," "));if(a!==null){a=d.__toCharArray(a);for(var b=0,c=0,e=0,f=0,g=f=e=0,h=0,i=0,j=0,r=j=f=i=e=0,s=0,A="",n=[],I=false,P,L,u;r<a.length;){s=a[r].valueOf();
if(s>=65&&s<=90||s>=97&&s<=122){u=r;r++;if(r<a.length){n=[];for(s=a[r].valueOf();!(s>=65&&s<=90||s>=97&&s<=100||s>=102&&s<=122)&&I===false;){if(s===32){if(A!==""){n.push(parseFloat(A));A=""}}else if(s===45)if(a[r-1].valueOf()===101)A+=a[r].toString();else{A!==""&&n.push(parseFloat(A));A=a[r].toString()}else A+=a[r].toString();r++;if(r===a.length)I=true;else s=a[r].valueOf()}}if(A!==""){n.push(parseFloat(A));A=""}L=a[u];s=L.valueOf();if(s===77){if(n.length>=2&&n.length%2===0){b=n[0];c=n[1];this.parsePathMoveto(b,
c);if(n.length>2){u=2;for(s=n.length;u<s;u+=2){b=n[u];c=n[u+1];this.parsePathLineto(b,c)}}}}else if(s===109){if(n.length>=2&&n.length%2===0){this.parsePathMoveto(b,c);if(n.length>2){u=2;for(s=n.length;u<s;u+=2){b+=n[u];c+=n[u+1];this.parsePathLineto(b,c)}}}}else if(s===76){if(n.length>=2&&n.length%2===0){u=0;for(s=n.length;u<s;u+=2){b=n[u];c=n[u+1];this.parsePathLineto(b,c)}}}else if(s===108){if(n.length>=2&&n.length%2===0){u=0;for(s=n.length;u<s;u+=2){b+=n[u];c+=n[u+1];this.parsePathLineto(b,c)}}}else if(s===
72){u=0;for(s=n.length;u<s;u++){b=n[u];this.parsePathLineto(b,c)}}else if(s===104){u=0;for(s=n.length;u<s;u++){b+=n[u];this.parsePathLineto(b,c)}}else if(s===86){u=0;for(s=n.length;u<s;u++){c=n[u];this.parsePathLineto(b,c)}}else if(s===118){u=0;for(s=n.length;u<s;u++){c+=n[u];this.parsePathLineto(b,c)}}else if(s===67){if(n.length>=6&&n.length%6===0){u=0;for(s=n.length;u<s;u+=6){e=n[u];g=n[u+1];f=n[u+2];h=n[u+3];i=n[u+4];j=n[u+5];this.parsePathCurveto(e,g,f,h,i,j);b=i;c=j}}}else if(s===99){if(n.length>=
6&&n.length%6===0){u=0;for(s=n.length;u<s;u+=6){e=b+n[u];g=c+n[u+1];f=b+n[u+2];h=c+n[u+3];i=b+n[u+4];j=c+n[u+5];this.parsePathCurveto(e,g,f,h,i,j);b=i;c=j}}}else if(s===83){if(n.length>=4&&n.length%4===0){u=0;for(s=n.length;u<s;u+=4){if(P.toLowerCase()==="c"||P.toLowerCase()==="s"){e=this.vertices[this.vertices.length-2][0];i=this.vertices[this.vertices.length-2][1];f=this.vertices[this.vertices.length-1][0];j=this.vertices[this.vertices.length-1][1];e=f+(f-e);g=j+(j-i)}else{e=this.vertices[this.vertices.length-
1][0];g=this.vertices[this.vertices.length-1][1]}f=n[u];h=n[u+1];i=n[u+2];j=n[u+3];this.parsePathCurveto(e,g,f,h,i,j);b=i;c=j}}}else if(s===115){if(n.length>=4&&n.length%4===0){u=0;for(s=n.length;u<s;u+=4){if(P.toLowerCase()==="c"||P.toLowerCase()==="s"){e=this.vertices[this.vertices.length-2][0];i=this.vertices[this.vertices.length-2][1];f=this.vertices[this.vertices.length-1][0];j=this.vertices[this.vertices.length-1][1];e=f+(f-e);g=j+(j-i)}else{e=this.vertices[this.vertices.length-1][0];g=this.vertices[this.vertices.length-
1][1]}f=b+n[u];h=c+n[u+1];i=b+n[u+2];j=c+n[u+3];this.parsePathCurveto(e,g,f,h,i,j);b=i;c=j}}}else if(s===81){if(n.length>=4&&n.length%4===0){u=0;for(s=n.length;u<s;u+=4){e=n[u];f=n[u+1];i=n[u+2];j=n[u+3];this.parsePathQuadto(b,c,e,f,i,j);b=i;c=j}}}else if(s===113){if(n.length>=4&&n.length%4===0){u=0;for(s=n.length;u<s;u+=4){e=b+n[u];f=c+n[u+1];i=b+n[u+2];j=c+n[u+3];this.parsePathQuadto(b,c,e,f,i,j);b=i;c=j}}}else if(s===84){if(n.length>=2&&n.length%2===0){u=0;for(s=n.length;u<s;u+=2){if(P.toLowerCase()===
"q"||P.toLowerCase()==="t"){e=this.vertices[this.vertices.length-2][0];i=this.vertices[this.vertices.length-2][1];f=this.vertices[this.vertices.length-1][0];j=this.vertices[this.vertices.length-1][1];e=f+(f-e);f=j+(j-i)}else{e=b;f=c}i=n[u];j=n[u+1];this.parsePathQuadto(b,c,e,f,i,j);b=i;c=j}}}else if(s===116){if(n.length>=2&&n.length%2===0){u=0;for(s=n.length;u<s;u+=2){if(P.toLowerCase()==="q"||P.toLowerCase()==="t"){e=this.vertices[this.vertices.length-2][0];i=this.vertices[this.vertices.length-2][1];
f=this.vertices[this.vertices.length-1][0];j=this.vertices[this.vertices.length-1][1];e=f+(f-e);f=j+(j-i)}else{e=b;f=c}i=b+n[u];j=c+n[u+1];this.parsePathQuadto(b,c,e,f,i,j);b=i;c=j}}}else if(s===90)Tc();else if(s===122)this.close=true;P=L.toString()}else r++}}};ia.prototype.parsePathQuadto=function(a,b,c,e,f,g){if(this.vertices.length>0){this.parsePathCode(k.BEZIER_VERTEX);this.parsePathVertex(a+(c-a)*2/3,b+(e-b)*2/3);this.parsePathVertex(f+(c-f)*2/3,g+(e-g)*2/3);this.parsePathVertex(f,g)}else throw"Path must start with M/m";
};ia.prototype.parsePathCurveto=function(a,b,c,e,f,g){if(this.vertices.length>0){this.parsePathCode(k.BEZIER_VERTEX);this.parsePathVertex(a,b);this.parsePathVertex(c,e);this.parsePathVertex(f,g)}else throw"Path must start with M/m";};ia.prototype.parsePathLineto=function(a,b){if(this.vertices.length>0){this.parsePathCode(k.VERTEX);this.parsePathVertex(a,b);this.vertices[this.vertices.length-1].moveTo=false}else throw"Path must start with M/m";};ia.prototype.parsePathMoveto=function(a,b){this.vertices.length>
0&&this.parsePathCode(k.BREAK);this.parsePathCode(k.VERTEX);this.parsePathVertex(a,b);this.vertices[this.vertices.length-1].moveTo=true};ia.prototype.parsePathVertex=function(a,b){var c=[];c[0]=a;c[1]=b;this.vertices.push(c)};ia.prototype.parsePathCode=function(a){this.vertexCodes.push(a)};ia.prototype.parsePoly=function(a){this.family=k.PATH;this.close=a;a=d.trim(this.element.getStringAttribute("points").replace(/[,\s]+/g," "));if(a!==null){a=a.split(" ");if(a.length%2===0)for(var b=0,c=a.length;b<
c;b++){var e=[];e[0]=a[b];e[1]=a[++b];this.vertices.push(e)}else throw"Error parsing polygon points: odd number of coordinates provided";}};ia.prototype.parseRect=function(){this.kind=k.RECT;this.family=k.PRIMITIVE;this.params=[];this.params[0]=this.element.getFloatAttribute("x");this.params[1]=this.element.getFloatAttribute("y");this.params[2]=this.element.getFloatAttribute("width");this.params[3]=this.element.getFloatAttribute("height")};ia.prototype.parseEllipse=function(a){this.kind=k.ELLIPSE;
this.family=k.PRIMITIVE;this.params=[];this.params[0]=this.element.getFloatAttribute("cx");this.params[1]=this.element.getFloatAttribute("cy");var b;if(a)a=b=this.element.getFloatAttribute("r");else{a=this.element.getFloatAttribute("rx");b=this.element.getFloatAttribute("ry")}this.params[0]-=a;this.params[1]-=b;this.params[2]=a*2;this.params[3]=b*2};ia.prototype.parseLine=function(){this.kind=k.LINE;this.family=k.PRIMITIVE;this.params=[];this.params[0]=this.element.getFloatAttribute("x1");this.params[1]=
this.element.getFloatAttribute("y1");this.params[2]=this.element.getFloatAttribute("x2");this.params[3]=this.element.getFloatAttribute("y2")};ia.prototype.parseColors=function(a){a.hasAttribute("opacity")&&this.setOpacity(a.getAttribute("opacity"));a.hasAttribute("stroke")&&this.setStroke(a.getAttribute("stroke"));a.hasAttribute("stroke-width")&&this.setStrokeWeight(a.getAttribute("stroke-width"));a.hasAttribute("stroke-linejoin")&&this.setStrokeJoin(a.getAttribute("stroke-linejoin"));a.hasAttribute("stroke-linecap")&&
this.setStrokeCap(a.getStringAttribute("stroke-linecap"));a.hasAttribute("fill")&&this.setFill(a.getStringAttribute("fill"));if(a.hasAttribute("style")){a=a.getStringAttribute("style").toString().split(";");for(var b=0,c=a.length;b<c;b++){var e=d.trim(a[b].split(":"));if(e[0]==="fill")this.setFill(e[1]);else if(e[0]==="fill-opacity")this.setFillOpacity(e[1]);else if(e[0]==="stroke")this.setStroke(e[1]);else if(e[0]==="stroke-width")this.setStrokeWeight(e[1]);else if(e[0]==="stroke-linecap")this.setStrokeCap(e[1]);
else if(e[0]==="stroke-linejoin")this.setStrokeJoin(e[1]);else if(e[0]==="stroke-opacity")this.setStrokeOpacity(e[1]);else e[0]==="opacity"&&this.setOpacity(e[1])}}};ia.prototype.setFillOpacity=function(a){this.fillOpacity=parseFloat(a);this.fillColor=this.fillOpacity*255<<24|this.fillColor&16777215};ia.prototype.setFill=function(a){var b=this.fillColor&4278190080;if(a==="none")this.fill=false;else if(a.indexOf("#")===0){this.fill=true;this.fillColor=b|parseInt(a.substring(1),16)&16777215}else if(a.indexOf("rgb")===
0){this.fill=true;this.fillColor=b|this.parseRGB(a)}else if(a.indexOf("url(#")===0)this.fillName=a.substring(5,a.length-1);else if(Gc[a]){this.fill=true;this.fillColor=b|parseInt(Gc[a].substring(1),16)&16777215}};ia.prototype.setOpacity=function(a){this.strokeColor=parseFloat(a)*255<<24|this.strokeColor&16777215;this.fillColor=parseFloat(a)*255<<24|this.fillColor&16777215};ia.prototype.setStroke=function(a){var b=this.strokeColor&4278190080;if(a==="none")this.stroke=false;else if(a.charAt(0)==="#"){this.stroke=
true;this.strokeColor=b|parseInt(a.substring(1),16)&16777215}else if(a.indexOf("rgb")===0){this.stroke=true;this.strokeColor=b|this.parseRGB(a)}else if(a.indexOf("url(#")===0)this.strokeName=a.substring(5,a.length-1);else if(Gc[a]){this.stroke=true;this.strokeColor=b|parseInt(Gc[a].substring(1),16)&16777215}};ia.prototype.setStrokeWeight=function(a){this.strokeWeight=this.parseUnitSize(a)};ia.prototype.setStrokeJoin=function(a){if(a==="miter")this.strokeJoin=k.MITER;else if(a==="round")this.strokeJoin=
k.ROUND;else if(a==="bevel")this.strokeJoin=k.BEVEL};ia.prototype.setStrokeCap=function(a){if(a==="butt")this.strokeCap=k.SQUARE;else if(a==="round")this.strokeCap=k.ROUND;else if(a==="square")this.strokeCap=k.PROJECT};ia.prototype.setStrokeOpacity=function(a){this.strokeOpacity=parseFloat(a);this.strokeColor=this.strokeOpacity*255<<24|this.strokeColor&16777215};ia.prototype.parseRGB=function(a){a=a.substring(a.indexOf("(")+1,a.indexOf(")")).split(", ");return a[0]<<16|a[1]<<8|a[2]};ia.prototype.parseUnitSize=
function(a){var b=a.length-2;if(b<0)return a;return a.indexOf("pt")===b?parseFloat(a.substring(0,b))*1.25:a.indexOf("pc")===b?parseFloat(a.substring(0,b))*15:a.indexOf("mm")===b?parseFloat(a.substring(0,b))*3.543307:a.indexOf("cm")===b?parseFloat(a.substring(0,b))*35.43307:a.indexOf("in")===b?parseFloat(a.substring(0,b))*90:a.indexOf("px")===b?parseFloat(a.substring(0,b)):parseFloat(a)};d.shape=function(a,b,c,e,f){if(arguments.length>=1&&arguments[0]!==null)if(a.isVisible()){d.pushMatrix();if(Bc===
k.CENTER)if(arguments.length===5){d.translate(b-e/2,c-f/2);d.scale(e/a.getWidth(),f/a.getHeight())}else arguments.length===3?d.translate(b-a.getWidth()/2,-a.getHeight()/2):d.translate(-a.getWidth()/2,-a.getHeight()/2);else if(Bc===k.CORNER)if(arguments.length===5){d.translate(b,c);d.scale(e/a.getWidth(),f/a.getHeight())}else arguments.length===3&&d.translate(b,c);else if(Bc===k.CORNERS)if(arguments.length===5){e-=b;f-=c;d.translate(b,c);d.scale(e/a.getWidth(),f/a.getHeight())}else arguments.length===
3&&d.translate(b,c);a.draw();if(arguments.length===1&&Bc===k.CENTER||arguments.length>1)d.popMatrix()}};d.shapeMode=function(a){Bc=a};d.loadShape=function(a){if(arguments.length===1)if(a.indexOf(".svg")>-1)return new ia(null,a);return null};var Qc=function(a,b,c,e,f){this.fullName=a||"";this.name=b||"";this.namespace=c||"";this.value=e;this.type=f};Qc.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 Nb=d.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 if(arguments.length===2&&arguments[1].indexOf(".")>-1)this.parse(arguments[arguments.length-1]);else arguments.length===1&&typeof arguments[0]==="string"&&this.parse(arguments[0])};Nb.prototype={parse:function(a){var b;try{if(a.indexOf(".xml")>-1||a.indexOf(".svg")>-1)a=Wc(a);b=(new DOMParser).parseFromString(a,"text/xml");var c=b.documentElement;if(c)this.parseChildrenRecursive(null,c);else throw"Error loading document";return this}catch(e){throw e;}},parseChildrenRecursive:function(a,
b){var c,e,f,g;if(a){c=new Nb(b.localName,b.nodeName,"","");c.parent=a}else{this.fullName=b.localName;this.name=b.nodeName;c=this}if(b.nodeType===3&&b.textContent!=="")return this.createPCDataElement(b.textContent);f=0;for(g=b.attributes.length;f<g;f++){e=b.attributes[f];e=new Qc(e.getname,e.nodeName,e.namespaceURI,e.nodeValue,e.nodeType);c.attributes.push(e)}f=0;for(g=b.childNodes.length;f<g;f++){e=b.childNodes[f];if(e.nodeType===1||e.nodeType===3){e=c.parseChildrenRecursive(c,e);e!==null&&c.children.push(e)}}return c},
createElement:function(){return arguments.length===2?new Nb(arguments[0],arguments[1],null,null):new Nb(arguments[0],arguments[1],arguments[2],arguments[3])},createPCDataElement:function(a){if(a.replace(/^\s+$/g,"")==="")return null;var b=new Nb;b.content=a;b.type="TEXT";return b},hasAttribute:function(){if(arguments.length===1)return this.getAttribute(arguments[0])!==null;else if(arguments.length===2)return this.getAttribute(arguments[0],arguments[1])!==null},equals:function(a){if(!(a instanceof
Nb))return false;var b,c;if(this.name!==a.getLocalName())return false;if(this.attributes.length!==a.getAttributeCount())return false;if(this.attributes.length!==a.attributes.length)return false;var e,f;b=0;for(c=this.attributes.length;b<c;b++){e=this.attributes[b].getName();f=this.attributes[b].getNamespace();e=a.findAttribute(e,f);if(e===null)return false;if(this.attributes[b].getValue()!==e.getValue())return false;if(this.attributes[b].getType()!==e.getType())return false}if(this.children.length!==
a.getChildCount())return false;if(this.children.length>0){b=0;for(c=this.children.length;b<c;b++){e=this.getChild(b);f=a.getChild(b);if(!e.equals(f))return false}return true}else return this.content===a.content},getContent:function(){if(this.type==="TEXT")return this.content;else if(this.children.length===1&&this.children[0].type==="TEXT")return this.children[0].content;return null},getAttribute:function(){var a;if(arguments.length===2)return(a=this.findAttribute(arguments[0]))?a.getValue():arguments[1];
else if(arguments.length===1)return(a=this.findAttribute(arguments[0]))?a.getValue():null;else if(arguments.length===3)return(a=this.findAttribute(arguments[0],arguments[1]))?a.getValue():arguments[2]},getStringAttribute:function(){return arguments.length===1?this.getAttribute(arguments[0]):arguments.length===2?this.getAttribute(arguments[0],arguments[1]):this.getAttribute(arguments[0],arguments[1],arguments[2])},getString:function(a){return this.getStringAttribute(a)},getFloatAttribute:function(){return arguments.length===
1?parseFloat(this.getAttribute(arguments[0],0)):arguments.length===2?this.getAttribute(arguments[0],arguments[1]):this.getAttribute(arguments[0],arguments[1],arguments[2])},getFloat:function(a){return this.getFloatAttribute(a)},getIntAttribute:function(){return arguments.length===1?this.getAttribute(arguments[0],0):arguments.length===2?this.getAttribute(arguments[0],arguments[1]):this.getAttribute(arguments[0],arguments[1],arguments[2])},getInt:function(a){return this.getIntAttribute(a)},hasChildren:function(){return this.children.length>
0},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 c=this.children[this.children.length-1];if(c.getLocalName()===null){c.setContent(c.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,c,e=0,f=this.getChildCount();e<
f;e++){b=this.getChild(e);c=b.getName();if(c!==null&&c===a)return b}return null}},getChildren:function(){if(arguments.length===1)if(typeof arguments[0]==="number")return this.getChild(arguments[0]);else if(arguments[0].indexOf("/")!==-1)return this.getChildrenRecursive(arguments[0].split("/"),0);else{for(var a=[],b,c,e=0,f=this.getChildCount();e<f;e++){b=this.getChild(e);c=b.getName();c!==null&&c===arguments[0]&&a.push(b)}return a}else return this.children},getChildCount:function(){return this.children.length},
getChildRecursive:function(a,b){for(var c,e,f=0,g=this.getChildCount();f<g;f++){c=this.getChild(f);e=c.getName();if(e!==null&&e===a[b])if(b===a.length-1)return c;else{b+=1;return c.getChildRecursive(a,b)}}return null},getChildrenRecursive:function(a,b){if(b===a.length-1)return this.getChildren(a[b]);for(var c=this.getChildren(a[b]),e=[],f=0;f<c.length;f++)e=e.concat(c[f].getChildrenRecursive(a,b+1));return e},isLeaf:function(){return!this.hasChildren()},listChildren:function(){for(var a=[],b=0,c=
this.children.length;b<c;b++)a.push(this.getChild(b).getName());return a},removeAttribute:function(a,b){this.namespace=b||"";for(var c=0,e=this.attributes.length;c<e;c++)if(this.attributes[c].getName()===a&&this.attributes[c].getNamespace()===this.namespace){this.attributes.splice(c,1);break}},removeChild:function(a){if(a)for(var b=0,c=this.children.length;b<c;b++)if(this.children[b].equals(a)){this.children.splice(b,1);break}},removeChildAtIndex:function(a){this.children.length>a&&this.children.splice(a,
1)},findAttribute:function(a,b){this.namespace=b||"";for(var c=0,e=this.attributes.length;c<e;c++)if(this.attributes[c].getName()===a&&this.attributes[c].getNamespace()===this.namespace)return this.attributes[c];return null},setAttribute:function(){var a;if(arguments.length===3){a=arguments[0].indexOf(":");var b=arguments[0].substring(a+1);if(a=this.findAttribute(b,arguments[1]))a.setValue(arguments[2]);else{a=new Qc(arguments[0],b,arguments[1],arguments[2],"CDATA");this.attributes.push(a)}}else if(a=
this.findAttribute(arguments[0]))a.setValue(arguments[1]);else{a=new Qc(arguments[0],arguments[0],null,arguments[1],"CDATA");this.attributes.push(a)}},setString:function(a,b){this.setAttribute(a,b)},setInt:function(a,b){this.setAttribute(a,b)},setFloat:function(a,b){this.setAttribute(a,b)},setContent:function(a){this.children.length>0&&V.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,c;for(c=0;c<
this.attributes.length;c++){var e=this.attributes[c];b+=" "+e.getName()+'="'+e.getValue()+'"'}if(this.children.length===0)b+=this.content===""?"/>":">"+this.content+"</"+a+">";else{b+=">";for(c=0;c<this.children.length;c++)b+=this.children[c].toString();b+="</"+a+">"}return b}};Nb.parse=function(a){var b=new Nb;b.parse(a);return b};var Od=function(a){for(var b=0,c=0;c<a.length;c++)b=c!==0?x.max(b,x.abs(a[c])):x.abs(a[c]);a=(b+"").indexOf(".");if(a===0)a=1;else if(a===-1)a=(b+"").length;return a},
zb=d.PMatrix2D=function(){if(arguments.length===0)this.reset();else if(arguments.length===1&&arguments[0]instanceof zb)this.set(arguments[0].array());else arguments.length===6&&this.set(arguments[0],arguments[1],arguments[2],arguments[3],arguments[4],arguments[5])};zb.prototype={set:function(){if(arguments.length===6){var a=arguments;this.set([a[0],a[1],a[2],a[3],a[4],a[5]])}else if(arguments.length===1&&arguments[0]instanceof zb)this.elements=arguments[0].array();else if(arguments.length===1&&arguments[0]instanceof
Array)this.elements=arguments[0].slice()},get:function(){var a=new zb;a.set(this.elements);return a},reset:function(){this.set([1,0,0,0,1,0])},array:function(){return this.elements.slice()},translate:function(a,b){this.elements[2]=a*this.elements[0]+b*this.elements[1]+this.elements[2];this.elements[5]=a*this.elements[3]+b*this.elements[4]+this.elements[5]},invTranslate:function(a,b){this.translate(-a,-b)},transpose:function(){},mult:function(a,b){var c,e;if(a instanceof Ya){c=a.x;e=a.y;b||(b=new Ya)}else if(a instanceof
Array){c=a[0];e=a[1];b||(b=[])}if(b instanceof Array){b[0]=this.elements[0]*c+this.elements[1]*e+this.elements[2];b[1]=this.elements[3]*c+this.elements[4]*e+this.elements[5]}else if(b instanceof Ya){b.x=this.elements[0]*c+this.elements[1]*e+this.elements[2];b.y=this.elements[3]*c+this.elements[4]*e+this.elements[5];b.z=0}return b},multX:function(a,b){return a*this.elements[0]+b*this.elements[1]+this.elements[2]},multY:function(a,b){return a*this.elements[3]+b*this.elements[4]+this.elements[5]},skewX:function(a){this.apply(1,
0,1,a,0,0)},skewY:function(a){this.apply(1,0,1,0,a,0)},determinant:function(){return this.elements[0]*this.elements[4]-this.elements[1]*this.elements[3]},invert:function(){var a=this.determinant();if(x.abs(a)>k.MIN_INT){var b=this.elements[0],c=this.elements[1],e=this.elements[2],f=this.elements[3],g=this.elements[4],h=this.elements[5];this.elements[0]=g/a;this.elements[3]=-f/a;this.elements[1]=-c/a;this.elements[4]=b/a;this.elements[2]=(c*h-g*e)/a;this.elements[5]=(f*e-b*h)/a;return true}return false},
scale:function(a,b){if(a&&!b)b=a;if(a&&b){this.elements[0]*=a;this.elements[1]*=b;this.elements[3]*=a;this.elements[4]*=b}},invScale:function(a,b){if(a&&!b)b=a;this.scale(1/a,1/b)},apply:function(){var a;if(arguments.length===1&&arguments[0]instanceof zb)a=arguments[0].array();else if(arguments.length===6)a=Array.prototype.slice.call(arguments);else if(arguments.length===1&&arguments[0]instanceof Array)a=arguments[0];for(var b=[0,0,this.elements[2],0,0,this.elements[5]],c=0,e=0;e<2;e++)for(var f=
0;f<3;f++,c++)b[c]+=this.elements[e*3+0]*a[f+0]+this.elements[e*3+1]*a[f+3];this.elements=b.slice()},preApply:function(){var a;if(arguments.length===1&&arguments[0]instanceof zb)a=arguments[0].array();else if(arguments.length===6)a=Array.prototype.slice.call(arguments);else if(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=x.cos(a);a=x.sin(a);var c=this.elements[0],e=this.elements[1];this.elements[0]=b*c+a*e;this.elements[1]=-a*c+b*e;c=this.elements[3];e=this.elements[4];this.elements[3]=b*c+a*e;this.elements[4]=-a*c+b*e},rotateZ:function(a){this.rotate(a)},invRotateZ:function(a){this.rotateZ(a-x.PI)},
print:function(){var a=Od(this.elements);a=""+d.nfs(this.elements[0],a,4)+" "+d.nfs(this.elements[1],a,4)+" "+d.nfs(this.elements[2],a,4)+"\n"+d.nfs(this.elements[3],a,4)+" "+d.nfs(this.elements[4],a,4)+" "+d.nfs(this.elements[5],a,4)+"\n\n";d.println(a)}};var X=d.PMatrix3D=function(){this.reset()};X.prototype={set:function(){if(arguments.length===16)this.elements=Array.prototype.slice.call(arguments);else if(arguments.length===1&&arguments[0]instanceof X)this.elements=arguments[0].array();else if(arguments.length===
1&&arguments[0]instanceof Array)this.elements=arguments[0].slice()},get:function(){var a=new X;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,c){if(c===E)c=0;this.elements[3]+=a*this.elements[0]+b*this.elements[1]+c*this.elements[2];this.elements[7]+=a*this.elements[4]+b*this.elements[5]+c*this.elements[6];this.elements[11]+=a*this.elements[8]+b*this.elements[9]+c*this.elements[10];
this.elements[15]+=a*this.elements[12]+b*this.elements[13]+c*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 c,e,f,g;if(a instanceof Ya){c=a.x;e=a.y;f=a.z;g=1;b||(b=new Ya)}else if(a instanceof Array){c=a[0];e=a[1];f=a[2];g=a[3]||1;if(!b||b.length!==3&&b.length!==4)b=[0,0,0]}if(b instanceof Array)if(b.length===3){b[0]=this.elements[0]*c+this.elements[1]*e+this.elements[2]*f+this.elements[3];b[1]=this.elements[4]*c+this.elements[5]*e+this.elements[6]*f+this.elements[7];b[2]=this.elements[8]*c+this.elements[9]*e+this.elements[10]*f+this.elements[11]}else if(b.length===4){b[0]=this.elements[0]*c+this.elements[1]*
e+this.elements[2]*f+this.elements[3]*g;b[1]=this.elements[4]*c+this.elements[5]*e+this.elements[6]*f+this.elements[7]*g;b[2]=this.elements[8]*c+this.elements[9]*e+this.elements[10]*f+this.elements[11]*g;b[3]=this.elements[12]*c+this.elements[13]*e+this.elements[14]*f+this.elements[15]*g}if(b instanceof Ya){b.x=this.elements[0]*c+this.elements[1]*e+this.elements[2]*f+this.elements[3];b.y=this.elements[4]*c+this.elements[5]*e+this.elements[6]*f+this.elements[7];b.z=this.elements[8]*c+this.elements[9]*
e+this.elements[10]*f+this.elements[11]}return b},preApply:function(){var a;if(arguments.length===1&&arguments[0]instanceof X)a=arguments[0].array();else if(arguments.length===16)a=Array.prototype.slice.call(arguments);else if(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],c=0,e=0;e<4;e++)for(var f=0;f<4;f++,c++)b[c]+=this.elements[f+0]*a[e*4+0]+this.elements[f+4]*a[e*4+1]+this.elements[f+8]*a[e*4+2]+this.elements[f+12]*a[e*4+3];this.elements=
b.slice()},apply:function(){var a;if(arguments.length===1&&arguments[0]instanceof X)a=arguments[0].array();else if(arguments.length===16)a=Array.prototype.slice.call(arguments);else if(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],c=0,e=0;e<4;e++)for(var f=0;f<4;f++,c++)b[c]+=this.elements[e*4+0]*a[f+0]+this.elements[e*4+1]*a[f+4]+this.elements[e*4+2]*a[f+8]+this.elements[e*4+3]*a[f+12];this.elements=b.slice()},rotate:function(a,b,c,
e){if(c){var f=d.cos(a);a=d.sin(a);var g=1-f;this.apply(g*b*b+f,g*b*c-a*e,g*b*e+a*c,0,g*b*c+a*e,g*c*c+f,g*c*e-a*b,0,g*b*e-a*c,g*c*e+a*b,g*e*e+f,0,0,0,0,1)}else this.rotateZ(a)},invApply:function(){if(Ac===E)Ac=new X;var a=arguments;Ac.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(!Ac.invert())return false;this.preApply(Ac);return true},rotateX:function(a){var b=d.cos(a);a=d.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=
d.cos(a);a=d.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=x.cos(a);a=x.sin(a);this.apply([b,-a,0,0,a,b,0,0,0,0,1,0,0,0,0,1])},scale:function(a,b,c){if(a&&!b&&!c)b=c=a;else if(a&&b&&!c)c=1;if(a&&b&&c){this.elements[0]*=a;this.elements[1]*=b;this.elements[2]*=c;this.elements[4]*=a;this.elements[5]*=b;this.elements[6]*=c;this.elements[8]*=a;this.elements[9]*=b;this.elements[10]*=c;this.elements[12]*=a;this.elements[13]*=b;this.elements[14]*=c}},skewX:function(a){this.apply(1,
x.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,x.tan(a),1,0,0,0,0,1,0,0,0,0,1)},multX:function(a,b,c,e){return c?e?this.elements[0]*a+this.elements[1]*b+this.elements[2]*c+this.elements[3]*e:this.elements[0]*a+this.elements[1]*b+this.elements[2]*c+this.elements[3]:this.elements[0]*a+this.elements[1]*b+this.elements[3]},multY:function(a,b,c,e){return c?e?this.elements[4]*a+this.elements[5]*b+this.elements[6]*c+this.elements[7]*e:this.elements[4]*a+this.elements[5]*b+this.elements[6]*
c+this.elements[7]:this.elements[4]*a+this.elements[5]*b+this.elements[7]},multZ:function(a,b,c,e){return e?this.elements[8]*a+this.elements[9]*b+this.elements[10]*c+this.elements[11]*e:this.elements[8]*a+this.elements[9]*b+this.elements[10]*c+this.elements[11]},multW:function(a,b,c,e){return e?this.elements[12]*a+this.elements[13]*b+this.elements[14]*c+this.elements[15]*e:this.elements[12]*a+this.elements[13]*b+this.elements[14]*c+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],c=this.elements[0]*this.elements[7]-this.elements[3]*this.elements[4],e=this.elements[1]*this.elements[6]-this.elements[2]*this.elements[5],f=this.elements[1]*this.elements[7]-this.elements[3]*this.elements[5],g=this.elements[2]*this.elements[7]-this.elements[3]*this.elements[6],h=this.elements[8]*this.elements[13]-this.elements[9]*this.elements[12],i=this.elements[8]*this.elements[14]-this.elements[10]*
this.elements[12],j=this.elements[8]*this.elements[15]-this.elements[11]*this.elements[12],r=this.elements[9]*this.elements[14]-this.elements[10]*this.elements[13],s=this.elements[9]*this.elements[15]-this.elements[11]*this.elements[13],A=this.elements[10]*this.elements[15]-this.elements[11]*this.elements[14],n=a*A-b*s+c*r+e*j-f*i+g*h;if(x.abs(n)<=1.0E-9)return false;var I=[];I[0]=+this.elements[5]*A-this.elements[6]*s+this.elements[7]*r;I[4]=-this.elements[4]*A+this.elements[6]*j-this.elements[7]*
i;I[8]=+this.elements[4]*s-this.elements[5]*j+this.elements[7]*h;I[12]=-this.elements[4]*r+this.elements[5]*i-this.elements[6]*h;I[1]=-this.elements[1]*A+this.elements[2]*s-this.elements[3]*r;I[5]=+this.elements[0]*A-this.elements[2]*j+this.elements[3]*i;I[9]=-this.elements[0]*s+this.elements[1]*j-this.elements[3]*h;I[13]=+this.elements[0]*r-this.elements[1]*i+this.elements[2]*h;I[2]=+this.elements[13]*g-this.elements[14]*f+this.elements[15]*e;I[6]=-this.elements[12]*g+this.elements[14]*c-this.elements[15]*
b;I[10]=+this.elements[12]*f-this.elements[13]*c+this.elements[15]*a;I[14]=-this.elements[12]*e+this.elements[13]*b-this.elements[14]*a;I[3]=-this.elements[9]*g+this.elements[10]*f-this.elements[11]*e;I[7]=+this.elements[8]*g-this.elements[10]*c+this.elements[11]*b;I[11]=-this.elements[8]*f+this.elements[9]*c-this.elements[11]*a;I[15]=+this.elements[8]*e-this.elements[9]*b+this.elements[10]*a;a=1/n;I[0]*=a;I[1]*=a;I[2]*=a;I[3]*=a;I[4]*=a;I[5]*=a;I[6]*=a;I[7]*=a;I[8]*=a;I[9]*=a;I[10]*=a;I[11]*=a;I[12]*=
a;I[13]*=a;I[14]*=a;I[15]*=a;this.elements=I.slice();return true},toString:function(){for(var a="",b=0;b<15;b++)a+=this.elements[b]+", ";a+=this.elements[15];return a},print:function(){var a=Od(this.elements);a=""+d.nfs(this.elements[0],a,4)+" "+d.nfs(this.elements[1],a,4)+" "+d.nfs(this.elements[2],a,4)+" "+d.nfs(this.elements[3],a,4)+"\n"+d.nfs(this.elements[4],a,4)+" "+d.nfs(this.elements[5],a,4)+" "+d.nfs(this.elements[6],a,4)+" "+d.nfs(this.elements[7],a,4)+"\n"+d.nfs(this.elements[8],a,4)+" "+
d.nfs(this.elements[9],a,4)+" "+d.nfs(this.elements[10],a,4)+" "+d.nfs(this.elements[11],a,4)+"\n"+d.nfs(this.elements[12],a,4)+" "+d.nfs(this.elements[13],a,4)+" "+d.nfs(this.elements[14],a,4)+" "+d.nfs(this.elements[15],a,4)+"\n\n";d.println(a)},invTranslate:function(a,b,c){this.preApply(1,0,0,-a,0,1,0,-b,0,0,1,-c,0,0,0,1)},invRotateX:function(a){var b=x.cos(-a);a=x.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=x.cos(-a);a=x.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=x.cos(-a);a=x.sin(-a);this.preApply([b,-a,0,0,a,b,0,0,0,0,1,0,0,0,0,1])},invScale:function(a,b,c){this.preApply([1/a,0,0,0,0,1/b,0,0,0,0,1/c,0,0,0,0,1])}};var Ab=d.PMatrixStack=function(){this.matrixStack=[]};Ab.prototype.load=function(){var a=Ja.$newPMatrix();arguments.length===1?a.set(arguments[0]):a.set(arguments);this.matrixStack.push(a)};$.prototype.$newPMatrix=function(){return new zb};ba.prototype.$newPMatrix=function(){return new X};
Ab.prototype.push=function(){this.matrixStack.push(this.peek())};Ab.prototype.pop=function(){return this.matrixStack.pop()};Ab.prototype.peek=function(){var a=Ja.$newPMatrix();a.set(this.matrixStack[this.matrixStack.length-1]);return a};Ab.prototype.mult=function(a){this.matrixStack[this.matrixStack.length-1].apply(a)};d.split=function(a,b){return a.split(b)};d.splitTokens=function(a,b){if(arguments.length===1)b="\n\t\r\u000c ";b="["+b+"]";for(var c=[],e=0,f=a.search(b);f>=0;){if(f===0)a=a.substring(1);
else{c[e]=a.substring(0,f);e++;a=a.substring(f)}f=a.search(b)}if(a.length>0)c[e]=a;if(c.length===0)c=E;return c};d.append=function(a,b){a[a.length]=b;return a};d.concat=function(a,b){return a.concat(b)};d.sort=function(a,b){var c=[];if(a.length>0){for(var e=b>0?b:a.length,f=0;f<e;f++)c.push(a[f]);typeof a[0]==="string"?c.sort():c.sort(function(g,h){return g-h});if(b>0)for(e=c.length;e<a.length;e++)c.push(a[e])}return c};d.splice=function(a,b,c){if(b.length===0)return a;if(b instanceof Array)for(var e=
0;e<b.length;c++,e++)a.splice(c,0,b[e]);else a.splice(c,0,b);return a};d.subset=function(a,b,c){if(arguments.length===2)return a.slice(b,a.length);else if(arguments.length===3)return a.slice(b,b+c)};d.join=function(a,b){return a.join(b)};d.shorten=function(a){for(var b=[],c=a.length,e=0;e<c;e++)b[e]=a[e];b.pop();return b};d.expand=function(a,b){var c=a.slice(0);if(arguments.length===1){c.length=a.length*2;return c}else if(arguments.length===2){c.length=b;return c}};d.arrayCopy=function(){var a,b=
0,c,e=0,f;if(arguments.length===2){a=arguments[0];c=arguments[1];f=a.length}else if(arguments.length===3){a=arguments[0];c=arguments[1];f=arguments[2]}else if(arguments.length===5){a=arguments[0];b=arguments[1];c=arguments[2];e=arguments[3];f=arguments[4]}for(var g=b;g<f+b;g++,e++)if(c[e]!==E)c[e]=a[g];else throw"array index out of bounds exception";};d.reverse=function(a){return a.reverse()};d.mix=function(a,b,c){return a+((b-a)*c>>8)};d.peg=function(a){return a<0?0:a>255?255:a};d.modes={replace:function(a,
b){return b},blend:function(a,b){var c=(b&k.ALPHA_MASK)>>>24;return x.min(((a&k.ALPHA_MASK)>>>24)+c,255)<<24|d.mix(a&k.RED_MASK,b&k.RED_MASK,c)&k.RED_MASK|d.mix(a&k.GREEN_MASK,b&k.GREEN_MASK,c)&k.GREEN_MASK|d.mix(a&k.BLUE_MASK,b&k.BLUE_MASK,c)},add:function(a,b){var c=(b&k.ALPHA_MASK)>>>24;return x.min(((a&k.ALPHA_MASK)>>>24)+c,255)<<24|x.min((a&k.RED_MASK)+((b&k.RED_MASK)>>8)*c,k.RED_MASK)&k.RED_MASK|x.min((a&k.GREEN_MASK)+((b&k.GREEN_MASK)>>8)*c,k.GREEN_MASK)&k.GREEN_MASK|x.min((a&k.BLUE_MASK)+
((b&k.BLUE_MASK)*c>>8),k.BLUE_MASK)},subtract:function(a,b){var c=(b&k.ALPHA_MASK)>>>24;return x.min(((a&k.ALPHA_MASK)>>>24)+c,255)<<24|x.max((a&k.RED_MASK)-((b&k.RED_MASK)>>8)*c,k.GREEN_MASK)&k.RED_MASK|x.max((a&k.GREEN_MASK)-((b&k.GREEN_MASK)>>8)*c,k.BLUE_MASK)&k.GREEN_MASK|x.max((a&k.BLUE_MASK)-((b&k.BLUE_MASK)*c>>8),0)},lightest:function(a,b){var c=(b&k.ALPHA_MASK)>>>24;return x.min(((a&k.ALPHA_MASK)>>>24)+c,255)<<24|x.max(a&k.RED_MASK,((b&k.RED_MASK)>>8)*c)&k.RED_MASK|x.max(a&k.GREEN_MASK,((b&
k.GREEN_MASK)>>8)*c)&k.GREEN_MASK|x.max(a&k.BLUE_MASK,(b&k.BLUE_MASK)*c>>8)},darkest:function(a,b){var c=(b&k.ALPHA_MASK)>>>24;return x.min(((a&k.ALPHA_MASK)>>>24)+c,255)<<24|d.mix(a&k.RED_MASK,x.min(a&k.RED_MASK,((b&k.RED_MASK)>>8)*c),c)&k.RED_MASK|d.mix(a&k.GREEN_MASK,x.min(a&k.GREEN_MASK,((b&k.GREEN_MASK)>>8)*c),c)&k.GREEN_MASK|d.mix(a&k.BLUE_MASK,x.min(a&k.BLUE_MASK,(b&k.BLUE_MASK)*c>>8),c)},difference:function(a,b){var c=(b&k.ALPHA_MASK)>>>24,e=(a&k.RED_MASK)>>16,f=(a&k.GREEN_MASK)>>8,g=a&k.BLUE_MASK,
h=(b&k.RED_MASK)>>16,i=(b&k.GREEN_MASK)>>8,j=b&k.BLUE_MASK;h=e>h?e-h:h-e;i=f>i?f-i:i-f;j=g>j?g-j:j-g;return x.min(((a&k.ALPHA_MASK)>>>24)+c,255)<<24|d.peg(e+((h-e)*c>>8))<<16|d.peg(f+((i-f)*c>>8))<<8|d.peg(g+((j-g)*c>>8))},exclusion:function(a,b){var c=(b&k.ALPHA_MASK)>>>24,e=(a&k.RED_MASK)>>16,f=(a&k.GREEN_MASK)>>8,g=a&k.BLUE_MASK,h=(b&k.RED_MASK)>>16,i=(b&k.GREEN_MASK)>>8,j=b&k.BLUE_MASK;h=e+h-(e*h>>7);i=f+i-(f*i>>7);j=g+j-(g*j>>7);return x.min(((a&k.ALPHA_MASK)>>>24)+c,255)<<24|d.peg(e+((h-e)*
c>>8))<<16|d.peg(f+((i-f)*c>>8))<<8|d.peg(g+((j-g)*c>>8))},multiply:function(a,b){var c=(b&k.ALPHA_MASK)>>>24,e=(a&k.RED_MASK)>>16,f=(a&k.GREEN_MASK)>>8,g=a&k.BLUE_MASK,h=e*((b&k.RED_MASK)>>16)>>8,i=f*((b&k.GREEN_MASK)>>8)>>8,j=g*(b&k.BLUE_MASK)>>8;return x.min(((a&k.ALPHA_MASK)>>>24)+c,255)<<24|d.peg(e+((h-e)*c>>8))<<16|d.peg(f+((i-f)*c>>8))<<8|d.peg(g+((j-g)*c>>8))},screen:function(a,b){var c=(b&k.ALPHA_MASK)>>>24,e=(a&k.RED_MASK)>>16,f=(a&k.GREEN_MASK)>>8,g=a&k.BLUE_MASK,h=255-((255-e)*(255-((b&
k.RED_MASK)>>16))>>8),i=255-((255-f)*(255-((b&k.GREEN_MASK)>>8))>>8),j=255-((255-g)*(255-(b&k.BLUE_MASK))>>8);return x.min(((a&k.ALPHA_MASK)>>>24)+c,255)<<24|d.peg(e+((h-e)*c>>8))<<16|d.peg(f+((i-f)*c>>8))<<8|d.peg(g+((j-g)*c>>8))},hard_light:function(a,b){var c=(b&k.ALPHA_MASK)>>>24,e=(a&k.RED_MASK)>>16,f=(a&k.GREEN_MASK)>>8,g=a&k.BLUE_MASK,h=(b&k.RED_MASK)>>16,i=(b&k.GREEN_MASK)>>8,j=b&k.BLUE_MASK;h=h<128?e*h>>7:255-((255-e)*(255-h)>>7);i=i<128?f*i>>7:255-((255-f)*(255-i)>>7);j=j<128?g*j>>7:255-
((255-g)*(255-j)>>7);return x.min(((a&k.ALPHA_MASK)>>>24)+c,255)<<24|d.peg(e+((h-e)*c>>8))<<16|d.peg(f+((i-f)*c>>8))<<8|d.peg(g+((j-g)*c>>8))},soft_light:function(a,b){var c=(b&k.ALPHA_MASK)>>>24,e=(a&k.RED_MASK)>>16,f=(a&k.GREEN_MASK)>>8,g=a&k.BLUE_MASK,h=(b&k.RED_MASK)>>16,i=(b&k.GREEN_MASK)>>8,j=b&k.BLUE_MASK;h=(e*h>>7)+(e*e>>8)-(e*e*h>>15);i=(f*i>>7)+(f*f>>8)-(f*f*i>>15);j=(g*j>>7)+(g*g>>8)-(g*g*j>>15);return x.min(((a&k.ALPHA_MASK)>>>24)+c,255)<<24|d.peg(e+((h-e)*c>>8))<<16|d.peg(f+((i-f)*c>>
8))<<8|d.peg(g+((j-g)*c>>8))},overlay:function(a,b){var c=(b&k.ALPHA_MASK)>>>24,e=(a&k.RED_MASK)>>16,f=(a&k.GREEN_MASK)>>8,g=a&k.BLUE_MASK,h=(b&k.RED_MASK)>>16,i=(b&k.GREEN_MASK)>>8,j=b&k.BLUE_MASK;h=e<128?e*h>>7:255-((255-e)*(255-h)>>7);i=f<128?f*i>>7:255-((255-f)*(255-i)>>7);j=g<128?g*j>>7:255-((255-g)*(255-j)>>7);return x.min(((a&k.ALPHA_MASK)>>>24)+c,255)<<24|d.peg(e+((h-e)*c>>8))<<16|d.peg(f+((i-f)*c>>8))<<8|d.peg(g+((j-g)*c>>8))},dodge:function(a,b){var c=(b&k.ALPHA_MASK)>>>24,e=(a&k.RED_MASK)>>
16,f=(a&k.GREEN_MASK)>>8,g=a&k.BLUE_MASK,h=(b&k.RED_MASK)>>16,i=(b&k.GREEN_MASK)>>8,j=b&k.BLUE_MASK;h=h===255?255:d.peg((e<<8)/(255-h));i=i===255?255:d.peg((f<<8)/(255-i));j=j===255?255:d.peg((g<<8)/(255-j));return x.min(((a&k.ALPHA_MASK)>>>24)+c,255)<<24|d.peg(e+((h-e)*c>>8))<<16|d.peg(f+((i-f)*c>>8))<<8|d.peg(g+((j-g)*c>>8))},burn:function(a,b){var c=(b&k.ALPHA_MASK)>>>24,e=(a&k.RED_MASK)>>16,f=(a&k.GREEN_MASK)>>8,g=a&k.BLUE_MASK,h=(b&k.RED_MASK)>>16,i=(b&k.GREEN_MASK)>>8,j=b&k.BLUE_MASK;h=h===
0?0:255-d.peg((255-e<<8)/h);i=i===0?0:255-d.peg((255-f<<8)/i);j=j===0?0:255-d.peg((255-g<<8)/j);return x.min(((a&k.ALPHA_MASK)>>>24)+c,255)<<24|d.peg(e+((h-e)*c>>8))<<16|d.peg(f+((i-f)*c>>8))<<8|d.peg(g+((j-g)*c>>8))}};d.color=function(a,b,c,e){if(a!==E&&b!==E&&c!==E&&e!==E)return M(a,b,c,e);if(a!==E&&b!==E&&c!==E)return M(a,b,c,p);if(a!==E&&b!==E){var f;if(a&k.ALPHA_MASK){b=x.round(255*(b/p));f=a-(a&k.ALPHA_MASK)+((b>255?255:b)<<24&k.ALPHA_MASK)}else if(F===k.RGB)f=M(a,a,a,b);else if(F===k.HSB)f=
M(0,0,a/q*y,b);return f}if(typeof a==="number"){var g;if(a<=q&&a>=0)if(F===k.RGB)g=M(a,a,a,p);else{if(F===k.HSB)g=M(0,0,a/q*y,p)}else if(a)g=a;return g}return M(q,w,y,p)};d.color.toString=function(a){return"rgba("+((a&k.RED_MASK)>>>16)+","+((a&k.GREEN_MASK)>>>8)+","+(a&k.BLUE_MASK)+","+((a&k.ALPHA_MASK)>>>24)/255+")"};d.color.toInt=function(a,b,c,e){return e<<24&k.ALPHA_MASK|a<<16&k.RED_MASK|b<<8&k.GREEN_MASK|c&k.BLUE_MASK};d.color.toArray=function(a){return[(a&k.RED_MASK)>>>16,(a&k.GREEN_MASK)>>>
8,a&k.BLUE_MASK,(a&k.ALPHA_MASK)>>>24]};d.color.toGLArray=function(a){return[((a&k.RED_MASK)>>>16)/255,((a&k.GREEN_MASK)>>>8)/255,(a&k.BLUE_MASK)/255,((a&k.ALPHA_MASK)>>>24)/255]};d.color.toRGB=function(a,b,c){a=a>q?q:a;b=b>w?w:b;c=c>y?y:c;a=a/q*360;b=b/w*100;c=c/y*100;var e=x.round(c/100*255);if(b===0)return[e,e,e];else{a%=360;var f=a%60,g=x.round(c*(100-b)/1E4*255),h=x.round(c*(6E3-b*f)/6E5*255);b=x.round(c*(6E3-b*(60-f))/6E5*255);switch(x.floor(a/60)){case 0:return[e,b,g];case 1:return[h,e,g];
case 2:return[g,e,b];case 3:return[g,h,e];case 4:return[b,g,e];case 5:return[e,g,h]}}};d.color.toHSB=function(a){var b,c,e;b=((a&k.RED_MASK)>>>16)/255;c=((a&k.GREEN_MASK)>>>8)/255;e=(a&k.BLUE_MASK)/255;a=d.max(d.max(b,c),e);var f=d.min(d.min(b,c),e);if(f===a)return[0,0,a];else{b=b===a?(c-e)/(a-f):c===a?2+(e-b)/(a-f):4+(b-c)/(a-f);b/=6;if(b<0)b+=1;else if(b>1)b-=1}return[b*q,(a-f)/a*w,a*y]};d.brightness=function(a){return d.color.toHSB(a)[2]};d.saturation=function(a){return d.color.toHSB(a)[1]};d.hue=
function(a){return d.color.toHSB(a)[0]};d.red=function(a){return((a&k.RED_MASK)>>>16)/255*q};d.green=function(a){return((a&k.GREEN_MASK)>>>8)/255*w};d.blue=function(a){return(a&k.BLUE_MASK)/255*y};d.alpha=function(a){return((a&k.ALPHA_MASK)>>>24)/255*p};d.lerpColor=function(a,b,c){var e=d.color(a),f=(e&k.RED_MASK)>>>16,g=(e&k.GREEN_MASK)>>>8;a=e&k.BLUE_MASK;e=((e&k.ALPHA_MASK)>>>24)/p;var h=d.color(b),i=(h&k.GREEN_MASK)>>>8,j=h&k.BLUE_MASK;b=((h&k.ALPHA_MASK)>>>24)/p;f=parseInt(d.lerp(f,(h&k.RED_MASK)>>>
16,c),10);g=parseInt(d.lerp(g,i,c),10);a=parseInt(d.lerp(a,j,c),10);c=parseFloat(d.lerp(e,b,c)*p);return d.color.toInt(f,g,a,c)};d.defaultColor=function(a,b,c){var e=F;F=k.RGB;a=d.color(a/255*q,b/255*w,c/255*y);F=e;return a};d.colorMode=function(){F=arguments[0];if(arguments.length>1){q=arguments[1];w=arguments[2]||arguments[1];y=arguments[3]||arguments[1];p=arguments[4]||arguments[1]}};d.blendColor=function(a,b,c){var e=0;switch(c){case k.REPLACE:e=d.modes.replace(a,b);break;case k.BLEND:e=d.modes.blend(a,
b);break;case k.ADD:e=d.modes.add(a,b);break;case k.SUBTRACT:e=d.modes.subtract(a,b);break;case k.LIGHTEST:e=d.modes.lightest(a,b);break;case k.DARKEST:e=d.modes.darkest(a,b);break;case k.DIFFERENCE:e=d.modes.difference(a,b);break;case k.EXCLUSION:e=d.modes.exclusion(a,b);break;case k.MULTIPLY:e=d.modes.multiply(a,b);break;case k.SCREEN:e=d.modes.screen(a,b);break;case k.HARD_LIGHT:e=d.modes.hard_light(a,b);break;case k.SOFT_LIGHT:e=d.modes.soft_light(a,b);break;case k.OVERLAY:e=d.modes.overlay(a,
b);break;case k.DODGE:e=d.modes.dodge(a,b);break;case k.BURN:e=d.modes.burn(a,b)}return e};d.printMatrix=function(){oa.print()};$.prototype.translate=function(a,b){Va.translate(a,b);Wa.invTranslate(a,b);m.translate(a,b)};ba.prototype.translate=function(a,b,c){Va.translate(a,b,c);Wa.invTranslate(a,b,c)};$.prototype.scale=function(a,b){Va.scale(a,b);Wa.invScale(a,b);m.scale(a,b||a)};ba.prototype.scale=function(a,b,c){Va.scale(a,b,c);Wa.invScale(a,b,c)};$.prototype.pushMatrix=function(){lc.load(oa);
mc.load(wb);m.save()};ba.prototype.pushMatrix=function(){lc.load(oa);mc.load(wb)};$.prototype.popMatrix=function(){oa.set(lc.pop());wb.set(mc.pop());ga()};ba.prototype.popMatrix=function(){oa.set(lc.pop());wb.set(mc.pop())};$.prototype.resetMatrix=function(){Va.reset();Wa.reset();m.setTransform(1,0,0,1,0,0)};ba.prototype.resetMatrix=function(){Va.reset();Wa.reset()};aa.prototype.applyMatrix=function(){var a=arguments;Va.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]);Wa.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])};$.prototype.applyMatrix=function(){for(var a=arguments,b=a.length;b<16;b++)a[b]=0;a[10]=a[15]=1;aa.prototype.applyMatrix.apply(this,a)};d.rotateX=function(a){Va.rotateX(a);Wa.invRotateX(a)};d.rotateZ=function(a){Va.rotateZ(a);Wa.invRotateZ(a);d.use3DContext||m.rotate(a)};d.rotateY=function(a){Va.rotateY(a);Wa.invRotateY(a)};$.prototype.rotate=function(a){d.rotateZ(a)};ba.prototype.rotate=
function(a){d.rotateZ(a)};d.pushStyle=function(){m.save();d.pushMatrix();Kd.push({doFill:ma,currentFillColor:ib,doStroke:ea,currentStrokeColor:Fa,curTint:S,curRectMode:Oa,curColorMode:F,colorModeX:q,colorModeZ:y,colorModeY:w,colorModeA:p,curTextFont:T,curTextSize:R})};d.popStyle=function(){var a=Kd.pop();if(a){ga();d.popMatrix();ma=a.doFill;ib=a.currentFillColor;ea=a.doStroke;Fa=a.currentStrokeColor;S=a.curTint;Oa=a.curRectmode;F=a.curColorMode;q=a.colorModeX;y=a.colorModeZ;w=a.colorModeY;p=a.colorModeA;
T=a.curTextFont;R=a.curTextSize}else throw"Too many popStyle() without enough pushStyle()";};d.year=function(){return(new Date).getFullYear()};d.month=function(){return(new Date).getMonth()+1};d.day=function(){return(new Date).getDate()};d.hour=function(){return(new Date).getHours()};d.minute=function(){return(new Date).getMinutes()};d.second=function(){return(new Date).getSeconds()};d.millis=function(){return(new Date).getTime()-ka};aa.prototype.redraw=function(){var a=((new Date).getTime()-ha)/
1E3;Da++;var b=Da/a;if(a>0.5){ha=(new Date).getTime();Da=0;d.__frameRate=b}d.frameCount++};$.prototype.redraw=function(){aa.prototype.redraw.apply(this,arguments);m.lineWidth=Ma;m.save();d.draw();ga()};ba.prototype.redraw=function(){aa.prototype.redraw.apply(this,arguments);m.clear(m.DEPTH_BUFFER_BIT);nb={attributes:{},locations:{}};d.noLights();d.lightFalloff(1,0,0);d.shininess(1);d.ambient(255,255,255);d.specular(0,0,0);d.emissive(0,0,0);d.camera();d.draw()};d.noLoop=function(){da=la=false;clearInterval(Ia)};
d.loop=function(){if(!da){ha=(new Date).getTime();Da=0;Ia=Aa.setInterval(function(){try{d.redraw()}catch(a){Aa.clearInterval(Ia);throw a;}},Db);da=la=true}};d.frameRate=function(a){Ua=a;Db=1E3/Ua;if(la){d.noLoop();d.loop()}};var yb=[];d.exit=function(){Aa.clearInterval(Ia);var a=d.externals.canvas.id;ec.splice(Hc[a],1);delete Hc[a];for(var b in V.lib)V.lib.hasOwnProperty(b)&&V.lib[b].hasOwnProperty("detach")&&V.lib[b].detach(d);a=0;for(b=yb.length;a<b;a++){var c=yb[a][0],e=yb[a][1],f=yb[a][2];if(c.removeEventListener)c.removeEventListener(e,
f,false);else c.detachEvent&&c.detachEvent("on"+e,f)}};d.cursor=function(){if(arguments.length>1||arguments.length===1&&arguments[0]instanceof d.PImage){var a=arguments[0],b,c;if(arguments.length>=3){b=arguments[1];c=arguments[2];if(b<0||c<0||c>=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;c=a.height>>>1}a='url("'+a.toDataURL()+'") '+b+" "+c+", default";v.style.cursor=a}else v.style.cursor=arguments.length===1?arguments[0]:
Qb};d.noCursor=function(){v.style.cursor=k.NOCURSOR};d.link=function(a,b){if(b!==E)Aa.open(a,b);else Aa.location=a};d.beginDraw=function(){};d.endDraw=function(){};d.Import=function(){};var Pd=function(a){a.preventDefault();a.stopPropagation()};d.disableContextMenu=function(){v.addEventListener("contextmenu",Pd,false)};d.enableContextMenu=function(){v.removeEventListener("contextmenu",Pd,false)};d.status=function(a){Aa.status=a};d.binary=function(a,b){var c=32;if(typeof a==="number"){if(b)c=b;return ra(a,
c)}if(a instanceof Za){a=a.toString().charCodeAt(0);c=b?32:16}c=ra(a,c);if(b)c=c.substr(-b);return c};d.unbinary=function(a){var b=/^[0|1]{8}$/,c=0;if(a instanceof Array){c=[];for(b=0;b<a.length;b++)c[b]=d.unbinary(a[b]);return c}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++)c+=x.pow(2,b)*parseInt(a.charAt(7-b),10);return c+""}else throw"notBinary: the value passed into unbinary was not an 8 bit binary number";else throw"longErr";};d.nf=function(a,
b,c){return J(a,"","-",b,c)};d.nfs=function(a,b,c){return J(a," ","-",b,c)};d.nfp=function(a,b,c){return J(a,"+","-",b,c)};d.nfc=function(a,b,c){return J(a,"","-",b,c,",")};d.hex=function(a,b){if(arguments.length===1)b=a instanceof Za?4:8;var c=a,e=b;e=e===E||e===null?e=8:e;if(c<0)c=4294967295+c+1;for(c=Number(c).toString(16).toUpperCase();c.length<e;)c="0"+c;if(c.length>=e)c=c.substring(c.length-e,c.length);return c};d.unhex=function(a){if(a instanceof Array){for(var b=[],c=0;c<a.length;c++)b.push(U(a[c]));
return b}else return U(a)};d.loadStrings=function(a){if(localStorage[a])return localStorage[a].split("\n");a=Wc(a);if(typeof a!=="string"||a==="")return[];a=a.replace(/(\r\n?)/g,"\n").replace(/\n$/,"");return a.split("\n")};d.saveStrings=function(a,b){localStorage[a]=b.join("\n")};d.loadBytes=function(a){a=Wc(a);for(var b=[],c=0;c<a.length;c++)b.push(a.charCodeAt(c));return b};d.matchAll=function(a,b){for(var c=[],e,f=RegExp(b,"g");(e=f.exec(a))!==null;){c.push(e);e[0].length===0&&++f.lastIndex}return c.length>
0?c:null};d.__contains=function(a,b){if(typeof a!=="string")return a.contains.apply(a,O(arguments));return a!==null&&b!==null&&typeof b==="string"&&a.indexOf(b)>-1};d.__replaceAll=function(a,b,c){if(typeof a!=="string")return a.replaceAll.apply(a,O(arguments));return a.replace(RegExp(b,"g"),c)};d.__replaceFirst=function(a,b,c){if(typeof a!=="string")return a.replaceFirst.apply(a,O(arguments));return a.replace(RegExp(b,""),c)};d.__replace=function(a,b,c){if(typeof a!=="string")return a.replace.apply(a,
O(arguments));if(b instanceof RegExp)return a.replace(b,c);if(typeof b!=="string")b=b.toString();if(b==="")return a;var e=a.indexOf(b);if(e<0)return a;var f=0,g="";do{g+=a.substring(f,e)+c;f=e+b.length}while((e=a.indexOf(b,f))>=0);return g+a.substring(f)};d.__equals=function(a,b){if(a.equals instanceof Function)return a.equals.apply(a,O(arguments));return a.valueOf()===b.valueOf()};d.__toCharArray=function(a){if(typeof a!=="string")return a.toCharArray.apply(a,O(arguments));for(var b=[],c=0,e=a.length;c<
e;++c)b[c]=new Za(a.charAt(c));return b};d.__split=function(a,b,c){b=RegExp(b);if(c===E||c<1)return a.split(b);for(var e=[],f;(f=a.search(b))!==-1&&e.length<c-1;){var g=b.exec(a).toString();e.push(a.substring(0,f));a=a.substring(f+g.length)}if(f!==-1||a!=="")e.push(a);return e};d.match=function(a,b){return a.match(b)};d.__hashCode=function(a){if(a.hashCode instanceof Function)return a.hashCode.apply(a,O(arguments));return 0|a};d.__printStackTrace=function(a){d.println("Exception: "+a.toString())};
var Rc=[];d.console=Aa.console||V.logger;d.println=function(a){var b=Rc.length;if(b){V.logger.log(Rc.join(""));Rc.length=0}if(arguments.length===0&&b===0)V.logger.log("");else arguments.length!==0&&V.logger.log(a)};d.print=function(a){Rc.push(a)};d.str=function(a){if(a instanceof Array){for(var b=[],c=0;c<a.length;c++)b.push(a[c].toString()+"");return b}else return a.toString()+""};d.trim=function(a){if(a instanceof Array){for(var b=[],c=0;c<a.length;c++)b.push(a[c].replace(/^\s*/,"").replace(/\s*$/,
"").replace(/\r*$/,""));return b}else return a.replace(/^\s*/,"").replace(/\s*$/,"").replace(/\r*$/,"")};d.parseBoolean=function(a){if(a instanceof Array){for(var b=[],c=0;c<a.length;c++)b.push(qa(a[c]));return b}else return qa(a)};d.parseByte=function(a){if(a instanceof Array){for(var b=[],c=0;c<a.length;c++)b.push(0-(a[c]&128)|a[c]&127);return b}else return 0-(a&128)|a&127};d.parseChar=function(a){if(typeof a==="number")return new Za(String.fromCharCode(a&65535));else if(a instanceof Array){for(var b=
[],c=0;c<a.length;c++)b.push(new Za(String.fromCharCode(a[c]&65535)));return b}else throw"char() may receive only one argument of type int, byte, int[], or byte[].";};d.parseFloat=function(a){if(a instanceof Array){for(var b=[],c=0;c<a.length;c++)b.push(Pa(a[c]));return b}else return Pa(a)};d.parseInt=function(a,b){if(a instanceof Array){for(var c=[],e=0;e<a.length;e++)typeof a[e]==="string"&&!/^\s*[+\-]?\d+\s*$/.test(a[e])?c.push(0):c.push(na(a[e],b));return c}else return na(a,b)};d.__int_cast=function(a){return 0|
a};d.__instanceof=function(a,b){if(typeof b!=="function")throw"Function is expected as type argument for instanceof operator";if(typeof a==="string")return b===Object||b===String;if(a instanceof b)return true;if(typeof a!=="object"||a===null)return false;var c=a.constructor;if(b.$isInterface){for(var e=[];c;){if(c.$interfaces)e=e.concat(c.$interfaces);c=c.$base}for(;e.length>0;){c=e.shift();if(c===b)return true;if(c.$interfaces)e=e.concat(c.$interfaces)}return false}for(;c.hasOwnProperty("$base");){c=
c.$base;if(c===b)return true}return false};d.abs=x.abs;d.ceil=x.ceil;d.constrain=function(a,b,c){return a>c?c:a<b?b:a};d.dist=function(){var a,b,c;if(arguments.length===4){a=arguments[0]-arguments[2];b=arguments[1]-arguments[3];return x.sqrt(a*a+b*b)}else if(arguments.length===6){a=arguments[0]-arguments[3];b=arguments[1]-arguments[4];c=arguments[2]-arguments[5];return x.sqrt(a*a+b*b+c*c)}};d.exp=x.exp;d.floor=x.floor;d.lerp=function(a,b,c){return(b-a)*c+a};d.log=x.log;d.mag=function(a,b,c){if(arguments.length===
2)return x.sqrt(a*a+b*b);else if(arguments.length===3)return x.sqrt(a*a+b*b+c*c)};d.map=function(a,b,c,e,f){return e+(f-e)*((a-b)/(c-b))};d.max=function(){if(arguments.length===2)return arguments[0]<arguments[1]?arguments[1]:arguments[0];else{var a=arguments.length===1?arguments[0]:arguments;if(!("length"in a&&a.length>0))throw"Non-empty array is expected";for(var b=a[0],c=a.length,e=1;e<c;++e)if(b<a[e])b=a[e];return b}};d.min=function(){if(arguments.length===2)return arguments[0]<arguments[1]?arguments[0]:
arguments[1];else{var a=arguments.length===1?arguments[0]:arguments;if(!("length"in a&&a.length>0))throw"Non-empty array is expected";for(var b=a[0],c=a.length,e=1;e<c;++e)if(b>a[e])b=a[e];return b}};d.norm=function(a,b,c){return(a-b)/(c-b)};d.pow=x.pow;d.round=x.round;d.sq=function(a){return a*a};d.sqrt=x.sqrt;d.acos=x.acos;d.asin=x.asin;d.atan=x.atan;d.atan2=x.atan2;d.cos=x.cos;d.degrees=function(a){return a*180/x.PI};d.radians=function(a){return a/180*x.PI};d.sin=x.sin;d.tan=x.tan;var Sc=x.random;
d.random=function(){if(arguments.length===0)return Sc();else if(arguments.length===1)return Sc()*arguments[0];else{var a=arguments[0],b=arguments[1];return Sc()*(b-a)+a}};va.createRandomized=function(){var a=new Date;return new va(a/6E4&4294967295,a&4294967295)};d.randomSeed=function(a){Sc=(new va(a)).nextDouble};d.Random=function(a){var b=false,c,e;this.nextGaussian=function(){if(b){b=false;return c}else{var f,g,h;do{f=2*e()-1;g=2*e()-1;h=f*f+g*g}while(h>=1||h===0);h=x.sqrt(-2*x.log(h)/h);c=g*h;
b=true;return f*h}};e=a===E?x.random:(new va(a)).nextDouble};var xb={generator:E,octaves:4,fallout:0.5,seed:E};d.noise=function(a,b,c){if(xb.generator===E)xb.generator=new Ea(xb.seed);for(var e=xb.generator,f=1,g=1,h=0,i=0;i<xb.octaves;++i){f*=xb.fallout;switch(arguments.length){case 1:h+=f*(1+e.noise1d(g*a))/2;break;case 2:h+=f*(1+e.noise2d(g*a,g*b))/2;break;case 3:h+=f*(1+e.noise3d(g*a,g*b,g*c))/2}g*=2}return h};d.noiseDetail=function(a,b){xb.octaves=a;if(b!==E)xb.fallout=b};d.noiseSeed=function(a){xb.seed=
a;xb.generator=E};aa.prototype.size=function(a,b){d.stroke(0);d.fill(255);var c={fillStyle:m.fillStyle,strokeStyle:m.strokeStyle,lineCap:m.lineCap,lineJoin:m.lineJoin};if(v.style.length>0){v.style.removeProperty("width");v.style.removeProperty("height")}v.width=d.width=a||100;v.height=d.height=b||100;for(var e in c)if(c.hasOwnProperty(e))m[e]=c[e];d.textSize(R);d.background();Gd=x.max(1E3,a*b*0.05);d.externals.context=m;for(c=0;c<k.SINCOS_LENGTH;c++){jc[c]=d.sin(c*(k.PI/180)*0.5);kc[c]=d.cos(c*(k.PI/
180)*0.5)}};$.prototype.size=function(){if(m===E){m=v.getContext("2d");lc=new Ab;mc=new Ab;Va=new zb;Wa=new zb;oa=Va;wb=Wa}aa.prototype.size.apply(this,arguments)};ba.prototype.size=function(){var a=false;return function(b,c){function e(g){for(var h=["experimental-webgl","webgl","webkit-3d"],i,j=0,r=h.length;j<r;j++)if(i=g.getContext(h[j]))break;return i}if(a)throw"Multiple calls to size() for 3D renders are not allowed.";a=true;try{if(v.width!==b||v.height!==c){v.setAttribute("width",b);v.setAttribute("height",
c)}m=e(v);Cd=m.createTexture();Dd=m.createTexture()}catch(f){V.debug(f)}if(!m)throw"WebGL context is not supported on this browser.";m.viewport(0,0,v.width,v.height);m.enable(m.DEPTH_TEST);m.enable(m.BLEND);m.blendFunc(m.SRC_ALPHA,m.ONE_MINUS_SRC_ALPHA);Y=md(m,"varying vec4 frontColor;attribute vec3 Vertex;attribute vec2 aTextureCoord;uniform vec4 color;uniform mat4 model;uniform mat4 view;uniform mat4 projection;uniform float pointSize;varying vec2 vTextureCoord;void main(void) {  gl_PointSize = pointSize;  frontColor = color;  gl_Position = projection * view * model * vec4(Vertex, 1.0);  vTextureCoord = aTextureCoord;}",
"#ifdef GL_ES\nprecision highp float;\n#endif\nvarying vec4 frontColor;varying vec2 vTextureCoord;uniform sampler2D uSampler;uniform int picktype;void main(void){  if(picktype == 0){    gl_FragColor = frontColor;  }  else if(picktype == 1){    float alpha = texture2D(uSampler, vTextureCoord).a;    gl_FragColor = vec4(frontColor.rgb*alpha, alpha);\n  }}");m.useProgram(Y);d.strokeWeight(1);H=md(m,fe,"#ifdef GL_ES\nprecision highp float;\n#endif\nvarying vec4 frontColor;uniform sampler2D sampler;uniform bool usingTexture;varying vec2 vTexture;void main(void){  if(usingTexture){    gl_FragColor =  vec4(texture2D(sampler, vTexture.xy));  }  else{    gl_FragColor = frontColor;  }}");
db=md(m,"varying vec4 frontColor;attribute vec3 aVertex;attribute vec4 aColor;uniform mat4 uView;uniform mat4 uProjection;void main(void) {  frontColor = aColor;  gl_Position = uProjection * uView * vec4(aVertex, 1.0);}","#ifdef GL_ES\nprecision highp float;\n#endif\nvarying vec4 frontColor;void main(void){  gl_FragColor = frontColor;}");m.useProgram(H);N("usingTexture3d",H,"usingTexture",eb);d.lightFalloff(1,0,0);d.shininess(1);d.ambient(255,255,255);d.specular(0,0,0);d.emissive(0,0,0);$c=m.createBuffer();
m.bindBuffer(m.ARRAY_BUFFER,$c);m.bufferData(m.ARRAY_BUFFER,Ld,m.STATIC_DRAW);ad=m.createBuffer();m.bindBuffer(m.ARRAY_BUFFER,ad);m.bufferData(m.ARRAY_BUFFER,de,m.STATIC_DRAW);bd=m.createBuffer();m.bindBuffer(m.ARRAY_BUFFER,bd);m.bufferData(m.ARRAY_BUFFER,Md,m.STATIC_DRAW);Jc=m.createBuffer();m.bindBuffer(m.ARRAY_BUFFER,Jc);m.bufferData(m.ARRAY_BUFFER,ld,m.STATIC_DRAW);cd=m.createBuffer();m.bindBuffer(m.ARRAY_BUFFER,cd);m.bufferData(m.ARRAY_BUFFER,ee,m.STATIC_DRAW);zc=m.createBuffer();dd=m.createBuffer();
zd=m.createBuffer();ed=m.createBuffer();Ad=m.createBuffer();Bd=m.createBuffer();Kc=m.createBuffer();m.bindBuffer(m.ARRAY_BUFFER,Kc);m.bufferData(m.ARRAY_BUFFER,new ua([0,0,0]),m.STATIC_DRAW);fd=m.createBuffer();m.bindBuffer(m.ARRAY_BUFFER,fd);m.bufferData(m.ARRAY_BUFFER,new ua([1,1,0,-1,1,0,-1,-1,0,1,-1,0]),m.STATIC_DRAW);gd=m.createBuffer();m.bindBuffer(m.ARRAY_BUFFER,gd);m.bufferData(m.ARRAY_BUFFER,new ua([0,0,1,0,1,1,0,1]),m.STATIC_DRAW);hd=m.createBuffer();m.bindBuffer(m.ELEMENT_ARRAY_BUFFER,
hd);m.bufferData(m.ELEMENT_ARRAY_BUFFER,new $d([0,1,2,2,3,0]),m.STATIC_DRAW);Vb=new X;vb=new X;oa=new X;wb=new X;ob=new X;d.camera();d.perspective();Va=oa;Wa=wb;lc=new Ab;mc=new Ab;Lb=new X;cb=new X;Ha=new X;ic=new X;Yc=new X;Zc=new X;Zc.set(-1,3,-3,1,3,-6,3,0,-3,3,0,0,1,0,0,0);aa.prototype.size.apply(this,arguments)}}();$.prototype.ambientLight=aa.prototype.a3DOnlyFunction;ba.prototype.ambientLight=function(a,b,c,e,f,g){if(ca===k.MAX_LIGHTS)throw"can only create "+k.MAX_LIGHTS+" lights";e=new Ya(e,
f,g);f=new X;f.scale(1,-1,1);f.apply(oa.array());f.mult(e,e);m.useProgram(H);C("lights.color.3d."+ca,H,"lights"+ca+".color",[a/255,b/255,c/255]);C("lights.position.3d."+ca,H,"lights"+ca+".position",e.array());N("lights.type.3d."+ca,H,"lights"+ca+".type",0);N("lightCount3d",H,"lightCount",++ca)};$.prototype.directionalLight=aa.prototype.a3DOnlyFunction;ba.prototype.directionalLight=function(a,b,c,e,f,g){if(ca===k.MAX_LIGHTS)throw"can only create "+k.MAX_LIGHTS+" lights";m.useProgram(H);var h=new X;
h.scale(1,-1,1);h.apply(oa.array());h=h.array();e=[h[0]*e+h[4]*f+h[8]*g,h[1]*e+h[5]*f+h[9]*g,h[2]*e+h[6]*f+h[10]*g];C("lights.color.3d."+ca,H,"lights"+ca+".color",[a/255,b/255,c/255]);C("lights.position.3d."+ca,H,"lights"+ca+".position",e);N("lights.type.3d."+ca,H,"lights"+ca+".type",1);N("lightCount3d",H,"lightCount",++ca)};$.prototype.lightFalloff=aa.prototype.a3DOnlyFunction;ba.prototype.lightFalloff=function(a,b,c){m.useProgram(H);C("falloff3d",H,"falloff",[a,b,c])};$.prototype.lightSpecular=
aa.prototype.a3DOnlyFunction;ba.prototype.lightSpecular=function(a,b,c){m.useProgram(H);C("specular3d",H,"specular",[a/255,b/255,c/255])};d.lights=function(){d.ambientLight(128,128,128);d.directionalLight(128,128,128,0,0,-1);d.lightFalloff(1,0,0);d.lightSpecular(0,0,0)};$.prototype.pointLight=aa.prototype.a3DOnlyFunction;ba.prototype.pointLight=function(a,b,c,e,f,g){if(ca===k.MAX_LIGHTS)throw"can only create "+k.MAX_LIGHTS+" lights";e=new Ya(e,f,g);f=new X;f.scale(1,-1,1);f.apply(oa.array());f.mult(e,
e);m.useProgram(H);C("lights.color.3d."+ca,H,"lights"+ca+".color",[a/255,b/255,c/255]);C("lights.position.3d."+ca,H,"lights"+ca+".position",e.array());N("lights.type.3d."+ca,H,"lights"+ca+".type",2);N("lightCount3d",H,"lightCount",++ca)};$.prototype.noLights=aa.prototype.a3DOnlyFunction;ba.prototype.noLights=function(){ca=0;m.useProgram(H);N("lightCount3d",H,"lightCount",ca)};$.prototype.spotLight=aa.prototype.a3DOnlyFunction;ba.prototype.spotLight=function(a,b,c,e,f,g,h,i,j,r,s){if(ca===k.MAX_LIGHTS)throw"can only create "+
k.MAX_LIGHTS+" lights";m.useProgram(H);e=new Ya(e,f,g);f=new X;f.scale(1,-1,1);f.apply(oa.array());f.mult(e,e);f=f.array();h=[f[0]*h+f[4]*i+f[8]*j,f[1]*h+f[5]*i+f[9]*j,f[2]*h+f[6]*i+f[10]*j];C("lights.color.3d."+ca,H,"lights"+ca+".color",[a/255,b/255,c/255]);C("lights.position.3d."+ca,H,"lights"+ca+".position",e.array());C("lights.direction.3d."+ca,H,"lights"+ca+".direction",h);C("lights.concentration.3d."+ca,H,"lights"+ca+".concentration",s);C("lights.angle.3d."+ca,H,"lights"+ca+".angle",r);N("lights.type.3d."+
ca,H,"lights"+ca+".type",3);N("lightCount3d",H,"lightCount",++ca)};d.beginCamera=function(){if(Nc)throw"You cannot call beginCamera() again before calling endCamera()";else{Nc=true;Va=vb;Wa=Vb}};d.endCamera=function(){if(Nc){oa.set(Vb);wb.set(vb);Va=oa;Wa=wb;Nc=false}else throw"You cannot call endCamera() before calling beginCamera()";};d.camera=function(a,b,c,e,f,g,h,i,j){if(arguments.length===0){kd=v.width/2;Wb=v.height/2;Xb=Wb/x.tan(Oc/2);a=kd;b=Wb;c=Xb;e=kd;f=Wb;h=g=0;i=1;j=0}var r=new Ya(a-e,
b-f,c-g),s=new Ya(h,i,j);r.normalize();var A=Ya.cross(s,r);s=Ya.cross(r,A);A.normalize();s.normalize();Vb.set(A.x,A.y,A.z,0,s.x,s.y,s.z,0,r.x,r.y,r.z,0,0,0,0,1);Vb.translate(-a,-b,-c);vb.reset();vb.invApply(A.x,A.y,A.z,0,s.x,s.y,s.z,0,r.x,r.y,r.z,0,0,0,0,1);vb.translate(a,b,c);oa.set(Vb);wb.set(vb)};d.perspective=function(a,b,c,e){if(arguments.length===0){Wb=v.height/2;Xb=Wb/x.tan(Oc/2);Hd=Xb/10;Id=Xb*10;Jd=v.width/v.height;a=Oc;b=Jd;c=Hd;e=Id}var f,g;f=c*x.tan(a/2);g=-f;d.frustum(g*b,f*b,g,f,c,e)};
d.frustum=function(a,b,c,e,f,g){ob=new X;ob.set(2*f/(b-a),0,(b+a)/(b-a),0,0,2*f/(e-c),(e+c)/(e-c),0,0,0,-(g+f)/(g-f),-(2*g*f)/(g-f),0,0,-1,0);a=new X;a.set(ob);a.transpose();m.useProgram(Y);K("projection2d",Y,"projection",false,a.array());m.useProgram(H);K("projection3d",H,"projection",false,a.array());m.useProgram(db);K("uProjectionUS",db,"uProjection",false,a.array())};d.ortho=function(a,b,c,e,f,g){if(arguments.length===0){a=0;b=d.width;c=0;e=d.height;f=-10;g=10}var h=2/(b-a),i=2/(e-c),j=-2/(g-
f),r=-(b+a)/(b-a),s=-(e+c)/(e-c),A=-(g+f)/(g-f);ob=new X;ob.set(h,0,0,r,0,i,0,s,0,0,j,A,0,0,0,1);h=new X;h.set(ob);h.transpose();m.useProgram(Y);K("projection2d",Y,"projection",false,h.array());m.useProgram(H);K("projection3d",H,"projection",false,h.array());m.useProgram(db);K("uProjectionUS",db,"uProjection",false,h.array())};d.printProjection=function(){ob.print()};d.printCamera=function(){Vb.print()};$.prototype.box=aa.prototype.a3DOnlyFunction;ba.prototype.box=function(a,b,c){if(!b||!c)b=c=a;
var e=new X;e.scale(a,b,c);a=new X;a.scale(1,-1,1);a.apply(oa.array());a.transpose();if(ma){m.useProgram(H);K("model3d",H,"model",false,e.array());K("view3d",H,"view",false,a.array());m.enable(m.POLYGON_OFFSET_FILL);m.polygonOffset(1,1);C("color3d",H,"color",Ra);if(ca>0){b=new X;b.set(a);c=new X;c.set(e);b.mult(c);c=new X;c.set(b);c.invert();c.transpose();K("normalTransform3d",H,"normalTransform",false,c.array());B("normal3d",H,"Normal",3,ad)}else Q("normal3d",H,"Normal");B("vertex3d",H,"Vertex",
3,$c);Q("aColor3d",H,"aColor");Q("aTexture3d",H,"aTexture");m.drawArrays(m.TRIANGLES,0,Ld.length/3);m.disable(m.POLYGON_OFFSET_FILL)}if(Ma>0&&ea){m.useProgram(Y);K("model2d",Y,"model",false,e.array());K("view2d",Y,"view",false,a.array());C("color2d",Y,"color",Sa);N("picktype2d",Y,"picktype",0);B("vertex2d",Y,"Vertex",3,bd);Q("aTextureCoord2d",Y,"aTextureCoord");m.lineWidth(Ma);m.drawArrays(m.LINES,0,Md.length/3)}};d.sphereDetail=function(a,b){var c;if(arguments.length===1)a=b=arguments[0];if(a<3)a=
3;if(b<2)b=2;if(!(a===Ub&&b===Mc)){var e=k.SINCOS_LENGTH/a,f=new ua(a),g=new ua(a);for(c=0;c<a;c++){f[c]=kc[parseInt(c*e%k.SINCOS_LENGTH,10)];g[c]=jc[parseInt(c*e%k.SINCOS_LENGTH,10)]}c=a*(b-1)+2;e=0;sb=new ua(c);tb=new ua(c);ub=new ua(c);var h=k.SINCOS_LENGTH*0.5/b,i=h;for(c=1;c<b;c++){for(var j=jc[parseInt(i%k.SINCOS_LENGTH,10)],r=-kc[parseInt(i%k.SINCOS_LENGTH,10)],s=0;s<a;s++){sb[e]=f[s]*j;tb[e]=r;ub[e++]=g[s]*j}i+=h}Ub=a;Mc=b;fa=[];for(f=0;f<Ub;f++){fa.push(0);fa.push(-1);fa.push(0);fa.push(sb[f]);
fa.push(tb[f]);fa.push(ub[f])}fa.push(0);fa.push(-1);fa.push(0);fa.push(sb[0]);fa.push(tb[0]);fa.push(ub[0]);h=0;for(f=2;f<Mc;f++){g=c=h;h+=Ub;e=h;for(i=0;i<Ub;i++){fa.push(parseFloat(sb[g]));fa.push(parseFloat(tb[g]));fa.push(parseFloat(ub[g++]));fa.push(parseFloat(sb[e]));fa.push(parseFloat(tb[e]));fa.push(parseFloat(ub[e++]))}g=c;e=h;fa.push(parseFloat(sb[g]));fa.push(parseFloat(tb[g]));fa.push(parseFloat(ub[g]));fa.push(parseFloat(sb[e]));fa.push(parseFloat(tb[e]));fa.push(parseFloat(ub[e]))}for(f=
0;f<Ub;f++){e=h+f;fa.push(parseFloat(sb[e]));fa.push(parseFloat(tb[e]));fa.push(parseFloat(ub[e]));fa.push(0);fa.push(1);fa.push(0)}fa.push(parseFloat(sb[h]));fa.push(parseFloat(tb[h]));fa.push(parseFloat(ub[h]));fa.push(0);fa.push(1);fa.push(0);m.bindBuffer(m.ARRAY_BUFFER,zc);m.bufferData(m.ARRAY_BUFFER,new ua(fa),m.STATIC_DRAW)}};$.prototype.sphere=aa.prototype.a3DOnlyFunction;ba.prototype.sphere=function(a){if(Ub<3||Mc<2)d.sphereDetail(30);var b=new X;b.scale(a,a,a);a=new X;a.scale(1,-1,1);a.apply(oa.array());
a.transpose();if(ma){if(ca>0){var c=new X;c.set(a);var e=new X;e.set(b);c.mult(e);e=new X;e.set(c);e.invert();e.transpose();K("normalTransform3d",H,"normalTransform",false,e.array());B("normal3d",H,"Normal",3,zc)}else Q("normal3d",H,"Normal");m.useProgram(H);Q("aTexture3d",H,"aTexture");K("model3d",H,"model",false,b.array());K("view3d",H,"view",false,a.array());B("vertex3d",H,"Vertex",3,zc);Q("aColor3d",H,"aColor");m.enable(m.POLYGON_OFFSET_FILL);m.polygonOffset(1,1);C("color3d",H,"color",Ra);m.drawArrays(m.TRIANGLE_STRIP,
0,fa.length/3);m.disable(m.POLYGON_OFFSET_FILL)}if(Ma>0&&ea){m.useProgram(Y);K("model2d",Y,"model",false,b.array());K("view2d",Y,"view",false,a.array());B("vertex2d",Y,"Vertex",3,zc);Q("aTextureCoord2d",Y,"aTextureCoord");C("color2d",Y,"color",Sa);N("picktype2d",Y,"picktype",0);m.lineWidth(Ma);m.drawArrays(m.LINE_STRIP,0,fa.length/3)}};d.modelX=function(a,b,c){var e=oa.array(),f=vb.array(),g=e[0]*a+e[1]*b+e[2]*c+e[3],h=e[4]*a+e[5]*b+e[6]*c+e[7],i=e[8]*a+e[9]*b+e[10]*c+e[11];b=e[12]*a+e[13]*b+e[14]*
c+e[15];a=f[0]*g+f[1]*h+f[2]*i+f[3]*b;f=f[12]*g+f[13]*h+f[14]*i+f[15]*b;return f!==0?a/f:a};d.modelY=function(a,b,c){var e=oa.array(),f=vb.array(),g=e[0]*a+e[1]*b+e[2]*c+e[3],h=e[4]*a+e[5]*b+e[6]*c+e[7],i=e[8]*a+e[9]*b+e[10]*c+e[11];b=e[12]*a+e[13]*b+e[14]*c+e[15];a=f[4]*g+f[5]*h+f[6]*i+f[7]*b;f=f[12]*g+f[13]*h+f[14]*i+f[15]*b;return f!==0?a/f:a};d.modelZ=function(a,b,c){var e=oa.array(),f=vb.array(),g=e[0]*a+e[1]*b+e[2]*c+e[3],h=e[4]*a+e[5]*b+e[6]*c+e[7],i=e[8]*a+e[9]*b+e[10]*c+e[11];b=e[12]*a+e[13]*
b+e[14]*c+e[15];a=f[8]*g+f[9]*h+f[10]*i+f[11]*b;f=f[12]*g+f[13]*h+f[14]*i+f[15]*b;return f!==0?a/f:a};$.prototype.ambient=aa.prototype.a3DOnlyFunction;ba.prototype.ambient=function(){var a=arguments;m.useProgram(H);N("usingMat3d",H,"usingMat",true);if(a.length===1)if(typeof a[0]==="string"){a=a[0].slice(5,-1).split(",");C("mat_ambient3d",H,"mat_ambient",[a[0]/255,a[1]/255,a[2]/255])}else C("mat_ambient3d",H,"mat_ambient",[a[0]/255,a[0]/255,a[0]/255]);else C("mat_ambient3d",H,"mat_ambient",[a[0]/255,
a[1]/255,a[2]/255])};$.prototype.emissive=aa.prototype.a3DOnlyFunction;ba.prototype.emissive=function(){var a=arguments;m.useProgram(H);N("usingMat3d",H,"usingMat",true);if(a.length===1)if(typeof a[0]==="string"){a=a[0].slice(5,-1).split(",");C("mat_emissive3d",H,"mat_emissive",[a[0]/255,a[1]/255,a[2]/255])}else C("mat_emissive3d",H,"mat_emissive",[a[0]/255,a[0]/255,a[0]/255]);else C("mat_emissive3d",H,"mat_emissive",[a[0]/255,a[1]/255,a[2]/255])};$.prototype.shininess=aa.prototype.a3DOnlyFunction;
ba.prototype.shininess=function(a){m.useProgram(H);N("usingMat3d",H,"usingMat",true);C("shininess3d",H,"shininess",a)};$.prototype.specular=aa.prototype.a3DOnlyFunction;ba.prototype.specular=function(){var a=d.color.apply(this,arguments);m.useProgram(H);N("usingMat3d",H,"usingMat",true);C("mat_specular3d",H,"mat_specular",d.color.toGLArray(a).slice(0,3))};d.screenX=function(a,b,c){var e=oa.array();if(e.length===16){var f=e[0]*a+e[1]*b+e[2]*c+e[3],g=e[4]*a+e[5]*b+e[6]*c+e[7],h=e[8]*a+e[9]*b+e[10]*
c+e[11];b=e[12]*a+e[13]*b+e[14]*c+e[15];c=ob.array();a=c[0]*f+c[1]*g+c[2]*h+c[3]*b;f=c[12]*f+c[13]*g+c[14]*h+c[15]*b;if(f!==0)a/=f;return d.width*(1+a)/2}else return oa.multX(a,b)};d.screenY=function(a,b,c){var e=oa.array();if(e.length===16){var f=e[0]*a+e[1]*b+e[2]*c+e[3],g=e[4]*a+e[5]*b+e[6]*c+e[7],h=e[8]*a+e[9]*b+e[10]*c+e[11];b=e[12]*a+e[13]*b+e[14]*c+e[15];c=ob.array();a=c[4]*f+c[5]*g+c[6]*h+c[7]*b;f=c[12]*f+c[13]*g+c[14]*h+c[15]*b;if(f!==0)a/=f;return d.height*(1+a)/2}else return oa.multY(a,
b)};d.screenZ=function(a,b,c){var e=oa.array();if(e.length!==16)return 0;var f=ob.array(),g=e[0]*a+e[1]*b+e[2]*c+e[3],h=e[4]*a+e[5]*b+e[6]*c+e[7],i=e[8]*a+e[9]*b+e[10]*c+e[11];b=e[12]*a+e[13]*b+e[14]*c+e[15];a=f[8]*g+f[9]*h+f[10]*i+f[11]*b;f=f[12]*g+f[13]*h+f[14]*i+f[15]*b;if(f!==0)a/=f;return(a+1)/2};aa.prototype.fill=function(a,b,c,e){a=d.color(a,b,c,e);if(!(a===ib&&ma)){ma=true;ib=a}};$.prototype.fill=function(){aa.prototype.fill.apply(this,arguments);jb=true};ba.prototype.fill=function(){aa.prototype.fill.apply(this,
arguments);Ra=d.color.toGLArray(ib)};d.noFill=function(){ma=false};aa.prototype.stroke=function(a,b,c,e){a=d.color(a,b,c,e);if(!(a===Fa&&ea)){ea=true;Fa=a}};$.prototype.stroke=function(){aa.prototype.stroke.apply(this,arguments);Jb=true};ba.prototype.stroke=function(){aa.prototype.stroke.apply(this,arguments);Sa=d.color.toGLArray(Fa)};d.noStroke=function(){ea=false};aa.prototype.strokeWeight=function(a){Ma=a};$.prototype.strokeWeight=function(a){aa.prototype.strokeWeight.apply(this,arguments);m.lineWidth=
a};ba.prototype.strokeWeight=function(a){aa.prototype.strokeWeight.apply(this,arguments);m.useProgram(Y);C("pointSize2d",Y,"pointSize",a)};d.strokeCap=function(a){Ja.$ensureContext().lineCap=a};d.strokeJoin=function(a){Ja.$ensureContext().lineJoin=a};aa.prototype.smooth=function(){v.style.setProperty("image-rendering","optimizeQuality","important")};$.prototype.smooth=function(){aa.prototype.smooth.apply(this,arguments);if("mozImageSmoothingEnabled"in m)m.mozImageSmoothingEnabled=true};aa.prototype.noSmooth=
function(){v.style.setProperty("image-rendering","optimizeSpeed","important")};$.prototype.noSmooth=function(){aa.prototype.noSmooth.apply(this,arguments);if("mozImageSmoothingEnabled"in m)m.mozImageSmoothingEnabled=false};$.prototype.point=function(a,b){if(ea)if(Ca.options.crispLines){var c=x.PI/4,e=d.get(a,b);d.set(a,b,mb(e,Fa,c))}else if(Ma>1){m.fillStyle=d.color.toString(Fa);jb=true;m.beginPath();m.arc(a,b,Ma/2,0,k.TWO_PI,false);m.fill();m.closePath()}else{m.fillStyle=d.color.toString(Fa);m.fillRect(x.round(a),
x.round(b),1,1);jb=true}};ba.prototype.point=function(a,b,c){var e=new X;e.translate(a,b,c||0);e.transpose();a=new X;a.scale(1,-1,1);a.apply(oa.array());a.transpose();m.useProgram(Y);K("model2d",Y,"model",false,e.array());K("view2d",Y,"view",false,a.array());if(Ma>0&&ea){C("color2d",Y,"color",Sa);N("picktype2d",Y,"picktype",0);B("vertex2d",Y,"Vertex",3,Kc);Q("aTextureCoord2d",Y,"aTextureCoord");m.drawArrays(m.POINTS,0,1)}};d.beginShape=function(a){wa=a;t=[]};aa.prototype.vertex=function(){var a=[];
if(pc)pc=false;if(arguments.length===4){a[0]=arguments[0];a[1]=arguments[1];a[2]=0;a[3]=arguments[2];a[4]=arguments[3]}else{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=true;return a};$.prototype.vertex=function(){var a=aa.prototype.vertex.apply(this,arguments);a[5]=ib;a[6]=Fa;t.push(a)};ba.prototype.vertex=function(){var a=aa.prototype.vertex.apply(this,arguments);a[5]=Ra[0];a[6]=Ra[1];a[7]=Ra[2];a[8]=Ra[3];a[9]=Sa[0];a[10]=Sa[1];a[11]=
Sa[2];a[12]=Sa[3];a[13]=Eb;a[14]=Rb;a[15]=qb;t.push(a)};var Qd=function(a,b){var c=new X;c.scale(1,-1,1);c.apply(oa.array());c.transpose();m.useProgram(db);K("uViewUS",db,"uView",false,c.array());B("aVertexUS",db,"aVertex",3,Kc);m.bufferData(m.ARRAY_BUFFER,new ua(a),m.STREAM_DRAW);B("aColorUS",db,"aColor",4,ed);m.bufferData(m.ARRAY_BUFFER,new ua(b),m.STREAM_DRAW);m.drawArrays(m.POINTS,0,a.length/3)},kb=function(a,b,c){b=b==="LINES"?m.LINES:b==="LINE_LOOP"?m.LINE_LOOP:m.LINE_STRIP;var e=new X;e.scale(1,
-1,1);e.apply(oa.array());e.transpose();m.useProgram(db);K("uViewUS",db,"uView",false,e.array());B("aVertexUS",db,"aVertex",3,dd);m.bufferData(m.ARRAY_BUFFER,new ua(a),m.STREAM_DRAW);B("aColorUS",db,"aColor",4,Ad);m.bufferData(m.ARRAY_BUFFER,new ua(c),m.STREAM_DRAW);m.lineWidth(Ma);m.drawArrays(b,0,a.length/3)},Bb=function(a,b,c,e){b=b==="TRIANGLES"?m.TRIANGLES:b==="TRIANGLE_FAN"?m.TRIANGLE_FAN:m.TRIANGLE_STRIP;var f=new X;f.scale(1,-1,1);f.apply(oa.array());f.transpose();m.useProgram(H);K("model3d",
H,"model",false,[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]);K("view3d",H,"view",false,f.array());m.enable(m.POLYGON_OFFSET_FILL);m.polygonOffset(1,1);C("color3d",H,"color",[-1,0,0,0]);B("vertex3d",H,"Vertex",3,zd);m.bufferData(m.ARRAY_BUFFER,new ua(a),m.STREAM_DRAW);B("aColor3d",H,"aColor",4,ed);m.bufferData(m.ARRAY_BUFFER,new ua(c),m.STREAM_DRAW);Q("normal3d",H,"Normal");if(eb){if(Ed===k.IMAGE)for(c=0;c<e.length;c+=2){e[c]/=Lc.width;e[c+1]/=Lc.height}for(c=0;c<e.length;c+=2){if(e[c+0]>1)e[c+0]-=e[c+0]-1;
if(e[c+1]>1)e[c+1]-=e[c+1]-1}N("usingTexture3d",H,"usingTexture",eb);B("aTexture3d",H,"aTexture",2,Bd);m.bufferData(m.ARRAY_BUFFER,new ua(e),m.STREAM_DRAW)}m.drawArrays(b,0,a.length/3);m.disable(m.POLYGON_OFFSET_FILL)};$.prototype.endShape=function(a){if(t.length!==0){a=a===k.CLOSE;var b=[],c=[],e=[],f=[],g;pc=true;var h,i,j=t.length;for(h=0;h<j;h++){g=t[h];for(i=0;i<3;i++)b.push(g[i])}for(h=0;h<j;h++){g=t[h];for(i=5;i<9;i++)c.push(g[i])}for(h=0;h<j;h++){g=t[h];for(i=9;i<13;i++)e.push(g[i])}for(h=
0;h<j;h++){g=t[h];f.push(g[3]);f.push(g[4])}if(a){b.push(t[0][0]);b.push(t[0][1]);b.push(t[0][2]);for(h=5;h<9;h++)c.push(t[0][h]);for(h=9;h<13;h++)e.push(t[0][h]);f.push(t[0][3]);f.push(t[0][4])}if(nc&&(wa===k.POLYGON||wa===E)){if(j>3){b=[];c=1-tc;m.beginPath();m.moveTo(t[1][0],t[1][1]);for(h=1;h+2<j;h++){g=t[h];b[0]=[g[0],g[1]];b[1]=[g[0]+(c*t[h+1][0]-c*t[h-1][0])/6,g[1]+(c*t[h+1][1]-c*t[h-1][1])/6];b[2]=[t[h+1][0]+(c*t[h][0]-c*t[h+2][0])/6,t[h+1][1]+(c*t[h][1]-c*t[h+2][1])/6];b[3]=[t[h+1][0],t[h+
1][1]];m.bezierCurveTo(b[1][0],b[1][1],b[2][0],b[2][1],b[3][0],b[3][1])}a&&m.lineTo(t[0][0],t[0][1]);sa();La();m.closePath()}}else if(oc&&(wa===k.POLYGON||wa===E)){m.beginPath();for(h=0;h<j;h++){g=t[h];if(t[h].isVert)t[h].moveTo?m.moveTo(g[0],g[1]):m.lineTo(g[0],g[1]);else m.bezierCurveTo(t[h][0],t[h][1],t[h][2],t[h][3],t[h][4],t[h][5])}a&&m.lineTo(t[0][0],t[0][1]);sa();La();m.closePath()}else if(wa===k.POINTS)for(h=0;h<j;h++){g=t[h];ea&&d.stroke(g[6]);d.point(g[0],g[1])}else if(wa===k.LINES)for(h=
0;h+1<j;h+=2){g=t[h];ea&&d.stroke(t[h+1][6]);d.line(g[0],g[1],t[h+1][0],t[h+1][1])}else if(wa===k.TRIANGLES)for(h=0;h+2<j;h+=3){g=t[h];m.beginPath();m.moveTo(g[0],g[1]);m.lineTo(t[h+1][0],t[h+1][1]);m.lineTo(t[h+2][0],t[h+2][1]);m.lineTo(g[0],g[1]);if(ma){d.fill(t[h+2][5]);sa()}if(ea){d.stroke(t[h+2][6]);La()}m.closePath()}else if(wa===k.TRIANGLE_STRIP)for(h=0;h+1<j;h++){g=t[h];m.beginPath();m.moveTo(t[h+1][0],t[h+1][1]);m.lineTo(g[0],g[1]);ea&&d.stroke(t[h+1][6]);ma&&d.fill(t[h+1][5]);if(h+2<j){m.lineTo(t[h+
2][0],t[h+2][1]);ea&&d.stroke(t[h+2][6]);ma&&d.fill(t[h+2][5])}sa();La();m.closePath()}else if(wa===k.TRIANGLE_FAN){if(j>2){m.beginPath();m.moveTo(t[0][0],t[0][1]);m.lineTo(t[1][0],t[1][1]);m.lineTo(t[2][0],t[2][1]);if(ma){d.fill(t[2][5]);sa()}if(ea){d.stroke(t[2][6]);La()}m.closePath();for(h=3;h<j;h++){g=t[h];m.beginPath();m.moveTo(t[0][0],t[0][1]);m.lineTo(t[h-1][0],t[h-1][1]);m.lineTo(g[0],g[1]);if(ma){d.fill(g[5]);sa()}if(ea){d.stroke(g[6]);La()}m.closePath()}}}else if(wa===k.QUADS)for(h=0;h+
3<j;h+=4){g=t[h];m.beginPath();m.moveTo(g[0],g[1]);for(i=1;i<4;i++)m.lineTo(t[h+i][0],t[h+i][1]);m.lineTo(g[0],g[1]);if(ma){d.fill(t[h+3][5]);sa()}if(ea){d.stroke(t[h+3][6]);La()}m.closePath()}else if(wa===k.QUAD_STRIP){if(j>3)for(h=0;h+1<j;h+=2){g=t[h];m.beginPath();if(h+3<j){m.moveTo(t[h+2][0],t[h+2][1]);m.lineTo(g[0],g[1]);m.lineTo(t[h+1][0],t[h+1][1]);m.lineTo(t[h+3][0],t[h+3][1]);ma&&d.fill(t[h+3][5]);ea&&d.stroke(t[h+3][6])}else{m.moveTo(g[0],g[1]);m.lineTo(t[h+1][0],t[h+1][1])}sa();La();m.closePath()}}else{m.beginPath();
m.moveTo(t[0][0],t[0][1]);for(h=1;h<j;h++){g=t[h];if(g.isVert)g.moveTo?m.moveTo(g[0],g[1]):m.lineTo(g[0],g[1])}a&&m.lineTo(t[0][0],t[0][1]);sa();La();m.closePath()}oc=nc=false;Xa=[];Ta=0}};ba.prototype.endShape=function(a){if(t.length!==0){var b=a===k.CLOSE;a=[];var c=[],e=[],f=[],g=[],h;pc=true;var i,j,r=t.length;for(i=0;i<r;i++){h=t[i];for(j=0;j<3;j++)c.push(h[j])}for(i=0;i<r;i++){h=t[i];for(j=5;j<9;j++)e.push(h[j])}for(i=0;i<r;i++){h=t[i];for(j=9;j<13;j++)f.push(h[j])}for(i=0;i<r;i++){h=t[i];g.push(h[3]);
g.push(h[4])}if(b){c.push(t[0][0]);c.push(t[0][1]);c.push(t[0][2]);for(i=5;i<9;i++)e.push(t[0][i]);for(i=9;i<13;i++)f.push(t[0][i]);g.push(t[0][3]);g.push(t[0][4])}if(nc&&(wa===k.POLYGON||wa===E)){ea&&kb(c,null,f);ma&&Bb(c,null,e)}else if(oc&&(wa===k.POLYGON||wa===E)){a=c;a.splice(a.length-3);f.splice(f.length-4);ea&&kb(a,null,f);ma&&Bb(c,"TRIANGLES",e)}else{if(wa===k.POINTS){for(i=0;i<r;i++){h=t[i];for(j=0;j<3;j++)a.push(h[j])}Qd(a,f)}else if(wa===k.LINES){for(i=0;i<r;i++){h=t[i];for(j=0;j<3;j++)a.push(h[j])}for(i=
0;i<r;i++){h=t[i];for(j=5;j<9;j++)e.push(h[j])}kb(a,"LINES",f)}else if(wa===k.TRIANGLES){if(r>2)for(i=0;i+2<r;i+=3){c=[];g=[];a=[];e=[];f=[];for(j=0;j<3;j++)for(b=0;b<3;b++){a.push(t[i+j][b]);c.push(t[i+j][b])}for(j=0;j<3;j++)for(b=3;b<5;b++)g.push(t[i+j][b]);for(j=0;j<3;j++)for(b=5;b<9;b++){e.push(t[i+j][b]);f.push(t[i+j][b+4])}ea&&kb(a,"LINE_LOOP",f);if(ma||eb)Bb(c,"TRIANGLES",e,g)}}else if(wa===k.TRIANGLE_STRIP){if(r>2)for(i=0;i+2<r;i++){a=[];c=[];f=[];e=[];g=[];for(j=0;j<3;j++)for(b=0;b<3;b++){a.push(t[i+
j][b]);c.push(t[i+j][b])}for(j=0;j<3;j++)for(b=3;b<5;b++)g.push(t[i+j][b]);for(j=0;j<3;j++)for(b=5;b<9;b++){f.push(t[i+j][b+4]);e.push(t[i+j][b])}if(ma||eb)Bb(c,"TRIANGLE_STRIP",e,g);ea&&kb(a,"LINE_LOOP",f)}}else if(wa===k.TRIANGLE_FAN){if(r>2){for(i=0;i<3;i++){h=t[i];for(j=0;j<3;j++)a.push(h[j])}for(i=0;i<3;i++){h=t[i];for(j=9;j<13;j++)f.push(h[j])}ea&&kb(a,"LINE_LOOP",f);for(i=2;i+1<r;i++){a=[];f=[];a.push(t[0][0]);a.push(t[0][1]);a.push(t[0][2]);f.push(t[0][9]);f.push(t[0][10]);f.push(t[0][11]);
f.push(t[0][12]);for(j=0;j<2;j++)for(b=0;b<3;b++)a.push(t[i+j][b]);for(j=0;j<2;j++)for(b=9;b<13;b++)f.push(t[i+j][b]);ea&&kb(a,"LINE_STRIP",f)}if(ma||eb)Bb(c,"TRIANGLE_FAN",e,g)}}else if(wa===k.QUADS)for(i=0;i+3<r;i+=4){a=[];for(j=0;j<4;j++){h=t[i+j];for(b=0;b<3;b++)a.push(h[b])}ea&&kb(a,"LINE_LOOP",f);if(ma){c=[];e=[];g=[];for(j=0;j<3;j++)c.push(t[i][j]);for(j=5;j<9;j++)e.push(t[i][j]);for(j=0;j<3;j++)c.push(t[i+1][j]);for(j=5;j<9;j++)e.push(t[i+1][j]);for(j=0;j<3;j++)c.push(t[i+3][j]);for(j=5;j<
9;j++)e.push(t[i+3][j]);for(j=0;j<3;j++)c.push(t[i+2][j]);for(j=5;j<9;j++)e.push(t[i+2][j]);if(eb){g.push(t[i+0][3]);g.push(t[i+0][4]);g.push(t[i+1][3]);g.push(t[i+1][4]);g.push(t[i+3][3]);g.push(t[i+3][4]);g.push(t[i+2][3]);g.push(t[i+2][4])}Bb(c,"TRIANGLE_STRIP",e,g)}}else if(wa===k.QUAD_STRIP){if(r>3){for(i=0;i<2;i++){h=t[i];for(j=0;j<3;j++)a.push(h[j])}for(i=0;i<2;i++){h=t[i];for(j=9;j<13;j++)f.push(h[j])}kb(a,"LINE_STRIP",f);if(r>4&&r%2>0){c.splice(c.length-3);t.pop()}for(i=0;i+3<r;i+=2){a=[];
f=[];for(j=0;j<3;j++)a.push(t[i+1][j]);for(j=0;j<3;j++)a.push(t[i+3][j]);for(j=0;j<3;j++)a.push(t[i+2][j]);for(j=0;j<3;j++)a.push(t[i+0][j]);for(j=9;j<13;j++)f.push(t[i+1][j]);for(j=9;j<13;j++)f.push(t[i+3][j]);for(j=9;j<13;j++)f.push(t[i+2][j]);for(j=9;j<13;j++)f.push(t[i+0][j]);ea&&kb(a,"LINE_STRIP",f)}if(ma||eb)Bb(c,"TRIANGLE_LIST",e,g)}}else if(r===1){for(j=0;j<3;j++)a.push(t[0][j]);for(j=9;j<13;j++)f.push(t[0][j]);Qd(a,f)}else{for(i=0;i<r;i++){h=t[i];for(j=0;j<3;j++)a.push(h[j]);for(j=5;j<9;j++)f.push(h[j])}if(ea&&
b)kb(a,"LINE_LOOP",f);else ea&&!b&&kb(a,"LINE_STRIP",f);if(ma||eb)Bb(c,"TRIANGLE_FAN",e,g)}eb=false;m.useProgram(H);N("usingTexture3d",H,"usingTexture",eb)}oc=nc=false;Xa=[];Ta=0}};var Rd=function(a,b){var c=1/a,e=c*c,f=e*c;b.set(0,0,0,1,f,e,c,0,6*f,2*e,0,0,6*f,0,0,0)},Sd=function(){if(!Ha){Lb=new X;Ha=new X;sc=true}var a=tc;Lb.set((a-1)/2,(a+3)/2,(-3-a)/2,(1-a)/2,1-a,(-5-a)/2,a+2,(a-1)/2,(a-1)/2,0,(1-a)/2,0,0,1,0,0);Rd(Zb,Ha);Yc||(cb=new X);cb.set(Lb);cb.preApply(Yc);Ha.apply(Lb)};$.prototype.bezierVertex=
function(){oc=true;var a=[];if(pc)throw"vertex() must be used at least once before calling bezierVertex()";for(var b=0;b<arguments.length;b++)a[b]=arguments[b];t.push(a);t[t.length-1].isVert=false};ba.prototype.bezierVertex=function(){oc=true;if(pc)throw"vertex() must be used at least once before calling bezierVertex()";if(arguments.length===9){if(ic===E)ic=new X;var a=t.length-1;Rd(o,ic);ic.apply(Zc);var b=ic.array(),c=t[a][0],e=t[a][1];a=t[a][2];var f=b[4]*c+b[5]*arguments[0]+b[6]*arguments[3]+
b[7]*arguments[6],g=b[8]*c+b[9]*arguments[0]+b[10]*arguments[3]+b[11]*arguments[6],h=b[12]*c+b[13]*arguments[0]+b[14]*arguments[3]+b[15]*arguments[6],i=b[4]*e+b[5]*arguments[1]+b[6]*arguments[4]+b[7]*arguments[7],j=b[8]*e+b[9]*arguments[1]+b[10]*arguments[4]+b[11]*arguments[7],r=b[12]*e+b[13]*arguments[1]+b[14]*arguments[4]+b[15]*arguments[7],s=b[4]*a+b[5]*arguments[2]+b[6]*arguments[5]+b[7]*arguments[8],A=b[8]*a+b[9]*arguments[2]+b[10]*arguments[5]+b[11]*arguments[8];b=b[12]*a+b[13]*arguments[2]+
b[14]*arguments[5]+b[15]*arguments[8];for(var n=0;n<o;n++){c+=f;f+=g;g+=h;e+=i;i+=j;j+=r;a+=s;s+=A;A+=b;d.vertex(c,e,a)}d.vertex(arguments[6],arguments[7],arguments[8])}};var qc=function(){var a=ja.createElement("canvas");try{m.texImage2D(m.TEXTURE_2D,0,m.RGBA,m.RGBA,m.UNSIGNED_BYTE,a);qc=function(c){m.texImage2D(m.TEXTURE_2D,0,m.RGBA,m.RGBA,m.UNSIGNED_BYTE,c)}}catch(b){qc=function(c){m.texImage2D(m.TEXTURE_2D,0,c,false)}}qc.apply(this,arguments)};d.texture=function(a){var b=Ja.$ensureContext();if(a.localName===
"canvas"){b.bindTexture(b.TEXTURE_2D,Cd);qc(a);b.texParameteri(b.TEXTURE_2D,b.TEXTURE_MAG_FILTER,b.LINEAR);b.texParameteri(b.TEXTURE_2D,b.TEXTURE_MIN_FILTER,b.LINEAR);b.generateMipmap(b.TEXTURE_2D)}else if(a.__texture)b.bindTexture(b.TEXTURE_2D,a.__texture);else{var c=b.createTexture();a.__texture=c;c=ja.createElement("canvas");var e;if(a.width&a.width-1===0)c.width=a.width;else{for(e=1;e<a.width;)e*=2;c.width=e}if(a.height&a.height-1===0)c.height=a.height;else{for(e=1;e<a.height;)e*=2;c.height=e}e=
c.getContext("2d");for(var f=e.createImageData(c.width,c.height),g=a.toImageData(),h=0;h<c.width;h+=1)for(var i=0;i<c.height;i+=1){var j=(i*c.width+h)*4;f.data[j+0]=g.data[j+0];f.data[j+1]=g.data[j+1];f.data[j+2]=g.data[j+2];f.data[j+3]=255}e.putImageData(f,0,0);a.__cvs=c;b.bindTexture(b.TEXTURE_2D,a.__texture);b.texParameteri(b.TEXTURE_2D,b.TEXTURE_MIN_FILTER,b.LINEAR_MIPMAP_LINEAR);b.texParameteri(b.TEXTURE_2D,b.TEXTURE_MAG_FILTER,b.LINEAR);b.texParameteri(b.TEXTURE_2D,b.TEXTURE_WRAP_T,b.CLAMP_TO_EDGE);
b.texParameteri(b.TEXTURE_2D,b.TEXTURE_WRAP_S,b.CLAMP_TO_EDGE);qc(a.__cvs);b.generateMipmap(b.TEXTURE_2D)}Lc.width=a.width;Lc.height=a.height;eb=true;b.useProgram(H);N("usingTexture3d",H,"usingTexture",eb)};d.textureMode=function(a){Ed=a};$.prototype.curveVertex=function(a,b){nc=true;d.vertex(a,b)};ba.prototype.curveVertex=function(a,b,c){nc=true;sc||Sd();var e=[];e[0]=a;e[1]=b;e[2]=c;Xa.push(e);Ta++;if(Ta>3){var f=Xa[Ta-4][0],g=Xa[Ta-4][1],h=Xa[Ta-4][2],i=Xa[Ta-3][0],j=Xa[Ta-3][1],r=Xa[Ta-3][2],
s=Xa[Ta-2][0],A=Xa[Ta-2][1],n=Xa[Ta-2][2],I=Xa[Ta-1][0],P=Xa[Ta-1][1],L=Xa[Ta-1][2];a=i;b=j;c=r;var u=Ha.array();e=u[4]*f+u[5]*i+u[6]*s+u[7]*I;var ta=u[8]*f+u[9]*i+u[10]*s+u[11]*I;f=u[12]*f+u[13]*i+u[14]*s+u[15]*I;i=u[4]*g+u[5]*j+u[6]*A+u[7]*P;s=u[8]*g+u[9]*j+u[10]*A+u[11]*P;g=u[12]*g+u[13]*j+u[14]*A+u[15]*P;j=u[4]*h+u[5]*r+u[6]*n+u[7]*L;A=u[8]*h+u[9]*r+u[10]*n+u[11]*L;h=u[12]*h+u[13]*r+u[14]*n+u[15]*L;d.vertex(a,b,c);for(r=0;r<Zb;r++){a+=e;e+=ta;ta+=f;b+=i;i+=s;s+=g;c+=j;j+=A;A+=h;d.vertex(a,b,c)}}};
$.prototype.curve=function(){if(arguments.length===8){d.beginShape();d.curveVertex(arguments[0],arguments[1]);d.curveVertex(arguments[2],arguments[3]);d.curveVertex(arguments[4],arguments[5]);d.curveVertex(arguments[6],arguments[7]);d.endShape()}};ba.prototype.curve=function(){if(arguments.length===12){d.beginShape();d.curveVertex(arguments[0],arguments[1],arguments[2]);d.curveVertex(arguments[3],arguments[4],arguments[5]);d.curveVertex(arguments[6],arguments[7],arguments[8]);d.curveVertex(arguments[9],
arguments[10],arguments[11]);d.endShape()}};d.curveTightness=function(a){tc=a};d.curveDetail=function(a){Zb=a;Sd()};d.rectMode=function(a){Oa=a};d.imageMode=function(a){switch(a){case k.CORNER:Pc=Nd;break;case k.CORNERS:Pc=ge;break;case k.CENTER:Pc=he;break;default:throw"Invalid imageMode";}};d.ellipseMode=function(a){gb=a};d.arc=function(a,b,c,e,f,g){if(!(c<=0||g<f)){if(gb===k.CORNERS){c-=a;e-=b}else if(gb===k.RADIUS){a-=c;b-=e;c*=2;e*=2}else if(gb===k.CENTER){a-=c/2;b-=e/2}for(;f<0;){f+=k.TWO_PI;
g+=k.TWO_PI}if(g-f>k.TWO_PI){f=0;g=k.TWO_PI}c/=2;e/=2;a+=c;b+=e;f=0|-0.5+f/k.TWO_PI*k.SINCOS_LENGTH;g=0|0.5+g/k.TWO_PI*k.SINCOS_LENGTH;var h,i;if(ma){var j=ea;ea=false;d.beginShape();d.vertex(a,b);for(i=h=f;h<g;h++,i++){if(i>=k.SINCOS_LENGTH)i-=k.SINCOS_LENGTH;d.vertex(a+kc[i]*c,b+jc[i]*e)}d.endShape(k.CLOSE);ea=j}if(ea){j=ma;ma=false;d.beginShape();for(i=h=f;h<g;h++,i++){if(i>=k.SINCOS_LENGTH)i-=k.SINCOS_LENGTH;d.vertex(a+kc[i]*c,b+jc[i]*e)}i=g%k.SINCOS_LENGTH;d.vertex(a+kc[i]*c,b+jc[i]*e);d.endShape();
ma=j}}};$.prototype.line=function(a,b,c,e){if(a===c&&b===e)d.point(a,b);else if((a===c||b===e)&&Ma<=1&&ea&&Ca.options.crispLines){var f;if(a===c){if(b>e){f=b;b=e;e=f}for(;b<=e;++b)d.set(a,b,Fa)}else{if(a>c){f=a;a=c;c=f}for(;a<=c;++a)d.set(a,b,Fa)}}else if(ea){m.beginPath();m.moveTo(a||0,b||0);m.lineTo(c||0,e||0);La();m.closePath()}};ba.prototype.line=function(){var a,b,c,e,f,g;if(arguments.length===6){a=arguments[0];b=arguments[1];c=arguments[2];e=arguments[3];f=arguments[4];g=arguments[5]}else if(arguments.length===
4){a=arguments[0];b=arguments[1];c=0;e=arguments[2];f=arguments[3];g=0}if(a===e&&b===f&&c===g)d.point(a,b,c);else{a=[a,b,c,e,f,g];b=new X;b.scale(1,-1,1);b.apply(oa.array());b.transpose();if(Ma>0&&ea){m.useProgram(Y);K("model2d",Y,"model",false,[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]);K("view2d",Y,"view",false,b.array());C("color2d",Y,"color",Sa);N("picktype2d",Y,"picktype",0);m.lineWidth(Ma);B("vertex2d",Y,"Vertex",3,dd);Q("aTextureCoord2d",Y,"aTextureCoord");m.bufferData(m.ARRAY_BUFFER,new ua(a),m.STREAM_DRAW);
m.drawArrays(m.LINES,0,2)}}};$.prototype.bezier=function(){if(arguments.length!==8)throw"You must use 8 parameters for bezier() in 2D mode";d.beginShape();d.vertex(arguments[0],arguments[1]);d.bezierVertex(arguments[2],arguments[3],arguments[4],arguments[5],arguments[6],arguments[7]);d.endShape()};ba.prototype.bezier=function(){if(arguments.length!==12)throw"You must use 12 parameters for bezier() in 3D mode";d.beginShape();d.vertex(arguments[0],arguments[1],arguments[2]);d.bezierVertex(arguments[3],
arguments[4],arguments[5],arguments[6],arguments[7],arguments[8],arguments[9],arguments[10],arguments[11]);d.endShape()};d.bezierDetail=function(a){o=a};d.bezierPoint=function(a,b,c,e,f){return(1-f)*(1-f)*(1-f)*a+3*(1-f)*(1-f)*f*b+3*(1-f)*f*f*c+f*f*f*e};d.bezierTangent=function(a,b,c,e,f){return 3*f*f*(-a+3*b-3*c+e)+6*f*(a-2*b+c)+3*(-a+b)};d.curvePoint=function(a,b,c,e,f){return 0.5*(2*b+(-a+c)*f+(2*a-5*b+4*c-e)*f*f+(-a+3*b-3*c+e)*f*f*f)};d.curveTangent=function(a,b,c,e,f){return 0.5*(-a+c+2*(2*a-
5*b+4*c-e)*f+3*(-a+3*b-3*c+e)*f*f)};d.triangle=function(a,b,c,e,f,g){d.beginShape(k.TRIANGLES);d.vertex(a,b,0);d.vertex(c,e,0);d.vertex(f,g,0);d.endShape()};d.quad=function(a,b,c,e,f,g,h,i){d.beginShape(k.QUADS);d.vertex(a,b,0);d.vertex(c,e,0);d.vertex(f,g,0);d.vertex(h,i,0);d.endShape()};$.prototype.rect=function(a,b,c,e){if(c||e)if(ea&&!ma&&Ma<=1&&Ca.options.crispLines){var f,g=a+c-1,h=b+e-1;for(f=0;f<c;++f){d.set(a+f,b,Fa);d.set(a+f,h,Fa)}for(f=0;f<e;++f){d.set(a,b+f,Fa);d.set(g,b+f,Fa)}}else{m.beginPath();
if(Oa===k.CORNERS){c-=a;e-=b}if(Oa===k.RADIUS){c*=2;e*=2}if(Oa===k.CENTER||Oa===k.RADIUS){a-=c/2;b-=e/2}m.rect(x.round(a)-0,x.round(b)-0,x.round(c)+0,x.round(e)+0);sa();La();m.closePath()}};ba.prototype.rect=function(a,b,c,e){var f=new X;f.translate(a,b,0);f.scale(c,e,1);f.transpose();b=new X;b.scale(1,-1,1);b.apply(oa.array());b.transpose();if(Ma>0&&ea){m.useProgram(Y);K("model2d",Y,"model",false,f.array());K("view2d",Y,"view",false,b.array());C("color2d",Y,"color",Sa);N("picktype2d",Y,"picktype",
0);B("vertex2d",Y,"Vertex",3,Jc);Q("aTextureCoord2d",Y,"aTextureCoord");m.lineWidth(Ma);m.drawArrays(m.LINE_LOOP,0,ld.length/3)}if(ma){m.useProgram(H);K("model3d",H,"model",false,f.array());K("view3d",H,"view",false,b.array());m.enable(m.POLYGON_OFFSET_FILL);m.polygonOffset(1,1);C("color3d",H,"color",Ra);if(ca>0){a=new X;a.set(b);b=new X;b.set(f);a.mult(b);f=new X;f.set(a);f.invert();f.transpose();K("normalTransform3d",H,"normalTransform",false,f.array());B("normal3d",H,"Normal",3,cd)}else Q("normal3d",
H,"Normal");B("vertex3d",H,"Vertex",3,Jc);m.drawArrays(m.TRIANGLE_FAN,0,ld.length/3);m.disable(m.POLYGON_OFFSET_FILL)}};aa.prototype.ellipse=function(a,b,c,e){a=a||0;b=b||0;if(!(c<=0&&e<=0)){if(gb===k.RADIUS){c*=2;e*=2}if(gb===k.CORNERS){c-=a;e-=b}if(gb===k.CORNER||gb===k.CORNERS){a+=c/2;b+=e/2}return{x:a,y:b,width:c,height:e}}};$.prototype.ellipse=function(a,b,c,e){var f=aa.prototype.ellipse.apply(this,arguments);if(f){a=f.x;b=f.y;c=f.width;e=f.height;if(c===e){m.beginPath();m.arc(a-0,b-0,c/2,0,
k.TWO_PI,false);sa();La();m.closePath()}else{f=c/2;var g=e/2,h=0.5522847498307933*f,i=0.5522847498307933*g;d.beginShape();d.vertex(a+f,b);d.bezierVertex(a+f,b-i,a+h,b-g,a,b-g);d.bezierVertex(a-h,b-g,a-f,b-i,a-f,b);d.bezierVertex(a-f,b+i,a-h,b+g,a,b+g);d.bezierVertex(a+h,b+g,a+f,b+i,a+f,b);d.endShape()}}};ba.prototype.ellipse=function(a,b,c,e){var f=aa.prototype.ellipse.apply(this,arguments);if(f){a=f.x;b=f.y;c=f.width;e=f.height;f=c/2;var g=e/2,h=0.5522847498307933*f,i=0.5522847498307933*g;d.beginShape();
d.vertex(a+f,b);d.bezierVertex(a+f,b-i,0,a+h,b-g,0,a,b-g,0);d.bezierVertex(a-h,b-g,0,a-f,b-i,0,a-f,b,0);d.bezierVertex(a-f,b+i,0,a-h,b+g,0,a,b+g,0);d.bezierVertex(a+h,b+g,0,a+f,b+i,0,a+f,b,0);d.endShape();if(ma){i=h=0;var j;for(j=0;j<t.length;j++){h+=t[j][0];i+=t[j][1]}h/=t.length;i/=t.length;j=[];f=[];g=[];j[0]=h;j[1]=i;j[2]=0;j[3]=0;j[4]=0;j[5]=Ra[0];j[6]=Ra[1];j[7]=Ra[2];j[8]=Ra[3];j[9]=Sa[0];j[10]=Sa[1];j[11]=Sa[2];j[12]=Sa[3];j[13]=Eb;j[14]=Rb;j[15]=qb;t.unshift(j);for(j=0;j<t.length;j++){for(h=
0;h<3;h++)f.push(t[j][h]);for(h=5;h<9;h++)g.push(t[j][h])}Bb(f,"TRIANGLE_FAN",g)}}};d.normal=function(a,b,c){if(arguments.length!==3||!(typeof a==="number"&&typeof b==="number"&&typeof c==="number"))throw"normal() requires three numeric arguments.";Eb=a;Rb=b;qb=c;if(wa!==0)if(Kb===k.NORMAL_MODE_AUTO)Kb=k.NORMAL_MODE_SHAPE;else if(Kb===k.NORMAL_MODE_SHAPE)Kb=k.NORMAL_MODE_VERTEX};d.save=function(a,b){return b!==E?Aa.open(b.toDataURL(),"_blank"):Aa.open(d.externals.canvas.toDataURL(),"_blank")};var ie=
0;d.saveFrame=function(a){if(a===E)a="screen-####.png";a=a.replace(/#+/,function(b){for(var c=""+ie++;c.length<b.length;)c="0"+c;return c});d.save(a)};var Td=ja.createElement("canvas").getContext("2d"),td=[E,E,E],pb=function(a,b,c){this.get=function(h,i,j,r){if(arguments.length)if(arguments.length===2)return d.get(h,i,this);else{if(arguments.length===4)return d.get(h,i,j,r,this)}else return d.get(this)};this.set=function(h,i,j){d.set(h,i,j,this)};this.blend=function(h,i,j,r,s,A,n,I,P,L){if(arguments.length===
9)d.blend(this,h,i,j,r,s,A,n,I,P,this);else arguments.length===10&&d.blend(h,i,j,r,s,A,n,I,P,L,this);delete this.sourceImg};this.copy=function(h,i,j,r,s,A,n,I,P){if(arguments.length===8)d.blend(this,h,i,j,r,s,A,n,I,k.REPLACE,this);else arguments.length===9&&d.blend(h,i,j,r,s,A,n,I,P,k.REPLACE,this);delete this.sourceImg};this.filter=function(h,i){if(arguments.length===2)d.filter(h,i,this);else arguments.length===1&&d.filter(h,null,this);delete this.sourceImg};this.save=function(h){d.save(h,this)};
this.resize=function(h,i){if(this.isRemote)throw"Image is loaded remotely. Cannot resize.";else if(this.width!==0||this.height!==0){if(h===0&&i!==0)h=x.floor(this.width/this.height*i);else if(i===0&&h!==0)i=x.floor(this.height/this.width*h);var j=Ka(this.imageData).canvas;this.fromImageData(Ka(j,h,i).context.getImageData(0,0,h,i))}};this.mask=function(h){this.__mask=E;if(h instanceof pb)if(h.width===this.width&&h.height===this.height)this.__mask=h;else throw"mask must have the same dimensions as PImage.";
else if(h instanceof Array)if(this.pixels.length===h.length)this.__mask=h;else throw"mask array must be the same length as PImage pixels array.";};this.pixels={getLength:function(h){if(h.isRemote)throw"Image is loaded remotely. Cannot get length.";else return function(){return h.imageData.data.length?h.imageData.data.length/4:0}}(this),getPixel:function(h){if(h.isRemote)throw"Image is loaded remotely. Cannot get pixels.";else return function(i){i*=4;return d.color.toInt(h.imageData.data[i],h.imageData.data[i+
1],h.imageData.data[i+2],h.imageData.data[i+3])}}(this),setPixel:function(h){if(h.isRemote)throw"Image is loaded remotely. Cannot set pixel.";else return function(i,j){var r=i*4;h.imageData.data[r+0]=(j&k.RED_MASK)>>>16;h.imageData.data[r+1]=(j&k.GREEN_MASK)>>>8;h.imageData.data[r+2]=j&k.BLUE_MASK;h.imageData.data[r+3]=(j&k.ALPHA_MASK)>>>24}}(this),set:function(h){if(this.isRemote)throw"Image is loaded remotely. Cannot set pixels.";else for(var i=0,j=h.length;i<j;i++)this.setPixel(i,h[i])}};this.loadPixels=
function(){};this.updatePixels=function(){};this.toImageData=function(){return this.isRemote?this.sourceImg:Ka(this.imageData).context.getImageData(0,0,this.width,this.height)};this.toDataURL=function(){if(this.isRemote)throw"Image is loaded remotely. Cannot create dataURI.";else return Ka(this.imageData).canvas.toDataURL()};this.fromImageData=function(h){this.width=h.width;this.height=h.height;this.imageData=h;this.format=k.ARGB};this.fromHTMLImageData=function(h){var i=Ka(h);try{this.fromImageData(i.context.getImageData(0,
0,h.width,h.height))}catch(j){if(h.width&&h.height){this.isRemote=true;this.width=h.width;this.height=h.height}}this.sourceImg=h};if(arguments.length===1)this.fromHTMLImageData(arguments[0]);else if(arguments.length===2||arguments.length===3){this.width=a||1;this.height=b||1;this.imageData=Td.createImageData(this.width,this.height);this.format=c===k.ARGB||c===k.ALPHA?c:k.RGB;if(this.format===k.RGB)for(var e=3,f=this.imageData.data,g=f.length;e<g;e+=4)f[e]=255}else{this.height=this.width=0;this.imageData=
Td.createImageData(1,1);this.format=k.ARGB}};d.PImage=pb;d.createImage=function(a,b,c){return new pb(a,b,c)};d.loadImage=function(a,b,c){if(b)a=a+"."+b;if(Ca.imageCache.images[a]){b=new pb(Ca.imageCache.images[a]);b.loaded=true}else{b=new pb;var e=ja.createElement("img");b.sourceImg=e;e.onload=function(f,g,h){return function(){g.fromHTMLImageData(f);g.loaded=true;h&&h()}}(e,b,c);e.src=a}return b};d.requestImage=d.loadImage;d.get=function(a,b,c,e,f){if(arguments.length===2){var g;if(a<d.width&&a>=
0&&b>=0&&b<d.height)if(yc){var h=((0|a)+d.width*(0|b))*4;g=d.imageData.data;g=d.color.toInt(g[h],g[h+1],g[h+2],g[h+3])}else{g=m.getImageData(0|a,0|b,1,1).data;g=d.color.toInt(g[0],g[1],g[2],g[3])}else g=0;return g}else if(arguments.length===0){g=new pb(d.width,d.height,k.RGB);g.fromImageData(m.getImageData(0,0,d.width,d.height));return g}else if(arguments.length===5){if(f.isRemote)throw"Image is loaded remotely. Cannot get x,y,w,h.";else{g=new pb(c,e,k.RGB);h=g.imageData.data;var i=f.width,j=f.height,
r=f.imageData.data,s=x.max(0,-b),A=x.max(0,-a);j=x.min(e,j-b);for(var n=x.min(c,i-a);s<j;++s)for(var I=((b+s)*i+(a+A))*4,P=(s*c+A)*4,L=A;L<n;++L){h[P++]=r[I++];h[P++]=r[I++];h[P++]=r[I++];h[P++]=r[I++]}}return g}else if(arguments.length===4){g=new pb(c,e,k.RGB);g.fromImageData(m.getImageData(a,b,c,e));return g}else if(arguments.length===3){if(c.isRemote)throw"Image is loaded remotely. Cannot get x,y.";else{g=b*c.width*4+a*4;g=d.color.toInt(c.imageData.data[g],c.imageData.data[g+1],c.imageData.data[g+
2],c.imageData.data[g+3])}return g}else if(arguments.length===1)return a};d.createGraphics=function(a,b,c){var e=new V;e.size(a,b,c);return e};d.set=function(a,b,c,e){if(arguments.length===3)if(typeof c==="number"){if(a<d.width&&a>=0&&b>=0&&b<d.height){if(!yc){d.loadPixels();if(jd===null){ud=m;jd=new ab}yc=true;m=jd;Fd=0}d.pixels.setPixel((0|a)+d.width*(0|b),c);++Fd>Gd&&$a()}}else c instanceof pb&&d.image(c,a,b);else if(arguments.length===4)if(e.isRemote)throw"Image is loaded remotely. Cannot set x,y.";
else{var f=d.color.toArray(c),g=b*e.width*4+a*4,h=e.imageData.data;h[g]=f[0];h[g+1]=f[1];h[g+2]=f[2];h[g+3]=f[3]}};d.imageData={};d.pixels={getLength:function(){return d.imageData.data.length?d.imageData.data.length/4:0},getPixel:function(a){a*=4;return d.imageData.data[a+3]<<24&4278190080|d.imageData.data[a+0]<<16&16711680|d.imageData.data[a+1]<<8&65280|d.imageData.data[a+2]&255},setPixel:function(a,b){var c=a*4;d.imageData.data[c+0]=(b&16711680)>>>16;d.imageData.data[c+1]=(b&65280)>>>8;d.imageData.data[c+
2]=b&255;d.imageData.data[c+3]=(b&4278190080)>>>24},set:function(a){for(var b=0,c=a.length;b<c;b++)this.setPixel(b,a[b])}};d.loadPixels=function(){d.imageData=Ja.$ensureContext().getImageData(0,0,d.width,d.height)};d.updatePixels=function(){d.imageData&&Ja.$ensureContext().putImageData(d.imageData,0,0)};d.hint=function(a){var b=Ja.$ensureContext();if(a===k.DISABLE_DEPTH_TEST){b.disable(b.DEPTH_TEST);b.depthMask(false);b.clear(b.DEPTH_BUFFER_BIT)}else if(a===k.ENABLE_DEPTH_TEST){b.enable(b.DEPTH_TEST);
b.depthMask(true)}};aa.prototype.background=function(){var a;if(arguments.length===1&&typeof arguments[0]==="number"){a=d.color.apply(this,arguments);Ca.options.isTransparent||(a|=k.ALPHA_MASK);l=a}else if(arguments.length===1&&arguments[0]instanceof pb){a=arguments[0];if(a.loaded){if(a.width!==d.width||a.height!==d.height)throw"Background image must be the same dimensions as the canvas.";}else throw"Error using image in background(): PImage not loaded.";l=a}else if(l===undefined){a=d.color(204);
Ca.options.isTransparent||(a|=k.ALPHA_MASK);l=a}};$.prototype.background=function(){aa.prototype.background.apply(this,arguments);if(typeof l==="number"){m.save();m.setTransform(1,0,0,1,0,0);Ca.options.isTransparent&&m.clearRect(0,0,d.width,d.height);m.fillStyle=d.color.toString(l);m.fillRect(0,0,d.width,d.height);jb=true}else{m.save();m.setTransform(1,0,0,1,0,0);d.image(l,0,0)}ga()};ba.prototype.background=function(){aa.prototype.background.apply(this,arguments);var a=d.color.toGLArray(l);m.clearColor(a[0],
a[1],a[2],a[3]);m.clear(m.COLOR_BUFFER_BIT|m.DEPTH_BUFFER_BIT)};$.prototype.image=function(a,b,c,e,f){if(a.width>0){var g=Pc(b||0,c||0,e||a.width,f||a.height,arguments.length<4);if(a.sourceImg&&S===null&&!a.__mask){var h=a.sourceImg;m.drawImage(h,0,0,h.width,h.height,g.x,g.y,g.w,g.h)}else{h=a.toImageData();if(a.__mask){var i,j;if(a.__mask instanceof pb){var r=a.__mask.toImageData();i=2;for(j=a.width*a.height*4;i<j;i+=4)h.data[i+1]=r.data[i]}else{i=0;for(j=a.__mask.length;i<j;++i)h.data[(i<<2)+3]=
a.__mask[i]}}S!==null&&S(h);m.drawImage(Ka(h).canvas,0,0,a.width,a.height,g.x,g.y,g.w,g.h)}}};ba.prototype.image=function(a,b,c,e,f){if(a.width>0){e=e||a.width;f=f||a.height;d.beginShape(d.QUADS);d.texture(a.externals.canvas);d.vertex(b,c,0,0,0);d.vertex(b,c+f,0,0,f);d.vertex(b+e,c+f,0,e,f);d.vertex(b+e,c,0,e,0);d.endShape()}};d.tint=function(){var a=d.color.apply(this,arguments),b=d.red(a)/q,c=d.green(a)/w,e=d.blue(a)/y,f=d.alpha(a)/p;S=function(g){var h=g.data;g=4*g.width*g.height;for(var i=0;i<
g;){h[i++]*=b;h[i++]*=c;h[i++]*=e;h[i++]*=f}}};d.noTint=function(){S=null};d.copy=function(a,b,c,e,f,g,h,i,j){if(arguments.length===8){j=i;i=h;h=g;g=f;f=e;e=c;c=b;b=a;a=d}d.blend(a,b,c,e,f,g,h,i,j,k.REPLACE)};d.blend=function(a,b,c,e,f,g,h,i,j,r,s){if(arguments.length===9){r=j;j=i;i=h;h=g;g=f;f=e;e=c;c=b;b=a;a=d}var A=b+e,n=c+f,I=g+i,P=h+j,L;if(a.isRemote)throw"Image is loaded remotely. Cannot blend image.";else{if(arguments.length===10||arguments.length===9){d.loadPixels();L=d}else if(arguments.length===
11&&s&&s.imageData)L=s;if(a===d)d.intersect(b,c,A,n,g,h,I,P)?d.blit_resize(d.get(b,c,A-b,n-c),0,0,A-b-1,n-c-1,L.imageData.data,L.width,L.height,g,h,I,P,r):d.blit_resize(a,b,c,A,n,L.imageData.data,L.width,L.height,g,h,I,P,r);else{a.loadPixels();d.blit_resize(a,b,c,A,n,L.imageData.data,L.width,L.height,g,h,I,P,r)}arguments.length===10&&d.updatePixels()}};var Ud=function(a,b){var c=0,e=b.pixels.getLength(),f=new Zd(e),g,h,i,j,r,s,A,n,I,P,L,u;if(a)for(;c<e;){g=c;for(h=c+b.width;c<h;){i=j=b.pixels.getPixel(c);
s=c-1;r=c+1;A=c-b.width;n=c+b.width;if(s<g)s=c;if(r>=h)r=c;if(A<0)A=0;if(n>=e)n=c;A=b.pixels.getPixel(A);s=b.pixels.getPixel(s);n=b.pixels.getPixel(n);r=b.pixels.getPixel(r);i=77*(i>>16&255)+151*(i>>8&255)+28*(i&255);P=77*(s>>16&255)+151*(s>>8&255)+28*(s&255);I=77*(r>>16&255)+151*(r>>8&255)+28*(r&255);L=77*(A>>16&255)+151*(A>>8&255)+28*(A&255);u=77*(n>>16&255)+151*(n>>8&255)+28*(n&255);if(P<i){j=s;i=P}if(I<i){j=r;i=I}if(L<i){j=A;i=L}if(u<i)j=n;f[c++]=j}}else for(;c<e;){g=c;for(h=c+b.width;c<h;){i=
j=b.pixels.getPixel(c);s=c-1;r=c+1;A=c-b.width;n=c+b.width;if(s<g)s=c;if(r>=h)r=c;if(A<0)A=0;if(n>=e)n=c;A=b.pixels.getPixel(A);s=b.pixels.getPixel(s);n=b.pixels.getPixel(n);r=b.pixels.getPixel(r);i=77*(i>>16&255)+151*(i>>8&255)+28*(i&255);P=77*(s>>16&255)+151*(s>>8&255)+28*(s&255);I=77*(r>>16&255)+151*(r>>8&255)+28*(r&255);L=77*(A>>16&255)+151*(A>>8&255)+28*(A&255);u=77*(n>>16&255)+151*(n>>8&255)+28*(n&255);if(P>i){j=s;i=P}if(I>i){j=r;i=I}if(L>i){j=A;i=L}if(u>i)j=n;f[c++]=j}}b.pixels.set(f)};d.filter=
function(a,b,c){var e,f,g,h;if(arguments.length===3){c.loadPixels();e=c}else{d.loadPixels();e=d}if(b===E)b=null;if(e.isRemote)throw"Image is loaded remotely. Cannot filter image.";else{var i=e.pixels.getLength();switch(a){case k.BLUR:var j=b||1,r=e,s,A,n,I,P,L,u,ta,fb;g=r.pixels.getLength();h=new ua(g);i=new ua(g);f=new ua(g);g=new ua(g);var Na=0,pa,Cb,lb;j=d.floor(j*3.5);var xa;j=j<1?1:j<248?j:248;if(d.shared.blurRadius!==j){d.shared.blurRadius=j;d.shared.blurKernelSize=1+(d.shared.blurRadius<<1);
d.shared.blurKernel=new ua(d.shared.blurKernelSize);var Yb=d.shared.blurKernel,rc=d.shared.blurKernelSize;for(xa=0;xa<rc;xa++)Yb[xa]=0;rc=(j-1)*(j-1);for(xa=1;xa<j;xa++)Yb[j+xa]=Yb[void 0]=rc;Yb[j]=j*j}j=r.height;xa=r.width;Yb=d.shared.blurKernelSize;ta=d.shared.blurRadius;rc=d.shared.blurKernel;var Ob=r.imageData.data;for(Cb=0;Cb<j;Cb++){for(pa=0;pa<xa;pa++){n=A=s=I=r=0;L=pa-ta;if(L<0){P=-L;L=0}else{if(L>=xa)break;P=0}for(lb=P;lb<Yb;lb++){if(L>=xa)break;u=(L+Na)*4;P=rc[lb];I+=P*Ob[u+3];s+=P*Ob[u];
A+=P*Ob[u+1];n+=P*Ob[u+2];r+=P;L++}u=Na+pa;g[u]=I/r;h[u]=s/r;i[u]=A/r;f[u]=n/r}Na+=xa}Na=0;ta=-ta;fb=ta*xa;for(Cb=0;Cb<j;Cb++){for(pa=0;pa<xa;pa++){n=A=s=I=r=0;if(ta<0){P=u=-ta;L=pa}else{if(ta>=j)break;P=0;u=ta;L=pa+fb}for(lb=P;lb<Yb;lb++){if(u>=j)break;P=rc[lb];I+=P*g[L];s+=P*h[L];A+=P*i[L];n+=P*f[L];r+=P;u++;L+=xa}u=(pa+Na)*4;Ob[u]=s/r;Ob[u+1]=A/r;Ob[u+2]=n/r;Ob[u+3]=I/r}Na+=xa;fb+=xa;ta++}break;case k.GRAY:if(e.format===k.ALPHA){for(h=0;h<i;h++){f=255-e.pixels.getPixel(h);e.pixels.setPixel(h,4278190080|
f<<16|f<<8|f)}e.format=k.RGB}else for(h=0;h<i;h++){f=e.pixels.getPixel(h);g=77*(f>>16&255)+151*(f>>8&255)+28*(f&255)>>8;e.pixels.setPixel(h,f&k.ALPHA_MASK|g<<16|g<<8|g)}break;case k.INVERT:for(h=0;h<i;h++)e.pixels.setPixel(h,e.pixels.getPixel(h)^16777215);break;case k.POSTERIZE:if(b===null)throw"Use filter(POSTERIZE, int levels) instead of filter(POSTERIZE)";f=d.floor(b);if(f<2||f>255)throw"Levels must be between 2 and 255 for filter(POSTERIZE, levels)";g=f-1;for(h=0;h<i;h++){Na=e.pixels.getPixel(h)>>
16&255;j=e.pixels.getPixel(h)>>8&255;xa=e.pixels.getPixel(h)&255;Na=(Na*f>>8)*255/g;j=(j*f>>8)*255/g;xa=(xa*f>>8)*255/g;e.pixels.setPixel(h,4278190080&e.pixels.getPixel(h)|Na<<16|j<<8|xa)}break;case k.OPAQUE:for(h=0;h<i;h++)e.pixels.setPixel(h,e.pixels.getPixel(h)|4278190080);e.format=k.RGB;break;case k.THRESHOLD:if(b===null)b=0.5;if(b<0||b>1)throw"Level must be between 0 and 1 for filter(THRESHOLD, level)";f=d.floor(b*255);for(h=0;h<i;h++){g=d.max((e.pixels.getPixel(h)&k.RED_MASK)>>16,d.max((e.pixels.getPixel(h)&
k.GREEN_MASK)>>8,e.pixels.getPixel(h)&k.BLUE_MASK));e.pixels.setPixel(h,e.pixels.getPixel(h)&k.ALPHA_MASK|(g<f?0:16777215))}break;case k.ERODE:Ud(true,e);break;case k.DILATE:Ud(false,e)}e.updatePixels()}};d.shared={fracU:0,ifU:0,fracV:0,ifV:0,u1:0,u2:0,v1:0,v2:0,sX:0,sY:0,iw:0,iw1:0,ih1:0,ul:0,ll:0,ur:0,lr:0,cUL:0,cLL:0,cUR:0,cLR:0,srcXOffset:0,srcYOffset:0,r:0,g:0,b:0,a:0,srcBuffer:null,blurRadius:0,blurKernelSize:0,blurKernel:null};d.intersect=function(a,b,c,e,f,g,h,i){c=c-a+1;e=e-b+1;h=h-f+1;i=
i-g+1;if(f<a){h+=f-a;if(h>c)h=c}else{a=c+a-f;if(h>a)h=a}if(g<b){i+=g-b;if(i>e)i=e}else{b=e+b-g;if(i>b)i=b}return!(h<=0||i<=0)};d.filter_new_scanline=function(){d.shared.sX=d.shared.srcXOffset;d.shared.fracV=d.shared.srcYOffset&k.PREC_MAXVAL;d.shared.ifV=k.PREC_MAXVAL-d.shared.fracV;d.shared.v1=(d.shared.srcYOffset>>k.PRECISIONB)*d.shared.iw;d.shared.v2=x.min((d.shared.srcYOffset>>k.PRECISIONB)+1,d.shared.ih1)*d.shared.iw};d.filter_bilinear=function(){d.shared.fracU=d.shared.sX&k.PREC_MAXVAL;d.shared.ifU=
k.PREC_MAXVAL-d.shared.fracU;d.shared.ul=d.shared.ifU*d.shared.ifV>>k.PRECISIONB;d.shared.ll=d.shared.ifU*d.shared.fracV>>k.PRECISIONB;d.shared.ur=d.shared.fracU*d.shared.ifV>>k.PRECISIONB;d.shared.lr=d.shared.fracU*d.shared.fracV>>k.PRECISIONB;d.shared.u1=d.shared.sX>>k.PRECISIONB;d.shared.u2=x.min(d.shared.u1+1,d.shared.iw1);var a=(d.shared.v1+d.shared.u1)*4,b=(d.shared.v1+d.shared.u2)*4,c=(d.shared.v2+d.shared.u1)*4,e=(d.shared.v2+d.shared.u2)*4;d.shared.cUL=d.color.toInt(d.shared.srcBuffer[a],
d.shared.srcBuffer[a+1],d.shared.srcBuffer[a+2],d.shared.srcBuffer[a+3]);d.shared.cUR=d.color.toInt(d.shared.srcBuffer[b],d.shared.srcBuffer[b+1],d.shared.srcBuffer[b+2],d.shared.srcBuffer[b+3]);d.shared.cLL=d.color.toInt(d.shared.srcBuffer[c],d.shared.srcBuffer[c+1],d.shared.srcBuffer[c+2],d.shared.srcBuffer[c+3]);d.shared.cLR=d.color.toInt(d.shared.srcBuffer[e],d.shared.srcBuffer[e+1],d.shared.srcBuffer[e+2],d.shared.srcBuffer[e+3]);d.shared.r=d.shared.ul*((d.shared.cUL&k.RED_MASK)>>16)+d.shared.ll*
((d.shared.cLL&k.RED_MASK)>>16)+d.shared.ur*((d.shared.cUR&k.RED_MASK)>>16)+d.shared.lr*((d.shared.cLR&k.RED_MASK)>>16)<<k.PREC_RED_SHIFT&k.RED_MASK;d.shared.g=d.shared.ul*(d.shared.cUL&k.GREEN_MASK)+d.shared.ll*(d.shared.cLL&k.GREEN_MASK)+d.shared.ur*(d.shared.cUR&k.GREEN_MASK)+d.shared.lr*(d.shared.cLR&k.GREEN_MASK)>>>k.PRECISIONB&k.GREEN_MASK;d.shared.b=d.shared.ul*(d.shared.cUL&k.BLUE_MASK)+d.shared.ll*(d.shared.cLL&k.BLUE_MASK)+d.shared.ur*(d.shared.cUR&k.BLUE_MASK)+d.shared.lr*(d.shared.cLR&
k.BLUE_MASK)>>>k.PRECISIONB;d.shared.a=d.shared.ul*((d.shared.cUL&k.ALPHA_MASK)>>>24)+d.shared.ll*((d.shared.cLL&k.ALPHA_MASK)>>>24)+d.shared.ur*((d.shared.cUR&k.ALPHA_MASK)>>>24)+d.shared.lr*((d.shared.cLR&k.ALPHA_MASK)>>>24)<<k.PREC_ALPHA_SHIFT&k.ALPHA_MASK;return d.shared.a|d.shared.r|d.shared.g|d.shared.b};d.blit_resize=function(a,b,c,e,f,g,h,i,j,r,s,A,n){if(b<0)b=0;if(c<0)c=0;if(e>=a.width)e=a.width-1;if(f>=a.height)f=a.height-1;e-=b;f-=c;s-=j;A-=r;if(!(s<=0||A<=0||e<=0||f<=0||j>=h||r>=i||b>=
a.width||c>=a.height)){e=x.floor(e/s*k.PRECISIONF);f=x.floor(f/A*k.PRECISIONF);d.shared.srcXOffset=x.floor(j<0?-j*e:b*k.PRECISIONF);d.shared.srcYOffset=x.floor(r<0?-r*f:c*k.PRECISIONF);if(j<0){s+=j;j=0}if(r<0){A+=r;r=0}s=x.min(s,h-j);A=x.min(A,i-r);b=r*h+j;d.shared.srcBuffer=a.imageData.data;d.shared.iw=a.width;d.shared.iw1=a.width-1;d.shared.ih1=a.height-1;switch(n){case k.BLEND:for(c=0;c<A;c++){d.filter_new_scanline();for(n=0;n<s;n++){i=d.color.toInt(g[(b+n)*4],g[(b+n)*4+1],g[(b+n)*4+2],g[(b+n)*
4+3]);i=d.color.toArray(d.modes.blend(i,d.filter_bilinear()));g[(b+n)*4]=i[0];g[(b+n)*4+1]=i[1];g[(b+n)*4+2]=i[2];g[(b+n)*4+3]=i[3];d.shared.sX+=e}b+=h;d.shared.srcYOffset+=f}break;case k.ADD:for(c=0;c<A;c++){d.filter_new_scanline();for(n=0;n<s;n++){i=d.color.toInt(g[(b+n)*4],g[(b+n)*4+1],g[(b+n)*4+2],g[(b+n)*4+3]);i=d.color.toArray(d.modes.add(i,d.filter_bilinear()));g[(b+n)*4]=i[0];g[(b+n)*4+1]=i[1];g[(b+n)*4+2]=i[2];g[(b+n)*4+3]=i[3];d.shared.sX+=e}b+=h;d.shared.srcYOffset+=f}break;case k.SUBTRACT:for(c=
0;c<A;c++){d.filter_new_scanline();for(n=0;n<s;n++){i=d.color.toInt(g[(b+n)*4],g[(b+n)*4+1],g[(b+n)*4+2],g[(b+n)*4+3]);i=d.color.toArray(d.modes.subtract(i,d.filter_bilinear()));g[(b+n)*4]=i[0];g[(b+n)*4+1]=i[1];g[(b+n)*4+2]=i[2];g[(b+n)*4+3]=i[3];d.shared.sX+=e}b+=h;d.shared.srcYOffset+=f}break;case k.LIGHTEST:for(c=0;c<A;c++){d.filter_new_scanline();for(n=0;n<s;n++){i=d.color.toInt(g[(b+n)*4],g[(b+n)*4+1],g[(b+n)*4+2],g[(b+n)*4+3]);i=d.color.toArray(d.modes.lightest(i,d.filter_bilinear()));g[(b+
n)*4]=i[0];g[(b+n)*4+1]=i[1];g[(b+n)*4+2]=i[2];g[(b+n)*4+3]=i[3];d.shared.sX+=e}b+=h;d.shared.srcYOffset+=f}break;case k.DARKEST:for(c=0;c<A;c++){d.filter_new_scanline();for(n=0;n<s;n++){i=d.color.toInt(g[(b+n)*4],g[(b+n)*4+1],g[(b+n)*4+2],g[(b+n)*4+3]);i=d.color.toArray(d.modes.darkest(i,d.filter_bilinear()));g[(b+n)*4]=i[0];g[(b+n)*4+1]=i[1];g[(b+n)*4+2]=i[2];g[(b+n)*4+3]=i[3];d.shared.sX+=e}b+=h;d.shared.srcYOffset+=f}break;case k.REPLACE:for(c=0;c<A;c++){d.filter_new_scanline();for(n=0;n<s;n++){i=
d.color.toInt(g[(b+n)*4],g[(b+n)*4+1],g[(b+n)*4+2],g[(b+n)*4+3]);i=a.format!==k.RGB&&g[(b+n)*4]!==255?d.color.toArray(d.modes.blend(i,d.filter_bilinear())):d.color.toArray(d.filter_bilinear());g[(b+n)*4]=i[0];g[(b+n)*4+1]=i[1];g[(b+n)*4+2]=i[2];g[(b+n)*4+3]=i[3];d.shared.sX+=e}b+=h;d.shared.srcYOffset+=f}break;case k.DIFFERENCE:for(c=0;c<A;c++){d.filter_new_scanline();for(n=0;n<s;n++){i=d.color.toInt(g[(b+n)*4],g[(b+n)*4+1],g[(b+n)*4+2],g[(b+n)*4+3]);i=d.color.toArray(d.modes.difference(i,d.filter_bilinear()));
g[(b+n)*4]=i[0];g[(b+n)*4+1]=i[1];g[(b+n)*4+2]=i[2];g[(b+n)*4+3]=i[3];d.shared.sX+=e}b+=h;d.shared.srcYOffset+=f}break;case k.EXCLUSION:for(c=0;c<A;c++){d.filter_new_scanline();for(n=0;n<s;n++){i=d.color.toInt(g[(b+n)*4],g[(b+n)*4+1],g[(b+n)*4+2],g[(b+n)*4+3]);i=d.color.toArray(d.modes.exclusion(i,d.filter_bilinear()));g[(b+n)*4]=i[0];g[(b+n)*4+1]=i[1];g[(b+n)*4+2]=i[2];g[(b+n)*4+3]=i[3];d.shared.sX+=e}b+=h;d.shared.srcYOffset+=f}break;case k.MULTIPLY:for(c=0;c<A;c++){d.filter_new_scanline();for(n=
0;n<s;n++){i=d.color.toInt(g[(b+n)*4],g[(b+n)*4+1],g[(b+n)*4+2],g[(b+n)*4+3]);i=d.color.toArray(d.modes.multiply(i,d.filter_bilinear()));g[(b+n)*4]=i[0];g[(b+n)*4+1]=i[1];g[(b+n)*4+2]=i[2];g[(b+n)*4+3]=i[3];d.shared.sX+=e}b+=h;d.shared.srcYOffset+=f}break;case k.SCREEN:for(c=0;c<A;c++){d.filter_new_scanline();for(n=0;n<s;n++){i=d.color.toInt(g[(b+n)*4],g[(b+n)*4+1],g[(b+n)*4+2],g[(b+n)*4+3]);i=d.color.toArray(d.modes.screen(i,d.filter_bilinear()));g[(b+n)*4]=i[0];g[(b+n)*4+1]=i[1];g[(b+n)*4+2]=i[2];
g[(b+n)*4+3]=i[3];d.shared.sX+=e}b+=h;d.shared.srcYOffset+=f}break;case k.OVERLAY:for(c=0;c<A;c++){d.filter_new_scanline();for(n=0;n<s;n++){i=d.color.toInt(g[(b+n)*4],g[(b+n)*4+1],g[(b+n)*4+2],g[(b+n)*4+3]);i=d.color.toArray(d.modes.overlay(i,d.filter_bilinear()));g[(b+n)*4]=i[0];g[(b+n)*4+1]=i[1];g[(b+n)*4+2]=i[2];g[(b+n)*4+3]=i[3];d.shared.sX+=e}b+=h;d.shared.srcYOffset+=f}break;case k.HARD_LIGHT:for(c=0;c<A;c++){d.filter_new_scanline();for(n=0;n<s;n++){i=d.color.toInt(g[(b+n)*4],g[(b+n)*4+1],g[(b+
n)*4+2],g[(b+n)*4+3]);i=d.color.toArray(d.modes.hard_light(i,d.filter_bilinear()));g[(b+n)*4]=i[0];g[(b+n)*4+1]=i[1];g[(b+n)*4+2]=i[2];g[(b+n)*4+3]=i[3];d.shared.sX+=e}b+=h;d.shared.srcYOffset+=f}break;case k.SOFT_LIGHT:for(c=0;c<A;c++){d.filter_new_scanline();for(n=0;n<s;n++){i=d.color.toInt(g[(b+n)*4],g[(b+n)*4+1],g[(b+n)*4+2],g[(b+n)*4+3]);i=d.color.toArray(d.modes.soft_light(i,d.filter_bilinear()));g[(b+n)*4]=i[0];g[(b+n)*4+1]=i[1];g[(b+n)*4+2]=i[2];g[(b+n)*4+3]=i[3];d.shared.sX+=e}b+=h;d.shared.srcYOffset+=
f}break;case k.DODGE:for(c=0;c<A;c++){d.filter_new_scanline();for(n=0;n<s;n++){i=d.color.toInt(g[(b+n)*4],g[(b+n)*4+1],g[(b+n)*4+2],g[(b+n)*4+3]);i=d.color.toArray(d.modes.dodge(i,d.filter_bilinear()));g[(b+n)*4]=i[0];g[(b+n)*4+1]=i[1];g[(b+n)*4+2]=i[2];g[(b+n)*4+3]=i[3];d.shared.sX+=e}b+=h;d.shared.srcYOffset+=f}break;case k.BURN:for(c=0;c<A;c++){d.filter_new_scanline();for(n=0;n<s;n++){i=d.color.toInt(g[(b+n)*4],g[(b+n)*4+1],g[(b+n)*4+2],g[(b+n)*4+3]);i=d.color.toArray(d.modes.burn(i,d.filter_bilinear()));
g[(b+n)*4]=i[0];g[(b+n)*4+1]=i[1];g[(b+n)*4+2]=i[2];g[(b+n)*4+3]=i[3];d.shared.sX+=e}b+=h;d.shared.srcYOffset+=f}}}};hb.prototype.width=function(a){return"measureText"in m?m.measureText(typeof a==="number"?String.fromCharCode(a):a).width/R:0};hb.list=function(){return["sans-serif","serif","monospace","fantasy","cursive"]};d.PFont=hb;d.loadFont=function(a){if(a===E||a.indexOf(".svg")===-1)return new hb(a);else{var b=d.loadGlyphs(a);return{name:a,glyph:true,units_per_em:b.units_per_em,horiz_adv_x:1/
b.units_per_em*b.horiz_adv_x,ascent:b.ascent,descent:b.descent,width:function(c){for(var e=0,f=c.length,g=0;g<f;g++)try{e+=parseFloat(d.glyphLook(d.glyphTable[a],c[g]).horiz_adv_x)}catch(h){V.debug(h)}return e/d.glyphTable[a].units_per_em}}}};d.createFont=function(a,b){if(arguments.length===2){d.textSize(b);return d.loadFont(a)}else if(arguments.length===3){d.textSize(b);return d.loadFont(a)}else if(arguments.length===4){d.textSize(b);return d.loadFont(a)}else throw"incorrent number of parameters for createFont";
};d.textFont=function(a,b){T=a;if(b)d.textSize(b);else Ja.$ensureContext().font=R+"px "+T.name};d.textSize=function(a){if(a){R=a;Ja.$ensureContext().font=R+"px "+T.name}};d.textAlign=function(){if(arguments.length===1)gc=arguments[0];else if(arguments.length===2){gc=arguments[0];fc=arguments[1]}};$.prototype.textWidth=function(a){a=Qa(a).split(/\r?\n/g);var b=0,c,e=a.length;m.font=R+"px "+T.name;for(c=0;c<e;++c)b=x.max(b,m.measureText(a[c]).width);return b};ba.prototype.textWidth=function(a){a=Qa(a).split(/\r?\n/g);
var b=0,c,e=a.length;if(Ga===E)Ga=ja.createElement("canvas");var f=Ga.getContext("2d");f.font=R+"px "+T.name;for(c=0;c<e;++c)b=x.max(b,f.measureText(a[c]).width);return b};d.textLeading=function(a){za=a};d.textAscent=function(){var a=E,b=E,c=E,e=E;return function(){if(b!==T||a!==R){b=T;a=R;var f=false,g=d.color(0),h=0,i=R,j=R/2;for(e=new Fb(T.name,R,R,"k");j!==i;){for(var r=0;r<R;r++)if(e.get(r,j)!==g){f=true;r=R}if(f){i=j;f=false}else h=j;j=x.ceil((i+h)/2)}c=R-1-j+1}return c}}();d.textDescent=function(){var a=
E,b=E,c=E,e=E;return function(){if(b!==T||a!==R){b=T;a=R;var f=false,g=d.color(0),h=0,i=R,j=R/2;for(e=new Fb(T.name,R,0,"p");j!==i;){for(var r=0;r<R;r++)if(e.get(r,j)!==g){f=true;r=R}if(f){h=j;f=false}else i=j;j=x.ceil((i+h)/2)}c=j+1}return c}}();d.glyphLook=function(a,b){try{switch(b){case "1":return a.one;case "2":return a.two;case "3":return a.three;case "4":return a.four;case "5":return a.five;case "6":return a.six;case "7":return a.seven;case "8":return a.eight;case "9":return a.nine;case "0":return a.zero;
case " ":return a.space;case "$":return a.dollar;case "!":return a.exclam;case '"':return a.quotedbl;case "#":return a.numbersign;case "%":return a.percent;case "&":return a.ampersand;case "'":return a.quotesingle;case "(":return a.parenleft;case ")":return a.parenright;case "*":return a.asterisk;case "+":return a.plus;case ",":return a.comma;case "-":return a.hyphen;case ".":return a.period;case "/":return a.slash;case "_":return a.underscore;case ":":return a.colon;case ";":return a.semicolon;case "<":return a.less;
case "=":return a.equal;case ">":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){V.debug(c)}};$.prototype.text$line=function(a,b,c,e,f){e=e=0;if(T.glyph){e=d.glyphTable[T.name];m.save();m.translate(b,c+
R);if(f===k.RIGHT||f===k.CENTER)e.width(a);b=1/e.units_per_em*R;m.scale(b,b);b=0;for(c=a.length;b<c;b++)try{d.glyphLook(e,a[b]).draw()}catch(g){V.debug(g)}ga()}else if(a&&"fillText"in m){if(jb){m.fillStyle=d.color.toString(ib);jb=false}if(f===k.RIGHT||f===k.CENTER){e=m.measureText(a).width;e=f===k.RIGHT?-e:-e/2}m.fillText(a,b+e,c)}};ba.prototype.text$line=function(a,b,c,e,f){if(Ga===E)Ga=ja.createElement("canvas");var g=m;m=Ga.getContext("2d");m.font=R+"px "+T.name;var h=m.measureText(a).width;Ga.width=
h;Ga.height=R;m=Ga.getContext("2d");m.font=R+"px "+T.name;m.textBaseline="top";$.prototype.text$line(a,0,0,0,k.LEFT);a=Ga.width/Ga.height;m=g;m.bindTexture(m.TEXTURE_2D,Dd);qc(Ga);m.texParameteri(m.TEXTURE_2D,m.TEXTURE_MAG_FILTER,m.LINEAR);m.texParameteri(m.TEXTURE_2D,m.TEXTURE_MIN_FILTER,m.LINEAR);m.texParameteri(m.TEXTURE_2D,m.TEXTURE_WRAP_T,m.CLAMP_TO_EDGE);m.texParameteri(m.TEXTURE_2D,m.TEXTURE_WRAP_S,m.CLAMP_TO_EDGE);g=0;if(f===k.RIGHT)g=-h;else if(f===k.CENTER)g=-h/2;f=new X;h=R*0.5;f.translate(b+
g-h/2,c-h,e);f.scale(-a*h,-h,h);f.translate(-1,-1,-1);f.transpose();b=new X;b.scale(1,-1,1);b.apply(oa.array());b.transpose();m.useProgram(Y);B("vertex2d",Y,"Vertex",3,fd);B("aTextureCoord2d",Y,"aTextureCoord",2,gd);N("uSampler2d",Y,"uSampler",[0]);N("picktype2d",Y,"picktype",1);K("model2d",Y,"model",false,f.array());K("view2d",Y,"view",false,b.array());C("color2d",Y,"color",Ra);m.bindBuffer(m.ELEMENT_ARRAY_BUFFER,hd);m.drawElements(m.TRIANGLES,6,m.UNSIGNED_SHORT,0)};d.text=function(){if(id===k.SCREEN){d.pushMatrix();
d.resetMatrix();var a=d.textAscent(),b=d.textDescent(),c=d.textWidth(arguments[0]),e=a+b;b=d.loadFont(T.origName);c=d.createGraphics(c,e);c.beginDraw();c.fill(ib);c.opaque=false;c.background(0,0,0,0);c.textFont(b);c.textSize(R);c.text(arguments[0],0,a);c.endDraw();arguments.length===5||arguments.length===6?d.image(c,arguments[1],arguments[2]-a,arguments[3],arguments[4]):d.image(c,arguments[1],arguments[2]-a);d.popMatrix()}else if(id!==k.SHAPE)if(arguments.length===3)Gb(Qa(arguments[0]),arguments[1],
arguments[2],0);else if(arguments.length===4)Gb(Qa(arguments[0]),arguments[1],arguments[2],arguments[3]);else if(arguments.length===5)rb(Qa(arguments[0]),arguments[1],arguments[2],arguments[3],arguments[4],0);else arguments.length===6&&rb(Qa(arguments[0]),arguments[1],arguments[2],arguments[3],arguments[4],arguments[5])};d.textMode=function(a){id=a};d.loadGlyphs=function(a){var b,c,e,f,g,h,i,j,r,s,A,n,I=function(L,u){var ta=0,fb=[],Na,pa=RegExp(L,"g");for(Na=fb[ta]=pa.exec(u);Na;){ta++;Na=fb[ta]=
pa.exec(u)}return fb},P=function(L){var u=L.getElementsByTagName("font");d.glyphTable[a].horiz_adv_x=u[0].getAttribute("horiz-adv-x");u=L.getElementsByTagName("font-face")[0];d.glyphTable[a].units_per_em=parseFloat(u.getAttribute("units-per-em"));d.glyphTable[a].ascent=parseFloat(u.getAttribute("ascent"));d.glyphTable[a].descent=parseFloat(u.getAttribute("descent"));L=L.getElementsByTagName("glyph");u=L.length;for(var ta=0;ta<u;ta++){var fb=L[ta].getAttribute("unicode"),Na=L[ta].getAttribute("glyph-name");
A=L[ta].getAttribute("horiz-adv-x");if(A===null)A=d.glyphTable[a].horiz_adv_x;i=L[ta].getAttribute("d");if(i!==E){var pa=i,Cb=I("[A-Za-z][0-9\\- ]+|Z",pa);n="var path={draw:function(){saveContext();curContext.beginPath();";j=h=g=f=e=c=b=0;r="";s=Cb.length-1;for(var lb=0;lb<s;lb++){var xa=Cb[lb][0];pa=I("[0-9\\-]+",xa);switch(xa[0]){case "M":b=parseFloat(pa[0][0]);c=parseFloat(pa[1][0]);n+="curContext.moveTo("+b+","+-c+");";break;case "L":b=parseFloat(pa[0][0]);c=parseFloat(pa[1][0]);n+="curContext.lineTo("+
b+","+-c+");";break;case "H":b=parseFloat(pa[0][0]);n+="curContext.lineTo("+b+","+-c+");";break;case "V":c=parseFloat(pa[0][0]);n+="curContext.lineTo("+b+","+-c+");";break;case "T":g=parseFloat(pa[0][0]);h=parseFloat(pa[1][0]);if(r==="Q"||r==="T"){pa=x.sqrt(x.pow(b-e,2)+x.pow(f-c,2));j=x.PI+x.atan2(e-b,f-c);e=b+x.sin(j)*pa;f=c+x.cos(j)*pa}else{e=b;f=c}n+="curContext.quadraticCurveTo("+e+","+-f+","+g+","+-h+");";b=g;c=h;break;case "Q":e=parseFloat(pa[0][0]);f=parseFloat(pa[1][0]);g=parseFloat(pa[2][0]);
h=parseFloat(pa[3][0]);n+="curContext.quadraticCurveTo("+e+","+-f+","+g+","+-h+");";b=g;c=h;break;case "Z":n+="curContext.closePath();"}r=xa[0]}n+="executeContextFill();executeContextStroke();";n+="restoreContext();";n+="curContext.translate("+A+",0);";n+="}}";eval(n);d.glyphTable[a][Na]={name:Na,unicode:fb,horiz_adv_x:A,draw:n.draw}}}};d.glyphTable[a]={};(function(){var L;try{L=ja.implementation.createDocument("","",null)}catch(u){V.debug(u.message);return}try{L.async=false;L.load(a);P(L.getElementsByTagName("svg")[0])}catch(ta){V.debug(ta);
try{var fb=new Aa.XMLHttpRequest;fb.open("GET",a,false);fb.send(null);P(fb.responseXML.documentElement)}catch(Na){V.debug(ta)}}})(a);return d.glyphTable[a]};d.param=function(a){var b="data-processing-"+a;if(v.hasAttribute(b))return v.getAttribute(b);b=0;for(var c=v.childNodes.length;b<c;++b){var e=v.childNodes.item(b);if(!(e.nodeType!==1||e.tagName.toLowerCase()!=="param"))if(e.getAttribute("name")===a)return e.getAttribute("value")}if(Ca.params.hasOwnProperty(a))return Ca.params[a];return null};
Z.prototype.translate=W("translate");Z.prototype.scale=W("scale");Z.prototype.pushMatrix=W("pushMatrix");Z.prototype.popMatrix=W("popMatrix");Z.prototype.resetMatrix=W("resetMatrix");Z.prototype.applyMatrix=W("applyMatrix");Z.prototype.rotate=W("rotate");Z.prototype.redraw=W("redraw");Z.prototype.ambientLight=W("ambientLight");Z.prototype.directionalLight=W("directionalLight");Z.prototype.lightFalloff=W("lightFalloff");Z.prototype.lightSpecular=W("lightSpecular");Z.prototype.pointLight=W("pointLight");
Z.prototype.noLights=W("noLights");Z.prototype.spotLight=W("spotLight");Z.prototype.box=W("box");Z.prototype.sphere=W("sphere");Z.prototype.ambient=W("ambient");Z.prototype.emissive=W("emissive");Z.prototype.shininess=W("shininess");Z.prototype.specular=W("specular");Z.prototype.fill=W("fill");Z.prototype.stroke=W("stroke");Z.prototype.strokeWeight=W("strokeWeight");Z.prototype.smooth=W("smooth");Z.prototype.noSmooth=W("noSmooth");Z.prototype.point=W("point");Z.prototype.vertex=W("vertex");Z.prototype.endShape=
W("endShape");Z.prototype.bezierVertex=W("bezierVertex");Z.prototype.curveVertex=W("curveVertex");Z.prototype.curve=W("curve");Z.prototype.line=W("line");Z.prototype.bezier=W("bezier");Z.prototype.rect=W("rect");Z.prototype.ellipse=W("ellipse");Z.prototype.background=W("background");Z.prototype.image=W("image");Z.prototype.textWidth=W("textWidth");Z.prototype.text$line=W("text$line");Z.prototype.$ensureContext=W("$ensureContext");Z.prototype.$newPMatrix=W("$newPMatrix");Z.prototype.size=function(a,
b,c){ya(c===k.WEBGL?"3D":"2D");d.size(a,b,c)};Z.prototype.$init=function(){};$.prototype.$init=function(){d.size(d.width,d.height);m.translate(0.5,0.5);m.lineCap="round";d.noSmooth();d.disableContextMenu()};ba.prototype.$init=function(){d.use3DContext=true};aa.prototype.$ensureContext=function(){return m};d.extendClassChain=function(a){for(var b=[a],c=a.$upcast;c;c=c.$upcast){bb(c,a);b.push(c);a=c}for(;b.length>0;)b.pop().$self=a};d.extendStaticMembers=function(a,b){bb(a,b)};d.extendInterfaceMembers=
function(a,b){bb(a,b)};d.addMethod=function(a,b,c){if(a[b]){var e=c.length,f=a[b];a[b]=function(){return arguments.length===e?c.apply(this,arguments):f.apply(this,arguments)}}else a[b]=c};d.createJavaArray=function(a,b){var c=null;if(typeof b[0]==="number"){var e=0|b[0];if(b.length<=1){c=[];c.length=e;for(var f=0;f<e;++f)c[f]=0}else{c=[];f=b.slice(1);for(var g=0;g<e;++g)c.push(d.createJavaArray(a,f))}}return c};Ba(v,"touchstart",function(a){v.setAttribute("style","-webkit-user-select: none");v.setAttribute("onclick",
"void(0)");v.setAttribute("style","-webkit-tap-highlight-color:rgba(0,0,0,0)");for(var b=0,c=yb.length;b<c;b++){var e=yb[b][0],f=yb[b][1],g=yb[b][2];if(f==="mouseout"||f==="mousemove"||f==="mousedown"||f==="mouseup"||f==="DOMMouseScroll"||f==="mousewheel"||f==="touchstart")Fc(e,f,g)}if(d.touchStart!==E||d.touchMove!==E||d.touchEnd!==E||d.touchCancel!==E){Ba(v,"touchstart",function(h){if(d.touchStart!==E){h=Hb(h);d.touchStart(h)}});Ba(v,"touchmove",function(h){if(d.touchMove!==E){h.preventDefault();
h=Hb(h);d.touchMove(h)}});Ba(v,"touchend",function(h){if(d.touchEnd!==E){h=Hb(h);d.touchEnd(h)}});Ba(v,"touchcancel",function(h){if(d.touchCancel!==E){h=Hb(h);d.touchCancel(h)}})}else{Ba(v,"touchstart",function(h){Sb(v,h.touches[0]);d.__mousePressed=true;d.mouseDragging=false;d.mouseButton=k.LEFT;typeof d.mousePressed==="function"&&d.mousePressed()});Ba(v,"touchmove",function(h){h.preventDefault();Sb(v,h.touches[0]);typeof d.mouseMoved==="function"&&!d.__mousePressed&&d.mouseMoved();if(typeof d.mouseDragged===
"function"&&d.__mousePressed){d.mouseDragged();d.mouseDragging=true}});Ba(v,"touchend",function(){d.__mousePressed=false;typeof d.mouseClicked==="function"&&!d.mouseDragging&&d.mouseClicked();typeof d.mouseReleased==="function"&&d.mouseReleased()})}v.dispatchEvent(a)});Ba(v,"mousemove",function(a){Sb(v,a);typeof d.mouseMoved==="function"&&!d.__mousePressed&&d.mouseMoved();if(typeof d.mouseDragged==="function"&&d.__mousePressed){d.mouseDragged();d.mouseDragging=true}});Ba(v,"mouseout",function(){typeof d.mouseOut===
"function"&&d.mouseOut()});Ba(v,"mouseover",function(a){Sb(v,a);typeof d.mouseOver==="function"&&d.mouseOver()});Ba(v,"mousedown",function(a){d.__mousePressed=true;d.mouseDragging=false;switch(a.which){case 1:d.mouseButton=k.LEFT;break;case 2:d.mouseButton=k.CENTER;break;case 3:d.mouseButton=k.RIGHT}typeof d.mousePressed==="function"&&d.mousePressed()});Ba(v,"mouseup",function(){d.__mousePressed=false;typeof d.mouseClicked==="function"&&!d.mouseDragging&&d.mouseClicked();typeof d.mouseReleased===
"function"&&d.mouseReleased()});Cc=function(a){var b=0;if(a.wheelDelta){b=a.wheelDelta/120;if(Aa.opera)b=-b}else if(a.detail)b=-a.detail/3;(d.mouseScroll=b)&&typeof d.mouseScrolled==="function"&&d.mouseScrolled()};Ba(ja,"DOMMouseScroll",Cc);Ba(ja,"mousewheel",Cc);if(typeof v==="string")v=ja.getElementById(v);v.getAttribute("tabindex")||v.setAttribute("tabindex",0);if(Ib){Ca=new V.Sketch;Ca.options.isTransparent=true;ya();d.size=function(a,b,c){c&&c===k.WEBGL?ya("3D"):ya("2D");d.toImageData=c===k.WEBGL?
function(){var e=ja.createElement("canvas").getContext("2d").createImageData(this.width,this.height),f=new sd(this.width*this.height*4);m.readPixels(0,0,this.width,this.height,m.RGBA,m.UNSIGNED_BYTE,f);for(var g=0,h=f.length,i=this.height,j=this.width,r=e.data;g<h;g++)r[g]=f[(i-1-x.floor(g/4/j))*j*4+g%(j*4)];return e}:function(){return m.getImageData(0,0,this.width,this.height)};d.size(a,b,c)}}else{Ca=z instanceof V.Sketch?z:typeof z==="function"?new V.Sketch(z):z?V.compile(z):new V.Sketch(function(){});
d.externals.sketch=Ca;ya();if("mozOpaque"in v)v.mozOpaque=!Ca.options.isTransparent;v.onfocus=function(){d.focused=true};v.onblur=function(){d.focused=false;Ca.options.globalKeyEvents||$b()};if(Ca.options.pauseOnBlur){Ba(Aa,"focus",function(){la&&d.loop()});Ba(Aa,"blur",function(){if(la&&da){d.noLoop();la=true}$b()})}Ib=Ca.options.globalKeyEvents?Aa:v;Ba(Ib,"keydown",bc);Ba(Ib,"keypress",cc);Ba(Ib,"keyup",Uc);for(var Dc in V.lib)if(V.lib.hasOwnProperty(Dc))if(V.lib[Dc].hasOwnProperty("attach"))V.lib[Dc].attach(d);
else V.lib[Dc]instanceof Function&&V.lib[Dc].call(this);var Vd=function(a){if(!Ca.imageCache.pending&&Ca.fonts.pending()){Ca.attach(a,Mb);if(a.setup){a.setup();m&&!d.use3DContext&&m.setTransform(1,0,0,1,0,0)}$a();if(a.draw)la?a.loop():a.redraw()}else Aa.setTimeout(function(){Vd(a)},10)};if(this.externals.canvas.id===E||!this.externals.canvas.id.length)this.externals.canvas.id="__processing"+ec.length;Hc[this.externals.canvas.id]=ec.length;ec.push(this);Vd(d)}};V.debug=Vc;V.prototype=Mb;V.compile=
function(v){var z=new V.Sketch;v=Yd(v,z);v=Xd(v);z.sourceCode=v;return z};Vc=function(){var v={};if(typeof tinylog!=="undefined"&&typeof tinylog.log==="function")v.log=tinylog.log;else if(typeof ja!=="undefined"&&!ja.fake)(function(){var z=ja,D={zIndex:1E4,position:"fixed",bottom:"0px",width:"100%",height:"15%",fontFamily:"sans-serif",color:"#ccc",backgroundColor:"black"},C={position:"relative",fontFamily:"monospace",overflow:"auto",height:"100%",paddingTop:"5px"},N={height:"5px",marginTop:"-5px",
cursor:"n-resize",backgroundColor:"darkgrey"},B={position:"absolute",top:"5px",right:"20px",color:"#111",MozBorderRadius:"4px",webkitBorderRadius:"4px",borderRadius:"4px",cursor:"pointer",fontWeight:"normal",textAlign:"center",padding:"3px 5px",backgroundColor:"#333",fontSize:"12px"},Q={minHeight:"16px"},K={fontSize:"12px",margin:"0 8px 0 8px",maxWidth:"100%",whiteSpace:"pre-wrap",overflow:"auto"},M=z.defaultView,ga=z.documentElement,ra=ga.style,G=function(){for(var na=arguments.length,va,Ea,sa;na--;){Ea=
arguments[na--];va=arguments[na].style;for(sa in Ea)if(Ea.hasOwnProperty(sa))va[sa]=Ea[sa]}},J=function(na,va,Ea){if(na.addEventListener)na.addEventListener(va,Ea,false);else na.attachEvent&&na.attachEvent("on"+va,Ea);return[na,va,Ea]},U=function(na,va,Ea){if(na.removeEventListener)na.removeEventListener(va,Ea,false);else na.detachEvent&&na.detachEvent("on"+va,Ea)},O=function(na){for(var va=na.childNodes,Ea=va.length;Ea--;)na.removeChild(va.item(0))},qa=function(na,va){return na.appendChild(va)},
Pa=v.log=function(na){var va,Ea=ra.paddingBottom,sa=z.createElement("div"),La=sa.style,mb=qa(sa,z.createElement("div")),Ka=qa(sa,z.createElement("div")),$a=qa(sa,z.createElement("div")),ab=false,hb=false,Qa=false,Fb=0,Gb=function(ya){var W=M.innerHeight,bb=mb.clientHeight;if(ya<0)ya=0;else if(ya+bb>W)ya=W-bb;La.height=ya/W*100+"%";ra.paddingBottom=sa.clientHeight+"px"},rb=[J(z,"mousemove",function(ya){if(ab){Gb(M.innerHeight-ya.clientY);Ka.scrollTop=Qa}}),J(z,"mouseup",function(){if(ab)ab=Qa=false}),
J(mb,"dblclick",function(ya){ya.preventDefault();if(hb){Gb(hb);hb=false}else{hb=sa.clientHeight;La.height="0px"}}),J(mb,"mousedown",function(ya){ya.preventDefault();ab=true;Qa=Ka.scrollTop}),J(mb,"contextmenu",function(){ab=false}),J($a,"click",function(){va()})];va=function(){for(var ya=rb.length;ya--;)U.apply(v,rb[ya]);ga.removeChild(sa);ra.paddingBottom=Ea;O(Ka);O(sa);v.log=Pa};G(sa,D,Ka,C,mb,N,$a,B);$a.title="Close Log";qa($a,z.createTextNode("\u2716"));mb.title="Double-click to toggle log minimization";
ga.insertBefore(sa,ga.firstChild);v.log=function(ya){if(Fb===512)Ka.removeChild(Ka.firstChild);else Fb++;var W=qa(Ka,z.createElement("div")),bb=qa(W,z.createElement("div"));W.title=(new Date).toLocaleTimeString();G(W,Q,bb,K);qa(bb,z.createTextNode(ya));Ka.scrollTop=Ka.scrollHeight};v.log(na);ra.paddingBottom=sa.clientHeight+"px"}})();else if(typeof print==="function")v.log=print;return v}();V.logger=Vc;V.version="@VERSION@";V.lib={};V.registerLibrary=function(v,z){V.lib[v]=z;z.hasOwnProperty("init")&&
z.init(Mb)};V.instances=ec;V.getInstanceById=function(v){return ec[Hc[v]]};V.Sketch=function(v){this.attachFunction=v;this.options={isTransparent:false,crispLines:false,pauseOnBlur:false,globalKeyEvents:false};this.params={};this.imageCache={pending:0,images:{},add:function(z){if(dc){var D=new Image;D.onload=function(C){return function(){C.pending--}}(this);this.pending++;this.images[z]=D;D.src=z}else this.images[z]=null}};this.fonts={template:function(){if(!dc)return null;var z=ja.createElement("p");
z.style.fontFamily="serif";z.style.fontSize="72px";z.style.visibility="hidden";z.innerHTML="abcmmmmmmmmmmlll";ja.getElementsByTagName("body")[0].appendChild(z);return z}(),attempt:0,pending:function(){for(var z=true,D=0;D<this.fontList.length;D++)if(this.fontList[D].offsetWidth===this.template.offsetWidth&&this.fontList[D].offsetHeight===this.template.offsetHeight){z=false;this.attempt++}else{ja.getElementsByTagName("body")[0].removeChild(this.fontList[D]);this.fontList.splice(D--,1);this.attempt=
0}if(this.attempt>=30){z=true;for(D=0;D<this.fontList.length;D++){ja.getElementsByTagName("body")[0].removeChild(this.fontList[D]);this.fontList.splice(D--,1)}}z&&ja.getElementsByTagName("body")[0].removeChild(this.template);return z},fontList:[],fontFamily:"",style:dc?ja.createElement("style"):null,add:function(z){var D=typeof z==="object"?z.fontFace:z;this.fontFamily+="@font-face{\n  font-family: '"+D+"';\n  src:  url('"+(typeof z==="object"?z.url:z)+"');\n}\n";this.style.innerHTML=this.fontFamily;
ja.getElementsByTagName("head")[0].appendChild(this.style);z=ja.createElement("p");z.style.fontFamily="'"+D+"', serif";z.style.fontSize="72px";z.style.visibility="hidden";z.innerHTML="abcmmmmmmmmmmlll";ja.getElementsByTagName("body")[0].appendChild(z);this.fontList.push(z)}};this.sourceCode=undefined;this.attach=function(z){if(typeof this.attachFunction==="function")this.attachFunction(z);else if(this.sourceCode){var D=eval(this.sourceCode);D(z);this.attachFunction=D}else throw"Unable to attach sketch to the processing instance";
};this.toString=function(){var z,D="((function(Sketch) {\n";D+="var sketch = new Sketch(\n"+this.sourceCode+");\n";for(z in this.options)if(this.options.hasOwnProperty(z)){var C=this.options[z];D+="sketch.options."+z+" = "+(typeof C==="string"?'"'+C+'"':""+C)+";\n"}for(z in this.imageCache)if(this.options.hasOwnProperty(z))D+='sketch.imageCache.add("'+z+'");\n';D+="return sketch;\n})(Processing.Sketch))";return D}};var od=function(v,z){function D(ga,ra){var G=new XMLHttpRequest;G.onreadystatechange=
function(){if(G.readyState===4){var J;if(G.status!==200&&G.status!==0)J="Invalid XHR status "+G.status;else if(G.responseText==="")J="No content";ra(G.responseText,J)}};G.open("GET",ga,true);G.overrideMimeType&&G.overrideMimeType("application/json");G.setRequestHeader("If-Modified-Since","Fri, 01 Jan 1960 00:00:00 GMT");G.send(null)}function C(ga,ra){D(ra,function(G,J){N[ga]=G;++K;J&&B.push("  "+ra+" ==> "+J);if(K===Q)if(B.length===0)try{return new V(v,N.join("\n"))}catch(U){V.logger.log("Unable to execute pjs sketch: "+
U)}else V.logger.log("Unable to load pjs sketch files:\n"+B.join("\n"))})}for(var N=[],B=[],Q=z.length,K=0,M=0;M<Q;++M)C(M,z[M])},pd=function(){for(var v=ja.getElementsByTagName("canvas"),z=0,D=v.length;z<D;z++){var C=v[z].getAttribute("data-processing-sources");if(C===null){C=v[z].getAttribute("data-src");if(C===null)C=v[z].getAttribute("datasrc")}if(C){C=C.split(" ");for(var N=0;N<C.length;)if(C[N])N++;else C.splice(N,1);od(v[z],C)}}};V.loadSketchFromSources=od;V.disableInit=function(){dc&&ja.removeEventListener("DOMContentLoaded",
pd,false)};V.loadSketchFromSources=od;V.disableInit=function(){dc&&ja.removeEventListener("DOMContentLoaded",pd,false)};if(dc){Aa.Processing=V;ja.addEventListener("DOMContentLoaded",pd,false)}else this.Processing=V})(window,window.document,Math,function(){});

