PageSourceSearch

https://www.e-laborat.de/_next/static/chunks/06.cf49jjfxl~.js?dpl=dpl_FyNDbJfmn8RxZaWFzzQqXkyotT8G

js e-laborat.de collected 2026-10-09 17:57:54 UTC 52,373 bytes, 101 lines download raw bytes

1(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,85433,t=>{t.v({alive:"ascii-module__bNgI7G__alive",approach:"ascii-module__bNgI7G__approach",benchMeta:"ascii-module__bNgI7G__benchMeta",berlin:"ascii-module__bNgI7G__berlin",bookingLink:"ascii-module__bNgI7G__bookingLink",brand:"ascii-module__bNgI7G__brand",clients:"ascii-module__bNgI7G__clients",code:"ascii-module__bNgI7G__code",codeHeader:"ascii-module__bNgI7G__codeHeader",contact:"ascii-module__bNgI7G__contact",demoFooter:"ascii-module__bNgI7G__demoFooter",desktopBreak:"ascii-module__bNgI7G__desktopBreak",disclosure:"ascii-module__bNgI7G__disclosure",dither:"ascii-module__bNgI7G__dither",faq:"ascii-module__bNgI7G__faq",faqIntro:"ascii-module__bNgI7G__faqIntro",footer:"ascii-module__bNgI7G__footer",footerLine:"ascii-module__bNgI7G__footerLine",footerWordmark:"ascii-module__bNgI7G__footerWordmark",header:"ascii-module__bNgI7G__header",heroActions:"ascii-module__bNgI7G__heroActions",heroBackdrop:"ascii-module__bNgI7G__heroBackdrop",heroBody:"ascii-module__bNgI7G__heroBody",heroLab:"ascii-module__bNgI7G__heroLab",heroLayout:"ascii-module__bNgI7G__heroLayout",labDesktop:"ascii-module__bNgI7G__labDesktop",labManifesto:"ascii-module__bNgI7G__labManifesto",lifeContent:"ascii-module__bNgI7G__lifeContent",lifeGrid:"ascii-module__bNgI7G__lifeGrid",manifestoCopy:"ascii-module__bNgI7G__manifestoCopy",mobileMenu:"ascii-module__bNgI7G__mobileMenu",monitorProject:"ascii-module__bNgI7G__monitorProject",nav:"ascii-module__bNgI7G__nav",navCta:"ascii-module__bNgI7G__navCta",page:"ascii-module__bNgI7G__page",pipeline:"ascii-module__bNgI7G__pipeline",pipelineArrow:"ascii-module__bNgI7G__pipelineArrow",pipelineLabel:"ascii-module__bNgI7G__pipelineLabel",project:"ascii-module__bNgI7G__project",projectCopy:"ascii-module__bNgI7G__projectCopy",projectType:"ascii-module__bNgI7G__projectType",projectVisual:"ascii-module__bNgI7G__projectVisual",questions:"ascii-module__bNgI7G__questions",registration:"ascii-module__bNgI7G__registration",sectionHeading:"ascii-module__bNgI7G__sectionHeading",service:"ascii-module__bNgI7G__service",serviceArt:"ascii-module__bNgI7G__serviceArt",services:"ascii-module__bNgI7G__services",simulation:"ascii-module__bNgI7G__simulation",simulationBody:"ascii-module__bNgI7G__simulationBody",simulationValue:"ascii-module__bNgI7G__simulationValue",skip:"ascii-module__bNgI7G__skip",tabPanel:"ascii-module__bNgI7G__tabPanel",tabs:"ascii-module__bNgI7G__tabs",tags:"ascii-module__bNgI7G__tags",tokenBar:"ascii-module__bNgI7G__tokenBar",unifiedCopy:"ascii-module__bNgI7G__unifiedCopy",unifiedHero:"ascii-module__bNgI7G__unifiedHero",unifiedMeta:"ascii-module__bNgI7G__unifiedMeta",windowBar:"ascii-module__bNgI7G__windowBar",work:"ascii-module__bNgI7G__work",workIntro:"ascii-module__bNgI7G__workIntro",workbench:"ascii-module__bNgI7G__workbench"})},38198,t=>{"use strict";let e,i,s;var r=t.i(43476),h=t.i(71645);function n(t){let e=t[0],i=t[1],s=t[2];return Math.sqrt(e*e+i*i+s*s)}function a(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function o(t,e,i){return t[0]=e[0]+i[0],t[1]=e[1]+i[1],t[2]=e[2]+i[2],t}function l(t,e,i){return t[0]=e[0]-i[0],t[1]=e[1]-i[1],t[2]=e[2]-i[2],t}function u(t,e,i){return t[0]=e[0]*i,t[1]=e[1]*i,t[2]=e[2]*i,t}function d(t){let e=t[0],i=t[1],s=t[2];return e*e+i*i+s*s}function c(t,e){let i=e[0],s=e[1],r=e[2],h=i*i+s*s+r*r;return h>0&&(h=1/Math.sqrt(h)),t[0]=e[0]*h,t[1]=e[1]*h,t[2]=e[2]*h,t}function g(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function m(t,e,i){let s=e[0],r=e[1],h=e[2],n=i[0],a=i[1],o=i[2];return t[0]=r*o-h*a,t[1]=h*n-s*o,t[2]=s*a-r*n,t}let _=(e=[0,0,0],i=[0,0,0],function(t,s){a(e,t),a(i,s),c(e,e),c(i,i);let r=g(e,i);return r>1?0:r<-1?Math.PI:Math.acos(r)});class f extends Array{constructor(t=0,e=t,i=t){return super(t,e,i),this}get x(){return this[0]}get y(){return this[1]}get z(){return this[2]}set x(t){this[0]=t}set y(t){this[1]=t}set z(t){this[2]=t}set(t,e=t,i=t){return t.length?this.copy(t):(this[0]=t,this[1]=e,this[2]=i,this)}copy(t){return a(this,t),this}add(t,e){return e?o(this,t,e):o(this,this,t),this}sub(t,e){return e?l(this,t,e):l(this,this,t),this}multiply(t){if(t.length)this[0]=this[0]*t[0],this[1]=this[1]*t[1],this[2]=this[2]*t[2];else u(this,this,t);return this}divide(t){if(t.length)this[0]=this[0]/t[0],this[1]=this[1]/t[1],this[2]=this[2]/t[2];else u(this,this,1/t);return this}inverse(t=this){return this[0]=1/t[0],this[1]=1/t[1],this[2]=1/t[2],this}len(){return n(this)}distance(t){let e,i,s;if(!t)return n(this);return e=t[0]-this[0],Math.sqrt(e*e+(i=t[1]-this[1])*i+(s=t[2]-this[2])*s)}squaredLen(){return d(this)}squaredDistance(t){let e,i,s;if(!t)return d(this);return e=t[0]-this[0],e*e+(i=t[1]-this[1])*i+(s=t[2]-this[2])*s}negate(t=this){return this[0]=-t[0],this[1]=-t[1],this[2]=-t[2],this}cross(t,e){return e?m(this,t,e):m(this,this,t),this}scale(t){return u(this,this,t),this}normalize(){return c(this,this),this}dot(t){return g(this,t)}equals(t){return this[0]===t[0]&&this[1]===t[1]&&this[2]===t[2]}applyMatrix3(t){let e,i,s;return e=this[0],i=this[1],s=this[2],this[0]=e*t[0]+i*t[3]+s*t[6],this[1]=e*t[1]+i*t[4]+s*t[7],this[2]=e*t[2]+i*t[5]+s*t[8],this}applyMatrix4(t){let e,i,s,r;return e=this[0],i=this[1],s=this[2],r=(r=t[3]*e+t[7]*i+t[11]*s+t[15])||1,this[0]=(t[0]*e+t[4]*i+t[8]*s+t[12])/r,this[1]=(t[1]*e+t[5]*i+t[9]*s+t[13])/r,this[2]=(t[2]*e+t[6]*i+t[10]*s+t[14])/r,this}scaleRotateMatrix4(t){let e,i,s,r;return e=this[0],i=this[1],s=this[2],r=(r=t[3]*e+t[7]*i+t[11]*s+t[15])||1,this[0]=(t[0]*e+t[4]*i+t[8]*s)/r,this[1]=(t[1]*e+t[5]*i+t[9]*s)/r,this[2]=(t[2]*e+t[6]*i+t[10]*s)/r,this}applyQuaternion(t){let e,i,s,r,h,n,a,o,l,u,d,c,g,m;return e=this[0],i=this[1],s=this[2],r=t[0],h=t[1],n=t[2],a=t[3],o=h*s-n*i,l=n*e-r*s,u=r*i-h*e,d=h*u-n*l,c=n*o-r*u,g=r*l-h*o,o*=m=2*a,l*=m,u*=m,d*=2,c*=2,g*=2,this[0]=e+o+d,this[1]=i+l+c,this[2]=s+u+g,this}angle(t){return _(this,t)}lerp(t,e){let i,s,r;return i=this[0],s=this[1],r=this[2],this[0]=i+e*(t[0]-i),this[1]=s+e*(t[1]-s),this[2]=r+e*(t[2]-r),this}smoothLerp(t,e,i){let s,r,h,n;return s=Math.exp(-e*i),r=this[0],h=this[1],n=this[2],this[0]=t[0]+(r-t[0])*s,this[1]=t[1]+(h-t[1])*s,this[2]=t[2]+(n-t[2])*s,this}clone(){return new f(this[0],this[1],this[2])}fromArray(t,e=0){return this[0]=t[e],this[1]=t[e+1],this[2]=t[e+2],this}toArray(t=[],e=0){return t[e]=this[0],t[e+1]=this[1],t[e+2]=this[2],t}transformDirection(t){let e=this[0],i=this[1],s=this[2];return this[0]=t[0]*e+t[4]*i+t[8]*s,this[1]=t[1]*e+t[5]*i+t[9]*s,this[2]=t[2]*e+t[6]*i+t[10]*s,this.normalize()}}
1function p(t,e,i){let s=e[0],r=e[1],h=e[2],n=e[3],a=i[0],o=i[1],l=i[2],u=i[3];return t[0]=s*u+n*a+r*l-h*o,t[1]=r*u+n*o+h*a-s*l,t[2]=h*u+n*l+s*o-r*a,t[3]=n*u-s*a-r*o-h*l,t}let b=function(t,e){let i=e[0],s=e[1],r=e[2],h=e[3],n=i*i+s*s+r*r+h*h;return n>0&&(n=1/Math.sqrt(n)),t[0]=i*n,t[1]=s*n,t[2]=r*n,t[3]=h*n,t};class x extends Array{constructor(t=0,e=0,i=0,s=1){super(t,e,i,s),this.onChange=()=>{},this._target=this;const r=["0","1","2","3"];return new Proxy(this,{set(t,e){let i=Reflect.set(...arguments);return i&&r.includes(e)&&t.onChange(),i}})}get x(){return this[0]}get y(){return this[1]}get z(){return this[2]}get w(){return this[3]}set x(t){this._target[0]=t,this.onChange()}set y(t){this._target[1]=t,this.onChange()}set z(t){this._target[2]=t,this.onChange()}set w(t){this._target[3]=t,this.onChange()}identity(){var t;return(t=this._target)[0]=0,t[1]=0,t[2]=0,t[3]=1,this.onChange(),this}set(t,e,i,s){var r;return t.length?this.copy(t):(r=this._target,r[0]=t,r[1]=e,r[2]=i,r[3]=s,this.onChange(),this)}rotateX(t){var e,i,s;let r,h,n,a,o,l;return e=this._target,i=this._target,s=.5*t,r=i[0],h=i[1],n=i[2],a=i[3],o=Math.sin(s),l=Math.cos(s),e[0]=r*l+a*o,e[1]=h*l+n*o,e[2]=n*l-h*o,e[3]=a*l-r*o,this.onChange(),this}rotateY(t){var e,i,s;let r,h,n,a,o,l;return e=this._target,i=this._target,s=.5*t,r=i[0],h=i[1],n=i[2],a=i[3],o=Math.sin(s),l=Math.cos(s),e[0]=r*l-n*o,e[1]=h*l+a*o,e[2]=n*l+r*o,e[3]=a*l-h*o,this.onChange(),this}rotateZ(t){var e,i,s;let r,h,n,a,o,l;return e=this._target,i=this._target,s=.5*t,r=i[0],h=i[1],n=i[2],a=i[3],o=Math.sin(s),l=Math.cos(s),e[0]=r*l+h*o,e[1]=h*l-r*o,e[2]=n*l+a*o,e[3]=a*l-n*o,this.onChange(),this}inverse(t=this._target){var e;let i,s,r,h,n,a;return e=this._target,i=t[0],s=t[1],a=(n=i*i+s*s+(r=t[2])*r+(h=t[3])*h)?1/n:0,e[0]=-i*a,e[1]=-s*a,e[2]=-r*a,e[3]=h*a,this.onChange(),this}conjugate(t=this._target){var e;return e=this._target,e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e[3]=t[3],this.onChange(),this}copy(t){var e;return e=this._target,e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],this.onChange(),this}normalize(t=this._target){return b(this._target,t),this.onChange(),this}multiply(t,e){return e?p(this._target,t,e):p(this._target,this._target,t),this.onChange(),this}dot(t){var e;return e=this._target,e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3]*t[3]}fromMatrix3(t){return!function(t,e){let i,s=e[0]+e[4]+e[8];if(s>0)i=Math.sqrt(s+1),t[3]=.5*i,i=.5/i,t[0]=(e[5]-e[7])*i,t[1]=(e[6]-e[2])*i,t[2]=(e[1]-e[3])*i;else{let s=0;e[4]>e[0]&&(s=1),e[8]>e[3*s+s]&&(s=2);let r=(s+1)%3,h=(s+2)%3;i=Math.sqrt(e[3*s+s]-e[3*r+r]-e[3*h+h]+1),t[s]=.5*i,i=.5/i,t[3]=(e[3*r+h]-e[3*h+r])*i,t[r]=(e[3*r+s]+e[3*s+r])*i,t[h]=(e[3*h+s]+e[3*s+h])*i}}(this._target,t),this.onChange(),this}fromEuler(t,e){return!function(t,e,i="YXZ"){let s=Math.sin(.5*e[0]),r=Math.cos(.5*e[0]),h=Math.sin(.5*e[1]),n=Math.cos(.5*e[1]),a=Math.sin(.5*e[2]),o=Math.cos(.5*e[2]);"XYZ"===i?(t[0]=s*n*o+r*h*a,t[1]=r*h*o-s*n*a,t[2]=r*n*a+s*h*o,t[3]=r*n*o-s*h*a):"YXZ"===i?(t[0]=s*n*o+r*h*a,t[1]=r*h*o-s*n*a,t[2]=r*n*a-s*h*o,t[3]=r*n*o+s*h*a):"ZXY"===i?(t[0]=s*n*o-r*h*a,t[1]=r*h*o+s*n*a,t[2]=r*n*a+s*h*o,t[3]=r*n*o-s*h*a):"ZYX"===i?(t[0]=s*n*o-r*h*a,t[1]=r*h*o+s*n*a,t[2]=r*n*a-s*h*o,t[3]=r*n*o+s*h*a):"YZX"===i?(t[0]=s*n*o+r*h*a,t[1]=r*h*o+s*n*a,t[2]=r*n*a-s*h*o,t[3]=r*n*o-s*h*a):"XZY"===i&&(t[0]=s*n*o-r*h*a,t[1]=r*h*o-s*n*a,t[2]=r*n*a+s*h*o,t[3]=r*n*o+s*h*a)}(this._target,t,t.order),e||this.onChange(),this}fromAxisAngle(t,e){var i,s;let r;return i=this._target,r=Math.sin(s=.5*e),i[0]=r*t[0],i[1]=r*t[1],i[2]=r*t[2],i[3]=Math.cos(s),this.onChange(),this}slerp(t,e){var i,s;let r,h,n,a,o,l,u,d,c,g,m,_,f;
1return i=this._target,s=this._target,l=s[0],u=s[1],d=s[2],c=s[3],g=t[0],m=t[1],(h=l*g+u*m+d*(_=t[2])+c*(f=t[3]))<0&&(h=-h,g=-g,m=-m,_=-_,f=-f),1-h>1e-6?(n=Math.sin(r=Math.acos(h)),a=Math.sin((1-e)*r)/n,o=Math.sin(e*r)/n):(a=1-e,o=e),i[0]=a*l+o*g,i[1]=a*u+o*m,i[2]=a*d+o*_,i[3]=a*c+o*f,this.onChange(),this}fromArray(t,e=0){return this._target[0]=t[e],this._target[1]=t[e+1],this._target[2]=t[e+2],this._target[3]=t[e+3],this.onChange(),this}toArray(t=[],e=0){return t[e]=this[0],t[e+1]=this[1],t[e+2]=this[2],t[e+3]=this[3],t}}function v(t){let e=t[0],i=t[1],s=t[2],r=t[3],h=t[4],n=t[5],a=t[6],o=t[7],l=t[8],u=t[9],d=t[10],c=t[11],g=t[12],m=t[13],_=t[14],f=t[15];return(e*n-i*h)*(d*f-c*_)-(e*a-s*h)*(u*f-c*m)+(e*o-r*h)*(u*_-d*m)+(i*a-s*n)*(l*f-c*g)-(i*o-r*n)*(l*_-d*g)+(s*o-r*a)*(l*m-u*g)}function M(t,e,i){let s=e[0],r=e[1],h=e[2],n=e[3],a=e[4],o=e[5],l=e[6],u=e[7],d=e[8],c=e[9],g=e[10],m=e[11],_=e[12],f=e[13],p=e[14],b=e[15],x=i[0],v=i[1],M=i[2],y=i[3];return t[0]=x*s+v*a+M*d+y*_,t[1]=x*r+v*o+M*c+y*f,t[2]=x*h+v*l+M*g+y*p,t[3]=x*n+v*u+M*m+y*b,x=i[4],v=i[5],M=i[6],y=i[7],t[4]=x*s+v*a+M*d+y*_,t[5]=x*r+v*o+M*c+y*f,t[6]=x*h+v*l+M*g+y*p,t[7]=x*n+v*u+M*m+y*b,x=i[8],v=i[9],M=i[10],y=i[11],t[8]=x*s+v*a+M*d+y*_,t[9]=x*r+v*o+M*c+y*f,t[10]=x*h+v*l+M*g+y*p,t[11]=x*n+v*u+M*m+y*b,x=i[12],v=i[13],M=i[14],y=i[15],t[12]=x*s+v*a+M*d+y*_,t[13]=x*r+v*o+M*c+y*f,t[14]=x*h+v*l+M*g+y*p,t[15]=x*n+v*u+M*m+y*b,t}function y(t,e){let i=e[0],s=e[1],r=e[2],h=e[4],n=e[5],a=e[6],o=e[8],l=e[9],u=e[10];return t[0]=Math.hypot(i,s,r),t[1]=Math.hypot(h,n,a),t[2]=Math.hypot(o,l,u),t}let E=(s=[1,1,1],function(t,e){y(s,e);let i=1/s[0],r=1/s[1],h=1/s[2],n=e[0]*i,a=e[1]*r,o=e[2]*h,l=e[4]*i,u=e[5]*r,d=e[6]*h,c=e[8]*i,g=e[9]*r,m=e[10]*h,_=n+u+m,f=0;return _>0?(f=2*Math.sqrt(_+1),t[3]=.25*f,t[0]=(d-g)/f,t[1]=(c-o)/f,t[2]=(a-l)/f):n>u&&n>m?(f=2*Math.sqrt(1+n-u-m),t[3]=(d-g)/f,t[0]=.25*f,t[1]=(a+l)/f,t[2]=(c+o)/f):u>m?(f=2*Math.sqrt(1+u-n-m),t[3]=(c-o)/f,t[0]=(a+l)/f,t[1]=.25*f,t[2]=(d+g)/f):(f=2*Math.sqrt(1+m-n-u),t[3]=(a-l)/f,t[0]=(c+o)/f,t[1]=(d+g)/f,t[2]=.25*f),t});function w(t,e,i){return t[0]=e[0]+i[0],t[1]=e[1]+i[1],t[2]=e[2]+i[2],t[3]=e[3]+i[3],t[4]=e[4]+i[4],t[5]=e[5]+i[5],t[6]=e[6]+i[6],t[7]=e[7]+i[7],t[8]=e[8]+i[8],t[9]=e[9]+i[9],t[10]=e[10]+i[10],t[11]=e[11]+i[11],t[12]=e[12]+i[12],t[13]=e[13]+i[13],t[14]=e[14]+i[14],t[15]=e[15]+i[15],t}function A(t,e,i){return t[0]=e[0]-i[0],t[1]=e[1]-i[1],t[2]=e[2]-i[2],t[3]=e[3]-i[3],t[4]=e[4]-i[4],t[5]=e[5]-i[5],t[6]=e[6]-i[6],t[7]=e[7]-i[7],t[8]=e[8]-i[8],t[9]=e[9]-i[9],t[10]=e[10]-i[10],t[11]=e[11]-i[11],t[12]=e[12]-i[12],t[13]=e[13]-i[13],t[14]=e[14]-i[14],t[15]=e[15]-i[15],t}class F extends Array{constructor(t=1,e=0,i=0,s=0,r=0,h=1,n=0,a=0,o=0,l=0,u=1,d=0,c=0,g=0,m=0,_=1){return super(t,e,i,s,r,h,n,a,o,l,u,d,c,g,m,_),this}get x(){return this[12]}get y(){return this[13]}get z(){return this[14]}get w(){return this[15]}set x(t){this[12]=t}set y(t){this[13]=t}set z(t){this[14]=t}set w(t){this[15]=t}set(t,e,i,s,r,h,n,a,o,l,u,d,c,g,m,_){return t.length?this.copy(t):(this[0]=t,this[1]=e,this[2]=i,this[3]=s,this[4]=r,this[5]=h,this[6]=n,this[7]=a,this[8]=o,this[9]=l,this[10]=u,this[11]=d,this[12]=c,this[13]=g,this[14]=m,this[15]=_,this)}translate(t,e=this){let i,s,r,h,n,a,o,l,u,d,c,g,m,_,f;return m=t[0],_=t[1],f=t[2],e===this?(this[12]=e[0]*m+e[4]*_+e[8]*f+e[12],this[13]=e[1]*m+e[5]*_+e[9]*f+e[13],this[14]=e[2]*m+e[6]*_+e[10]*f+e[14],this[15]=e[3]*m+e[7]*_+e[11]*f+e[15]):(i=e[0],s=e[1],r=e[2],h=e[3],n=e[4],a=e[5],o=e[6],l=e[7],u=e[8],d=e[9],c=e[10],g=e[11],this[0]=i,this[1]=s,this[2]=r,this[3]=h,this[4]=n,this[5
1]=a,this[6]=o,this[7]=l,this[8]=u,this[9]=d,this[10]=c,this[11]=g,this[12]=i*m+n*_+u*f+e[12],this[13]=s*m+a*_+d*f+e[13],this[14]=r*m+o*_+c*f+e[14],this[15]=h*m+l*_+g*f+e[15]),this}rotate(t,e,i=this){let s,r,h,n,a,o,l,u,d,c,g,m,_,f,p,b,x,v,M,y,E,w,A,F,I,C,N,S;return I=e[0],1e-6>Math.abs(S=Math.hypot(I,C=e[1],N=e[2]))||(I*=S=1/S,C*=S,N*=S,s=Math.sin(t),h=1-(r=Math.cos(t)),n=i[0],a=i[1],o=i[2],l=i[3],u=i[4],d=i[5],c=i[6],g=i[7],m=i[8],_=i[9],f=i[10],p=i[11],b=I*I*h+r,x=C*I*h+N*s,v=N*I*h-C*s,M=I*C*h-N*s,y=C*C*h+r,E=N*C*h+I*s,w=I*N*h+C*s,A=C*N*h-I*s,F=N*N*h+r,this[0]=n*b+u*x+m*v,this[1]=a*b+d*x+_*v,this[2]=o*b+c*x+f*v,this[3]=l*b+g*x+p*v,this[4]=n*M+u*y+m*E,this[5]=a*M+d*y+_*E,this[6]=o*M+c*y+f*E,this[7]=l*M+g*y+p*E,this[8]=n*w+u*A+m*F,this[9]=a*w+d*A+_*F,this[10]=o*w+c*A+f*F,this[11]=l*w+g*A+p*F,i!==this&&(this[12]=i[12],this[13]=i[13],this[14]=i[14],this[15]=i[15])),this}scale(t,e=this){var i;let s,r,h;return s=(i="number"==typeof t?[t,t,t]:t)[0],r=i[1],h=i[2],this[0]=e[0]*s,this[1]=e[1]*s,this[2]=e[2]*s,this[3]=e[3]*s,this[4]=e[4]*r,this[5]=e[5]*r,this[6]=e[6]*r,this[7]=e[7]*r,this[8]=e[8]*h,this[9]=e[9]*h,this[10]=e[10]*h,this[11]=e[11]*h,this[12]=e[12],this[13]=e[13],this[14]=e[14],this[15]=e[15],this}add(t,e){return e?w(this,t,e):w(this,this,t),this}sub(t,e){return e?A(this,t,e):A(this,this,t),this}multiply(t,e){if(t.length)e?M(this,t,e):M(this,this,t);else this[0]=this[0]*t,this[1]=this[1]*t,this[2]=this[2]*t,this[3]=this[3]*t,this[4]=this[4]*t,this[5]=this[5]*t,this[6]=this[6]*t,this[7]=this[7]*t,this[8]=this[8]*t,this[9]=this[9]*t,this[10]=this[10]*t,this[11]=this[11]*t,this[12]=this[12]*t,this[13]=this[13]*t,this[14]=this[14]*t,this[15]=this[15]*t;return this}identity(){return this[0]=1,this[1]=0,this[2]=0,this[3]=0,this[4]=0,this[5]=1,this[6]=0,this[7]=0,this[8]=0,this[9]=0,this[10]=1,this[11]=0,this[12]=0,this[13]=0,this[14]=0,this[15]=1,this}copy(t){return this[0]=t[0],this[1]=t[1],this[2]=t[2],this[3]=t[3],this[4]=t[4],this[5]=t[5],this[6]=t[6],this[7]=t[7],this[8]=t[8],this[9]=t[9],this[10]=t[10],this[11]=t[11],this[12]=t[12],this[13]=t[13],this[14]=t[14],this[15]=t[15],this}fromPerspective({fov:t,aspect:e,near:i,far:s}={}){let r,h;return r=1/Math.tan(t/2),h=1/(i-s),this[0]=r/e,this[1]=0,this[2]=0,this[3]=0,this[4]=0,this[5]=r,this[6]=0,this[7]=0,this[8]=0,this[9]=0,this[10]=(s+i)*h,this[11]=-1,this[12]=0,this[13]=0,this[14]=2*s*i*h,this[15]=0,this}fromOrthogonal({left:t,right:e,bottom:i,top:s,near:r,far:h}){let n,a,o;return n=1/(t-e),a=1/(i-s),o=1/(r-h),this[0]=-2*n,this[1]=0,this[2]=0,this[3]=0,this[4]=0,this[5]=-2*a,this[6]=0,this[7]=0,this[8]=0,this[9]=0,this[10]=2*o,this[11]=0,this[12]=(t+e)*n,this[13]=(s+i)*a,this[14]=(h+r)*o,this[15]=1,this}fromQuaternion(t){let e,i,s,r,h,n,a,o,l,u,d,c,g,m,_,f;return e=t[0],i=t[1],s=t[2],r=t[3],h=e+e,n=i+i,a=s+s,o=e*h,l=i*h,u=i*n,d=s*h,c=s*n,g=s*a,m=r*h,_=r*n,f=r*a,this[0]=1-u-g,this[1]=l+f,this[2]=d-_,this[3]=0,this[4]=l-f,this[5]=1-o-g,this[6]=c+m,this[7]=0,this[8]=d+_,this[9]=c-m,this[10]=1-o-u,this[11]=0,this[12]=0,this[13]=0,this[14]=0,this[15]=1,this}setPosition(t){return this.x=t[0],this.y=t[1],this.z=t[2],this}inverse(t=this){let e,i,s,r,h,n,a,o,l,u,d,c,g,m,_,f,p,b,x,v,M,y,E,w,A,F,I,C,N;return e=t[0],i=t[1],s=t[2],r=t[3],h=t[4],n=t[5],a=t[6],o=t[7],l=t[8],u=t[9],d=t[10],c=t[11],g=t[12],m=t[13],_=t[14],f=t[15],p=e*n-i*h,b=e*a-s*h,x=e*o-r*h,v=i*a-s*n,M=i*o-r*n,y=s*o-r*a,E=l*m-u*g,w=l*_-d*g,A=l*f-c*g,F=u*_-d*m,I=u*f-c*m,(N=p*(C=d*f-c*_)-b*I+x*F+v*A-M*w+y*E)&&(N=1/N,this[0]=(n*C-a*I+o*F)*N,this[1]=(s*I-i*C-r*F)*N,this[2]=(m*y-_*M+f*v)*N,this[3]=(d*M-u*y-c*v)*N,this[4]=(a*A-h*C-o*w)*N,this[5]=(e*C-s*A+r*w)*N,this[6]=(_*x-g*y-f*b)*N,this[7]=(l*y-d*x+c*b)*N,this[8]=(h*I-n*A+o*E)*N,this[9]=(i*A-e*I-r*E)*N,this[10]=(g*M-m*x+f*p)*N,this[11]=(u*x-l*M-c*p)*N,this[12]=(n*w-h*F-a*E)*N,this[13]=(e*F-i*w+s*E)*N,this[14]=(m*b-g*v-_*p)*N,this[15]=(l*v-u*b+d*p)*N),this}compose(t,e,i){let s,r,h,n,a,o,l,u,d,c,g,m,_,f,p,b,x,v,M;return s=t[0],r=t[1],h=t[2],n=t[3],a=s+s,o=r+r,l=h+h,u=s*a,d=s*o,c=s*l,g=r*o,m=r*l,_=h*l,f=n*a,p=n*o,b=n*l,x=i[0],v=i[1],M=i[2],this[0]=(1-(g+_))*x,this[1]=(d+b)*x,this[2]=(c-p)*x,this[3]=0,this[4]=(d-b)*v,this[5]=(1-(u+_))*v,this[6]=(m+f)*v,this[7]=0,this[8]=(c+p)*M,this[9]=(m-f)*M,this[10]=(1-(u+g))*M,this[11]=0,this[12]=e[0],this[13]=e[1],this[14]=e[2],this[15]=1,this}decompose(t,e,i){let s,r,h,a,o,l,u;
1return s=n([this[0],this[1],this[2]]),r=n([this[4],this[5],this[6]]),h=n([this[8],this[9],this[10]]),0>v(this)&&(s=-s),e[0]=this[12],e[1]=this[13],e[2]=this[14],a=this.slice(),o=1/s,l=1/r,u=1/h,a[0]*=o,a[1]*=o,a[2]*=o,a[4]*=l,a[5]*=l,a[6]*=l,a[8]*=u,a[9]*=u,a[10]*=u,E(t,a),i[0]=s,i[1]=r,i[2]=h,this}getRotation(t){return E(t,this),this}getTranslation(t){return t[0]=this[12],t[1]=this[13],t[2]=this[14],this}getScaling(t){return y(t,this),this}getMaxScaleOnAxis(){let t,e,i,s,r,h,n,a,o;return t=this[0],e=this[1],i=this[2],s=this[4],r=this[5],h=this[6],n=this[8],Math.sqrt(Math.max(t*t+e*e+i*i,s*s+r*r+h*h,n*n+(a=this[9])*a+(o=this[10])*o))}lookAt(t,e,i){let s,r,h,n,a,o,l,u,d,c,g,m,_;return s=t[0],r=t[1],h=t[2],n=i[0],a=i[1],o=i[2],l=s-e[0],0==(c=l*l+(u=r-e[1])*u+(d=h-e[2])*d)?d=1:(l*=c=1/Math.sqrt(c),u*=c,d*=c),0==(c=(g=a*d-o*u)*g+(m=o*l-n*d)*m+(_=n*u-a*l)*_)&&(o?n+=1e-6:a?o+=1e-6:a+=1e-6,c=(g=a*d-o*u)*g+(m=o*l-n*d)*m+(_=n*u-a*l)*_),g*=c=1/Math.sqrt(c),m*=c,_*=c,this[0]=g,this[1]=m,this[2]=_,this[3]=0,this[4]=u*_-d*m,this[5]=d*g-l*_,this[6]=l*m-u*g,this[7]=0,this[8]=l,this[9]=u,this[10]=d,this[11]=0,this[12]=s,this[13]=r,this[14]=h,this[15]=1,this}determinant(){return v(this)}fromArray(t,e=0){return this[0]=t[e],this[1]=t[e+1],this[2]=t[e+2],this[3]=t[e+3],this[4]=t[e+4],this[5
1]=t[e+5],this[6]=t[e+6],this[7]=t[e+7],this[8]=t[e+8],this[9]=t[e+9],this[10]=t[e+10],this[11]=t[e+11],this[12]=t[e+12],this[13]=t[e+13],this[14]=t[e+14],this[15]=t[e+15],this}toArray(t=[],e=0){return t[e]=this[0],t[e+1]=this[1],t[e+2]=this[2],t[e+3]=this[3],t[e+4]=this[4],t[e+5]=this[5],t[e+6]=this[6],t[e+7]=this[7],t[e+8]=this[8],t[e+9]=this[9],t[e+10]=this[10],t[e+11]=this[11],t[e+12]=this[12],t[e+13]=this[13],t[e+14]=this[14],t[e+15]=this[15],t}}let I=new F;class C extends Array{constructor(t=0,e=t,i=t,s="YXZ"){super(t,e,i),this.order=s,this.onChange=()=>{},this._target=this;const r=["0","1","2"];return new Proxy(this,{set(t,e){let i=Reflect.set(...arguments);return i&&r.includes(e)&&t.onChange(),i}})}get x(){return this[0]}get y(){return this[1]}get z(){return this[2]}set x(t){this._target[0]=t,this.onChange()}set y(t){this._target[1]=t,this.onChange()}set z(t){this._target[2]=t,this.onChange()}set(t,e=t,i=t){return t.length?this.copy(t):(this._target[0]=t,this._target[1]=e,this._target[2]=i,this.onChange(),this)}copy(t){return this._target[0]=t[0],this._target[1]=t[1],this._target[2]=t[2],this.onChange(),this}reorder(t){return this._target.order=t,this.onChange(),this}fromRotationMatrix(t,e=this.order){return!function(t,e,i="YXZ"){"XYZ"===i?(t[1]=Math.asin(Math.min(Math.max(e[8],-1),1)),.99999>Math.abs(e[8])?(t[0]=Math.atan2(-e[9],e[10]),t[2]=Math.atan2(-e[4],e[0])):(t[0]=Math.atan2(e[6],e[5]),t[2]=0)):"YXZ"===i?(t[0]=Math.asin(-Math.min(Math.max(e[9],-1),1)),.99999>Math.abs(e[9])?(t[1]=Math.atan2(e[8],e[10]),t[2]=Math.atan2(e[1],e[5])):(t[1]=Math.atan2(-e[2],e[0]),t[2]=0)):"ZXY"===i?(t[0]=Math.asin(Math.min(Math.max(e[6],-1),1)),.99999>Math.abs(e[6])?(t[1]=Math.atan2(-e[2],e[10]),t[2]=Math.atan2(-e[4],e[5])):(t[1]=0,t[2]=Math.atan2(e[1],e[0]))):"ZYX"===i?(t[1]=Math.asin(-Math.min(Math.max(e[2],-1),1)),.99999>Math.abs(e[2])?(t[0]=Math.atan2(e[6],e[10]),t[2]=Math.atan2(e[1],e[0])):(t[0]=0,t[2]=Math.atan2(-e[4],e[5]))):"YZX"===i?(t[2]=Math.asin(Math.min(Math.max(e[1],-1),1)),.99999>Math.abs(e[1])?(t[0]=Math.atan2(-e[9],e[5]),t[1]=Math.atan2(-e[2],e[0])):(t[0]=0,t[1]=Math.atan2(e[8],e[10]))):"XZY"===i&&(t[2]=Math.asin(-Math.min(Math.max(e[4],-1),1)),.99999>Math.abs(e[4])?(t[0]=Math.atan2(e[6],e[5]),t[1]=Math.atan2(e[8],e[0])):(t[0]=Math.atan2(-e[9],e[10]),t[1]=0))}(this._target,t,e),this.onChange(),this}fromQuaternion(t,e=this.order,i){return I.fromQuaternion(t),this._target.fromRotationMatrix(I,e),i||this.onChange(),this}fromArray(t,e=0){return this._target[0]=t[e],this._target[1]=t[e+1],this._target[2]=t[e+2],this}toArray(t=[],e=0){return t[e]=this[0],t[e+1]=this[1],t[e+2]=this[2],t}}class N{constructor(){this.parent=null,this.children=[],this.visible=!0,this.matrix=new F,this.worldMatrix=new F,this.matrixAutoUpdate=!0,this.worldMatrixNeedsUpdate=!1,this.position=new f,this.quaternion=new x,this.scale=new f(1),this.rotation=new C,this.up=new f(0,1,0),this.rotation._target.onChange=()=>this.quaternion.fromEuler(this.rotation,!0),this.quaternion._target.onChange=()=>this.rotation.fromQuaternion(this.quaternion,void 0,!0)}setParent(t,e=!0){this.parent&&t!==this.parent&&this.parent.removeChild(this,!1),this.parent=t,e&&t&&t.addChild(this,!1)}addChild(t,e=!0){~this.children.indexOf(t)||this.children.push(t),e&&t.setParent(this,!1)}removeChild(t,e=!0){~this.children.indexOf(t)&&this.children.splice(this.children.indexOf(t),1),e&&t.setParent(null,!1)}updateMatrixWorld(t){this.matrixAutoUpdate&&this.updateMatrix(),(this.worldMatrixNeedsUpdate||t)&&(null===this.parent?this.worldMatrix.copy(this.matrix):this.worldMatrix.multiply(this.parent.worldMatrix,this.matrix),this.worldMatrixNeedsUpdate=!1,t=!0);for(let e=0,i=this.children.length;e<i;e++)this.children[e].updateMatrixWorld(t)}updateMatrix(){this.matrix.compose(this.quaternion,this.position,this.scale),this.worldMatrixNeedsUpdate=!0}traverse(t){if(!t(this))for(let e=0,i=this.children.length;e<i;e++)this.children[e].traverse(t)}decompose(){this.matrix.decompose(this.quaternion._target,this.position,this.scale),this.rotation.fromQuaternion(this.quaternion)}lookAt(t,e=!1){e?this.matrix.lookAt(this.position,t,this.up):this.matrix.lookAt(t,this.position,this.up),this.matrix.getRotation(this.quaternion._target),this.rotation.fromQuaternion(this.quaternion)}}function S(t,e,i){let s=e[0],r=e[1],h=e[2],n=e[3],a=e[4],o=e[5],l=e[6],u=e[7],d=e[8],c=i[0],g=i[1],m=i[2],_=i[3],f=i[4],p=i[5],b=i[6],x=i[7],v=i[8];return t[0]=c*s+g*n+m*l,t[1]=c*r+g*a+m*u,t[2]=c*h+g*o+m*d,t[3]=_*s+f*n+p*l,t[4]=_*r+f*a+p*u,t[5]=_*h+f*o+p*d,t[6]=b*s+x*n+v*l,t[7]=b*r+x*a+v*u,t[8]=b*h+x*o+v*d,t}class G extends Array{constructor(t=1,e=0,i=0,s=0,r=1,h=0,n=0,a=0,o=1){return super(t,e,i,s,r,h,n,a,o),this}set(t,e,i,s,r,h,n,a,o){return t.length?this.copy(t):(this[0]=t,this[1]=e,this[2]=i,this[3]=s,this[4]=r,this[5]=h,this[6]=n,this[7]=a,this[8]=o,this)}translate(t,e=this){let i,s,r,h,n,a,o,l,u,d,c;return i=e[0],s=e[1],r=e[2],h=e[3],n=e[4],a=e[5],o=e[6],l=e[7],u=e[8],d=t[0],c=t[1],this[0]=i,this[1]=s,this[2]=r,this[3]=
1h,this[4]=n,this[5]=a,this[6]=d*i+c*h+o,this[7]=d*s+c*n+l,this[8]=d*r+c*a+u,this}rotate(t,e=this){let i,s,r,h,n,a,o,l,u,d,c;return i=e[0],s=e[1],r=e[2],h=e[3],n=e[4],a=e[5],o=e[6],l=e[7],u=e[8],d=Math.sin(t),c=Math.cos(t),this[0]=c*i+d*h,this[1]=c*s+d*n,this[2]=c*r+d*a,this[3]=c*h-d*i,this[4]=c*n-d*s,this[5]=c*a-d*r,this[6]=o,this[7]=l,this[8]=u,this}scale(t,e=this){let i,s;return i=t[0],s=t[1],this[0]=i*e[0],this[1]=i*e[1],this[2]=i*e[2],this[3]=s*e[3],this[4]=s*e[4],this[5]=s*e[5],this[6]=e[6],this[7]=e[7],this[8]=e[8],this}multiply(t,e){return e?S(this,t,e):S(this,this,t),this}identity(){return this[0]=1,this[1]=0,this[2]=0,this[3]=0,this[4]=1,this[5]=0,this[6]=0,this[7]=0,this[8]=1,this}copy(t){return this[0]=t[0],this[1]=t[1],this[2]=t[2],this[3]=t[3],this[4]=t[4],this[5]=t[5],this[6]=t[6],this[7]=t[7],this[8]=t[8],this}fromMatrix4(t){return this[0]=t[0],this[1]=t[1],this[2]=t[2],this[3]=t[4],this[4]=t[5],this[5]=t[6],this[6]=t[8],this[7]=t[9],this[8]=t[10],this}fromQuaternion(t){let e,i,s,r,h,n,a,o,l,u,d,c,g,m,_,f;return e=t[0],i=t[1],s=t[2],r=t[3],h=e+e,n=i+i,a=s+s,o=e*h,l=i*h,u=i*n,d=s*h,c=s*n,g=s*a,m=r*h,_=r*n,f=r*a,this[0]=1-u-g,this[3]=l-f,this[6]=d+_,this[1]=l+f,this[4]=1-o-g,this[7]=c-m,this[2]=d-_,this[5]=c+m,this[8]=1-o-u,this}fromBasis(t,e,i){return this.set(t[0],t[1],t[2],e[0],e[1],e[2],i[0],i[1],i[2]),this}inverse(t=this){let e,i,s,r,h,n,a,o,l,u,d,c,g;return e=t[0],i=t[1],s=t[2],r=t[3],h=t[4],n=t[5],a=t[6],o=t[7],(g=e*(u=(l=t[8])*h-n*o)+i*(d=-l*r+n*a)+s*(c=o*r-h*a))&&(g=1/g,this[0]=u*g,this[1]=(-l*i+s*o)*g,this[2]=(n*i-s*h)*g,this[3]=d*g,this[4]=(l*e-s*a)*g,this[5]=(-n*e+s*r)*g,this[6]=c*g,this[7]=(-o*e+i*a)*g,this[8]=(h*e-i*r)*g),this}getNormalMatrix(t){let e,i,s,r,h,n,a,o,l,u,d,c,g,m,_,f,p,b,x,v,M,y,E,w,A,F,I,C,N;return e=t[0],i=t[1],s=t[2],r=t[3],h=t[4],n=t[5],a=t[6],o=t[7],l=t[8],u=t[9],d=t[10],c=t[11],g=t[12],m=t[13],_=t[14],f=t[15],p=e*n-i*h,b=e*a-s*h,x=e*o-r*h,v=i*a-s*n,M=i*o-r*n,y=s*o-r*a,E=l*m-u*g,w=l*_-d*g,A=l*f-c*g,F=u*_-d*m,I=u*f-c*m,(N=p*(C=d*f-c*_)-b*I+x*F+v*A-M*w+y*E)&&(N=1/N,this[0]=(n*C-a*I+o*F)*N,this[1]=(a*A-h*C-o*w)*N,this[2]=(h*I-n*A+o*E)*N,this[3]=(s*I-i*C-r*F)*N,this[4]=(e*C-s*A+r*w)*N,this[5]=(i*A-e*I-r*E)*N,this[6]=(m*y-_*M+f*v)*N,this[7]=(_*x-g*y-f*b)*N,this[8]=(g*M-m*x+f*p)*N),this}}let L=0;class O extends N{constructor(t,{geometry:e,program:i,mode:s=t.TRIANGLES,frustumCulled:r=!0,renderOrder:h=0}={}){super(),t.canvas||console.error("gl not passed as first argument to Mesh"),this.gl=t,this.id=L++,this.geometry=e,this.program=i,this.mode=s,this.frustumCulled=r,this.renderOrder=h,this.modelViewMatrix=new F,this.normalMatrix=new G,this.beforeRenderCallbacks=[],this.afterRenderCallbacks=[]}onBeforeRender(t){return this.beforeRenderCallbacks.push(t),this}onAfterRender(t){return this.afterRenderCallbacks.push(t),this}draw({camera:t}={}){t&&(this.program.uniforms.modelMatrix||Object.assign(this.program.uniforms,{modelMatrix:{value:null},viewMatrix:{value:null},modelViewMatrix:{value:null},normalMatrix:{value:null},projectionMatrix:{value:null},cameraPosition:{value:null}}),this.program.uniforms.projectionMatrix.value=t.projectionMatrix,this.program.uniforms.cameraPosition.value=t.worldPosition,this.program.uniforms.viewMatrix.value=t.viewMatrix,this.modelViewMatrix.multiply(t.viewMatrix,this.worldMatrix),this.normalMatrix.getNormalMatrix(this.modelViewMatrix),this.program.uniforms.modelMatrix.value=this.worldMatrix,this.program.uniforms.modelViewMatrix.value=this.modelViewMatrix,this.program.uniforms.normalMatrix.value=this.normalMatrix),this.beforeRenderCallbacks.forEach(e=>e&&e({mesh:this,camera:t}));let e=this.program.cullFace&&0>this.worldMatrix.determinant();this.program.use({flipFaces:e}),this.geometry.draw({mode:this.mode,program:this.program}),this.afterRenderCallbacks.forEach(e=>e&&e({mesh:this,camera:t}))}}let R=1,T={};class B{constructor(t,{vertex:e,fragment:i,uniforms:s={},transparent:r=!1,cullFace:h=t.BACK,frontFace:n=t.CCW,depthTest:a=!0,depthWrite:o=!0,depthFunc:l=t.LEQUAL}={}){t.canvas||console.error("gl not passed as first argument to Program"),this.gl=t,this.uniforms=s,this.id=R++,e||console.warn("vertex shader not supplied"),i||console.warn("fragment shader not supplied"),this.transparent=r,this.cullFace=h,this.frontFace=n,this.depthTest=a,this.depthWrite=o,this.depthFunc=l,this.blendFunc={},this.blendEquation={},this.stencilFunc={},this.stencilOp={},this.transparent&&!this.blendFunc.src&&(this.gl.renderer.premultipliedAlpha?this.setBlendFunc(this.gl.ONE,this.gl.ONE_MINUS_SRC_ALPHA):this.setBlendFunc(this.gl.SRC_ALPHA,this.gl.ONE_MINUS_SRC_ALPHA)),this.vertexShader=t.createShader(t.VERTEX_SHADER),this.fragmentShader=t.createShader(t.FRAGMENT_SHADER),this.program=t.createProgram(),t.attachShader(this.program,this.vertexShader),t.attachShader(this.program,this.fragmentShader),this.setShaders({vertex:e,fragment:i})}setShaders({vertex:t,fragment:e}){if(t&&(this.gl.shaderSource(this.vertexShader,t),this.gl.compileShader(this.vertexShader),""!==this.gl.getShaderInfoLog(this.vertexShader)&&console.warn(`${this.gl.getShaderInfoLog(this.vertexShader)}
2Vertex Shader
3${q(t)}`)),e&&(this.gl.shaderSource(this.fragmentShader,e),this.gl.compileShader(this.fragmentShader),""!==this.gl.getShaderInfoLog(this.fragmentShader)&&console.warn(`${this.gl.getShaderInfoLog(this.fragmentShader)}
4Fragment Shader
5${q(e)}`)),this.gl.linkProgram(this.program),!this.gl.getProgramParameter(this.program,this.gl.LINK_STATUS))return console.warn(this.gl.getProgramInfoLog(this.program));this.uniformLocations=new Map;let i=this.gl.getProgramParameter(this.program,this.gl.ACTIVE_UNIFORMS);for(let t=0;t<i;t++){let e=this.gl.getActiveUniform(this.program,t);this.uniformLocations.set(e,this.gl.getUniformLocation(this.program,e.name));let i=e.name.match(/(\w+)/g);e.uniformName=i[0],e.nameComponents=i.slice(1)}this.attributeLocations=new Map;let s=[],r=this.gl.getProgramParameter(this.program,this.gl.ACTIVE_ATTRIBUTES);for(let t=0;t<r;t++){let e=this.gl.getActiveAttrib(this.program,t),i=this.gl.getAttribLocation(this.program,e.name);-1!==i&&(s[i]=e.name,this.attributeLocations.set(e,i))}this.attributeOrder=s.join("")}setBlendFunc(t,e,i,s){this.blendFunc.src=t,this.blendFunc.dst=e,this.blendFunc.srcAlpha=i,this.blendFunc.dstAlpha=s,t&&(this.transparent=!0)}setBlendEquation(t,e){this.blendEquation.modeRGB=t,this.blendEquation.modeAlpha=e}setStencilFunc(t,e,i){this.stencilRef=e,this.stencilFunc.func=t,this.stencilFunc.ref=e,this.stencilFunc.mask=i}setStencilOp(t,e,i){this.stencilOp.stencilFail=t,this.stencilOp.depthFail=e,this.stencilOp.depthPass=i}applyState(){this.depthTest?this.gl.renderer.enable(this.gl.DEPTH_TEST):this.gl.renderer.disable(this.gl.DEPTH_TEST),this.cullFace?this.gl.renderer.enable(this.gl.CULL_FACE):this.gl.renderer.disable(this.gl.CULL_FACE),this.blendFunc.src?this.gl.renderer.enable(this.gl.BLEND):this.gl.renderer.disable(this.gl.BLEND),this.cullFace&&this.gl.renderer.setCullFace(this.cullFace),this.gl.renderer.setFrontFace(this.frontFace),this.gl.renderer.setDepthMask(this.depthWrite),this.gl.renderer.setDepthFunc(this.depthFunc),this.blendFunc.src&&this.gl.renderer.setBlendFunc(this.blendFunc.src,this.blendFunc.dst,this.blendFunc.srcAlpha,this.blendFunc.dstAlpha),this.gl.renderer.setBlendEquation(this.blendEquation.modeRGB,this.blendEquation.modeAlpha),this.stencilFunc.func||this.stencilOp.stencilFail?this.gl.renderer.enable(this.gl.STENCIL_TEST):this.gl.renderer.disable(this.gl.STENCIL_TEST),this.gl.renderer.setStencilFunc(this.stencilFunc.func,this.stencilFunc.ref,this.stencilFunc.mask),this.gl.renderer.setStencilOp(this.stencilOp.stencilFail,this.stencilOp.depthFail,this.stencilOp.depthPass)}use({flipFaces:t=!1}={}){let e=-1;this.gl.renderer.state.currentProgram!==this.id&&(this.gl.useProgram(this.program),this.gl.renderer.state.currentProgram=this.id
5),this.uniformLocations.forEach((t,i)=>{let s=this.uniforms[i.uniformName];for(let t of i.nameComponents){if(!s)break;if(t in s)s=s[t];else if(Array.isArray(s.value))break;else{s=void 0;break}}if(!s)return z(`Active uniform ${i.name} has not been supplied`);if(s&&void 0===s.value)return z(`${i.name} uniform is missing a value parameter`);if(s.value.texture)return e+=1,s.value.update(e),P(this.gl,i.type,t,e);if(s.value.length&&s.value[0].texture){let r=[];return s.value.forEach(t=>{e+=1,t.update(e),r.push(e)}),P(this.gl,i.type,t,r)}P(this.gl,i.type,t,s.value)}),this.applyState(),t&&this.gl.renderer.setFrontFace(this.frontFace===this.gl.CCW?this.gl.CW:this.gl.CCW)}remove(){this.gl.deleteProgram(this.program)}}function P(t,e,i,s){s=s.length?function(t){let e=t.length,i=t[0].length;if(void 0===i)return t;let s=e*i,r=T[s];r||(T[s]=r=new Float32Array(s));for(let s=0;s<e;s++)r.set(t[s],s*i);return r}(s):s;let r=t.renderer.state.uniformLocations.get(i);if(s.length)if(void 0===r||r.length!==s.length)t.renderer.state.uniformLocations.set(i,s.slice(0));else{if(function(t,e){if(t.length!==e.length)return!1;for(let i=0,s=t.length;i<s;i++)if(t[i]!==e[i])return!1;return!0}(r,s))return;r.set?r.set(s):function(t,e){for(let i=0,s=t.length;i<s;i++)t[i]=e[i]}(r,s),t.renderer.state.uniformLocations.set(i,r)}else{if(r===s)return;t.renderer.state.uniformLocations.set(i,s)}switch(e){case 5126:return s.length?t.uniform1fv(i,s):t.uniform1f(i,s);case 35664:return t.uniform2fv(i,s);case 35665:return t.uniform3fv(i,s);case 35666:return t.uniform4fv(i,s);case 35670:case 5124:case 35678:case 36306:case 35680:case 36289:return s.length?t.uniform1iv(i,s):t.uniform1i(i,s);case 35671:case 35667:return t.uniform2iv(i,s);case 35672:case 35668:return t.uniform3iv(i,s);case 35673:case 35669:return t.uniform4iv(i,s);case 35674:return t.uniformMatrix2fv(i,!1,s);case 35675:return t.uniformMatrix3fv(i,!1,s);case 35676:return t.uniformMatrix4fv(i,!1,s)}}function q(t){let e=t.split("\n");for(let t=0;t<e.length;t++)e[t]=t+1+": "+e[t];return e.join("\n")}let k=0;function z(t){!(k>100)&&(console.warn(t),++k>100&&console.warn("More than 100 program warnings - stopping logs."))}let D=new f,U=1;class V{constructor({canvas:t=document.createElement("canvas"),width:e=300,height:i=150,dpr:s=1,alpha:r=!1,depth:h=!0,stencil:n=!1,antialias:a=!1,premultipliedAlpha:o=!1,preserveDrawingBuffer:l=!1,powerPreference:u="default",autoClear:d=!0,webgl:c=2}={}){const g={alpha:r,depth:h,stencil:n,antialias:a,premultipliedAlpha:o,preserveDrawingBuffer:l,powerPreference:u};this.dpr=s,this.alpha=r,this.color=!0,this.depth=h,this.stencil=n,this.premultipliedAlpha=o,this.autoClear=d,this.id=U++,2===c&&(this.gl=t.getContext("webgl2",g)),this.isWebgl2=!!this.gl,this.gl||(this.gl=t.getContext("webgl",g)),this.gl||console.error("unable to create webgl context"),this.gl.renderer=this,this.setSize(e,i),this.state={},this.state.blendFunc={src:this.gl.ONE,dst:this.gl.ZERO},this.state.blendEquation={modeRGB:this.gl.FUNC_ADD},this.state.cullFace=!1,this.state.frontFace=this.gl.CCW,this.state.depthMask=!0,this.state.depthFunc=this.gl.LEQUAL,this.state.premultiplyAlpha=!1,this.state.flipY=!1,this.state.unpackAlignment=4,this.state.framebuffer=null,this.state.viewport={x:0,y:0,width:null,height:null},this.state.textureUnits=[],this.state.activeTextureUnit=0,this.state.boundBuffer=null,this.state.uniformLocations=new Map,this.state.currentProgram=null,this.extensions={},this.isWebgl2?(this.getExtension("EXT_color_buffer_float"),this.getExtension("OES_texture_float_linear")):(this.getExtension("OES_texture_float"),this.getExtension("OES_texture_float_linear"),this.getExtension("OES_texture_half_float"),this.getExtension("OES_texture_half_float_linear"),this.getExtension("OES_element_index_uint"),this.getExtension("OES_standard_derivatives"),this.getExtension("EXT_sRGB"),this.getExtension("WEBGL_depth_texture"),this.getExtension("WEBGL_draw_buffers")),this.getExtension("WEBGL_compressed_texture_astc"),this.getExtension("EXT_texture_compression_bptc"),this.getExtension("WEBGL_compressed_texture_s3tc"),this.getExtension("WEBGL_compressed_texture_etc1"),this.getExtension("WEBGL_compressed_texture_pvrtc"),this.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc"),this.vertexAttribDivisor=this.getExtension("ANGLE_instanced_arrays","vertexAttribDivisor","vertexAttribDivisorANGLE"),this.drawArraysInstanced=this.getExtension("ANGLE_instanced_arrays","drawArraysInstanced","drawArraysInstancedANGLE"),this.drawElementsInstanced=this.getExtension("ANGLE_instanced_arrays","drawElementsInstanced","drawElementsInstancedANGLE"),this.createVertexArray=this.getExtension("OES_vertex_array_object","createVertexArray","createVertexArrayOES"),this.bindVertexArray=this.getExtension("OES_vertex_array_object","bindVertexArray","bindVertexArrayOES"),this.deleteVertexArray=this.getExtension("OES_vertex_array_object","deleteVertexArray","deleteVertexArrayOES"),this.drawBuffers=this.getExtension("WEBGL_draw_buffers","drawBuffers","drawBuffersWEBGL"),this.parameters={},this.parameters.maxTextureUnits=this.gl.getParameter(this.gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS),this.parameters.maxAnisotropy=this.getExtension("EXT_texture_filter_anisotropic")?this.gl.getParameter(this.getExtension("EXT_texture_filter_anisotropic").MAX_TEXTURE_MAX_ANISOTROPY_EXT):0}setSize(t,e){this.width=t,this.height=e,this.gl.canvas.width=t*this.dpr,this.gl.canvas.height=e*this.dpr,this.gl.canvas.style&&Object.assign(this.gl.canvas.style,{width:t+"px",height:e+"px"})}setViewport(t,e,i=0,s=0){(this.state.viewport.width!==t||this.state.viewport.height!==e)&&(this.state.viewport.width=t,this.state.viewport.height=e,this.state.viewport.x=i,this.state.viewport.y=s,this.gl.viewport(i,s,t,e))}setScissor(t,e,i=0,s=0){this.gl.scissor(i,s,t,e)}enable(t){!0!==this.state[t]&&(this.gl.enable(t),this.state[t]=!0)}disable(t){!1!==this.state[t]&&(this.gl.disable(t),this.state[t]=!1)}setBlendFunc(t,e,i,s){(this.state.blendFunc.src!==t||this.state.blendFunc.dst!==e||this.state.blendFunc.srcAlpha!==i||this.state.blendFunc.dstAlpha!==s)&&(this.state.blendFunc.src=t,this.state.blendFunc.dst=e,this.state.blendFunc.srcAlpha=i,this.state.blendFunc.dstAlpha=s,void 0!==i?this.gl.blendFuncSeparate(t,e,i,s):this.gl.blendFunc(t,e))}setBlendEquation(t,e){t=t||this.gl.FUNC_ADD,(this.state.blendEquation.modeRGB!==t||this.state.blendEquation.modeAlpha!==e)&&(this.state.blendEquation.modeRGB=t,this.state.blendEquation.modeAlpha=e,void 0!==e?this.gl.blendEquationSeparate(t,e):this.gl.blendEquation(t))}setCullFace(t){this.state.cullFace!==t&&(this.state.cullFace=t,this.gl.cullFace(t))}setFrontFace(t){this.state.frontFace!==t&&(this.state.frontFace=t,this.gl.frontFace(t))}setDepthMask(t){this.state.depthMask!==t&&(this.state.depthMask=t,this.gl.depthMask(t))}setDepthFunc(t){this.state.depthFunc!==t&&(this.state.depthFunc=t,this.gl.depthFunc(t))}setStencilMask(t){this.state.stencilMask!==t&&(this.state.stencilMask=t,this.gl.stencilMask(t))}setStencilFunc(t,e,i){(this.state.stencilFunc!==t||this.state.stencilRef!==e||this.state.stencilFuncMask!==i)&&(this.state.stencilFunc=t||this.gl.ALWAYS,this.state.stencilRef=e||0,this.state.stencilFuncMask=i||0,this.gl.stencilFunc(t||this.gl.ALWAYS,e||0,i||0))}setStencilOp(t,e,i){(this.state.stencilFail!==t||this.state.stencilDepthFail!==e||this.state.stencilDepthPass!==i)&&(this.state.stencilFail=t,this.state.stencilDepthFail=e,this.state.stencilDepthPass=i,this.gl.stencilOp(t,e,i))}activeTexture(t){this.state.activeTextureUnit!==t&&(this.state.activeTextureUnit=t,this.gl.activeTexture(this.gl.TEXTURE0+t))}bindFramebuffer({target:t=this.gl.FRAMEBUFFER,buffer:e=null}={}){this.state.framebuffer!==e&&(this.state.framebuffer=e,this.gl.bindFramebuffer(t,e))}getExtension(t,e,i){return e&&this.gl[e]?this.gl[e].bind(this.gl):(this.extensions[t]||(this.extensions[t]=this.gl.getExtension(t)),e)?this.extensions[t]?this.extensions[t][i].bind(this.extensions[t]):null:this.extensions[t]}sortOpaque(t,e){return t.renderOrder!==e.renderOrder?t.renderOrder-e.renderOrder:t.program.id!==e.program.id?t.program.id-e.program.id:t.zDepth!==e.zDepth?t.zDepth-e.zDepth:e.id-t.id}
5sortTransparent(t,e){return t.renderOrder!==e.renderOrder?t.renderOrder-e.renderOrder:t.zDepth!==e.zDepth?e.zDepth-t.zDepth:e.id-t.id}sortUI(t,e){return t.renderOrder!==e.renderOrder?t.renderOrder-e.renderOrder:t.program.id!==e.program.id?t.program.id-e.program.id:e.id-t.id}getRenderList({scene:t,camera:e,frustumCull:i,sort:s}){let r=[];if(e&&i&&e.updateFrustum(),t.traverse(t=>!t.visible||(t.draw?void((!i||!t.frustumCulled||!e||e.frustumIntersectsMesh(t))&&r.push(t)):void 0)),s){let t=[],i=[],s=[];r.forEach(r=>{r.program.transparent?r.program.depthTest?i.push(r):s.push(r):t.push(r),r.zDepth=0,0===r.renderOrder&&r.program.depthTest&&e&&(r.worldMatrix.getTranslation(D),D.applyMatrix4(e.projectionViewMatrix),r.zDepth=D.z)}),t.sort(this.sortOpaque),i.sort(this.sortTransparent),s.sort(this.sortUI),r=t.concat(i,s)}return r}render({scene:t,camera:e,target:i=null,update:s=!0,sort:r=!0,frustumCull:h=!0,clear:n}){null===i?(this.bindFramebuffer(),this.setViewport(this.width*this.dpr,this.height*this.dpr)):(this.bindFramebuffer(i),this.setViewport(i.width,i.height)),(n||this.autoClear&&!1!==n)&&(this.depth&&(!i||i.depth)&&(this.enable(this.gl.DEPTH_TEST),this.setDepthMask(!0)),(this.stencil||!i||i.stencil)&&(this.enable(this.gl.STENCIL_TEST),this.setStencilMask(255)),this.gl.clear((this.color?this.gl.COLOR_BUFFER_BIT:0)|(this.depth?this.gl.DEPTH_BUFFER_BIT:0)|(this.stencil?this.gl.STENCIL_BUFFER_BIT:0))),s&&t.updateMatrixWorld(),e&&e.updateMatrixWorld(),this.getRenderList({scene:t,camera:e,frustumCull:h,sort:r}).forEach(t=>{t.draw({camera:e})})}}let W=new f,X=1,j=1,Y=!1;class H{constructor(t,e={}){for(let i in t.canvas||console.error("gl not passed as first argument to Geometry"),this.gl=t,this.attributes=e,this.id=X++,this.VAOs={},this.drawRange={start:0,count:0},this.instancedCount=0,this.gl.renderer.bindVertexArray(null),this.gl.renderer.currentGeometry=null,this.glState=this.gl.renderer.state,e)this.addAttribute(i,e[i])}addAttribute(t,e){if(this.attributes[t]=e,e.id=j++,e.size=e.size||1,e.type=e.type||(e.data.constructor===Float32Array?this.gl.FLOAT:e.data.constructor===Uint16Array?this.gl.UNSIGNED_SHORT:this.gl.UNSIGNED_INT),e.target="index"===t?this.gl.ELEMENT_ARRAY_BUFFER:this.gl.ARRAY_BUFFER,e.normalized=e.normalized||!1,e.stride=e.stride||0,e.offset=e.offset||0,e.count=e.count||(e.stride?e.data.byteLength/e.stride:e.data.length/e.size),e.divisor=e.instanced||0,e.needsUpdate=!1,e.usage=e.usage||this.gl.STATIC_DRAW,e.buffer||this.updateAttribute(e),e.divisor){if(this.isInstanced=!0,this.instancedCount&&this.instancedCount!==e.count*e.divisor)return console.warn("geometry has multiple instanced buffers of different length"),this.instancedCount=Math.min(this.instancedCount,e.count*e.divisor);this.instancedCount=e.count*e.divisor}else"index"===t?this.drawRange.count=e.count:this.attributes.index||(this.drawRange.count=Math.max(this.drawRange.count,e.count))}updateAttribute(t){let e=!t.buffer;e&&(t.buffer=this.gl.createBuffer()),this.glState.boundBuffer!==t.buffer&&(this.gl.bindBuffer(t.target,t.buffer),this.glState.boundBuffer=t.buffer),e?this.gl.bufferData(t.target,t.data,t.usage):this.gl.bufferSubData(t.target,0,t.data),t.needsUpdate=!1}setIndex(t){this.addAttribute("index",t)}setDrawRange(t,e){this.drawRange.start=t,this.drawRange.count=e}setInstancedCount(t){this.instancedCount=t}createVAO(t){this.VAOs[t.attributeOrder]=this.gl.renderer.createVertexArray(),this.gl.renderer.bindVertexArray(this.VAOs[t.attributeOrder]),this.bindAttributes(t)}bindAttributes(t){t.attributeLocations.forEach((t,{name:e,type:i})=>{if(!this.attributes[e])return void console.warn(`active attribute ${e} not being supplied`);let s=this.attributes[e];this.gl.bindBuffer(s.target,s.buffer),this.glState.boundBuffer=s.buffer;let r=1;35674===i&&(r=2),35675===i&&(r=3),35676===i&&(r=4);let h=s.size/r,n=1===r?0:r*r*4,a=1===r?0:4*r;for(let e=0;e<r;e++)this.gl.vertexAttribPointer(t+e,h,s.type,s.normalized,s.stride+n,s.offset+e*a),this.gl.enableVertexAttribArray(t+e),this.gl.renderer.vertexAttribDivisor(t+e,s.divisor)}),this.attributes.index&&this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER,this.attributes.index.buffer)}draw({program:t,mode:e=this.gl.TRIANGLES}){this.gl.renderer.currentGeometry!==`${this.id}_${t.attributeOrder}`&&(this.VAOs[t.attributeOrder]||this.createVAO(t),this.gl.renderer.bindVertexArray(this.VAOs[t.attributeOrder]),this.gl.renderer.currentGeometry=`${this.id}_${t.attributeOrder}`),t.attributeLocations.forEach((t,{name:e})=>{let i=this.attributes[e];i.needsUpdate&&this.updateAttribute(i)});let i=2;this.attributes.index?.type===this.gl.UNSIGNED_INT&&(i=4),this.isInstanced?this.attributes.index?this.gl.renderer.drawElementsInstanced(e,this.drawRange.count,this.attributes.index.type,this.attributes.index.offset+this.drawRange.start*i,this.instancedCount):this.gl.renderer.drawArraysInstanced(e,this.drawRange.start,this.drawRange.count,this.instancedCount):this.attributes.index?this.gl.drawElements(e,this.drawRange.count,this.attributes.index.type,this.attributes.index.offset+this.drawRange.start*i):this.gl.drawArrays(e,this.drawRange.start,this.drawRange.count)}getPosition(){let t=this.attributes.position;return t.data?t:Y?void 0:(console.warn("No position buffer data found to compute bounds"),Y=!0)}computeBoundingBox(t){t||(t=this.getPosition());let e=t.data,i=t.size;this.bounds||(this.bounds={min:new f,max:new f,center:new f,scale:new f,radiu
5s:1/0});let s=this.bounds.min,r=this.bounds.max,h=this.bounds.center,n=this.bounds.scale;s.set(Infinity),r.set(-1/0);for(let t=0,h=e.length;t<h;t+=i){let i=e[t],h=e[t+1],n=e[t+2];s.x=Math.min(i,s.x),s.y=Math.min(h,s.y),s.z=Math.min(n,s.z),r.x=Math.max(i,r.x),r.y=Math.max(h,r.y),r.z=Math.max(n,r.z)}n.sub(r,s),h.add(s,r).divide(2)}computeBoundingSphere(t){t||(t=this.getPosition());let e=t.data,i=t.size;this.bounds||this.computeBoundingBox(t);let s=0;for(let t=0,r=e.length;t<r;t+=i)W.fromArray(e,t),s=Math.max(s,this.bounds.center.squaredDistance(W));this.bounds.radius=Math.sqrt(s)}remove(){for(let t in this.VAOs)this.gl.renderer.deleteVertexArray(this.VAOs[t]),delete this.VAOs[t];for(let t in this.attributes)this.gl.deleteBuffer(this.attributes[t].buffer),delete this.attributes[t]}}class Z extends H{constructor(t,{attributes:e={}}={}){Object.assign(e,{position:{size:2,data:new Float32Array([-1,-1,3,-1,-1,3])},uv:{size:2,data:new Float32Array([0,0,2,0,0,2])}}),super(t,e)}}let $=`
6attribute vec2 position;
7void main() { gl_Position = vec4(position, 0.0, 1.0); }
8`,Q=`
9precision highp float;
10uniform vec2 resolution;
11uniform float time;
12uniform float waveSpeed;
13uniform float waveFrequency;
14uniform float waveAmplitude;
15uniform vec2 mouse;
16uniform float variant;
17uniform float seed;
18uniform vec3 headerPaper;
19uniform vec3 headerInk;
20vec4 mod289(vec4 x) { return x - floor(x * (1.0/289.0)) * 289.0; }
21vec4 permute(vec4 x) { return mod289(((x * 34.0) + 1.0) * x); }
22vec4 taylorInvSqrt(vec4 r) { return 1.79284291400159 - 0.85373472095314 * r; }
23vec2 fade(vec2 t) { return t*t*t*(t*(t*6.0-15.0)+10.0); }
24
25float cnoise(vec2 P) {
26  vec4 Pi = floor(P.xyxy) + vec4(0.0,0.0,1.0,1.0);
27  vec4 Pf = fract(P.xyxy) - vec4(0.0,0.0,1.0,1.0);
28  Pi = mod289(Pi);
29  vec4 ix = Pi.xzxz;
30  vec4 iy = Pi.yyww;
31  vec4 fx = Pf.xzxz;
32  vec4 fy = Pf.yyww;
33  vec4 i = permute(permute(ix) + iy);
34  vec4 gx = fract(i * (1.0/41.0)) * 2.0 - 1.0;
35  vec4 gy = abs(gx) - 0.5;
36  vec4 tx = floor(gx + 0.5);
37  gx = gx - tx;
38  vec2 g00 = vec2(gx.x, gy.x);
39  vec2 g10 = vec2(gx.y, gy.y);
40  vec2 g01 = vec2(gx.z, gy.z);
41  vec2 g11 = vec2(gx.w, gy.w);
42  vec4 norm = taylorInvSqrt(vec4(dot(g00,g00), dot(g01,g01), dot(g10,g10), dot(g11,g11)));
43  g00 *= norm.x; g01 *= norm.y; g10 *= norm.z; g11 *= norm.w;
44  float n00 = dot(g00, vec2(fx.x, fy.x));
45  float n10 = dot(g10, vec2(fx.y, fy.y));
46  float n01 = dot(g01, vec2(fx.z, fy.z));
47  float n11 = dot(g11, vec2(fx.w, fy.w));
48  vec2 fade_xy = fade(Pf.xy);
49  vec2 n_x = mix(vec2(n00, n01), vec2(n10, n11), fade_xy.x);
50  return 2.3 * mix(n_x.x, n_x.y, fade_xy.y);
51}
52
53const int OCTAVES = 4;
54float fbm(vec2 p) {
55  float value = 0.0;
56  float amp = 1.0;
57  float freq = waveFrequency;
58  for (int i = 0; i < OCTAVES; i++) {
59    value += amp * abs(cnoise(p));
60    p *= freq;
61    amp *= waveAmplitude;
62  }
63  return value;
64}
65
66float pattern(vec2 p) {
67  vec2 p2 = p - time * waveSpeed;
68  return fbm(p + fbm(p2));
69}
70
71
72float bayer(vec2 p) {
73  vec2 a = mod(p, 2.0);
74  vec2 b = mod(floor(p / 2.0), 2.0);
75  float first = 2.0 * a.x + 3.0 * a.y - 4.0 * a.x * a.y;
76  float second = 2.0 * b.x + 3.0 * b.y - 4.0 * b.x * b.y;
77  return (4.0 * first + second + 0.5) / 16.0;
78}
79void main() {
80  vec2 pixel = floor(gl_FragCoord.xy / 2.0);
81  vec2 uv = pixel * 2.0 / resolution;
82  vec2 p = (uv - 0.5) * vec2(resolution.x / resolution.y, 1.0);
83  float f = pattern(p * (variant > 0.5 ? 0.75 : 1.3) + vec2(seed, seed * 0.37));
84  float mouseDistance = distance(uv * vec2(resolution.x / resolution.y, 1.0), mouse * vec2(resolution.x / resolution.y, 1.0));
85  f -= (1.0 - smoothstep(0.0, 0.5, mouseDistance)) * 0.32;
86  float density = clamp(f * 0.82 + abs(uv.x - 0.5) * 0.32, 0.0, 1.0);
87  density *= smoothstep(0.0, 0.65, uv.y);
88  float quantized = floor(density * 3.0 + bayer(pixel)) / 3.0;
89  vec3 paper = vec3(0.992, 0.992, 0.984);
90  vec3 blue = vec3(0.02, 0.37, 0.95);
91  if (variant > 0.5) {
92    // A quieter diagonal field: full contrast for type, visible grain at the edges.
93    float terrain = clamp(f * 0.8 + uv.x * 0.35 + uv.y * 0.22, 0.0, 1.0);
94    quantized = floor(terrain * 3.0 + bayer(pixel)) / 3.0;
95    paper = headerPaper;
96    blue = headerInk;
97    quantized *= mix(0.12, 0.7, smoothstep(0.25, 0.95, uv.x));
98  }
99  gl_FragColor = vec4(mix(paper, blue, quantized), 1.0);
100}
101`;var K=t.i(85433);t.s(["default",0,function({paused:t,variant:e="hero",seed:i=0,area:s="home"}){let n=(0,h.useRef)(null),a=(0,h.useRef)(t);return(0,h.useEffect)(()=>{a.current=t},[t]),(0,h.useEffect)(()=>{let t,s=n.current;if(!s)return;try{t=new V({dpr:1,alpha:!1,antialias:!1})}catch{return}let{gl:r}=t,h=r.canvas;s.appendChild(h);let o=new Z(r),l=getComputedStyle(s),u=(t,e)=>{let i=l.getPropertyValue(t).trim()||e;return[1,3,5].map(t=>parseInt(i.slice(t,t+2),16)/255)},d=new B(r,{vertex:$,fragment:Q,uniforms:{headerPaper:{value:u("--section-color","#c7e0fa")},headerInk:{value:u("--section-depth","#66a1de")},variant:{value:+("header"===e)},seed:{value:i},resolution:{value:[1,1]},time:{value:2},waveSpeed:{value:.055},waveFrequency:{value:3},waveAmplitude:{value:.3},mouse:{value:[-5,-5]}}}),c=new O(r,{geometry:o,program:d}),g=window.matchMedia("(prefers-reduced-motion: reduce)"),m=0,_=0,f=!0,p=!1;function b(){p||t.render({scene:c})}function x(t){!a.current&&t-_>=50&&(d.uniforms.time.value+=Math.min((t-_)/1e3,.05),_=t,b()),m=requestAnimationFrame(x)}function v(){cancelAnimationFrame(m),!p&&f&&!document.hidden&&(b(),g.matches||(m=requestAnimationFrame(x)))}let M=new ResizeObserver(()=>{t.setSize(s.clientWidth,s.clientHeight),d.uniforms.resolution.value=[r.drawingBufferWidth,r.drawingBufferHeight],b()}),y=new IntersectionObserver(([t])=>{f=t.isIntersecting,v()}),E=t=>{if(g.matches||a.current)return;let e=s.getBoundingClientRect();d.uniforms.mouse.value=[(t.clientX-e.left)/e.width,1-(t.clientY-e.top)/e.height]},w=()=>{d.uniforms.mouse.value=[-5,-5]},A=t=>{t.preventDefault(),p=!0,cancelAnimationFrame(m),h.style.visibility="hidden"};return M.observe(s),y.observe(s),s.addEventListener("pointermove",E),s.addEventListener("pointerleave",w),h.addEventListener("webglcontextlost",A),g.addEventListener("change",v),document.addEventListener("visibilitychange",v),v(),()=>{cancelAnimationFrame(m),M.disconnect(),y.disconnect(),s.removeEventListener("pointermove",E),s.removeEventListener("pointerleave",w),h.removeEventListener("webglcontextlost",A),g.removeEventListener("change",v),document.removeEventListener("visibilitychange",v),o.remove(),d.remove(),h.remove(),r.getExtension("WEBGL_lose_context")?.loseContext()}},[e,i,s]),(0,r.jsx)("div",{className:K.default.dither,ref:n,"aria-hidden":"true"})}],38198)}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.