var SceneJs={version:"1.0"};(function(){SceneJs.exceptions={};function isArray(obj){return toString.call(obj)==="[object Array]";}SceneJs.utils={degToRad:function(degrees){return degrees*Math.PI/180;},namespace:function(){var a=arguments,o=null,i,j,d,rt;for(i=0;i<a.length;++i){d=a[i].split(".");rt=d[0];
eval("if (typeof "+rt+' == "undefined"){'+rt+" = {};} o = "+rt+";");for(j=1;j<d.length;++j){o[d[j]]=o[d[j]]||{};o=o[d[j]];}}},newScope:function(_parent,_fixed){var parent=_parent;var data={};var fixed=_fixed||(_parent?_parent.isfixed():false);return{put:function(key,value){data[key]=value;},get:function(key){var value=data[key];
if((value==0)||value){return value;}if(!parent){return null;}return parent.get(key);},isfixed:function(){return fixed;}};},getNodeConfig:function(args){if(args.length==0){throw new SceneJs.exceptions.InvalidNodeConfigException("Invalid node parameters: should be a configuration followed by zero or more child nodes");
}var result={};var a0=args[0];if(a0 instanceof Function){result.getParams=a0;result.fixed=false;}else{result.getParams=function(){return a0;};result.fixed=true;}result.children=[];for(var i=1;i<args.length;i++){var arg=args[i];if(isArray(arg)){for(var j=0;j<arg.length;j++){result.children.push(arg[j]);
}}else{result.children.push(arg);}}return result;},visitChildren:function(config,scope){if(config.children){for(var i=0;i<config.children.length;i++){config.children[i](scope);}}}};SceneJs.backends=new (function(){var status={error:null};var backends={};var ctx={};this.installBackend=function(backend){if(!status.error){try{backend.install(ctx);
backends[backend.type]=backend;}catch(e){status.error=new SceneJs.exceptions.NodeBackendInstallFailedException('Failed to install backend module for node type "'+backend.type+'": '+(e.message||e),e);}}};this.getBackend=function(type){var backend=backends[type];if(!backend){throw new SceneJs.exceptions.NodeBackendNotFoundException("No backend installed of type '' + type + ''");
}return backend;};this.getStatus=function(){return status;};this.clearStatus=function(){status={};};this.reset=function(){for(var type in backends){var backend=backends[type];if(backend.reset){backend.reset();}}};})();})();SceneJs.utils.ns=SceneJs.utils.namespace;SceneJs.utils.ns("SceneJs");SceneJs.math={negateVector4:function(v){return[-v[0],-v[1],-v[2],-v[3]];
},addVec4:function(u,v){return[u[0]+v[0],u[1]+v[1],u[2]+v[2],u[3]+v[3]];},addVec4s:function(v,s){return[v[0]+s,v[1]+s,v[2]+s,v[3]+s];},addScalarVec4:function(s,v){return SceneJs.math.addVec4s(v,s);},subVec4:function(u,v){return[u[0]-v[0],u[1]-v[1],u[2]-v[2],u[3]-v[3]];},subVec4Scalar:function(v,s){return[v[0]-s,v[1]-s,v[2]-s,v[3]-s];
},subScalarVec4:function(v,s){return[s-v[0],s-v[1],s-v[2],s-v[3]];},mulVec4:function(u,v){return[u[0]*v[0],u[1]*v[1],u[2]*v[2],u[3]*v[3]];},mulVec4Scalar:function(v,s){return[v[0]*s,v[1]*s,v[2]*s,v[3]*s];},divVec4:function(u,v){return[u[0]/v[0],u[1]/v[1],u[2]/v[2],u[3]/v[3]];},divVec4s:function(v,s){return[v[0]/s,v[1]/s,v[2]/s,v[3]/s];
},divScalarVec4:function(s,v){return[s/v[0],s/v[1],s/v[2],s/v[3]];},dotVector4:function(u,v){return(u[0]*v[0]+u[1]*v[1]+u[2]*v[2]+u[3]*v[3]);},cross3Vec4:function(u,v){return[u[1]*v[2]-u[2]*v[1],u[2]*v[0]-u[0]*v[2],u[0]*v[1]-u[1]*v[0],0];},sqLenVec4:function(v){return SceneJs.math.dotVector4(v,v);},lenVec4:function(v){return Math.sqrt(SceneJs.math.sqLenVec4(v));
},normalizeVec4:function(v){var f=1/SceneJs.math.lenVec4(v);return SceneJs.math.mulVec4Scalar(v,f);},mat4:function(){return new Array(16);},dupMat4:function(m){return m.slice(0,16);},getCellMat4:function(m,row,col){return m[row+col*4];},setCellMat4:function(m,row,col,s){m[row+col*4]=s;},getRowMat4:function(m,r){return[m[r+0],m[r+4],m[r+8],m[r+12]];
},setRowMat4:function(m,r,v){m[r+0]=v[0];m[r+4]=v[1];m[r+8]=v[2];m[r+12]=v[3];},setRowMat4c:function(m,r,x,y,z,w){SceneJs.math.setRowMat4(m,r,[x,y,z,w]);},setRowMat4s:function(m,r,s){SceneJs.math.setRowMat4c(m,r,s,s,s,s);},getColMat4:function(m,c){var i=c*4;return[m[i+0],m[i+1],m[i+2],m[i+3]];},setColMat4v:function(m,c,v){var i=c*4;
m[i+0]=v[0];m[i+1]=v[1];m[i+2]=v[2];m[i+3]=v[3];},setColMat4c:function(m,c,x,y,z,w){SceneJs.math.setColMat4v(m,c,[x,y,z,w]);},setColMat4Scalar:function(m,c,s){SceneJs.math.setColMat4c(m,c,s,s,s,s);},mat4To3:function(m){return[m[0],m[1],m[2],m[4],m[5],m[6],m[8],m[9],m[10]];},m4s:function(s){return[s,s,s,s,s,s,s,s,s,s,s,s,s,s,s,s];
},setMat4ToZeroes:function(){return SceneJs.math.m4s(0);},setMat4ToOnes:function(){return SceneJs.math.m4s(1);},diagonalMat4v:function(v){return[v[0],0,0,0,0,v[1],0,0,0,0,v[2],0,0,0,0,v[3]];},diagonalMat4c:function(x,y,z,w){return SceneJs.math.diagonalMat4v([x,y,z,w]);},diagonalMat4s:function(s){return SceneJs.math.diagonalMat4c(s,s,s,s);
},identityMat4:function(){return SceneJs.math.diagonalMat4s(1);},isIdentityMat4:function(m){var i=0;var j=0;var s=0;for(i=0;i<4;++i){for(j=0;j<4;++j){s=m[i+j*4];if((i==j)){if(s!=1){return false;}}else{if(s!=0){return false;}}}}return true;},negateMat4:function(m){var r=new SceneJs.math.mat4();for(var i=0;
i<16;++i){r[i]=-m[i];}return r;},addMat4:function(a,b){var r=new SceneJs.math.mat4();for(var i=0;i<16;++i){r[i]=a[i]+b[i];}return r;},addMat4Scalar:function(m,s){var r=new SceneJs.math.mat4();for(var i=0;i<16;++i){r[i]=m[i]+s;}return r;},addScalarMat4:function(s,m){return SceneJs.math.addMat4Scalar(m,s);
},subMat4:function(a,b){var r=new SceneJs.math.mat4();for(var i=0;i<16;++i){r[i]=a[i]-b[i];}return r;},subMat4Scalar:function(m,s){var r=new SceneJs.math.mat4();for(var i=0;i<16;++i){r[i]=m[i]-s;}return r;},subScalarMat4:function(s,m){var r=new SceneJs.math.mat4();for(var i=0;i<16;++i){r[i]=s-m[i];}return r;
},mulMat4:function(a,b){var r=new SceneJs.math.mat4();var i=0;var j=0;var k=0;var s=0;for(i=0;i<4;++i){for(j=0;j<4;++j){s=0;for(k=0;k<4;++k){s+=a[i+k*4]*b[k+j*4];}r[i+j*4]=s;}}return r;},mulMat4s:function(m,s){var r=new SceneJs.math.mat4();for(var i=0;i<16;++i){r[i]=m[i]*s;}return r;},mulMat4v4:function(m,v){return[m[0]*v[0]+m[4]*v[1]+m[8]*v[2]+m[12]*v[3],m[1]*v[0]+m[5]*v[1]+m[9]*v[2]+m[13]*v[3],m[2]*v[0]+m[6]*v[1]+m[10]*v[2]+m[14]*v[3],m[3]*v[0]+m[7]*v[1]+m[11]*v[2]+m[15]*v[3]];
},transposeMat4:function(m){var r=new SceneJs.math.mat4();var i=0;var j=0;for(i=0;i<4;++i){for(j=0;j<4;++j){r[i+j*4]=m[i*4+j];}}return r;},determinantMat4:function(m){var f=SceneJs.math.getCellMat4;return(f(m,0,3)*f(m,1,2)*f(m,2,1)*f(m,3,0)-f(m,0,2)*f(m,1,3)*f(m,2,1)*f(m,3,0)-f(m,0,3)*f(m,1,1)*f(m,2,2)*f(m,3,0)+f(m,0,1)*f(m,1,3)*f(m,2,2)*f(m,3,0)+f(m,0,2)*f(m,1,1)*f(m,2,3)*f(m,3,0)-f(m,0,1)*f(m,1,2)*f(m,2,3)*f(m,3,0)-f(m,0,3)*f(m,1,2)*f(m,2,0)*f(m,3,1)+f(m,0,2)*f(m,1,3)*f(m,2,0)*f(m,3,1)+f(m,0,3)*f(m,1,0)*f(m,2,2)*f(m,3,1)-f(m,0,0)*f(m,1,3)*f(m,2,2)*f(m,3,1)-f(m,0,2)*f(m,1,0)*f(m,2,3)*f(m,3,1)+f(m,0,0)*f(m,1,2)*f(m,2,3)*f(m,3,1)+f(m,0,3)*f(m,1,1)*f(m,2,0)*f(m,3,2)-f(m,0,1)*f(m,1,3)*f(m,2,0)*f(m,3,2)-f(m,0,3)*f(m,1,0)*f(m,2,1)*f(m,3,2)+f(m,0,0)*f(m,1,3)*f(m,2,1)*f(m,3,2)+f(m,0,1)*f(m,1,0)*f(m,2,3)*f(m,3,2)-f(m,0,0)*f(m,1,1)*f(m,2,3)*f(m,3,2)-f(m,0,2)*f(m,1,1)*f(m,2,0)*f(m,3,3)+f(m,0,1)*f(m,1,2)*f(m,2,0)*f(m,3,3)+f(m,0,2)*f(m,1,0)*f(m,2,1)*f(m,3,3)-f(m,0,0)*f(m,1,2)*f(m,2,1)*f(m,3,3)-f(m,0,1)*f(m,1,0)*f(m,2,2)*f(m,3,3)+f(m,0,0)*f(m,1,1)*f(m,2,2)*f(m,3,3));
},inverseMat4:function(m){var t=new SceneJs.math.mat4();var f=SceneJs.math.getCellMat4;t[0]=f(m,1,2)*f(m,2,3)*f(m,3,1)-f(m,1,3)*f(m,2,2)*f(m,3,1)+f(m,1,3)*f(m,2,1)*f(m,3,2)-f(m,1,1)*f(m,2,3)*f(m,3,2)-f(m,1,2)*f(m,2,1)*f(m,3,3)+f(m,1,1)*f(m,2,2)*f(m,3,3);t[1]=f(m,1,3)*f(m,2,2)*f(m,3,0)-f(m,1,2)*f(m,2,3)*f(m,3,0)-f(m,1,3)*f(m,2,0)*f(m,3,2)+f(m,1,0)*f(m,2,3)*f(m,3,2)+f(m,1,2)*f(m,2,0)*f(m,3,3)-f(m,1,0)*f(m,2,2)*f(m,3,3);
t[2]=f(m,1,1)*f(m,2,3)*f(m,3,0)-f(m,1,3)*f(m,2,1)*f(m,3,0)+f(m,1,3)*f(m,2,0)*f(m,3,1)-f(m,1,0)*f(m,2,3)*f(m,3,1)-f(m,1,1)*f(m,2,0)*f(m,3,3)+f(m,1,0)*f(m,2,1)*f(m,3,3);t[3]=f(m,1,2)*f(m,2,1)*f(m,3,0)-f(m,1,1)*f(m,2,2)*f(m,3,0)-f(m,1,2)*f(m,2,0)*f(m,3,1)+f(m,1,0)*f(m,2,2)*f(m,3,1)+f(m,1,1)*f(m,2,0)*f(m,3,2)-f(m,1,0)*f(m,2,1)*f(m,3,2);
t[4]=f(m,0,3)*f(m,2,2)*f(m,3,1)-f(m,0,2)*f(m,2,3)*f(m,3,1)-f(m,0,3)*f(m,2,1)*f(m,3,2)+f(m,0,1)*f(m,2,3)*f(m,3,2)+f(m,0,2)*f(m,2,1)*f(m,3,3)-f(m,0,1)*f(m,2,2)*f(m,3,3);t[5]=f(m,0,2)*f(m,2,3)*f(m,3,0)-f(m,0,3)*f(m,2,2)*f(m,3,0)+f(m,0,3)*f(m,2,0)*f(m,3,2)-f(m,0,0)*f(m,2,3)*f(m,3,2)-f(m,0,2)*f(m,2,0)*f(m,3,3)+f(m,0,0)*f(m,2,2)*f(m,3,3);
t[6]=f(m,0,3)*f(m,2,1)*f(m,3,0)-f(m,0,1)*f(m,2,3)*f(m,3,0)-f(m,0,3)*f(m,2,0)*f(m,3,1)+f(m,0,0)*f(m,2,3)*f(m,3,1)+f(m,0,1)*f(m,2,0)*f(m,3,3)-f(m,0,0)*f(m,2,1)*f(m,3,3);t[7]=f(m,0,1)*f(m,2,2)*f(m,3,0)-f(m,0,2)*f(m,2,1)*f(m,3,0)+f(m,0,2)*f(m,2,0)*f(m,3,1)-f(m,0,0)*f(m,2,2)*f(m,3,1)-f(m,0,1)*f(m,2,0)*f(m,3,2)+f(m,0,0)*f(m,2,1)*f(m,3,2);
t[8]=f(m,0,2)*f(m,1,3)*f(m,3,1)-f(m,0,3)*f(m,1,2)*f(m,3,1)+f(m,0,3)*f(m,1,1)*f(m,3,2)-f(m,0,1)*f(m,1,3)*f(m,3,2)-f(m,0,2)*f(m,1,1)*f(m,3,3)+f(m,0,1)*f(m,1,2)*f(m,3,3);t[9]=f(m,0,3)*f(m,1,2)*f(m,3,0)-f(m,0,2)*f(m,1,3)*f(m,3,0)-f(m,0,3)*f(m,1,0)*f(m,3,2)+f(m,0,0)*f(m,1,3)*f(m,3,2)+f(m,0,2)*f(m,1,0)*f(m,3,3)-f(m,0,0)*f(m,1,2)*f(m,3,3);
t[10]=f(m,0,1)*f(m,1,3)*f(m,3,0)-f(m,0,3)*f(m,1,1)*f(m,3,0)+f(m,0,3)*f(m,1,0)*f(m,3,1)-f(m,0,0)*f(m,1,3)*f(m,3,1)-f(m,0,1)*f(m,1,0)*f(m,3,3)+f(m,0,0)*f(m,1,1)*f(m,3,3);t[11]=f(m,0,2)*f(m,1,1)*f(m,3,0)-f(m,0,1)*f(m,1,2)*f(m,3,0)-f(m,0,2)*f(m,1,0)*f(m,3,1)+f(m,0,0)*f(m,1,2)*f(m,3,1)+f(m,0,1)*f(m,1,0)*f(m,3,2)-f(m,0,0)*f(m,1,1)*f(m,3,2);
t[12]=f(m,0,3)*f(m,1,2)*f(m,2,1)-f(m,0,2)*f(m,1,3)*f(m,2,1)-f(m,0,3)*f(m,1,1)*f(m,2,2)+f(m,0,1)*f(m,1,3)*f(m,2,2)+f(m,0,2)*f(m,1,1)*f(m,2,3)-f(m,0,1)*f(m,1,2)*f(m,2,3);t[13]=f(m,0,2)*f(m,1,3)*f(m,2,0)-f(m,0,3)*f(m,1,2)*f(m,2,0)+f(m,0,3)*f(m,1,0)*f(m,2,2)-f(m,0,0)*f(m,1,3)*f(m,2,2)-f(m,0,2)*f(m,1,0)*f(m,2,3)+f(m,0,0)*f(m,1,2)*f(m,2,3);
t[14]=f(m,0,3)*f(m,1,1)*f(m,2,0)-f(m,0,1)*f(m,1,3)*f(m,2,0)-f(m,0,3)*f(m,1,0)*f(m,2,1)+f(m,0,0)*f(m,1,3)*f(m,2,1)+f(m,0,1)*f(m,1,0)*f(m,2,3)-f(m,0,0)*f(m,1,1)*f(m,2,3);t[15]=f(m,0,1)*f(m,1,2)*f(m,2,0)-f(m,0,2)*f(m,1,1)*f(m,2,0)+f(m,0,2)*f(m,1,0)*f(m,2,1)-f(m,0,0)*f(m,1,2)*f(m,2,1)-f(m,0,1)*f(m,1,0)*f(m,2,2)+f(m,0,0)*f(m,1,1)*f(m,2,2);
var s=1/SceneJs.math.determinantMat4(m);return SceneJs.math.mulMat4s(t,s);},traceMat4:function(m){return(m[0]+m[5]+m[10]+m[15]);},translationMat4v:function(v){var m=SceneJs.math.identityMat4();m[12]=v[0];m[13]=v[1];m[14]=v[2];return m;},translationMat4c:function(x,y,z){return SceneJs.math.translationMat4v([x,y,z]);
},translationMat4s:function(s){return SceneJs.math.translationMat4c(s,s,s);},rotationMat4v:function(anglerad,axis){var ax=SceneJs.math.normalizeVec4([axis[0],axis[1],axis[2],0]);var s=Math.sin(anglerad);var c=Math.cos(anglerad);var q=1-c;var x=ax[0];var y=ax[1];var z=ax[2];var xx,yy,zz,xy,yz,zx,xs,ys,zs;
xx=x*x;yy=y*y;zz=z*z;xy=x*y;yz=y*z;zx=z*x;xs=x*s;ys=y*s;zs=z*s;var m=new SceneJs.math.mat4();m[0]=(q*xx)+c;m[1]=(q*xy)+zs;m[2]=(q*zx)-ys;m[3]=0;m[4]=(q*xy)-zs;m[5]=(q*yy)+c;m[6]=(q*yz)+xs;m[7]=0;m[8]=(q*zx)+ys;m[9]=(q*yz)-xs;m[10]=(q*zz)+c;m[11]=0;m[12]=0;m[13]=0;m[14]=0;m[15]=1;return m;},rotationMat4c:function(anglerad,x,y,z){return SceneJs.math.rotationMat4v(anglerad,[x,y,z]);
},scalingMat4v:function(v){var m=SceneJs.math.identityMat4();m[0]=v[0];m[5]=v[1];m[10]=v[2];return m;},scalingMat4c:function(x,y,z){return SceneJs.math.scalingMat4v([x,y,z]);},scalingMat4s:function(s){return SceneJs.math.scalingMat4c(s,s,s);},lookatMat4v:function(pos,target,up){var pos4=[pos[0],pos[1],pos[2],0];
var target4=[target[0],target[1],target[2],0];var up4=[up[0],up[1],up[2],0];var v=SceneJs.math.normalizeVec4(SceneJs.math.subVec4(target4,pos4));var u=SceneJs.math.normalizeVec4(up4);var s=SceneJs.math.normalizeVec4(SceneJs.math.cross3Vec4(v,u));u=SceneJs.math.normalizeVec4(SceneJs.math.cross3Vec4(s,v));
var m=new SceneJs.math.mat4();m[0]=s[0];m[1]=u[0];m[2]=-v[0];m[3]=0;m[4]=s[1];m[5]=u[1];m[6]=-v[1];m[7]=0;m[8]=s[2];m[9]=u[2];m[10]=-v[2];m[11]=0;m[12]=0;m[13]=0;m[14]=0;m[15]=1;m=SceneJs.math.mulMat4(m,SceneJs.math.translationMat4v(SceneJs.math.negateVector4(pos4)));return m;},lookatMat4c:function(posx,posy,posz,targetx,targety,targetz,upx,upy,upz){return SceneJs.math.lookatMat4v([posx,posy,posz],[targetx,targety,targetz],[upx,upy,upz]);
},orthoMat4v:function(omin,omax){var omin4=[omin[0],omin[1],omin[2],0];var omax4=[omax[0],omax[1],omax[2],0];var vsum=SceneJs.math.addVec4(omax4,omin4);var vdif=SceneJs.math.subVec4(omax4,omin4);var m=new SceneJs.math.mat4();m[0]=2/vdif[0];m[1]=0;m[2]=0;m[3]=0;m[4]=0;m[5]=2/vdif[1];m[6]=0;m[7]=0;m[8]=0;
m[9]=0;m[10]=-2/vdif[2];m[11]=0;m[12]=-vsum[0]/vdif[0];m[13]=-vsum[1]/vdif[1];m[14]=-vsum[2]/vdif[2];m[15]=1;return m;},orthoMat4c:function(left,right,bottom,top,znear,zfar){return SceneJs.math.orthoMat4v([left,bottom,znear],[right,top,zfar]);},frustumMat4v:function(fmin,fmax){var fmin4=[fmin[0],fmin[1],fmin[2],0];
var fmax4=[fmax[0],fmax[1],fmax[2],0];var vsum=SceneJs.math.addVec4(fmax4,fmin4);var vdif=SceneJs.math.subVec4(fmax4,fmin4);var t=2*fmin4[2];var m=new SceneJs.math.mat4();m[0]=t/vdif[0];m[1]=0;m[2]=0;m[3]=0;m[4]=0;m[5]=t/vdif[1];m[6]=0;m[7]=0;m[8]=vsum[0]/vdif[0];m[9]=vsum[1]/vdif[1];m[10]=-vsum[2]/vdif[2];
m[11]=-1;m[12]=0;m[13]=0;m[14]=-t*fmax4[2]/vdif[2];m[15]=0;return m;},frustumMatrix4:function(left,right,bottom,top,znear,zfar){var fmin4=[left,right,bottom,0];var fmax4=[top,znear,zfar,0];var vsum=SceneJs.math.addVec4(fmax4,fmin4);var vdif=SceneJs.math.subVec4(fmax4,fmin4);var t=2*fmin4[2];var m=new SceneJs.math.mat4();
m[0]=t/vdif[0];m[1]=0;m[2]=0;m[3]=0;m[4]=0;m[5]=t/vdif[1];m[6]=0;m[7]=0;m[8]=vsum[0]/vdif[0];m[9]=vsum[1]/vdif[1];m[10]=-vsum[2]/vdif[2];m[11]=-1;m[12]=0;m[13]=0;m[14]=-t*fmax4[2]/vdif[2];m[15]=0;return m;},perspectiveMatrix4:function(fovyrad,aspectratio,znear,zfar){var pmin=new Array(4);var pmax=new Array(4);
pmin[2]=znear;pmax[2]=zfar;pmax[1]=pmin[2]*Math.tan(fovyrad/2);pmin[1]=-pmax[1];pmax[0]=pmax[1]*aspectratio;pmin[0]=-pmax[0];return SceneJs.math.frustumMat4v(pmin,pmax);},transformPoint3:function(m,p){return{x:(m[0]*p.x)+(m[4]*p.y)+(m[8]*p.z)+m[12],y:(m[1]*p.x)+(m[5]*p.y)+(m[9]*p.z)+m[13],z:(m[2]*p.x)+(m[6]*p.y)+(m[10]*p.z)+m[14],w:(m[3]*p.x)+(m[7]*p.y)+(m[11]*p.z)+m[15]};
},transformVector3:function(m,v){return{x:(m[0]*v.x)+(m[4]*v.y)+(m[8]*v.z),y:(m[1]*v.x)+(m[5]*v.y)+(m[9]*v.z),z:(m[2]*v.x)+(m[6]*v.y)+(m[10]*v.z)};}};SceneJs.node=function(){var cfg=SceneJs.utils.getNodeConfig(arguments);return function(scope){var params=cfg.getParams();var childScope=SceneJs.utils.newScope(scope,false);
if(params){for(var key in params){childScope.put(key,params[key]);}}SceneJs.utils.visitChildren(cfg,childScope||scope);};};SceneJs.exceptions.WebGLNotSupportedException=function(msg,cause){this.message=msg;this.cause=cause;};SceneJs.exceptions.NodeBackendInstallFailedException=function(msg,cause){this.message=msg;
this.cause=cause;};SceneJs.exceptions.NodeConfigExpectedException=function(msg,cause){this.message=msg;this.cause=cause;};SceneJs.exceptions.ShaderLinkFailureException=function(msg,cause){this.message=msg;this.cause=cause;};SceneJs.exceptions.ShaderVariableNotFoundException=function(msg,cause){this.message=msg;
this.cause=cause;};SceneJs.exceptions.NoCanvasActiveException=function(msg,cause){this.message=msg;this.cause=cause;};SceneJs.exceptions.NoShaderActiveException=function(msg,cause){this.message=msg;this.cause=cause;};SceneJs.exceptions.CanvasNotFoundException=function(msg,cause){this.message=msg;this.cause=cause;
};SceneJs.exceptions.CanvasAlreadyActiveException=function(msg,cause){this.message=msg;this.cause=cause;};SceneJs.exceptions.InvalidLookAtConfigException=function(msg,cause){this.message=msg;this.cause=cause;};SceneJs.exceptions.InvalidGeometryConfigException=function(msg,cause){this.message=msg;this.cause=cause;
};SceneJs.exceptions.UnsupportedOperationException=function(msg,cause){this.message=msg;this.cause=cause;};SceneJs.exceptions.IllegalRotateConfigException=function(msg,cause){this.message=msg;this.cause=cause;};SceneJs.exceptions.InvalidNodeConfigException=function(msg,cause){this.message=msg;this.cause=cause;
};SceneJs.exceptions.NodeBackendNotFoundException=function(msg,cause){this.message=msg;this.cause=cause;};SceneJs.exceptions.AssetLoadFailureException=function(msg,uri,proxy){this.message=msg+' (uri="'+(uri||"null")+'", proxy="'+(proxy||"null")+'")';};SceneJs.backends.installBackend(new (function(){this.type="scene";
var ctx;this.install=function(_ctx){ctx=_ctx;ctx.scenes=(function(){var scenes={};var nScenes=0;var activeSceneId=null;var commands={};return{registerScene:function(scene){var i=0;while(true){var sceneId="scene"+i++;if(!scenes[sceneId]){scenes[sceneId]={sceneId:sceneId,scene:scene,numProcesses:0};nScenes++;
return sceneId;}}},deregisterScene:function(sceneId){scenes[sceneId]=null;nScenes--;if(nScenes==0){SceneJs.backends.reset();}if(activeSceneId==sceneId){activeSceneId=null;}return null;},setActiveScene:function(sceneId){activeSceneId=sceneId;},getAllScenes:function(){var list=[];for(var id in scenes){var s=scenes[id];
if(s){list.push(s.scene);}}return list;},processStarted:function(){scenes[activeSceneId].numProcesses++;},processStopped:function(){scenes[activeSceneId].numProcesses--;},getNumProcesses:function(sceneId){return sceneId?scenes[sceneId].numProcesses:(activeSceneId?scenes[activeSceneId].numProcesses:0);
},getScene:function(sceneId){return scenes[sceneId].scene;},onEvent:function(name,command){var list=commands[name];if(!list){list=[];commands[name]=list;}list.push(command);},fireEvent:function(name,params){var list=commands[name];if(list){for(var i=0;i<list.length;i++){list[i](params);}}}};})();};this.getAllScenes=function(){return ctx.scenes.getAllScenes();
};this.registerScene=function(scene){return ctx.scenes.registerScene(scene);};this.deregisterScene=function(sceneId){return ctx.scenes.deregisterScene(sceneId);};this.setActiveScene=function(sceneId){return ctx.scenes.setActiveScene(sceneId);ctx.scenes.fireEvent("scene-activated");};this.flush=function(){ctx.scenes.fireEvent("scene-flushed");
return ctx.scenes.setActiveScene(null);};this.getNumProcesses=function(sceneId){return ctx.scenes.getNumProcesses(sceneId);};})());(function(){var backend=SceneJs.backends.getBackend("scene");SceneJs.scene=function(){if(SceneJs.backends.getStatus().error){throw SceneJs.backends.getStatus().error;}var cfg=SceneJs.utils.getNodeConfig(arguments);
var sceneId=null;var _scene={render:function(paramOverrides){if(sceneId){backend.setActiveScene(sceneId);var scope=SceneJs.utils.newScope(null,false);var params=cfg.getParams();for(var key in params){scope.put(key,params[key]);}if(paramOverrides){for(var key in paramOverrides){scope.put(key,paramOverrides[key]);
}}SceneJs.utils.visitChildren(cfg,scope);backend.setActiveScene(null);}},getNumProcesses:function(){return(sceneId)?backend.getNumProcesses(sceneId):0;},destroy:function(){if(sceneId){sceneId=backend.deregisterScene(sceneId);}},isActive:function(){return(sceneId!=null);}};sceneId=backend.registerScene(_scene);
return _scene;};SceneJs.reset=function(){var scenes=backend.getAllScenes();var temp=[];for(var i=0;i<scenes.length;i++){temp.push(scenes[i]);}while(temp.length>0){temp.pop().destroy();}};})();SceneJs.backends.installBackend(new (function(){this.type="renderer";var CONTEXT_TYPES=["experimental-webgl","webkit-3d","moz-webgl","moz-glweb20"];
var ctx;var stateStack;var glEnumMap;var currentProps;var findCanvas=function(canvasId){var canvas=document.getElementById(canvasId);if(!canvas){throw new SceneJs.exceptions.CanvasNotFoundException("Could not find canvas document element with id '"+canvasId+"'");}var context;for(var i=0;(!context)&&i<CONTEXT_TYPES.length;
i++){try{context=canvas.getContext(CONTEXT_TYPES[i]);}catch(e){}}if(!context){throw new SceneJs.exceptions.WebGLNotSupportedException("Canvas document element with id '"+canvasId+"' failed to provide a supported context");}context.clearColor(0,0,0,1);context.clearDepth(1);context.enable(context.DEPTH_TEST);
context.disable(context.CULL_FACE);context.disable(context.TEXTURE_2D);context.depthRange(0,1);context.disable(context.SCISSOR_TEST);return{canvas:canvas,context:context,canvasId:canvasId};};var glEnum=function(context,name){if(!glEnumMap){glEnumMap={"funcAdd":context.FUNC_ADD,"funcSubtract":context.FUNC_SUBTRACT,"funcReverseSubtract":context.FUNC_REVERSE_SUBTRACT,"zero":context.ZERO,"one":context.ONE,"srcColor":context.SRC_COLOR,"oneMinusSrcColor":context.ONE_MINUS_SRC_COLOR,"dstColor":context.DST_COLOR,"oneMinusDstColor":context.ONE_MINUS_DST_COLOR,"srcAlpha":context.SRC_ALPHA,"oneMinusSrcAlpha":context.ONE_MINUS_SRC_ALPHA,"dstAlpha":context.DST_ALPHA,"oneMinusDstAlpha":context.ONE_MINUS_DST_ALPHA,"contantColor":context.CONSTANT_COLOR,"oneMinusConstantColor":context.ONE_MINUS_CONSTANT_COLOR,"constantAlpha":context.CONSTANT_ALPHA,"oneMinusConstantAlpha":context.ONE_MINUS_CONSTANT_ALPHA,"srcAlphaSaturate":context.SRC_ALPHA_SATURATE,"front":context.FRONT,"back":context.BACK,"frontAndBack":context.FRONT_AND_BACK,"never":context.NEVER,"less":context.LESS,"equal":context.EQUAL,"lequal":context.LEQUAL,"greater":context.GREATER,"notequal":context.NOTEQUAL,"gequal":context.GEQUAL,"always":context.ALWAYS,"cw":context.CW,"ccw":context.CCW};
}if(!name){throw new SceneJs.exceptions.InvalidNodeConfigException('Null renderer node config: "'+name+'"');}var result=glEnumMap[name];if(!result){throw new SceneJs.exceptions.InvalidNodeConfigException('Unknown renderer node config: "'+name+'"');}return result;};var glSetters={enableBlend:function(context,flag){context.enable(context.BLEND,flag);
},blendColor:function(context,color){color={r:color.r||0,g:color.g||0,b:color.b||0,a:color.a||1};context.blendColor(color.r,color.g,color.b,color.a);},blendEquation:function(context,eqn){context.blendEquation(context,eqn);},blendEquationSeparate:function(context,eqn){eqn={rgb:glEnum(context,eqn.rgb||"func_add"),alpha:glEnum(context,eqn.alpha||"func_add")};
context.blendEquation(eqn.rgb,eqn.alpha);},blendFunc:function(context,funcs){funcs={sfactor:glEnum(context,funcs.sfactor||"one"),dfactor:glEnum(context,funcs.dfactor||"zero")};context.blendFunc(funcs.sfactor,funcs.dfactor);},blendFuncSeparate:function(context,func){func={srcRGB:glEnum(context,func.srcRGB||"zero"),dstRGB:glEnum(context,func.dstRGB||"zero"),srcAlpha:glEnum(context,func.srcAlpha||"zero"),dstAlpha:glEnum(context,func.dstAlpha||"zero")};
context.blendFuncSeparate(func.srcRGB,func.dstRGB,func.srcAlpha,func.dstAlpha);},clearColor:function(context,color){color.r=color.r||0;color.g=color.g||0;color.b=color.b||0;color.a=color.a||1;context.clearColor(color.r,color.g,color.b,color.a);},clearDepth:function(context,depth){context.clearDepth(depth);
},clearStencil:function(context,clearValue){context.clearStencil(clearValue);},colorMask:function(context,color){color.r=color.r||0;color.g=color.g||0;color.b=color.b||0;color.a=color.a||1;context.colorMask(color.r,color.g,color.b,color.a);},enableCullFace:function(context,flag){if(flag){context.enable(context.CULL_FACE);
}else{context.disable(context.CULL_FACE);}},cullFace:function(context,mode){mode=glEnum(context,mode);context.cullFace(mode);},enableDepthTest:function(context,flag){if(flag===false){context.disable(context.DEPTH_TEST);}else{context.enable(context.DEPTH_TEST);}},depthFunc:function(context,func){func=glEnum(context,func);
context.depthFunc(glEnum(context,func));},enableDepthMask:function(context,flag){context.depthMask(flag);},depthRange:function(context,range){range={zNear:range.zNear||0,zFar:range.zFar||1};context.depthRange(range.zNear,range.zFar);},frontFace:function(context,mode){mode=glEnum(context,mode);context.frontFace(mode);
},lineWidth:function(context,width){context.lineWidth(width);},enableTexture2D:function(context,flag){if(flag){context.enable(context.TEXTURE_2D);}else{context.disable(context.TEXTURE_2D);}},enableScissorTest:function(context,flag){if(flag){context.enable(context.SCISSOR_TEST);}else{context.disable(context.SCISSOR_TEST);
}}};var funcs={viewport:function(context,v){v={x:v.x||1,y:v.y||1,width:v.width||ctx.renderer.canvas.width,height:v.height||ctx.renderer.canvas.renderer.height};currentProps.viewport=v;context.viewport(v.x,v.y,v.width,v.height);},scissor:function(context,s){s={x:s.x||currentProps.viewport.x,y:s.y||currentProps.viewport.y,width:s.width||currentProps.viewport.width,height:s.height||currentProps.viewport.height};
currentProps.scissor=s;context.scissor(s.x,s.y,s.width,s.height);},clear:function(context,mask){var m;if(mask.color){m=context.COLOR_BUFFER_BIT;}if(mask.depth){m=m|context.DEPTH_BUFFER_BIT;}if(mask.stencil){m=m|context.STENCIL_BUFFER_BIT;}if(m){context.clear(m);}}};var setProperties=function(props){var context=ctx.renderer.canvas.context;
for(var key in props){var setter=glSetters[key];if(setter){setter(context,props[key],ctx.renderer);}}if(props.viewport){funcs.viewport(context,props.viewport);}if(props.scissor){funcs.clear(context,props.scissor);}if(props.clear){funcs.clear(context,props.clear);}};var init=function(){stateStack=[{props:{clearColor:{r:0,g:0,b:0,a:1},clearDepth:1,enableDepthTest:true,enableCullFace:false,enableTexture2D:false,depthRange:{zNear:0,zFar:1},enableScissorTest:false,viewport:{}}}];
currentProps={};ctx.renderer={};};this.install=function(_ctx){ctx=_ctx;init();};var getSuperProperty=function(name){for(var i=stateStack.length-1;i>=0;i--){var state=stateStack[i];if(state.props[name]!=null){return state.props[name];}}throw"Internal error - renderer backend stateStack underflow!";};this.createRendererState=function(props){var canvas;
if(props.canvasId){if(ctx.renderer.canvas){throw new SceneJs.exceptions.CanvasAlreadyActiveException("A canvas is already activated by a higher renderer node");}canvas=findCanvas(props.canvasId);}else{if(ctx.renderer.canvas){canvas=ctx.renderer.canvas;}else{throw new SceneJs.exceptions.NoCanvasActiveException("Outermost renderer node must have a canvasId");
}}var restore={};for(var name in props){if((!props[name]===undefined)){restore[name]=getSuperProperty(name);}}var state={canvas:canvas,props:props,restore:restore,prevCanvas:ctx.renderer.canvas};return state;};this.setRendererState=function(state){ctx.renderer.canvas=state.canvas;stateStack.push(state);
setProperties(state.props);};this.restoreRendererState=function(state){stateStack.pop();if(state.prevCanvas){setProperties(state.restore);}else{ctx.renderer.canvas=null;}};this.reset=function(){init();};})());SceneJs.renderer=function(){var cfg=SceneJs.utils.getNodeConfig(arguments);var backend=SceneJs.backends.getBackend("renderer");
var env;return function(scope){var params=cfg.getParams(scope);if(!env||!params.fixed){env=backend.createRendererState(params);}backend.setRendererState(env);SceneJs.utils.visitChildren(cfg,scope);backend.restoreRendererState(env);};};SceneJs.shaderBackend=function(cfg){if(!cfg.type){throw new SceneJs.exceptions.NodeConfigExpectedException("SceneJs.ShaderBackendBase mandatory config missing: 'type'");
}return new (function(){this.type=cfg.type;var ctx;this.install=function(_ctx){ctx=_ctx;if(!ctx.programs){var loadShader=function(context,script,shaderType){var shader=context.createShader(shaderType);context.shaderSource(shader,script);context.compileShader(shader);if(context.getShaderParameter(shader,35713)!=1){alert(context.getShaderInfoLog(shader));
return null;}return shader;};ctx.programs=new function(){var programs={};var activeProgram=null;var vars={vars:{},fixed:true};var programActivationObservers=[];var notifyProgramActivation=function(){for(var i=0;i<programActivationObservers.length;i++){programActivationObservers[i]();}};var deleteProgram=function(program){if(document.getElementById(program.canvas.canvasId)){while(program.fragmentShaders.length>0){program.context.deleteShader(program.fragmentShaders.pop());
}while(program.vertexShaders.length>0){program.context.deleteShader(program.vertexShaders.pop());}program.context.deleteProgram(program.program);}};this.loadProgram=function(_cfg){if(!ctx.renderer.canvas){throw new SceneJs.exceptions.NoCanvasActiveException("No canvas active");}var programId=ctx.renderer.canvas.canvasId+":"+_cfg.type;
var program=programs[programId];if(program){return programId;}var context=ctx.renderer.canvas.context;program={canvas:ctx.renderer.canvas,context:context,programId:programId,program:context.createProgram(),fragmentShaders:[],vertexShaders:[],setters:_cfg.setters,binders:_cfg.binders};for(var i=0;i<_cfg.fragmentShaders.length;
i++){var shader=loadShader(context,_cfg.fragmentShaders[i],context.FRAGMENT_SHADER);context.attachShader(program.program,shader);program.fragmentShaders.push(shader);}for(var i=0;i<_cfg.vertexShaders.length;i++){var shader=loadShader(context,_cfg.vertexShaders[i],context.VERTEX_SHADER);context.attachShader(program.program,shader);
program.vertexShaders.push(shader);}context.linkProgram(program.program);if(context.getProgramParameter(program.program,35714)!=1){deleteProgram(program);throw new SceneJs.exceptions.ShaderLinkFailureException("Failed to link shader program: "+context.getProgramInfoLog(program.program));}program.getVarLocation=(function(){var locations={};
return function(context,name){var loc=locations[name];if(!loc){loc=context.getAttribLocation(activeProgram.program,name);if(loc==-1){loc=context.getUniformLocation(activeProgram.program,name);if(loc==-1){throw new SceneJs.exceptions.ShaderVariableNotFoundException("Variable not found in active shader: '"+name+"'");
}}locations[name]=loc;}return loc;};})();programs[programId]=program;return programId;};var setVarDefaults=function(){for(var key in activeProgram.setters){activeProgram.setters[key].call(this,ctx.renderer.canvas.context,activeProgram.getVarLocation,null);}};this.activateProgram=function(programId){if(!ctx.renderer.canvas){throw new SceneJs.exceptions.NoCanvasActiveException("No canvas active");
}activeProgram=programs[programId];ctx.renderer.canvas.context.useProgram(activeProgram.program);setVarDefaults();vars={vars:{},fixed:true};notifyProgramActivation();};this.getActiveProgramId=function(){return activeProgram?activeProgram.programId:null;};this.setVar=function(name,value){if(!activeProgram){throw new SceneJs.exceptions.NoShaderActiveException("No shader active");
}var setter=activeProgram.setters[name];if(setter){setter.call(this,ctx.renderer.canvas.context,activeProgram.getVarLocation,value);}};this.setVars=function(v){if(!activeProgram){throw new SceneJs.exceptions.NoShaderActiveException("No shader active");}for(var key in activeProgram.setters){activeProgram.setters[key].call(this,ctx.renderer.canvas.context,activeProgram.getVarLocation,v.vars[key]);
}vars=v;};this.loadVars=function(){for(var key in activeProgram.setters){var v=vars.vars[key];activeProgram.setters[key].call(this,ctx.renderer.canvas.context,activeProgram.getVarLocation,v);}};this.getVars=function(){return vars;};this.bindVertexBuffer=function(buffer){if(!activeProgram){throw new SceneJs.exceptions.NoShaderActiveException("No shader active");
}activeProgram.binders.bindVertexBuffer.call(this,ctx.renderer.canvas.context,activeProgram.getVarLocation,buffer);};this.bindNormalBuffer=function(buffer){if(!activeProgram){throw new SceneJs.exceptions.NoShaderActiveException("No shader active");}activeProgram.binders.bindNormalBuffer.call(this,ctx.renderer.canvas.context,activeProgram.getVarLocation,buffer);
};this.bindTextureCoordBuffer=function(buffer){if(!activeProgram){throw new SceneJs.exceptions.NoShaderActiveException("No shader active");}if(activeProgram.binders.bindTextureCoordBuffer){activeProgram.binders.bindTextureCoordBuffer.call(this,ctx.renderer.canvas.context,activeProgram.getVarLocation,buffer);
}};this.bindTexture=function(texture){if(!activeProgram){throw new SceneJs.exceptions.NoShaderActiveException("No shader active");}if(activeProgram.binders.bindTextureSampler){activeProgram.binders.bindTextureSampler.call(this,ctx.renderer.canvas.context,activeProgram.getVarLocation,texture);}};this.deactivateProgram=function(){if(activeProgram){ctx.renderer.canvas.context.flush();
activeProgram=null;ctx.renderer.canvas.context.useProgram(null);}};this.deletePrograms=function(){for(var programId in programs){deleteProgram(programs[programId]);}programs={};activeProgram=null;vars={};};this.onProgramActivate=function(f){programActivationObservers.push(f);};};}};this.loadProgram=function(){return ctx.programs.loadProgram(cfg);
};this.activateProgram=function(programId){ctx.programs.activateProgram(programId);};this.getActiveCanvasId=function(){return ctx.renderer.canvas.canvasId;};this.getActiveProgramId=function(){return ctx.programs.getActiveProgramId();};this.setVars=function(vars){ctx.programs.setVars(vars);};this.getVars=function(){return ctx.programs.getVars();
};this.deactivateProgram=function(){ctx.programs.deactivateProgram();};this.reset=function(){ctx.programs.deletePrograms();};})();};SceneJs.shader=function(){var cfg=SceneJs.utils.getNodeConfig(arguments);var canvasId;var programId;var backend;return function(scope){var params=cfg.getParams(scope);if(!backend){if(!params.type){throw new SceneJs.exceptions.NodeConfigExpectedException("Mandatory shader parameter missing: 'type'");
}backend=SceneJs.backends.getBackend(params.type);}if(!programId||(canvasId!=backend.getActiveCanvasId())){canvasId=backend.getActiveCanvasId();programId=backend.loadProgram();}var previousProgramId=backend.getActiveProgramId();var previousVars;if(previousProgramId){previousVars=backend.getVars();}backend.activateProgram(programId);
if(params.vars){backend.setVars({vars:params.vars,fixed:cfg.fixed});}SceneJs.utils.visitChildren(cfg,scope);if(previousProgramId){backend.activateProgram(previousProgramId);if(previousVars){backend.setVars(previousVars);}}else{backend.deactivateProgram();}};};SceneJs.backends.installBackend((function(){var defaultMat4;
var defaultNormalMat;var defaultMaterial={diffuse:{r:1,g:1,b:1},ambient:{r:1,g:1,b:1}};var getDefaultMat4=function(){if(!defaultMat4){try{defaultMat4=new WebGLFloatArray(SceneJs.math.identityMat4());}catch(e){throw new SceneJs.exceptions.WebGLNotSupportedException("Failed to find WebGL support (WebGLFloatArray)",e);
}}return defaultMat4;};var getDefaultNormalMat4=function(){if(!defaultNormalMat){try{defaultNormalMat=new WebGLFloatArray([1,0,0,0,1,0,0,0,1]);}catch(e){throw new SceneJs.exceptions.WebGLNotSupportedException("Failed to find WebGL support (WebGLFloatArray)",e);}}return defaultNormalMat;};return SceneJs.shaderBackend({type:"simple-shader",fragmentShaders:["varying vec4 FragColor;"+"void main(void) { "+"      gl_FragColor = FragColor;  "+"} "],vertexShaders:["attribute vec3 Vertex;"+"attribute vec3 Normal;"+"uniform vec4 LightPos;"+"uniform mat4 PMatrix; "+"uniform mat4 VMatrix; "+"uniform mat4 MMatrix; "+"uniform mat3 NMatrix; "+"uniform vec3 MaterialAmbient;"+"uniform vec3 MaterialDiffuse;"+"varying vec4 FragColor;"+"void main(void) {"+"   vec4 v = vec4(Vertex, 1.0);"+"   vec4 mv =     MMatrix * v;"+"   vec4 vv =     VMatrix * mv;"+"   gl_Position = PMatrix * vv;"+"   vec3 nn = normalize(NMatrix * Normal);"+"   vec3 lightDir = vec3(normalize(mv - LightPos));"+"   float NdotL = max(dot(lightDir, nn), 0.0);"+"   FragColor = vec4(NdotL * MaterialDiffuse + MaterialAmbient, 1.0);"+"}"],binders:{bindVertexBuffer:function(context,findVar,buffer){var vertexAttribute=findVar(context,"Vertex");
context.enableVertexAttribArray(vertexAttribute);context.bindBuffer(context.ARRAY_BUFFER,buffer);context.vertexAttribPointer(vertexAttribute,3,context.FLOAT,false,0,0);},bindNormalBuffer:function(context,findVar,buffer){var normalAttribute=findVar(context,"Normal");context.enableVertexAttribArray(normalAttribute);
context.bindBuffer(context.ARRAY_BUFFER,buffer);context.vertexAttribPointer(normalAttribute,3,context.FLOAT,false,0,0);}},setters:{scene_ProjectionMatrix:function(context,findVar,mat){context.uniformMatrix4fv(findVar(context,"PMatrix"),false,mat||getDefaultMat4());},scene_ModelMatrix:function(context,findVar,mat){context.uniformMatrix4fv(findVar(context,"MMatrix"),false,mat||getDefaultMat4());
},scene_ViewMatrix:function(context,findVar,mat){context.uniformMatrix4fv(findVar(context,"VMatrix"),false,mat||getDefaultMat4());},scene_NormalMatrix:function(context,findVar,mat){context.uniformMatrix3fv(findVar(context,"NMatrix"),false,mat||getDefaultNormalMat4());},scene_Material:function(context,findVar,m){m=m||defaultMaterial;
context.uniform3fv(findVar(context,"MaterialAmbient"),[m.ambient.r,m.ambient.g,m.ambient.b]);context.uniform3fv(findVar(context,"MaterialDiffuse"),[m.diffuse.r,m.diffuse.g,m.diffuse.b]);},scene_Lights:function(context,findVar,lights){if(lights&&lights.length>0){var l=lights[0];context.uniform4fv(findVar(context,"LightPos"),[l.pos.x,l.pos.y,l.pos.z,1]);
}else{context.uniform4fv(findVar(context,"LightPos"),[10,0,-10,1]);}},scene_Normal:function(context,findVar,normals){if(normals){var loc=findVar(context,"Normal");context.vertexAttribPointer(loc,3,context.FLOAT,false,0,normals);context.enableVertexAttribArray(loc);}},scene_Vertex:function(context,findVar,vertices){if(vertices){var loc=findVar(context,"Vertex");
context.vertexAttribPointer(loc,3,context.FLOAT,false,0,vertices);context.enableVertexAttribArray(loc);}}}});})());SceneJs.backends.installBackend(new (function(){var nextBufId=0;this.type="geometry";var ctx;this.install=function(_ctx){ctx=_ctx;ctx.geometry=(function(){var buffers={};var currentBoundBufId;
ctx.programs.onProgramActivate(function(){currentBoundBufId=null;});var createArrayBuffer=function(context,items,bufType,itemSize,glArray){var handle={bufferId:context.createBuffer(),itemSize:itemSize,numItems:items.length};context.bindBuffer(bufType,handle.bufferId);context.bufferData(bufType,glArray,context.STATIC_DRAW);
return handle;};var drawObservers=[];var notifyDraw=function(){for(var i=0;i<drawObservers.length;i++){drawObservers[i]();}};return{findGeoBuffer:function(geoType){var bufId=ctx.renderer.canvas.canvasId+geoType;return(buffers[bufId])?bufId:null;},createGeoBuffer:function(geoType,geo){if(!ctx.programs.getActiveProgramId()){throw new SceneJs.exceptions.NoShaderActiveException("No shader active");
}var bufId=ctx.renderer.canvas.canvasId+(geoType||nextBufId++);var context=ctx.renderer.canvas.context;var vertexBuf;var normalBuf;var indexBuf;var textureBuf;try{vertexBuf=createArrayBuffer(context,geo.vertices,context.ARRAY_BUFFER,3,new WebGLFloatArray(geo.vertices));normalBuf=createArrayBuffer(context,geo.normals,context.ARRAY_BUFFER,3,new WebGLFloatArray(geo.normals));
indexBuf=createArrayBuffer(context,geo.indices,context.ELEMENT_ARRAY_BUFFER,1,new WebGLUnsignedShortArray(geo.indices));if(geo.texCoords){textureBuf=createArrayBuffer(context,geo.texCoords,context.ARRAY_BUFFER,2,new WebGLFloatArray(geo.texCoords));}buffers[bufId]={bufId:bufId,age:0,canvas:ctx.renderer.canvas,context:context,vertexBuf:vertexBuf,normalBuf:normalBuf,indexBuf:indexBuf,textureBuf:textureBuf};
return bufId;}catch(e){if(vertexBuf){context.deleteBuffer(vertexBuf.bufferId);}if(normalBuf){context.deleteBuffer(normalBuf.bufferId);}if(normalBuf){context.deleteBuffer(indexBuf.bufferId);}if(textureBuf){context.deleteBuffer(textureBuf.bufferId);}throw e;}},drawGeoBuffer:function(bufId){var buffer=buffers[bufId];
var context=ctx.renderer.canvas.context;var tempShader=false;var shaderBackend=null;notifyDraw();if(currentBoundBufId!=bufId){ctx.programs.bindVertexBuffer(buffer.vertexBuf.bufferId);ctx.programs.bindNormalBuffer(buffer.normalBuf.bufferId);if(buffer.textureBuf){ctx.programs.bindTextureCoordBuffer(buffer.textureBuf.bufferId);
}context.bindBuffer(context.ELEMENT_ARRAY_BUFFER,buffer.indexBuf.bufferId);currentBoundBufId=bufId;}context.drawElements(context.TRIANGLES,buffer.indexBuf.numItems,context.UNSIGNED_SHORT,0);context.flush();if(tempShader){shaderBackend.deactivateProgram();}},deleteGeoBuffer:function(buffer){if(document.getElementById(buffer.canvas.canvasId)){if(buffer.vertexBuf){buffer.context.deleteBuffer(buffer.vertexBuf.bufferId);
}if(buffer.normalBuf){buffer.context.deleteBuffer(buffer.normalBuf.bufferId);}if(buffer.indexBuf){buffer.context.deleteBuffer(buffer.indexBuf.bufferId);}if(buffer.textureBuf){buffer.context.deleteBuffer(buffer.textureBuf.bufferId);}}},onDraw:function(f){drawObservers.push(f);},reset:function(){for(var bufId in buffers){deleteGeoBuffer(buffers[bufId]);
}buffers={};currentBoundBufId=null;}};})();};this.intersects=function(boundary){return true;};this.getActiveCanvasId=function(){return ctx.renderer.canvas.canvasId;};this.findGeoBuffer=function(geoType){return ctx.geometry.findGeoBuffer(geoType);};this.createGeoBuffer=function(geoType,geo){return ctx.geometry.createGeoBuffer(geoType,geo);
};this.drawGeoBuffer=function(bufId){return ctx.geometry.drawGeoBuffer(bufId);};var deleteGeoBuffer=function(buffer){return ctx.geometry.deleteGeoBuffer(buffer);};this.reset=function(){return ctx.geometry.reset();};})());SceneJs.geometry=function(){var cfg=SceneJs.utils.getNodeConfig(arguments);var backend=SceneJs.backends.getBackend("geometry");
var calculateNormals=function(vertices,indices){var nvecs=new Array(vertices.length);for(var i=0;i<indices.length;i++){var j0=indices[i][0];var j1=indices[i][1];var j2=indices[i][2];var v1=vertices[j0];var v2=vertices[j1];var v3=vertices[j2];var va=SceneJs.math.subVec4(v2,v1);var vb=SceneJs.math.subVec4(v3,v1);
var n=SceneJs.math.normalizeVec4(SceneJs.math.cross3Vec4(va,vb));if(!nvecs[j0]){nvecs[j0]=[];}if(!nvecs[j1]){nvecs[j1]=[];}if(!nvecs[j2]){nvecs[j2]=[];}nvecs[j0].push(n);nvecs[j1].push(n);nvecs[j2].push(n);}var normals=new Array(vertices.length);for(var i=0;i<nvecs.length;i++){var count=nvecs[i].length;
var x=0;var y=0;var z=0;for(var j=0;j<count;j++){x+=nvecs[i][j][0];y+=nvecs[i][j][1];z+=nvecs[i][j][2];}normals[i]=[x/count,y/count,z/count];}return normals;};var flatten=function(ar,numPerElement){var result=[];for(var i=0;i<ar.length;i++){if(numPerElement&&ar[i].length!=numPerElement){throw new SceneJs.exceptions.InvalidGeometryConfigException("Bad geometry array element");
}for(var j=0;j<ar[i].length;j++){result.push(ar[i][j]);}}return result;};var canvasId;var bufId;return function(scope){var params=cfg.getParams(scope);if(!cfg.fixed){throw new SceneJs.exceptions.UnsupportedOperationException("Dynamic configuration of geometry is not yet supported");}if(!params.type){throw new SceneJs.exceptions.NodeConfigExpectedException("Geometry type parameter expected");
}if(params.type){if(canvasId!=backend.getActiveCanvasId()){bufId=null;}bufId=backend.findGeoBuffer(params.type);if(!bufId){bufId=backend.createGeoBuffer(params.type,{vertices:(params.vertices&&params.vertices.length>0)?flatten(params.vertices,3):[],normals:params.normals&&params.normals.length>0?params.normals:flatten(calculateNormals(params.vertices,params.indices),3),colors:params.colors&&params.indices.length>0?flatten(params.colors,3):[],indices:params.indices&&params.indices.length>0?flatten(params.indices,3):[],texCoords:params.texCoords&&params.texCoords.length>0?flatten(params.texCoords,2):[]});
}canvasId=backend.getActiveCanvasId();}else{}backend.drawGeoBuffer(bufId);SceneJs.utils.visitChildren(cfg,scope);};};SceneJs.utils.ns("SceneJs.objects");SceneJs.objects.teapot=function(){return SceneJs.geometry({type:"teapot",vertices:[[-3,1.65,0],[-2.98711,1.65,-0.098438],[-2.98711,1.65,0.098438],[-2.98538,1.56732,-0.049219],[-2.98538,1.56732,0.049219],[-2.9835,1.48308,0],[-2.98189,1.72347,-0.049219],[-2.98189,1.72347,0.049219],[-2.97656,1.79853,0],[-2.9709,1.48621,-0.098438],[-2.9709,1.48621,0.098438],[-2.96388,1.79534,-0.098438],[-2.96388,1.79534,0.098438],[-2.96221,1.57017,-0.133594],[-2.96221,1.57017,0.133594],[-2.95864,1.72057,-0.133594],[-2.95864,1.72057,0.133594],[-2.95313,1.65,-0.16875],[-2.95313,1.65,0.16875],[-2.95247,1.40374,-0.049219],[-2.95247,1.40374,0.049219],[-2.9377,1.49447,-0.16875],[-2.9377,1.49447,0.16875],[-2.93523,1.85215,-0.049219],[-2.93523,1.85215,0.049219],[-2.93359,1.32012,0],[-2.93045,1.78693,-0.16875],[-2.93045,1.78693,0.16875],[-2.93037,1.4115,-0.133594],[-2.93037,1.4115,0.133594],[-2.92188,1.32553,-0.098438],[-2.92188,1.32553,0.098438],[-2.91278,1.84417,-0.133594],[-2.91278,1.84417,0.133594],[-2.90625,1.91016,0],[-2.89423,1.90457,-0.098438],[-2.89423,1.90457,0.098438],[-2.89138,1.5791,-0.196875],[-2.89138,1.5791,0.196875],[-2.89099,1.3398,-0.16875],[-2.89099,1.3398,0.16875],[-2.89065,1.71208,-0.196875],[-2.89065,1.71208,0.196875],[-2.88346,1.24579,-0.048343],[-2.88346,1.24579,0.048343],[-2.86346,1.25713,-0.132718],[-2.86346,1.25713,0.132718],[-2.86266,1.43483,-0.196875],[-2.86266,1.43483,0.196875],[-2.86255,1.88983,-0.16875],[-2.86255,1.88983,0.16875],[-2.85,1.65,-0.225],[-2.85,1.65,0.225],[-2.84971,1.16155,0],[-2.8471,1.82082,-0.196875],[-2.8471,1.82082,0.196875],[-2.84194,1.94692,-0.049219],[-2.84194,1.94692,0.049219],[-2.829,1.7614,-0.225],[-2.829,1.7614,0.225],[-2.82867,1.17598,-0.094933],[-2.82867,1.17598,0.094933],[-2.8247,1.52194,-0.225],[-2.8247,1.52194,0.225],[-2.82115,1.9352,-0.133594],[-2.82115,1.9352,0.133594],[-2.81231,1.18719,-0.16875],[-2.81231,1.18719,0.16875],[-2.80501,1.28997,-0.196875],[-2.80501,1.28997,0.196875],[-2.79727,1.38311,-0.225],[-2.79727,1.38311,0.225],[-2.78906,1.99014,0],[-2.78836,1.69932,-0.196875],[-2.78836,1.69932,0.196875],[-2.77821,1.98283,-0.098438],[-2.77821,1.98283,0.098438],[-2.77442,1.52738,-0.196875],[-2.77442,1.52738,0.196875],[-2.77356,1.0986,-0.084375],[-2.77356,1.0986,0.084375],[-2.76641,1.84512,-0.225],[-2.76641,1.84512,0.225],[-2.76034,1.9009,-0.196875],[-2.76034,1.9009,0.196875],[-2.7496,1.96356,-0.16875],[-2.7496,1.96356,0.16875],[-2.74831,1.7857,-0.196875],[-2.74831,1.7857,0.196875],[-2.74688,1.65,-0.16875],[-2.74688,1.65,0.16875],[-2.73125,1.00781,0],[-2.72756,1.73587,-0.16875],[-2.72756,1.73587,0.16875],[-2.72036,1.69083,-0.133594],[-2.72036,1.69083,0.133594],[-2.71948,1.24977,-0.225],[-2.71948,1.24977,0.225],[-2.71678,1.14468,-0.196875],[-2.71678,1.14468,0.196875],[-2.71289,1.65,-0.098438],[-2.71289,1.65,0.098438],[-2.70899,1.54177,-0.133594],[-2.70899,1.54177,0.133594],[-2.70354,1.42641,-0.16875],[-2.70354,1.42641,0.16875],[-2.70098,1.03784,-0.16875],[-2.70098,1.03784,0.16875],[-2.7,1.65,0],[-2.69965,2.01079,-0.048346],[-2.69965,2.01079,0.048346],[-2.69712,1.68793,-0.049219],[-2.69712,1.68793,0.049219],[-2.69413,1.72746,-0.098438],[-2.69413,1.72746,0.098438],[-2.68662,1.54669,-0.049219],[-2.68662,1.54669,0.049219],[-2.68263,1.76235,-0.133594],[-2.68263,1.76235,0.133594],[-2.68148,1.99646,-0.132721],[-2.68148,1.99646,0.132721],[-2.68144,1.72427,0],[-2.67574,1.27085,-0.196875],[-2.67574,1.27085,0.196875],[-2.67265,1.44068,-0.098438],[-2.67265,1.44068,0.098438],[-2.67026,1.8004,-0.16875],[-2.67026,1.8004,0.16875],[-2.6678,1.84623,-0.196875],[-2.6678,1.84623,0.196875],[-2.66279,1.9051,-0.225],[-2.66279,1.9051,0.225],[-2.66094,1.44609,0],[-2.66018,1.75437,-0.049219],[-2.66018,1.75437,0.049219],[-2.63858,1.78567,-0.098438],[-2.63858,1.78567,0.098438],[-2.63438,1.10391,-0.225],[-2.63438,1.10391,0.225],[-2.63074,1.95674,-0.196875],[-2.63074,1.95674,0.196875],[-2.62656,1.78008,0],[-2.625,2.04375,0],[-2.62464,1.30502,-0.132813],[-2.62464,1.30502,0.132813],[-2.60642,1.31745,-0.048438],[-2.60642,1.31745,0.048438],[-2.60632,2.02644,-0.094945],[-2.60632,2.02644,0.094945],[-2.5918,2.01299,-0.16875],[-2.5918,2.01299,0.16875],[-2.57173,1.83429,-0.16875],[-2.57173,1.83429,0.16875],[-2.56777,1.16997,-0.16875],[-2.56777,1.16997,0.16875],[-2.5546,1.18304,-0.095315],[-2.5546,1.18304,0.095315],[-2.54975,1.89059,-0.196875],[-2.54975,1.89059,0.196875],[-2.54954,0.878984,-0.084375],[-2.54954,0.878984,0.084375],[-2.54643,1.83197,-0.132721],[-2.54643,1.83197,0.132721],[-2.5375,1.2,0],[-2.52721,1.8192,-0.048346],[-2.52721,1.8192,0.048346],[-2.51875,1.94531,-0.225],[-2.51875,1.94531,0.225],[-2.51683,0.932671,-0.196875],[-2.51683,0.932671,0.196875],[-2.47184,1.00649,-0.196875],[-2.47184,1.00649,0.196875],[-2.4457,1.87764,-0.16875],[-2.4457,1.87764,0.16875],[-2.43913,1.06018,-0.084375],[-2.43913,1.06018,0.084375],[-2.43118,1.86418,-0.094945],[-2.43118,1.86418,0.094945],[-2.4125,1.84687,0],[-2.38828,0.716602,0],[-2.38225,0.737663,-0.095854],[-2.38225,0.737663,0.095854],[-2.37884,2.05202,-0.084375],[-2.37884,2.05202,0.084375],[-2.37766,0.75368,-0.16875],[-2.37766,0.75368,0.16875],[-2.36475,0.798761,-0.199836],[-2.36475,0.798761,0.199836],[-2.3543,0.835254,-0.225],[-2.3543,0.835254,0.225],[-2.34384,0.871747,-0.199836],[-2.34384,0.871747,0.199836],[-2.34115,1.99972,-0.196875],[-2.34115,1.99972,0.196875],[-2.33093,0.916827,-0.16875],[-2.33093,0.916827,0.16875],[-2.32031,0.953906,0],[-2.28932,1.92782,-0.196875],[-2.28932,1.92782,0.196875],[-2.25162,1.87552,-0.084375],[-2.25162,1.87552,0.084375],[-2.24741,0.882285,-0.084375],[-2.24741,0.882285,0.084375],[-2.17363,0.844043,0],[-2.16853,0.826951,-0.097184],[-2.16853,0.826951,0.097184],[-2.16477,0.814364,-0.16875],[-2.16477,0.814364,0.16875],[-2.15688,0.786694,-0.187068],[-2.15688,0.786694,0.187068],[-2.15625,2.09297,0],[-2.15412,0.74052,-0.215193],[-2.15412,0.74052,0.215193],[-2.15017,0.694734,-0.215193],[-2.15017,0.694734,0.215193],[-2.14742,0.64856,-0.187068],[-2.14742,0.64856,0.187068],[-2.14496,0.612777,-0.132948],[-2.14496,0.612777,0.132948],[-2.14371,0.591789,-0.048573],[-2.14371,0.591789,0.048573],[-2.14233,2.05836,-0.16875],[-2.14233,2.05836,0.16875],[-2.11172,1.98223,-0.225],[-2.11172,1.98223,0.225],[-2.08447,0.789526,-0.048905],[-2.08447,0.789526,0.048905],[-2.0811,1.90609,-0.16875],[-2.0811,1.90609,0.16875],[-2.07834,0.770387,-0.13328],[-2.07834,0.770387,0.13328],[-2.06719,1.87148,0],[-2,0.75,0],[-1.9957,0.737109,-0.098438],[-1.9957,0.737109,0.098438],[-1.98438,0.703125,-0.16875],[-1.98438,0.703125,0.16875],[-1.97852,0.59165,0],[-1.96937,0.670825,-0.202656],[-1.96937,0.670825,0.202656],[-1.96836,0.655078,-0.210938],[-1.96836,0.655078,0.210938],[-1.96,0.75,-0.4075],[-1.96,0.75,0.4075],[-1.95873,0.925195,-0.201561],[-1.95873,0.925195,0.201561],[-1.95703,1.10039,0],[-1.95,0.6,-0.225],[-1.95,0.6,0.225],[-1.93895,0.59165,-0.403123],[-1.93895,0.59165,0.403123],[-1.93164,0.544922,-0.210938],[-1.93164,0.544922,0.210938],[-1.93069,0.522583,-0.198676],[-1.93069,0.522583,0.198676],[-1.92188,0.453516,0],[-1.91789,1.10039,-0.398745],[-1.91789,1.10039,0.398745],[-1.91562,0.496875,-0.16875],[-1.91562,0.496875,0.16875],[-1.9043,0.462891,-0.098438],[-1.9043,0.462891,0.098438],[-1.9,0.45,0],[-1.89228,0.670825,-0.593047],[-1.89228,0.670825,0.593047],[-1.88344,0.453516,-0.391582],[-1.88344,0.453516,0.391582],[-1.88206,0.925195,-0.589845],[-1.88206,0.925195,0.589845],[-1.88139,1.28613,-0.193602],[-1.88139,1.28613,0.193602],[-1.85512,0.522583,-0.581402],[-1.85512,0.522583,0.581402],[-1.845,0.75,-0.785],[-1.845,0.75,0.785],[-1.84375,1.47187,0],[-1.83317,1.89068,-0.084375],[-1.83317,1.89068,0.084375],[-1.8318,1.94649,-0.196875],[-1.8318,1.94649,0.196875],[-1.82992,2.02323,-0.196875],[-1.82992,2.02323,0.196875],[-1.82855,2.07904,-0.084375],[-1.82855,2.07904,0.084375],[-1.82518,0.59165,-0.776567],[-1.82518,0.59165,0.776567],[-1.81758,0.343945,-0.187036],[-1.81758,0.343945,0.187036],[-1.80775,1.28613,-0.566554],[-1.80775,1.28613,0.566554],[-1.80687,1.47187,-0.375664],[-1.80687,1.47187,0.375664],[-1.80536,1.10039,-0.768135],[-1.80536,1.10039,0.768135],[-1.77293,0.453516,-0.754336],[-1.77293,0.453516,0.754336],[-1.75,0.234375,0],[-1.74644,0.343945,-0.547339],[-1.74644,0.343945,0.547339],[-1.74433,0.670825,-0.949871],[-1.74433,0.670825,0.949871],[-1.73491,0.925195,-0.944741],[-1.73491,0.925195,0.944741],[-1.715,0.234375,-0.356563],[-1.715,0.234375,0.356562],[-1.71008,0.522583,-0.931218],[-1.71008,0.522583,0.931218],[-1.70086,1.47187,-0.723672],[-1.70086,1.47187,0.723672],[-1.6664,1.28613,-0.907437],[-1.6664,1.28613,0.907437],[-1.6625,0.75,-1.125],[-1.6625,0.75,1.125],[-1.65516,1.86094,-0.170322],[-1.65516,1.86094,0.170322],[-1.64742,0.159961,-0.169526],[-1.64742,0.159961,0.169526],[-1.64464,0.59165,-1.11292],[-1.64464,0.59165,1.11292],[-1.62678,1.10039,-1.10083],[-1.62678,1.10039,1.10083],[-1.61437,0.234375,-0.686875],[-1.61437,0.234375,0.686875],[-1.60989,0.343945,-0.87666],[-1.60989,0.343945,0.87666],[-1.6,1.875,0],[-1.59756,0.453516,-1.08106],[-1.59756,0.453516,1.08106],[-1.59037,1.86094,-0.498428],[-1.59037,1.86094,0.498428],[-1.58438,1.91016,-0.16875],[-1.58438,1.91016,0.16875],[-1.58294,0.159961,-0.496099],[-1.58294,0.159961,0.496099],[-1.57813,0.085547,0],[-1.55,1.9875,-0.225],[-1.55,1.9875,0.225],[-1.54656,0.085547,-0.321543],[-1.54656,0.085547,0.321543],[-1.53297,0.670825,-1.26567],[-1.53297,0.670825,1.26567],[-1.53262,1.47187,-1.03711],[-1.53262,1.47187,1.03711],[-1.52469,0.925195,-1.25883],[-1.52469,0.925195,1.25883],[-1.52367,0.042773,-0.156792],[-1.52367,0.042773,0.156792],[-1.51563,2.06484,-0.16875],[-1.51563,2.06484,0.16875],[-1.50287,0.522583,-1.24081],[-1.50287,0.522583,1.24081],[-1.5,0,0],[-1.5,2.1,0],[-1.5,2.25,0],[-1.47,0,-0.305625],[-1.47,0,0.305625],[-1.47,2.25,-0.305625],[-1.47,2.25,0.305625],[-1.46602,1.86094,-0.79832],[-1.46602,1.86094,0.79832],[-1.46449,1.28613,-1.20912],[-1.46449,1.28613,1.20912],[-1.46403,0.042773,-0.458833],[-1.46403,0.042773,0.458833],[-1.45986,2.28691,-0.150226],[-1.45986,2.28691,0.150226],[-1.45917,0.159961,-0.79459],[-1.45917,0.159961,0.79459],[-1.45582,0.085547,-0.619414],[-1.45582,0.085547,0.619414],[-1.45469,0.234375,-0.984375],[-1.45469,0.234375,0.984375],[-1.44922,2.32383,0],[-1.42023,2.32383,-0.295278],[-1.42023,2.32383,0.295278],[-1.42,0.75,-1.42],[-1.42,0.75,1.42],[-1.41482,0.343945,-1.16812],[-1.41482,0.343945,1.16812],[-1.41191,2.33613,-0.145291],[-1.41191,2.33613,0.145291],[-1.40475,0.59165,-1.40475],[-1.40475,0.59165,1.40475],[-1.40313,2.34844,0],[-1.40272,2.28691,-0.439618],[-1.40272,2.28691,0.439618],[-1.4,2.25,0],[-1.38949,1.10039,-1.38949],[-1.38949,1.10039,1.38949],[-1.38375,0,-0.58875],[-1.38375,0,0.58875],[-1.38375,2.25,-0.58875],[-1.38375,2.25,0.58875],[-1.38047,2.32383,0],[-1.37788,2.33613,-0.141789],[-1.37788,2.33613,0.141789],[-1.37633,2.28691,-0.14163],[-1.37633,2.28691,0.14163],[-1.37506,2.34844,-0.285887],[-1.37506,2.34844,0.285887],[-1.372,2.25,-0.28525],[-1.372,2.25,0.28525],[-1.36453,0.453516,-1.36453],[-1.36453,0.453516,1.36453],[-1.35665,2.33613,-0.425177],[-1.35665,2.33613,0.425177],[-1.35286,2.32383,-0.281271],[-1.35286,2.32383,0.281271],[-1.34957,0.042773,-0.734902],[-1.34957,0.042773,0.734902],[-1.3369,2.32383,-0.568818],[-1.3369,2.32383,0.568818],[-1.32395,2.33613,-0.414929],[-1.32395,2.33613,0.414929],[-1.32246,2.28691,-0.414464],[-1.32246,2.28691,0.414464],[-1.31182,0.085547,-0.887695],[-1.31182,0.085547,0.887695],[-1.30906,1.47187,-1.30906],[-1.30906,1.47187,1.30906],[-1.3,2.25,0],[-1.29438,2.34844,-0.550727],[-1.29438,2.34844,0.550727],[-1.29305,2.28691,-0.704126],[-1.29305,2.28691,0.704126],[-1.2915,2.25,-0.5495],[-1.2915,2.25,0.5495],[-1.28839,1.86094,-1.06373],[-1.28839,1.86094,1.06373],[-1.28237,0.159961,-1.05876],[-1.28237,0.159961,1.05876],[-1.274,2.25,-0.264875],[-1.274,2.25,0.264875],[-1.27348,2.32383,-0.541834],[-1.27348,2.32383,0.541834],[-1.26766,2.2749,-0.130448],[-1.26766,2.2749,0.130448],[-1.26567,0.670825,-1.53297],[-1.26567,0.670825,1.53297],[-1.26094,2.2998,0],[-1.25883,0.925195,-1.52469],[-1.25883,0.925195,1.52469],[-1.25057,2.33613,-0.680997],[-1.25057,2.33613,0.680997],[-1.24688,0,-0.84375],[-1.24688,0,0.84375],[-1.24688,2.25,-0.84375],[-1.24688,2.25,0.84375],[-1.2425,0.234375,-1.2425],[-1.2425,0.234375,1.2425],[-1.24081,0.522583,-1.50287],[-1.24081,0.522583,1.50287],[-1.23572,2.2998,-0.256916],[-1.23572,2.2998,0.256916],[-1.22043,2.33613,-0.664583],[-1.22043,2.33613,0.664583],[-1.21906,2.28691,-0.663837],[-1.21906,2.28691,0.663837],[-1.21805,2.2749,-0.38174],[-1.21805,2.2749,0.38174],[-1.20912,1.28613,-1.46449],[-1.20912,1.28613,1.46449],[-1.20466,2.32383,-0.815186],[-1.20466,2.32383,0.815186],[-1.19925,2.25,-0.51025],[-1.19925,2.25,0.51025],[-1.19651,2.31943,-0.123125],[-1.19651,2.31943,0.123125],[-1.18604,0.042773,-0.979229],[-1.18604,0.042773,0.979229],[-1.16812,0.343945,-1.41482],[-1.16812,0.343945,1.41482],[-1.16635,2.34844,-0.789258],[-1.16635,2.34844,0.789258],[-1.16375,2.25,-0.7875],[-1.16375,2.25,0.7875],[-1.16322,2.2998,-0.494918],[-1.16322,2.2998,0.494918],[-1.15625,2.33906,0],[-1.14968,2.31943,-0.360312],[-1.14968,2.31943,0.360312],[-1.14752,2.32383,-0.776514],[-1.14752,2.32383,0.776514],[-1.13637,2.28691,-0.93822],[-1.13637,2.28691,0.93822],[-1.13312,2.33906,-0.235586],[-1.13312,2.33906,0.235586],[-1.125,0.75,-1.6625],[-1.125,0.75,1.6625],[-1.12281,2.2749,-0.611424],[-1.12281,2.2749,0.611424],[-1.12047,0.085547,-1.12047],[-1.12047,0.085547,1.12047],[-1.11292,0.59165,-1.64464],[-1.11292,0.59165,1.64464],[-1.10083,1.10039,-1.62678],[-1.10083,1.10039,1.62678],[-1.09904,2.33613,-0.907402],[-1.09904,2.33613,0.907402],[-1.08106,0.453516,-1.59756],[-1.08106,0.453516,1.59756],[-1.08063,2.25,-0.73125],[-1.08063,2.25,0.73125],[-1.07255,2.33613,-0.885531],[-1.07255,2.33613,0.885531],[-1.07135,2.28691,-0.884537],[-1.07135,2.28691,0.884537],[-1.06664,2.33906,-0.453828],[-1.06664,2.33906,0.453828],[-1.065,0,-1.065],[-1.065,0,1.065],[-1.065,2.25,-1.065],[-1.065,2.25,1.065],[-1.06373,1.86094,-1.28839],[-1.06373,1.86094,1.28839],[-1.05979,2.31943,-0.577104],[-1.05979,2.31943,0.577104],[-1.05876,0.159961,-1.28237],[-1.05876,0.159961,1.28237],[-1.04815,2.2998,-0.709277],[-1.04815,2.2998,0.709277],[-1.03711,1.47187,-1.53262],[-1.03711,1.47187,1.53262],[-1.02894,2.32383,-1.02894],[-1.02894,2.32383,1.02894],[-0.996219,2.34844,-0.996219],[-0.996219,2.34844,0.996219],[-0.994,2.25,-0.994],[-0.994,2.25,0.994],[-0.986761,2.2749,-0.814698],[-0.986761,2.2749,0.814698],[-0.984375,0.234375,-1.45469],[-0.984375,0.234375,1.45469],[-0.980719,2.36953,-0.10092],[-0.980719,2.36953,0.10092],[-0.980133,2.32383,-0.980133],[-0.980133,2.32383,0.980133],[-0.979229,0.042773,-1.18604],[-0.979229,0.042773,1.18604],[-0.961133,2.33906,-0.650391],[-0.961133,2.33906,0.650391],[-0.949871,0.670825,-1.74433],[-0.949871,0.670825,1.74433],[-0.944741,0.925195,-1.73491],[-0.944741,0.925195,1.73491],[-0.942332,2.36953,-0.29533],[-0.942332,2.36953,0.29533],[-0.93822,2.28691,-1.13637],[-0.93822,2.28691,1.13637],[-0.931373,2.31943,-0.768968],[-0.931373,2.31943,0.768968],[-0.931218,0.522583,-1.71008],[-0.931218,0.522583,1.71008],[-0.923,2.25,-0.923],[-0.923,2.25,0.923],[-0.907437,1.28613,-1.6664],[-0.907437,1.28613,1.6664],[-0.907402,2.33613,-1.09904],[-0.907402,2.33613,1.09904],[-0.895266,2.2998,-0.895266],[-0.895266,2.2998,0.895266],[-0.887695,0.085547,-1.31182],[-0.887695,0.085547,1.31182],[-0.885531,2.33613,-1.07255],[-0.885531,2.33613,1.07255],[-0.884537,2.28691,-1.07135],[-0.884537,2.28691,1.07135],[-0.87666,0.343945,-1.60989],[-0.87666,0.343945,1.60989],[-0.868654,2.36953,-0.473023],[-0.868654,2.36953,0.473023],[-0.84375,0,-1.24688],[-0.84375,0,1.24688],[-0.84375,2.25,-1.24688],[-0.84375,2.25,1.24688],[-0.825,2.4,0],[-0.820938,2.33906,-0.820938],[-0.820938,2.33906,0.820938],[-0.815186,2.32383,-1.20466],[-0.815186,2.32383,1.20466],[-0.814698,2.2749,-0.986761],[-0.814698,2.2749,0.986761],[-0.8085,2.4,-0.168094],[-0.8085,2.4,0.168094],[-0.79832,1.86094,-1.46602],[-0.79832,1.86094,1.46602],[-0.79459,0.159961,-1.45917],[-0.79459,0.159961,1.45917],[-0.789258,2.34844,-1.16635],[-0.789258,2.34844,1.16635],[-0.7875,2.25,-1.16375],[-0.7875,2.25,1.16375],[-0.785,0.75,-1.845],[-0.785,0.75,1.845],[-0.776567,0.59165,-1.82518],[-0.776567,0.59165,1.82518],[-0.776514,2.32383,-1.14752],[-0.776514,2.32383,1.14752],[-0.768968,2.31943,-0.931373],[-0.768968,2.31943,0.931373],[-0.768135,1.10039,-1.80536],[-0.768135,1.10039,1.80536],[-0.7634,2.36953,-0.630285],[-0.7634,2.36953,0.630285],[-0.761063,2.4,-0.323813],[-0.761063,2.4,0.323813],[-0.754336,0.453516,-1.77293],[-0.754336,0.453516,1.77293],[-0.734902,0.042773,-1.34957],[-0.734902,0.042773,1.34957],[-0.73125,2.25,-1.08063],[-0.73125,2.25,1.08063],[-0.723672,1.47187,-1.70086],[-0.723672,1.47187,1.70086],[-0.709277,2.2998,-1.04815],[-0.709277,2.2998,1.04815],[-0.704126,2.28691,-1.29305],[-0.704126,2.28691,1.29305],[-0.686875,0.234375,-1.61437],[-0.686875,0.234375,1.61437],[-0.685781,2.4,-0.464063],[-0.685781,2.4,0.464063],[-0.680997,2.33613,-1.25057],[-0.680997,2.33613,1.25057],[-0.664583,2.33613,-1.22043],[-0.664583,2.33613,1.22043],[-0.663837,2.28691,-1.21906],[-0.663837,2.28691,1.21906],[-0.650391,2.33906,-0.961133],[-0.650391,2.33906,0.961133],[-0.631998,2.43047,-0.064825],[-0.631998,2.43047,0.064825],[-0.630285,2.36953,-0.7634],[-0.630285,2.36953,0.7634],[-0.619414,0.085547,-1.45582],[-0.619414,0.085547,1.45582],[-0.611424,2.2749,-1.12281],[-0.611424,2.2749,1.12281],[-0.607174,2.43047,-0.190548],[-0.607174,2.43047,0.190548],[-0.593047,0.670825,-1.89228],[-0.593047,0.670825,1.89228],[-0.589845,0.925195,-1.88206],[-0.589845,0.925195,1.88206],[-0.58875,0,-1.38375],[-0.58875,0,1.38375],[-0.58875,2.25,-1.38375],[-0.58875,2.25,1.38375],[-0.58575,2.4,-0.58575],[-0.58575,2.4,0.58575],[-0.581402,0.522583,-1.85512],[-0.581402,0.522583,1.85512],[-0.577104,2.31943,-1.05979],[-0.577104,2.31943,1.05979],[-0.568818,2.32383,-1.3369],[-0.568818,2.32383,1.3369],[-0.566554,1.28613,-1.80775],[-0.566554,1.28613,1.80775],[-0.559973,2.43047,-0.304711],[-0.559973,2.43047,0.304711],[-0.550727,2.34844,-1.29438],[-0.550727,2.34844,1.29438],[-0.5495,2.25,-1.2915],[-0.5495,2.25,1.2915],[-0.547339,0.343945,-1.74644],[-0.547339,0.343945,1.74644],[-0.541834,2.32383,-1.27348],[-0.541834,2.32383,1.27348],[-0.51025,2.25,-1.19925],[-0.51025,2.25,1.19925],[-0.498428,1.86094,-1.59037],[-0.498428,1.86094,1.59037],[-0.496099,0.159961,-1.58294],[-0.496099,0.159961,1.58294],[-0.494918,2.2998,-1.16322],[-0.494918,2.2998,1.16322],[-0.491907,2.43047,-0.40641],[-0.491907,2.43047,0.40641],[-0.473023,2.36953,-0.868654],[-0.473023,2.36953,0.868654],[-0.464063,2.4,-0.685781],[-0.464063,2.4,0.685781],[-0.458833,0.042773,-1.46403],[-0.458833,0.042773,1.46403],[-0.45625,2.46094,0],[-0.453828,2.33906,-1.06664],[-0.453828,2.33906,1.06664],[-0.439618,2.28691,-1.40272],[-0.439618,2.28691,1.40272],[-0.438241,2.46094,-0.091207],[-0.438241,2.46094,0.091207],[-0.425177,2.33613,-1.35665],[-0.425177,2.33613,1.35665],[-0.420891,2.46094,-0.179078],[-0.420891,2.46094,0.179078],[-0.414929,2.33613,-1.32395],[-0.414929,2.33613,1.32395],[-0.414464,2.28691,-1.32246],[-0.414464,2.28691,1.32246],[-0.4075,0.75,-1.96],[-0.4075,0.75,1.96],[-0.40641,2.43047,-0.491907],[-0.40641,2.43047,0.491907],[-0.403123,0.59165,-1.93895],[-0.403123,0.59165,1.93895],[-0.398745,1.10039,-1.91789],[-0.398745,1.10039,1.91789],[-0.391582,0.453516,-1.88344],[-0.391582,0.453516,1.88344],[-0.38174,2.2749,-1.21805],[-0.38174,2.2749,1.21805],[-0.375664,1.47187,-1.80687],[-0.375664,1.47187,1.80687],[-0.372159,2.46094,-0.251889],[-0.372159,2.46094,0.251889],[-0.362109,2.89717,0],[-0.360312,2.31943,-1.14968],[-0.360312,2.31943,1.14968],[-0.356563,0.234375,1.715],[-0.356562,0.234375,-1.715],[-0.340625,2.95078,0],[-0.337859,2.92397,-0.069278],[-0.337859,2.92397,0.069278],[-0.334238,2.89717,-0.142705],[-0.334238,2.89717,0.142705],[-0.330325,2.86421,-0.067672],[-0.330325,2.86421,0.067672],[-0.325,2.83125,0],[-0.323938,2.46094,-0.323938],[-0.323938,2.46094,0.323938],[-0.323813,2.4,-0.761063],[-0.323813,2.4,0.761063],[-0.321543,0.085547,-1.54656],[-0.321543,0.085547,1.54656],[-0.31541,2.50547,-0.064395],[-0.31541,2.50547,0.064395],[-0.314464,2.95078,-0.134407],[-0.314464,2.95078,0.134407],[-0.305625,0,-1.47],[-0.305625,0,1.47],[-0.305625,2.25,-1.47],[-0.305625,2.25,1.47],[-0.304711,2.43047,-0.559973],[-0.304711,2.43047,0.559973],[-0.299953,2.83125,-0.127984],[-0.299953,2.83125,0.127984],[-0.29533,2.36953,-0.942332],[-0.29533,2.36953,0.942332],[-0.295278,2.32383,-1.42023],[-0.295278,2.32383,1.42023],[-0.287197,2.92397,-0.1943],[-0.287197,2.92397,0.1943],[-0.285887,2.34844,-1.37506],[-0.285887,2.34844,1.37506],[-0.28525,2.25,-1.372],[-0.28525,2.25,1.372],[-0.281271,2.32383,-1.35286],[-0.281271,2.32383,1.35286],[-0.280732,2.86421,-0.189856],[-0.280732,2.86421,0.189856],[-0.274421,2.9688,-0.05638],[-0.274421,2.9688,0.05638],[-0.267832,2.50547,-0.180879],[-0.267832,2.50547,0.180879],[-0.264875,2.25,-1.274],[-0.264875,2.25,1.274],[-0.25761,2.89717,-0.25761],[-0.25761,2.89717,0.25761],[-0.256916,2.2998,-1.23572],[-0.256916,2.2998,1.23572],[-0.251889,2.46094,-0.372159],[-0.251889,2.46094,0.372159],[-0.250872,2.75742,-0.051347],[-0.250872,2.75742,0.051347],[-0.242477,2.95078,-0.242477],[-0.242477,2.95078,0.242477],[-0.235586,2.33906,-1.13312],[-0.235586,2.33906,1.13312],[-0.233382,2.9688,-0.158018],[-0.233382,2.9688,0.158018],[-0.231125,2.83125,-0.231125],[-0.231125,2.83125,0.231125],[-0.230078,2.98682,0],[-0.213159,2.75742,-0.144103],[-0.213159,2.75742,0.144103],[-0.212516,2.98682,-0.091113],[-0.212516,2.98682,0.091113],[-0.202656,0.670825,-1.96937],[-0.202656,0.670825,1.96937],[-0.201561,0.925195,-1.95873],[-0.201561,0.925195,1.95873],[-0.2,2.55,0],[-0.198676,0.522583,-1.93069],[-0.198676,0.522583,1.93069],[-0.196875,2.68359,0],[-0.1943,2.92397,-0.287197],[-0.1943,2.92397,0.287197],[-0.193602,1.28613,-1.88139],[-0.193602,1.28613,1.88139],[-0.190548,2.43047,-0.607174],[-0.190548,2.43047,0.607174],[-0.189856,2.86421,-0.280732],[-0.189856,2.86421,0.280732],[-0.187036,0.343945,-1.81758],[-0.187036,0.343945,1.81758],[-0.1845,2.55,-0.0785],[-0.1845,2.55,0.0785],[-0.181661,2.68359,-0.077405],[-0.181661,2.68359,0.077405],[-0.180879,2.50547,-0.267832],[-0.180879,2.50547,0.267832],[-0.179078,2.46094,-0.420891],[-0.179078,2.46094,0.420891],[-0.176295,2.5812,-0.036001],[-0.176295,2.5812,0.036001],[-0.174804,2.648,-0.035727],[-0.174804,2.648,0.035727],[-0.170322,1.86094,-1.65516],[-0.170322,1.86094,1.65516],[-0.169526,0.159961,-1.64742],[-0.169526,0.159961,1.64742],[-0.168094,2.4,-0.8085],[-0.168094,2.4,0.8085],[-0.166797,2.6124,0],[-0.164073,2.98682,-0.164073],[-0.164073,2.98682,0.164073],[-0.158018,2.9688,-0.233382],[-0.158018,2.9688,0.233382],[-0.156792,0.042773,-1.52367],[-0.156792,0.042773,1.52367],[-0.153882,2.6124,-0.065504],[-0.153882,2.6124,0.065504],[-0.150226,2.28691,-1.45986],[-0.150226,2.28691,1.45986],[-0.14971,2.5812,-0.101116],[-0.14971,2.5812,0.101116],[-0.148475,2.648,-0.100316],[-0.148475,2.648,0.100316],[-0.145291,2.33613,-1.41191],[-0.145291,2.33613,1.41191],[-0.144103,2.75742,-0.213159],[-0.144103,2.75742,0.213159],[-0.142705,2.89717,-0.334238],[-0.142705,2.89717,0.334238],[-0.142,2.55,-0.142],[-0.142,2.55,0.142],[-0.141789,2.33613,-1.37788],[-0.141789,2.33613,1.37788],[-0.14163,2.28691,-1.37633],[-0.14163,2.28691,1.37633],[-0.139898,2.68359,-0.139898],[-0.139898,2.68359,0.139898],[-0.134407,2.95078,-0.314464],[-0.134407,2.95078,0.314464],[-0.130448,2.2749,-1.26766],[-0.130448,2.2749,1.26766],[-0.127984,2.83125,-0.299953],[-0.127984,2.83125,0.299953],[-0.123125,2.31943,-1.19651],[-0.123125,2.31943,1.19651],[-0.118458,2.6124,-0.118458],[-0.118458,2.6124,0.118458],[-0.110649,2.99341,-0.022778],[-0.110649,2.99341,0.022778],[-0.101116,2.5812,-0.14971],[-0.101116,2.5812,0.14971],[-0.10092,2.36953,-0.980719],[-0.10092,2.36953,0.980719],[-0.100316,2.648,-0.148475],[-0.100316,2.648,0.148475],[-0.094147,2.99341,-0.063797],[-0.094147,2.99341,0.063797],[-0.091207,2.46094,-0.438241],[-0.091207,2.46094,0.438241],[-0.091113,2.98682,-0.212516],[-0.091113,2.98682,0.212516],[-0.0785,2.55,-0.1845],[-0.0785,2.55,0.1845],[-0.077405,2.68359,-0.181661],[-0.077405,2.68359,0.181661],[-0.069278,2.92397,-0.337859],[-0.069278,2.92397,0.337859],[-0.067672,2.86421,-0.330325],[-0.067672,2.86421,0.330325],[-0.065504,2.6124,-0.153882],[-0.065504,2.6124,0.153882],[-0.064825,2.43047,-0.631998],[-0.064825,2.43047,0.631998],[-0.064395,2.50547,-0.31541],[-0.064395,2.50547,0.31541],[-0.063797,2.99341,-0.094147],[-0.063797,2.99341,0.094147],[-0.05638,2.9688,-0.274421],[-0.05638,2.9688,0.274421],[-0.051347,2.75742,-0.250872],[-0.051347,2.75742,0.250872],[-0.036001,2.5812,-0.176295],[-0.036001,2.5812,0.176295],[-0.035727,2.648,-0.174804],[-0.035727,2.648,0.174804],[-0.022778,2.99341,-0.110649],[-0.022778,2.99341,0.110649],[0,0,-1.5],[0,0,1.5],[0,0.085547,-1.57813],[0,0.085547,1.57813],[0,0.234375,-1.75],[0,0.234375,1.75],[0,0.453516,-1.92188],[0,0.453516,1.92188],[0,0.59165,-1.97852],[0,0.59165,1.97852],[0,0.75,-2],[0,0.75,2],[0,1.10039,-1.95703],[0,1.10039,1.95703],[0,1.47187,-1.84375],[0,1.47187,1.84375],[0,2.25,-1.5],[0,2.25,-1.4],[0,2.25,-1.3],[0,2.25,1.3],[0,2.25,1.4],[0,2.25,1.5],[0,2.2998,-1.26094],[0,2.2998,1.26094],[0,2.32383,-1.44922],[0,2.32383,-1.38047],[0,2.32383,1.38047],[0,2.32383,1.44922],[0,2.33906,-1.15625],[0,2.33906,1.15625],[0,2.34844,-1.40313],[0,2.34844,1.40313],[0,2.4,-0.825],[0,2.4,0.825],[0,2.46094,-0.45625],[0,2.46094,0.45625],[0,2.55,-0.2],[0,2.55,0.2],[0,2.6124,-0.166797],[0,2.6124,0.166797],[0,2.68359,-0.196875],[0,2.68359,0.196875],[0,2.83125,-0.325],[0,2.83125,0.325],[0,2.89717,-0.362109],[0,2.89717,0.362109],[0,2.95078,-0.340625],[0,2.95078,0.340625],[0,2.98682,-0.230078],[0,2.98682,0.230078],[0,3,0],[0.022778,2.99341,-0.110649],[0.022778,2.99341,0.110649],[0.035727,2.648,-0.174804],[0.035727,2.648,0.174804],[0.036001,2.5812,-0.176295],[0.036001,2.5812,0.176295],[0.051347,2.75742,-0.250872],[0.051347,2.75742,0.250872],[0.05638,2.9688,-0.274421],[0.05638,2.9688,0.274421],[0.063797,2.99341,-0.094147],[0.063797,2.99341,0.094147],[0.064395,2.50547,-0.31541],[0.064395,2.50547,0.31541],[0.064825,2.43047,-0.631998],[0.064825,2.43047,0.631998],[0.065504,2.6124,-0.153882],[0.065504,2.6124,0.153882],[0.067672,2.86421,-0.330325],[0.067672,2.86421,0.330325],[0.069278,2.92397,-0.337859],[0.069278,2.92397,0.337859],[0.077405,2.68359,-0.181661],[0.077405,2.68359,0.181661],[0.0785,2.55,-0.1845],[0.0785,2.55,0.1845],[0.091113,2.98682,-0.212516],[0.091113,2.98682,0.212516],[0.091207,2.46094,-0.438241],[0.091207,2.46094,0.438241],[0.094147,2.99341,-0.063797],[0.094147,2.99341,0.063797],[0.100316,2.648,-0.148475],[0.100316,2.648,0.148475],[0.10092,2.36953,-0.980719],[0.10092,2.36953,0.980719],[0.101116,2.5812,-0.14971],[0.101116,2.5812,0.14971],[0.110649,2.99341,-0.022778],[0.110649,2.99341,0.022778],[0.118458,2.6124,-0.118458],[0.118458,2.6124,0.118458],[0.123125,2.31943,-1.19651],[0.123125,2.31943,1.19651],[0.127984,2.83125,-0.299953],[0.127984,2.83125,0.299953],[0.130448,2.2749,-1.26766],[0.130448,2.2749,1.26766],[0.134407,2.95078,-0.314464],[0.134407,2.95078,0.314464],[0.139898,2.68359,-0.139898],[0.139898,2.68359,0.139898],[0.14163,2.28691,-1.37633],[0.14163,2.28691,1.37633],[0.141789,2.33613,-1.37788],[0.141789,2.33613,1.37788],[0.142,2.55,-0.142],[0.142,2.55,0.142],[0.142705,2.89717,-0.334238],[0.142705,2.89717,0.334238],[0.144103,2.75742,-0.213159],[0.144103,2.75742,0.213159],[0.145291,2.33613,-1.41191],[0.145291,2.33613,1.41191],[0.148475,2.648,-0.100316],[0.148475,2.648,0.100316],[0.14971,2.5812,-0.101116],[0.14971,2.5812,0.101116],[0.150226,2.28691,-1.45986],[0.150226,2.28691,1.45986],[0.153882,2.6124,-0.065504],[0.153882,2.6124,0.065504],[0.156792,0.042773,-1.52367],[0.156792,0.042773,1.52367],[0.158018,2.9688,-0.233382],[0.158018,2.9688,0.233382],[0.164073,2.98682,-0.164073],[0.164073,2.98682,0.164073],[0.166797,2.6124,0],[0.168094,2.4,-0.8085],[0.168094,2.4,0.8085],[0.169526,0.159961,-1.64742],[0.169526,0.159961,1.64742],[0.170322,1.86094,-1.65516],[0.170322,1.86094,1.65516],[0.174804,2.648,-0.035727],[0.174804,2.648,0.035727],[0.176295,2.5812,-0.036001],[0.176295,2.5812,0.036001],[0.179078,2.46094,-0.420891],[0.179078,2.46094,0.420891],[0.180879,2.50547,-0.267832],[0.180879,2.50547,0.267832],[0.181661,2.68359,-0.077405],[0.181661,2.68359,0.077405],[0.1845,2.55,-0.0785],[0.1845,2.55,0.0785],[0.187036,0.343945,-1.81758],[0.187036,0.343945,1.81758],[0.189856,2.86421,-0.280732],[0.189856,2.86421,0.280732],[0.190548,2.43047,-0.607174],[0.190548,2.43047,0.607174],[0.193602,1.28613,-1.88139],[0.193602,1.28613,1.88139],[0.1943,2.92397,-0.287197],[0.1943,2.92397,0.287197],[0.196875,2.68359,0],[0.198676,0.522583,-1.93069],[0.198676,0.522583,1.93069],[0.2,2.55,0],[0.201561,0.925195,-1.95873],[0.201561,0.925195,1.95873],[0.202656,0.670825,-1.96937],[0.202656,0.670825,1.96937],[0.212516,2.98682,-0.091113],[0.212516,2.98682,0.091113],[0.213159,2.75742,-0.144103],[0.213159,2.75742,0.144103],[0.230078,2.98682,0],[0.231125,2.83125,-0.231125],[0.231125,2.83125,0.231125],[0.233382,2.9688,-0.158018],[0.233382,2.9688,0.158018],[0.235586,2.33906,-1.13312],[0.235586,2.33906,1.13312],[0.242477,2.95078,-0.242477],[0.242477,2.95078,0.242477],[0.250872,2.75742,-0.051347],[0.250872,2.75742,0.051347],[0.251889,2.46094,-0.372159],[0.251889,2.46094,0.372159],[0.256916,2.2998,-1.23572],[0.256916,2.2998,1.23572],[0.25761,2.89717,-0.25761],[0.25761,2.89717,0.25761],[0.264875,2.25,-1.274],[0.264875,2.25,1.274],[0.267832,2.50547,-0.180879],[0.267832,2.50547,0.180879],[0.274421,2.9688,-0.05638],[0.274421,2.9688,0.05638],[0.280732,2.86421,-0.189856],[0.280732,2.86421,0.189856],[0.281271,2.32383,-1.35286],[0.281271,2.32383,1.35286],[0.28525,2.25,-1.372],[0.28525,2.25,1.372],[0.285887,2.34844,-1.37506],[0.285887,2.34844,1.37506],[0.287197,2.92397,-0.1943],[0.287197,2.92397,0.1943],[0.295278,2.32383,-1.42023],[0.295278,2.32383,1.42023],[0.29533,2.36953,-0.942332],[0.29533,2.36953,0.942332],[0.299953,2.83125,-0.127984],[0.299953,2.83125,0.127984],[0.304711,2.43047,-0.559973],[0.304711,2.43047,0.559973],[0.305625,0,-1.47],[0.305625,0,1.47],[0.305625,2.25,-1.47],[0.305625,2.25,1.47],[0.314464,2.95078,-0.134407],[0.314464,2.95078,0.134407],[0.31541,2.50547,-0.064395],[0.31541,2.50547,0.064395],[0.321543,0.085547,-1.54656],[0.321543,0.085547,1.54656],[0.323813,2.4,-0.761063],[0.323813,2.4,0.761063],[0.323938,2.46094,-0.323938],[0.323938,2.46094,0.323938],[0.325,2.83125,0],[0.330325,2.86421,-0.067672],[0.330325,2.86421,0.067672],[0.334238,2.89717,-0.142705],[0.334238,2.89717,0.142705],[0.337859,2.92397,-0.069278],[0.337859,2.92397,0.069278],[0.340625,2.95078,0],[0.356562,0.234375,1.715],[0.356563,0.234375,-1.715],[0.360312,2.31943,-1.14968],[0.360312,2.31943,1.14968],[0.362109,2.89717,0],[0.372159,2.46094,-0.251889],[0.372159,2.46094,0.251889],[0.375664,1.47187,-1.80687],[0.375664,1.47187,1.80687],[0.38174,2.2749,-1.21805],[0.38174,2.2749,1.21805],[0.391582,0.453516,-1.88344],[0.391582,0.453516,1.88344],[0.398745,1.10039,-1.91789],[0.398745,1.10039,1.91789],[0.403123,0.59165,-1.93895],[0.403123,0.59165,1.93895],[0.40641,2.43047,-0.491907],[0.40641,2.43047,0.491907],[0.4075,0.75,-1.96],[0.4075,0.75,1.96],[0.414464,2.28691,-1.32246],[0.414464,2.28691,1.32246],[0.414929,2.33613,-1.32395],[0.414929,2.33613,1.32395],[0.420891,2.46094,-0.179078],[0.420891,2.46094,0.179078],[0.425177,2.33613,-1.35665],[0.425177,2.33613,1.35665],[0.438241,2.46094,-0.091207],[0.438241,2.46094,0.091207],[0.439618,2.28691,-1.40272],[0.439618,2.28691,1.40272],[0.453828,2.33906,-1.06664],[0.453828,2.33906,1.06664],[0.45625,2.46094,0],[0.458833,0.042773,-1.46403],[0.458833,0.042773,1.46403],[0.464063,2.4,-0.685781],[0.464063,2.4,0.685781],[0.473023,2.36953,-0.868654],[0.473023,2.36953,0.868654],[0.491907,2.43047,-0.40641],[0.491907,2.43047,0.40641],[0.494918,2.2998,-1.16322],[0.494918,2.2998,1.16322],[0.496099,0.159961,-1.58294],[0.496099,0.159961,1.58294],[0.498428,1.86094,-1.59037],[0.498428,1.86094,1.59037],[0.51025,2.25,-1.19925],[0.51025,2.25,1.19925],[0.541834,2.32383,-1.27348],[0.541834,2.32383,1.27348],[0.547339,0.343945,-1.74644],[0.547339,0.343945,1.74644],[0.5495,2.25,-1.2915],[0.5495,2.25,1.2915],[0.550727,2.34844,-1.29438],[0.550727,2.34844,1.29438],[0.559973,2.43047,-0.304711],[0.559973,2.43047,0.304711],[0.566554,1.28613,-1.80775],[0.566554,1.28613,1.80775],[0.568818,2.32383,-1.3369],[0.568818,2.32383,1.3369],[0.577104,2.31943,-1.05979],[0.577104,2.31943,1.05979],[0.581402,0.522583,-1.85512],[0.581402,0.522583,1.85512],[0.58575,2.4,-0.58575],[0.58575,2.4,0.58575],[0.58875,0,-1.38375],[0.58875,0,1.38375],[0.58875,2.25,-1.38375],[0.58875,2.25,1.38375],[0.589845,0.925195,-1.88206],[0.589845,0.925195,1.88206],[0.593047,0.670825,-1.89228],[0.593047,0.670825,1.89228],[0.607174,2.43047,-0.190548],[0.607174,2.43047,0.190548],[0.611424,2.2749,-1.12281],[0.611424,2.2749,1.12281],[0.619414,0.085547,-1.45582],[0.619414,0.085547,1.45582],[0.630285,2.36953,-0.7634],[0.630285,2.36953,0.7634],[0.631998,2.43047,-0.064825],[0.631998,2.43047,0.064825],[0.650391,2.33906,-0.961133],[0.650391,2.33906,0.961133],[0.663837,2.28691,-1.21906],[0.663837,2.28691,1.21906],[0.664583,2.33613,-1.22043],[0.664583,2.33613,1.22043],[0.680997,2.33613,-1.25057],[0.680997,2.33613,1.25057],[0.685781,2.4,-0.464063],[0.685781,2.4,0.464063],[0.686875,0.234375,-1.61437],[0.686875,0.234375,1.61437],[0.704126,2.28691,-1.29305],[0.704126,2.28691,1.29305],[0.709277,2.2998,-1.04815],[0.709277,2.2998,1.04815],[0.723672,1.47187,-1.70086],[0.723672,1.47187,1.70086],[0.73125,2.25,-1.08063],[0.73125,2.25,1.08063],[0.734902,0.042773,-1.34957],[0.734902,0.042773,1.34957],[0.754336,0.453516,-1.77293],[0.754336,0.453516,1.77293],[0.761063,2.4,-0.323813],[0.761063,2.4,0.323813],[0.7634,2.36953,-0.630285],[0.7634,2.36953,0.630285],[0.768135,1.10039,-1.80536],[0.768135,1.10039,1.80536],[0.768968,2.31943,-0.931373],[0.768968,2.31943,0.931373],[0.776514,2.32383,-1.14752],[0.776514,2.32383,1.14752],[0.776567,0.59165,-1.82518],[0.776567,0.59165,1.82518],[0.785,0.75,-1.845],[0.785,0.75,1.845],[0.7875,2.25,-1.16375],[0.7875,2.25,1.16375],[0.789258,2.34844,-1.16635],[0.789258,2.34844,1.16635],[0.79459,0.159961,-1.45917],[0.79459,0.159961,1.45917],[0.79832,1.86094,-1.46602],[0.79832,1.86094,1.46602],[0.8085,2.4,-0.168094],[0.8085,2.4,0.168094],[0.814698,2.2749,-0.986761],[0.814698,2.2749,0.986761],[0.815186,2.32383,-1.20466],[0.815186,2.32383,1.20466],[0.820938,2.33906,-0.820938],[0.820938,2.33906,0.820938],[0.825,2.4,0],[0.84375,0,-1.24688],[0.84375,0,1.24688],[0.84375,2.25,-1.24688],[0.84375,2.25,1.24688],[0.868654,2.36953,-0.473023],[0.868654,2.36953,0.473023],[0.87666,0.343945,-1.60989],[0.87666,0.343945,1.60989],[0.884537,2.28691,-1.07135],[0.884537,2.28691,1.07135],[0.885531,2.33613,-1.07255],[0.885531,2.33613,1.07255],[0.887695,0.085547,-1.31182],[0.887695,0.085547,1.31182],[0.895266,2.2998,-0.895266],[0.895266,2.2998,0.895266],[0.907402,2.33613,-1.09904],[0.907402,2.33613,1.09904],[0.907437,1.28613,-1.6664],[0.907437,1.28613,1.6664],[0.923,2.25,-0.923],[0.923,2.25,0.923],[0.931218,0.522583,-1.71008],[0.931218,0.522583,1.71008],[0.931373,2.31943,-0.768968],[0.931373,2.31943,0.768968],[0.93822,2.28691,-1.13637],[0.93822,2.28691,1.13637],[0.942332,2.36953,-0.29533],[0.942332,2.36953,0.29533],[0.944741,0.925195,-1.73491],[0.944741,0.925195,1.73491],[0.949871,0.670825,-1.74433],[0.949871,0.670825,1.74433],[0.961133,2.33906,-0.650391],[0.961133,2.33906,0.650391],[0.979229,0.042773,-1.18604],[0.979229,0.042773,1.18604],[0.980133,2.32383,-0.980133],[0.980133,2.32383,0.980133],[0.980719,2.36953,-0.10092],[0.980719,2.36953,0.10092],[0.984375,0.234375,-1.45469],[0.984375,0.234375,1.45469],[0.986761,2.2749,-0.814698],[0.986761,2.2749,0.814698],[0.994,2.25,-0.994],[0.994,2.25,0.994],[0.996219,2.34844,-0.996219],[0.996219,2.34844,0.996219],[1.02894,2.32383,-1.02894],[1.02894,2.32383,1.02894],[1.03711,1.47187,-1.53262],[1.03711,1.47187,1.53262],[1.04815,2.2998,-0.709277],[1.04815,2.2998,0.709277],[1.05876,0.159961,-1.28237],[1.05876,0.159961,1.28237],[1.05979,2.31943,-0.577104],[1.05979,2.31943,0.577104],[1.06373,1.86094,-1.28839],[1.06373,1.86094,1.28839],[1.065,0,-1.065],[1.065,0,1.065],[1.065,2.25,-1.065],[1.065,2.25,1.065],[1.06664,2.33906,-0.453828],[1.06664,2.33906,0.453828],[1.07135,2.28691,-0.884537],[1.07135,2.28691,0.884537],[1.07255,2.33613,-0.885531],[1.07255,2.33613,0.885531],[1.08063,2.25,-0.73125],[1.08063,2.25,0.73125],[1.08106,0.453516,-1.59756],[1.08106,0.453516,1.59756],[1.09904,2.33613,-0.907402],[1.09904,2.33613,0.907402],[1.10083,1.10039,-1.62678],[1.10083,1.10039,1.62678],[1.11292,0.59165,-1.64464],[1.11292,0.59165,1.64464],[1.12047,0.085547,-1.12047],[1.12047,0.085547,1.12047],[1.12281,2.2749,-0.611424],[1.12281,2.2749,0.611424],[1.125,0.75,-1.6625],[1.125,0.75,1.6625],[1.13312,2.33906,-0.235586],[1.13312,2.33906,0.235586],[1.13637,2.28691,-0.93822],[1.13637,2.28691,0.93822],[1.14752,2.32383,-0.776514],[1.14752,2.32383,0.776514],[1.14968,2.31943,-0.360312],[1.14968,2.31943,0.360312],[1.15625,2.33906,0],[1.16322,2.2998,-0.494918],[1.16322,2.2998,0.494918],[1.16375,2.25,-0.7875],[1.16375,2.25,0.7875],[1.16635,2.34844,-0.789258],[1.16635,2.34844,0.789258],[1.16812,0.343945,-1.41482],[1.16812,0.343945,1.41482],[1.18604,0.042773,-0.979229],[1.18604,0.042773,0.979229],[1.19651,2.31943,-0.123125],[1.19651,2.31943,0.123125],[1.19925,2.25,-0.51025],[1.19925,2.25,0.51025],[1.20466,2.32383,-0.815186],[1.20466,2.32383,0.815186],[1.20912,1.28613,-1.46449],[1.20912,1.28613,1.46449],[1.21805,2.2749,-0.38174],[1.21805,2.2749,0.38174],[1.21906,2.28691,-0.663837],[1.21906,2.28691,0.663837],[1.22043,2.33613,-0.664583],[1.22043,2.33613,0.664583],[1.23572,2.2998,-0.256916],[1.23572,2.2998,0.256916],[1.24081,0.522583,-1.50287],[1.24081,0.522583,1.50287],[1.2425,0.234375,-1.2425],[1.2425,0.234375,1.2425],[1.24688,0,-0.84375],[1.24688,0,0.84375],[1.24688,2.25,-0.84375],[1.24688,2.25,0.84375],[1.25057,2.33613,-0.680997],[1.25057,2.33613,0.680997],[1.25883,0.925195,-1.52469],[1.25883,0.925195,1.52469],[1.26094,2.2998,0],[1.26567,0.670825,-1.53297],[1.26567,0.670825,1.53297],[1.26766,2.2749,-0.130448],[1.26766,2.2749,0.130448],[1.27348,2.32383,-0.541834],[1.27348,2.32383,0.541834],[1.274,2.25,-0.264875],[1.274,2.25,0.264875],[1.28237,0.159961,-1.05876],[1.28237,0.159961,1.05876],[1.28839,1.86094,-1.06373],[1.28839,1.86094,1.06373],[1.2915,2.25,-0.5495],[1.2915,2.25,0.5495],[1.29305,2.28691,-0.704126],[1.29305,2.28691,0.704126],[1.29438,2.34844,-0.550727],[1.29438,2.34844,0.550727],[1.3,2.25,0],[1.30906,1.47187,-1.30906],[1.30906,1.47187,1.30906],[1.31182,0.085547,-0.887695],[1.31182,0.085547,0.887695],[1.32246,2.28691,-0.414464],[1.32246,2.28691,0.414464],[1.32395,2.33613,-0.414929],[1.32395,2.33613,0.414929],[1.3369,2.32383,-0.568818],[1.3369,2.32383,0.568818],[1.34957,0.042773,-0.734902],[1.34957,0.042773,0.734902],[1.35286,2.32383,-0.281271],[1.35286,2.32383,0.281271],[1.35665,2.33613,-0.425177],[1.35665,2.33613,0.425177],[1.36453,0.453516,-1.36453],[1.36453,0.453516,1.36453],[1.372,2.25,-0.28525],[1.372,2.25,0.28525],[1.37506,2.34844,-0.285887],[1.37506,2.34844,0.285887],[1.37633,2.28691,-0.14163],[1.37633,2.28691,0.14163],[1.37788,2.33613,-0.141789],[1.37788,2.33613,0.141789],[1.38047,2.32383,0],[1.38375,0,-0.58875],[1.38375,0,0.58875],[1.38375,2.25,-0.58875],[1.38375,2.25,0.58875],[1.38949,1.10039,-1.38949],[1.38949,1.10039,1.38949],[1.4,2.25,0],[1.40272,2.28691,-0.439618],[1.40272,2.28691,0.439618],[1.40313,2.34844,0],[1.40475,0.59165,-1.40475],[1.40475,0.59165,1.40475],[1.41191,2.33613,-0.145291],[1.41191,2.33613,0.145291],[1.41482,0.343945,-1.16812],[1.41482,0.343945,1.16812],[1.42,0.75,-1.42],[1.42,0.75,1.42],[1.42023,2.32383,-0.295278],[1.42023,2.32383,0.295278],[1.44922,2.32383,0],[1.45469,0.234375,-0.984375],[1.45469,0.234375,0.984375],[1.45582,0.085547,-0.619414],[1.45582,0.085547,0.619414],[1.45917,0.159961,-0.79459],[1.45917,0.159961,0.79459],[1.45986,2.28691,-0.150226],[1.45986,2.28691,0.150226],[1.46403,0.042773,-0.458833],[1.46403,0.042773,0.458833],[1.46449,1.28613,-1.20912],[1.46449,1.28613,1.20912],[1.46602,1.86094,-0.79832],[1.46602,1.86094,0.79832],[1.47,0,-0.305625],[1.47,0,0.305625],[1.47,2.25,-0.305625],[1.47,2.25,0.305625],[1.5,0,0],[1.5,2.25,0],[1.50287,0.522583,-1.24081],[1.50287,0.522583,1.24081],[1.52367,0.042773,-0.156792],[1.52367,0.042773,0.156792],[1.52469,0.925195,-1.25883],[1.52469,0.925195,1.25883],[1.53262,1.47187,-1.03711],[1.53262,1.47187,1.03711],[1.53297,0.670825,-1.26567],[1.53297,0.670825,1.26567],[1.54656,0.085547,-0.321543],[1.54656,0.085547,0.321543],[1.57813,0.085547,0],[1.58294,0.159961,-0.496099],[1.58294,0.159961,0.496099],[1.59037,1.86094,-0.498428],[1.59037,1.86094,0.498428],[1.59756,0.453516,-1.08106],[1.59756,0.453516,1.08106],[1.60989,0.343945,-0.87666],[1.60989,0.343945,0.87666],[1.61437,0.234375,-0.686875],[1.61437,0.234375,0.686875],[1.62678,1.10039,-1.10083],[1.62678,1.10039,1.10083],[1.64464,0.59165,-1.11292],[1.64464,0.59165,1.11292],[1.64742,0.159961,-0.169526],[1.64742,0.159961,0.169526],[1.65516,1.86094,-0.170322],[1.65516,1.86094,0.170322],[1.6625,0.75,-1.125],[1.6625,0.75,1.125],[1.6664,1.28613,-0.907437],[1.6664,1.28613,0.907437],[1.7,0.45,0],[1.7,0.485449,-0.216563],[1.7,0.485449,0.216563],[1.7,0.578906,-0.37125],[1.7,0.578906,0.37125],[1.7,0.711035,-0.464063],[1.7,0.711035,0.464063],[1.7,0.8625,-0.495],[1.7,0.8625,0.495],[1.7,1.01397,-0.464063],[1.7,1.01397,0.464063],[1.7,1.14609,-0.37125],[1.7,1.14609,0.37125],[1.7,1.23955,-0.216563],[1.7,1.23955,0.216563],[1.7,1.275,0],[1.70086,1.47187,-0.723672],[1.70086,1.47187,0.723672],[1.71008,0.522583,-0.931218],[1.71008,0.522583,0.931218],[1.715,0.234375,-0.356562],[1.715,0.234375,0.356563],[1.73491,0.925195,-0.944741],[1.73491,0.925195,0.944741],[1.74433,0.670825,-0.949871],[1.74433,0.670825,0.949871],[1.74644,0.343945,-0.547339],[1.74644,0.343945,0.547339],[1.75,0.234375,0],[1.77293,0.453516,-0.754336],[1.77293,0.453516,0.754336],[1.80536,1.10039,-0.768135],[1.80536,1.10039,0.768135],[1.80687,1.47187,-0.375664],[1.80687,1.47187,0.375664],[1.80775,1.28613,-0.566554],[1.80775,1.28613,0.566554],[1.80868,0.66944,-0.415335],[1.80868,0.66944,0.415335],[1.81523,0.556498,-0.292881],[1.81523,0.556498,0.292881],[1.81758,0.343945,-0.187036],[1.81758,0.343945,0.187036],[1.8185,0.493823,-0.107904],[1.8185,0.493823,0.107904],[1.82518,0.59165,-0.776567],[1.82518,0.59165,0.776567],[1.84375,1.47187,0],[1.84408,1.27311,-0.106836],[1.84408,1.27311,0.106836],[1.845,0.75,-0.785],[1.845,0.75,0.785],[1.84989,1.21245,-0.289984],[1.84989,1.21245,0.289984],[1.85512,0.522583,-0.581402],[1.85512,0.522583,0.581402],[1.86007,1.10628,-0.412082],[1.86007,1.10628,0.412082],[1.87286,0.97282,-0.473131],[1.87286,0.97282,0.473131],[1.88139,1.28613,-0.193602],[1.88139,1.28613,0.193602],[1.88206,0.925195,-0.589845],[1.88206,0.925195,0.589845],[1.88344,0.453516,-0.391582],[1.88344,0.453516,0.391582],[1.88652,0.830257,-0.473131],[1.88652,0.830257,0.473131],[1.89228,0.670825,-0.593047],[1.89228,0.670825,0.593047],[1.90898,0.762851,-0.457368],[1.90898,0.762851,0.457368],[1.91789,1.10039,-0.398745],[1.91789,1.10039,0.398745],[1.92188,0.453516,0],[1.92572,0.624968,-0.36866],[1.92572,0.624968,0.36866],[1.93069,0.522583,-0.198676],[1.93069,0.522583,0.198676],[1.9352,0.536667,-0.215052],[1.9352,0.536667,0.215052],[1.93879,0.503174,0],[1.93895,0.59165,-0.403123],[1.93895,0.59165,0.403123],[1.95703,1.10039,0],[1.95873,0.925195,-0.201561],[1.95873,0.925195,0.201561],[1.96,0.75,-0.4075],[1.96,0.75,0.4075],[1.96937,0.670825,-0.202656],[1.96937,0.670825,0.202656],[1.97852,0.59165,0],[1.98496,1.30459,0],[1.99136,1.27331,-0.210782],[1.99136,1.27331,0.210782],[2,0.75,0],[2.00799,0.721263,-0.409761],[2.00799,0.721263,0.409761],[2.00821,1.19084,-0.36134],[2.00821,1.19084,0.36134],[2.02471,0.614949,-0.288958],[2.02471,0.614949,0.288958],[2.03205,1.07424,-0.451675],[2.03205,1.07424,0.451675],[2.03379,0.556062,-0.106458],[2.03379,0.556062,0.106458],[2.05938,0.940576,-0.481787],[2.05938,0.940576,0.481787],[2.08644,1.33048,-0.101581],[2.08644,1.33048,0.101581],[2.0867,0.806915,-0.451675],[2.0867,0.806915,0.451675],[2.10141,1.27815,-0.27572],[2.10141,1.27815,0.27572],[2.11053,0.690317,-0.36134],[2.11053,0.690317,0.36134],[2.12739,0.607845,-0.210782],[2.12739,0.607845,0.210782],[2.1276,1.18656,-0.391812],[2.1276,1.18656,0.391812],[2.13379,0.576563,0],[2.16054,1.07143,-0.449859],[2.16054,1.07143,0.449859],[2.16922,0.790259,-0.39936],[2.16922,0.790259,0.39936],[2.17969,1.38516,0],[2.18976,1.35887,-0.195542],[2.18976,1.35887,0.195542],[2.19481,0.691761,-0.281559],[2.19481,0.691761,0.281559],[2.19571,0.948444,-0.449859],[2.19571,0.948444,0.449859],[2.20837,0.637082,-0.103732],[2.20837,0.637082,0.103732],[2.21631,1.28957,-0.335215],[2.21631,1.28957,0.335215],[2.2202,0.891314,-0.434457],[2.2202,0.891314,0.434457],[2.24857,1.433,-0.092384],[2.24857,1.433,0.092384],[2.25384,1.1916,-0.419019],[2.25384,1.1916,0.419019],[2.25944,0.772489,-0.349967],[2.25944,0.772489,0.349967],[2.26857,1.39016,-0.250758],[2.26857,1.39016,0.250758],[2.28189,0.696393,-0.204147],[2.28189,0.696393,0.204147],[2.29041,0.667529,0],[2.29688,1.0793,-0.446953],[2.29688,1.0793,0.446953],[2.29925,0.874953,-0.384664],[2.29925,0.874953,0.384664],[2.30358,1.3152,-0.35634],[2.30358,1.3152,0.35634],[2.30644,1.5044,0],[2.31838,1.48356,-0.173996],[2.31838,1.48356,0.173996],[2.33069,0.784406,-0.271218],[2.33069,0.784406,0.271218],[2.33991,0.966989,-0.419019],[2.33991,0.966989,0.419019],[2.34759,0.734271,-0.099922],[2.34759,0.734271,0.099922],[2.34759,1.22096,-0.409131],[2.34759,1.22096,0.409131],[2.34984,1.42864,-0.298279],[2.34984,1.42864,0.298279],[2.35318,1.56816,-0.080823],[2.35318,1.56816,0.080823],[2.37575,1.53531,-0.219377],[2.37575,1.53531,0.219377],[2.37744,0.869019,-0.335215],[2.37744,0.869019,0.335215],[2.3875,1.65,0],[2.39432,1.35098,-0.372849],[2.39432,1.35098,0.372849],[2.3946,1.1203,-0.409131],[2.3946,1.1203,0.409131],[2.40039,1.63469,-0.149297],[2.40039,1.63469,0.149297],[2.40399,0.799722,-0.195542],[2.40399,0.799722,0.195542],[2.41406,0.773438,0],[2.41524,1.47781,-0.311747],[2.41524,1.47781,0.311747],[2.43438,1.59434,-0.255938],[2.43438,1.59434,0.255938],[2.43861,1.02606,-0.35634],[2.43861,1.02606,0.35634],[2.44531,1.26196,-0.397705],[2.44531,1.26196,0.397705],[2.45168,1.80534,-0.063087],[2.45168,1.80534,0.063087],[2.46489,1.40552,-0.357931],[2.46489,1.40552,0.357931],[2.47362,0.951099,-0.250758],[2.47362,0.951099,0.250758],[2.47768,1.78638,-0.171237],[2.47768,1.78638,0.171237],[2.48242,1.53728,-0.319922],[2.48242,1.53728,0.319922],[2.49362,0.908264,-0.092384],[2.49362,0.908264,0.092384],[2.4963,1.17295,-0.372849],[2.4963,1.17295,0.372849],[2.50156,1.97109,0],[2.51727,1.96555,-0.103052],[2.51727,1.96555,0.103052],[2.51792,1.32831,-0.357931],[2.51792,1.32831,0.357931],[2.52318,1.75322,-0.243336],[2.52318,1.75322,0.243336],[2.5375,1.47187,-0.34125],[2.5375,1.47187,0.34125],[2.54078,1.09529,-0.298279],[2.54078,1.09529,0.298279],[2.54911,2.04464,-0.047716],[2.54911,2.04464,0.047716],[2.55869,1.95095,-0.17666],[2.55869,1.95095,0.17666],[2.56757,1.25603,-0.311747],[2.56757,1.25603,0.311747],[2.57225,1.04036,-0.173996],[2.57225,1.04036,0.173996],[2.5791,2.12197,0],[2.58039,1.71153,-0.279386],[2.58039,1.71153,0.279386],[2.58101,2.03773,-0.129515],[2.58101,2.03773,0.129515],[2.58418,1.01953,0],[2.59258,1.40647,-0.319922],[2.59258,1.40647,0.319922],[2.59849,2.11992,-0.087812],[2.59849,2.11992,0.087812],[2.60178,1.55472,-0.304019],[2.60178,1.55472,0.304019],[2.60707,1.19853,-0.219377],[2.60707,1.19853,0.219377],[2.61162,1.69128,-0.287908],[2.61162,1.69128,0.287908],[2.61725,1.93031,-0.220825],[2.61725,1.93031,0.220825],[2.62963,1.16568,-0.080823],[2.62963,1.16568,0.080823],[2.63788,2.02555,-0.180818],[2.63788,2.02555,0.180818],[2.64063,1.34941,-0.255938],[2.64063,1.34941,0.255938],[2.6496,2.11451,-0.150535],[2.6496,2.11451,0.150535],[2.65084,2.18547,-0.042461],[2.65084,2.18547,0.042461],[2.65391,1.5042,-0.264113],[2.65391,1.5042,0.264113],[2.66542,1.64925,-0.266995],[2.66542,1.64925,0.266995],[2.67461,1.30906,-0.149297],[2.67461,1.30906,0.149297],[2.67823,1.78254,-0.252819],[2.67823,1.78254,0.252819],[2.68438,1.90664,-0.235547],[2.68438,1.90664,0.235547],[2.6875,1.29375,0],[2.6919,2.18361,-0.115251],[2.6919,2.18361,0.115251],[2.69645,1.4638,-0.185857],[2.69645,1.4638,0.185857],[2.7,2.25,0],[2.70808,2.01037,-0.208084],[2.70808,2.01037,0.208084],[2.71703,1.61167,-0.213596],[2.71703,1.61167,0.213596],[2.72076,1.44072,-0.068474],[2.72076,1.44072,0.068474],[2.72578,2.25,-0.082031],[2.72578,2.25,0.082031],[2.72599,2.10643,-0.17525],[2.72599,2.10643,0.17525],[2.736,1.75155,-0.219519],[2.736,1.75155,0.219519],[2.75021,2.26919,-0.039734],[2.75021,2.26919,0.039734],[2.7515,1.88297,-0.220825],[2.7515,1.88297,0.220825],[2.75354,1.58508,-0.124598],[2.75354,1.58508,0.124598],[2.76738,1.575,0],[2.77556,2.284,0],[2.78099,1.99437,-0.208084],[2.78099,1.99437,0.208084],[2.78303,1.7267,-0.154476],[2.78303,1.7267,0.154476],[2.79375,2.25,-0.140625],[2.79375,2.25,0.140625],[2.79782,2.27175,-0.107849],[2.79782,2.27175,0.107849],[2.79949,2.29275,-0.076904],[2.79949,2.29275,0.076904],[2.8,2.25,0],[2.80469,2.0981,-0.200713],[2.80469,2.0981,0.200713],[2.8099,1.7125,-0.056912],[2.8099,1.7125,0.056912],[2.81006,1.86233,-0.17666],[2.81006,1.86233,0.17666],[2.81201,2.17815,-0.169843],[2.81201,2.17815,0.169843],[2.81274,2.29754,-0.035632],[2.81274,2.29754,0.035632],[2.81719,2.25,-0.049219],[2.81719,2.25,0.049219],[2.825,2.30625,0],[2.83011,2.27129,-0.025891],[2.83011,2.27129,0.025891],[2.84063,2.29219,0],[2.84479,2.29964,-0.029993],[2.84479,2.29964,0.029993],[2.85092,2.30716,-0.065625],[2.85092,2.30716,0.065625],[2.85118,1.97919,-0.180818],[2.85118,1.97919,0.180818],[2.85148,1.84773,-0.103052],[2.85148,1.84773,0.103052],[2.86048,2.30093,-0.096716],[2.86048,2.30093,0.096716],[2.8625,2.25,-0.084375],[2.8625,2.25,0.084375],[2.86263,2.29298,-0.054346],[2.86263,2.29298,0.054346],[2.86574,2.27201,-0.070276],[2.86574,2.27201,0.070276],[2.86719,1.84219,0],[2.87228,2.29425,-0.131836],[2.87228,2.29425,0.131836],[2.88339,2.08977,-0.17525],[2.88339,2.08977,0.17525],[2.88836,2.30119,-0.081409],[2.88836,2.30119,0.081409],[2.89827,2.17088,-0.194382],[2.89827,2.17088,0.194382],[2.90805,1.967,-0.129515],[2.90805,1.967,0.129515],[2.91924,2.30955,-0.1125],[2.91924,2.30955,0.1125],[2.92064,2.29507,-0.093164],[2.92064,2.29507,0.093164],[2.93279,2.13103,-0.172211],[2.93279,2.13103,0.172211],[2.9398,2.27326,-0.158936],[2.9398,2.27326,0.158936],[2.93996,1.9601,-0.047716],[2.93996,1.9601,0.047716],[2.95978,2.08168,-0.150535],[2.95978,2.08168,0.150535],[2.96995,2.27412,-0.103564],[2.96995,2.27412,0.103564],[3,2.25,-0.1875],[3,2.25,-0.1125],[3,2.25,0.1125],[3,2.25,0.1875],[3.00281,2.30484,-0.142529],[3.00281,2.30484,0.142529],[3.01089,2.07627,-0.087812],[3.01089,2.07627,0.087812],[3.01578,2.30571,-0.119971],[3.01578,2.30571,0.119971],[3.03027,2.07422,0],[3.0415,2.12567,-0.116276],[3.0415,2.12567,0.116276],[3.04323,2.21108,-0.166431],[3.04323,2.21108,0.166431],[3.06842,2.17345,-0.143215],[3.06842,2.17345,0.143215],[3.07929,2.12306,-0.042838],[3.07929,2.12306,0.042838],[3.09316,2.29878,-0.175781],[3.09316,2.29878,0.175781],[3.09668,2.30142,-0.124219],[3.09668,2.30142,0.124219],[3.12656,2.3168,-0.15],[3.12656,2.3168,0.15],[3.12672,2.27729,-0.103564],[3.12672,2.27729,0.103564],[3.12691,2.17128,-0.083542],[3.12691,2.17128,0.083542],[3.1375,2.25,-0.084375],[3.1375,2.25,0.084375],[3.1491,2.17046,0],[3.15337,2.27552,-0.158936],[3.15337,2.27552,0.158936],[3.16895,2.21118,-0.112353],[3.16895,2.21118,0.112353],[3.18281,2.25,-0.049219],[3.18281,2.25,0.049219],[3.2,2.25,0],[3.20625,2.25,-0.140625],[3.20625,2.25,0.140625],[3.20746,2.31251,-0.119971],[3.20746,2.31251,0.119971],[3.21256,2.21043,-0.041393],[3.21256,2.21043,0.041393],[3.21692,2.31073,-0.142529],[3.21692,2.31073,0.142529],[3.23094,2.2794,-0.070276],[3.23094,2.2794,0.070276],[3.26724,2.27814,-0.025891],[3.26724,2.27814,0.025891],[3.27272,2.30776,-0.093164],[3.27272,2.30776,0.093164],[3.27422,2.25,-0.082031],[3.27422,2.25,0.082031],[3.29534,2.27703,-0.107849],[3.29534,2.27703,0.107849],[3.3,2.25,0],[3.31405,2.30331,-0.131836],[3.31405,2.30331,0.131836],[3.33073,2.30985,-0.054346],[3.33073,2.30985,0.054346],[3.33389,2.32405,-0.1125],[3.33389,2.32405,0.1125],[3.33489,2.31702,-0.081409],[3.33489,2.31702,0.081409],[3.34236,2.28006,-0.039734],[3.34236,2.28006,0.039734],[3.35543,2.3027,0],[3.35925,2.31465,-0.096716],[3.35925,2.31465,0.096716],[3.37912,2.31658,-0.029993],[3.37912,2.31658,0.029993],[3.38684,2.30481,-0.076904],[3.38684,2.30481,0.076904],[3.40221,2.32644,-0.065625],[3.40221,2.32644,0.065625],[3.40639,2.3185,-0.035632],[3.40639,2.3185,0.035632],[3.40838,2.31543,0],[3.42812,2.32734,0]],indices:[[1454,1468,1458],[1448,1454,1458],[1461,1448,1458],[1468,1461,1458],[1429,1454,1440],[1421,1429,1440],[1448,1421,1440],[1454,1448,1440],[1380,1429,1398],[1373,1380,1398],[1421,1373,1398],[1429,1421,1398],[1327,1380,1349],[1319,1327,1349],[1373,1319,1349],[1380,1373,1349],[1448,1461,1460],[1456,1448,1460],[1471,1456,1460],[1461,1471,1460],[1421,1448,1442],[1433,1421,1442],[1456,1433,1442],[1448,1456,1442],[1373,1421,1400],[1382,1373,1400],[1433,1382,1400],[1421,1433,1400],[1319,1373,1351],[1329,1319,1351],[1382,1329,1351],[1373,1382,1351],[1264,1327,1289],[1258,1264,1289],[1319,1258,1289],[1327,1319,1289],[1192,1264,1228],[1188,1192,1228],[1258,1188,1228],[1264,1258,1228],[1100,1192,1157],[1098,1100,1157],[1188,1098,1157],[1192,1188,1157],[922,1100,1006],[928,922,1006],[1098,928,1006],[1100,1098,1006],[1258,1319,1291],[1266,1258,1291],[1329,1266,1291],[1319,1329,1291],[1188,1258,1230],[1194,1188,1230],[1266,1194,1230],[1258,1266,1230],[1098,1188,1159],[1102,1098,1159],[1194,1102,1159],[1188,1194,1159],[928,1098,1008],[933,928,1008],[1102,933,1008],[1098,1102,1008],[1456,1471,1475],[1481,1456,1475],[1482,1481,1475],[1471,1482,1475],[1433,1456,1450],[1444,1433,1450],[1481,1444,1450],[1456,1481,1450],[1382,1433,1412],[1392,1382,1412],[1444,1392,1412],[1433,1444,1412],[1329,1382,1357],[1331,1329,1357],[1392,1331,1357],[1382,1392,1357],[1481,1482,1490],[1500,1481,1490],[1502,1500,1490],[1482,1502,1490],[1444,1481,1470],[1465,1444,1470],[1500,1465,1470],[1481,1500,1470],[1392,1444,1431],[1410,1392,1431],[1465,1410,1431],[1444,1465,1431],[1331,1392,1371],[1345,1331,1371],[1410,1345,1371],[1392,1410,1371],[1266,1329,1297],[1276,1266,1297],[1331,1276,1297],[1329,1331,1297],[1194,1266,1232],[1200,1194,1232],[1276,1200,1232],[1266,1276,1232],[1102,1194,1163],[1106,1102,1163],[1200,1106,1163],[1194,1200,1163],[933,1102,1016],[929,933,1016],[1106,929,1016],[1102,1106,1016],[1276,1331,1307],[1283,1276,1307],[1345,1283,1307],[1331,1345,1307],[1200,1276,1238],[1210,1200,1238],[1283,1210,1238],[1276,1283,1238],[1106,1200,1167],[1116,1106,1167],[1210,1116,1167],[1200,1210,1167],[929,1106,1022],[923,929,1022],[1116,923,1022],[1106,1116,1022],[755,922,849],[757,755,849],[928,757,849],[922,928,849],[663,755,698],[667,663,698],[757,667,698],[755,757,698],[591,663,627],[597,591,627],[667,597,627],[663,667,627],[528,591,566],[536,528,566],[597,536,566],[591,597,566],[757,928,847],[753,757,847],[933,753,847],[928,933,847],[667,757,696],[661,667,696],[753,661,696],[757,753,696],[597,667,625],[589,597,625],[661,589,625],[667,661,625],[536,597,564],[526,536,564],[589,526,564],[597,589,564],[475,528,506],[482,475,506],[536,482,506],[528,536,506],[426,475,457],[434,426,457],[482,434,457],[475,482,457],[401,426,415],[407,401,415],[434,407,415],[426,434,415],[386,401,397],[393,386,397],[407,393,397],[401,407,397],[482,536,504],[473,482,504],[526,473,504],[536,526,504],[434,482,455],[422,434,455],[473,422,455],[482,473,455],[407,434,413],[399,407,413],[422,399,413],[434,422,413],[393,407,395],[383,393,395],[399,383,395],[407,399,395],[753,933,839],[749,753,839],[929,749,839],[933,929,839],[661,753,692],[655,661,692],[749,655,692],[753,749,692],[589,661,623],[579,589,623],[655,579,623],[661,655,623],[526,589,558],[524,526,558],[579,524,558],[589,579,558],[749,929,833],[741,749,833],[923,741,833],[929,923,833],[655,749,688],[647,655,688],[741,647,688],[749,741,688],[579,655,617],[574,579,617],[647,574,617],[655,647,617],[524,579,548],[512,524,548],[574,512,548],[579,574,548],[473,526,498],[463,473,498],[524,463,498],[526,524,498],[422,473,443],[411,422,443],[463,411,443],[473,463,443],[399,422,405],[374,399,405],[411,374,405],[422,411,405],[383,399,380],[372,383,380],[374,372,380],[399,374,380],[463,524,484],[447,463,484],[512,447,484],[524,512,484],[411,463,424],[392,411,424],[447,392,424],[463,447,424],[374,411,385],[357,374,385],[392,357,385],[411,392,385],[372,374,365],[353,372,365],[357,353,365],[374,357,365],[400,386,396],[406,400,396],[393,406,396],[386,393,396],[425,400,414],[433,425,414],[406,433,414],[400,406,414],[474,425,456],[481,474,456],[433,481,456],[425,433,456],[527,474,505],[535,527,505],[481,535,505],[474,481,505],[406,393,394],[398,406,394],[383,398,394],[393,383,394],[433,406,412],[421,433,412],[398,421,412],[406,398,412],[481,433,454],[472,481,454],[421,472,454],[433,421,454],[535,481,503],[525,535,503],[472,525,503],[481,472,503],[590,527,565],[596,590,565],[535,596,565],[527,535,565],[662,590,626],[666,662,626],[596,666,626],[590,596,626],[754,662,697],[756,754,697],[666,756,697],[662,666,697],[919,754,848],[927,919,848],[756,927,848],[754,756,848],[596,535,563],[588,596,563],[525,588,563],[535,525,563],[666,596,624],[660,666,624],[588,660,624],[596,588,624],[756,666,695],[752,756,695],[660,752,695],[666,660,695],[927,756,846],[932,927,846],[752,932,846],[756,752,846],[398,383,379],[373,398,379],[372,373,379],[383,372,379],[421,398,404],[410,421,404],[373,410,404],[398,373,404],[472,421,442],[462,472,442],[410,462,442],[421,410,442],[525,472,497],[523,525,497],[462,523,497],[472,462,497],[373,372,364],[356,373,364],[353,356,364],[372,353,364],[410,373,384],[391,410,384],[356,391,384],[373,356,384],[462,410,423],[446,462,423],[391,446,423],[410,391,423],[523,462,483],[511,523,483],[446,511,483],[462,446,483],[588,525,557],[578,588,557],[523,578,557],[525,523,557],[660,588,622],[654,660,622],[578,654,622],[588,578,622],[752,660,691],[748,752,691],[654,748,691],[660,654,691],[932,752,838],[926,932,838],[748,926,838],[752,748,838],[578,523,547],[573,578,547],[511,573,547],[523,511,547],[654,578,616],[646,654,616],[573,646,616],[578,573,616],[748,654,687],[740,748,687],[646,740,687],[654,646,687],[926,748,832],[918,926,832],[740,918,832],[748,740,832],[1099,919,1005],[1097,1099,1005],[927,1097,1005],[919,927,1005],[1191,1099,1156],[1187,1191,1156],[1097,1187,1156],[1099,1097,1156],[1263,1191,1227],[1257,1263,1227],[1187,1257,1227],[1191,1187,1227],[1326,1263,1288],[1318,1326,1288],[1257,1318,1288],[1263,1257,1288],[1097,927,1007],[1101,1097,1007],[932,1101,1007],[927,932,1007],[1187,1097,1158],[1193,1187,1158],[1101,1193,1158],[1097,1101,1158],[1257,1187,1229],[1265,1257,1229],[1193,1265,1229],[1187,1193,1229],[1318,1257,1290],[1328,1318,1290],[1265,1328,1290],[1257,1265,1290],[1379,1326,1348],[1372,1379,1348],[1318,1372,1348],[1326,1318,1348],[1428,1379,1397],[1420,1428,1397],[1372,1420,1397],[1379,1372,1397],[1453,1428,1439],[1447,1453,1439],[1420,1447,1439],[1428,1420,1439],[1468,1453,1457],[1461,1468,1457],[1447,1461,1457],[1453,1447,1457],[1372,1318,1350],[1381,1372,1350],[1328,1381,1350],[1318,1328,1350],[1420,1372,1399],[1432,1420,1399],[1381,1432,1399],[1372,1381,1399],[1447,1420,1441],[1455,1447,1441],[1432,1455,1441],[1420,1432,1441],[1461,1447,1459],[1471,1461,1459],[1455,1471,1459],[1447,1455,1459],[1101,932,1015],[1105,1101,1015],[926,1105,1015],[932,926,1015],[1193,1101,1162],[1199,1193,1162],[1105,1199,1162],[1101,1105,1162],[1265,1193,1231],[1275,1265,1231],[1199,1275,1231],[1193,1199,1231],[1328,1265,1296],[1330,1328,1296],[1275,1330,1296],[1265,1275,1296],[1105,926,1021],[1115,1105,1021],[918,1115,1021],[926,918,1021],[1199,1105,1166],[1209,1199,1166],[1115,1209,1166],[1105,1115,1166],[1275,1199,1237],[1282,1275,1237],[1209,1282,1237],[1199,1209,1237],[1330,1275,1306],[1344,1330,1306],[1282,1344,1306],[1275,1282,1306],[1381,1328,1356],[1391,1381,1356],[1330,1391,1356],[1328,1330,1356],[1432,1381,1411],[1443,1432,1411],[1391,1443,1411],[1381,1391,1411],[1455,1432,1449],[1480,1455,1449],[1443,1480,1449],[1432,1443,1449],[1471,1455,1474],[1482,1471,1474],[1480,1482,1474],[1455,1480,1474],[1391,1330,1370],[1409,1391,1370],[1344,1409,1370],[1330,1344,1370],[1443,1391,1430],[1464,1443,1430],[1409,1464,1430],[1391,1409,1430],[1480,1443,1469],[1499,1480,1469],[1464,1499,1469],[1443,1464,1469],[1482,1480,1489],[1502,1482,1489],[1499,1502,1489],[1480,1499,1489],[1500,1502,1533],[1572,1500,1533],[1585,1572,1533],[1502,1585,1533],[1465,1500,1519],[1555,1465,1519],[1572,1555,1519],[1500,1572,1519],[1410,1465,1496],[1510,1410,1496],[1555,1510,1496],[1465,1555,1496],[1345,1410,1427],[1436,1345,1427],[1510,1436,1427],[1410,1510,1427],[1283,1345,1341],[1333,1283,1341],[1436,1333,1341],[1345,1436,1341],[1210,1283,1270],[1242,1210,1270],[1333,1242,1270],[1283,1333,1270],[1116,1210,1184],[1143,1116,1184],[1242,1143,1184],[1210,1242,1184],[923,1116,1037],[917,923,1037],[1143,917,1037],[1116,1143,1037],[1572,1585,1599],[1611,1572,1599],[1622,1611,1599],[1585,1622,1599],[1555,1572,1574],[1570,1555,1574],[1611,1570,1574],[1572,1611,1574],[1510,1555,1537],[1527,1510,1537],[1570,1527,1537],[1555,1570,1537],[1436,1510,1494],[1467,1436,1494],[1527,1467,1494],[1510,1527,1494],[1611,1622,1624],[1626,1611,1624],[1633,1626,1624],[1622,1633,1624],[1570,1611,1601],[1589,1570,1601],[1626,1589,1601],[1611,1626,1601],[1527,1570,1561],[1535,1527,1561],[1589,1535,1561],[1570,1589,1561],[1467,1527,1508],[1479,1467,1508],[1535,1479,1508],[1527,1535,1508],[1333,1436,1394],[1359,1333,1394],[1467,1359,1394],[1436,1467,1394],[1242,1333,1299],[1254,1242,1299],[1359,1254,1299],[1333,1359,1299],[1143,1242,1198],[1149,1143,1198],[1254,1149,1198],[1242,1254,1198],[917,1143,1057],[915,917,1057],[1149,915,1057],[1143,1149,1057],[1359,1467,1414],[1367,1359,1414],[1479,1367,1414],[1467,1479,1414],[1254,1359,1311],[1262,1254,1311],[1367,1262,1311],[1359,1367,1311],[1149,1254,1212],[1155,1149,1212],[1262,1155,1212],[1254,1262,1212],[915,1149,1065],[913,915,1065],[1155,913,1065],[1149,1155,1065],[741,923,818],[712,741,818],[917,712,818],[923,917,818],[647,741,671],[613,647,671],[712,613,671],[741,712,671],[574,647,585],[522,574,585],[613,522,585],[647,613,585],[512,574,514],[419,512,514],[522,419,514],[574,522,514],[447,512,428],[342,447,428],[419,342,428],[512,419,428],[392,447,359],[308,392,359],[342,308,359],[447,342,359],[357,392,329],[291,357,329],[308,291,329],[392,308,329],[353,357,314],[275,353,314],[291,275,314],[357,291,314],[712,917,798],[706,712,798],[915,706,798],[917,915,798],[613,712,657],[601,613,657],[706,601,657],[712,706,657],[522,613,556],[496,522,556],[601,496,556],[613,601,556],[419,522,461],[388,419,461],[496,388,461],[522,496,461],[706,915,790],[700,706,790],[913,700,790],[915,913,790],[601,706,643],[593,601,643],[700,593,643],[706,700,643],[496,601,544],[488,496,544],[593,488,544],[601,593,544],[388,496,441],[376,388,441],[488,376,441],[496,488,441],[342,419,361],[320,342,361],[388,320,361],[419,388,361],[308,342,310],[293,308,310],[320,293,310],[342,320,310],[291,308,289],[257,291,289],[293,257,289],[308,293,289],[275,291,270],[246,275,270],[257,246,270],[291,257,270],[320,388,344],[312,320,344],[376,312,344],[388,376,344],[293,320,302],[274,293,302],[312,274,302],[320,312,302],[257,293,268],[243,257,268],[274,243,268],[293,274,268],[246,257,245],[232,246,245],[243,232,245],[257,243,245],[356,353,313],[290,356,313],[275,290,313],[353,275,313],[391,356,328],[307,391,328],[290,307,328],[356,290,328],[446,391,358],[341,446,358],[307,341,358],[391,307,358],[511,446,427],[418,511,427],[341,418,427],[446,341,427],[573,511,513],[521,573,513],[418,521,513],[511,418,513],[646,573,584],[612,646,584],[521,612,584],[573,521,584],[740,646,670],[711,740,670],[612,711,670],[646,612,670],[918,740,817],[916,918,817],[711,916,817],[740,711,817],[290,275,269],[256,290,269],[246,256,269],[275,246,269],[307,290,288],[292,307,288],[256,292,288],[290,256,288],[341,307,309],[319,341,309],[292,319,309],[307,292,309],[418,341,360],[387,418,360],[319,387,360],[341,319,360],[256,246,244],[242,256,244],[232,242,244],[246,232,244],[292,256,267],[273,292,267],[242,273,267],[256,242,267],[319,292,301],[311,319,301],[273,311,301],[292,273,301],[387,319,343],[375,387,343],[311,375,343],[319,311,343],[521,418,460],[495,521,460],[387,495,460],[418,387,460],[612,521,555],[600,612,555],[495,600,555],[521,495,555],[711,612,656],[705,711,656],[600,705,656],[612,600,656],[916,711,797],[914,916,797],[705,914,797],[711,705,797],[495,387,440],[487,495,440],[375,487,440],[387,375,440],[600,495,543],[592,600,543],[487,592,543],[495,487,543],[705,600,642],[699,705,642],[592,699,642],[600,592,642],[914,705,789],[912,914,789],[699,912,789],[705,699,789],[1115,918,1036],[1142,1115,1036],[916,1142,1036],[918,916,1036],[1209,1115,1183],[1241,1209,1183],[1142,1241,1183],[1115,1142,1183],[1282,1209,1269],[1332,1282,1269],[1241,1332,1269],[1209,1241,1269],[1344,1282,1340],[1435,1344,1340],[1332,1435,1340],[1282,1332,1340],[1409,1344,1426],[1509,1409,1426],[1435,1509,1426],[1344,1435,1426],[1464,1409,1495],[1554,1464,1495],[1509,1554,1495],[1409,1509,1495],[1499,1464,1518],[1571,1499,1518],[1554,1571,1518],[1464,1554,1518],[1502,1499,1532],[1585,1502,1532],[1571,1585,1532],[1499,1571,1532],[1142,916,1056],[1148,1142,1056],[914,1148,1056],[916,914,1056],[1241,1142,1197],[1253,1241,1197],[1148,1253,1197],[1142,1148,1197],[1332,1241,1298],[1358,1332,1298],[1253,1358,1298],[1241,1253,1298],[1435,1332,1393],[1466,1435,1393],[1358,1466,1393],[1332,1358,1393],[1148,914,1064],[1154,1148,1064],[912,1154,1064],[914,912,1064],[1253,1148,1211],[1261,1253,1211],[1154,1261,1211],[1148,1154,1211],[1358,1253,1310],[1366,1358,1310],[1261,1366,1310],[1253,1261,1310],[1466,1358,1413],[1478,1466,1413],[1366,1478,1413],[1358,1366,1413],[1509,1435,1493],[1526,1509,1493],[1466,1526,1493],[1435,1466,1493],[1554,1509,1536],[1569,1554,1536],[1526,1569,1536],[1509,1526,1536],[1571,1554,1573],[1610,1571,1573],[1569,1610,1573],[1554,1569,1573],[1585,1571,1598],[1622,1585,1598],[1610,1622,1598],[1571,1610,1598],[1526,1466,1507],[1534,1526,1507],[1478,1534,1507],[1466,1478,1507],[1569,1526,1560],[1588,1569,1560],[1534,1588,1560],[1526,1534,1560],[1610,1569,1600],[1625,1610,1600],[1588,1625,1600],[1569,1588,1600],[1622,1610,1623],[1633,1622,1623],[1625,1633,1623],[1610,1625,1623],[1626,1633,1628],[1621,1626,1628],[1629,1621,1628],[1633,1629,1628],[1589,1626,1607],[1584,1589,1607],[1621,1584,1607],[1626,1621,1607],[1621,1629,1616],[1603,1621,1616],[1612,1603,1616],[1629,1612,1616],[1584,1621,1593],[1568,1584,1593],[1603,1568,1593],[1621,1603,1593],[1535,1589,1563],[1529,1535,1563],[1584,1529,1563],[1589,1584,1563],[1479,1535,1512],[1473,1479,1512],[1529,1473,1512],[1535,1529,1512],[1529,1584,1557],[1521,1529,1557],[1568,1521,1557],[1584,1568,1557],[1473,1529,1504],[1452,1473,1504],[1521,1452,1504],[1529,1521,1504],[1603,1612,1580],[1559,1603,1580],[1566,1559,1580],[1612,1566,1580],[1568,1603,1565],[1525,1568,1565],[1559,1525,1565],[1603,1559,1565],[1521,1568,1523],[1484,1521,1523],[1525,1484,1523],[1568,1525,1523],[1452,1521,1477],[1406,1452,1477],[1484,1406,1477],[1521,1484,1477],[1367,1479,1417],[1361,1367,1417],[1473,1361,1417],[1479,1473,1417],[1262,1367,1313],[1260,1262,1313],[1361,1260,1313],[1367,1361,1313],[1361,1473,1404],[1355,1361,1404],[1452,1355,1404],[1473,1452,1404],[1260,1361,1303],[1248,1260,1303],[1355,1248,1303],[1361,1355,1303],[1155,1262,1214],[1151,1155,1214],[1260,1151,1214],[1262,1260,1214],[913,1155,1067],[911,913,1067],[1151,911,1067],[1155,1151,1067],[1151,1260,1204],[1147,1151,1204],[1248,1147,1204],[1260,1248,1204],[911,1151,1062],[909,911,1062],[1147,909,1062],[1151,1147,1062],[1355,1452,1384],[1323,1355,1384],[1406,1323,1384],[1452,1406,1384],[1248,1355,1287],[1236,1248,1287],[1323,1236,1287],[1355,1323,1287],[1147,1248,1190],[1135,1147,1190],[1236,1135,1190],[1248,1236,1190],[909,1147,1051],[907,909,1051],[1135,907,1051],[1147,1135,1051],[1559,1566,1531],[1514,1559,1531],[1515,1514,1531],[1566,1515,1531],[1525,1559,1517],[1486,1525,1517],[1514,1486,1517],[1559,1514,1517],[1484,1525,1488],[1438,1484,1488],[1486,1438,1488],[1525,1486,1488],[1406,1484,1425],[1363,1406,1425],[1438,1363,1425],[1484,1438,1425],[1514,1515,1506],[1498,1514,1506],[1501,1498,1506],[1515,1501,1506],[1486,1514,1492],[1463,1486,1492],[1498,1463,1492],[1514,1498,1492],[1438,1486,1446],[1408,1438,1446],[1463,1408,1446],[1486,1463,1446],[1363,1438,1386],[1343,1363,1386],[1408,1343,1386],[1438,1408,1386],[1323,1406,1337],[1293,1323,1337],[1363,1293,1337],[1406,1363,1337],[1236,1323,1268],[1220,1236,1268],[1293,1220,1268],[1323,1293,1268],[1135,1236,1182],[1122,1135,1182],[1220,1122,1182],[1236,1220,1182],[907,1135,1035],[905,907,1035],[1122,905,1035],[1135,1122,1035],[1293,1363,1317],[1281,1293,1317],[1343,1281,1317],[1363,1343,1317],[1220,1293,1246],[1208,1220,1246],[1281,1208,1246],[1293,1281,1246],[1122,1220,1172],[1114,1122,1172],[1208,1114,1172],[1220,1208,1172],[905,1122,1026],[903,905,1026],[1114,903,1026],[1122,1114,1026],[700,913,788],[704,700,788],[911,704,788],[913,911,788],[593,700,641],[595,593,641],[704,595,641],[700,704,641],[704,911,793],[708,704,793],[909,708,793],[911,909,793],[595,704,651],[607,595,651],[708,607,651],[704,708,651],[488,593,542],[494,488,542],[595,494,542],[593,595,542],[376,488,438],[382,376,438],[494,382,438],[488,494,438],[494,595,552],[500,494,552],[607,500,552],[595,607,552],[382,494,451],[403,382,451],[500,403,451],[494,500,451],[708,909,804],[718,708,804],[907,718,804],[909,907,804],[607,708,665],[619,607,665],[718,619,665],[708,718,665],[500,607,568],[532,500,568],[619,532,568],[607,619,568],[403,500,471],[449,403,471],[532,449,471],[500,532,471],[312,376,340],[318,312,340],[382,318,340],[376,382,340],[274,312,300],[285,274,300],[318,285,300],[312,318,300],[318,382,350],[327,318,350],[403,327,350],[382,403,350],[285,318,306],[295,285,306],[327,295,306],[318,327,306],[243,274,264],[250,243,264],[285,250,264],[274,285,264],[232,243,239],[237,232,239],[250,237,239],[243,250,239],[250,285,272],[266,250,272],[295,266,272],[285,295,272],[237,250,254],[255,237,254],[266,255,254],[250,266,254],[327,403,378],[371,327,378],[449,371,378],[403,449,378],[295,327,324],[322,295,324],[371,322,324],[327,371,324],[266,295,298],[304,266,298],[322,304,298],[295,322,298],[255,266,287],[296,255,287],[304,296,287],[266,304,287],[718,907,820],[733,718,820],[905,733,820],[907,905,820],[619,718,673],[635,619,673],[733,635,673],[718,733,673],[532,619,587],[562,532,587],[635,562,587],[619,635,587],[449,532,518],[492,449,518],[562,492,518],[532,562,518],[733,905,829],[739,733,829],[903,739,829],[905,903,829],[635,733,683],[645,635,683],[739,645,683],[733,739,683],[562,635,609],[572,562,609],[645,572,609],[635,645,609],[492,562,538],[510,492,538],[572,510,538],[562,572,538],[371,449,430],[417,371,430],[492,417,430],[449,492,430],[322,371,367],[369,322,367],[417,369,367],[371,417,367],[304,322,333],[338,304,333],[369,338,333],[322,369,333],[296,304,316],[334,296,316],[338,334,316],[304,338,316],[417,492,469],[445,417,469],[510,445,469],[492,510,469],[369,417,409],[390,369,409],[445,390,409],[417,445,409],[338,369,363],[355,338,363],[390,355,363],[369,390,363],[334,338,346],[351,334,346],[355,351,346],[338,355,346],[242,232,238],[249,242,238],[237,249,238],[232,237,238],[273,242,263],[284,273,263],[249,284,263],[242,249,263],[249,237,253],[265,249,253],[255,265,253],[237,255,253],[284,249,271],[294,284,271],[265,294,271],[249,265,271],[311,273,299],[317,311,299],[284,317,299],[273,284,299],[375,311,339],[381,375,339],[317,381,339],[311,317,339],[317,284,305],[326,317,305],[294,326,305],[284,294,305],[381,317,349],[402,381,349],[326,402,349],[317,326,349],[265,255,286],[303,265,286],[296,303,286],[255,296,286],[294,265,297],[321,294,297],[303,321,297],[265,303,297],[326,294,323],[370,326,323],[321,370,323],[294,321,323],[402,326,377],[448,402,377],[370,448,377],[326,370,377],[487,375,437],[493,487,437],[381,493,437],[375,381,437],[592,487,541],[594,592,541],[493,594,541],[487,493,541],[493,381,450],[499,493,450],[402,499,450],[381,402,450],[594,493,551],[606,594,551],[499,606,551],[493,499,551],[699,592,640],[703,699,640],[594,703,640],[592,594,640],[912,699,787],[910,912,787],[703,910,787],[699,703,787],[703,594,650],[707,703,650],[606,707,650],[594,606,650],[910,703,792],[908,910,792],[707,908,792],[703,707,792],[499,402,470],[531,499,470],[448,531,470],[402,448,470],[606,499,567],[618,606,567],[531,618,567],[499,531,567],[707,606,664],[719,707,664],[618,719,664],[606,618,664],[908,707,803],[906,908,803],[719,906,803],[707,719,803],[303,296,315],[337,303,315],[334,337,315],[296,334,315],[321,303,332],[368,321,332],[337,368,332],[303,337,332],[370,321,366],[416,370,366],[368,416,366],[321,368,366],[448,370,429],[491,448,429],[416,491,429],[370,416,429],[337,334,345],[354,337,345],[351,354,345],[334,351,345],[368,337,362],[389,368,362],[354,389,362],[337,354,362],[416,368,408],[444,416,408],[389,444,408],[368,389,408],[491,416,468],[509,491,468],[444,509,468],[416,444,468],[531,448,517],[561,531,517],[491,561,517],[448,491,517],[618,531,586],[634,618,586],[561,634,586],[531,561,586],[719,618,672],[732,719,672],[634,732,672],[618,634,672],[906,719,819],[904,906,819],[732,904,819],[719,732,819],[561,491,537],[571,561,537],[509,571,537],[491,509,537],[634,561,608],[644,634,608],[571,644,608],[561,571,608],[732,634,682],[738,732,682],[644,738,682],[634,644,682],[904,732,828],[902,904,828],[738,902,828],[732,738,828],[1154,912,1066],[1150,1154,1066],[910,1150,1066],[912,910,1066],[1261,1154,1213],[1259,1261,1213],[1150,1259,1213],[1154,1150,1213],[1150,910,1061],[1146,1150,1061],[908,1146,1061],[910,908,1061],[1259,1150,1203],[1247,1259,1203],[1146,1247,1203],[1150,1146,1203],[1366,1261,1312],[1360,1366,1312],[1259,1360,1312],[1261,1259,1312],[1478,1366,1416],[1472,1478,1416],[1360,1472,1416],[1366,1360,1416],[1360,1259,1302],[1354,1360,1302],[1247,1354,1302],[1259,1247,1302],[1472,1360,1403],[1451,1472,1403],[1354,1451,1403],[1360,1354,1403],[1146,908,1050],[1136,1146,1050],[906,1136,1050],[908,906,1050],[1247,1146,1189],[1235,1247,1189],[1136,1235,1189],[1146,1136,1189],[1354,1247,1286],[1322,1354,1286],[1235,1322,1286],[1247,1235,1286],[1451,1354,1383],[1405,1451,1383],[1322,1405,1383],[1354,1322,1383],[1534,1478,1511],[1528,1534,1511],[1472,1528,1511],[1478,1472,1511],[1588,1534,1562],[1583,1588,1562],[1528,1583,1562],[1534,1528,1562],[1528,1472,1503],[1520,1528,1503],[1451,1520,1503],[1472,1451,1503],[1583,1528,1556],[1567,1583,1556],[1520,1567,1556],[1528,1520,1556],[1625,1588,1606],[1620,1625,1606],[1583,1620,1606],[1588,1583,1606],[1633,1625,1627],[1629,1633,1627],[1620,1629,1627],[1625,1620,1627],[1620,1583,1592],[1602,1620,1592],[1567,1602,1592],[1583,1567,1592],[1629,1620,1615],[1612,1629,1615],[1602,1612,1615],[1620,1602,1615],[1520,1451,1476],[1483,1520,1476],[1405,1483,1476],[1451,1405,1476],[1567,1520,1522],[1524,1567,1522],[1483,1524,1522],[1520,1483,1522],[1602,1567,1564],[1558,1602,1564],[1524,1558,1564],[1567,1524,1564],[1612,1602,1579],[1566,1612,1579],[1558,1566,1579],[1602,1558,1579],[1136,906,1034],[1121,1136,1034],[904,1121,1034],[906,904,1034],[1235,1136,1181],[1219,1235,1181],[1121,1219,1181],[1136,1121,1181],[1322,1235,1267],[1292,1322,1267],[1219,1292,1267],[1235,1219,1267],[1405,1322,1336],[1362,1405,1336],[1292,1362,1336],[1322,1292,1336],[1121,904,1025],[1113,1121,1025],[902,1113,1025],[904,902,1025],[1219,1121,1171],[1207,1219,1171],[1113,1207,1171],[1121,1113,1171],[1292,1219,1245],[1280,1292,1245],[1207,1280,1245],[1219,1207,1245],[1362,1292,1316],[1342,1362,1316],[1280,1342,1316],[1292,1280,1316],[1483,1405,1424],[1437,1483,1424],[1362,1437,1424],[1405,1362,1424],[1524,1483,1487],[1485,1524,1487],[1437,1485,1487],[1483,1437,1487],[1558,1524,1516],[1513,1558,1516],[1485,1513,1516],[1524,1485,1516],[1566,1558,1530],[1515,1566,1530],[1513,1515,1530],[1558,1513,1530],[1437,1362,1385],[1407,1437,1385],[1342,1407,1385],[1362,1342,1385],[1485,1437,1445],[1462,1485,1445],[1407,1462,1445],[1437,1407,1445],[1513,1485,1491],[1497,1513,1491],[1462,1497,1491],[1485,1462,1491],[1515,1513,1505],[1501,1515,1505],[1497,1501,1505],[1513,1497,1505],[331,325,277],[228,331,277],[231,228,277],[325,231,277],[336,331,279],[224,336,279],[228,224,279],[331,228,279],[228,231,200],[173,228,200],[178,173,200],[231,178,200],[224,228,198],[167,224,198],[173,167,198],[228,173,198],[348,336,281],[222,348,281],[224,222,281],[336,224,281],[352,348,283],[210,352,283],[222,210,283],[348,222,283],[222,224,193],[150,222,193],[167,150,193],[224,167,193],[210,222,183],[142,210,183],[150,142,183],[222,150,183],[177,178,165],[136,177,165],[141,136,165],[178,141,165],[173,177,162],[127,173,162],[136,127,162],[177,136,162],[167,173,158],[131,167,158],[152,131,158],[173,152,158],[131,152,129],[82,131,129],[127,82,129],[152,127,129],[136,141,134],[114,136,134],[121,114,134],[141,121,134],[127,136,118],[93,127,118],[114,93,118],[136,114,118],[114,121,112],[101,114,112],[108,101,112],[121,108,112],[93,114,95],[90,93,95],[101,90,95],[114,101,95],[82,127,88],[59,82,88],[93,59,88],[127,93,88],[59,93,74],[52,59,74],[90,52,74],[93,90,74],[150,167,140],[86,150,140],[131,86,140],[167,131,140],[86,131,84],[50,86,84],[82,50,84],[131,82,84],[148,150,120],[76,148,120],[86,76,120],[150,86,120],[142,148,110],[72,142,110],[76,72,110],[148,76,110],[76,86,65],[36,76,65],[50,36,65],[86,50,65],[72,76,57],[34,72,57],[36,34,57],[76,36,57],[50,82,55],[27,50,55],[59,27,55],[82,59,55],[27,59,42],[18,27,42],[52,18,42],[59,52,42],[36,50,33],[12,36,33],[27,12,33],[50,27,33],[34,36,24],[8,34,24],[12,8,24],[36,12,24],[12,27,16],[2,12,16],[18,2,16],[27,18,16],[8,12,7],[0,8,7],[2,0,7],[12,2,7],[347,352,282],[221,347,282],[210,221,282],[352,210,282],[335,347,280],[223,335,280],[221,223,280],[347,221,280],[221,210,182],[149,221,182],[142,149,182],[210,142,182],[223,221,192],[166,223,192],[149,166,192],[221,149,192],[330,335,278],[227,330,278],[223,227,278],[335,223,278],[325,330,276],[231,325,276],[227,231,276],[330,227,276],[227,223,197],[172,227,197],[166,172,197],[223,166,197],[231,227,199],[178,231,199],[172,178,199],[227,172,199],[147,142,109],[75,147,109],[72,75,109],[142,72,109],[149,147,119],[85,149,119],[75,85,119],[147,75,119],[75,72,56],[35,75,56],[34,35,56],[72,34,56],[85,75,64],[49,85,64],[35,49,64],[75,35,64],[166,149,139],[130,166,139],[85,130,139],[149,85,139],[130,85,83],[81,130,83],[49,81,83],[85,49,83],[35,34,23],[11,35,23],[8,11,23],[34,8,23],[49,35,32],[26,49,32],[11,26,32],[35,11,32],[11,8,6],[1,11,6],[0,1,6],[8,0,6],[26,11,15],[17,26,15],[1,17,15],[11,1,15],[81,49,54],[58,81,54],[26,58,54],[49,26,54],[58,26,41],[51,58,41],[17,51,41],[26,17,41],[172,166,157],[151,172,157],[130,151,157],[166,130,157],[151,130,128],[126,151,128],[81,126,128],[130,81,128],[176,172,161],[135,176,161],[126,135,161],[172,126,161],[178,176,164],[141,178,164],[135,141,164],[176,135,164],[126,81,87],[92,126,87],[58,92,87],[81,58,87],[92,58,73],[89,92,73],[51,89,73],[58,51,73],[135,126,117],[113,135,117],[92,113,117],[126,92,117],[141,135,133],[121,141,133],[113,121,133],[135,113,133],[113,92,94],[100,113,94],[89,100,94],[92,89,94],[121,113,111],[108,121,111],[100,108,111],[113,100,111],[101,108,116],[125,101,116],[132,125,116],[108,132,116],[90,101,103],[105,90,103],[125,105,103],[101,125,103],[52,90,78],[71,52,78],[105,71,78],[90,105,78],[125,132,146],[156,125,146],[163,156,146],[132,163,146],[105,125,144],[154,105,144],[156,154,144],[125,156,144],[71,105,123],[138,71,123],[154,138,123],[105,154,123],[18,52,38],[22,18,38],[63,22,38],[52,63,38],[22,63,48],[40,22,48],[71,40,48],[63,71,48],[2,18,14],[10,2,14],[22,10,14],[18,22,14],[0,2,4],[5,0,4],[10,5,4],[2,10,4],[10,22,29],[31,10,29],[40,31,29],[22,40,29],[5,10,20],[25,5,20],[31,25,20],[10,31,20],[40,71,69],[67,40,69],[97,67,69],[71,97,69],[67,97,99],[107,67,99],[138,107,99],[97,138,99],[31,40,46],[61,31,46],[67,61,46],[40,67,46],[25,31,44],[53,25,44],[61,53,44],[31,61,44],[53,67,80],[91,53,80],[107,91,80],[67,107,80],[154,163,175],[195,154,175],[196,195,175],[163,196,175],[138,154,171],[189,138,171],[195,189,171],[154,195,171],[195,196,202],[207,195,202],[203,207,202],[196,203,202],[205,203,226],[234,205,226],[232,234,226],[203,232,226],[207,205,230],[236,207,230],[234,236,230],[205,234,230],[191,195,209],[241,191,209],[236,241,209],[195,236,209],[189,191,212],[248,189,212],[241,248,212],[191,241,212],[107,138,169],[185,107,169],[189,185,169],[138,189,169],[91,107,160],[179,91,160],[185,179,160],[107,185,160],[187,189,214],[252,187,214],[248,252,214],[189,248,214],[185,187,216],[259,185,216],[252,259,216],[187,252,216],[181,185,218],[261,181,218],[259,261,218],[185,259,218],[179,181,220],[262,179,220],[261,262,220],[181,261,220],[1,0,3],[9,1,3],[5,9,3],[0,5,3],[17,1,13],[21,17,13],[9,21,13],[1,9,13],[9,5,19],[30,9,19],[25,30,19],[5,25,19],[21,9,28],[39,21,28],[30,39,28],[9,30,28],[51,17,37],[62,51,37],[21,62,37],[17,21,37],[62,21,47],[70,62,47],[39,70,47],[21,39,47],[30,25,43],[60,30,43],[53,60,43],[25,53,43],[39,30,45],[66,39,45],[60,66,45],[30,60,45],[66,53,79],[106,66,79],[91,106,79],[53,91,79],[70,39,68],[96,70,68],[66,96,68],[39,66,68],[96,66,98],[137,96,98],[106,137,98],[66,106,98],[89,51,77],[104,89,77],[70,104,77],[51,70,77],[100,89,102],[124,100,102],[104,124,102],[89,104,102],[108,100,115],[132,108,115],[124,132,115],[100,124,115],[104,70,122],[153,104,122],[137,153,122],[70,137,122],[124,104,143],[155,124,143],[153,155,143],[104,153,143],[132,124,145],[163,132,145],[155,163,145],[124,155,145],[106,91,159],[184,106,159],[179,184,159],[91,179,159],[137,106,168],[188,137,168],[184,188,168],[106,184,168],[180,179,219],[260,180,219],[262,260,219],[179,262,219],[184,180,217],[258,184,217],[260,258,217],[180,260,217],[186,184,215],[251,186,215],[258,251,215],[184,258,215],[188,186,213],[247,188,213],[251,247,213],[186,251,213],[153,137,170],[194,153,170],[188,194,170],[137,188,170],[163,153,174],[196,163,174],[194,196,174],[153,194,174],[190,188,211],[240,190,211],[247,240,211],[188,247,211],[194,190,208],[235,194,208],[240,235,208],[190,240,208],[196,194,201],[203,196,201],[206,203,201],[194,206,201],[204,206,229],[233,204,229],[235,233,229],[206,235,229],[203,204,225],[232,203,225],[233,232,225],[204,233,225],[1552,1553,1587],[1632,1552,1587],[1630,1632,1587],[1553,1630,1587],[1550,1552,1591],[1637,1550,1591],[1632,1637,1591],[1552,1632,1591],[1632,1630,1647],[1665,1632,1647],[1663,1665,1647],[1630,1663,1647],[1637,1632,1651],[1673,1637,1651],[1665,1673,1651],[1632,1665,1651],[1548,1550,1595],[1641,1548,1595],[1637,1641,1595],[1550,1637,1595],[1546,1548,1597],[1645,1546,1597],[1641,1645,1597],[1548,1641,1597],[1641,1637,1657],[1679,1641,1657],[1673,1679,1657],[1637,1673,1657],[1645,1641,1660],[1688,1645,1660],[1679,1688,1660],[1641,1679,1660],[1665,1663,1677],[1695,1665,1677],[1693,1695,1677],[1663,1693,1677],[1673,1665,1683],[1705,1673,1683],[1695,1705,1683],[1665,1695,1683],[1695,1693,1707],[1718,1695,1707],[1712,1718,1707],[1693,1712,1707],[1705,1695,1709],[1725,1705,1709],[1718,1725,1709],[1695,1718,1709],[1679,1673,1692],[1714,1679,1692],[1705,1714,1692],[1673,1705,1692],[1688,1679,1703],[1729,1688,1703],[1714,1729,1703],[1679,1714,1703],[1714,1705,1723],[1739,1714,1723],[1725,1739,1723],[1705,1725,1723],[1729,1714,1733],[1752,1729,1733],[1739,1752,1733],[1714,1739,1733],[1544,1546,1605],[1649,1544,1605],[1645,1649,1605],[1546,1645,1605],[1542,1544,1576],[1614,1542,1576],[1609,1614,1576],[1544,1609,1576],[1614,1609,1635],[1653,1614,1635],[1649,1653,1635],[1609,1649,1635],[1649,1645,1669],[1699,1649,1669],[1688,1699,1669],[1645,1688,1669],[1653,1649,1662],[1681,1653,1662],[1675,1681,1662],[1649,1675,1662],[1681,1675,1690],[1711,1681,1690],[1699,1711,1690],[1675,1699,1690],[1540,1542,1578],[1618,1540,1578],[1614,1618,1578],[1542,1614,1578],[1618,1614,1639],[1655,1618,1639],[1653,1655,1639],[1614,1653,1639],[1538,1540,1582],[1619,1538,1582],[1618,1619,1582],[1540,1618,1582],[1619,1618,1643],[1658,1619,1643],[1655,1658,1643],[1618,1655,1643],[1655,1653,1667],[1685,1655,1667],[1681,1685,1667],[1653,1681,1667],[1685,1681,1697],[1720,1685,1697],[1711,1720,1697],[1681,1711,1697],[1658,1655,1671],[1686,1658,1671],[1685,1686,1671],[1655,1685,1671],[1686,1685,1701],[1721,1686,1701],[1720,1721,1701],[1685,1720,1701],[1699,1688,1716],[1743,1699,1716],[1729,1743,1716],[1688,1729,1716],[1711,1699,1727],[1754,1711,1727],[1743,1754,1727],[1699,1743,1727],[1743,1729,1748],[1770,1743,1748],[1752,1770,1748],[1729,1752,1748],[1754,1743,1760],[1786,1754,1760],[1770,1786,1760],[1743,1770,1760],[1720,1711,1735],[1762,1720,1735],[1754,1762,1735],[1711,1754,1735],[1721,1720,1741],[1768,1721,1741],[1762,1768,1741],[1720,1762,1741],[1762,1754,1776],[1796,1762,1776],[1786,1796,1776],[1754,1786,1776],[1768,1762,1782],[1801,1768,1782],[1796,1801,1782],[1762,1796,1782],[1718,1712,1731],[1746,1718,1731],[1744,1746,1731],[1712,1744,1731],[1725,1718,1737],[1758,1725,1737],[1746,1758,1737],[1718,1746,1737],[1739,1725,1750],[1780,1739,1750],[1758,1780,1750],[1725,1758,1750],[1752,1739,1765],[1800,1752,1765],[1780,1800,1765],[1739,1780,1765],[1746,1744,1756],[1772,1746,1756],[1763,1772,1756],[1744,1763,1756],[1758,1746,1767],[1788,1758,1767],[1772,1788,1767],[1746,1772,1767],[1772,1763,1790],[1814,1772,1790],[1806,1814,1790],[1763,1806,1790],[1788,1772,1803],[1832,1788,1803],[1814,1832,1803],[1772,1814,1803],[1780,1758,1784],[1816,1780,1784],[1788,1816,1784],[1758,1788,1784],[1800,1780,1808],[1839,1800,1808],[1816,1839,1808],[1780,1816,1808],[1839,1788,1845],[1898,1839,1845],[1832,1898,1845],[1788,1832,1845],[1770,1752,1774],[1794,1770,1774],[1778,1794,1774],[1752,1778,1774],[1786,1770,1792],[1810,1786,1792],[1794,1810,1792],[1770,1794,1792],[1794,1778,1798],[1822,1794,1798],[1800,1822,1798],[1778,1800,1798],[1810,1794,1818],[1843,1810,1818],[1822,1843,1818],[1794,1822,1818],[1796,1786,1805],[1824,1796,1805],[1810,1824,1805],[1786,1810,1805],[1801,1796,1812],[1825,1801,1812],[1824,1825,1812],[1796,1824,1812],[1824,1810,1830],[1861,1824,1830],[1843,1861,1830],[1810,1843,1830],[1825,1824,1841],[1870,1825,1841],[1861,1870,1841],[1824,1861,1841],[1822,1800,1828],[1874,1822,1828],[1839,1874,1828],[1800,1839,1828],[1843,1822,1859],[1892,1843,1859],[1874,1892,1859],[1822,1874,1859],[1892,1839,1886],[1911,1892,1886],[1878,1911,1886],[1839,1878,1886],[1911,1878,1909],[1935,1911,1909],[1898,1935,1909],[1878,1898,1909],[1861,1843,1880],[1902,1861,1880],[1892,1902,1880],[1843,1892,1880],[1870,1861,1890],[1905,1870,1890],[1902,1905,1890],[1861,1902,1890],[1902,1892,1907],[1923,1902,1907],[1911,1923,1907],[1892,1911,1907],[1923,1911,1930],[1949,1923,1930],[1935,1949,1930],[1911,1935,1930],[1905,1902,1913],[1926,1905,1913],[1923,1926,1913],[1902,1923,1913],[1926,1923,1939],[1952,1926,1939],[1949,1952,1939],[1923,1949,1939],[1539,1538,1581],[1617,1539,1581],[1619,1617,1581],[1538,1619,1581],[1617,1619,1642],[1654,1617,1642],[1658,1654,1642],[1619,1658,1642],[1541,1539,1577],[1613,1541,1577],[1617,1613,1577],[1539,1617,1577],[1613,1617,1638],[1652,1613,1638],[1654,1652,1638],[1617,1654,1638],[1654,1658,1670],[1684,1654,1670],[1686,1684,1670],[1658,1686,1670],[1684,1686,1700],[1719,1684,1700],[1721,1719,1700],[1686,1721,1700],[1652,1654,1666],[1680,1652,1666],[1684,1680,1666],[1654,1684,1666],[1680,1684,1696],[1710,1680,1696],[1719,1710,1696],[1684,1719,1696],[1543,1541,1575],[1608,1543,1575],[1613,1608,1575],[1541,1613,1575],[1608,1613,1634],[1648,1608,1634],[1652,1648,1634],[1613,1652,1634],[1545,1543,1604],[1644,1545,1604],[1648,1644,1604],[1543,1648,1604],[1648,1652,1661],[1674,1648,1661],[1680,1674,1661],[1652,1680,1661],[1674,1680,1689],[1698,1674,1689],[1710,1698,1689],[1680,1710,1689],[1644,1648,1668],[1687,1644,1668],[1698,1687,1668],[1648,1698,1668],[1719,1721,1740],[1761,1719,1740],[1768,1761,1740],[1721,1768,1740],[1710,1719,1734],[1753,1710,1734],[1761,1753,1734],[1719,1761,1734],[1761,1768,1781],[1795,1761,1781],[1801,1795,1781],[1768,1801,1781],[1753,1761,1775],[1785,1753,1775],[1795,1785,1775],[1761,1795,1775],[1698,1710,1726],[1742,1698,1726],[1753,1742,1726],[1710,1753,1726],[1687,1698,1715],[1728,1687,1715],[1742,1728,1715],[1698,1742,1715],[1742,1753,1759],[1769,1742,1759],[1785,1769,1759],[1753,1785,1759],[1728,1742,1747],[1751,1728,1747],[1769,1751,1747],[1742,1769,1747],[1547,1545,1596],[1640,1547,1596],[1644,1640,1596],[1545,1644,1596],[1549,1547,1594],[1636,1549,1594],[1640,1636,1594],[1547,1640,1594],[1640,1644,1659],[1678,1640,1659],[1687,1678,1659],[1644,1687,1659],[1636,1640,1656],[1672,1636,1656],[1678,1672,1656],[1640,1678,1656],[1551,1549,1590],[1631,1551,1590],[1636,1631,1590],[1549,1636,1590],[1553,1551,1586],[1630,1553,1586],[1631,1630,1586],[1551,1631,1586],[1631,1636,1650],[1664,1631,1650],[1672,1664,1650],[1636,1672,1650],[1630,1631,1646],[1663,1630,1646],[1664,1663,1646],[1631,1664,1646],[1678,1687,1702],[1713,1678,1702],[1728,1713,1702],[1687,1728,1702],[1672,1678,1691],[1704,1672,1691],[1713,1704,1691],[1678,1713,1691],[1713,1728,1732],[1738,1713,1732],[1751,1738,1732],[1728,1751,1732],[1704,1713,1722],[1724,1704,1722],[1738,1724,1722],[1713,1738,1722],[1664,1672,1682],[1694,1664,1682],[1704,1694,1682],[1672,1704,1682],[1663,1664,1676],[1693,1663,1676],[1694,1693,1676],[1664,1694,1676],[1694,1704,1708],[1717,1694,1708],[1724,1717,1708],[1704,1724,1708],[1693,1694,1706],[1712,1693,1706],[1717,1712,1706],[1694,1717,1706],[1795,1801,1811],[1823,1795,1811],[1825,1823,1811],[1801,1825,1811],[1785,1795,1804],[1809,1785,1804],[1823,1809,1804],[1795,1823,1804],[1823,1825,1840],[1860,1823,1840],[1870,1860,1840],[1825,1870,1840],[1809,1823,1829],[1842,1809,1829],[1860,1842,1829],[1823,1860,1829],[1769,1785,1791],[1793,1769,1791],[1809,1793,1791],[1785,1809,1791],[1751,1769,1773],[1777,1751,1773],[1793,1777,1773],[1769,1793,1773],[1793,1809,1817],[1821,1793,1817],[1842,1821,1817],[1809,1842,1817],[1777,1793,1797],[1799,1777,1797],[1821,1799,1797],[1793,1821,1797],[1860,1870,1889],[1901,1860,1889],[1905,1901,1889],[1870,1905,1889],[1842,1860,1879],[1891,1842,1879],[1901,1891,1879],[1860,1901,1879],[1901,1905,1912],[1922,1901,1912],[1926,1922,1912],[1905,1926,1912],[1922,1926,1938],[1948,1922,1938],[1952,1948,1938],[1926,1952,1938],[1891,1901,1906],[1910,1891,1906],[1922,1910,1906],[1901,1922,1906],[1910,1922,1929],[1934,1910,1929],[1948,1934,1929],[1922,1948,1929],[1821,1842,1858],[1873,1821,1858],[1891,1873,1858],[1842,1891,1858],[1799,1821,1827],[1838,1799,1827],[1873,1838,1827],[1821,1873,1827],[1838,1891,1885],[1877,1838,1885],[1910,1877,1885],[1891,1910,1885],[1877,1910,1908],[1895,1877,1908],[1934,1895,1908],[1910,1934,1908],[1738,1751,1764],[1779,1738,1764],[1799,1779,1764],[1751,1799,1764],[1724,1738,1749],[1757,1724,1749],[1779,1757,1749],[1738,1779,1749],[1717,1724,1736],[1745,1717,1736],[1757,1745,1736],[1724,1757,1736],[1712,1717,1730],[1744,1712,1730],[1745,1744,1730],[1717,1745,1730],[1779,1799,1807],[1815,1779,1807],[1838,1815,1807],[1799,1838,1807],[1757,1779,1783],[1787,1757,1783],[1815,1787,1783],[1779,1815,1783],[1787,1838,1844],[1831,1787,1844],[1895,1831,1844],[1838,1895,1844],[1745,1757,1766],[1771,1745,1766],[1787,1771,1766],[1757,1787,1766],[1744,1745,1755],[1763,1744,1755],[1771,1763,1755],[1745,1771,1755],[1771,1787,1802],[1813,1771,1802],[1831,1813,1802],[1787,1831,1802],[1763,1771,1789],[1806,1763,1789],[1813,1806,1789],[1771,1813,1789],[1814,1806,1820],[1836,1814,1820],[1826,1836,1820],[1806,1826,1820],[1832,1814,1834],[1872,1832,1834],[1836,1872,1834],[1814,1836,1834],[1898,1832,1888],[1915,1898,1888],[1872,1915,1888],[1832,1872,1888],[1836,1826,1847],[1857,1836,1847],[1850,1857,1847],[1826,1850,1847],[1872,1836,1863],[1882,1872,1863],[1857,1882,1863],[1836,1857,1863],[1915,1872,1900],[1919,1915,1900],[1882,1919,1900],[1872,1882,1900],[1935,1898,1928],[1954,1935,1928],[1915,1954,1928],[1898,1915,1928],[1949,1935,1951],[1969,1949,1951],[1954,1969,1951],[1935,1954,1951],[1952,1949,1962],[1974,1952,1962],[1969,1974,1962],[1949,1969,1962],[1954,1915,1941],[1958,1954,1941],[1919,1958,1941],[1915,1919,1941],[1969,1954,1965],[1971,1969,1965],[1958,1971,1965],[1954,1958,1965],[1974,1969,1973],[1975,1974,1973],[1971,1975,1973],[1969,1971,1973],[1857,1850,1855],[1867,1857,1855],[1853,1867,1855],[1850,1853,1855],[1882,1857,1876],[1884,1882,1876],[1867,1884,1876],[1857,1867,1876],[1919,1882,1904],[1917,1919,1904],[1884,1917,1904],[1882,1884,1904],[1867,1853,1852],[1849,1867,1852],[1837,1849,1852],[1853,1837,1852],[1884,1867,1869],[1865,1884,1869],[1849,1865,1869],[1867,1849,1869],[1917,1884,1894],[1897,1917,1894],[1865,1897,1894],[1884,1865,1894],[1958,1919,1937],[1947,1958,1937],[1917,1947,1937],[1919,1917,1937],[1971,1958,1960],[1956,1971,1960],[1947,1956,1960],[1958,1947,1960],[1975,1971,1967],[1963,1975,1967],[1956,1963,1967],[1971,1956,1967],[1947,1917,1921],[1925,1947,1921],[1897,1925,1921],[1917,1897,1921],[1956,1947,1943],[1932,1956,1943],[1925,1932,1943],[1947,1925,1943],[1963,1956,1945],[1933,1963,1945],[1932,1933,1945],[1956,1932,1945],[1948,1952,1961],[1968,1948,1961],[1974,1968,1961],[1952,1974,1961],[1934,1948,1950],[1953,1934,1950],[1968,1953,1950],[1948,1968,1950],[1895,1934,1927],[1914,1895,1927],[1953,1914,1927],[1934,1953,1927],[1968,1974,1972],[1970,1968,1972],[1975,1970,1972],[1974,1975,1972],[1953,1968,1964],[1957,1953,1964],[1970,1957,1964],[1968,1970,1964],[1914,1953,1940],[1918,1914,1940],[1957,1918,1940],[1953,1957,1940],[1831,1895,1887],[1871,1831,1887],[1914,1871,1887],[1895,1914,1887],[1813,1831,1833],[1835,1813,1833],[1871,1835,1833],[1831,1871,1833],[1806,1813,1819],[1826,1806,1819],[1835,1826,1819],[1813,1835,1819],[1871,1914,1899],[1881,1871,1899],[1918,1881,1899],[1914,1918,1899],[1835,1871,1862],[1856,1835,1862],[1881,1856,1862],[1871,1881,1862],[1826,1835,1846],[1850,1826,1846],[1856,1850,1846],[1835,1856,1846],[1970,1975,1966],[1955,1970,1966],[1963,1955,1966],[1975,1963,1966],[1957,1970,1959],[1946,1957,1959],[1955,1946,1959],[1970,1955,1959],[1918,1957,1936],[1916,1918,1936],[1946,1916,1936],[1957,1946,1936],[1955,1963,1944],[1931,1955,1944],[1933,1931,1944],[1963,1933,1944],[1946,1955,1942],[1924,1946,1942],[1931,1924,1942],[1955,1931,1942],[1916,1946,1920],[1896,1916,1920],[1924,1896,1920],[1946,1924,1920],[1881,1918,1903],[1883,1881,1903],[1916,1883,1903],[1918,1916,1903],[1856,1881,1875],[1866,1856,1875],[1883,1866,1875],[1881,1883,1875],[1850,1856,1854],[1853,1850,1854],[1866,1853,1854],[1856,1866,1854],[1883,1916,1893],[1864,1883,1893],[1896,1864,1893],[1916,1896,1893],[1866,1883,1868],[1848,1866,1868],[1864,1848,1868],[1883,1864,1868],[1853,1866,1851],[1837,1853,1851],[1848,1837,1851],[1866,1848,1851],[1069,952,992],[1072,1069,992],[952,1072,992],[1069,1072,1094],[1118,1069,1094],[1134,1118,1094],[1072,1134,1094],[1030,952,984],[1069,1030,984],[952,1069,984],[1030,1069,1076],[1080,1030,1076],[1118,1080,1076],[1069,1118,1076],[1118,1134,1133],[1131,1118,1133],[1139,1131,1133],[1134,1139,1133],[1131,1139,1129],[1110,1131,1129],[1127,1110,1129],[1139,1127,1129],[1080,1118,1104],[1088,1080,1104],[1131,1088,1104],[1118,1131,1104],[1088,1131,1096],[1074,1088,1096],[1110,1074,1096],[1131,1110,1096],[980,952,964],[1030,980,964],[952,1030,964],[980,1030,1028],[1002,980,1028],[1080,1002,1028],[1030,1080,1028],[951,952,954],[980,951,954],[952,980,954],[951,980,962],[949,951,962],[1002,949,962],[980,1002,962],[1002,1080,1059],[1012,1002,1059],[1088,1012,1059],[1080,1088,1059],[1012,1088,1053],[998,1012,1053],[1074,998,1053],[1088,1074,1053],[949,1002,974],[947,949,974],[1012,947,974],[1002,1012,974],[947,1012,972],[945,947,972],[998,945,972],[1012,998,972],[1110,1127,1082],[1047,1110,1082],[1060,1047,1082],[1127,1060,1082],[1074,1110,1071],[1004,1074,1071],[1047,1004,1071],[1110,1047,1071],[1047,1060,1039],[1024,1047,1039],[1031,1024,1039],[1060,1031,1039],[1024,1031,1041],[1049,1024,1041],[1063,1049,1041],[1031,1063,1041],[1004,1047,1018],[994,1004,1018],[1024,994,1018],[1047,1024,1018],[994,1024,1020],[1010,994,1020],[1049,1010,1020],[1024,1049,1020],[998,1074,1014],[976,998,1014],[1004,976,1014],[1074,1004,1014],[945,998,960],[943,945,960],[976,943,960],[998,976,960],[976,1004,986],[970,976,986],[994,970,986],[1004,994,986],[970,994,990],[978,970,990],[1010,978,990],[994,1010,990],[943,976,956],[941,943,956],[970,941,956],[976,970,956],[941,970,958],[939,941,958],[978,939,958],[970,978,958],[875,952,901],[951,875,901],[952,951,901],[875,951,893],[853,875,893],[949,853,893],[951,949,893],[825,952,891],[875,825,891],[952,875,891],[825,875,827],[775,825,827],[853,775,827],[875,853,827],[853,949,881],[843,853,881],[947,843,881],[949,947,881],[843,947,883],[857,843,883],[945,857,883],[947,945,883],[775,853,796],[767,775,796],[843,767,796],[853,843,796],[767,843,802],[781,767,802],[857,781,802],[843,857,802],[786,952,871],[825,786,871],[952,825,871],[786,825,779],[737,786,779],[775,737,779],[825,775,779],[782,952,863],[786,782,863],[952,786,863],[782,786,761],[720,782,761],[737,720,761],[786,737,761],[737,775,751],[724,737,751],[767,724,751],[775,767,751],[724,767,759],[745,724,759],[781,745,759],[767,781,759],[720,737,722],[715,720,722],[724,715,722],[737,724,722],[715,724,726],[727,715,726],[745,727,726],[724,745,726],[857,945,895],[879,857,895],[943,879,895],[945,943,895],[781,857,841],[851,781,841],[879,851,841],[857,879,841],[879,943,899],[885,879,899],[941,885,899],[943,941,899],[885,941,897],[877,885,897],[939,877,897],[941,939,897],[851,879,869],[861,851,869],[885,861,869],[879,885,869],[861,885,865],[845,861,865],[877,845,865],[885,877,865],[745,781,784],[808,745,784],[851,808,784],[781,851,784],[727,745,773],[794,727,773],[808,794,773],[745,808,773],[808,851,837],[831,808,837],[861,831,837],[851,861,837],[831,861,835],[806,831,835],[845,806,835],[861,845,835],[794,808,816],[823,794,816],[831,823,816],[808,831,816],[823,831,814],[791,823,814],[806,791,814],[831,806,814],[785,952,862],[782,785,862],[952,782,862],[785,782,760],[736,785,760],[720,736,760],[782,720,760],[824,952,870],[785,824,870],[952,785,870],[824,785,778],[774,824,778],[736,774,778],[785,736,778],[736,720,721],[723,736,721],[715,723,721],[720,715,721],[723,715,725],[744,723,725],[727,744,725],[715,727,725],[774,736,750],[766,774,750],[723,766,750],[736,723,750],[766,723,758],[780,766,758],[744,780,758],[723,744,758],[874,952,890],[824,874,890],[952,824,890],[874,824,826],[852,874,826],[774,852,826],[824,774,826],[950,952,900],[874,950,900],[952,874,900],[950,874,892],[948,950,892],[852,948,892],[874,852,892],[852,774,795],[842,852,795],[766,842,795],[774,766,795],[842,766,801],[856,842,801],[780,856,801],[766,780,801],[948,852,880],[946,948,880],[842,946,880],[852,842,880],[946,842,882],[944,946,882],[856,944,882],[842,856,882],[744,727,772],[807,744,772],[794,807,772],[727,794,772],[780,744,783],[850,780,783],[807,850,783],[744,807,783],[807,794,815],[830,807,815],[823,830,815],[794,823,815],[830,823,813],[805,830,813],[791,805,813],[823,791,813],[850,807,836],[860,850,836],[830,860,836],[807,830,836],[860,830,834],[844,860,834],[805,844,834],[830,805,834],[856,780,840],[878,856,840],[850,878,840],[780,850,840],[944,856,894],[942,944,894],[878,942,894],[856,878,894],[878,850,868],[884,878,868],[860,884,868],[850,860,868],[884,860,864],[876,884,864],[844,876,864],[860,844,864],[942,878,898],[940,942,898],[884,940,898],[878,884,898],[940,884,896],[938,940,896],[876,938,896],[884,876,896],[979,952,953],[950,979,953],[952,950,953],[979,950,961],[1001,979,961],[948,1001,961],[950,948,961],[1029,952,963],[979,1029,963],[952,979,963],[1029,979,1027],[1079,1029,1027],[1001,1079,1027],[979,1001,1027],[1001,948,973],[1011,1001,973],[946,1011,973],[948,946,973],[1011,946,971],[997,1011,971],[944,997,971],[946,944,971],[1079,1001,1058],[1087,1079,1058],[1011,1087,1058],[1001,1011,1058],[1087,1011,1052],[1073,1087,1052],[997,1073,1052],[1011,997,1052],[1068,952,983],[1029,1068,983],[952,1029,983],[1068,1029,1075],[1117,1068,1075],[1079,1117,1075],[1029,1079,1075],[1072,952,991],[1068,1072,991],[952,1068,991],[1072,1068,1093],[1134,1072,1093],[1117,1134,1093],[1068,1117,1093],[1117,1079,1103],[1130,1117,1103],[1087,1130,1103],[1079,1087,1103],[1130,1087,1095],[1109,1130,1095],[1073,1109,1095],[1087,1073,1095],[1134,1117,1132],[1139,1134,1132],[1130,1139,1132],[1117,1130,1132],[1139,1130,1128],[1127,1139,1128],[1109,1127,1128],[1130,1109,1128],[997,944,959],[975,997,959],[942,975,959],[944,942,959],[1073,997,1013],[1003,1073,1013],[975,1003,1013],[997,975,1013],[975,942,955],[969,975,955],[940,969,955],[942,940,955],[969,940,957],[977,969,957],[938,977,957],[940,938,957],[1003,975,985],[993,1003,985],[969,993,985],[975,969,985],[993,969,989],[1009,993,989],[977,1009,989],[969,977,989],[1109,1073,1070],[1046,1109,1070],[1003,1046,1070],[1073,1003,1070],[1127,1109,1081],[1060,1127,1081],[1046,1060,1081],[1109,1046,1081],[1046,1003,1017],[1023,1046,1017],[993,1023,1017],[1003,993,1017],[1023,993,1019],[1048,1023,1019],[1009,1048,1019],[993,1009,1019],[1060,1046,1038],[1031,1060,1038],[1023,1031,1038],[1046,1023,1038],[1031,1023,1040],[1063,1031,1040],[1048,1063,1040],[1023,1048,1040],[1049,1063,1120],[1161,1049,1120],[1170,1161,1120],[1063,1170,1120],[1010,1049,1092],[1126,1010,1092],[1161,1126,1092],[1049,1161,1092],[1165,1170,1224],[1272,1165,1224],[1279,1272,1224],[1170,1279,1224],[1161,1165,1216],[1250,1161,1216],[1272,1250,1216],[1165,1272,1216],[1141,1161,1196],[1234,1141,1196],[1250,1234,1196],[1161,1250,1196],[1126,1141,1178],[1206,1126,1178],[1234,1206,1178],[1141,1234,1178],[978,1010,1045],[1043,978,1045],[1126,1043,1045],[1010,1126,1045],[939,978,966],[937,939,966],[1043,937,966],[978,1043,966],[1084,1126,1153],[1174,1084,1153],[1206,1174,1153],[1126,1206,1153],[1043,1084,1112],[1124,1043,1112],[1174,1124,1112],[1084,1174,1112],[982,1043,1055],[1033,982,1055],[1124,1033,1055],[1043,1124,1055],[937,982,968],[935,937,968],[1033,935,968],[982,1033,968],[1272,1279,1321],[1369,1272,1321],[1376,1369,1321],[1279,1376,1321],[1250,1272,1309],[1347,1250,1309],[1369,1347,1309],[1272,1369,1309],[1234,1250,1285],[1315,1234,1285],[1347,1315,1285],[1250,1347,1285],[1206,1234,1252],[1278,1206,1252],[1315,1278,1252],[1234,1315,1252],[1369,1376,1388],[1402,1369,1388],[1415,1402,1388],[1376,1415,1388],[1347,1369,1375],[1378,1347,1375],[1402,1378,1375],[1369,1402,1375],[1402,1415,1419],[1423,1402,1419],[1434,1423,1419],[1415,1434,1419],[1378,1402,1396],[1390,1378,1396],[1423,1390,1396],[1402,1423,1396],[1315,1347,1339],[1335,1315,1339],[1378,1335,1339],[1347,1378,1339],[1278,1315,1305],[1295,1278,1305],[1335,1295,1305],[1315,1335,1305],[1335,1378,1365],[1353,1335,1365],[1390,1353,1365],[1378,1390,1365],[1295,1335,1325],[1301,1295,1325],[1353,1301,1325],[1335,1353,1325],[1174,1206,1222],[1226,1174,1222],[1278,1226,1222],[1206,1278,1222],[1124,1174,1176],[1169,1124,1176],[1226,1169,1176],[1174,1226,1176],[1033,1124,1108],[1078,1033,1108],[1169,1078,1108],[1124,1169,1108],[935,1033,988],[931,935,988],[1078,931,988],[1033,1078,988],[1226,1278,1256],[1240,1226,1256],[1295,1240,1256],[1278,1295,1256],[1169,1226,1202],[1180,1169,1202],[1240,1180,1202],[1226,1240,1202],[1240,1295,1274],[1244,1240,1274],[1301,1244,1274],[1295,1301,1274],[1180,1240,1218],[1186,1180,1218],[1244,1186,1218],[1240,1244,1218],[1078,1169,1138],[1086,1078,1138],[1180,1086,1138],[1169,1180,1138],[931,1078,996],[925,931,996],[1086,925,996],[1078,1086,996],[1086,1180,1145],[1090,1086,1145],[1186,1090,1145],[1180,1186,1145],[925,1086,1000],[921,925,1000],[1090,921,1000],[1086,1090,1000],[877,939,889],[812,877,889],[937,812,889],[939,937,889],[845,877,810],[729,845,810],[812,729,810],[877,812,810],[873,937,887],[822,873,887],[935,822,887],[937,935,887],[812,873,800],[731,812,800],[822,731,800],[873,822,800],[771,812,743],[681,771,743],[731,681,743],[812,731,743],[729,771,702],[649,729,702],[681,649,702],[771,681,702],[806,845,763],[694,806,763],[729,694,763],[845,729,763],[791,806,735],[684,791,735],[694,684,735],[806,694,735],[714,729,677],[621,714,677],[649,621,677],[729,649,677],[694,714,659],[605,694,659],[621,605,659],[714,621,659],[690,694,639],[583,690,639],[605,583,639],[694,605,639],[684,690,631],[575,684,631],[583,575,631],[690,583,631],[822,935,867],[777,822,867],[931,777,867],[935,931,867],[731,822,747],[686,731,747],[777,686,747],[822,777,747],[681,731,679],[629,681,679],[686,629,679],[731,686,679],[649,681,633],[577,649,633],[629,577,633],[681,629,633],[777,931,859],[769,777,859],[925,769,859],[931,925,859],[686,777,717],[675,686,717],[769,675,717],[777,769,717],[769,925,855],[765,769,855],[921,765,855],[925,921,855],[675,769,710],[669,675,710],[765,669,710],[769,765,710],[629,686,653],[615,629,653],[675,615,653],[686,675,653],[577,629,599],[560,577,599],[615,560,599],[629,615,599],[615,675,637],[611,615,637],[669,611,637],[675,669,637],[560,615,581],[554,560,581],[611,554,581],[615,611,581],[621,649,603],[540,621,603],[577,540,603],[649,577,603],[605,621,570],[508,605,570],[540,508,570],[621,540,570],[583,605,546],[486,583,546],[508,486,546],[605,508,546],[575,583,534],[478,575,534],[486,478,534],[583,486,534],[540,577,550],[520,540,550],[560,520,550],[577,560,550],[508,540,516],[477,508,516],[520,477,516],[540,520,516],[520,560,530],[502,520,530],[554,502,530],[560,554,530],[477,520,490],[465,477,490],[502,465,490],[520,502,490],[486,508,480],[453,486,480],[477,453,480],[508,477,480],[478,486,467],[439,478,467],[453,439,467],[486,453,467],[453,477,459],[432,453,459],[465,432,459],[477,465,459],[439,453,436],[420,439,436],[432,420,436],[453,432,436],[805,791,734],[693,805,734],[684,693,734],[791,684,734],[844,805,762],[728,844,762],[693,728,762],[805,693,762],[689,684,630],[582,689,630],[575,582,630],[684,575,630],[693,689,638],[604,693,638],[582,604,638],[689,582,638],[713,693,658],[620,713,658],[604,620,658],[693,604,658],[728,713,676],[648,728,676],[620,648,676],[713,620,676],[876,844,809],[811,876,809],[728,811,809],[844,728,809],[938,876,888],[936,938,888],[811,936,888],[876,811,888],[770,728,701],[680,770,701],[648,680,701],[728,648,701],[811,770,742],[730,811,742],[680,730,742],[770,680,742],[872,811,799],[821,872,799],[730,821,799],[811,730,799],[936,872,886],[934,936,886],[821,934,886],[872,821,886],[582,575,533],[485,582,533],[478,485,533],[575,478,533],[604,582,545],[507,604,545],[485,507,545],[582,485,545],[620,604,569],[539,620,569],[507,539,569],[604,507,569],[648,620,602],[576,648,602],[539,576,602],[620,539,602],[485,478,466],[452,485,466],[439,452,466],[478,439,466],[507,485,479],[476,507,479],[452,476,479],[485,452,479],[452,439,435],[431,452,435],[420,431,435],[439,420,435],[476,452,458],[464,476,458],[431,464,458],[452,431,458],[539,507,515],[519,539,515],[476,519,515],[507,476,515],[576,539,549],[559,576,549],[519,559,549],[539,519,549],[519,476,489],[501,519,489],[464,501,489],[476,464,489],[559,519,529],[553,559,529],[501,553,529],[519,501,529],[680,648,632],[628,680,632],[576,628,632],[648,576,632],[730,680,678],[685,730,678],[628,685,678],[680,628,678],[821,730,746],[776,821,746],[685,776,746],[730,685,746],[934,821,866],[930,934,866],[776,930,866],[821,776,866],[628,576,598],[614,628,598],[559,614,598],[576,559,598],[685,628,652],[674,685,652],[614,674,652],[628,614,652],[614,559,580],[610,614,580],[553,610,580],[559,553,580],[674,614,636],[668,674,636],[610,668,636],[614,610,636],[776,685,716],[768,776,716],[674,768,716],[685,674,716],[930,776,858],[924,930,858],[768,924,858],[776,768,858],[768,674,709],[764,768,709],[668,764,709],[674,668,709],[924,768,854],[920,924,854],[764,920,854],[768,764,854],[977,938,965],[1042,977,965],[936,1042,965],[938,936,965],[1009,977,1044],[1125,1009,1044],[1042,1125,1044],[977,1042,1044],[981,936,967],[1032,981,967],[934,1032,967],[936,934,967],[1042,981,1054],[1123,1042,1054],[1032,1123,1054],[981,1032,1054],[1083,1042,1111],[1173,1083,1111],[1123,1173,1111],[1042,1123,1111],[1125,1083,1152],[1205,1125,1152],[1173,1205,1152],[1083,1173,1152],[1048,1009,1091],[1160,1048,1091],[1125,1160,1091],[1009,1125,1091],[1063,1048,1119],[1170,1063,1119],[1160,1170,1119],[1048,1160,1119],[1140,1125,1177],[1233,1140,1177],[1205,1233,1177],[1125,1205,1177],[1160,1140,1195],[1249,1160,1195],[1233,1249,1195],[1140,1233,1195],[1164,1160,1215],[1271,1164,1215],[1249,1271,1215],[1160,1249,1215],[1170,1164,1223],[1279,1170,1223],[1271,1279,1223],[1164,1271,1223],[1032,934,987],[1077,1032,987],[930,1077,987],[934,930,987],[1123,1032,1107],[1168,1123,1107],[1077,1168,1107],[1032,1077,1107],[1173,1123,1175],[1225,1173,1175],[1168,1225,1175],[1123,1168,1175],[1205,1173,1221],[1277,1205,1221],[1225,1277,1221],[1173,1225,1221],[1077,930,995],[1085,1077,995],[924,1085,995],[930,924,995],[1168,1077,1137],[1179,1168,1137],[1085,1179,1137],[1077,1085,1137],[1085,924,999],[1089,1085,999],[920,1089,999],[924,920,999],[1179,1085,1144],[1185,1179,1144],[1089,1185,1144],[1085,1089,1144],[1225,1168,1201],[1239,1225,1201],[1179,1239,1201],[1168,1179,1201],[1277,1225,1255],[1294,1277,1255],[1239,1294,1255],[1225,1239,1255],[1239,1179,1217],[1243,1239,1217],[1185,1243,1217],[1179,1185,1217],[1294,1239,1273],[1300,1294,1273],[1243,1300,1273],[1239,1243,1273],[1233,1205,1251],[1314,1233,1251],[1277,1314,1251],[1205,1277,1251],[1249,1233,1284],[1346,1249,1284],[1314,1346,1284],[1233,1314,1284],[1271,1249,1308],[1368,1271,1308],[1346,1368,1308],[1249,1346,1308],[1279,1271,1320],[1376,1279,1320],[1368,1376,1320],[1271,1368,1320],[1314,1277,1304],[1334,1314,1304],[1294,1334,1304],[1277,1294,1304],[1346,1314,1338],[1377,1346,1338],[1334,1377,1338],[1314,1334,1338],[1334,1294,1324],[1352,1334,1324],[1300,1352,1324],[1294,1300,1324],[1377,1334,1364],[1389,1377,1364],[1352,1389,1364],[1334,1352,1364],[1368,1346,1374],[1401,1368,1374],[1377,1401,1374],[1346,1377,1374],[1376,1368,1387],[1415,1376,1387],[1401,1415,1387],[1368,1401,1387],[1401,1377,1395],[1422,1401,1395],[1389,1422,1395],[1377,1389,1395],[1415,1401,1418],[1434,1415,1418],[1422,1434,1418],[1401,1422,1418]]});
};SceneJs.utils.ns("SceneJs.objects");SceneJs.objects.cube=function(){return SceneJs.geometry({type:"cube",vertices:[[1,1,1],[-1,1,1],[-1,-1,1],[1,-1,1],[1,1,1],[1,-1,1],[1,-1,-1],[1,1,-1],[1,1,1],[1,1,-1],[-1,1,-1],[-1,1,1],[-1,1,1],[-1,1,-1],[-1,-1,-1],[-1,-1,1],[-1,-1,-1],[1,-1,-1],[1,-1,1],[-1,-1,1],[1,-1,-1],[-1,-1,-1],[-1,1,-1],[1,1,-1]],texCoords:[[1,1],[0,1],[0,0],[1,0],[0,1],[0,0],[1,0],[1,1],[1,0],[1,1],[0,1],[0,0],[1,1],[0,1],[0,0],[1,0],[0,0],[1,0],[1,1],[0,1],[0,0],[1,0],[1,1],[0,1]],indices:[[0,1,2],[0,2,3],[4,5,6],[4,6,7],[8,9,10],[8,10,11],[12,13,14],[12,14,15],[16,17,18],[16,18,19],[20,21,22],[20,22,23]]});
};SceneJs.backends.installBackend(new (function(){this.type="model-transform";var ctx;var init=function(){ctx.modelTransform=(function(){var transform={matrix:SceneJs.math.identityMat4(),fixed:true};var transformStack=[];var loaded=false;ctx.programs.onProgramActivate(function(){loaded=false;});ctx.geometry.onDraw(function(){if(!loaded){if(!transform.matrixAsArray){transform.matrixAsArray=new WebGLFloatArray(transform.matrix);
}if(!transform.normalMatrixAsArray){transform.normalMatrixAsArray=new WebGLFloatArray(SceneJs.math.mat4To3(SceneJs.math.transposeMat4(SceneJs.math.inverseMat4(transform.matrix))));}ctx.programs.setVar("scene_ModelMatrix",transform.matrixAsArray);ctx.programs.setVar("scene_NormalMatrix",transform.normalMatrixAsArray);
loaded=true;}});return{setTransform:function(t){transform=t;loaded=false;},getTransform:function(){return transform;},transformPoint3:function(v){return SceneJs.math.transformPoint3(transform.matrix,v);},transformVector:function(v){return SceneJs.math.transformVector3(transform.matrix,v);},isFixed:function(){return transform.fixed;
}};})();};this.install=function(_ctx){ctx=_ctx;init();};this.setTransform=function(transform){ctx.modelTransform.setTransform(transform);};this.getTransform=function(){return ctx.modelTransform.getTransform();};this.reset=function(){init();};})());SceneJs.rotate=function(){var cfg=SceneJs.utils.getNodeConfig(arguments);
var backend=SceneJs.backends.getBackend("model-transform");var mat;var xform;return function(scope){if(!mat||!cfg.fixed){var params=cfg.getParams(scope);params.angle=params.angle||0;params.x=params.x||0;params.y=params.y||0;params.z=params.z||0;if(params.x+params.y+params.z==0){throw new SceneJs.exceptions.IllegalRotateConfigException("Rotate vector is zero - at least one of x,y and z must be non-zero");
}mat=SceneJs.math.rotationMat4v(params.angle*Math.PI/180,[params.x,params.y,params.z]);}var superXform=backend.getTransform();if(!xform||!superXform.fixed||!cfg.fixed){var tempMat=SceneJs.math.mulMat4(superXform.matrix,mat);xform={localMatrix:mat,matrix:tempMat,fixed:superXform.fixed&&cfg.fixed};}backend.setTransform(xform);
SceneJs.utils.visitChildren(cfg,scope);backend.setTransform(superXform);};};(function(){SceneJs.translate=function(){var cfg=SceneJs.utils.getNodeConfig(arguments);var backend=SceneJs.backends.getBackend("model-transform");var mat;var xform;return function(scope){if(!mat||!cfg.fixed){var params=cfg.getParams(scope);
mat=SceneJs.math.translationMat4v([params.x||0,params.y||0,params.z||0]);}var superXform=backend.getTransform();if(!xform||!superXform.fixed||!cfg.fixed){var tempMat=SceneJs.math.mulMat4(superXform.matrix,mat);xform={localMatrix:mat,matrix:tempMat,fixed:superXform.fixed&&cfg.fixed};}backend.setTransform(xform);
SceneJs.utils.visitChildren(cfg,scope);backend.setTransform(superXform);};};})();(function(){SceneJs.scale=function(){var cfg=SceneJs.utils.getNodeConfig(arguments);var backend=SceneJs.backends.getBackend("model-transform");var mat;var xform;return function(scope){if(!mat||!cfg.fixed){var params=cfg.getParams(scope);
mat=SceneJs.math.scalingMat4v([params.x||1,params.y||1,params.z||1]);}var superXform=backend.getTransform();if(!xform||!superXform.fixed||!cfg.fixed){var tempMat=SceneJs.math.mulMat4(superXform.matrix,mat);xform={localMatrix:mat,matrix:tempMat,fixed:superXform.fixed&&cfg.fixed};}backend.setTransform(xform);
SceneJs.utils.visitChildren(cfg,scope);backend.setTransform(superXform);};};})();SceneJs.backends.installBackend(new (function(){this.type="projection_transform";var ctx;var init=function(){ctx.projectionTransform=(function(){var transform={matrix:SceneJs.math.identityMat4(),fixed:true};var loaded=false;
ctx.programs.onProgramActivate(function(){loaded=false;});ctx.geometry.onDraw(function(){if(!loaded){if(!transform.matrixAsArray){transform.matrixAsArray=new WebGLFloatArray(transform.matrix);}ctx.programs.setVar("scene_ProjectionMatrix",transform.matrixAsArray);loaded=true;}});return{setTransform:function(t){transform=t;
loaded=false;},getTransform:function(){return transform;}};})();};this.install=function(_ctx){ctx=_ctx;init();};this.setTransform=function(transform){ctx.projectionTransform.setTransform(transform);};this.getTransform=function(){return ctx.projectionTransform.getTransform();};this.reset=function(){init();
};})());(function(){SceneJs.perspective=function(){var cfg=SceneJs.utils.getNodeConfig(arguments);var backend=SceneJs.backends.getBackend("projection_transform");var xform;return function(scope){if(!xform||!cfg.fixed){var params=cfg.getParams(scope);params.fovy=params.fovy||60;params.aspect=params.aspect||1;
params.near=params.near||0.1;params.far=params.far||400;var tempMat=SceneJs.math.perspectiveMatrix4(params.fovy*Math.PI/180,params.aspect,params.near,params.far);xform={matrix:tempMat};}var prevXform=backend.getTransform();backend.setTransform(xform);SceneJs.utils.visitChildren(cfg,scope);backend.setTransform(prevXform);
};};})();(function(){SceneJs.ortho=function(){var cfg=SceneJs.utils.getNodeConfig(arguments);var backend=SceneJs.backends.getBackend("projection_transform");var xform;return function(scope){if(!xform||!cfg.fixed){var params=cfg.getParams(scope);var tempMat=SceneJs.math.orthoMat4c(params.left||-1,params.right||1,params.bottom||-1,params.top||1,params.near||0.1,params.far||100);
xform={matrix:tempMat};}var prevXform=backend.getTransform();backend.setTransform(xform);SceneJs.utils.visitChildren(cfg,scope);backend.setTransform(prevXform);};};})();(function(){SceneJs.frustum=function(){var cfg=SceneJs.utils.getNodeConfig(arguments);var backend=SceneJs.backends.getBackend("projection_transform");
var xform;return function(scope){if(!xform||cfg.fixed){var params=cfg.getParams(scope);var tempMat=SceneJs.math.frustumMatrix4(params.left||-1,params.right||1,params.bottom||-1,params.top||1,params.near||0.1,params.far||100);xform={matrix:tempMat};}var prevXform=backend.getTransform();backend.setTransform(xform);
SceneJs.utils.visitChildren(cfg,scope);backend.setTransform(prevXform);};};})();SceneJs.backends.installBackend(new (function(){this.type="view-transform";var ctx;var init=function(){ctx.viewTransform=(function(){var transform={matrix:SceneJs.math.identityMat4(),fixed:true};var loaded=false;ctx.programs.onProgramActivate(function(){loaded=false;
});ctx.geometry.onDraw(function(){if(!loaded){if(!transform.matrixAsArray){transform.matrixAsArray=new WebGLFloatArray(transform.matrix);}ctx.programs.setVar("scene_ViewMatrix",transform.matrixAsArray);loaded=true;}});return{setTransform:function(t){transform=t;loaded=false;},getTransform:function(){return transform;
}};})();};this.install=function(_ctx){ctx=_ctx;init();};this.setTransform=function(transform){ctx.viewTransform.setTransform(transform);};this.getTransform=function(){return ctx.viewTransform.getTransform();};this.reset=function(){init();};})());(function(){SceneJs.lookAt=function(){var cfg=SceneJs.utils.getNodeConfig(arguments);
var backend=SceneJs.backends.getBackend("view-transform");var cloneVec=function(v){return{x:v.x||0,y:v.y||0,z:v.z||0};};var mat;var xform;return function(scope){if(!mat||!cfg.fixed){var params=cfg.getParams(scope);params.eye=params.eye?cloneVec(params.eye):{x:0,y:0,z:0};params.look=params.look?cloneVec(params.look):{x:0,y:0,z:0};
params.up=params.up?cloneVec(params.up):{x:0,y:1,z:0};if(params.eye.x==params.look.x&&params.eye.y==params.look.y&&params.eye.z==params.look.z){throw new SceneJs.exceptions.InvalidLookAtConfigException("Invald lookAt parameters: eye and look cannot be identical");}if(params.up.x==0&&params.up.y==0&&params.up.z==0){throw new SceneJs.exceptions.InvalidLookAtConfigException("Invald lookAt parameters: up vector cannot be of zero length, ie. all elements zero");
}mat=SceneJs.math.lookatMat4c(params.eye.x,params.eye.y,params.eye.z,params.look.x,params.look.y,params.look.z,params.up.x,params.up.y,params.up.z);}var superXform=backend.getTransform();if(!xform||!superXform.fixed||!cfg.fixed){var tempMat=SceneJs.math.mulMat4(superXform.matrix,mat);xform={matrix:tempMat,fixed:superXform.fixed&&cfg.fixed};
}backend.setTransform(xform);SceneJs.utils.visitChildren(cfg,scope);backend.setTransform(superXform);};};})();SceneJs.backends.installBackend(new (function(){this.type="lights";var ctx;this.install=function(_ctx){ctx=_ctx;ctx.lights=(function(){var lightStack=[];var loaded=false;ctx.programs.onProgramActivate(function(){loaded=false;
});ctx.geometry.onDraw(function(){if(!loaded){ctx.programs.setVar("scene_Lights",lightStack);loaded=true;}});return{pushLights:function(lights){for(var i=0;i<lights.length;i++){lightStack.push(lights[i]);}loaded=false;},popLights:function(numLights){for(var i=0;i<numLights;i++){lightStack.pop();}loaded=false;
},reset:function(){lightStack=[];loaded=false;}};})();};var cloneVec=function(v){return v?{x:v.x||0,y:v.y||0,z:v.z||0}:{x:0,y:0,z:0};};var transform=function(l){return{pos:ctx.modelTransform.transformPoint3(cloneVec(l.pos)),ambient:l.ambient,diffuse:l.diffuse,specular:l.specular,dir:ctx.modelTransform.transformVector(cloneVec(l.dir)),constantAttenuation:l.constantAttenuation,linearAttenuation:l.linearAttenuation,quadraticAttenuation:l.quadraticAttenuation};
};this.transformLights=function(lights){var lights2=[];for(var i=0;i<lights.length;i++){var light=lights[i];lights2.push(transform(light));}return lights2;};this.getSafeToCache=function(){return ctx.modelTransform.isFixed();};this.pushLights=function(lights){ctx.lights.pushLights(lights);};this.popLights=function(numLights){ctx.lights.popLights(numLights);
};this.reset=function(){ctx.lights.reset();};})());SceneJs.lights=function(){var cfg=SceneJs.utils.getNodeConfig(arguments);var backend=SceneJs.backends.getBackend("lights");var lights;return function(scope){if(!lights||!cfg.fixed||!backend.getSafeToCache()){lights=backend.transformLights(cfg.getParams(scope).lights);
}backend.pushLights(lights);SceneJs.utils.visitChildren(cfg,scope);backend.popLights(lights.length);};};SceneJs.material=function(scenejs){var cfg=SceneJs.utils.getNodeConfig(arguments);var backend;var cloneColor=function(v){return v?{r:v.r||0,g:v.g||0,b:v.b||0,a:v.a||1}:{r:0,g:0,b:0};};var material;
return function(scope){if(!backend){backend=SceneJs.backends.getBackend("material");}if(!material||!cfg.fixed){var params=cfg.getParams(scope);material={ambient:cloneColor(params.ambient),diffuse:cloneColor(params.diffuse),specular:cloneColor(params.specular),shininess:cloneColor(params.shininess)};}var saveMaterial=backend.getMaterial();
backend.setMaterial(material);SceneJs.utils.visitChildren(cfg,scope);backend.setMaterial(saveMaterial);};};SceneJs.backends.installBackend(new (function(){this.type="material";var ctx;this.install=function(_ctx){ctx=_ctx;ctx.material=(function(){var material;var loaded=false;var _init=function(){material={ambient:{r:0,g:0,b:1},diffuse:{r:0,g:0,b:1},specular:{r:0,g:0,b:1},shininess:{r:0,g:0,b:1}};
loaded=false;};_init();ctx.programs.onProgramActivate(function(){loaded=false;});ctx.geometry.onDraw(function(){if(!loaded){ctx.programs.setVar("scene_Material",material);loaded=true;}});return{setMaterial:function(m){material=m;loaded=false;},getMaterial:function(){return material;},reset:function(){_init();
}};})();};this.setMaterial=function(material){ctx.material.setMaterial(material);};this.getMaterial=function(){return ctx.material.getMaterial();};this.reset=function(){ctx.material.reset();};})());SceneJs.scalarInterpolator=function(){var cfg=SceneJs.utils.getNodeConfig(arguments);var NOT_FOUND=0;var BEFORE_FIRST=1;
var AFTER_LAST=2;var FOUND=3;var params;var outputName;var outputValue;return function(scope){if(!params){params=cfg.getParams(scope);if(!cfg.fixed){throw new SceneJs.exceptions.UnsupportedOperationException("Dynamic configuration of interpolators is not supported");}if(!params.input){throw"scalarInterpolator input parameter missing";
}if(!params.output){throw"scalarInterpolator output parameter missing";}if(params.keys){if(!params.values){throw"scalarInterpolator keys supplied but no values - must supply a value for each key";}}else{if(params.values){throw"scalarInterpolator values supplied but no keys - must supply a key for each value";
}}for(var i=1;i<params.keys.length;i++){if(params.keys[i-1]>=params.keys[i]){throw"two invalid scalarInterpolator keys found ("+i-1+" and "+i+") - key list should contain distinct values in ascending order";}}params.type=params.type||"linear";switch(params.type){case"linear":break;case"constant":break;
case"cosine":break;case"cubic":if(params.keys.length<4){throw"Minimum of four keyframes required for cubic scalarInterpolation - only "+params.keys.length+" are specified";}break;default:throw'scalarInterpolator type not supported - only "linear", "cosine", "cubic" and "constant" are supported';}}var key=scope.get(params.input);
if(!key&&key!=0){throw"scalarInterpolator failed to find input on scope";}var key1=0;var key2=1;var linearInterpolate=function(k){var u=params.keys[key2]-params.keys[key1];var v=k-params.keys[key1];var w=params.values[key2]-params.values[key1];return params.values[key1]+((v/u)*w);};var constantInterpolate=function(k){if(Math.abs((k-params.keys[key1]))<Math.abs((k-params.keys[key2]))){return params.keys[key1];
}else{return params.keys[key2];}};var cosineInterpolate=function(k){var mu2=(1-Math.cos(k*Math.PI())/2);return(params.keys[key1]*(1-mu2)+params.keys[key2]*mu2);};var cubicInterpolate=function(k){if(key1==0||key2==(params.keys.length-1)){return cosineInterpolate(k);}var y0=params.keys[key1-1];var y1=params.keys[key1];
var y2=params.keys[key2];var y3=params.keys[key2+1];var mu2=k*k;var a0=y3-y2-y0+y1;var a1=y0-y1-a0;var a2=y2-y0;var a3=y1;return(a0*k*mu2+a1*mu2+a2*k+a3);};var findEnclosingFrame=function(key){if(params.keys.length==0){return NOT_FOUND;}if(key<params.keys[0]){return BEFORE_FIRST;}if(key>params.keys[params.keys.length-1]){return AFTER_LAST;
}while(params.keys[key1]>key){key1--;key2--;}while(params.keys[key2]<key){key1++;key2++;}return FOUND;};var interpolate=function(k){switch(params.type){case"linear":return linearInterpolate(k);case"cosine":return cosineInterpolate(k);case"cubic":return cubicInterpolate(k);case"constant":return constantInterpolate(k);
default:throw'internal error - interpolation type not switched: "'+params.type+"'";}};var update=function(){switch(findEnclosingFrame(key)){case NOT_FOUND:break;case BEFORE_FIRST:break;case AFTER_LAST:outputValue=params.values[params.values.length-1];break;case FOUND:outputValue=interpolate((key));break;
default:break;}};update();var childScope=SceneJs.utils.newScope(scope,cfg.fixed);childScope.put(params.output,outputValue);SceneJs.utils.visitChildren(cfg,childScope);};};SceneJs.scope=function(){var cfg=SceneJs.utils.getNodeConfig(arguments);var childScope;return function(scope){if(!childScope||!cfg.fixed||!scope.isfixed()){childScope=SceneJs.utils.newScope(scope,cfg.fixed);
var params=cfg.getParams(scope);if(params){for(var key in params){childScope.put(key,params[key]);}}}SceneJs.utils.visitChildren(cfg,childScope);};};SceneJs.generator=function(){var cfg=SceneJs.utils.getNodeConfig(arguments);return function(scope){if(cfg.fixed){throw new SceneJs.exceptions.InvalidNodeConfigException("generator node must be configured with a function");
}var params=cfg.getParams(scope);while(params){var childScope=SceneJs.utils.newScope(scope);for(var key in params){childScope.put(key,params[key]);}SceneJs.utils.visitChildren(cfg,childScope);params=cfg.getParams(scope);}};};SceneJs.asset=function(){var cfg=SceneJs.utils.getNodeConfig(arguments);var backend;
var loading=false;return function(scope){var params=cfg.getParams(scope);var getFileExtension=function(fileName){var i=fileName.lastIndexOf(".");if(i==-1||i==fileName.length-1){throw"Invalid location config for asset node - extension missing";}return fileName.substr(i+1);};if(!backend){if(!params.proxy){throw new SceneJs.exceptions.NodeConfigExpectedException("Mandatory asset parameter missing: proxy");
}if(!params.uri){throw new SceneJs.exceptions.NodeConfigExpectedException("Mandatory asset parameter missing: uri");}backend=SceneJs.backends.getBackend("asset."+getFileExtension(params.uri));}var assetNode=backend.getAsset(params.uri);if(!assetNode&&!loading){loading=true;backend.loadAsset(params.proxy,params.uri,function(_assetNode){assetNode=_assetNode;
});}else{if(assetNode){if(loading){backend.assetLoaded();loading=false;}assetNode.call(this,scope);}}SceneJs.utils.visitChildren(cfg,scope);};};SceneJs.assetBackend=function(cfg){if(!cfg.type){throw new SceneJs.exceptions.NodeConfigExpectedException("Asset backend config missing: type");}if(!cfg.parse){throw new SceneJs.exceptions.NodeConfigExpectedException("Asset backend config missing: parser");
}return new (function(){this.type=cfg.type;var ctx;this.install=function(_ctx){ctx=_ctx;if(!ctx.assets){ctx.assets=new function(){var date=new Date();var importers={};var entries={};var evictionCountdown=1000;var evict=function(){if(--evictionCountdown==0){}};this.installImporter=function(cfg){importers[cfg.type]={type:cfg.type,parse:cfg.parse,serverParams:cfg.serverParams};
};var jsonp=function(fullUri,callback,callbackName){var head=document.getElementsByTagName("head")[0];var script=document.createElement("script");script.type="text/javascript";script.src=fullUri;window[callbackName]=function(data){callback(data);window[callbackName]=undefined;try{delete window[callbackName];
}catch(e){}head.removeChild(script);};ctx.scenes.processStarted();head.appendChild(script);};this.getAsset=function(uri){var entry=entries[uri];if(entry){entry.age=0;return entry.node;}return null;};this.loadAsset=function(proxy,uri,type,callback){var importer=importers[type];if(!importer){throw'No asset node backend registered for file type: "'+type+'"';
}var callbackName="callback"+date.getTime();var url=[proxy,"?callback=",callbackName,"&uri="+uri];for(var param in importer.serverParams){url.push("&",param,"=",importer.serverParams[param]);}jsonp(url.join(""),function(data){if(!data){throw new SceneJs.exceptions.AssetLoadFailureException("Asset load failed",uri,proxy);
}var assetNode=importer.parse(data);if(!assetNode||(typeof assetNode!="function")){throw new SceneJs.exceptions.AssetLoadFailureException("Asset load failed - parser failure? ",uri,proxy);}entries[uri]={node:assetNode,age:0};callback(assetNode);},callbackName);};this.clearAssets=function(){entries={};
};};}ctx.assets.installImporter(cfg);};this.getAsset=function(uri){return ctx.assets.getAsset(uri);};this.loadAsset=function(proxy,uri,callback){ctx.scenes.processStarted();ctx.assets.loadAsset(proxy,uri,cfg.type,callback);};this.assetLoaded=function(){ctx.scenes.processStopped();};this.reset=function(){ctx.assets.clearAssets();
};})();};SceneJs.backends.installBackend((function(){return SceneJs.assetBackend({type:"asset.js",serverParams:{mode:"js"},parse:function(data){return data;}});})());SceneJs.texture=function(){var cfg=SceneJs.utils.getNodeConfig(arguments);var backend=SceneJs.backends.getBackend("texture");var loading=false;
return function(scope){var params=cfg.getParams(scope);if(!params.uri){throw new SceneJs.exceptions.NodeConfigExpectedException("Mandatory texture parameter missing: uri");}if(params.wait==undefined){params.wait=true;}var textureId=backend.getTexture(params.uri);if(!textureId&&!loading){loading=true;
backend.loadTexture(params.uri,function(_textureId){textureId=_textureId;});}else{if(textureId){if(loading){backend.textureLoaded(textureId);loading=false;}backend.activateTexture(textureId);SceneJs.utils.visitChildren(cfg,scope);}else{if(!params.wait){SceneJs.utils.visitChildren(cfg,scope);}}}};};SceneJs.backends.installBackend(new (function(){this.type="texture";
var ctx;this.install=function(_ctx){ctx=_ctx;ctx.textures=(function(){var textures={};var activeTexture=null;var loaded=false;ctx.programs.onProgramActivate(function(){loaded=false;});ctx.geometry.onDraw(function(){if(!loaded&&activeTexture){ctx.programs.bindTexture(activeTexture.ptexture);loaded=true;
}});return{getTexture:function(textureId){var texture=textures[textureId];if(texture){texture.timeToLive--;return textureId;}return null;},loadTexture:function(uri,callback){var textureId=uri;var image=new Image();var texture={textureId:textureId,image:image,timeToLive:1000};texture.image.onload=function(){textures[textureId]=texture;
callback(texture.textureId);};texture.image.src=uri;},bindTexture:function(textureId){var texture=textures[textureId];var context=ctx.renderer.canvas.context;texture.ptexture=context.createTexture();texture.context=context;context.bindTexture(context.TEXTURE_2D,texture.ptexture);context.texImage2D(context.TEXTURE_2D,0,texture.image);
context.texParameteri(context.TEXTURE_2D,context.TEXTURE_MAG_FILTER,context.LINEAR);context.texParameteri(context.TEXTURE_2D,context.TEXTURE_MIN_FILTER,context.LINEAR_MIPMAP_NEAREST);context.generateMipmap(context.TEXTURE_2D);context.bindTexture(context.TEXTURE_2D,null);},activateTexture:function(textureId){var texture=textures[textureId];
if(!texture){throw'No such texture loaded "'+textureId+'"';}activeTexture=texture;loaded=false;},getActiveTextureId:function(){return activeTexture?activeTexture.textureId:null;},deleteTextures:function(){for(var textureId in textures){var texture=textures[textureId];texture.context.deleteTexture(texture.ptexture);
}textures={};activeTexture=null;loaded=false;}};})();};this.getTexture=function(textureId){return ctx.textures.getTexture(textureId);};this.loadTexture=function(uri,callback){ctx.scenes.processStarted();ctx.textures.loadTexture(uri,callback);};this.textureLoaded=function(textureId){ctx.scenes.processStopped();
ctx.textures.bindTexture(textureId);};this.activateTexture=function(textureId){ctx.textures.activateTexture(textureId);};this.reset=function(){ctx.textures.deleteTextures();};})());SceneJs.backends.installBackend((function(){var defaultMat4;var defaultNormalMat;var defaultMaterial={diffuse:{r:1,g:1,b:1},ambient:{r:1,g:1,b:1}};
var getDefaultMat4=function(){if(!defaultMat4){try{defaultMat4=new WebGLFloatArray(SceneJs.math.identityMat4());}catch(e){throw new SceneJs.exceptions.WebGLNotSupportedException("Failed to find WebGL support (WebGLFloatArray)",e);}}return defaultMat4;};var getDefaultNormalMat4=function(){if(!defaultNormalMat){try{defaultNormalMat=new WebGLFloatArray([1,0,0,0,1,0,0,0,1]);
}catch(e){throw new SceneJs.exceptions.WebGLNotSupportedException("Failed to find WebGL support (WebGLFloatArray)",e);}}return defaultNormalMat;};return SceneJs.shaderBackend({type:"texture-shader",vertexShaders:["attribute vec3 Vertex;"+"attribute vec3 Normal;"+"attribute vec2 aTextureCoord;"+"uniform vec4 LightPos;"+"uniform mat4 PMatrix; "+"uniform mat4 VMatrix; "+"uniform mat4 MMatrix; "+"uniform mat3 NMatrix; "+"uniform vec3 MaterialAmbient;"+"uniform vec3 MaterialDiffuse;"+"varying vec2 vTextureCoord;"+"varying vec3 vLightWeighting; "+"void main(void) {"+"   vec4 mv =     MMatrix * vec4(Vertex, 1.0);"+"   vec4 vv =     VMatrix * mv;"+"   gl_Position = PMatrix * vv;"+"   vec3 nn = normalize(NMatrix * Normal);"+"   vec3 lightDir = vec3(normalize(mv - LightPos));"+"   float directionalLightWeighting = max(dot(lightDir, nn), 0.0);"+"   vLightWeighting = MaterialAmbient + MaterialDiffuse * directionalLightWeighting;"+"   vTextureCoord = aTextureCoord;"+"}"],fragmentShaders:["varying vec2 vTextureCoord;"+"uniform sampler2D Sampler;"+"varying vec3 vLightWeighting; "+"void main(void) {"+"   vec4 textureColor = texture2D(Sampler, vec2(vTextureCoord.s, 1.0 - vTextureCoord.t)); "+"   gl_FragColor = vec4(textureColor.rgb * vLightWeighting, textureColor.a); "+"}"],binders:{bindVertexBuffer:function(context,findVar,buffer){var vertexAttribute=findVar(context,"Vertex");
context.enableVertexAttribArray(vertexAttribute);context.bindBuffer(context.ARRAY_BUFFER,buffer);context.vertexAttribPointer(vertexAttribute,3,context.FLOAT,false,0,0);},bindTextureCoordBuffer:function(context,findVar,buffer){var texCoordAttribute=findVar(context,"aTextureCoord");context.enableVertexAttribArray(texCoordAttribute);
context.bindBuffer(context.ARRAY_BUFFER,buffer);context.vertexAttribPointer(texCoordAttribute,2,context.FLOAT,false,0,0);},bindTextureSampler:function(context,findVar,texture){var sampler=findVar(context,"Sampler");context.activeTexture(context.TEXTURE0);context.bindTexture(context.TEXTURE_2D,texture);
context.uniform1i(sampler,0);},bindNormalBuffer:function(context,findVar,buffer){var normalAttribute=findVar(context,"Normal");context.enableVertexAttribArray(normalAttribute);context.bindBuffer(context.ARRAY_BUFFER,buffer);context.vertexAttribPointer(normalAttribute,3,context.FLOAT,false,0,0);}},setters:{scene_ProjectionMatrix:function(context,findVar,mat){context.uniformMatrix4fv(findVar(context,"PMatrix"),false,mat||getDefaultMat4());
},scene_ModelMatrix:function(context,findVar,mat){context.uniformMatrix4fv(findVar(context,"MMatrix"),false,mat||getDefaultMat4());},scene_ViewMatrix:function(context,findVar,mat){context.uniformMatrix4fv(findVar(context,"VMatrix"),false,mat||getDefaultMat4());},scene_NormalMatrix:function(context,findVar,mat){context.uniformMatrix3fv(findVar(context,"NMatrix"),false,mat||getDefaultNormalMat4());
},scene_Material:function(context,findVar,m){m=m||defaultMaterial;context.uniform3fv(findVar(context,"MaterialAmbient"),[m.ambient.r,m.ambient.g,m.ambient.b]);context.uniform3fv(findVar(context,"MaterialDiffuse"),[m.diffuse.r,m.diffuse.g,m.diffuse.b]);},scene_Lights:function(context,findVar,lights){if(lights&&lights.length>0){var l=lights[0];
context.uniform4fv(findVar(context,"LightPos"),[l.pos.x,l.pos.y,l.pos.z,1]);}else{context.uniform4fv(findVar(context,"LightPos"),[10,0,-10,1]);}}}});})());