text: (function(Se,kt){typeof exports=="object"&&typeof module!="undefined"?kt(exports):typeof define=="function"&&define.amd?define(["exports"],kt):(Se=typeof globalThis!="undefined"?globalThis:Se||self,kt(Se.niivue={}))})(this,function(Se){"use strict";var kt=function(t,i,e){var n=this;this.program=Oa(t,i,e);var a=/uniform[^;]+[ ](\w+);/g,r=/uniform[^;]+[ ](\w+);/;this.uniforms={};var s=i.match(a),o=e.match(a);s&&s.forEach(function(h){var l=h.match(r);n.uniforms[l[1]]=-1}),o&&o.forEach(function(h){var l=h.match(r);n.uniforms[l[1]]=-1});for(var c in this.uniforms)this.uniforms[c]=t.getUniformLocation(this.program,c)};kt.prototype.use=function(t){t.useProgram(this.program)};var Oa=function(t,i,e){var n=t.createShader(t.VERTEX_SHADER);if(t.shaderSource(n,i),t.compileShader(n),!t.getShaderParameter(n,t.COMPILE_STATUS))return alert("Vertex shader failed to compile, see console for log"),console.log(t.getShaderInfoLog(n)),null;var a=t.createShader(t.FRAGMENT_SHADER);if(t.shaderSource(a,e),t.compileShader(a),!t.getShaderParameter(a,t.COMPILE_STATUS))return alert("Fragment shader failed to compile, see console for log"),console.log(t.getShaderInfoLog(a)),null;var r=t.createProgram();return t.attachShader(r,n),t.attachShader(r,a),t.linkProgram(r),t.getProgramParameter(r,t.LINK_STATUS)?r:(alert("Shader failed to link, see console for log"),console.log(t.getProgramInfoLog(r)),null)},ae=typeof Float32Array!="undefined"?Float32Array:Array;Math.hypot||(Math.hypot=function(){for(var t=0,i=arguments.length;i--;)t+=arguments[i]*arguments[i];return Math.sqrt(t)});function za(t,i,e,n,a,r,s,o,c){var h=new ae(9);return h[0]=t,h[1]=i,h[2]=e,h[3]=n,h[4]=a,h[5]=r,h[6]=s,h[7]=o,h[8]=c,h}function ie(){var t=new ae(16);return ae!=Float32Array&&(t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0),t[0]=1,t[5]=1,t[10]=1,t[15]=1,t}function he(t){var i=new ae(16);return i[0]=t[0],i[1]=t[1],i[2]=t[2],i[3]=t[3],i[4]=t[4],i[5]=t[5],i[6]=t[6],i[7]=t[7],i[8]=t[8],i[9]=t[9],i[10]=t[10],i[11]=t[11],i[12]=t[12],i[13]=t[13],i[14]=t[14],i[15]=t[15],i}function Ga(t,i){return t[0]=i[0],t[1]=i[1],t[2]=i[2],t[3]=i[3],t[4]=i[4],t[5]=i[5],t[6]=i[6],t[7]=i[7],t[8]=i[8],t[9]=i[9],t[10]=i[10],t[11]=i[11],t[12]=i[12],t[13]=i[13],t[14]=i[14],t[15]=i[15],t}function ue(t,i,e,n,a,r,s,o,c,h,l,p,f,d,E,A){var x=new ae(16);return x[0]=t,x[1]=i,x[2]=e,x[3]=n,x[4]=a,x[5]=r,x[6]=s,x[7]=o,x[8]=c,x[9]=h,x[10]=l,x[11]=p,x[12]=f,x[13]=d,x[14]=E,x[15]=A,x}function Ya(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function Qe(t,i){if(t===i){var e=i[1],n=i[2],a=i[3],r=i[6],s=i[7],o=i[11];t[1]=i[4],t[2]=i[8],t[3]=i[12],t[4]=e,t[6]=i[9],t[7]=i[13],t[8]=n,t[9]=r,t[11]=i[14],t[12]=a,t[13]=s,t[14]=o}else t[0]=i[0],t[1]=i[4],t[2]=i[8],t[3]=i[12],t[4]=i[1],t[5]=i[5],t[6]=i[9],t[7]=i[13],t[8]=i[2],t[9]=i[6],t[10]=i[10],t[11]=i[14],t[12]=i[3],t[13]=i[7],t[14]=i[11],t[15]=i[15];return t}function Pe(t,i){var e=i[0],n=i[1],a=i[2],r=i[3],s=i[4],o=i[5],c=i[6],h=i[7],l=i[8],p=i[9],f=i[10],d=i[11],E=i[12],A=i[13],x=i[14],w=i[15],I=e*o-n*s,D=e*c-a*s,T=e*h-r*s,R=n*c-a*o,P=n*h-r*o,O=a*h-r*c,Q=l*A-p*E,Z=l*x-f*E,K=l*w-d*E,tt=p*x-f*A,at=p*w-d*A,ht=f*w-d*x,z=I*ht-D*at+T*tt+R*K-P*Z+O*Q;return z?(z=1/z,t[0]=(o*ht-c*at+h*tt)*z,t[1]=(a*at-n*ht-r*tt)*z,t[2]=(A*O-x*P+w*R)*z,t[3]=(f*P-p*O-d*R)*z,t[4]=(c*K-s*ht-h*Z)*z,t[5]=(e*ht-a*K+r*Z)*z,t[6]=(x*T-E*O-w*D)*z,t[7]=(l*O-f*T+d*D)*z,t[8]=(s*at-o*K+h*Q)*z,t[9]=(n*K-e*at-r*Q)*z,t[10]=(E*P-A*T+w*I)*z,t[11]=(p*T-l*P-d*I)*z,t[12]=(o*Z-s*tt-c*Q)*z,t[13]=(e*tt-n*Z+a*Q)*z,t[14]=(A*D-E*R-x*I)*z,t[15]=(l*R-p*D+f*I)*z,t):null}function ti(t,i,e){var n=i[0],a=i[1],r=i[2],s=i[3],o=i[4],c=i[5],h=i[6],l=i[7],p=i[8],f=i[9],d=i[10],E=i[11],A=i[12],x=i[13],w=i[14],I=i[15],D=e[0],T=e[1],R=e[2],P=e[3];return t[0]=D*n+T*o+R*p+P*A,t[1]=D*a+T*c+R*f+P*x,t[2]=D*r+T*h+R*d+P*w,t[3]=D*s+T*l+R*E+P*I,D=e[4],T=e[5],R=e[6],P=e[7],t[4]=D*n+T*o+R*p+P*A,t[5]=D*a+T*c+R*f+P*x,t[6]=D*r+T*h+R*d+P*w,t[7]=D*s+T*l+R*E+P*I,D=e[8],T=e[9],R=e[10],P=e[11],t[8]=D*n+T*o+R*p+P*A,t[9]=D*a+T*c+R*f+P*x,t[10]=D*r+T*h+R*d+P*w,t[11]=D*s+T*l+R*E+P*I,D=e[12],T=e[13],R=e[14],P=e[15],t[12]=D*n+T*o+R*p+P*A,t[13]=D*a+T*c+R*f+P*x,t[14]=D*r+T*h+R*d+P*w,t[15]=D*s+T*l+R*E+P*I,t}function $i(t,i,e){var n=e[0],a=e[1],r=e[2],s,o,c,h,l,p,f,d,E,A,x,w;return i===t?(t[12]=i[0]*n+i[4]*a+i[8]*r+i[12],t[13]=i[1]*n+i[5]*a+i[9]*r+i[13],t[14]=i[2]*n+i[6]*a+i[10]*r+i[14],t[15]=i[3]*n+i[7]*a+i[11]*r+i[15]):(s=i[0],o=i[1],c=i[2],h=i[3],l=i[4],p=i[5],f=i[6],d=i[7],E=i[8],A=i[9],x=i[10],w=i[11],t[0]=s,t[1]=o,t[2]=c,t[3]=h,t[4]=l,t[5]=p,t[6]=f,t[7]=d,t[8]=E,t[9]=A,t[10]=x,t[11]=w,t[12]=s*n+l*a+E*r+i[12],t[13]=o*n+p*a+A*r+i[13],t[14]=c*n+f*a+x*r+i[14],t[15]=h*n+d*a+w*r+i[15]),t}function zn(t,i,e){var n=Math.sin(e),a=Math.cos(e),r=i[4],s=i[5],o=i[6],c=i[7],h=i[8],l=i[9],p=i[10],f=i[11];return i!==t&&(t[0]=i[0],t[1]=i[1],t[2]=i[2],t[3]=i[3],t[12]=i[12],t[13]=i[13],t[14]=i[14],t[15]=i[15]),t[4]=r*a+h*n,t[5]=s*a+l*n,t[6]=o*a+p*n,t[7]=c*a+f*n,t[8]=h*a-r*n,t[9]=l*a-s*n,t[10]=p*a-o*n,t[11]=f*a-c*n,t}function Gn(t,i,e){var n=Math.sin(e),a=Math.cos(e),r=i[0],s=i[1],o=i[2],c=i[3],h=i[4],l=i[5],p=i[6],f=i[7];return i!==t&&(t[8]=i[8],t[9]=i[9],t[10]=i[10],t[11]=i[11],t[12]=i[12],t[13]=i[13],t[14]=i[14],t[15]=i[15]),t[0]=r*a+h*n,t[1]=s*a+l*n,t[2]=o*a+p*n,t[3]=c*a+f*n,t[4]=h*a-r*n,t[5]=l*a-s*n,t[6]=p*a-o*n,t[7]=f*a-c*n,t}function Za(t,i,e,n,a,r,s){var o=1/(i-e),c=1/(n-a),h=1/(r-s);return t[0]=-2*o,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=-2*c,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=2*h,t[11]=0,t[12]=(i+e)*o,t[13]=(a+n)*c,t[14]=(s+r)*h,t[15]=1,t}var Yn=Za;function Ha(t,i,e){return t[0]=i[0]*e,t[1]=i[1]*e,t[2]=i[2]*e,t[3]=i[3]*e,t[4]=i[4]*e,t[5]=i[5]*e,t[6]=i[6]*e,t[7]=i[7]*e,t[8]=i[8]*e,t[9]=i[9]*e,t[10]=i[10]*e,t[11]=i[11]*e,t[12]=i[12]*e,t[13]=i[13]*e,t[14]=i[14]*e,t[15]=i[15]*e,t}function Ae(){var t=new ae(3);return ae!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0),t}function ja(t){var i=new ae(3);return i[0]=t[0],i[1]=t[1],i[2]=t[2],i}function Ue(t){var i=t[0],e=t[1],n=t[2];return Math.hypot(i,e,n)}function Vt(t,i,e){var n=new ae(3);return n[0]=t,n[1]=i,n[2]=e,n}function Zn(t,i){return t[0]=i[0],t[1]=i[1],t[2]=i[2],t}function ei(t,i,e){return t[0]=i[0]+e[0],t[1]=i[1]+e[1],t[2]=i[2]+e[2],t}function $t(t,i,e){return t[0]=i[0]-e[0],t[1]=i[1]-e[1],t[2]=i[2]-e[2],t}function Va(t,i,e){return t[0]=Math.min(i[0],e[0]),t[1]=Math.min(i[1],e[1]),t[2]=Math.min(i[2],e[2]),t}function Qa(t,i,e){return t[0]=Math.max(i[0],e[0]),t[1]=Math.max(i[1],e[1]),t[2]=Math.max(i[2],e[2]),t}function Xa(t,i){return t[0]=-i[0],t[1]=-i[1],t[2]=-i[2],t}function Le(t,i){var e=i[0],n=i[1],a=i[2],r=e*e+n*n+a*a;return r>0&&(r=1/Math.sqrt(r)),t[0]=i[0]*r,t[1]=i[1]*r,t[2]=i[2]*r,t}function Wa(t,i){return t[0]*i[0]+t[1]*i[1]+t[2]*i[2]}function Ka(t,i,e){var n=i[0],a=i[1],r=i[2],s=e[0],o=e[1],c=e[2];return t[0]=a*c-r*o,t[1]=r*s-n*c,t[2]=n*o-a*s,t}function Ja(t,i,e,n){var a=i[0],r=i[1],s=i[2];return t[0]=a+n*(e[0]-a),t[1]=r+n*(e[1]-r),t[2]=s+n*(e[2]-s),t}function tn(t,i){var e=t[0],n=t[1],a=t[2],r=i[0],s=i[1],o=i[2],c=Math.sqrt(e*e+n*n+a*a),h=Math.sqrt(r*r+s*s+o*o),l=c*h,p=l&&Wa(t,i)/l;return Math.acos(Math.min(Math.max(p,-1),1))}var qa=Ue;(function(){var t=Ae();return function(i,e,n,a,r,s){var o,c;for(e||(e=3),n||(n=0),a?c=Math.min(a*e+n,i.length):c=i.length,o=n;o<c;o+=e)t[0]=i[o],t[1]=i[o+1],t[2]=i[o+2],r(t,t,s),i[o]=t[0],i[o+1]=t[1],i[o+2]=t[2];return i}})();function $a(){var t=new ae(4);return ae!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0,t[3]=0),t}function De(t,i,e,n){var a=new ae(4);return a[0]=t,a[1]=i,a[2]=e,a[3]=n,a}function ts(t,i,e){return t[0]=i[0]+e[0],t[1]=i[1]+e[1],t[2]=i[2]+e[2],t[3]=i[3]+e[3],t}function es(t,i,e){return t[0]=i[0]*e[0],t[1]=i[1]*e[1],t[2]=i[2]*e[2],t[3]=i[3]*e[3],t}function Xe(t,i,e){var n=i[0],a=i[1],r=i[2],s=i[3];return t[0]=e[0]*n+e[4]*a+e[8]*r+e[12]*s,t[1]=e[1]*n+e[5]*a+e[9]*r+e[13]*s,t[2]=e[2]*n+e[6]*a+e[10]*r+e[14]*s,t[3]=e[3]*n+e[7]*a+e[11]*r+e[15]*s,t}var is=es;(function(){var t=$a();return function(i,e,n,a,r,s){var o,c;for(e||(e=4),n||(n=0),a?c=Math.min(a*e+n,i.length):c=i.length,o=n;o<c;o+=e)t[0]=i[o],t[1]=i[o+1],t[2]=i[o+2],t[3]=i[o+3],r(t,t,s),i[o]=t[0],i[o+1]=t[1],i[o+2]=t[2],i[o+3]=t[3];return i}})();var en=`#version 300 es
  #line 4
  layout(location=0) in vec3 pos;
  layout(location=1) in vec3 texCoords;
  uniform mat4 mvpMtx;
  out vec3 vColor;
  void main(void) {
  	gl_Position = mvpMtx * vec4(pos, 1.0); //vec4(2.0 * (pos.xyz - 0.5), 1.0);
  	vColor = texCoords;
  }`;const Hn=`vec3 GetBackPosition(vec3 startPositionTex) {
  	vec3 startPosition = startPositionTex * volScale; 
  	vec3 invR = 1.0 / rayDir;
  	vec3 tbot = invR * (vec3(0.0)-startPosition);
  	vec3 ttop = invR * (volScale-startPosition);
  	vec3 tmax = max(ttop, tbot);
  	vec2 t = min(tmax.xx, tmax.yz);
  	vec3 endPosition = startPosition + (rayDir * min(t.x, t.y));
  	//convert world position back to texture position:
  	endPosition = endPosition / volScale;
  	return endPosition;
  }
  vec4 applyClip (vec3 dir, inout vec4 samplePos, inout float len, inout bool isClip) {
  	float cdot = dot(dir,clipPlane.xyz);
  	isClip = false;
  	if  ((clipPlane.a > 1.0) || (cdot == 0.0)) return samplePos;
  	bool frontface = (cdot > 0.0);
  	float clipThick = 2.0;
  	float dis = (-clipPlane.a - dot(clipPlane.xyz, samplePos.xyz-0.5)) / cdot;
  	float  disBackFace = (-(clipPlane.a-clipThick) - dot(clipPlane.xyz, samplePos.xyz-0.5)) / cdot;
  	if (((frontface) && (dis >= len)) || ((!frontface) && (dis <= 0.0))) {
  		samplePos.a = len + 1.0;
  		return samplePos;
  	}
  	if (frontface) {
  		dis = max(0.0, dis);
  		samplePos = vec4(samplePos.xyz+dir * dis, dis);
  		if (dis > 0.0) isClip = true;
  		len = min(disBackFace, len);
  	}
  	if (!frontface) {
  		len = min(dis, len);
  		disBackFace = max(0.0, disBackFace);
  		if (len == dis) isClip = true;
  		samplePos = vec4(samplePos.xyz+dir * disBackFace, disBackFace);
  	}
  	return samplePos;
  }`;var ns=`#version 300 es
  #line 14
  precision highp int;
  precision highp float;
  uniform vec3 rayDir;
  uniform vec3 texVox;
  uniform vec3 volScale;
  uniform vec4 clipPlane;
  uniform highp sampler3D volume, overlay;
  uniform float overlays;
  uniform float backOpacity;
  uniform mat4 mvpMtx;
  uniform mat4 matRAS;
  uniform vec4 clipPlaneColor;
  in vec3 vColor;
  out vec4 fColor;
  `+Hn+`
  float frac2ndc(vec3 frac) {
  //https://stackoverflow.com/questions/7777913/how-to-render-depth-linearly-in-modern-opengl-with-gl-fragcoord-z-in-fragment-sh
  	vec4 pos = vec4(frac.xyz, 1.0); //fraction
  	vec4 dim = vec4(vec3(textureSize(volume, 0)), 1.0);
  	pos = pos * dim;
  	vec4 shim = vec4(-0.5, -0.5, -0.5, 0.0);
  	pos += shim;
  	vec4 mm = transpose(matRAS) * pos;
  	float z_ndc = (mvpMtx * vec4(mm.xyz, 1.0)).z;
  	return (z_ndc + 1.0) / 2.0;
  	
  }
  void main() {
  	fColor = vec4(0.0,0.0,0.0,0.0);
  	//fColor = vec4(vColor.rgb, 1.0); return;
  	vec3 start = vColor;
  	gl_FragDepth = 0.0;
  	vec3 backPosition = GetBackPosition(start);
  	// fColor = vec4(backPosition, 1.0); return;
  	vec3 dir = backPosition - start;
  	float len = length(dir);
  	float lenVox = length((texVox * start) - (texVox * backPosition));
  	if ((lenVox < 0.5) || (len > 3.0)) { //length limit for parallel rays
  		return;
  	}
  	float sliceSize = len / lenVox; //e.g. if ray length is 1.0 and traverses 50 voxels, each voxel is 0.02 in unit cube
  	float stepSize = sliceSize; //quality: larger step is faster traversal, but fewer samples
  	float opacityCorrection = stepSize/sliceSize;
  	dir = normalize(dir);
  	vec4 deltaDir = vec4(dir.xyz * stepSize, stepSize);
  	vec4 samplePos = vec4(start.xyz, 0.0); //ray position
  	float lenNoClip = len;
  	bool isClip = false;
  	vec4 clipPos = applyClip(dir, samplePos, len, isClip);
  	//start: OPTIONAL fast pass: rapid traversal until first hit
  	float stepSizeFast = sliceSize * 1.9;
  	vec4 deltaDirFast = vec4(dir.xyz * stepSizeFast, stepSizeFast);
  	while (samplePos.a <= len) {
  		float val = texture(volume, samplePos.xyz).a;
  		if (val > 0.01) break;
  		samplePos += deltaDirFast; //advance ray position
  	}
  	if ((samplePos.a >= len) && (overlays < 1.0)) {
  		if (isClip)
  			fColor += clipPlaneColor;
  		return;
  	}
  	fColor = vec4(1.0, 1.0, 1.0, 1.0);
  	//gl_FragDepth = frac2ndc(samplePos.xyz); //crude due to fast pass resolution
  	samplePos -= deltaDirFast;
  	if (samplePos.a < 0.0)
  		vec4 samplePos = vec4(start.xyz, 0.0); //ray position
  	//end: fast pass
  	vec4 colAcc = vec4(0.0,0.0,0.0,0.0);
  	vec4 firstHit = vec4(0.0,0.0,0.0,2.0 * lenNoClip);
  	const float earlyTermination = 0.95;
  	float backNearest = len; //assume no hit
  	float ran = fract(sin(gl_FragCoord.x * 12.9898 + gl_FragCoord.y * 78.233) * 43758.5453);
  	samplePos += deltaDir * ran; //jitter ray
  	while (samplePos.a <= len) {
  		vec4 colorSample = texture(volume, samplePos.xyz);
  		samplePos += deltaDir; //advance ray position
  		if (colorSample.a < 0.01) continue;
  		if (firstHit.a > lenNoClip)
  			firstHit = samplePos;
  		backNearest = min(backNearest, samplePos.a);
  		colorSample.a = 1.0-pow((1.0 - colorSample.a), opacityCorrection);
  		colorSample.rgb *= colorSample.a;
  		colAcc= (1.0 - colAcc.a) * colorSample + colAcc;
  		if ( colAcc.a > earlyTermination )
  			break;
  	}
  	if (firstHit.a < len)
  		gl_FragDepth = frac2ndc(firstHit.xyz);
  	colAcc.a = (colAcc.a / earlyTermination) * backOpacity;
  	fColor = colAcc;
  	if (overlays < 1.0) return;
  	//overlay pass
  	len = lenNoClip;
  	samplePos = vec4(start.xyz, 0.0); //ray position
  	//start: OPTIONAL fast pass: rapid traversal until first hit
  	stepSizeFast = sliceSize * 1.9;
  	deltaDirFast = vec4(dir.xyz * stepSizeFast, stepSizeFast);
  	while (samplePos.a <= len) {
  		float val = texture(overlay, samplePos.xyz).a;
  		if (val > 0.01) break;
  		samplePos += deltaDirFast; //advance ray position
  	}
  	if (samplePos.a >= len) {
  		if (isClip && (fColor.a == 0.0))
  			fColor += clipPlaneColor;
  		return;
  	}
  	samplePos -= deltaDirFast;
  	if (samplePos.a < 0.0)
  		vec4 samplePos = vec4(start.xyz, 0.0); //ray position
  	//end: fast pass
  	float overFarthest = len;
  	colAcc = vec4(0.0, 0.0, 0.0, 0.0);
  	samplePos += deltaDir * ran; //jitter ray
  	vec4 overFirstHit = vec4(0.0,0.0,0.0,2.0 * len);
  	while (samplePos.a <= len) {
  		vec4 colorSample = texture(overlay, samplePos.xyz);
  		samplePos += deltaDir; //advance ray position
  		if (colorSample.a < 0.01) continue;
  		if (overFirstHit.a > len)
  			overFirstHit = samplePos;
  		colorSample.a = 1.0-pow((1.0 - colorSample.a), opacityCorrection);
  		colorSample.rgb *= colorSample.a;
  		colAcc= (1.0 - colAcc.a) * colorSample + colAcc;
  		overFarthest = samplePos.a;
  		if ( colAcc.a > earlyTermination )
  			break;
  	}
  	if (overFirstHit.a < firstHit.a)
  	//if (overFirstHit.a < len)
  		gl_FragDepth = frac2ndc(overFirstHit.xyz);
  	float overMix = colAcc.a;
  	float overlayDepth = 0.3;
  	if (fColor.a <= 0.0)
  			overMix = 1.0;
  	else if (((overFarthest) > backNearest)) {
  		float dx = (overFarthest - backNearest)/1.73;
  		dx = fColor.a * pow(dx, overlayDepth);
  		overMix *= 1.0 - dx;
  	}
  	fColor.rgb = mix(fColor.rgb, colAcc.rgb, overMix);
  	fColor.a = max(fColor.a, colAcc.a);
  }`,rs=`#version 300 es
  #line 150
  layout(location=0) in vec3 pos;
  uniform int axCorSag;
  uniform float slice;
  uniform vec2 canvasWidthHeight;
  uniform vec4 leftTopWidthHeight;
  out vec3 texPos;
  void main(void) {
  	//convert pixel x,y space 1..canvasWidth,1..canvasHeight to WebGL 1..-1,-1..1
  	vec2 frac;
  	frac.x = (leftTopWidthHeight.x + (pos.x * leftTopWidthHeight.z)) / canvasWidthHeight.x; //0..1
  	frac.y = 1.0 - ((leftTopWidthHeight.y + ((1.0 - pos.y) * leftTopWidthHeight.w)) / canvasWidthHeight.y); //1..0
  	frac = (frac * 2.0) - 1.0;
  	gl_Position = vec4(frac, 0.0, 1.0);
  	if (axCorSag == 1)
  		texPos = vec3(pos.x, slice, pos.y);
  	else if (axCorSag == 2)
  		texPos = vec3(slice, pos.x, pos.y);
  	else
  		texPos = vec3(pos.xy, slice);
  }`,as=`#version 300 es
  #line 173
  precision highp int;
  precision highp float;
  uniform highp sampler3D volume, overlay;
  uniform float overlays;
  uniform float opacity;
  in vec3 texPos;
  out vec4 color;
  void main() {
  	color = vec4(texture(volume, texPos).rgb, opacity);
  	vec4 ocolor = vec4(0.0);
  	if (overlays < 1.0) {
  	 ocolor = vec4(0.0, 0.0, 0.0, 0.0);
  	} else {
  		ocolor = texture(overlay, texPos);
  	}
  	float aout = ocolor.a + (1.0 - ocolor.a) * color.a;
  	if (aout <= 0.0) return;
  	color.rgb = ((ocolor.rgb * ocolor.a) + (color.rgb * color.a * (1.0 - ocolor.a))) / aout;
  	color.a = aout;
  }`,ss=`#version 300 es
  #line 189
  precision highp int;
  precision highp float;
  uniform vec4 lineColor;
  out vec4 color;
  void main() {
  	color = lineColor;
  }`,os=`#version 300 es
  #line 200
  layout(location=0) in vec3 pos;
  uniform vec2 canvasWidthHeight;
  uniform vec4 leftTopWidthHeight;
  out vec2 vColor;
  void main(void) {
  	//convert pixel x,y space 1..canvasWidth,1..canvasHeight to WebGL 1..-1,-1..1
  	vec2 frac;
  	frac.x = (leftTopWidthHeight.x + (pos.x * leftTopWidthHeight.z)) / canvasWidthHeight.x; //0..1
  	frac.y = 1.0 - ((leftTopWidthHeight.y + ((1.0 - pos.y) * leftTopWidthHeight.w)) / canvasWidthHeight.y); //1..0
  	frac = (frac * 2.0) - 1.0;
  	gl_Position = vec4(frac, 0.0, 1.0);
  	vColor = pos.xy;
  }`,ls=`#version 300 es
  #line 217
  precision highp int;
  precision highp float;
  uniform highp sampler2D colormap;
  in vec2 vColor;
  out vec4 color;
  void main() {
  	color = vec4(texture(colormap, vColor).rgb, 1.0);
  }`,hs=`#version 300 es
  #line 229
  layout(location=0) in vec3 pos;
  uniform vec2 canvasWidthHeight;
  uniform vec4 leftTopWidthHeight;
  void main(void) {
  	//convert pixel x,y space 1..canvasWidth,1..canvasHeight to WebGL 1..-1,-1..1
  	vec2 frac;
  	frac.x = (leftTopWidthHeight.x + (pos.x * leftTopWidthHeight.z)) / canvasWidthHeight.x; //0..1
  	frac.y = 1.0 - ((leftTopWidthHeight.y + ((1.0 - pos.y) * leftTopWidthHeight.w)) / canvasWidthHeight.y); //1..0
  	frac = (frac * 2.0) - 1.0;
  	gl_Position = vec4(frac, 0.0, 1.0);
  }`,jn=`#version 300 es
  #line 244
  layout(location=0) in vec3 pos;
  uniform vec2 canvasWidthHeight;
  uniform vec4 leftTopWidthHeight;
  uniform vec4 uvLeftTopWidthHeight;
  out vec2 vUV;
  void main(void) {
  	//convert pixel x,y space 1..canvasWidth,1..canvasHeight to WebGL 1..-1,-1..1
  	vec2 frac;
  	frac.x = (leftTopWidthHeight.x + (pos.x * leftTopWidthHeight.z)) / canvasWidthHeight.x; //0..1
  	frac.y = 1.0 - ((leftTopWidthHeight.y + ((1.0 - pos.y) * leftTopWidthHeight.w)) / canvasWidthHeight.y); //1..0
  	frac = (frac * 2.0) - 1.0;
  	gl_Position = vec4(frac, 0.0, 1.0);
  	vUV = vec2(uvLeftTopWidthHeight.x + (pos.x * uvLeftTopWidthHeight.z), uvLeftTopWidthHeight.y  + ((1.0 - pos.y) * uvLeftTopWidthHeight.w) );
  }`,Vn=`#version 300 es
  #line 262
  precision highp int;
  precision highp float;
  uniform highp sampler2D fontTexture;
  uniform vec4 fontColor;
  uniform float screenPxRange;
  in vec2 vUV;
  out vec4 color;
  float median(float r, float g, float b) {
      return max(min(r, g), min(max(r, g), b));
  }
  void main() {
  	vec3 msd = texture(fontTexture, vUV).rgb;
  	float sd = median(msd.r, msd.g, msd.b);
      float screenPxDistance = screenPxRange*(sd - 0.5);
      float opacity = clamp(screenPxDistance + 0.5, 0.0, 1.0);
  	color = vec4(fontColor.rgb , fontColor.a * opacity);
  }`,ii=`#version 300 es
  #line 283
  precision highp int;
  precision highp float;
  in vec3 vPos;
  out vec2 TexCoord;
  void main() {
      TexCoord = vPos.xy;
      gl_Position = vec4( (vPos.xy-vec2(0.5,0.5)) * 2.0, 0.0, 1.0);
  }`,nn=`#version 300 es
  uniform highp usampler3D intensityVol;
  `,fs=`#version 300 es
  uniform highp isampler3D intensityVol;
  `,cs=`#version 300 es
  uniform highp sampler3D intensityVol;
  `,us=`#line 309
  precision highp int;
  precision highp float;
  in vec2 TexCoord;
  out vec4 FragColor;
  uniform float coordZ;
  uniform float layer;
  uniform float numLayers;
  uniform highp sampler2D colormap;
  uniform lowp sampler3D blend3D;
  uniform float opacity;
  uniform vec3 xyzFrac;
  uniform mat4 mtx;
  void main(void) {
   vec4 vx = vec4(TexCoord.x, TexCoord.y, coordZ, 1.0) * mtx;
   uint idx = texture(intensityVol, vx.xyz).r;
   FragColor = vec4(0.0, 0.0, 0.0, 0.0);
   if (idx == uint(0))
     return;
   if (xyzFrac.x > 0.0) { //outline
     vx = vec4(TexCoord.x+xyzFrac.x, TexCoord.y, coordZ, 1.0) * mtx;
     uint R = texture(intensityVol, vx.xyz).r;
     vx = vec4(TexCoord.x-xyzFrac.x, TexCoord.y, coordZ, 1.0) * mtx;
     uint L = texture(intensityVol, vx.xyz).r;
     vx = vec4(TexCoord.x, TexCoord.y+xyzFrac.y, coordZ, 1.0) * mtx;
     uint A = texture(intensityVol, vx.xyz).r;
     vx = vec4(TexCoord.x, TexCoord.y-xyzFrac.y, coordZ, 1.0) * mtx;
     uint P = texture(intensityVol, vx.xyz).r;
     vx = vec4(TexCoord.x, TexCoord.y, coordZ+xyzFrac.z, 1.0) * mtx;
     uint S = texture(intensityVol, vx.xyz).r;
     vx = vec4(TexCoord.x, TexCoord.y, coordZ-xyzFrac.z, 1.0) * mtx;
     uint I = texture(intensityVol, vx.xyz).r;
     if ((idx == R) && (idx == L) && (idx == A) && (idx == P) && (idx == S) && (idx == I))
       return;
   }
   idx = ((idx - uint(1)) % uint(100))+uint(1);
   float fx = (float(idx)+0.5) / 256.0;
   float y = (2.0 * layer + 1.0)/(2.0 * numLayers);
   FragColor = texture(colormap, vec2(fx, y)).rgba;
   FragColor.a *= opacity;
   if (layer < 2.0) return;
   vec2 texXY = TexCoord.xy*0.5 +vec2(0.5,0.5);
   vec4 prevColor = texture(blend3D, vec3(texXY, coordZ));
   // https://en.wikipedia.org/wiki/Alpha_compositing
   float aout = FragColor.a + (1.0 - FragColor.a) * prevColor.a;
   if (aout <= 0.0) return;
   FragColor.rgb = ((FragColor.rgb * FragColor.a) + (prevColor.rgb * prevColor.a * (1.0 - FragColor.a))) / aout;
   FragColor.a = aout;
  }`,rn=`#line 309
  precision highp int;
  precision highp float;
  in vec2 TexCoord;
  out vec4 FragColor;
  uniform float coordZ;
  uniform float layer;
  uniform float numLayers;
  uniform float scl_slope;
  uniform float scl_inter;
  uniform float cal_max;
  uniform float cal_min;
  uniform highp sampler2D colormap;
  uniform lowp sampler3D blend3D;
  uniform float opacity;
  uniform mat4 mtx;
  void main(void) {
   vec4 vx = vec4(TexCoord.xy, coordZ, 1.0) * mtx;
   float f = (scl_slope * float(texture(intensityVol, vx.xyz).r)) + scl_inter;
   float r = max(0.00001, abs(cal_max - cal_min));
   float mn = min(cal_min, cal_max);
   f = mix(0.0, 1.0, (f - mn) / r);
   //float y = 1.0 / numLayers;
   //y = ((layer + 0.5) * y);
   //https://stackoverflow.com/questions/5879403/opengl-texture-coordinates-in-pixel-space
   float y = (2.0 * layer + 1.0)/(2.0 * numLayers);
   FragColor = texture(colormap, vec2(f, y)).rgba;
   FragColor.a *= opacity;
   if (layer < 2.0) return;
   vec2 texXY = TexCoord.xy*0.5 +vec2(0.5,0.5);
   vec4 prevColor = texture(blend3D, vec3(texXY, coordZ));
   // https://en.wikipedia.org/wiki/Alpha_compositing
   float aout = FragColor.a + (1.0 - FragColor.a) * prevColor.a;
   if (aout <= 0.0) return;
   FragColor.rgb = ((FragColor.rgb * FragColor.a) + (prevColor.rgb * prevColor.a * (1.0 - FragColor.a))) / aout;
   FragColor.a = aout;
  }`,ds=`#line 309
  precision highp int;
  precision highp float;
  in vec2 TexCoord;
  out vec4 FragColor;
  uniform float coordZ;
  uniform float layer;
  uniform float numLayers;
  uniform float scl_slope;
  uniform float scl_inter;
  uniform float cal_max;
  uniform float cal_min;
  uniform highp sampler2D colormap;
  uniform lowp sampler3D blend3D;
  uniform float opacity;
  uniform mat4 mtx;
  uniform bool hasAlpha;
  void main(void) {
   vec4 vx = vec4(TexCoord.xy, coordZ, 1.0) * mtx;
   uvec4 aColor = texture(intensityVol, vx.xyz);
   FragColor = vec4(float(aColor.r) / 255.0, float(aColor.g) / 255.0, float(aColor.b) / 255.0, float(aColor.a) / 255.0);
   if (!hasAlpha)
     FragColor.a = (FragColor.r * 0.21 + FragColor.g * 0.72 + FragColor.b * 0.07);
   FragColor.a *= opacity;
  }`,ps=`#version 300 es
  #line 283
  precision highp int;
  precision highp float;
  in vec3 vPos;
  out vec2 TexCoord;
  void main() {
      TexCoord = vPos.xy;
      gl_Position = vec4(vPos.x, vPos.y, 0.0, 1.0);
  }`,gs=`#version 300 es
  precision highp int;
  precision highp float;
  in vec2 TexCoord;
  out vec4 FragColor;
  uniform float coordZ;
  uniform lowp sampler3D in3D;
  void main(void) {
   FragColor = texture(in3D, vec3(TexCoord.xy, coordZ));
  }`,ms=`#version 300 es
  layout(location=0) in vec3 pos;
  uniform mat4 mvpMtx;
  void main(void) {
  	gl_Position = mvpMtx * vec4(pos, 1.0);
  }`,vs=`#version 300 es
  precision highp int;
  precision highp float;
  uniform vec4 surfaceColor;
  out vec4 color;
  void main() {
  	color = surfaceColor;
  }`,Qn=`#version 300 es
  layout(location=0) in vec3 pos;
  layout(location=1) in vec4 norm;
  layout(location=2) in vec4 clr;
  uniform mat4 mvpMtx;
  uniform mat4 modelMtx;
  uniform mat4 normMtx;
  out vec4 vClr;
  out vec3 vN, vL, vV;
  void main(void) {
  	vec3 lightPosition = vec3(0.0, 0.0, -10.0);
  	gl_Position = mvpMtx * vec4(pos, 1.0);
  	vN = normalize((normMtx * vec4(norm.xyz,1.0)).xyz);
  	vL = normalize(lightPosition);
  	vV = -vec3(modelMtx*vec4(pos,1.0));
  	vClr = clr;
  }`,As=`#version 300 es
  precision highp int;
  precision highp float;
  uniform float opacity;
  in vec4 vClr;
  in vec3 vN, vL, vV;
  out vec4 color;
  float stepmix(float edge0, float edge1, float E, float x){
  	float T = clamp(0.5 * (x - edge0 + E) / E, 0.0, 1.0);
  	return mix(edge0, edge1, T);
  }
  void main() {
  	vec3 r = vec3(0.0, 0.0, 1.0);
  	float ambient = 0.3;
  	float diffuse = 0.6;
  	float specular = 0.5;
  	float shininess = 50.0;
  	vec3 n = normalize(vN);
  	vec3 lightPosition = vec3(0.0, 10.0, -5.0);
  	vec3 l = normalize(lightPosition);
  	float df = max(0.0, dot(n, l));
  	float sf =  pow(max(dot(reflect(l, n), r), 0.0), shininess);
  	const float A = 0.1;
  	const float B = 0.3;
  	const float C = 0.6;
  	const float D = 1.0;
  	float E = fwidth(df);
  	if (df > A - E && df < A + E) df = stepmix(A, B, E, df);
  	else if (df > B - E && df < B + E) df = stepmix(B, C, E, df);
  	else if (df > C - E && df < C + E) df = stepmix(C, D, E, df);
  	else if (df < A) df = 0.0;
  	else if (df < B) df = B;
  	else if (df < C) df = C;
  	else df = D;
  	E = fwidth(sf);
  	if (sf > 0.5 - E && sf < 0.5 + E)
  		sf = smoothstep(0.5 - E, 0.5 + E, sf);
  	else
  		sf = step(0.5, sf);
  	vec3 a = vClr.rgb * ambient;
  	vec3 d = max(df, 0.0) * vClr.rgb * diffuse;
  	color.rgb = a + d + (specular * sf);
  	color.a = opacity;
  }`,xs=`#version 300 es
  precision highp int;
  precision highp float;
  uniform float opacity;
  in vec4 vClr;
  in vec3 vN, vL, vV;
  out vec4 color;
  void main() {
  	vec3 r = vec3(0.0, 0.0, 1.0); //rayDir: for orthographic projections moving in Z direction (no need for normal matrix)
  	float ambient = 0.3;
  	float diffuse = 0.6;
  	float specular = 0.25;
  	float shininess = 10.0;
  	float PenWidth = 0.6;
  	vec3 n = normalize(vN);
  	vec3 lightPosition = vec3(0.0, 10.0, -5.0);
  	vec3 l = normalize(lightPosition);
  	float lightNormDot = dot(n, l);
  	float view = abs(dot(n,r)); //with respect to viewer
  
  	if (PenWidth < view) discard;
  	vec3 a = vClr.rgb * ambient;
  	vec3 d = max(lightNormDot, 0.0) * vClr.rgb * diffuse;
  	float s =   specular * pow(max(dot(reflect(l, n), r), 0.0), shininess);
  	color.rgb = a + d + s;
  	color.a = opacity;
  }`,bs=`#version 300 es
  precision highp int;
  precision highp float;
  uniform float opacity;
  in vec4 vClr;
  in vec3 vN, vL, vV;
  out vec4 color;
  void main() {
  	vec3 r = vec3(0.0, 0.0, 1.0); //rayDir: for orthographic projections moving in Z direction (no need for normal matrix)
  	float ambient = 0.35;
  	float diffuse = 0.5;
  	float specular = 0.2;
  	float shininess = 10.0;
  	vec3 n = normalize(vN);
  	vec3 lightPosition = vec3(0.0, 10.0, -5.0);
  	vec3 l = normalize(lightPosition);
  	float lightNormDot = dot(n, l);
  	vec3 a = vClr.rgb * ambient;
  	vec3 d = max(lightNormDot, 0.0) * vClr.rgb * diffuse;
  	float s =   specular * pow(max(dot(reflect(l, n), r), 0.0), shininess);
  	color = vec4(a + d + s, opacity);
  }`,Es=`#version 300 es
  precision highp int;
  precision highp float;
  uniform float opacity;
  in vec4 vClr;
  in vec3 vN, vL, vV;
  out vec4 color;
  void main() {
  	vec3 r = vec3(0.0, 0.0, 1.0); //rayDir: for orthographic projections moving in Z direction (no need for normal matrix)
  	float ambient = 0.35;
  	float diffuse = 0.6;
  	vec3 n = normalize(vN);
  	vec3 lightPosition = vec3(0.0, 10.0, -5.0);
  	vec3 l = normalize(lightPosition);
  	float lightNormDot = dot(n, l);
  	vec3 a = vClr.rgb * ambient;
  	vec3 d = max(lightNormDot, 0.0) * vClr.rgb * diffuse;
  	color = vec4(a + d, opacity);
  }`,ws=`#version 300 es
  precision highp int;
  precision highp float;
  uniform float opacity;
  in vec4 vClr;
  in vec3 vN, vL, vV;
  out vec4 color;
  void main() {
  	vec3 r = vec3(0.0, 0.0, 1.0); //rayDir: for orthographic projections moving in Z direction (no need for normal matrix)
  	float ambient = 0.35;
  	float diffuse = 0.5;
  	float specular = 0.2;
  	float shininess = 10.0;
  	vec3 n = normalize(vN);
  	vec3 lightPosition = vec3(0.0, 10.0, -5.0);
  	vec3 l = normalize(lightPosition);
  	float lightNormDot = dot(n, l);
  	vec3 up = vec3(0.0, 1.0, 0.0);
  	float ax = dot(n, up) * 0.5 + 0.5;  //Shreiner et al. (2013) OpenGL Programming Guide, 8th Ed., p 388. ISBN-10: 0321773039
  	vec3 upClr = vec3(1.0, 1.0, 0.95);
  	vec3 downClr = vec3(0.4, 0.4, 0.6);
  	vec3 a = vClr.rgb * ambient;
  	a *= mix(downClr, upClr, ax);
  	vec3 d = max(lightNormDot, 0.0) * vClr.rgb * diffuse;
  	float s =   specular * pow(max(dot(reflect(l, n), r), 0.0), shininess);
  	color = vec4(a + d + s, opacity);
  }`,Ts=`#version 300 es
  precision highp int;
  precision highp float;
  uniform float opacity;
  in vec4 vClr;
  in vec3 vN, vL, vV;
  out vec4 color;
  //Spherical harmonics constants
  const float C1 = 0.429043;
  const float C2 = 0.511664;
  const float C3 = 0.743125;
  const float C4 = 0.886227;
  const float C5 = 0.247708;
  //Spherical harmonics coefficients
  // Ramamoorthi, R., and P. Hanrahan. 2001b. "An Efficient Representation for Irradiance Environment Maps." In Proceedings of SIGGRAPH 2001, pp. 497\u2013500.
  // https://github.com/eskimoblood/processingSketches/blob/master/data/shader/shinyvert.glsl
  // https://github.com/eskimoblood/processingSketches/blob/master/data/shader/shinyvert.glsl
  // Constants for Eucalyptus Grove lighting
  const vec3 L00  = vec3( 0.3783264,  0.4260425,  0.4504587);
  const vec3 L1m1 = vec3( 0.2887813,  0.3586803,  0.4147053);
  const vec3 L10  = vec3( 0.0379030,  0.0295216,  0.0098567);
  const vec3 L11  = vec3(-0.1033028, -0.1031690, -0.0884924);
  const vec3 L2m2 = vec3(-0.0621750, -0.0554432, -0.0396779);
  const vec3 L2m1 = vec3( 0.0077820, -0.0148312, -0.0471301);
  const vec3 L20  = vec3(-0.0935561, -0.1254260, -0.1525629);
  const vec3 L21  = vec3(-0.0572703, -0.0502192, -0.0363410);
  const vec3 L22  = vec3( 0.0203348, -0.0044201, -0.0452180);
  vec3 SH(vec3 vNormal) {
  	vNormal = vec3(vNormal.x,vNormal.z,vNormal.y);
  	//vNormal = vec3(vNormal.x,vNormal.z,vNormal.y);
  	vec3 diffuseColor =  C1 * L22 * (vNormal.x * vNormal.x - vNormal.y * vNormal.y) +
  	C3 * L20 * vNormal.z * vNormal.z +
  	C4 * L00 -
  	C5 * L20 +
  	2.0 * C1 * L2m2 * vNormal.x * vNormal.y +
  	2.0 * C1 * L21  * vNormal.x * vNormal.z +
  	2.0 * C1 * L2m1 * vNormal.y * vNormal.z +
  	2.0 * C2 * L11  * vNormal.x +
  	2.0 * C2 * L1m1 * vNormal.y +
  	2.0 * C2 * L10  * vNormal.z;
  	return diffuseColor;
  }
  void main() {
  	vec3 r = vec3(0.0, 0.0, 1.0); //rayDir: for orthographic projections moving in Z direction (no need for normal matrix)
  	float ambient = 0.3;
  	float diffuse = 0.6;
  	float specular = 0.1;
  	float shininess = 10.0;
  	vec3 n = normalize(vN);
  	vec3 lightPosition = vec3(0.0, 10.0, -5.0);
  	vec3 l = normalize(lightPosition);
  	float s =   specular * pow(max(dot(reflect(l, n), r), 0.0), shininess);
  	vec3 a = vClr.rgb * ambient;
  	vec3 d = vClr.rgb * diffuse * SH(-reflect(n, vec3(l.x, l.y, -l.z)) );
  	color = vec4(a + d + s, opacity);
  }`,Is=`#version 300 es
  precision highp int;
  precision highp float;
  uniform int id;
  in vec3 vColor;
  out vec4 color;
  void main() {
  	color = vec4(vColor, float(id & 255) / 255.0);
  }`,ys=`#version 300 es
  #line 506
  //precision highp int;
  precision highp float;
  uniform vec3 rayDir;
  uniform vec3 volScale;
  uniform vec3 texVox;
  uniform vec4 clipPlane;
  uniform highp sampler3D volume, overlay;
  uniform float overlays;
  uniform int id;
  in vec3 vColor;
  out vec4 fColor;
  `+Hn+`
  void main() {
  	vec3 start = vColor;
  	fColor = vec4(0.0, 0.0, 0.0, 0.0); //assume no hit: ID = 0
  	float fid = float(id & 255)/ 255.0;
  	vec3 backPosition = GetBackPosition(start);
  	vec3 dir = backPosition - start;
  	float len = length(dir);
  	float lenVox = length((texVox * start) - (texVox * backPosition));
  	if ((lenVox < 0.5) || (len > 3.0)) return;//discard; //length limit for parallel rays
  	float sliceSize = len / lenVox; //e.g. if ray length is 1.0 and traverses 50 voxels, each voxel is 0.02 in unit cube
  	float stepSize = sliceSize; //quality: larger step is faster traversal, but fewer samples
  	float opacityCorrection = stepSize/sliceSize;
  	dir = normalize(dir);
  	vec4 samplePos = vec4(start.xyz, 0.0); //ray position
  	float lenNoClip = len;
  	bool isClip = false;
  	vec4 clipPos = applyClip(dir, samplePos, len, isClip);
  	if (isClip) fColor = vec4(samplePos.xyz, 253.0 / 255.0); //assume no hit: ID = 0
  	//start: OPTIONAL fast pass: rapid traversal until first hit
  	float stepSizeFast = sliceSize * 1.9;
  	vec4 deltaDirFast = vec4(dir.xyz * stepSizeFast, stepSizeFast);
  	while (samplePos.a <= len) {
  		float val = texture(volume, samplePos.xyz).a;
  		if (val > 0.01) {
  			fColor = vec4(samplePos.rgb, fid);
  			break;
  		}
  		samplePos += deltaDirFast; //advance ray position
  	}
  	//end: fast pass
  	if (overlays < 1.0) {
  		//if (fColor.a == 0.0) discard; //no hit, no overlays
  		return; //background hit, no overlays
  	}
  	//overlay pass
  	len = min(lenNoClip, samplePos.a); //only find overlay closer than background
  	samplePos = vec4(start.xyz, 0.0); //ray position
  	while (samplePos.a <= len) {
  		float val = texture(overlay, samplePos.xyz).a;
  		if (val > 0.01) {
  			fColor = vec4(samplePos.rgb, fid);
  			return;
  		}
  		samplePos += deltaDirFast; //advance ray position
  	}
  	//if (fColor.a == 0.0) discard; //no hit in either background or overlays
  	//you only get here if there is a hit with the background that is closer than any overlay
  }`,_s={min:0,max:0,R:[0,0,24,248,255],G:[0,0,177,254,0],B:[0,136,0,0,0],A:[0,32,64,78,128],I:[0,64,128,156,255]},Ss={min:0,max:0,R:[0,0,0],G:[0,0,0],B:[0,128,255],A:[0,64,128],I:[0,128,255]},Ds={min:0,max:0,R:[0,0,0,0,196,255],G:[0,32,128,128,128,32],B:[0,255,196,0,0,0],A:[0,128,64,64,64,128],I:[0,1,64,128,192,255]},Bs={min:0,max:0,R:[0,0,0,0],G:[0,1,128,255],B:[0,222,127,32],A:[0,0,64,128],I:[0,1,128,255]},Rs={min:0,max:0,R:[0,103,255],G:[0,126,255],B:[0,165,255],A:[0,76,128],I:[0,153,255]},Ns={min:0,max:0,R:[0,43,103,199,216,255],G:[0,0,37,155,213,255],B:[0,0,20,97,201,255],A:[0,44,48,54,56,56],I:[0,64,128,196,240,255]},Cs={min:0,max:0,R:[0,86,166,255],G:[32,92,156,233],B:[76,108,117,69],A:[0,56,80,88],I:[0,64,192,255]},Fs={min:0,max:0,R:[0,0,0],G:[127,196,254],B:[255,255,255],A:[0,64,128],I:[0,128,255]},Ms={min:0,max:0,R:[0,61,122,183,244,255],G:[0,41,81,122,163,203],B:[0,25,51,76,102,127],A:[0,25,51,71,102,128],I:[0,51,102,153,204,255]},ks={min:0,max:0,R:[0,61,122,183,244,255],G:[0,41,81,122,163,255],B:[0,25,51,76,102,255],A:[0,25,51,71,102,128],I:[0,51,102,153,204,255]},Ps={min:-643,max:-235,R:[0,0,0],G:[154,154,154],B:[179,179,101],A:[0,32,0],I:[0,163,255]},Us={min:180,max:600,R:[0,0,113,255],G:[0,0,109,250],B:[0,0,101,245],A:[0,0,100,160],I:[0,1,128,255]},Ls={min:-10,max:110,R:[0,199,255],G:[0,127,255],B:[0,127,255],A:[0,48,128],I:[0,124,255]},Os={min:-10,max:110,R:[0,127,255],G:[0,127,255],B:[0,127,255],A:[0,48,128],I:[0,124,255]},zs={min:-80,max:1e3,R:[0,189,150,150,150,150,255],G:[0,169,54,54,54,54,240],B:[0,153,52,52,52,52,242],A:[0,32,64,0,0,64,64],I:[0,1,82,92,234,242,255]},Gs={min:-590,max:600,R:[0,241,241,248,248,178,178,232,255,255,255],G:[0,156,156,222,222,36,36,51,255,255,255],B:[0,130,130,169,169,24,24,37,255,255,255],A:[0,8,0,0,0,64,64,0,0,222,222],I:[0,2,3,64,122,142,172,182,252,253,255]},Ys={min:114,max:302,R:[0,255,255],G:[0,129,255],B:[0,0,255],A:[0,88,228],I:[0,103,255]},Zs={min:-23,max:246,R:[0,44,255,255,255],G:[0,128,90,255,255],B:[0,0,70,0,255],A:[0,0,82,184,228],I:[0,64,131,196,255]},Hs={min:-100,max:246,R:[0,128,159,255,255,255,255],G:[0,0,56,90,0,255,255],B:[0,0,41,70,0,0,255],A:[0,63,105,135,167,184,228],I:[0,100,128,155,180,209,255]},js={min:-590,max:600,R:[0,241,241,248,248,178,232,255,255],G:[0,156,156,222,222,36,51,255,255],B:[0,130,130,169,169,24,37,255,255],A:[0,63,105,135,167,184,228,228,228],I:[0,1,52,127,137,162,172,252,255]},Vs={min:140,max:1024,R:[0,2,113,255],G:[0,1,109,250],B:[0,1,101,245],A:[0,1,96,168],I:[0,1,128,255]},Qs={min:-923,max:679,R:[0,0,0,0,0,255,255,255],G:[154,154,154,154,0,0,254,255],B:[179,179,179,179,0,0,0,255],A:[0,3,8,0,0,10,15,20],I:[0,30,62,88,170,200,232,255]},Xs={min:-10,max:110,R:[0,199,255],G:[0,127,255],B:[0,127,255],A:[0,48,128],I:[0,124,255]},Ws={min:-600,max:100,R:[0,134,255],G:[0,109,250],B:[0,101,245],A:[0,60,148],I:[0,128,255]},Ks={min:114,max:246,R:[0,255,255],G:[0,128,255],B:[0,128,255],A:[0,64,96],I:[0,87,255]},Js={min:50,max:1e3,R:[98,210,169,128,255],G:[94,26,77,128,255],B:[45,21,74,128,255],A:[0,25,0,4,168],I:[0,41,87,154,255]},qs={min:0,max:0,R:[0,13,21,26,27,25,22,21,22,28,39,54,75,98,124,148,171,189,202,210,213,211,206,200,195,193,195,201,211,225,240,255],G:[0,5,11,20,31,44,58,72,86,99,109,116,120,122,122,122,121,121,124,129,137,147,161,175,190,205,218,229,238,245,251,255],B:[0,14,30,46,61,71,77,78,75,68,60,52,48,47,53,65,83,105,131,157,183,205,222,235,241,243,242,240,239,240,245,255],A:[0,4,8,12,17,21,25,29,33,37,41,45,50,54,58,62,66,70,74,78,83,87,91,95,99,103,107,111,116,120,124,128],I:[0,8,16,25,33,41,49,58,66,74,82,90,99,107,115,123,132,140,148,156,165,173,181,189,197,206,214,222,230,239,247,255]},$s={min:0,max:0,R:[0,10,136,255],G:[0,39,220,255],B:[0,223,253,255],A:[0,48,64,70],I:[0,92,192,255]},to={min:0,max:0,R:[0,0,128,255,255],G:[0,128,0,128,255],B:[0,125,255,0,255],A:[0,32,64,96,128],I:[0,63,128,192,255]},eo={min:0,max:0,R:[0,142,227,255],G:[0,85,170,255],B:[0,14,76,255],A:[0,42,84,128],I:[0,85,170,255]},io={min:0,max:0,R:[0,255],G:[0,255],B:[0,255],A:[0,128],I:[0,255]},no={min:0,max:0,R:[0,0,0],G:[0,128,255],B:[0,0,0],A:[0,64,128],I:[0,128,255]},ro={min:0,max:0,R:[3,255,255,255],G:[0,0,255,255],B:[0,0,0,255],A:[0,48,96,128],I:[0,95,191,255]},ao={min:0,max:0,R:[0,255,255,255],G:[0,0,126,255],B:[0,0,0,255],A:[0,64,96,128],I:[0,128,191,255]},so={min:0,max:0,R:[255,255,0,0,0,255,255],G:[0,255,255,255,0,0,0],B:[0,0,0,255,255,255,0],A:[0,14,28,43,57,71,85],I:[0,43,85,128,170,213,255]},oo={min:0,max:0,R:[0,120,237,240],G:[0,28,105,249],B:[4,109,37,33],A:[0,56,80,88],I:[0,64,192,255]},lo={min:0,max:0,R:[0,0,127,255,127],G:[0,127,255,127,0],B:[127,255,127,0,0],A:[0,32,64,96,128],I:[0,63,128,192,255]},ho={min:0,max:0,R:[94,50,90,152,215,238,249,254,252,241,209,158],G:[79,131,186,214,240,244,237,210,157,100,57,1],B:[162,189,167,164,155,169,168,123,86,68,79,66],A:[0,12,23,35,47,58,70,81,93,105,116,128],I:[0,23,46,70,93,116,139,162,185,209,232,255]},fo={min:0,max:0,R:[0,148,183,223,247,252],G:[0,44,55,74,112,253],B:[4,128,121,104,92,191],A:[0,44,53,64,75,107],I:[0,107,128,154,179,255]},co={min:0,max:0,R:[11,59,55,222],G:[4,45,165,245],B:[5,91,172,229],A:[0,23,70,107],I:[0,56,167,255]},uo={min:0,max:0,R:[0,85,0,0,0,0,0,0,85,255,255,255,172],G:[0,0,0,0,85,170,255,255,255,255,85,0,0],B:[0,170,85,255,255,170,170,0,85,0,0,0,0],A:[0,5,10,21,26,32,37,42,48,53,64,72,85],I:[0,15,31,63,79,95,111,127,143,159,191,217,255]},po={min:0,max:0,R:[13,156,237,240],G:[8,23,121,249],B:[135,158,83,33],A:[0,56,80,88],I:[0,64,192,255]},go={min:0,max:255,R:[208,71,33,192,32,195,208,173,233,202,25,210,145,89,87,245,246,38,3,25,57,167,245,86,227,208,81,64,90,199,140,48,212,180,70,120,9,192,245,177,65,157,9,193,100,181,125,145,62,8,108,36,140,237,242,248,161,189,41,114,65,121,97,50,238,149,44,214,124,167,40,167,127,178,231,30,173,244,193,203,204,238,139,135,71,234,234,217,66,14,129,19,97,165,112,244,35,73,192,12,149,71,33,192,32,195,208,173,233,202,25,210,145,89,87,245,246,38,3,25,57,167,245,86,227,208,81,64,90,199,140,48,212,180,70,120,9,192,245,177,65,157,9,193,100,181,125,145,62,8,108,36,140,237,242,248,161,189,41,114,65,121,97,50,238,149,44,214,124,167,40,167,127,178,231,30,173,244,193,203,204,238,139,135,71,234,234,217,66,14,129,19,97,165,112,244,35,73,192,12,149,71,33,192,32,195,208,173,233,202,25,210,145,89,87,245,246,38,3,25,57,167,245,86,227,208,81,64,90,199,140,48,212,180,70,120,9,192,245,177,65,157,9,193,100,181,125,145,62,8,108,36,140,237,242,248],G:[182,46,78,199,79,89,41,208,135,20,154,35,21,43,230,113,191,147,208,37,28,27,86,203,25,209,148,187,139,111,48,102,76,110,106,130,37,160,34,222,90,165,245,222,102,47,19,130,4,232,137,211,240,11,140,21,42,22,241,61,99,115,199,166,114,190,204,60,233,66,115,230,125,103,203,125,13,176,94,131,39,198,167,124,67,175,254,1,15,198,62,237,159,31,218,58,244,47,61,67,94,46,78,199,79,89,41,208,135,20,154,35,21,43,230,113,191,147,208,37,28,27,86,203,25,209,148,187,139,111,48,102,76,110,106,130,37,160,34,222,90,165,245,222,102,47,19,130,4,232,137,211,240,11,140,21,42,22,241,61,99,115,199,166,114,190,204,60,233,66,115,230,125,103,203,125,13,176,94,131,39,198,167,124,67,175,254,1,15,198,62,237,159,31,218,58,244,47,61,67,94,46,78,199,79,89,41,208,135,20,154,35,21,43,230,113,191,147,208,37,28,27,86,203,25,209,148,187,139,111,48,102,76,110,106,130,37,160,34,222,90,165,245,222,102,47,19,130,4,232,137,211,240,11,140,21],B:[191,154,43,10,207,204,164,231,136,58,239,30,147,230,101,111,150,35,128,57,252,79,173,120,25,126,81,85,8,7,122,237,190,152,246,182,130,219,67,76,167,178,235,250,28,61,186,250,199,67,58,50,86,182,108,77,89,112,59,125,226,50,205,227,125,128,104,27,59,66,53,133,159,203,97,125,139,159,158,7,215,47,140,226,223,231,44,110,184,61,233,47,67,148,22,120,173,156,117,181,94,154,43,10,207,204,164,231,136,58,239,30,147,230,101,111,150,35,128,57,252,79,173,120,25,126,81,85,8,7,122,237,190,152,246,182,130,219,67,76,167,178,235,250,28,61,186,250,199,67,58,50,86,182,108,77,89,112,59,125,226,50,205,227,125,128,104,27,59,66,53,133,159,203,97,125,139,159,158,7,215,47,140,226,223,231,44,110,184,61,233,47,67,148,22,120,173,156,117,181,94,154,43,10,207,204,164,231,136,58,239,30,147,230,101,111,150,35,128,57,252,79,173,120,25,126,81,85,8,7,122,237,190,152,246,182,130,219,67,76,167,178,235,250,28,61,186,250,199,67,58,50,86,182,108,77],A:[0,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64],I:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255]},mo={min:0,max:0,R:[0,128,255],G:[0,0,0],B:[0,0,0],A:[0,64,128],I:[0,128,255]},vo={min:0,max:0,R:[192,224,255],G:[1,128,255],B:[0,0,0],A:[0,64,128],I:[1,128,255]},Ao={min:0,max:0,R:[3,112,144,188,236,246,255],G:[5,31,29,22,76,158,250],B:[26,87,91,86,62,117,235],A:[0,30,38,49,67,85,107],I:[0,73,92,118,160,205,255]},xo={min:0,max:0,R:[1,240,255],G:[1,128,255],B:[1,128,255],A:[0,76,128],I:[0,153,255]},bo={min:0,max:0,R:[0,128,255],G:[0,0,0],B:[0,128,255],A:[0,64,128],I:[0,128,255]},Eo={min:0,max:0,R:[68,49,53,253],G:[1,104,183,231],B:[84,142,121,37],A:[0,56,80,88],I:[0,64,192,255]},wo={min:0,max:0,R:[255,255,255],G:[127,196,254],B:[0,0,0],A:[0,64,128],I:[0,128,255]},To={min:0,max:0,R:[0,0,0],G:[0,128,255],B:[255,196,128],A:[0,64,128],I:[0,128,255]},Io={min:0,max:0,R:[3,64,0,0,255,255,255],G:[0,0,0,255,255,192,3],B:[0,32,48,56,64,96,128],A:[0,8,16,24,32,52,80],I:[0,32,64,96,160,192,255]},Kt=Object.freeze(Object.defineProperty({__proto__:null,actc:_s,blue:Ss,blue2red:Ds,bluegrn:Bs,bone:Rs,bronze:Ns,cividis:Cs,cool:Fs,copper:Ms,copper2:ks,ct_airways:Ps,ct_bones:Us,ct_brain:Ls,ct_brain_gray:Os,ct_cardiac:zs,ct_head:Gs,ct_kidneys:Ys,ct_liver:Zs,ct_muscles:Hs,ct_scalp:js,ct_skull:Vs,ct_soft:Qs,ct_soft_tissue:Xs,ct_surface:Ws,ct_vessels:Ks,ct_w_contrast:Js,cubehelix:qs,electric_blue:$s,ge_color:to,gold:eo,gray:io,green:no,hot:ro,hotiron:ao,hsv:so,inferno:oo,jet:lo,linspecer:ho,magma:fo,mako:co,nih:uo,plasma:po,random:go,red:mo,redyell:vo,rocket:Ao,surface:xo,violet:bo,viridis:Eo,warm:wo,winter:To,x_rain:Io},Symbol.toStringTag,{value:"Module"}));/*! *****************************************************************************
    Copyright (c) Microsoft Corporation.
  
    Permission to use, copy, modify, and/or distribute this software for any
    purpose with or without fee is hereby granted.
  
    THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
    REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
    AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
    INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
    LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
    OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
    PERFORMANCE OF THIS SOFTWARE.
    ***************************************************************************** */var an=function(t,i){return an=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,n){e.__proto__=n}||function(e,n){for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(e[a]=n[a])},an(t,i)};function yi(t,i){if(typeof i!="function"&&i!==null)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");an(t,i);function e(){this.constructor=t}t.prototype=i===null?Object.create(i):(e.prototype=i.prototype,new e)}function sn(t){var i=typeof Symbol=="function"&&Symbol.iterator,e=i&&t[i],n=0;if(e)return e.call(t);if(t&&typeof t.length=="number")return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(i?"Object is not iterable.":"Symbol.iterator is not defined.")}function _i(t,i){var e=typeof Symbol=="function"&&t[Symbol.iterator];if(!e)return t;var n=e.call(t),a,r=[],s;try{for(;(i===void 0||i-- >0)&&!(a=n.next()).done;)r.push(a.value)}catch(o){s={error:o}}finally{try{a&&!a.done&&(e=n.return)&&e.call(n)}finally{if(s)throw s.error}}return r}function Si(t,i,e){if(e||arguments.length===2)for(var n=0,a=i.length,r;n<a;n++)(r||!(n in i))&&(r||(r=Array.prototype.slice.call(i,0,n)),r[n]=i[n]);return t.concat(r||Array.prototype.slice.call(i))}function xe(t){return typeof t=="function"}function Xn(t){var i=function(n){Error.call(n),n.stack=new Error().stack},e=t(i);return e.prototype=Object.create(Error.prototype),e.prototype.constructor=e,e}var on=Xn(function(t){return function(e){t(this),this.message=e?e.length+` errors occurred during unsubscription:
  `+e.map(function(n,a){return a+1+") "+n.toString()}).join(`
    `):"",this.name="UnsubscriptionError",this.errors=e}});function ln(t,i){if(t){var e=t.indexOf(i);0<=e&&t.splice(e,1)}}var Di=function(){function t(i){this.initialTeardown=i,this.closed=!1,this._parentage=null,this._finalizers=null}return t.prototype.unsubscribe=function(){var i,e,n,a,r;if(!this.closed){this.closed=!0;var s=this._parentage;if(s)if(this._parentage=null,Array.isArray(s))try{for(var o=sn(s),c=o.next();!c.done;c=o.next()){var h=c.value;h.remove(this)}}catch(A){i={error:A}}finally{try{c&&!c.done&&(e=o.return)&&e.call(o)}finally{if(i)throw i.error}}else s.remove(this);var l=this.initialTeardown;if(xe(l))try{l()}catch(A){r=A instanceof on?A.errors:[A]}var p=this._finalizers;if(p){this._finalizers=null;try{for(var f=sn(p),d=f.next();!d.done;d=f.next()){var E=d.value;try{Jn(E)}catch(A){r=r!=null?r:[],A instanceof on?r=Si(Si([],_i(r)),_i(A.errors)):r.push(A)}}}catch(A){n={error:A}}finally{try{d&&!d.done&&(a=f.return)&&a.call(f)}finally{if(n)throw n.error}}}if(r)throw new on(r)}},t.prototype.add=function(i){var e;if(i&&i!==this)if(this.closed)Jn(i);else{if(i instanceof t){if(i.closed||i._hasParent(this))return;i._addParent(this)}(this._finalizers=(e=this._finalizers)!==null&&e!==void 0?e:[]).push(i)}},t.prototype._hasParent=function(i){var e=this._parentage;return e===i||Array.isArray(e)&&e.includes(i)},t.prototype._addParent=function(i){var e=this._parentage;this._parentage=Array.isArray(e)?(e.push(i),e):e?[e,i]:i},t.prototype._removeParent=function(i){var e=this._parentage;e===i?this._parentage=null:Array.isArray(e)&&ln(e,i)},t.prototype.remove=function(i){var e=this._finalizers;e&&ln(e,i),i instanceof t&&i._removeParent(this)},t.EMPTY=function(){var i=new t;return i.closed=!0,i}(),t}(),Wn=Di.EMPTY;function Kn(t){return t instanceof Di||t&&"closed"in t&&xe(t.remove)&&xe(t.add)&&xe(t.unsubscribe)}function Jn(t){xe(t)?t():t.unsubscribe()}var hn={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1},fn={setTimeout:function(t,i){for(var e=[],n=2;n<arguments.length;n++)e[n-2]=arguments[n];var a=fn.delegate;return a!=null&&a.setTimeout?a.setTimeout.apply(a,Si([t,i],_i(e))):setTimeout.apply(void 0,Si([t,i],_i(e)))},clearTimeout:function(t){var i=fn.delegate;return((i==null?void 0:i.clearTimeout)||clearTimeout)(t)},delegate:void 0};function yo(t){fn.setTimeout(function(){throw t})}function qn(){}var Bi=null;function Ri(t){if(hn.useDeprecatedSynchronousErrorHandling){var i=!Bi;if(i&&(Bi={errorThrown:!1,error:null}),t(),i){var e=Bi,n=e.errorThrown,a=e.error;if(Bi=null,n)throw a}}else t()}var $n=function(t){yi(i,t);function i(e){var n=t.call(this)||this;return n.isStopped=!1,e?(n.destination=e,Kn(e)&&e.add(n)):n.destination=Bo,n}return i.create=function(e,n,a){return new un(e,n,a)},i.prototype.next=function(e){this.isStopped||this._next(e)},i.prototype.error=function(e){this.isStopped||(this.isStopped=!0,this._error(e))},i.prototype.complete=function(){this.isStopped||(this.isStopped=!0,this._complete())},i.prototype.unsubscribe=function(){this.closed||(this.isStopped=!0,t.prototype.unsubscribe.call(this),this.destination=null)},i.prototype._next=function(e){this.destination.next(e)},i.prototype._error=function(e){try{this.destination.error(e)}finally{this.unsubscribe()}},i.prototype._complete=function(){try{this.destination.complete()}finally{this.unsubscribe()}},i}(Di),_o=Function.prototype.bind;function cn(t,i){return _o.call(t,i)}var So=function(){function t(i){this.partialObserver=i}return t.prototype.next=function(i){var e=this.partialObserver;if(e.next)try{e.next(i)}catch(n){Ni(n)}},t.prototype.error=function(i){var e=this.partialObserver;if(e.error)try{e.error(i)}catch(n){Ni(n)}else Ni(i)},t.prototype.complete=function(){var i=this.partialObserver;if(i.complete)try{i.complete()}catch(e){Ni(e)}},t}(),un=function(t){yi(i,t);function i(e,n,a){var r=t.call(this)||this,s;if(xe(e)||!e)s={next:e!=null?e:void 0,error:n!=null?n:void 0,complete:a!=null?a:void 0};else{var o;r&&hn.useDeprecatedNextContext?(o=Object.create(e),o.unsubscribe=function(){return r.unsubscribe()},s={next:e.next&&cn(e.next,o),error:e.error&&cn(e.error,o),complete:e.complete&&cn(e.complete,o)}):s=e}return r.destination=new So(s),r}return i}($n);function Ni(t){yo(t)}function Do(t){throw t}var Bo={closed:!0,next:qn,error:Do,complete:qn},Ro=function(){return typeof Symbol=="function"&&Symbol.observable||"@@observable"}();function No(t){return t}function Co(t){return t.length===0?No:t.length===1?t[0]:function(e){return t.reduce(function(n,a){return a(n)},e)}}var tr=function(){function t(i){i&&(this._subscribe=i)}return t.prototype.lift=function(i){var e=new t;return e.source=this,e.operator=i,e},t.prototype.subscribe=function(i,e,n){var a=this,r=Mo(i)?i:new un(i,e,n);return Ri(function(){var s=a,o=s.operator,c=s.source;r.add(o?o.call(r,c):c?a._subscribe(r):a._trySubscribe(r))}),r},t.prototype._trySubscribe=function(i){try{return this._subscribe(i)}catch(e){i.error(e)}},t.prototype.forEach=function(i,e){var n=this;return e=er(e),new e(function(a,r){var s=new un({next:function(o){try{i(o)}catch(c){r(c),s.unsubscribe()}},error:r,complete:a});n.subscribe(s)})},t.prototype._subscribe=function(i){var e;return(e=this.source)===null||e===void 0?void 0:e.subscribe(i)},t.prototype[Ro]=function(){return this},t.prototype.pipe=function(){for(var i=[],e=0;e<arguments.length;e++)i[e]=arguments[e];return Co(i)(this)},t.prototype.toPromise=function(i){var e=this;return i=er(i),new i(function(n,a){var r;e.subscribe(function(s){return r=s},function(s){return a(s)},function(){return n(r)})})},t.create=function(i){return new t(i)},t}();function er(t){var i;return(i=t!=null?t:hn.Promise)!==null&&i!==void 0?i:Promise}function Fo(t){return t&&xe(t.next)&&xe(t.error)&&xe(t.complete)}function Mo(t){return t&&t instanceof $n||Fo(t)&&Kn(t)}var ko=Xn(function(t){return function(){t(this),this.name="ObjectUnsubscribedError",this.message="object unsubscribed"}}),ni=function(t){yi(i,t);function i(){var e=t.call(this)||this;return e.closed=!1,e.currentObservers=null,e.observers=[],e.isStopped=!1,e.hasError=!1,e.thrownError=null,e}return i.prototype.lift=function(e){var n=new ir(this,this);return n.operator=e,n},i.prototype._throwIfClosed=function(){if(this.closed)throw new ko},i.prototype.next=function(e){var n=this;Ri(function(){var a,r;if(n._throwIfClosed(),!n.isStopped){n.currentObservers||(n.currentObservers=Array.from(n.observers));try{for(var s=sn(n.currentObservers),o=s.next();!o.done;o=s.next()){var c=o.value;c.next(e)}}catch(h){a={error:h}}finally{try{o&&!o.done&&(r=s.return)&&r.call(s)}finally{if(a)throw a.error}}}})},i.prototype.error=function(e){var n=this;Ri(function(){if(n._throwIfClosed(),!n.isStopped){n.hasError=n.isStopped=!0,n.thrownError=e;for(var a=n.observers;a.length;)a.shift().error(e)}})},i.prototype.complete=function(){var e=this;Ri(function(){if(e._throwIfClosed(),!e.isStopped){e.isStopped=!0;for(var n=e.observers;n.length;)n.shift().complete()}})},i.prototype.unsubscribe=function(){this.isStopped=this.closed=!0,this.observers=this.currentObservers=null},Object.defineProperty(i.prototype,"observed",{get:function(){var e;return((e=this.observers)===null||e===void 0?void 0:e.length)>0},enumerable:!1,configurable:!0}),i.prototype._trySubscribe=function(e){return this._throwIfClosed(),t.prototype._trySubscribe.call(this,e)},i.prototype._subscribe=function(e){return this._throwIfClosed(),this._checkFinalizedStatuses(e),this._innerSubscribe(e)},i.prototype._innerSubscribe=function(e){var n=this,a=this,r=a.hasError,s=a.isStopped,o=a.observers;return r||s?Wn:(this.currentObservers=null,o.push(e),new Di(function(){n.currentObservers=null,ln(o,e)}))},i.prototype._checkFinalizedStatuses=function(e){var n=this,a=n.hasError,r=n.thrownError,s=n.isStopped;a?e.error(r):s&&e.complete()},i.prototype.asObservable=function(){var e=new tr;return e.source=this,e},i.create=function(e,n){return new ir(e,n)},i}(tr),ir=function(t){yi(i,t);function i(e,n){var a=t.call(this)||this;return a.destination=e,a.source=n,a}return i.prototype.next=function(e){var n,a;(a=(n=this.destination)===null||n===void 0?void 0:n.next)===null||a===void 0||a.call(n,e)},i.prototype.error=function(e){var n,a;(a=(n=this.destination)===null||n===void 0?void 0:n.error)===null||a===void 0||a.call(n,e)},i.prototype.complete=function(){var e,n;(n=(e=this.destination)===null||e===void 0?void 0:e.complete)===null||n===void 0||n.call(e)},i.prototype._subscribe=function(e){var n,a;return(a=(n=this.source)===null||n===void 0?void 0:n.subscribe(e))!==null&&a!==void 0?a:Wn},i}(ni),Ht=function(t,i,e,n,a=null,r=null){this.BLEND=1,this.CULL_FACE=2,this.CULL_FRONT=4,this.CULL_BACK=8,this.ENABLE_DEPTH_TEST=16,this.sphereIdx=[],this.sphereVtx=[],this.renderShaders=[],this.pickingShader=null,this.isVisible=!0,this.isPickable=!0,this.vertexBuffer=i,this.indexCount=n,this.indexBuffer=a,this.vao=r,this.mode=e,this.glFlags=0,this.id=t,this.colorId=[(t>>0&255)/255,(t>>8&255)/255,(t>>16&255)/255,(t>>24&255)/255],this.modelMatrix=ie(),this.scale=[1,1,1],this.position=[0,0,0],this.rotation=[0,0,0],this.rotationRadians=0,this.extentsMin=[],this.extentsMax=[]};Ht.generateCrosshairs=function(t,i,e,n,a,r,s=20){let o=this.generateCrosshairsGeometry(t,e,n,a,r,s);return new Ht(i,o.vertexBuffer,t.TRIANGLES,o.indexCount,o.indexBuffer,o.vao)},Ht.generateCrosshairsGeometry=function(t,i,e,n,a,r=20){let s=[],o=[],c=Vt(e[0],i[1],i[2]),h=Vt(n[0],i[1],i[2]);Ht.makeCylinder(s,o,c,h,a,r),c=Vt(i[0],e[1],i[2]),h=Vt(i[0],n[1],i[2]),Ht.makeCylinder(s,o,c,h,a,r),c=Vt(i[0],i[1],e[2]),h=Vt(i[0],i[1],n[2]),Ht.makeCylinder(s,o,c,h,a,r);let l=t.createBuffer();t.bindBuffer(t.ARRAY_BUFFER,l),t.bufferData(t.ARRAY_BUFFER,new Float32Array(s),t.STATIC_DRAW);let p=t.createBuffer();t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,p),t.bufferData(t.ELEMENT_ARRAY_BUFFER,new Uint16Array(o),t.STATIC_DRAW);let f=t.createVertexArray();return t.bindVertexArray(f),t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,p),t.bindBuffer(t.ARRAY_BUFFER,l),t.enableVertexAttribArray(0),t.vertexAttribPointer(0,3,t.FLOAT,!1,0,0),t.bindVertexArray(null),{vertexBuffer:l,indexBuffer:p,indexCount:o.length,vao:f}},Ht.getFirstPerpVector=function(t){let i=Vt(0,0,0);return t[0]===0?i[0]=1:t[1]===0?i[1]=1:t[2]===0?i[2]=1:(i[0]=t[2],i[1]=t[2],i[2]=-(t[0]+t[1]),Le(i,i)),i},Ht.subdivide=function(t,i){let e=t.length/3,n=i.length/3,a=n,r=Ae(),s=Ae();for(let o=0;o<a;o++){let c=i[o*3+0],h=i[o*3+1],l=i[o*3+2],p=Vt(t[c*3+0],t[c*3+1],t[c*3+2]),f=Vt(t[h*3+0],t[h*3+1],t[h*3+2]),d=Vt(t[l*3+0],t[l*3+1],t[l*3+2]);ei(r,p,f),Le(s,r),t.push(...s),ei(r,f,d),Le(s,r),t.push(...s),ei(r,p,d),Le(s,r),t.push(...s);let E=[e,e+1,e+2];i.push(...E),E=[c,e,e+2],i.push(...E),E=[e,h,e+1],i.push(...E),i[o*3+0]=e+2,i[o*3+1]=e+1,i[o*3+2]=l,n=n+3,e=e+3}},Ht.weldVertices=function(t,i){let e=t.length/3,n=0,a=new Int32Array(e);for(let o=0;o<e-1;o++){if(a[o]!==0)continue;a[o]=n;let c=o*3,h=t[c],l=t[c+1],p=t[c+2];for(let f=o+1;f<e;f++)c+=3,h===t[c]&&l===t[c+1]&&p===t[c+2]&&(a[f]=n);n++}if(n===e)return t;let r=i.length;for(let o=0;o<r;o++)i[o]=a[i[o]];let s=t.slice(0,n*3-1);for(let o=0;o<e-1;o++){let c=o*3,h=a[o]*3;s[h]=t[c],s[h+1]=t[c+1],s[h+2]=t[c+2]}return s},Ht.makeSphere=function(t,i,e,n=[0,0,0]){let a=[],r=[];this.sphereVtx!==void 0?(a=this.sphereVtx.slice(),r=this.sphereIdx.slice()):(a=[0,0,1,.894,0,.447,.276,.851,.447,-.724,.526,.447,-.724,-.526,.447,.276,-.851,.447,.724,.526,-.447,-.276,.851,-.447,-.894,0,-.447,-.276,-.851,-.447,.724,-.526,-.447,0,0,-1],r=[0,1,2,0,2,3,0,3,4,0,4,5,0,5,1,7,6,11,8,7,11,9,8,11,10,9,11,6,10,11,6,2,1,7,3,2,8,4,3,9,5,4,10,1,5,6,7,2,7,8,3,8,9,4,9,10,5,10,6,1],this.subdivide(a,r),this.subdivide(a,r),a=this.weldVertices(a,r),this.sphereVtx=a.slice(),this.sphereIdx=r.slice());for(let h=0;h<a.length;h++)a[h]=a[h]*e;let s=a.length/3,o=0;for(let h=0;h<s;h++)a[o]=a[o]+n[0],o++,a[o]=a[o]+n[1],o++,a[o]=a[o]+n[2],o++;let c=Math.floor(t.length/3);for(let h=0;h<r.length;h++)r[h]=r[h]+c;i.push(...r),t.push(...a)},Ht.makeCylinder=function(t,i,e,n,a,r=20,s=!0){r<3&&(r=3);let o=Ae();$t(o,n,e),Le(o,o);let c=Ht.getFirstPerpVector(o),h=Ae();Ka(h,o,c),Le(h,h);let l=2*r,p=2*r;s&&(p+=2*r,l+=2);let f=Math.floor(t.length/3),d=new Uint16Array(p*3),E=new Float32Array(l*3);function A(R,P){E[R*3+0]=P[0],E[R*3+1]=P[1],E[R*3+2]=P[2]}function x(R,P,O,Q){d[R*3+0]=P+f,d[R*3+1]=O+f,d[R*3+2]=Q+f}let w=2*r,I=w+1;s&&(A(w,e),A(I,n));let D=Ae(),T=Ae();for(let R=0;R<r;R++){let P=Math.cos(R/r*2*Math.PI),O=Math.sin(R/r*2*Math.PI);D[0]=a*(P*c[0]+O*h[0]),D[1]=a*(P*c[1]+O*h[1]),D[2]=a*(P*c[2]+O*h[2]),ei(T,e,D),A(R,T),ei(T,n,D),A(R+r,T);let Q=0;R<r-1&&(Q=R+1),x(R*2,R,Q,R+r),x(R*2+1,Q,Q+r,R+r),s&&(x(r*2+R,R,w,Q),x(r*2+R+r,I,R+r,Q+r))}i.push(...d),t.push(...E)},Ht.makeColoredCylinder=function(t,i,e,n,a,r,s=[192,0,0,255],o=20,c=!1){let h=t.length/3;this.makeCylinder(t,i,n,a,r,o,c),h=t.length/3-h;let l=[];for(let p=0;p<h*4-1;p+=4)l[p]=s[0],l[p+1]=s[1],l[p+2]=s[2],l[p+3]=s[3];e.push(...l)},Ht.makeColoredSphere=function(t,i,e,n,a=[0,0,0],r=[0,0,192,255]){let s=t.length/3;this.makeSphere(t,i,n,a),s=t.length/3-s;let o=[];for(let c=0;c<s*4-1;c+=4)o[c]=r[0],o[c+1]=r[1],o[c+2]=r[2],o[c+3]=r[3];e.push(...o)};var Ci=typeof globalThis!="undefined"?globalThis:typeof window!="undefined"?window:typeof global!="undefined"?global:typeof self!="undefined"?self:{};function Po(t){if(t.__esModule)return t;var i=Object.defineProperty({},"__esModule",{value:!0});return Object.keys(t).forEach(function(e){var n=Object.getOwnPropertyDescriptor(t,e);Object.defineProperty(i,e,n.get?n:{enumerable:!0,get:function(){return t[e]}})}),i}function fe(t){throw new Error('Could not dynamically require "'+t+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var nr={exports:{}},dn={exports:{}},Fi={exports:{}};(function(t){var i=i||{};i.Utils=i.Utils||{},i.Utils.crcTable=null,i.Utils.GUNZIP_MAGIC_COOKIE1=31,i.Utils.GUNZIP_MAGIC_COOKIE2=139,i.Utils.getStringAt=function(e,n,a){var r="",s,o;for(s=n;s<a;s+=1)o=e.getUint8(s),o!==0&&(r+=String.fromCharCode(o));return r},i.Utils.getByteAt=function(e,n){return e.getInt8(n)},i.Utils.getShortAt=function(e,n,a){return e.getInt16(n,a)},i.Utils.getIntAt=function(e,n,a){return e.getInt32(n,a)},i.Utils.getFloatAt=function(e,n,a){return e.getFloat32(n,a)},i.Utils.getDoubleAt=function(e,n,a){return e.getFloat64(n,a)},i.Utils.getLongAt=function(e,n,a){var r,s=[],o=0;for(r=0;r<8;r+=1)s[r]=i.Utils.getByteAt(e,n+r,a);for(r=s.length-1;r>=0;r--)o=o*256+s[r];return o},i.Utils.toArrayBuffer=function(e){var n,a,r;for(n=new ArrayBuffer(e.length),a=new Uint8Array(n),r=0;r<e.length;r+=1)a[r]=e[r];return n},i.Utils.isString=function(e){return typeof e=="string"||e instanceof String},i.Utils.formatNumber=function(e,n){var a=0;return i.Utils.isString(e)?a=Number(e):a=e,n?a=a.toPrecision(5):a=a.toPrecision(7),parseFloat(a)},i.Utils.makeCRCTable=function(){for(var e,n=[],a=0;a<256;a++){e=a;for(var r=0;r<8;r++)e=e&1?3988292384^e>>>1:e>>>1;n[a]=e}return n},i.Utils.crc32=function(e){for(var n=i.Utils.crcTable||(i.Utils.crcTable=i.Utils.makeCRCTable()),a=-1,r=0;r<e.byteLength;r++)a=a>>>8^n[(a^e.getUint8(r))&255];return(a^-1)>>>0},t.exports&&(t.exports=i.Utils)})(Fi),function(t){var i=i||{};i.Utils=i.Utils||(typeof fe!="undefined"?Fi.exports:null),i.NIFTI1=i.NIFTI1||function(){this.littleEndian=!1,this.dim_info=0,this.dims=[],this.intent_p1=0,this.intent_p2=0,this.intent_p3=0,this.intent_code=0,this.datatypeCode=0,this.numBitsPerVoxel=0,this.slice_start=0,this.slice_end=0,this.slice_code=0,this.pixDims=[],this.vox_offset=0,this.scl_slope=1,this.scl_inter=0,this.xyzt_units=0,this.cal_max=0,this.cal_min=0,this.slice_duration=0,this.toffset=0,this.description="",this.aux_file="",this.intent_name="",this.qform_code=0,this.sform_code=0,this.quatern_b=0,this.quatern_c=0,this.quatern_d=0,this.qoffset_x=0,this.qoffset_y=0,this.qoffset_z=0,this.affine=[[1,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,0,1]],this.magic=0,this.isHDR=!1,this.extensionFlag=[0,0,0,0],this.extensionSize=0,this.extensionCode=0},i.NIFTI1.TYPE_NONE=0,i.NIFTI1.TYPE_BINARY=1,i.NIFTI1.TYPE_UINT8=2,i.NIFTI1.TYPE_INT16=4,i.NIFTI1.TYPE_INT32=8,i.NIFTI1.TYPE_FLOAT32=16,i.NIFTI1.TYPE_COMPLEX64=32,i.NIFTI1.TYPE_FLOAT64=64,i.NIFTI1.TYPE_RGB24=128,i.NIFTI1.TYPE_INT8=256,i.NIFTI1.TYPE_UINT16=512,i.NIFTI1.TYPE_UINT32=768,i.NIFTI1.TYPE_INT64=1024,i.NIFTI1.TYPE_UINT64=1280,i.NIFTI1.TYPE_FLOAT128=1536,i.NIFTI1.TYPE_COMPLEX128=1792,i.NIFTI1.TYPE_COMPLEX256=2048,i.NIFTI1.XFORM_UNKNOWN=0,i.NIFTI1.XFORM_SCANNER_ANAT=1,i.NIFTI1.XFORM_ALIGNED_ANAT=2,i.NIFTI1.XFORM_TALAIRACH=3,i.NIFTI1.XFORM_MNI_152=4,i.NIFTI1.SPATIAL_UNITS_MASK=7,i.NIFTI1.TEMPORAL_UNITS_MASK=56,i.NIFTI1.UNITS_UNKNOWN=0,i.NIFTI1.UNITS_METER=1,i.NIFTI1.UNITS_MM=2,i.NIFTI1.UNITS_MICRON=3,i.NIFTI1.UNITS_SEC=8,i.NIFTI1.UNITS_MSEC=16,i.NIFTI1.UNITS_USEC=24,i.NIFTI1.UNITS_HZ=32,i.NIFTI1.UNITS_PPM=40,i.NIFTI1.UNITS_RADS=48,i.NIFTI1.MAGIC_COOKIE=348,i.NIFTI1.STANDARD_HEADER_SIZE=348,i.NIFTI1.MAGIC_NUMBER_LOCATION=344,i.NIFTI1.MAGIC_NUMBER=[110,43,49],i.NIFTI1.MAGIC_NUMBER2=[110,105,49],i.NIFTI1.EXTENSION_HEADER_SIZE=8,i.NIFTI1.prototype.readHeader=function(e){var n=new DataView(e),a=i.Utils.getIntAt(n,0,this.littleEndian),r,s,o,c;if(a!==i.NIFTI1.MAGIC_COOKIE&&(this.littleEndian=!0,a=i.Utils.getIntAt(n,0,this.littleEndian)),a!==i.NIFTI1.MAGIC_COOKIE)throw new Error("This does not appear to be a NIFTI file!");for(this.dim_info=i.Utils.getByteAt(n,39),r=0;r<8;r+=1)c=40+r*2,this.dims[r]=i.Utils.getShortAt(n,c,this.littleEndian);for(this.intent_p1=i.Utils.getFloatAt(n,56,this.littleEndian),this.intent_p2=i.Utils.getFloatAt(n,60,this.littleEndian),this.intent_p3=i.Utils.getFloatAt(n,64,this.littleEndian),this.intent_code=i.Utils.getShortAt(n,68,this.littleEndian),this.datatypeCode=i.Utils.getShortAt(n,70,this.littleEndian),this.numBitsPerVoxel=i.Utils.getShortAt(n,72,this.littleEndian),this.slice_start=i.Utils.getShortAt(n,74,this.littleEndian),r=0;r<8;r+=1)c=76+r*4,this.pixDims[r]=i.Utils.getFloatAt(n,c,this.littleEndian);for(this.vox_offset=i.Utils.getFloatAt(n,108,this.littleEndian),this.scl_slope=i.Utils.getFloatAt(n,112,this.littleEndian),this.scl_inter=i.Utils.getFloatAt(n,116,this.littleEndian),this.slice_end=i.Utils.getShortAt(n,120,this.littleEndian),this.slice_code=i.Utils.getByteAt(n,122),this.xyzt_units=i.Utils.getByteAt(n,123),this.cal_max=i.Utils.getFloatAt(n,124,this.littleEndian),this.cal_min=i.Utils.getFloatAt(n,128,this.littleEndian),this.slice_duration=i.Utils.getFloatAt(n,132,this.littleEndian),this.toffset=i.Utils.getFloatAt(n,136,this.littleEndian),this.description=i.Utils.getStringAt(n,148,228),this.aux_file=i.Utils.getStringAt(n,228,252),this.qform_code=i.Utils.getShortAt(n,252,this.littleEndian),this.sform_code=i.Utils.getShortAt(n,254,this.littleEndian),this.quatern_b=i.Utils.getFloatAt(n,256,this.littleEndian),this.quatern_c=i.Utils.getFloatAt(n,260,this.littleEndian),this.quatern_d=i.Utils.getFloatAt(n,264,this.littleEndian),this.qoffset_x=i.Utils.getFloatAt(n,268,this.littleEndian),this.qoffset_y=i.Utils.getFloatAt(n,272,this.littleEndian),this.qoffset_z=i.Utils.getFloatAt(n,276,this.littleEndian),s=0;s<3;s+=1)for(o=0;o<4;o+=1)c=280+(s*4+o)*4,this.affine[s][o]=i.Utils.getFloatAt(n,c,this.littleEndian);this.affine[3][0]=0,this.affine[3][1]=0,this.affine[3][2]=0,this.affine[3][3]=1,this.intent_name=i.Utils.getStringAt(n,328,344),this.magic=i.Utils.getStringAt(n,344,348),this.isHDR=this.magic===i.NIFTI1.MAGIC_NUMBER2,n.byteLength>i.NIFTI1.MAGIC_COOKIE&&(this.extensionFlag[0]=i.Utils.getByteAt(n,348),this.extensionFlag[1]=i.Utils.getByteAt(n,348+1),this.extensionFlag[2]=i.Utils.getByteAt(n,348+2),this.extensionFlag[3]=i.Utils.getByteAt(n,348+3),this.extensionFlag[0]&&(this.extensionSize=this.getExtensionSize(n),this.extensionCode=this.getExtensionCode(n)))},i.NIFTI1.prototype.toFormattedString=function(){var e=i.Utils.formatNumber,n="";return n+="Dim Info = "+this.dim_info+`
  `,n+="Image Dimensions (1-8): "+this.dims[0]+", "+this.dims[1]+", "+this.dims[2]+", "+this.dims[3]+", "+this.dims[4]+", "+this.dims[5]+", "+this.dims[6]+", "+this.dims[7]+`
  `,n+="Intent Parameters (1-3): "+this.intent_p1+", "+this.intent_p2+", "+this.intent_p3+`
  `,n+="Intent Code = "+this.intent_code+`
  `,n+="Datatype = "+this.datatypeCode+" ("+this.getDatatypeCodeString(this.datatypeCode)+`)
  `,n+="Bits Per Voxel = "+this.numBitsPerVoxel+`
  `,n+="Slice Start = "+this.slice_start+`
  `,n+="Voxel Dimensions (1-8): "+e(this.pixDims[0])+", "+e(this.pixDims[1])+", "+e(this.pixDims[2])+", "+e(this.pixDims[3])+", "+e(this.pixDims[4])+", "+e(this.pixDims[5])+", "+e(this.pixDims[6])+", "+e(this.pixDims[7])+`
  `,n+="Image Offset = "+this.vox_offset+`
  `,n+="Data Scale:  Slope = "+e(this.scl_slope)+"  Intercept = "+e(this.scl_inter)+`
  `,n+="Slice End = "+this.slice_end+`
  `,n+="Slice Code = "+this.slice_code+`
  `,n+="Units Code = "+this.xyzt_units+" ("+this.getUnitsCodeString(i.NIFTI1.SPATIAL_UNITS_MASK&this.xyzt_units)+", "+this.getUnitsCodeString(i.NIFTI1.TEMPORAL_UNITS_MASK&this.xyzt_units)+`)
  `,n+="Display Range:  Max = "+e(this.cal_max)+"  Min = "+e(this.cal_min)+`
  `,n+="Slice Duration = "+this.slice_duration+`
  `,n+="Time Axis Shift = "+this.toffset+`
  `,n+='Description: "'+this.description+`"
  `,n+='Auxiliary File: "'+this.aux_file+`"
  `,n+="Q-Form Code = "+this.qform_code+" ("+this.getTransformCodeString(this.qform_code)+`)
  `,n+="S-Form Code = "+this.sform_code+" ("+this.getTransformCodeString(this.sform_code)+`)
  `,n+="Quaternion Parameters:  b = "+e(this.quatern_b)+"  c = "+e(this.quatern_c)+"  d = "+e(this.quatern_d)+`
  `,n+="Quaternion Offsets:  x = "+this.qoffset_x+"  y = "+this.qoffset_y+"  z = "+this.qoffset_z+`
  `,n+="S-Form Parameters X: "+e(this.affine[0][0])+", "+e(this.affine[0][1])+", "+e(this.affine[0][2])+", "+e(this.affine[0][3])+`
  `,n+="S-Form Parameters Y: "+e(this.affine[1][0])+", "+e(this.affine[1][1])+", "+e(this.affine[1][2])+", "+e(this.affine[1][3])+`
  `,n+="S-Form Parameters Z: "+e(this.affine[2][0])+", "+e(this.affine[2][1])+", "+e(this.affine[2][2])+", "+e(this.affine[2][3])+`
  `,n+='Intent Name: "'+this.intent_name+`"
  `,this.extensionFlag[0]&&(n+="Extension: Size = "+this.extensionSize+"  Code = "+this.extensionCode+`
  `),n},i.NIFTI1.prototype.getDatatypeCodeString=function(e){return e===i.NIFTI1.TYPE_UINT8?"1-Byte Unsigned Integer":e===i.NIFTI1.TYPE_INT16?"2-Byte Signed Integer":e===i.NIFTI1.TYPE_INT32?"4-Byte Signed Integer":e===i.NIFTI1.TYPE_FLOAT32?"4-Byte Float":e===i.NIFTI1.TYPE_FLOAT64?"8-Byte Float":e===i.NIFTI1.TYPE_RGB24?"RGB":e===i.NIFTI1.TYPE_INT8?"1-Byte Signed Integer":e===i.NIFTI1.TYPE_UINT16?"2-Byte Unsigned Integer":e===i.NIFTI1.TYPE_UINT32?"4-Byte Unsigned Integer":e===i.NIFTI1.TYPE_INT64?"8-Byte Signed Integer":e===i.NIFTI1.TYPE_UINT64?"8-Byte Unsigned Integer":"Unknown"},i.NIFTI1.prototype.getTransformCodeString=function(e){return e===i.NIFTI1.XFORM_SCANNER_ANAT?"Scanner":e===i.NIFTI1.XFORM_ALIGNED_ANAT?"Aligned":e===i.NIFTI1.XFORM_TALAIRACH?"Talairach":e===i.NIFTI1.XFORM_MNI_152?"MNI":"Unknown"},i.NIFTI1.prototype.getUnitsCodeString=function(e){return e===i.NIFTI1.UNITS_METER?"Meters":e===i.NIFTI1.UNITS_MM?"Millimeters":e===i.NIFTI1.UNITS_MICRON?"Microns":e===i.NIFTI1.UNITS_SEC?"Seconds":e===i.NIFTI1.UNITS_MSEC?"Milliseconds":e===i.NIFTI1.UNITS_USEC?"Microseconds":e===i.NIFTI1.UNITS_HZ?"Hz":e===i.NIFTI1.UNITS_PPM?"PPM":e===i.NIFTI1.UNITS_RADS?"Rads":"Unknown"},i.NIFTI1.prototype.getQformMat=function(){return this.convertNiftiQFormToNiftiSForm(this.quatern_b,this.quatern_c,this.quatern_d,this.qoffset_x,this.qoffset_y,this.qoffset_z,this.pixDims[1],this.pixDims[2],this.pixDims[3],this.pixDims[0])},i.NIFTI1.prototype.convertNiftiQFormToNiftiSForm=function(e,n,a,r,s,o,c,h,l,p){var f=[[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]],d,E=e,A=n,x=a,w,I,D;return f[3][0]=f[3][1]=f[3][2]=0,f[3][3]=1,d=1-(E*E+A*A+x*x),d<1e-7?(d=1/Math.sqrt(E*E+A*A+x*x),E*=d,A*=d,x*=d,d=0):d=Math.sqrt(d),w=c>0?c:1,I=h>0?h:1,D=l>0?l:1,p<0&&(D=-D),f[0][0]=(d*d+E*E-A*A-x*x)*w,f[0][1]=2*(E*A-d*x)*I,f[0][2]=2*(E*x+d*A)*D,f[1][0]=2*(E*A+d*x)*w,f[1][1]=(d*d+A*A-E*E-x*x)*I,f[1][2]=2*(A*x-d*E)*D,f[2][0]=2*(E*x-d*A)*w,f[2][1]=2*(A*x+d*E)*I,f[2][2]=(d*d+x*x-A*A-E*E)*D,f[0][3]=r,f[1][3]=s,f[2][3]=o,f},i.NIFTI1.prototype.convertNiftiSFormToNEMA=function(e){var n,a,r,s,o,c,h,l,p,f,d,E,A,x,w,I,D,T,R,P,O,Q,Z,K,tt,at,ht,z,Y,j,lt,C,ct,xt;if(w=0,ht=[[0,0,0],[0,0,0],[0,0,0]],z=[[0,0,0],[0,0,0],[0,0,0]],n=e[0][0],a=e[0][1],r=e[0][2],s=e[1][0],o=e[1][1],c=e[1][2],h=e[2][0],l=e[2][1],p=e[2][2],f=Math.sqrt(n*n+s*s+h*h),f===0||(n/=f,s/=f,h/=f,f=Math.sqrt(a*a+o*o+l*l),f===0))return null;if(a/=f,o/=f,l/=f,f=n*a+s*o+h*l,Math.abs(f)>1e-4){if(a-=f*n,o-=f*s,l-=f*h,f=Math.sqrt(a*a+o*o+l*l),f===0)return null;a/=f,o/=f,l/=f}if(f=Math.sqrt(r*r+c*c+p*p),f===0?(r=s*l-h*o,c=h*a-l*n,p=n*o-s*a):(r/=f,c/=f,p/=f),f=n*r+s*c+h*p,Math.abs(f)>1e-4){if(r-=f*n,c-=f*s,p-=f*h,f=Math.sqrt(r*r+c*c+p*p),f===0)return null;r/=f,c/=f,p/=f}if(f=a*r+o*c+l*p,Math.abs(f)>1e-4){if(r-=f*a,c-=f*o,p-=f*l,f=Math.sqrt(r*r+c*c+p*p),f===0)return null;r/=f,c/=f,p/=f}if(ht[0][0]=n,ht[0][1]=a,ht[0][2]=r,ht[1][0]=s,ht[1][1]=o,ht[1][2]=c,ht[2][0]=h,ht[2][1]=l,ht[2][2]=p,d=this.nifti_mat33_determ(ht),d===0)return null;for(at=-666,R=Q=Z=K=1,P=2,O=3,A=1;A<=3;A+=1)for(x=1;x<=3;x+=1)if(A!==x){for(w=1;w<=3;w+=1)if(!(A===w||x===w))for(z[0][0]=z[0][1]=z[0][2]=z[1][0]=z[1][1]=z[1][2]=z[2][0]=z[2][1]=z[2][2]=0,I=-1;I<=1;I+=2)for(D=-1;D<=1;D+=2)for(T=-1;T<=1;T+=2)z[0][A-1]=I,z[1][x-1]=D,z[2][w-1]=T,E=this.nifti_mat33_determ(z),E*d>0&&(tt=this.nifti_mat33_mul(z,ht),f=tt[0][0]+tt[1][1]+tt[2][2],f>at&&(at=f,R=A,P=x,O=w,Q=I,Z=D,K=T))}switch(Y=j=lt=C=ct=xt=0,R*Q){case 1:Y="X",C="+";break;case-1:Y="X",C="-";break;case 2:Y="Y",C="+";break;case-2:Y="Y",C="-";break;case 3:Y="Z",C="+";break;case-3:Y="Z",C="-";break}switch(P*Z){case 1:j="X",ct="+";break;case-1:j="X",ct="-";break;case 2:j="Y",ct="+";break;case-2:j="Y",ct="-";break;case 3:j="Z",ct="+";break;case-3:j="Z",ct="-";break}switch(O*K){case 1:lt="X",xt="+";break;case-1:lt="X",xt="-";break;case 2:lt="Y",xt="+";break;case-2:lt="Y",xt="-";break;case 3:lt="Z",xt="+";break;case-3:lt="Z",xt="-";break}return Y+j+lt+C+ct+xt},i.NIFTI1.prototype.nifti_mat33_mul=function(e,n){var a=[[0,0,0],[0,0,0],[0,0,0]],r,s;for(r=0;r<3;r+=1)for(s=0;s<3;s+=1)a[r][s]=e[r][0]*n[0][s]+e[r][1]*n[1][s]+e[r][2]*n[2][s];return a},i.NIFTI1.prototype.nifti_mat33_determ=function(e){var n,a,r,s,o,c,h,l,p;return n=e[0][0],a=e[0][1],r=e[0][2],s=e[1][0],o=e[1][1],c=e[1][2],h=e[2][0],l=e[2][1],p=e[2][2],n*o*p-n*l*c-s*a*p+s*l*r+h*a*c-h*o*r},i.NIFTI1.prototype.getExtensionLocation=function(){return i.NIFTI1.MAGIC_COOKIE+4},i.NIFTI1.prototype.getExtensionSize=function(e){return i.Utils.getIntAt(e,this.getExtensionLocation(),this.littleEndian)},i.NIFTI1.prototype.getExtensionCode=function(e){return i.Utils.getIntAt(e,this.getExtensionLocation()+4,this.littleEndian)},t.exports&&(t.exports=i.NIFTI1)}(dn);var rr={exports:{}};(function(t){var i=i||{};i.Utils=i.Utils||(typeof fe!="undefined"?Fi.exports:null),i.NIFTI1=i.NIFTI1||(typeof fe!="undefined"?dn.exports:null),i.NIFTI2=i.NIFTI2||function(){this.littleEndian=!1,this.dim_info=0,this.dims=[],this.intent_p1=0,this.intent_p2=0,this.intent_p3=0,this.intent_code=0,this.datatypeCode=0,this.numBitsPerVoxel=0,this.slice_start=0,this.slice_end=0,this.slice_code=0,this.pixDims=[],this.vox_offset=0,this.scl_slope=1,this.scl_inter=0,this.xyzt_units=0,this.cal_max=0,this.cal_min=0,this.slice_duration=0,this.toffset=0,this.description="",this.aux_file="",this.intent_name="",this.qform_code=0,this.sform_code=0,this.quatern_b=0,this.quatern_c=0,this.quatern_d=0,this.qoffset_x=0,this.qoffset_y=0,this.qoffset_z=0,this.affine=[[1,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,0,1]],this.magic=0,this.extensionFlag=[0,0,0,0]},i.NIFTI2.MAGIC_COOKIE=540,i.NIFTI2.MAGIC_NUMBER_LOCATION=4,i.NIFTI2.MAGIC_NUMBER=[110,43,50,0,13,10,26,10],i.NIFTI2.prototype.readHeader=function(e){var n=new DataView(e),a=i.Utils.getIntAt(n,0,this.littleEndian),r,s,o,c;if(a!==i.NIFTI2.MAGIC_COOKIE&&(this.littleEndian=!0,a=i.Utils.getIntAt(n,0,this.littleEndian)),a!==i.NIFTI2.MAGIC_COOKIE)throw new Error("This does not appear to be a NIFTI file!");for(this.datatypeCode=i.Utils.getShortAt(n,12,this.littleEndian),this.numBitsPerVoxel=i.Utils.getShortAt(n,14,this.littleEndian),r=0;r<8;r+=1)c=16+r*8,this.dims[r]=i.Utils.getLongAt(n,c,this.littleEndian);for(this.intent_p1=i.Utils.getDoubleAt(n,80,this.littleEndian),this.intent_p2=i.Utils.getDoubleAt(n,88,this.littleEndian),this.intent_p3=i.Utils.getDoubleAt(n,96,this.littleEndian),r=0;r<8;r+=1)c=104+r*8,this.pixDims[r]=i.Utils.getDoubleAt(n,c,this.littleEndian);for(this.vox_offset=i.Utils.getLongAt(n,168,this.littleEndian),this.scl_slope=i.Utils.getDoubleAt(n,176,this.littleEndian),this.scl_inter=i.Utils.getDoubleAt(n,184,this.littleEndian),this.cal_max=i.Utils.getDoubleAt(n,192,this.littleEndian),this.cal_min=i.Utils.getDoubleAt(n,200,this.littleEndian),this.slice_duration=i.Utils.getDoubleAt(n,208,this.littleEndian),this.toffset=i.Utils.getDoubleAt(n,216,this.littleEndian),this.slice_start=i.Utils.getLongAt(n,224,this.littleEndian),this.slice_end=i.Utils.getLongAt(n,232,this.littleEndian),this.description=i.Utils.getStringAt(n,240,240+80),this.aux_file=i.Utils.getStringAt(n,320,320+24),this.qform_code=i.Utils.getIntAt(n,344,this.littleEndian),this.sform_code=i.Utils.getIntAt(n,348,this.littleEndian),this.quatern_b=i.Utils.getDoubleAt(n,352,this.littleEndian),this.quatern_c=i.Utils.getDoubleAt(n,360,this.littleEndian),this.quatern_d=i.Utils.getDoubleAt(n,368,this.littleEndian),this.qoffset_x=i.Utils.getDoubleAt(n,376,this.littleEndian),this.qoffset_y=i.Utils.getDoubleAt(n,384,this.littleEndian),this.qoffset_z=i.Utils.getDoubleAt(n,392,this.littleEndian),s=0;s<3;s+=1)for(o=0;o<4;o+=1)c=400+(s*4+o)*8,this.affine[s][o]=i.Utils.getDoubleAt(n,c,this.littleEndian);this.affine[3][0]=0,this.affine[3][1]=0,this.affine[3][2]=0,this.affine[3][3]=1,this.slice_code=i.Utils.getIntAt(n,496,this.littleEndian),this.xyzt_units=i.Utils.getIntAt(n,500,this.littleEndian),this.intent_code=i.Utils.getIntAt(n,504,this.littleEndian),this.intent_name=i.Utils.getStringAt(n,508,508+16),this.dim_info=i.Utils.getByteAt(n,524),n.byteLength>i.NIFTI2.MAGIC_COOKIE&&(this.extensionFlag[0]=i.Utils.getByteAt(n,540),this.extensionFlag[1]=i.Utils.getByteAt(n,540+1),this.extensionFlag[2]=i.Utils.getByteAt(n,540+2),this.extensionFlag[3]=i.Utils.getByteAt(n,540+3),this.extensionFlag[0]&&(this.extensionSize=this.getExtensionSize(n),this.extensionCode=this.getExtensionCode(n)))},i.NIFTI2.prototype.toFormattedString=function(){var e=i.Utils.formatNumber,n="";return n+="Datatype = "+ +this.datatypeCode+" ("+this.getDatatypeCodeString(this.datatypeCode)+`)
  `,n+="Bits Per Voxel =  = "+this.numBitsPerVoxel+`
  `,n+="Image Dimensions (1-8): "+this.dims[0]+", "+this.dims[1]+", "+this.dims[2]+", "+this.dims[3]+", "+this.dims[4]+", "+this.dims[5]+", "+this.dims[6]+", "+this.dims[7]+`
  `,n+="Intent Parameters (1-3): "+this.intent_p1+", "+this.intent_p2+", "+this.intent_p3+`
  `,n+="Voxel Dimensions (1-8): "+e(this.pixDims[0])+", "+e(this.pixDims[1])+", "+e(this.pixDims[2])+", "+e(this.pixDims[3])+", "+e(this.pixDims[4])+", "+e(this.pixDims[5])+", "+e(this.pixDims[6])+", "+e(this.pixDims[7])+`
  `,n+="Image Offset = "+this.vox_offset+`
  `,n+="Data Scale:  Slope = "+e(this.scl_slope)+"  Intercept = "+e(this.scl_inter)+`
  `,n+="Display Range:  Max = "+e(this.cal_max)+"  Min = "+e(this.cal_min)+`
  `,n+="Slice Duration = "+this.slice_duration+`
  `,n+="Time Axis Shift = "+this.toffset+`
  `,n+="Slice Start = "+this.slice_start+`
  `,n+="Slice End = "+this.slice_end+`
  `,n+='Description: "'+this.description+`"
  `,n+='Auxiliary File: "'+this.aux_file+`"
  `,n+="Q-Form Code = "+this.qform_code+" ("+this.getTransformCodeString(this.qform_code)+`)
  `,n+="S-Form Code = "+this.sform_code+" ("+this.getTransformCodeString(this.sform_code)+`)
  `,n+="Quaternion Parameters:  b = "+e(this.quatern_b)+"  c = "+e(this.quatern_c)+"  d = "+e(this.quatern_d)+`
  `,n+="Quaternion Offsets:  x = "+this.qoffset_x+"  y = "+this.qoffset_y+"  z = "+this.qoffset_z+`
  `,n+="S-Form Parameters X: "+e(this.affine[0][0])+", "+e(this.affine[0][1])+", "+e(this.affine[0][2])+", "+e(this.affine[0][3])+`
  `,n+="S-Form Parameters Y: "+e(this.affine[1][0])+", "+e(this.affine[1][1])+", "+e(this.affine[1][2])+", "+e(this.affine[1][3])+`
  `,n+="S-Form Parameters Z: "+e(this.affine[2][0])+", "+e(this.affine[2][1])+", "+e(this.affine[2][2])+", "+e(this.affine[2][3])+`
  `,n+="Slice Code = "+this.slice_code+`
  `,n+="Units Code = "+this.xyzt_units+" ("+this.getUnitsCodeString(i.NIFTI1.SPATIAL_UNITS_MASK&this.xyzt_units)+", "+this.getUnitsCodeString(i.NIFTI1.TEMPORAL_UNITS_MASK&this.xyzt_units)+`)
  `,n+="Intent Code = "+this.intent_code+`
  `,n+='Intent Name: "'+this.intent_name+`"
  `,n+="Dim Info = "+this.dim_info+`
  `,n},i.NIFTI2.prototype.getExtensionLocation=function(){return i.NIFTI2.MAGIC_COOKIE+4},i.NIFTI2.prototype.getExtensionSize=i.NIFTI1.prototype.getExtensionSize,i.NIFTI2.prototype.getExtensionCode=i.NIFTI1.prototype.getExtensionCode,i.NIFTI2.prototype.getDatatypeCodeString=i.NIFTI1.prototype.getDatatypeCodeString,i.NIFTI2.prototype.getTransformCodeString=i.NIFTI1.prototype.getTransformCodeString,i.NIFTI2.prototype.getUnitsCodeString=i.NIFTI1.prototype.getUnitsCodeString,i.NIFTI2.prototype.getQformMat=i.NIFTI1.prototype.getQformMat,i.NIFTI2.prototype.convertNiftiQFormToNiftiSForm=i.NIFTI1.prototype.convertNiftiQFormToNiftiSForm,i.NIFTI2.prototype.convertNiftiSFormToNEMA=i.NIFTI1.prototype.convertNiftiSFormToNEMA,i.NIFTI2.prototype.nifti_mat33_mul=i.NIFTI1.prototype.nifti_mat33_mul,i.NIFTI2.prototype.nifti_mat33_determ=i.NIFTI1.prototype.nifti_mat33_determ,t.exports&&(t.exports=i.NIFTI2)})(rr);/*! pako 2.0.4 https://github.com/nodeca/pako @license (MIT AND Zlib) */const Uo=4,ar=0,sr=1,Lo=2;function We(t){let i=t.length;for(;--i>=0;)t[i]=0}const Oo=0,or=1,zo=2,Go=3,Yo=258,pn=29,ri=256,ai=ri+1+pn,Ke=30,gn=19,lr=2*ai+1,Oe=15,mn=16,Zo=7,vn=256,hr=16,fr=17,cr=18,An=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),Mi=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),Ho=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),ur=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),jo=512,be=new Array((ai+2)*2);We(be);const si=new Array(Ke*2);We(si);const oi=new Array(jo);We(oi);const li=new Array(Yo-Go+1);We(li);const xn=new Array(pn);We(xn);const ki=new Array(Ke);We(ki);function bn(t,i,e,n,a){this.static_tree=t,this.extra_bits=i,this.extra_base=e,this.elems=n,this.max_length=a,this.has_stree=t&&t.length}let dr,pr,gr;function En(t,i){this.dyn_tree=t,this.max_code=0,this.stat_desc=i}const mr=t=>t<256?oi[t]:oi[256+(t>>>7)],hi=(t,i)=>{t.pending_buf[t.pending++]=i&255,t.pending_buf[t.pending++]=i>>>8&255},te=(t,i,e)=>{t.bi_valid>mn-e?(t.bi_buf|=i<<t.bi_valid&65535,hi(t,t.bi_buf),t.bi_buf=i>>mn-t.bi_valid,t.bi_valid+=e-mn):(t.bi_buf|=i<<t.bi_valid&65535,t.bi_valid+=e)},de=(t,i,e)=>{te(t,e[i*2],e[i*2+1])},vr=(t,i)=>{let e=0;do e|=t&1,t>>>=1,e<<=1;while(--i>0);return e>>>1},Vo=t=>{t.bi_valid===16?(hi(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):t.bi_valid>=8&&(t.pending_buf[t.pending++]=t.bi_buf&255,t.bi_buf>>=8,t.bi_valid-=8)},Qo=(t,i)=>{const e=i.dyn_tree,n=i.max_code,a=i.stat_desc.static_tree,r=i.stat_desc.has_stree,s=i.stat_desc.extra_bits,o=i.stat_desc.extra_base,c=i.stat_desc.max_length;let h,l,p,f,d,E,A=0;for(f=0;f<=Oe;f++)t.bl_count[f]=0;for(e[t.heap[t.heap_max]*2+1]=0,h=t.heap_max+1;h<lr;h++)l=t.heap[h],f=e[e[l*2+1]*2+1]+1,f>c&&(f=c,A++),e[l*2+1]=f,!(l>n)&&(t.bl_count[f]++,d=0,l>=o&&(d=s[l-o]),E=e[l*2],t.opt_len+=E*(f+d),r&&(t.static_len+=E*(a[l*2+1]+d)));if(A!==0){do{for(f=c-1;t.bl_count[f]===0;)f--;t.bl_count[f]--,t.bl_count[f+1]+=2,t.bl_count[c]--,A-=2}while(A>0);for(f=c;f!==0;f--)for(l=t.bl_count[f];l!==0;)p=t.heap[--h],!(p>n)&&(e[p*2+1]!==f&&(t.opt_len+=(f-e[p*2+1])*e[p*2],e[p*2+1]=f),l--)}},Ar=(t,i,e)=>{const n=new Array(Oe+1);let a=0,r,s;for(r=1;r<=Oe;r++)n[r]=a=a+e[r-1]<<1;for(s=0;s<=i;s++){let o=t[s*2+1];o!==0&&(t[s*2]=vr(n[o]++,o))}},Xo=()=>{let t,i,e,n,a;const r=new Array(Oe+1);for(e=0,n=0;n<pn-1;n++)for(xn[n]=e,t=0;t<1<<An[n];t++)li[e++]=n;for(li[e-1]=n,a=0,n=0;n<16;n++)for(ki[n]=a,t=0;t<1<<Mi[n];t++)oi[a++]=n;for(a>>=7;n<Ke;n++)for(ki[n]=a<<7,t=0;t<1<<Mi[n]-7;t++)oi[256+a++]=n;for(i=0;i<=Oe;i++)r[i]=0;for(t=0;t<=143;)be[t*2+1]=8,t++,r[8]++;for(;t<=255;)be[t*2+1]=9,t++,r[9]++;for(;t<=279;)be[t*2+1]=7,t++,r[7]++;for(;t<=287;)be[t*2+1]=8,t++,r[8]++;for(Ar(be,ai+1,r),t=0;t<Ke;t++)si[t*2+1]=5,si[t*2]=vr(t,5);dr=new bn(be,An,ri+1,ai,Oe),pr=new bn(si,Mi,0,Ke,Oe),gr=new bn(new Array(0),Ho,0,gn,Zo)},xr=t=>{let i;for(i=0;i<ai;i++)t.dyn_ltree[i*2]=0;for(i=0;i<Ke;i++)t.dyn_dtree[i*2]=0;for(i=0;i<gn;i++)t.bl_tree[i*2]=0;t.dyn_ltree[vn*2]=1,t.opt_len=t.static_len=0,t.last_lit=t.matches=0},br=t=>{t.bi_valid>8?hi(t,t.bi_buf):t.bi_valid>0&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0},Wo=(t,i,e,n)=>{br(t),n&&(hi(t,e),hi(t,~e)),t.pending_buf.set(t.window.subarray(i,i+e),t.pending),t.pending+=e},Er=(t,i,e,n)=>{const a=i*2,r=e*2;return t[a]<t[r]||t[a]===t[r]&&n[i]<=n[e]},wn=(t,i,e)=>{const n=t.heap[e];let a=e<<1;for(;a<=t.heap_len&&(a<t.heap_len&&Er(i,t.heap[a+1],t.heap[a],t.depth)&&a++,!Er(i,n,t.heap[a],t.depth));)t.heap[e]=t.heap[a],e=a,a<<=1;t.heap[e]=n},wr=(t,i,e)=>{let n,a,r=0,s,o;if(t.last_lit!==0)do n=t.pending_buf[t.d_buf+r*2]<<8|t.pending_buf[t.d_buf+r*2+1],a=t.pending_buf[t.l_buf+r],r++,n===0?de(t,a,i):(s=li[a],de(t,s+ri+1,i),o=An[s],o!==0&&(a-=xn[s],te(t,a,o)),n--,s=mr(n),de(t,s,e),o=Mi[s],o!==0&&(n-=ki[s],te(t,n,o)));while(r<t.last_lit);de(t,vn,i)},Tn=(t,i)=>{const e=i.dyn_tree,n=i.stat_desc.static_tree,a=i.stat_desc.has_stree,r=i.stat_desc.elems;let s,o,c=-1,h;for(t.heap_len=0,t.heap_max=lr,s=0;s<r;s++)e[s*2]!==0?(t.heap[++t.heap_len]=c=s,t.depth[s]=0):e[s*2+1]=0;for(;t.heap_len<2;)h=t.heap[++t.heap_len]=c<2?++c:0,e[h*2]=1,t.depth[h]=0,t.opt_len--,a&&(t.static_len-=n[h*2+1]);for(i.max_code=c,s=t.heap_len>>1;s>=1;s--)wn(t,e,s);h=r;do s=t.heap[1],t.heap[1]=t.heap[t.heap_len--],wn(t,e,1),o=t.heap[1],t.heap[--t.heap_max]=s,t.heap[--t.heap_max]=o,e[h*2]=e[s*2]+e[o*2],t.depth[h]=(t.depth[s]>=t.depth[o]?t.depth[s]:t.depth[o])+1,e[s*2+1]=e[o*2+1]=h,t.heap[1]=h++,wn(t,e,1);while(t.heap_len>=2);t.heap[--t.heap_max]=t.heap[1],Qo(t,i),Ar(e,c,t.bl_count)},Tr=(t,i,e)=>{let n,a=-1,r,s=i[0*2+1],o=0,c=7,h=4;for(s===0&&(c=138,h=3),i[(e+1)*2+1]=65535,n=0;n<=e;n++)r=s,s=i[(n+1)*2+1],!(++o<c&&r===s)&&(o<h?t.bl_tree[r*2]+=o:r!==0?(r!==a&&t.bl_tree[r*2]++,t.bl_tree[hr*2]++):o<=10?t.bl_tree[fr*2]++:t.bl_tree[cr*2]++,o=0,a=r,s===0?(c=138,h=3):r===s?(c=6,h=3):(c=7,h=4))},Ir=(t,i,e)=>{let n,a=-1,r,s=i[0*2+1],o=0,c=7,h=4;for(s===0&&(c=138,h=3),n=0;n<=e;n++)if(r=s,s=i[(n+1)*2+1],!(++o<c&&r===s)){if(o<h)do de(t,r,t.bl_tree);while(--o!==0);else r!==0?(r!==a&&(de(t,r,t.bl_tree),o--),de(t,hr,t.bl_tree),te(t,o-3,2)):o<=10?(de(t,fr,t.bl_tree),te(t,o-3,3)):(de(t,cr,t.bl_tree),te(t,o-11,7));o=0,a=r,s===0?(c=138,h=3):r===s?(c=6,h=3):(c=7,h=4)}},Ko=t=>{let i;for(Tr(t,t.dyn_ltree,t.l_desc.max_code),Tr(t,t.dyn_dtree,t.d_desc.max_code),Tn(t,t.bl_desc),i=gn-1;i>=3&&t.bl_tree[ur[i]*2+1]===0;i--);return t.opt_len+=3*(i+1)+5+5+4,i},Jo=(t,i,e,n)=>{let a;for(te(t,i-257,5),te(t,e-1,5),te(t,n-4,4),a=0;a<n;a++)te(t,t.bl_tree[ur[a]*2+1],3);Ir(t,t.dyn_ltree,i-1),Ir(t,t.dyn_dtree,e-1)},qo=t=>{let i=4093624447,e;for(e=0;e<=31;e++,i>>>=1)if(i&1&&t.dyn_ltree[e*2]!==0)return ar;if(t.dyn_ltree[9*2]!==0||t.dyn_ltree[10*2]!==0||t.dyn_ltree[13*2]!==0)return sr;for(e=32;e<ri;e++)if(t.dyn_ltree[e*2]!==0)return sr;return ar};let yr=!1;const $o=t=>{yr||(Xo(),yr=!0),t.l_desc=new En(t.dyn_ltree,dr),t.d_desc=new En(t.dyn_dtree,pr),t.bl_desc=new En(t.bl_tree,gr),t.bi_buf=0,t.bi_valid=0,xr(t)},_r=(t,i,e,n)=>{te(t,(Oo<<1)+(n?1:0),3),Wo(t,i,e,!0)},tl=t=>{te(t,or<<1,3),de(t,vn,be),Vo(t)},el=(t,i,e,n)=>{let a,r,s=0;t.level>0?(t.strm.data_type===Lo&&(t.strm.data_type=qo(t)),Tn(t,t.l_desc),Tn(t,t.d_desc),s=Ko(t),a=t.opt_len+3+7>>>3,r=t.static_len+3+7>>>3,r<=a&&(a=r)):a=r=e+5,e+4<=a&&i!==-1?_r(t,i,e,n):t.strategy===Uo||r===a?(te(t,(or<<1)+(n?1:0),3),wr(t,be,si)):(te(t,(zo<<1)+(n?1:0),3),Jo(t,t.l_desc.max_code+1,t.d_desc.max_code+1,s+1),wr(t,t.dyn_ltree,t.dyn_dtree)),xr(t),n&&br(t)},il=(t,i,e)=>(t.pending_buf[t.d_buf+t.last_lit*2]=i>>>8&255,t.pending_buf[t.d_buf+t.last_lit*2+1]=i&255,t.pending_buf[t.l_buf+t.last_lit]=e&255,t.last_lit++,i===0?t.dyn_ltree[e*2]++:(t.matches++,i--,t.dyn_ltree[(li[e]+ri+1)*2]++,t.dyn_dtree[mr(i)*2]++),t.last_lit===t.lit_bufsize-1);var nl=$o,rl=_r,al=el,sl=il,ol=tl,ll={_tr_init:nl,_tr_stored_block:rl,_tr_flush_block:al,_tr_tally:sl,_tr_align:ol},fi=(t,i,e,n)=>{let a=t&65535|0,r=t>>>16&65535|0,s=0;for(;e!==0;){s=e>2e3?2e3:e,e-=s;do a=a+i[n++]|0,r=r+a|0;while(--s);a%=65521,r%=65521}return a|r<<16|0};const hl=()=>{let t,i=[];for(var e=0;e<256;e++){t=e;for(var n=0;n<8;n++)t=t&1?3988292384^t>>>1:t>>>1;i[e]=t}return i},fl=new Uint32Array(hl());var jt=(t,i,e,n)=>{const a=fl,r=n+e;t^=-1;for(let s=n;s<r;s++)t=t>>>8^a[(t^i[s])&255];return t^-1},ze={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},Ge={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8};const{_tr_init:cl,_tr_stored_block:ul,_tr_flush_block:dl,_tr_tally:Be,_tr_align:pl}=ll,{Z_NO_FLUSH:Ye,Z_PARTIAL_FLUSH:gl,Z_FULL_FLUSH:ml,Z_FINISH:Re,Z_BLOCK:Sr,Z_OK:pe,Z_STREAM_END:Dr,Z_STREAM_ERROR:se,Z_DATA_ERROR:vl,Z_BUF_ERROR:In,Z_DEFAULT_COMPRESSION:Al,Z_FILTERED:xl,Z_HUFFMAN_ONLY:Pi,Z_RLE:bl,Z_FIXED:El,Z_DEFAULT_STRATEGY:wl,Z_UNKNOWN:Tl,Z_DEFLATED:Ui}=Ge,Il=9,yl=15,_l=8,Sl=29,yn=256+1+Sl,Dl=30,Bl=19,Rl=2*yn+1,Nl=15,yt=3,Ne=258,ce=Ne+yt+1,Cl=32,Li=42,_n=69,Oi=73,zi=91,Gi=103,Ze=113,ci=666,Gt=1,ui=2,He=3,Je=4,Fl=3,Ce=(t,i)=>(t.msg=ze[i],i),Br=t=>(t<<1)-(t>4?9:0),Fe=t=>{let i=t.length;for(;--i>=0;)t[i]=0};let Me=(t,i,e)=>(i<<t.hash_shift^e)&t.hash_mask;const ke=t=>{const i=t.state;let e=i.pending;e>t.avail_out&&(e=t.avail_out),e!==0&&(t.output.set(i.pending_buf.subarray(i.pending_out,i.pending_out+e),t.next_out),t.next_out+=e,i.pending_out+=e,t.total_out+=e,t.avail_out-=e,i.pending-=e,i.pending===0&&(i.pending_out=0))},Qt=(t,i)=>{dl(t,t.block_start>=0?t.block_start:-1,t.strstart-t.block_start,i),t.block_start=t.strstart,ke(t.strm)},Dt=(t,i)=>{t.pending_buf[t.pending++]=i},di=(t,i)=>{t.pending_buf[t.pending++]=i>>>8&255,t.pending_buf[t.pending++]=i&255},Ml=(t,i,e,n)=>{let a=t.avail_in;return a>n&&(a=n),a===0?0:(t.avail_in-=a,i.set(t.input.subarray(t.next_in,t.next_in+a),e),t.state.wrap===1?t.adler=fi(t.adler,i,a,e):t.state.wrap===2&&(t.adler=jt(t.adler,i,a,e)),t.next_in+=a,t.total_in+=a,a)},Rr=(t,i)=>{let e=t.max_chain_length,n=t.strstart,a,r,s=t.prev_length,o=t.nice_match;const c=t.strstart>t.w_size-ce?t.strstart-(t.w_size-ce):0,h=t.window,l=t.w_mask,p=t.prev,f=t.strstart+Ne;let d=h[n+s-1],E=h[n+s];t.prev_length>=t.good_match&&(e>>=2),o>t.lookahead&&(o=t.lookahead);do if(a=i,!(h[a+s]!==E||h[a+s-1]!==d||h[a]!==h[n]||h[++a]!==h[n+1])){n+=2,a++;do;while(h[++n]===h[++a]&&h[++n]===h[++a]&&h[++n]===h[++a]&&h[++n]===h[++a]&&h[++n]===h[++a]&&h[++n]===h[++a]&&h[++n]===h[++a]&&h[++n]===h[++a]&&n<f);if(r=Ne-(f-n),n=f-Ne,r>s){if(t.match_start=i,s=r,r>=o)break;d=h[n+s-1],E=h[n+s]}}while((i=p[i&l])>c&&--e!==0);return s<=t.lookahead?s:t.lookahead},je=t=>{const i=t.w_size;let e,n,a,r,s;do{if(r=t.window_size-t.lookahead-t.strstart,t.strstart>=i+(i-ce)){t.window.set(t.window.subarray(i,i+i),0),t.match_start-=i,t.strstart-=i,t.block_start-=i,n=t.hash_size,e=n;do a=t.head[--e],t.head[e]=a>=i?a-i:0;while(--n);n=i,e=n;do a=t.prev[--e],t.prev[e]=a>=i?a-i:0;while(--n);r+=i}if(t.strm.avail_in===0)break;if(n=Ml(t.strm,t.window,t.strstart+t.lookahead,r),t.lookahead+=n,t.lookahead+t.insert>=yt)for(s=t.strstart-t.insert,t.ins_h=t.window[s],t.ins_h=Me(t,t.ins_h,t.window[s+1]);t.insert&&(t.ins_h=Me(t,t.ins_h,t.window[s+yt-1]),t.prev[s&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=s,s++,t.insert--,!(t.lookahead+t.insert<yt)););}while(t.lookahead<ce&&t.strm.avail_in!==0)},kl=(t,i)=>{let e=65535;for(e>t.pending_buf_size-5&&(e=t.pending_buf_size-5);;){if(t.lookahead<=1){if(je(t),t.lookahead===0&&i===Ye)return Gt;if(t.lookahead===0)break}t.strstart+=t.lookahead,t.lookahead=0;const n=t.block_start+e;if((t.strstart===0||t.strstart>=n)&&(t.lookahead=t.strstart-n,t.strstart=n,Qt(t,!1),t.strm.avail_out===0)||t.strstart-t.block_start>=t.w_size-ce&&(Qt(t,!1),t.strm.avail_out===0))return Gt}return t.insert=0,i===Re?(Qt(t,!0),t.strm.avail_out===0?He:Je):(t.strstart>t.block_start&&(Qt(t,!1),t.strm.avail_out===0),Gt)},Sn=(t,i)=>{let e,n;for(;;){if(t.lookahead<ce){if(je(t),t.lookahead<ce&&i===Ye)return Gt;if(t.lookahead===0)break}if(e=0,t.lookahead>=yt&&(t.ins_h=Me(t,t.ins_h,t.window[t.strstart+yt-1]),e=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),e!==0&&t.strstart-e<=t.w_size-ce&&(t.match_length=Rr(t,e)),t.match_length>=yt)if(n=Be(t,t.strstart-t.match_start,t.match_length-yt),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=yt){t.match_length--;do t.strstart++,t.ins_h=Me(t,t.ins_h,t.window[t.strstart+yt-1]),e=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart;while(--t.match_length!==0);t.strstart++}else t.strstart+=t.match_length,t.match_length=0,t.ins_h=t.window[t.strstart],t.ins_h=Me(t,t.ins_h,t.window[t.strstart+1]);else n=Be(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++;if(n&&(Qt(t,!1),t.strm.avail_out===0))return Gt}return t.insert=t.strstart<yt-1?t.strstart:yt-1,i===Re?(Qt(t,!0),t.strm.avail_out===0?He:Je):t.last_lit&&(Qt(t,!1),t.strm.avail_out===0)?Gt:ui},qe=(t,i)=>{let e,n,a;for(;;){if(t.lookahead<ce){if(je(t),t.lookahead<ce&&i===Ye)return Gt;if(t.lookahead===0)break}if(e=0,t.lookahead>=yt&&(t.ins_h=Me(t,t.ins_h,t.window[t.strstart+yt-1]),e=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),t.prev_length=t.match_length,t.prev_match=t.match_start,t.match_length=yt-1,e!==0&&t.prev_length<t.max_lazy_match&&t.strstart-e<=t.w_size-ce&&(t.match_length=Rr(t,e),t.match_length<=5&&(t.strategy===xl||t.match_length===yt&&t.strstart-t.match_start>4096)&&(t.match_length=yt-1)),t.prev_length>=yt&&t.match_length<=t.prev_length){a=t.strstart+t.lookahead-yt,n=Be(t,t.strstart-1-t.prev_match,t.prev_length-yt),t.lookahead-=t.prev_length-1,t.prev_length-=2;do++t.strstart<=a&&(t.ins_h=Me(t,t.ins_h,t.window[t.strstart+yt-1]),e=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart);while(--t.prev_length!==0);if(t.match_available=0,t.match_length=yt-1,t.strstart++,n&&(Qt(t,!1),t.strm.avail_out===0))return Gt}else if(t.match_available){if(n=Be(t,0,t.window[t.strstart-1]),n&&Qt(t,!1),t.strstart++,t.lookahead--,t.strm.avail_out===0)return Gt}else t.match_available=1,t.strstart++,t.lookahead--}return t.match_available&&(n=Be(t,0,t.window[t.strstart-1]),t.match_available=0),t.insert=t.strstart<yt-1?t.strstart:yt-1,i===Re?(Qt(t,!0),t.strm.avail_out===0?He:Je):t.last_lit&&(Qt(t,!1),t.strm.avail_out===0)?Gt:ui},Pl=(t,i)=>{let e,n,a,r;const s=t.window;for(;;){if(t.lookahead<=Ne){if(je(t),t.lookahead<=Ne&&i===Ye)return Gt;if(t.lookahead===0)break}if(t.match_length=0,t.lookahead>=yt&&t.strstart>0&&(a=t.strstart-1,n=s[a],n===s[++a]&&n===s[++a]&&n===s[++a])){r=t.strstart+Ne;do;while(n===s[++a]&&n===s[++a]&&n===s[++a]&&n===s[++a]&&n===s[++a]&&n===s[++a]&&n===s[++a]&&n===s[++a]&&a<r);t.match_length=Ne-(r-a),t.match_length>t.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=yt?(e=Be(t,1,t.match_length-yt),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(e=Be(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),e&&(Qt(t,!1),t.strm.avail_out===0))return Gt}return t.insert=0,i===Re?(Qt(t,!0),t.strm.avail_out===0?He:Je):t.last_lit&&(Qt(t,!1),t.strm.avail_out===0)?Gt:ui},Ul=(t,i)=>{let e;for(;;){if(t.lookahead===0&&(je(t),t.lookahead===0)){if(i===Ye)return Gt;break}if(t.match_length=0,e=Be(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,e&&(Qt(t,!1),t.strm.avail_out===0))return Gt}return t.insert=0,i===Re?(Qt(t,!0),t.strm.avail_out===0?He:Je):t.last_lit&&(Qt(t,!1),t.strm.avail_out===0)?Gt:ui};function ge(t,i,e,n,a){this.good_length=t,this.max_lazy=i,this.nice_length=e,this.max_chain=n,this.func=a}const pi=[new ge(0,0,0,0,kl),new ge(4,4,8,4,Sn),new ge(4,5,16,8,Sn),new ge(4,6,32,32,Sn),new ge(4,4,16,16,qe),new ge(8,16,32,32,qe),new ge(8,16,128,128,qe),new ge(8,32,128,256,qe),new ge(32,128,258,1024,qe),new ge(32,258,258,4096,qe)],Ll=t=>{t.window_size=2*t.w_size,Fe(t.head),t.max_lazy_match=pi[t.level].max_lazy,t.good_match=pi[t.level].good_length,t.nice_match=pi[t.level].nice_length,t.max_chain_length=pi[t.level].max_chain,t.strstart=0,t.block_start=0,t.lookahead=0,t.insert=0,t.match_length=t.prev_length=yt-1,t.match_available=0,t.ins_h=0};function Ol(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=Ui,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(Rl*2),this.dyn_dtree=new Uint16Array((2*Dl+1)*2),this.bl_tree=new Uint16Array((2*Bl+1)*2),Fe(this.dyn_ltree),Fe(this.dyn_dtree),Fe(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(Nl+1),this.heap=new Uint16Array(2*yn+1),Fe(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(2*yn+1),Fe(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}const Nr=t=>{if(!t||!t.state)return Ce(t,se);t.total_in=t.total_out=0,t.data_type=Tl;const i=t.state;return i.pending=0,i.pending_out=0,i.wrap<0&&(i.wrap=-i.wrap),i.status=i.wrap?Li:Ze,t.adler=i.wrap===2?0:1,i.last_flush=Ye,cl(i),pe},Cr=t=>{const i=Nr(t);return i===pe&&Ll(t.state),i},zl=(t,i)=>!t||!t.state||t.state.wrap!==2?se:(t.state.gzhead=i,pe),Fr=(t,i,e,n,a,r)=>{if(!t)return se;let s=1;if(i===Al&&(i=6),n<0?(s=0,n=-n):n>15&&(s=2,n-=16),a<1||a>Il||e!==Ui||n<8||n>15||i<0||i>9||r<0||r>El)return Ce(t,se);n===8&&(n=9);const o=new Ol;return t.state=o,o.strm=t,o.wrap=s,o.gzhead=null,o.w_bits=n,o.w_size=1<<o.w_bits,o.w_mask=o.w_size-1,o.hash_bits=a+7,o.hash_size=1<<o.hash_bits,o.hash_mask=o.hash_size-1,o.hash_shift=~~((o.hash_bits+yt-1)/yt),o.window=new Uint8Array(o.w_size*2),o.head=new Uint16Array(o.hash_size),o.prev=new Uint16Array(o.w_size),o.lit_bufsize=1<<a+6,o.pending_buf_size=o.lit_bufsize*4,o.pending_buf=new Uint8Array(o.pending_buf_size),o.d_buf=1*o.lit_bufsize,o.l_buf=(1+2)*o.lit_bufsize,o.level=i,o.strategy=r,o.method=e,Cr(t)},Gl=(t,i)=>Fr(t,i,Ui,yl,_l,wl),Yl=(t,i)=>{let e,n;if(!t||!t.state||i>Sr||i<0)return t?Ce(t,se):se;const a=t.state;if(!t.output||!t.input&&t.avail_in!==0||a.status===ci&&i!==Re)return Ce(t,t.avail_out===0?In:se);a.strm=t;const r=a.last_flush;if(a.last_flush=i,a.status===Li)if(a.wrap===2)t.adler=0,Dt(a,31),Dt(a,139),Dt(a,8),a.gzhead?(Dt(a,(a.gzhead.text?1:0)+(a.gzhead.hcrc?2:0)+(a.gzhead.extra?4:0)+(a.gzhead.name?8:0)+(a.gzhead.comment?16:0)),Dt(a,a.gzhead.time&255),Dt(a,a.gzhead.time>>8&255),Dt(a,a.gzhead.time>>16&255),Dt(a,a.gzhead.time>>24&255),Dt(a,a.level===9?2:a.strategy>=Pi||a.level<2?4:0),Dt(a,a.gzhead.os&255),a.gzhead.extra&&a.gzhead.extra.length&&(Dt(a,a.gzhead.extra.length&255),Dt(a,a.gzhead.extra.length>>8&255)),a.gzhead.hcrc&&(t.adler=jt(t.adler,a.pending_buf,a.pending,0)),a.gzindex=0,a.status=_n):(Dt(a,0),Dt(a,0),Dt(a,0),Dt(a,0),Dt(a,0),Dt(a,a.level===9?2:a.strategy>=Pi||a.level<2?4:0),Dt(a,Fl),a.status=Ze);else{let s=Ui+(a.w_bits-8<<4)<<8,o=-1;a.strategy>=Pi||a.level<2?o=0:a.level<6?o=1:a.level===6?o=2:o=3,s|=o<<6,a.strstart!==0&&(s|=Cl),s+=31-s%31,a.status=Ze,di(a,s),a.strstart!==0&&(di(a,t.adler>>>16),di(a,t.adler&65535)),t.adler=1}if(a.status===_n)if(a.gzhead.extra){for(e=a.pending;a.gzindex<(a.gzhead.extra.length&65535)&&!(a.pending===a.pending_buf_size&&(a.gzhead.hcrc&&a.pending>e&&(t.adler=jt(t.adler,a.pending_buf,a.pending-e,e)),ke(t),e=a.pending,a.pending===a.pending_buf_size));)Dt(a,a.gzhead.extra[a.gzindex]&255),a.gzindex++;a.gzhead.hcrc&&a.pending>e&&(t.adler=jt(t.adler,a.pending_buf,a.pending-e,e)),a.gzindex===a.gzhead.extra.length&&(a.gzindex=0,a.status=Oi)}else a.status=Oi;if(a.status===Oi)if(a.gzhead.name){e=a.pending;do{if(a.pending===a.pending_buf_size&&(a.gzhead.hcrc&&a.pending>e&&(t.adler=jt(t.adler,a.pending_buf,a.pending-e,e)),ke(t),e=a.pending,a.pending===a.pending_buf_size)){n=1;break}a.gzindex<a.gzhead.name.length?n=a.gzhead.name.charCodeAt(a.gzindex++)&255:n=0,Dt(a,n)}while(n!==0);a.gzhead.hcrc&&a.pending>e&&(t.adler=jt(t.adler,a.pending_buf,a.pending-e,e)),n===0&&(a.gzindex=0,a.status=zi)}else a.status=zi;if(a.status===zi)if(a.gzhead.comment){e=a.pending;do{if(a.pending===a.pending_buf_size&&(a.gzhead.hcrc&&a.pending>e&&(t.adler=jt(t.adler,a.pending_buf,a.pending-e,e)),ke(t),e=a.pending,a.pending===a.pending_buf_size)){n=1;break}a.gzindex<a.gzhead.comment.length?n=a.gzhead.comment.charCodeAt(a.gzindex++)&255:n=0,Dt(a,n)}while(n!==0);a.gzhead.hcrc&&a.pending>e&&(t.adler=jt(t.adler,a.pending_buf,a.pending-e,e)),n===0&&(a.status=Gi)}else a.status=Gi;if(a.status===Gi&&(a.gzhead.hcrc?(a.pending+2>a.pending_buf_size&&ke(t),a.pending+2<=a.pending_buf_size&&(Dt(a,t.adler&255),Dt(a,t.adler>>8&255),t.adler=0,a.status=Ze)):a.status=Ze),a.pending!==0){if(ke(t),t.avail_out===0)return a.last_flush=-1,pe}else if(t.avail_in===0&&Br(i)<=Br(r)&&i!==Re)return Ce(t,In);if(a.status===ci&&t.avail_in!==0)return Ce(t,In);if(t.avail_in!==0||a.lookahead!==0||i!==Ye&&a.status!==ci){let s=a.strategy===Pi?Ul(a,i):a.strategy===bl?Pl(a,i):pi[a.level].func(a,i);if((s===He||s===Je)&&(a.status=ci),s===Gt||s===He)return t.avail_out===0&&(a.last_flush=-1),pe;if(s===ui&&(i===gl?pl(a):i!==Sr&&(ul(a,0,0,!1),i===ml&&(Fe(a.head),a.lookahead===0&&(a.strstart=0,a.block_start=0,a.insert=0))),ke(t),t.avail_out===0))return a.last_flush=-1,pe}return i!==Re?pe:a.wrap<=0?Dr:(a.wrap===2?(Dt(a,t.adler&255),Dt(a,t.adler>>8&255),Dt(a,t.adler>>16&255),Dt(a,t.adler>>24&255),Dt(a,t.total_in&255),Dt(a,t.total_in>>8&255),Dt(a,t.total_in>>16&255),Dt(a,t.total_in>>24&255)):(di(a,t.adler>>>16),di(a,t.adler&65535)),ke(t),a.wrap>0&&(a.wrap=-a.wrap),a.pending!==0?pe:Dr)},Zl=t=>{if(!t||!t.state)return se;const i=t.state.status;return i!==Li&&i!==_n&&i!==Oi&&i!==zi&&i!==Gi&&i!==Ze&&i!==ci?Ce(t,se):(t.state=null,i===Ze?Ce(t,vl):pe)},Hl=(t,i)=>{let e=i.length;if(!t||!t.state)return se;const n=t.state,a=n.wrap;if(a===2||a===1&&n.status!==Li||n.lookahead)return se;if(a===1&&(t.adler=fi(t.adler,i,e,0)),n.wrap=0,e>=n.w_size){a===0&&(Fe(n.head),n.strstart=0,n.block_start=0,n.insert=0);let c=new Uint8Array(n.w_size);c.set(i.subarray(e-n.w_size,e),0),i=c,e=n.w_size}const r=t.avail_in,s=t.next_in,o=t.input;for(t.avail_in=e,t.next_in=0,t.input=i,je(n);n.lookahead>=yt;){let c=n.strstart,h=n.lookahead-(yt-1);do n.ins_h=Me(n,n.ins_h,n.window[c+yt-1]),n.prev[c&n.w_mask]=n.head[n.ins_h],n.head[n.ins_h]=c,c++;while(--h);n.strstart=c,n.lookahead=yt-1,je(n)}return n.strstart+=n.lookahead,n.block_start=n.strstart,n.insert=n.lookahead,n.lookahead=0,n.match_length=n.prev_length=yt-1,n.match_available=0,t.next_in=s,t.input=o,t.avail_in=r,n.wrap=a,pe};var jl=Gl,Vl=Fr,Ql=Cr,Xl=Nr,Wl=zl,Kl=Yl,Jl=Zl,ql=Hl,$l="pako deflate (from Nodeca project)",gi={deflateInit:jl,deflateInit2:Vl,deflateReset:Ql,deflateResetKeep:Xl,deflateSetHeader:Wl,deflate:Kl,deflateEnd:Jl,deflateSetDictionary:ql,deflateInfo:$l};const t0=(t,i)=>Object.prototype.hasOwnProperty.call(t,i);var e0=function(t){const i=Array.prototype.slice.call(arguments,1);for(;i.length;){const e=i.shift();if(!!e){if(typeof e!="object")throw new TypeError(e+"must be non-object");for(const n in e)t0(e,n)&&(t[n]=e[n])}}return t},i0=t=>{let i=0;for(let n=0,a=t.length;n<a;n++)i+=t[n].length;const e=new Uint8Array(i);for(let n=0,a=0,r=t.length;n<r;n++){let s=t[n];e.set(s,a),a+=s.length}return e},Yi={assign:e0,flattenChunks:i0};let Mr=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{Mr=!1}const mi=new Uint8Array(256);for(let t=0;t<256;t++)mi[t]=t>=252?6:t>=248?5:t>=240?4:t>=224?3:t>=192?2:1;mi[254]=mi[254]=1;var n0=t=>{if(typeof TextEncoder=="function"&&TextEncoder.prototype.encode)return new TextEncoder().encode(t);let i,e,n,a,r,s=t.length,o=0;for(a=0;a<s;a++)e=t.charCodeAt(a),(e&64512)===55296&&a+1<s&&(n=t.charCodeAt(a+1),(n&64512)===56320&&(e=65536+(e-55296<<10)+(n-56320),a++)),o+=e<128?1:e<2048?2:e<65536?3:4;for(i=new Uint8Array(o),r=0,a=0;r<o;a++)e=t.charCodeAt(a),(e&64512)===55296&&a+1<s&&(n=t.charCodeAt(a+1),(n&64512)===56320&&(e=65536+(e-55296<<10)+(n-56320),a++)),e<128?i[r++]=e:e<2048?(i[r++]=192|e>>>6,i[r++]=128|e&63):e<65536?(i[r++]=224|e>>>12,i[r++]=128|e>>>6&63,i[r++]=128|e&63):(i[r++]=240|e>>>18,i[r++]=128|e>>>12&63,i[r++]=128|e>>>6&63,i[r++]=128|e&63);return i};const r0=(t,i)=>{if(i<65534&&t.subarray&&Mr)return String.fromCharCode.apply(null,t.length===i?t:t.subarray(0,i));let e="";for(let n=0;n<i;n++)e+=String.fromCharCode(t[n]);return e};var a0=(t,i)=>{const e=i||t.length;if(typeof TextDecoder=="function"&&TextDecoder.prototype.decode)return new TextDecoder().decode(t.subarray(0,i));let n,a;const r=new Array(e*2);for(a=0,n=0;n<e;){let s=t[n++];if(s<128){r[a++]=s;continue}let o=mi[s];if(o>4){r[a++]=65533,n+=o-1;continue}for(s&=o===2?31:o===3?15:7;o>1&&n<e;)s=s<<6|t[n++]&63,o--;if(o>1){r[a++]=65533;continue}s<65536?r[a++]=s:(s-=65536,r[a++]=55296|s>>10&1023,r[a++]=56320|s&1023)}return r0(r,a)},s0=(t,i)=>{i=i||t.length,i>t.length&&(i=t.length);let e=i-1;for(;e>=0&&(t[e]&192)===128;)e--;return e<0||e===0?i:e+mi[t[e]]>i?e:i},vi={string2buf:n0,buf2string:a0,utf8border:s0};function o0(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}var kr=o0;const Pr=Object.prototype.toString,{Z_NO_FLUSH:l0,Z_SYNC_FLUSH:h0,Z_FULL_FLUSH:f0,Z_FINISH:c0,Z_OK:Zi,Z_STREAM_END:u0,Z_DEFAULT_COMPRESSION:d0,Z_DEFAULT_STRATEGY:p0,Z_DEFLATED:g0}=Ge;function Ai(t){this.options=Yi.assign({level:d0,method:g0,chunkSize:16384,windowBits:15,memLevel:8,strategy:p0},t||{});let i=this.options;i.raw&&i.windowBits>0?i.windowBits=-i.windowBits:i.gzip&&i.windowBits>0&&i.windowBits<16&&(i.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new kr,this.strm.avail_out=0;let e=gi.deflateInit2(this.strm,i.level,i.method,i.windowBits,i.memLevel,i.strategy);if(e!==Zi)throw new Error(ze[e]);if(i.header&&gi.deflateSetHeader(this.strm,i.header),i.dictionary){let n;if(typeof i.dictionary=="string"?n=vi.string2buf(i.dictionary):Pr.call(i.dictionary)==="[object ArrayBuffer]"?n=new Uint8Array(i.dictionary):n=i.dictionary,e=gi.deflateSetDictionary(this.strm,n),e!==Zi)throw new Error(ze[e]);this._dict_set=!0}}Ai.prototype.push=function(t,i){const e=this.strm,n=this.options.chunkSize;let a,r;if(this.ended)return!1;for(i===~~i?r=i:r=i===!0?c0:l0,typeof t=="string"?e.input=vi.string2buf(t):Pr.call(t)==="[object ArrayBuffer]"?e.input=new Uint8Array(t):e.input=t,e.next_in=0,e.avail_in=e.input.length;;){if(e.avail_out===0&&(e.output=new Uint8Array(n),e.next_out=0,e.avail_out=n),(r===h0||r===f0)&&e.avail_out<=6){this.onData(e.output.subarray(0,e.next_out)),e.avail_out=0;continue}if(a=gi.deflate(e,r),a===u0)return e.next_out>0&&this.onData(e.output.subarray(0,e.next_out)),a=gi.deflateEnd(this.strm),this.onEnd(a),this.ended=!0,a===Zi;if(e.avail_out===0){this.onData(e.output);continue}if(r>0&&e.next_out>0){this.onData(e.output.subarray(0,e.next_out)),e.avail_out=0;continue}if(e.avail_in===0)break}return!0},Ai.prototype.onData=function(t){this.chunks.push(t)},Ai.prototype.onEnd=function(t){t===Zi&&(this.result=Yi.flattenChunks(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};function Dn(t,i){const e=new Ai(i);if(e.push(t,!0),e.err)throw e.msg||ze[e.err];return e.result}function m0(t,i){return i=i||{},i.raw=!0,Dn(t,i)}function v0(t,i){return i=i||{},i.gzip=!0,Dn(t,i)}var A0=Ai,x0=Dn,b0=m0,E0=v0,w0=Ge,T0={Deflate:A0,deflate:x0,deflateRaw:b0,gzip:E0,constants:w0};const Hi=30,I0=12;var y0=function(i,e){let n,a,r,s,o,c,h,l,p,f,d,E,A,x,w,I,D,T,R,P,O,Q,Z,K;const tt=i.state;n=i.next_in,Z=i.input,a=n+(i.avail_in-5),r=i.next_out,K=i.output,s=r-(e-i.avail_out),o=r+(i.avail_out-257),c=tt.dmax,h=tt.wsize,l=tt.whave,p=tt.wnext,f=tt.window,d=tt.hold,E=tt.bits,A=tt.lencode,x=tt.distcode,w=(1<<tt.lenbits)-1,I=(1<<tt.distbits)-1;t:do{E<15&&(d+=Z[n++]<<E,E+=8,d+=Z[n++]<<E,E+=8),D=A[d&w];e:for(;;){if(T=D>>>24,d>>>=T,E-=T,T=D>>>16&255,T===0)K[r++]=D&65535;else if(T&16){R=D&65535,T&=15,T&&(E<T&&(d+=Z[n++]<<E,E+=8),R+=d&(1<<T)-1,d>>>=T,E-=T),E<15&&(d+=Z[n++]<<E,E+=8,d+=Z[n++]<<E,E+=8),D=x[d&I];i:for(;;){if(T=D>>>24,d>>>=T,E-=T,T=D>>>16&255,T&16){if(P=D&65535,T&=15,E<T&&(d+=Z[n++]<<E,E+=8,E<T&&(d+=Z[n++]<<E,E+=8)),P+=d&(1<<T)-1,P>c){i.msg="invalid distance too far back",tt.mode=Hi;break t}if(d>>>=T,E-=T,T=r-s,P>T){if(T=P-T,T>l&&tt.sane){i.msg="invalid distance too far back",tt.mode=Hi;break t}if(O=0,Q=f,p===0){if(O+=h-T,T<R){R-=T;do K[r++]=f[O++];while(--T);O=r-P,Q=K}}else if(p<T){if(O+=h+p-T,T-=p,T<R){R-=T;do K[r++]=f[O++];while(--T);if(O=0,p<R){T=p,R-=T;do K[r++]=f[O++];while(--T);O=r-P,Q=K}}}else if(O+=p-T,T<R){R-=T;do K[r++]=f[O++];while(--T);O=r-P,Q=K}for(;R>2;)K[r++]=Q[O++],K[r++]=Q[O++],K[r++]=Q[O++],R-=3;R&&(K[r++]=Q[O++],R>1&&(K[r++]=Q[O++]))}else{O=r-P;do K[r++]=K[O++],K[r++]=K[O++],K[r++]=K[O++],R-=3;while(R>2);R&&(K[r++]=K[O++],R>1&&(K[r++]=K[O++]))}}else if((T&64)===0){D=x[(D&65535)+(d&(1<<T)-1)];continue i}else{i.msg="invalid distance code",tt.mode=Hi;break t}break}}else if((T&64)===0){D=A[(D&65535)+(d&(1<<T)-1)];continue e}else if(T&32){tt.mode=I0;break t}else{i.msg="invalid literal/length code",tt.mode=Hi;break t}break}}while(n<a&&r<o);R=E>>3,n-=R,E-=R<<3,d&=(1<<E)-1,i.next_in=n,i.next_out=r,i.avail_in=n<a?5+(a-n):5-(n-a),i.avail_out=r<o?257+(o-r):257-(r-o),tt.hold=d,tt.bits=E};const $e=15,Ur=852,Lr=592,Or=0,Bn=1,zr=2,_0=new Uint16Array([3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0]),S0=new Uint8Array([16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78]),D0=new Uint16Array([1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0]),B0=new Uint8Array([16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64]);var xi=(t,i,e,n,a,r,s,o)=>{const c=o.bits;let h=0,l=0,p=0,f=0,d=0,E=0,A=0,x=0,w=0,I=0,D,T,R,P,O,Q=null,Z=0,K;const tt=new Uint16Array($e+1),at=new Uint16Array($e+1);let ht=null,z=0,Y,j,lt;for(h=0;h<=$e;h++)tt[h]=0;for(l=0;l<n;l++)tt[i[e+l]]++;for(d=c,f=$e;f>=1&&tt[f]===0;f--);if(d>f&&(d=f),f===0)return a[r++]=1<<24|64<<16|0,a[r++]=1<<24|64<<16|0,o.bits=1,0;for(p=1;p<f&&tt[p]===0;p++);for(d<p&&(d=p),x=1,h=1;h<=$e;h++)if(x<<=1,x-=tt[h],x<0)return-1;if(x>0&&(t===Or||f!==1))return-1;for(at[1]=0,h=1;h<$e;h++)at[h+1]=at[h]+tt[h];for(l=0;l<n;l++)i[e+l]!==0&&(s[at[i[e+l]]++]=l);if(t===Or?(Q=ht=s,K=19):t===Bn?(Q=_0,Z-=257,ht=S0,z-=257,K=256):(Q=D0,ht=B0,K=-1),I=0,l=0,h=p,O=r,E=d,A=0,R=-1,w=1<<d,P=w-1,t===Bn&&w>Ur||t===zr&&w>Lr)return 1;for(;;){Y=h-A,s[l]<K?(j=0,lt=s[l]):s[l]>K?(j=ht[z+s[l]],lt=Q[Z+s[l]]):(j=32+64,lt=0),D=1<<h-A,T=1<<E,p=T;do T-=D,a[O+(I>>A)+T]=Y<<24|j<<16|lt|0;while(T!==0);for(D=1<<h-1;I&D;)D>>=1;if(D!==0?(I&=D-1,I+=D):I=0,l++,--tt[h]===0){if(h===f)break;h=i[e+s[l]]}if(h>d&&(I&P)!==R){for(A===0&&(A=d),O+=p,E=h-A,x=1<<E;E+A<f&&(x-=tt[E+A],!(x<=0));)E++,x<<=1;if(w+=1<<E,t===Bn&&w>Ur||t===zr&&w>Lr)return 1;R=I&P,a[R]=d<<24|E<<16|O-r|0}}return I!==0&&(a[O+I]=h-A<<24|64<<16|0),o.bits=d,0};const R0=0,Gr=1,Yr=2,{Z_FINISH:Zr,Z_BLOCK:N0,Z_TREES:ji,Z_OK:Ve,Z_STREAM_END:C0,Z_NEED_DICT:F0,Z_STREAM_ERROR:oe,Z_DATA_ERROR:Hr,Z_MEM_ERROR:jr,Z_BUF_ERROR:M0,Z_DEFLATED:Vr}=Ge,Qr=1,Xr=2,Wr=3,Kr=4,Jr=5,qr=6,$r=7,ta=8,ea=9,ia=10,Vi=11,Ee=12,Rn=13,na=14,Nn=15,ra=16,aa=17,sa=18,oa=19,Qi=20,Xi=21,la=22,ha=23,fa=24,ca=25,ua=26,Cn=27,da=28,pa=29,Mt=30,ga=31,k0=32,P0=852,U0=592,L0=15,ma=t=>(t>>>24&255)+(t>>>8&65280)+((t&65280)<<8)+((t&255)<<24);function O0(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const va=t=>{if(!t||!t.state)return oe;const i=t.state;return t.total_in=t.total_out=i.total=0,t.msg="",i.wrap&&(t.adler=i.wrap&1),i.mode=Qr,i.last=0,i.havedict=0,i.dmax=32768,i.head=null,i.hold=0,i.bits=0,i.lencode=i.lendyn=new Int32Array(P0),i.distcode=i.distdyn=new Int32Array(U0),i.sane=1,i.back=-1,Ve},Aa=t=>{if(!t||!t.state)return oe;const i=t.state;return i.wsize=0,i.whave=0,i.wnext=0,va(t)},xa=(t,i)=>{let e;if(!t||!t.state)return oe;const n=t.state;return i<0?(e=0,i=-i):(e=(i>>4)+1,i<48&&(i&=15)),i&&(i<8||i>15)?oe:(n.window!==null&&n.wbits!==i&&(n.window=null),n.wrap=e,n.wbits=i,Aa(t))},ba=(t,i)=>{if(!t)return oe;const e=new O0;t.state=e,e.window=null;const n=xa(t,i);return n!==Ve&&(t.state=null),n},z0=t=>ba(t,L0);let Ea=!0,Fn,Mn;const G0=t=>{if(Ea){Fn=new Int32Array(512),Mn=new Int32Array(32);let i=0;for(;i<144;)t.lens[i++]=8;for(;i<256;)t.lens[i++]=9;for(;i<280;)t.lens[i++]=7;for(;i<288;)t.lens[i++]=8;for(xi(Gr,t.lens,0,288,Fn,0,t.work,{bits:9}),i=0;i<32;)t.lens[i++]=5;xi(Yr,t.lens,0,32,Mn,0,t.work,{bits:5}),Ea=!1}t.lencode=Fn,t.lenbits=9,t.distcode=Mn,t.distbits=5},wa=(t,i,e,n)=>{let a;const r=t.state;return r.window===null&&(r.wsize=1<<r.wbits,r.wnext=0,r.whave=0,r.window=new Uint8Array(r.wsize)),n>=r.wsize?(r.window.set(i.subarray(e-r.wsize,e),0),r.wnext=0,r.whave=r.wsize):(a=r.wsize-r.wnext,a>n&&(a=n),r.window.set(i.subarray(e-n,e-n+a),r.wnext),n-=a,n?(r.window.set(i.subarray(e-n,e),0),r.wnext=n,r.whave=r.wsize):(r.wnext+=a,r.wnext===r.wsize&&(r.wnext=0),r.whave<r.wsize&&(r.whave+=a))),0},Y0=(t,i)=>{let e,n,a,r,s,o,c,h,l,p,f,d,E,A,x=0,w,I,D,T,R,P,O,Q;const Z=new Uint8Array(4);let K,tt;const at=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(!t||!t.state||!t.output||!t.input&&t.avail_in!==0)return oe;e=t.state,e.mode===Ee&&(e.mode=Rn),s=t.next_out,a=t.output,c=t.avail_out,r=t.next_in,n=t.input,o=t.avail_in,h=e.hold,l=e.bits,p=o,f=c,Q=Ve;t:for(;;)switch(e.mode){case Qr:if(e.wrap===0){e.mode=Rn;break}for(;l<16;){if(o===0)break t;o--,h+=n[r++]<<l,l+=8}if(e.wrap&2&&h===35615){e.check=0,Z[0]=h&255,Z[1]=h>>>8&255,e.check=jt(e.check,Z,2,0),h=0,l=0,e.mode=Xr;break}if(e.flags=0,e.head&&(e.head.done=!1),!(e.wrap&1)||(((h&255)<<8)+(h>>8))%31){t.msg="incorrect header check",e.mode=Mt;break}if((h&15)!==Vr){t.msg="unknown compression method",e.mode=Mt;break}if(h>>>=4,l-=4,O=(h&15)+8,e.wbits===0)e.wbits=O;else if(O>e.wbits){t.msg="invalid window size",e.mode=Mt;break}e.dmax=1<<e.wbits,t.adler=e.check=1,e.mode=h&512?ia:Ee,h=0,l=0;break;case Xr:for(;l<16;){if(o===0)break t;o--,h+=n[r++]<<l,l+=8}if(e.flags=h,(e.flags&255)!==Vr){t.msg="unknown compression method",e.mode=Mt;break}if(e.flags&57344){t.msg="unknown header flags set",e.mode=Mt;break}e.head&&(e.head.text=h>>8&1),e.flags&512&&(Z[0]=h&255,Z[1]=h>>>8&255,e.check=jt(e.check,Z,2,0)),h=0,l=0,e.mode=Wr;case Wr:for(;l<32;){if(o===0)break t;o--,h+=n[r++]<<l,l+=8}e.head&&(e.head.time=h),e.flags&512&&(Z[0]=h&255,Z[1]=h>>>8&255,Z[2]=h>>>16&255,Z[3]=h>>>24&255,e.check=jt(e.check,Z,4,0)),h=0,l=0,e.mode=Kr;case Kr:for(;l<16;){if(o===0)break t;o--,h+=n[r++]<<l,l+=8}e.head&&(e.head.xflags=h&255,e.head.os=h>>8),e.flags&512&&(Z[0]=h&255,Z[1]=h>>>8&255,e.check=jt(e.check,Z,2,0)),h=0,l=0,e.mode=Jr;case Jr:if(e.flags&1024){for(;l<16;){if(o===0)break t;o--,h+=n[r++]<<l,l+=8}e.length=h,e.head&&(e.head.extra_len=h),e.flags&512&&(Z[0]=h&255,Z[1]=h>>>8&255,e.check=jt(e.check,Z,2,0)),h=0,l=0}else e.head&&(e.head.extra=null);e.mode=qr;case qr:if(e.flags&1024&&(d=e.length,d>o&&(d=o),d&&(e.head&&(O=e.head.extra_len-e.length,e.head.extra||(e.head.extra=new Uint8Array(e.head.extra_len)),e.head.extra.set(n.subarray(r,r+d),O)),e.flags&512&&(e.check=jt(e.check,n,d,r)),o-=d,r+=d,e.length-=d),e.length))break t;e.length=0,e.mode=$r;case $r:if(e.flags&2048){if(o===0)break t;d=0;do O=n[r+d++],e.head&&O&&e.length<65536&&(e.head.name+=String.fromCharCode(O));while(O&&d<o);if(e.flags&512&&(e.check=jt(e.check,n,d,r)),o-=d,r+=d,O)break t}else e.head&&(e.head.name=null);e.length=0,e.mode=ta;case ta:if(e.flags&4096){if(o===0)break t;d=0;do O=n[r+d++],e.head&&O&&e.length<65536&&(e.head.comment+=String.fromCharCode(O));while(O&&d<o);if(e.flags&512&&(e.check=jt(e.check,n,d,r)),o-=d,r+=d,O)break t}else e.head&&(e.head.comment=null);e.mode=ea;case ea:if(e.flags&512){for(;l<16;){if(o===0)break t;o--,h+=n[r++]<<l,l+=8}if(h!==(e.check&65535)){t.msg="header crc mismatch",e.mode=Mt;break}h=0,l=0}e.head&&(e.head.hcrc=e.flags>>9&1,e.head.done=!0),t.adler=e.check=0,e.mode=Ee;break;case ia:for(;l<32;){if(o===0)break t;o--,h+=n[r++]<<l,l+=8}t.adler=e.check=ma(h),h=0,l=0,e.mode=Vi;case Vi:if(e.havedict===0)return t.next_out=s,t.avail_out=c,t.next_in=r,t.avail_in=o,e.hold=h,e.bits=l,F0;t.adler=e.check=1,e.mode=Ee;case Ee:if(i===N0||i===ji)break t;case Rn:if(e.last){h>>>=l&7,l-=l&7,e.mode=Cn;break}for(;l<3;){if(o===0)break t;o--,h+=n[r++]<<l,l+=8}switch(e.last=h&1,h>>>=1,l-=1,h&3){case 0:e.mode=na;break;case 1:if(G0(e),e.mode=Qi,i===ji){h>>>=2,l-=2;break t}break;case 2:e.mode=aa;break;case 3:t.msg="invalid block type",e.mode=Mt}h>>>=2,l-=2;break;case na:for(h>>>=l&7,l-=l&7;l<32;){if(o===0)break t;o--,h+=n[r++]<<l,l+=8}if((h&65535)!==(h>>>16^65535)){t.msg="invalid stored block lengths",e.mode=Mt;break}if(e.length=h&65535,h=0,l=0,e.mode=Nn,i===ji)break t;case Nn:e.mode=ra;case ra:if(d=e.length,d){if(d>o&&(d=o),d>c&&(d=c),d===0)break t;a.set(n.subarray(r,r+d),s),o-=d,r+=d,c-=d,s+=d,e.length-=d;break}e.mode=Ee;break;case aa:for(;l<14;){if(o===0)break t;o--,h+=n[r++]<<l,l+=8}if(e.nlen=(h&31)+257,h>>>=5,l-=5,e.ndist=(h&31)+1,h>>>=5,l-=5,e.ncode=(h&15)+4,h>>>=4,l-=4,e.nlen>286||e.ndist>30){t.msg="too many length or distance symbols",e.mode=Mt;break}e.have=0,e.mode=sa;case sa:for(;e.have<e.ncode;){for(;l<3;){if(o===0)break t;o--,h+=n[r++]<<l,l+=8}e.lens[at[e.have++]]=h&7,h>>>=3,l-=3}for(;e.have<19;)e.lens[at[e.have++]]=0;if(e.lencode=e.lendyn,e.lenbits=7,K={bits:e.lenbits},Q=xi(R0,e.lens,0,19,e.lencode,0,e.work,K),e.lenbits=K.bits,Q){t.msg="invalid code lengths set",e.mode=Mt;break}e.have=0,e.mode=oa;case oa:for(;e.have<e.nlen+e.ndist;){for(;x=e.lencode[h&(1<<e.lenbits)-1],w=x>>>24,I=x>>>16&255,D=x&65535,!(w<=l);){if(o===0)break t;o--,h+=n[r++]<<l,l+=8}if(D<16)h>>>=w,l-=w,e.lens[e.have++]=D;else{if(D===16){for(tt=w+2;l<tt;){if(o===0)break t;o--,h+=n[r++]<<l,l+=8}if(h>>>=w,l-=w,e.have===0){t.msg="invalid bit length repeat",e.mode=Mt;break}O=e.lens[e.have-1],d=3+(h&3),h>>>=2,l-=2}else if(D===17){for(tt=w+3;l<tt;){if(o===0)break t;o--,h+=n[r++]<<l,l+=8}h>>>=w,l-=w,O=0,d=3+(h&7),h>>>=3,l-=3}else{for(tt=w+7;l<tt;){if(o===0)break t;o--,h+=n[r++]<<l,l+=8}h>>>=w,l-=w,O=0,d=11+(h&127),h>>>=7,l-=7}if(e.have+d>e.nlen+e.ndist){t.msg="invalid bit length repeat",e.mode=Mt;break}for(;d--;)e.lens[e.have++]=O}}if(e.mode===Mt)break;if(e.lens[256]===0){t.msg="invalid code -- missing end-of-block",e.mode=Mt;break}if(e.lenbits=9,K={bits:e.lenbits},Q=xi(Gr,e.lens,0,e.nlen,e.lencode,0,e.work,K),e.lenbits=K.bits,Q){t.msg="invalid literal/lengths set",e.mode=Mt;break}if(e.distbits=6,e.distcode=e.distdyn,K={bits:e.distbits},Q=xi(Yr,e.lens,e.nlen,e.ndist,e.distcode,0,e.work,K),e.distbits=K.bits,Q){t.msg="invalid distances set",e.mode=Mt;break}if(e.mode=Qi,i===ji)break t;case Qi:e.mode=Xi;case Xi:if(o>=6&&c>=258){t.next_out=s,t.avail_out=c,t.next_in=r,t.avail_in=o,e.hold=h,e.bits=l,y0(t,f),s=t.next_out,a=t.output,c=t.avail_out,r=t.next_in,n=t.input,o=t.avail_in,h=e.hold,l=e.bits,e.mode===Ee&&(e.back=-1);break}for(e.back=0;x=e.lencode[h&(1<<e.lenbits)-1],w=x>>>24,I=x>>>16&255,D=x&65535,!(w<=l);){if(o===0)break t;o--,h+=n[r++]<<l,l+=8}if(I&&(I&240)===0){for(T=w,R=I,P=D;x=e.lencode[P+((h&(1<<T+R)-1)>>T)],w=x>>>24,I=x>>>16&255,D=x&65535,!(T+w<=l);){if(o===0)break t;o--,h+=n[r++]<<l,l+=8}h>>>=T,l-=T,e.back+=T}if(h>>>=w,l-=w,e.back+=w,e.length=D,I===0){e.mode=ua;break}if(I&32){e.back=-1,e.mode=Ee;break}if(I&64){t.msg="invalid literal/length code",e.mode=Mt;break}e.extra=I&15,e.mode=la;case la:if(e.extra){for(tt=e.extra;l<tt;){if(o===0)break t;o--,h+=n[r++]<<l,l+=8}e.length+=h&(1<<e.extra)-1,h>>>=e.extra,l-=e.extra,e.back+=e.extra}e.was=e.length,e.mode=ha;case ha:for(;x=e.distcode[h&(1<<e.distbits)-1],w=x>>>24,I=x>>>16&255,D=x&65535,!(w<=l);){if(o===0)break t;o--,h+=n[r++]<<l,l+=8}if((I&240)===0){for(T=w,R=I,P=D;x=e.distcode[P+((h&(1<<T+R)-1)>>T)],w=x>>>24,I=x>>>16&255,D=x&65535,!(T+w<=l);){if(o===0)break t;o--,h+=n[r++]<<l,l+=8}h>>>=T,l-=T,e.back+=T}if(h>>>=w,l-=w,e.back+=w,I&64){t.msg="invalid distance code",e.mode=Mt;break}e.offset=D,e.extra=I&15,e.mode=fa;case fa:if(e.extra){for(tt=e.extra;l<tt;){if(o===0)break t;o--,h+=n[r++]<<l,l+=8}e.offset+=h&(1<<e.extra)-1,h>>>=e.extra,l-=e.extra,e.back+=e.extra}if(e.offset>e.dmax){t.msg="invalid distance too far back",e.mode=Mt;break}e.mode=ca;case ca:if(c===0)break t;if(d=f-c,e.offset>d){if(d=e.offset-d,d>e.whave&&e.sane){t.msg="invalid distance too far back",e.mode=Mt;break}d>e.wnext?(d-=e.wnext,E=e.wsize-d):E=e.wnext-d,d>e.length&&(d=e.length),A=e.window}else A=a,E=s-e.offset,d=e.length;d>c&&(d=c),c-=d,e.length-=d;do a[s++]=A[E++];while(--d);e.length===0&&(e.mode=Xi);break;case ua:if(c===0)break t;a[s++]=e.length,c--,e.mode=Xi;break;case Cn:if(e.wrap){for(;l<32;){if(o===0)break t;o--,h|=n[r++]<<l,l+=8}if(f-=c,t.total_out+=f,e.total+=f,f&&(t.adler=e.check=e.flags?jt(e.check,a,f,s-f):fi(e.check,a,f,s-f)),f=c,(e.flags?h:ma(h))!==e.check){t.msg="incorrect data check",e.mode=Mt;break}h=0,l=0}e.mode=da;case da:if(e.wrap&&e.flags){for(;l<32;){if(o===0)break t;o--,h+=n[r++]<<l,l+=8}if(h!==(e.total&4294967295)){t.msg="incorrect length check",e.mode=Mt;break}h=0,l=0}e.mode=pa;case pa:Q=C0;break t;case Mt:Q=Hr;break t;case ga:return jr;case k0:default:return oe}return t.next_out=s,t.avail_out=c,t.next_in=r,t.avail_in=o,e.hold=h,e.bits=l,(e.wsize||f!==t.avail_out&&e.mode<Mt&&(e.mode<Cn||i!==Zr))&&wa(t,t.output,t.next_out,f-t.avail_out),p-=t.avail_in,f-=t.avail_out,t.total_in+=p,t.total_out+=f,e.total+=f,e.wrap&&f&&(t.adler=e.check=e.flags?jt(e.check,a,f,t.next_out-f):fi(e.check,a,f,t.next_out-f)),t.data_type=e.bits+(e.last?64:0)+(e.mode===Ee?128:0)+(e.mode===Qi||e.mode===Nn?256:0),(p===0&&f===0||i===Zr)&&Q===Ve&&(Q=M0),Q},Z0=t=>{if(!t||!t.state)return oe;let i=t.state;return i.window&&(i.window=null),t.state=null,Ve},H0=(t,i)=>{if(!t||!t.state)return oe;const e=t.state;return(e.wrap&2)===0?oe:(e.head=i,i.done=!1,Ve)},j0=(t,i)=>{const e=i.length;let n,a,r;return!t||!t.state||(n=t.state,n.wrap!==0&&n.mode!==Vi)?oe:n.mode===Vi&&(a=1,a=fi(a,i,e,0),a!==n.check)?Hr:(r=wa(t,i,e,e),r?(n.mode=ga,jr):(n.havedict=1,Ve))};var V0=Aa,Q0=xa,X0=va,W0=z0,K0=ba,J0=Y0,q0=Z0,$0=H0,th=j0,eh="pako inflate (from Nodeca project)",we={inflateReset:V0,inflateReset2:Q0,inflateResetKeep:X0,inflateInit:W0,inflateInit2:K0,inflate:J0,inflateEnd:q0,inflateGetHeader:$0,inflateSetDictionary:th,inflateInfo:eh};function ih(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}var nh=ih;const Ta=Object.prototype.toString,{Z_NO_FLUSH:rh,Z_FINISH:ah,Z_OK:bi,Z_STREAM_END:kn,Z_NEED_DICT:Pn,Z_STREAM_ERROR:sh,Z_DATA_ERROR:Ia,Z_MEM_ERROR:oh}=Ge;function Ei(t){this.options=Yi.assign({chunkSize:1024*64,windowBits:15,to:""},t||{});const i=this.options;i.raw&&i.windowBits>=0&&i.windowBits<16&&(i.windowBits=-i.windowBits,i.windowBits===0&&(i.windowBits=-15)),i.windowBits>=0&&i.windowBits<16&&!(t&&t.windowBits)&&(i.windowBits+=32),i.windowBits>15&&i.windowBits<48&&(i.windowBits&15)===0&&(i.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new kr,this.strm.avail_out=0;let e=we.inflateInit2(this.strm,i.windowBits);if(e!==bi)throw new Error(ze[e]);if(this.header=new nh,we.inflateGetHeader(this.strm,this.header),i.dictionary&&(typeof i.dictionary=="string"?i.dictionary=vi.string2buf(i.dictionary):Ta.call(i.dictionary)==="[object ArrayBuffer]"&&(i.dictionary=new Uint8Array(i.dictionary)),i.raw&&(e=we.inflateSetDictionary(this.strm,i.dictionary),e!==bi)))throw new Error(ze[e])}Ei.prototype.push=function(t,i){const e=this.strm,n=this.options.chunkSize,a=this.options.dictionary;let r,s,o;if(this.ended)return!1;for(i===~~i?s=i:s=i===!0?ah:rh,Ta.call(t)==="[object ArrayBuffer]"?e.input=new Uint8Array(t):e.input=t,e.next_in=0,e.avail_in=e.input.length;;){for(e.avail_out===0&&(e.output=new Uint8Array(n),e.next_out=0,e.avail_out=n),r=we.inflate(e,s),r===Pn&&a&&(r=we.inflateSetDictionary(e,a),r===bi?r=we.inflate(e,s):r===Ia&&(r=Pn));e.avail_in>0&&r===kn&&e.state.wrap>0&&t[e.next_in]!==0;)we.inflateReset(e),r=we.inflate(e,s);switch(r){case sh:case Ia:case Pn:case oh:return this.onEnd(r),this.ended=!0,!1}if(o=e.avail_out,e.next_out&&(e.avail_out===0||r===kn))if(this.options.to==="string"){let c=vi.utf8border(e.output,e.next_out),h=e.next_out-c,l=vi.buf2string(e.output,c);e.next_out=h,e.avail_out=n-h,h&&e.output.set(e.output.subarray(c,c+h),0),this.onData(l)}else this.onData(e.output.length===e.next_out?e.output:e.output.subarray(0,e.next_out));if(!(r===bi&&o===0)){if(r===kn)return r=we.inflateEnd(this.strm),this.onEnd(r),this.ended=!0,!0;if(e.avail_in===0)break}}return!0},Ei.prototype.onData=function(t){this.chunks.push(t)},Ei.prototype.onEnd=function(t){t===bi&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=Yi.flattenChunks(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};function Un(t,i){const e=new Ei(i);if(e.push(t),e.err)throw e.msg||ze[e.err];return e.result}function lh(t,i){return i=i||{},i.raw=!0,Un(t,i)}var hh=Ei,fh=Un,ch=lh,uh=Un,dh=Ge,ph={Inflate:hh,inflate:fh,inflateRaw:ch,ungzip:uh,constants:dh};const{Deflate:gh,deflate:mh,deflateRaw:vh,gzip:Ah}=T0,{Inflate:xh,inflate:bh,inflateRaw:Eh,ungzip:wh}=ph;var ya=gh,Ln=mh,_a=vh,Sa=Ah,Da=xh,Wi=bh,Ba=Eh,Ra=wh,Na=Ge,Th={Deflate:ya,deflate:Ln,deflateRaw:_a,gzip:Sa,Inflate:Da,inflate:Wi,inflateRaw:Ba,ungzip:Ra,constants:Na},Ca=Object.freeze(Object.defineProperty({__proto__:null,Deflate:ya,Inflate:Da,constants:Na,default:Th,deflate:Ln,deflateRaw:_a,gzip:Sa,inflate:Wi,inflateRaw:Ba,ungzip:Ra},Symbol.toStringTag,{value:"Module"})),Ih=Po(Ca);(function(t){var i=i||{};i.NIFTI1=i.NIFTI1||(typeof fe!="undefined"?dn.exports:null),i.NIFTI2=i.NIFTI2||(typeof fe!="undefined"?rr.exports:null),i.Utils=i.Utils||(typeof fe!="undefined"?Fi.exports:null);var e=e||(typeof fe!="undefined"?Ih:null);i.isNIFTI1=function(n){var a,r,s,o;return n.byteLength<i.NIFTI1.STANDARD_HEADER_SIZE?!1:(a=new DataView(n),a&&(r=a.getUint8(i.NIFTI1.MAGIC_NUMBER_LOCATION)),s=a.getUint8(i.NIFTI1.MAGIC_NUMBER_LOCATION+1),o=a.getUint8(i.NIFTI1.MAGIC_NUMBER_LOCATION+2),r===i.NIFTI1.MAGIC_NUMBER[0]&&s===i.NIFTI1.MAGIC_NUMBER[1]&&o===i.NIFTI1.MAGIC_NUMBER[2])},i.isNIFTI2=function(n){var a,r,s,o;return n.byteLength<i.NIFTI1.STANDARD_HEADER_SIZE?!1:(a=new DataView(n),r=a.getUint8(i.NIFTI2.MAGIC_NUMBER_LOCATION),s=a.getUint8(i.NIFTI2.MAGIC_NUMBER_LOCATION+1),o=a.getUint8(i.NIFTI2.MAGIC_NUMBER_LOCATION+2),r===i.NIFTI2.MAGIC_NUMBER[0]&&s===i.NIFTI2.MAGIC_NUMBER[1]&&o===i.NIFTI2.MAGIC_NUMBER[2])},i.isNIFTI=function(n){return i.isNIFTI1(n)||i.isNIFTI2(n)},i.isCompressed=function(n){var a,r,s;return!!(n&&(a=new DataView(n),r=a.getUint8(0),s=a.getUint8(1),r===i.Utils.GUNZIP_MAGIC_COOKIE1||s===i.Utils.GUNZIP_MAGIC_COOKIE2))},i.decompress=function(n){return e.inflate(n).buffer},i.readHeader=function(n){var a=null;return i.isCompressed(n)&&(n=i.decompress(n)),i.isNIFTI1(n)?a=new i.NIFTI1:i.isNIFTI2(n)&&(a=new i.NIFTI2),a?a.readHeader(n):console.error("That file does not appear to be NIFTI!"),a},i.hasExtension=function(n){return n.extensionFlag[0]!=0},i.readImage=function(n,a){var r=n.vox_offset,s=1,o=1;n.dims[4]&&(s=n.dims[4]),n.dims[5]&&(o=n.dims[5]);var c=n.dims[1]*n.dims[2]*n.dims[3]*s*o*(n.numBitsPerVoxel/8);return a.slice(r,r+c)},i.readExtension=function(n,a){var r=n.getExtensionLocation(),s=n.extensionSize;return a.slice(r,r+s)},i.readExtensionData=function(n,a){var r=n.getExtensionLocation(),s=n.extensionSize;return a.slice(r+8,r+s-8)},t.exports&&(t.exports=i)})(nr);var Te=nr.exports,Ki,yh=new Uint8Array(16);function _h(){if(!Ki&&(Ki=typeof crypto!="undefined"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||typeof msCrypto!="undefined"&&typeof msCrypto.getRandomValues=="function"&&msCrypto.getRandomValues.bind(msCrypto),!Ki))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return Ki(yh)}var Sh=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;function Dh(t){return typeof t=="string"&&Sh.test(t)}for(var Xt=[],On=0;On<256;++On)Xt.push((On+256).toString(16).substr(1));function Bh(t){var i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,e=(Xt[t[i+0]]+Xt[t[i+1]]+Xt[t[i+2]]+Xt[t[i+3]]+"-"+Xt[t[i+4]]+Xt[t[i+5]]+"-"+Xt[t[i+6]]+Xt[t[i+7]]+"-"+Xt[t[i+8]]+Xt[t[i+9]]+"-"+Xt[t[i+10]]+Xt[t[i+11]]+Xt[t[i+12]]+Xt[t[i+13]]+Xt[t[i+14]]+Xt[t[i+15]]).toLowerCase();if(!Dh(e))throw TypeError("Stringified UUID is invalid");return e}function Fa(t,i,e){t=t||{};var n=t.random||(t.rng||_h)();if(n[6]=n[6]&15|64,n[8]=n[8]&63|128,i){e=e||0;for(var a=0;a<16;++a)i[e+a]=n[a];return i}return Bh(n)}const Ie=function(t){this.LOGGING_ON=!0,this.LOGGING_OFF=!1,this.LOG_PREFIX="NiiVue:",this.logLevel=t};Ie.prototype.getTimeStamp=function(){return`${this.LOG_PREFIX} `},Ie.prototype.debug=function(){this.logLevel===this.LOGGING_ON&&console.log(this.getTimeStamp(),"DEBUG",...arguments)},Ie.prototype.info=function(){this.logLevel===this.LOGGING_ON&&console.log(this.getTimeStamp(),"INFO",...arguments)},Ie.prototype.warn=function(){this.logLevel===this.LOGGING_ON&&console.warn(this.getTimeStamp(),"WARN",...arguments)},Ie.prototype.error=function(){this.logLevel===this.LOGGING_ON&&console.error(this.getTimeStamp(),"ERROR",...arguments)},Ie.prototype.setLogLevel=function(t){this.logLevel=t};const ye=new Ie;var Ct=function(t,i="",e="gray",n=1,a=null,r=!0,s=.02,o=!1,c=!0,h=!1){if(this.DT_NONE=0,this.DT_UNKNOWN=0,this.DT_BINARY=1,this.DT_UNSIGNED_CHAR=2,this.DT_SIGNED_SHORT=4,this.DT_SIGNED_INT=8,this.DT_FLOAT=16,this.DT_COMPLEX=32,this.DT_DOUBLE=64,this.DT_RGB=128,this.DT_ALL=255,this.DT_INT8=256,this.DT_UINT16=512,this.DT_UINT32=768,this.DT_INT64=1024,this.DT_UINT64=1280,this.DT_FLOAT128=1536,this.DT_COMPLEX128=1792,this.DT_COMPLEX256=2048,this.DT_RGBA32=2304,this.name=i,this.id=Fa(),this.colorMap=e,this.opacity=n>1?1:n,this.percentileFrac=s,this.ignoreZeroVoxels=o,this.trustCalMinMax=r,this.visible=c,!t)return;var l=/(?:\.([^.]+))?$/;let p=l.exec(i)[1],f=null;this.hdr=null,p.toUpperCase()==="NHDR"||p.toUpperCase()==="NRRD"?f=this.readNRRD(t,a):p.toUpperCase()==="MGH"?f=this.readMGH(t):p.toUpperCase()==="MGZ"?f=this.readMGH(Te.decompress(t)):p.toUpperCase()==="HEAD"?f=this.readHEAD(t,a):(this.hdr=Te.readHeader(t),Te.isCompressed(t)?f=Te.readImage(this.hdr,Te.decompress(t)):f=Te.readImage(this.hdr,t)),(this.hdr.pixDims[1]===0||this.hdr.pixDims[2]===0||this.hdr.pixDims[3]===0)&&console.log("pixDims not plausible",this.hdr);function d(I){let D=[!1,!1,!1,!1],T=[!1,!1,!1,!1];for(let R=0;R<4;R++)for(let P=0;P<4;P++)if(isNaN(I[R][P]))return!1;for(let R=0;R<3;R++)for(let P=0;P<3;P++)I[R][P]!==0&&(D[R]=!0,T[P]=!0);for(let R=0;R<3;R++)if(!D[R]||!T[R])return!1;return!0}(isNaN(this.hdr.scl_slope)||this.hdr.scl_slope===0)&&(this.hdr.scl_slope=1),isNaN(this.hdr.scl_inter)&&(this.hdr.scl_inter=0);let E=d(this.hdr.affine);if(h||!E||this.hdr.qform_code>this.hdr.sform_code){ye.debug("spatial transform based on QForm");const I=this.hdr.quatern_b,D=this.hdr.quatern_c,T=this.hdr.quatern_d,R=Math.sqrt(1-(Math.pow(I,2)+Math.pow(D,2)+Math.pow(T,2))),P=this.hdr.pixDims[0]===0?1:this.hdr.pixDims[0],O=[[R*R+I*I-D*D-T*T,2*I*D-2*R*T,2*I*T+2*R*D],[2*I*D+2*R*T,R*R+D*D-I*I-T*T,2*D*T-2*R*I],[2*I*T-2*R*D,2*D*T+2*R*I,R*R+T*T-D*D-I*I]],Q=this.hdr.affine;for(let Z=0;Z<3;Z+=1)for(let K=0;K<3;K+=1)Q[Z][K]=O[Z][K]*this.hdr.pixDims[K+1],K===2&&(Q[Z][K]*=P);Q[0][3]=this.hdr.qoffset_x,Q[1][3]=this.hdr.qoffset_y,Q[2][3]=this.hdr.qoffset_z,this.hdr.affine=Q}if(E=d(this.hdr.affine),!E){ye.debug("Defective NIfTI: spatial transform does not make sense");let I=this.hdr.pixDims[1],D=this.hdr.pixDims[2],T=this.hdr.pixDims[3];(isNaN(I)||I===0)&&(I=1),(isNaN(D)||D===0)&&(D=1),(isNaN(T)||T===0)&&(T=1),this.hdr.pixDims[1]=I,this.hdr.pixDims[2]=D,this.hdr.pixDims[3]=T;const R=[[I,0,0,0],[0,D,0,0],[0,0,T,0],[0,0,0,1]];this.hdr.affine=R}switch(this.hdr.datatypeCode){case this.DT_UNSIGNED_CHAR:this.img=new Uint8Array(f);break;case this.DT_SIGNED_SHORT:this.img=new Int16Array(f);break;case this.DT_FLOAT:this.img=new Float32Array(f);break;case this.DT_DOUBLE:this.img=new Float64Array(f);break;case this.DT_RGB:this.img=new Uint8Array(f);break;case this.DT_UINT16:this.img=new Uint16Array(f);break;case this.DT_RGBA32:this.img=new Uint8Array(f);break;case this.DT_INT8:{let I=new Int8Array(f);var A=I.length;this.img=new Int16Array(A);for(let D=0;D<A-1;D++)this.img[D]=I[D];this.hdr.datatypeCode=this.DT_SIGNED_SHORT;break}case this.DT_UINT32:{let I=new Uint32Array(f);var x=I.length;this.img=new Float64Array(x);for(let D=0;D<x-1;D++)this.img[D]=I[D];this.hdr.datatypeCode=this.DT_DOUBLE;break}case this.DT_SIGNED_INT:{let I=new Int32Array(f);var w=I.length;this.img=new Float64Array(w);for(let D=0;D<w-1;D++)this.img[D]=I[D];this.hdr.datatypeCode=this.DT_DOUBLE;break}case this.DT_INT64:{let I=new BigInt64Array(f),D=I.length;this.img=new Float64Array(D);for(let T=0;T<D-1;T++)this.img[T]=Number(I[T]);this.hdr.datatypeCode=this.DT_DOUBLE;break}default:throw"datatype "+this.hdr.datatypeCode+" not supported"}this.calculateRAS(),this.calMinMax()};Ct.prototype.calculateOblique=function(){let t=this.vox2mm([0,0,0],this.matRAS),i=this.vox2mm([1/this.pixDimsRAS[1],0,0],this.matRAS),e=this.vox2mm([0,1/this.pixDimsRAS[2],0],this.matRAS),n=this.vox2mm([0,0,1/this.pixDimsRAS[3]],this.matRAS);$t(i,i,t),$t(e,e,t),$t(n,n,t);let a=ue(i[0],i[1],i[2],0,e[0],e[1],e[2],0,n[0],n[1],n[2],0,0,0,0,1);this.obliqueRAS=he(a);let r=Math.abs(90-tn(i,e)*(180/Math.PI)),s=Math.abs(90-tn(i,n)*(180/Math.PI)),o=Math.abs(90-tn(e,n)*(180/Math.PI)),c=Math.max(Math.max(r,s),o);c>.1&&ye.debug("Warning: shear detected (gantry tilt) of %f degrees",c)},Ct.prototype.THD_daxes_to_NIFTI=function(t,i,e){let n=this.hdr;n.sform_code=2;const a="xxyyzzg";let r=-1,s=-1,o=-1,c=["x","y","z"];c[0]=a[e[0]],c[1]=a[e[1]],c[2]=a[e[2]];let h=t.slice(0,3),l=i.slice(0,3);for(var p=0;p<3;p++)c[p]==="x"?r=p:c[p]==="y"?s=p:o=p;r<0||s<0||o<0||r===s||r===o||s===o||(n.pixDims[1]=Math.abs(h[0]),n.pixDims[2]=Math.abs(h[1]),n.pixDims[3]=Math.abs(h[2]),n.affine=[[1,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,0,1]],n.affine[0][r]=-h[r],n.affine[1][s]=-h[s],n.affine[2][o]=h[o],n.affine[0][3]=-l[r],n.affine[1][3]=-l[s],n.affine[2][3]=l[o])},Ct.prototype.SetPixDimFromSForm=function(){let t=this.hdr.affine,i=ue(t[0][0],t[0][1],t[0][2],t[0][3],t[1][0],t[1][1],t[1][2],t[1][3],t[2][0],t[2][1],t[2][2],t[2][3],t[3][0],t[3][1],t[3][2],t[3][3]),e=this.vox2mm([0,0,0],i),n=this.vox2mm([1,0,0],i);$t(n,n,e);let a=this.vox2mm([0,1,0],i);$t(a,a,e);let r=this.vox2mm([0,0,1],i);$t(r,r,e),this.hdr.pixDims[1]=Ue(n),this.hdr.pixDims[2]=Ue(a),this.hdr.pixDims[3]=Ue(r)},Ct.prototype.readMGH=function(t){this.hdr=new Te.NIFTI1;let i=this.hdr;i.dims=[3,1,1,1,0,0,0,0],i.pixDims=[1,1,1,1,1,0,0,0];var e=new DataView(t);let n=e.getInt32(0,!1),a=e.getInt32(4,!1),r=e.getInt32(8,!1),s=e.getInt32(12,!1),o=e.getInt32(16,!1),c=e.getInt32(20,!1);e.getInt32(24,!1),e.getInt16(28,!1);let h=e.getFloat32(30,!1),l=e.getFloat32(34,!1),p=e.getFloat32(38,!1);return e.getFloat32(42,!1),e.getFloat32(46,!1),e.getFloat32(50,!1),e.getFloat32(54,!1),e.getFloat32(58,!1),e.getFloat32(62,!1),e.getFloat32(66,!1),e.getFloat32(70,!1),e.getFloat32(74,!1),e.getFloat32(78,!1),e.getFloat32(82,!1),e.getFloat32(86,!1),(n!==1||c<0||c>4)&&console.log("Not a valid MGH file"),c===0?(i.numBitsPerVoxel=8,i.datatypeCode=this.DT_UNSIGNED_CHAR):c===4?(i.numBitsPerVoxel=16,i.datatypeCode=this.DT_SIGNED_SHORT):c===1?(i.numBitsPerVoxel=32,i.datatypeCode=this.DT_SIGNED_INT):c===3&&(i.numBitsPerVoxel=32,i.datatypeCode=this.DT_FLOAT),i.dims[1]=a,i.dims[2]=r,i.dims[3]=s,i.dims[4]=o,o>1&&(i.dims[0]=4),i.pixDims[1]=h,i.pixDims[2]=l,i.pixDims[3]=p,i.vox_offset=284,i.sform_code=1,console.log("??",i.dims),t.slice(i.vox_offset)},Ct.prototype.readHEAD=function(t,i){this.hdr=new Te.NIFTI1;let e=this.hdr;e.dims[0]=3,e.pixDims=[1,1,1,1,1,0,0,0];let n=[0,0,0],a=[0,0,0],r=[1,1,1];var o=new TextDecoder().decode(t).split(`
  `);let c=o.length,h=0,l=!1;for(;h<c;){let f=o[h];if(h++,!f.startsWith("type"))continue;let d=f.includes("integer-attribute"),E=f.includes("float-attribute");if(f=o[h],h++,!f.startsWith("name"))continue;let A=f.split("= "),x=A[1];f=o[h],h++,A=f.split("= ");let w=parseInt(A[1]);if(!(w<1)){if(f=o[h],h++,A=f.trim().split(/\s+/),E||d){for(;A.length<w;){f=o[h],h++;let I=f.trim().split(/\s+/);A.push(...I)}for(var p=0;p<w;p++)A[p]=parseFloat(A[p])}switch(x){case"BYTEORDER_STRING":A[0].includes("LSB_FIRST")?e.littleEndian=!0:A[0].includes("MSB_FIRST")&&(e.littleEndian=!1);break;case"BRICK_TYPES":let I=parseInt(A[0]);I===0?(e.numBitsPerVoxel=8,e.datatypeCode=this.DT_UNSIGNED_CHAR):I===1?(e.numBitsPerVoxel=16,e.datatypeCode=this.DT_SIGNED_SHORT):I===1?(e.numBitsPerVoxel=32,e.datatypeCode=this.DT_FLOAT):console.log("Unknown BRICK_TYPES ",I);break;case"IJK_TO_DICOM_REAL":if(w<12)break;l=!0,e.sform_code=2,e.affine=[[-A[0],-A[1],-A[2],-A[3]],[-A[4],-A[5],-A[6],-A[7]],[A[8],A[9],A[10],A[11]],[0,0,0,1]];break;case"DATASET_DIMENSIONS":w=Math.max(w,3);for(var p=0;p<w;p++)e.dims[p+1]=A[p];break;case"ORIENT_SPECIFIC":n=A;break;case"ORIGIN":a=A;break;case"DELTA":r=A;break;case"TAXIS_FLOATS":e.pixDims[4]=A[0];break}}}return l?this.SetPixDimFromSForm():this.THD_daxes_to_NIFTI(r,a,n),i.slice()},Ct.prototype.readNRRD=function(t,i){this.hdr=new Te.NIFTI1;let e=this.hdr;e.pixDims=[1,1,1,1,1,0,0,0];let n=t.byteLength;for(var a=null,r=new Uint8Array(t),s=1;s<n;s++)if(r[s-1]==10&&r[s]==10){let A=t.slice(0,s-1);a=new TextDecoder().decode(A),e.vox_offset=s+1;break}var o=a.split(`
  `);o[0].startsWith("NRRD")||alert("Invalid NRRD image");var c=o.length;let h=!1,l=!1,p=!1,f=[NaN,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],d=ie();for(let A=1;A<c;A++){let x=o[A];if(x[0]==="#")continue;x=x.toLowerCase();let w=x.split(":");if(w.length<2)continue;let I=w[0].trim(),D=w[1].trim();switch(D=D.replaceAll(")"," "),D=D.replaceAll("("," "),D=D.trim(),I){case"data file":p=!0;break;case"encoding":D.includes("raw")?h=!1:D.includes("gz")?h=!0:alert("Unsupported NRRD encoding");break;case"type":switch(D){case"uchar":case"unsigned char":case"uint8":case"uint8_t":e.numBitsPerVoxel=8,e.datatypeCode=this.DT_UNSIGNED_CHAR;break;case"signed char":case"int8":case"int8_t":e.numBitsPerVoxel=8,e.datatypeCode=this.DT_INT8;break;case"short":case"short int":case"signed short":case"signed short int":case"int16":case"int16_t":e.numBitsPerVoxel=16,e.datatypeCode=this.DT_SIGNED_SHORT;break;case"ushort":case"unsigned short":case"unsigned short int":case"uint16":case"uint16_t":e.numBitsPerVoxel=16,e.datatypeCode=this.DT_UINT16;break;case"int":case"signed int":case"int32":case"int32_t":e.numBitsPerVoxel=32,e.datatypeCode=this.DT_SIGNED_INT;break;case"uint":case"unsigned int":case"uint32":case"uint32_t":e.numBitsPerVoxel=32,e.datatypeCode=this.DT_UINT32;break;case"float":e.numBitsPerVoxel=32,e.datatypeCode=this.DT_FLOAT;break;case"double":e.numBitsPerVoxel=64,e.datatypeCode=this.DT_DOUBLE;break;default:throw new Error("Unsupported NRRD data type: "+D)}break;case"spacings":let T=D.split(/[ ,]+/);for(var E=0;E<T.length;E++)e.pixDims[E+1]=parseFloat(R[E]);case"sizes":let R=D.split(/[ ,]+/);e.dims[0]=R.length;for(var E=0;E<R.length;E++)e.dims[E+1]=parseInt(R[E]);break;case"endian":D.includes("little")?e.littleEndian=!0:D.includes("big")&&(e.littleEndian=!1);break;case"space directions":let P=D.split(/[ ,]+/);if(P.length!==9)break;f[0]=parseFloat(P[0]),f[1]=parseFloat(P[1]),f[2]=parseFloat(P[2]),f[4]=parseFloat(P[3]),f[5]=parseFloat(P[4]),f[6]=parseFloat(P[5]),f[8]=parseFloat(P[6]),f[9]=parseFloat(P[7]),f[10]=parseFloat(P[8]);break;case"space origin":let O=D.split(/[ ,]+/);if(O.length!==3)break;f[3]=parseFloat(O[0]),f[7]=parseFloat(O[1]),f[11]=parseFloat(O[2]);break;case"space":D.includes("microns")&&(l=!0);break;case"space":D.includes("right-anterior-superior")||D.includes("RAS")?d=ue(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1):D.includes("left-anterior-superior")||D.includes("LAS")?d=ue(-1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1):D.includes("left-posterior-superior")||D.includes("LPS")?d=ue(-1,0,0,0,0,-1,0,0,0,0,1,0,0,0,0,1):console.log("Unsupported NRRD space value:",D);break}}if(!isNaN(f[0])){this.hdr.sform_code=2,l&&(Ha(f,f,.001),f[15]=1),d[0]<0&&(f[3]=-f[3]),d[5]<0&&(f[7]=-f[7]),d[10]<0&&(f[11]=-f[11]),ti(f,f,d);let A=this.vox2mm([0,0,0],f),x=this.vox2mm([1,0,0],f);$t(x,x,A);let w=this.vox2mm([0,1,0],f);$t(w,w,A);let I=this.vox2mm([0,0,1],f);$t(I,I,A),e.pixDims[1]=Ue(x),e.pixDims[2]=Ue(w),e.pixDims[3]=Ue(I),e.affine=[[f[0],f[1],f[2],f[3]],[f[4],f[5],f[6],f[7]],[f[8],f[9],f[10],f[11]],[0,0,0,1]]}return e.dims[1]*e.dims[2]*e.dims[3],p&&i?i.slice():(p&&console.log("Missing data: NRRD header describes detached data file but only one URL provided"),h?Wi(new Uint8Array(t.slice(e.vox_offset))):t.slice(e.vox_offset))},Ct.prototype.calculateRAS=function(){let t=this.hdr.affine,i=this.hdr,e=za(Math.abs(t[0][0]),Math.abs(t[0][1]),Math.abs(t[0][2]),Math.abs(t[1][0]),Math.abs(t[1][1]),Math.abs(t[1][2]),Math.abs(t[2][0]),Math.abs(t[2][1]),Math.abs(t[2][2])),n=[1,1,1];e[3]>e[0]&&(n[0]=2),e[6]>e[0]&&e[6]>e[3]&&(n[0]=3),n[1]=1,n[0]===1?e[4]>e[7]?n[1]=2:n[1]=3:n[0]===2?e[1]>e[7]?n[1]=1:n[1]=3:e[1]>e[4]?n[1]=1:n[1]=2,n[2]=6-n[1]-n[0];let a=[1,2,3];a[n[0]-1]=1,a[n[1]-1]=2,a[n[2]-1]=3;let r=ue(t[0][0],t[0][1],t[0][2],t[0][3],t[1][0],t[1][1],t[1][2],t[1][3],t[2][0],t[2][1],t[2][2],t[2][3],0,0,0,1);this.mm000=this.vox2mm([-.5,-.5,-.5],r),this.mm100=this.vox2mm([i.dims[1]-.5,-.5,-.5],r),this.mm010=this.vox2mm([-.5,i.dims[2]-.5,-.5],r),this.mm001=this.vox2mm([-.5,-.5,i.dims[3]-.5],r);let s=ie();Ga(s,r);for(let h=0;h<3;h++)for(let l=0;l<3;l++)s[h*4+l]=r[h*4+a[l]-1];let o=[0,0,0];if(s[0]<0&&(o[0]=1),s[5]<0&&(o[1]=1),s[10]<0&&(o[2]=1),this.dimsRAS=[i.dims[0],i.dims[a[0]],i.dims[a[1]],i.dims[a[2]]],this.pixDimsRAS=[i.pixDims[0],i.pixDims[a[0]],i.pixDims[a[1]],i.pixDims[a[2]]],this.arrayEquals(a,[1,2,3])&&this.arrayEquals(o,[0,0,0])){this.toRAS=ie(),this.matRAS=he(r),this.calculateOblique();return}Ya(r),r[0+0*4]=1-o[0]*2,r[1+1*4]=1-o[1]*2,r[2+2*4]=1-o[2]*2,r[3+0*4]=(i.dims[a[0]]-1)*o[0],r[3+1*4]=(i.dims[a[1]]-1)*o[1],r[3+2*4]=(i.dims[a[2]]-1)*o[2];let c=ie();Pe(c,r),ti(c,c,s),this.matRAS=he(c),r=ue(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1),r[a[0]-1+0*4]=-o[0]*2+1,r[a[1]-1+1*4]=-o[1]*2+1,r[a[2]-1+2*4]=-o[2]*2+1,r[3+0*4]=o[0],r[3+1*4]=o[1],r[3+2*4]=o[2],this.toRAS=he(r),ye.debug(this.hdr.dims),ye.debug(this.dimsRAS),this.calculateOblique()},Ct.prototype.vox2mm=function(t,i){let e=he(i);Qe(e,e);let n=De(t[0],t[1],t[2],1);return Xe(n,n,e),Vt(n[0],n[1],n[2])},Ct.prototype.mm2vox=function(t){let i=ue(...this.hdr.affine.flat()),e=he(i);Qe(e,i),Pe(e,e);let n=De(t[0],t[1],t[2],1);Xe(n,n,e);let a=Vt(n[0],n[1],n[2]);return[Math.round(a[0]),Math.round(a[1]),Math.round(a[2])]},Ct.prototype.arrayEquals=function(t,i){return Array.isArray(t)&&Array.isArray(i)&&t.length===i.length&&t.every((e,n)=>e===i[n])},Ct.prototype.colorMaps=function(t=!0){let i=[];for(const[e]of Object.entries(Kt))i.push(e);return t===!0?i.sort():i},Ct.prototype.setColorMap=function(t){this.colorMaps().indexOf(t.toLowerCase())!==-1?(this.colorMap=t.toLowerCase(),this.calMinMax()):ye.warn(`color map ${t} is not a valid color map`)},Ct.prototype.calMinMax=function(){let t=this.colorMap,i=this.colorMaps(),e=0,n=0;if(i.indexOf(t.toLowerCase())!==-1&&(e=Kt[t.toLowerCase()].min,n=Kt[t.toLowerCase()].max),e===n&&this.trustCalMinMax&&isFinite(this.hdr.cal_min)&&isFinite(this.hdr.cal_max)&&this.hdr.cal_max>this.hdr.cal_min)return this.cal_min=this.hdr.cal_min,this.cal_max=this.hdr.cal_max,this.robust_min=this.cal_min,this.robust_max=this.cal_max,this.global_min=this.hdr.cal_min,this.global_max=this.hdr.cal_max,[this.hdr.cal_min,this.hdr.cal_max,this.hdr.cal_min,this.hdr.cal_max];if(e!=n)return this.cal_min=e,this.cal_max=n,this.robust_min=this.cal_min,this.robust_max=this.cal_max,[e,n,e,n];let a=this.img[0],r=this.img[0],s=0,o=0,c=this.img.length;for(let T=0;T<c;T++){if(isNaN(this.img[T])){o++;continue}this.img[T]===0&&(s++,this.ignoreZeroVoxels)||(a=Math.min(this.img[T],a),r=Math.max(this.img[T],r))}var h=this.intensityRaw2Scaled(this.hdr,a),l=this.intensityRaw2Scaled(this.hdr,r);this.ignoreZeroVoxels||(s=0),s+=o;let p=Math.round((c-s)*this.percentileFrac);if(p<1||a===r)return ye.debug("no variability in image intensity?"),this.cal_min=h,this.cal_max=l,this.robust_min=this.cal_min,this.robust_max=this.cal_max,this.global_min=h,this.global_max=l,[h,l,h,l];let f=1001,d=(f-1)/(r-a),E=new Array(f);for(let T=0;T<f;T++)E[T]=0;if(this.ignoreZeroVoxels)for(let T=0;T<=c;T++)this.img[T]!==0&&(isNaN(this.img[T])||E[Math.round((this.img[T]-a)*d)]++);else for(let T=0;T<=c;T++)isNaN(this.img[T])||E[Math.round((this.img[T]-a)*d)]++;let A=0,x=0;for(;A<p;)A+=E[x],x++;x--,A=0;let w=f;for(;A<p;)w--,A+=E[w];if(x==w){let T=-1;for(;T!==0;)x>0&&(x--,E[x]>0&&(T=0)),T!=0&&w<f-1&&(w++,E[w]>0&&(T=0)),x==0&&w==f-1&&(T=0)}var I=this.intensityRaw2Scaled(this.hdr,x/d+a),D=this.intensityRaw2Scaled(this.hdr,w/d+a);return this.hdr.cal_min<this.hdr.cal_max&&this.hdr.cal_min>=h&&this.hdr.cal_max<=l&&(I=this.hdr.cal_min,D=this.hdr.cal_max),this.cal_min=I,this.cal_max=D,this.robust_min=this.cal_min,this.robust_max=this.cal_max,this.global_min=h,this.global_max=l,[I,D,h,l]},Ct.prototype.intensityRaw2Scaled=function(t,i){return t.scl_slope===0&&(t.scl_slope=1),i*t.scl_slope+t.scl_inter},Ct.loadFromUrl=async function(t,i="",e="gray",n=1,a="",r=!0,s=.02,o=!1,c=!0){let h=await fetch(t),l=null;if(!h.ok)throw Error(h.statusText);i=t.split("/").slice(-1)[0];let f=await h.arrayBuffer(),d=null;return a.length>0&&(d=await(await fetch(a)).arrayBuffer()),f?l=new Ct(f,i,e,n,d,r,s,o,c):alert("Unable to load buffer properly from volume"),l},Ct.readFileAsync=function(t){return new Promise((i,e)=>{let n=new FileReader;n.onload=()=>{i(n.result)},n.onerror=e,n.readAsArrayBuffer(t)})},Ct.loadFromFile=async function(t,i="",e="gray",n=1,a="",r=!0,s=.02,o=!1,c=!0){let h=null;try{let l=await this.readFileAsync(t),p=null;a.length>0&&(p=await this.readFileAsync(a)),h=new Ct(l,i,e,n,p,r,s,o,c)}catch(l){ye.debug(l)}return h},Ct.prototype.clone=function(){let t=new Ct;return t.id=this.id,t.hdr=Object.assign({},this.hdr),t.img=this.img.slice(),t.calculateRAS(),t.calMinMax(),t},Ct.prototype.zeroImage=function(){this.img.fill(0)},Ct.prototype.getImageMetadata=function(){const t=this.id,i=this.hdr.datatypeCode,e=this.hdr.dims,n=e[1],a=e[2],r=e[3],s=Math.max(1,e[4]),o=this.hdr.pixDims,c=o[1],h=o[2],l=o[3],p=o[4],f=Math.floor(this.hdr.numBitsPerVoxel/8);return{id:t,datatypeCode:i,nx:n,ny:a,nz:r,nt:s,dx:c,dy:h,dz:l,dt:p,bpv:f}},Ct.zerosLike=function(t){let i=t.clone();return i.zeroImage(),i},String.prototype.getBytes=function(){let t=[];for(var i=0;i<this.length;i++)t.push(this.charCodeAt(i));return t},Ct.prototype.getValue=function(t,i,e){const{nx:n,ny:a}=this.getImageMetadata();if(this.hdr.datatypeCode===this.DT_RGBA32){let s=4*(t+i*n+e*n*a);return Math.round(this.img[s]*.21+this.img[s+1]*.72+this.img[s+2]*.07)}if(this.hdr.datatypeCode===this.DT_RGB){let s=3*(t+i*n+e*n*a);return Math.round(this.img[s]*.21+this.img[s+1]*.72+this.img[s+2]*.07)}let r=this.img[t+i*n+e*n*a];return this.hdr.scl_slope*r+this.hdr.scl_inter};function Rh(t,i=!0){let e=(t.length/3).toFixed(),n=Vt(0,0,0),a=Ae(),r=Ae(),s=0,o=1;i&&(o=2);for(let p=0;p<o;p++){s=0;for(let d=0;d<e;d++){let E=Vt(t[d*3],t[d*3+1],t[d*3+2]);d===0&&(Zn(a,E),Zn(r,E)),Va(a,a,E),Qa(r,r,E),$t(E,E,n);let A=qa(E);s=Math.max(s,A)}if(p+1>=o)break;let f=!0;for(let d=0;d<3;++d)a[d]>n[d]&&(f=!1),r[d]<n[d]&&(f=!1);if(f)break;Ja(n,a,r,.5),ye.debug("origin moved inside volume: ",n)}let c=[a[0],a[1],a[2]],h=[r[0],r[1],r[2]];return{min:c,max:h,furthestVertexFromOrigin:s,origin:n}}Ct.prototype.toNiivueObject3D=function(t,i){let e=this.vox2mm([0,0,0],this.matRAS),n=this.vox2mm([0,this.dimsRAS[2]-1,0],this.matRAS),a=this.vox2mm([0,0,this.dimsRAS[3]-1],this.matRAS),r=this.vox2mm([0,this.dimsRAS[2]-1,this.dimsRAS[3]-1],this.matRAS),s=this.vox2mm([this.dimsRAS[1]-1,0,0],this.matRAS),o=this.vox2mm([this.dimsRAS[1]-1,this.dimsRAS[2]-1,0],this.matRAS),c=this.vox2mm([this.dimsRAS[1]-1,0,this.dimsRAS[3]-1],this.matRAS),h=this.vox2mm([this.dimsRAS[1]-1,this.dimsRAS[2]-1,this.dimsRAS[3]-1],this.matRAS),l=[...a,0,0,1,...c,1,0,1,...h,1,1,1,...r,0,1,1,...e,0,0,0,...n,0,1,0,...o,1,1,0,...s,1,0,0];const p=i.createBuffer();i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,p);const f=[0,3,2,2,1,0,4,7,6,6,5,4,5,6,2,2,3,5,4,0,1,1,7,4,7,1,2,2,6,7,4,5,3,3,0,4];i.bufferData(i.ELEMENT_ARRAY_BUFFER,new Uint16Array(f),i.STATIC_DRAW);const d=i.createBuffer();i.bindBuffer(i.ARRAY_BUFFER,d),i.bufferData(i.ARRAY_BUFFER,new Float32Array(l),i.STATIC_DRAW);const E=i.createVertexArray();i.bindVertexArray(E),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,p),i.bindBuffer(i.ARRAY_BUFFER,d),i.enableVertexAttribArray(0),i.vertexAttribPointer(0,3,i.FLOAT,!1,24,0),i.enableVertexAttribArray(1),i.vertexAttribPointer(1,3,i.FLOAT,!1,24,12),i.bindVertexArray(null);const A=new Ht(t,d,i.TRIANGLES,f.length,p,E),x=Rh([...a,...c,...h,...r,...e,...n,...o,...s]);return A.extentsMin=x.min,A.extentsMax=x.max,A.furthestVertexFromOrigin=x.furthestVertexFromOrigin,A.originNegate=ja(x.origin),Xa(A.originNegate,A.originNegate),A};var Ma={exports:{}};(function(t,i){(function(e){t.exports=e()})(function(){return function e(n,a,r){function s(h,l){if(!a[h]){if(!n[h]){var p=typeof fe=="function"&&fe;if(!l&&p)return p(h,!0);if(o)return o(h,!0);var f=new Error("Cannot find module '"+h+"'");throw f.code="MODULE_NOT_FOUND",f}var d=a[h]={exports:{}};n[h][0].call(d.exports,function(E){var A=n[h][1][E];return s(A||E)},d,d.exports,e,n,a,r)}return a[h].exports}for(var o=typeof fe=="function"&&fe,c=0;c<r.length;c++)s(r[c]);return s}({1:[function(e,n,a){var r={_keyStr:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",decodeArrayBuffer:function(o){var c=this._keyStr.indexOf(o.charAt(o.length-1)),h=this._keyStr.indexOf(o.charAt(o.length-2)),l=o.length/4*3;c==64&&l--,h==64&&l--;var p=new ArrayBuffer(l);return this.decode(o,p,l),p},decode:function(o,c,h){var l,p,f,d,E,A,x,w,I=0,D=0;for(c?l=new Uint8Array(c):l=new Uint8Array(h),o=o.replace(/[^A-Za-z0-9\+\/\=]/g,""),I=0;I<h;I+=3)E=this._keyStr.indexOf(o.charAt(D++)),A=this._keyStr.indexOf(o.charAt(D++)),x=this._keyStr.indexOf(o.charAt(D++)),w=this._keyStr.indexOf(o.charAt(D++)),p=E<<2|A>>4,f=(A&15)<<4|x>>2,d=(x&3)<<6|w,l[I]=p,x!=64&&(l[I+1]=f),w!=64&&(l[I+2]=d);return l}},s=typeof n;s!=="undefined"&&n.exports&&(n.exports=r)},{}],2:[function(e,n,a){},{}],3:[function(e,n,a){(function(r){var s=e("base64-js"),o=e("ieee754"),c=e("isarray");a.Buffer=f,a.SlowBuffer=Q,a.INSPECT_MAX_BYTES=50,f.poolSize=8192;var h={};f.TYPED_ARRAY_SUPPORT=r.TYPED_ARRAY_SUPPORT!==void 0?r.TYPED_ARRAY_SUPPORT:l();function l(){try{var B=new Uint8Array(1);return B.foo=function(){return 42},B.foo()===42&&typeof B.subarray=="function"&&B.subarray(1,1).byteLength===0}catch{return!1}}function p(){return f.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function f(B){return this instanceof f?(f.TYPED_ARRAY_SUPPORT||(this.length=0,this.parent=void 0),typeof B=="number"?d(this,B):typeof B=="string"?E(this,B,arguments.length>1?arguments[1]:"utf8"):A(this,B)):arguments.length>1?new f(B,arguments[1]):new f(B)}f._augment=function(B){return B.__proto__=f.prototype,B};function d(B,g){if(B=P(B,g<0?0:O(g)|0),!f.TYPED_ARRAY_SUPPORT)for(var m=0;m<g;m++)B[m]=0;return B}function E(B,g,m){(typeof m!="string"||m==="")&&(m="utf8");var N=Z(g,m)|0;return B=P(B,N),B.write(g,m),B}function A(B,g){if(f.isBuffer(g))return x(B,g);if(c(g))return w(B,g);if(g==null)throw new TypeError("must start with number, buffer, array or string");if(typeof ArrayBuffer!="undefined"){if(g.buffer instanceof ArrayBuffer)return I(B,g);if(g instanceof ArrayBuffer)return D(B,g)}return g.length?T(B,g):R(B,g)}function x(B,g){var m=O(g.length)|0;return B=P(B,m),g.copy(B,0,0,m),B}function w(B,g){var m=O(g.length)|0;B=P(B,m);for(var N=0;N<m;N+=1)B[N]=g[N]&255;return B}function I(B,g){var m=O(g.length)|0;B=P(B,m);for(var N=0;N<m;N+=1)B[N]=g[N]&255;return B}function D(B,g){return g.byteLength,f.TYPED_ARRAY_SUPPORT?(B=new Uint8Array(g),B.__proto__=f.prototype):B=I(B,new Uint8Array(g)),B}function T(B,g){var m=O(g.length)|0;B=P(B,m);for(var N=0;N<m;N+=1)B[N]=g[N]&255;return B}function R(B,g){var m,N=0;g.type==="Buffer"&&c(g.data)&&(m=g.data,N=O(m.length)|0),B=P(B,N);for(var G=0;G<N;G+=1)B[G]=m[G]&255;return B}f.TYPED_ARRAY_SUPPORT?(f.prototype.__proto__=Uint8Array.prototype,f.__proto__=Uint8Array,typeof Symbol!="undefined"&&Symbol.species&&f[Symbol.species]===f&&Object.defineProperty(f,Symbol.species,{value:null,configurable:!0})):(f.prototype.length=void 0,f.prototype.parent=void 0);function P(B,g){f.TYPED_ARRAY_SUPPORT?(B=new Uint8Array(g),B.__proto__=f.prototype):B.length=g;var m=g!==0&&g<=f.poolSize>>>1;return m&&(B.parent=h),B}function O(B){if(B>=p())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+p().toString(16)+" bytes");return B|0}function Q(B,g){if(!(this instanceof Q))return new Q(B,g);var m=new f(B,g);return delete m.parent,m}f.isBuffer=function(g){return!!(g!=null&&g._isBuffer)},f.compare=function(g,m){if(!f.isBuffer(g)||!f.isBuffer(m))throw new TypeError("Arguments must be Buffers");if(g===m)return 0;for(var N=g.length,G=m.length,J=0,rt=Math.min(N,G);J<rt&&g[J]===m[J];)++J;return J!==rt&&(N=g[J],G=m[J]),N<G?-1:G<N?1:0},f.isEncoding=function(g){switch(String(g).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"raw":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},f.concat=function(g,m){if(!c(g))throw new TypeError("list argument must be an Array of Buffers.");if(g.length===0)return new f(0);var N;if(m===void 0)for(m=0,N=0;N<g.length;N++)m+=g[N].length;var G=new f(m),J=0;for(N=0;N<g.length;N++){var rt=g[N];rt.copy(G,J),J+=rt.length}return G};function Z(B,g){typeof B!="string"&&(B=""+B);var m=B.length;if(m===0)return 0;for(var N=!1;;)switch(g){case"ascii":case"binary":case"raw":case"raws":return m;case"utf8":case"utf-8":return _(B).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return m*2;case"hex":return m>>>1;case"base64":return L(B).length;default:if(N)return _(B).length;g=(""+g).toLowerCase(),N=!0}}f.byteLength=Z;function K(B,g,m){var N=!1;if(g=g|0,m=m===void 0||m===1/0?this.length:m|0,B||(B="utf8"),g<0&&(g=0),m>this.length&&(m=this.length),m<=g)return"";for(;;)switch(B){case"hex":return F(this,g,m);case"utf8":case"utf-8":return C(this,g,m);case"ascii":return bt(this,g,m);case"binary":return mt(this,g,m);case"base64":return lt(this,g,m);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return M(this,g,m);default:if(N)throw new TypeError("Unknown encoding: "+B);B=(B+"").toLowerCase(),N=!0}}f.prototype._isBuffer=!0,f.prototype.toString=function(){var g=this.length|0;return g===0?"":arguments.length===0?C(this,0,g):K.apply(this,arguments)},f.prototype.equals=function(g){if(!f.isBuffer(g))throw new TypeError("Argument must be a Buffer");return this===g?!0:f.compare(this,g)===0},f.prototype.inspect=function(){var g="",m=a.INSPECT_MAX_BYTES;return this.length>0&&(g=this.toString("hex",0,m).match(/.{2}/g).join(" "),this.length>m&&(g+=" ... ")),"<Buffer "+g+">"},f.prototype.compare=function(g){if(!f.isBuffer(g))throw new TypeError("Argument must be a Buffer");return this===g?0:f.compare(this,g)},f.prototype.indexOf=function(g,m){if(m>2147483647?m=2147483647:m<-2147483648&&(m=-2147483648),m>>=0,this.length===0||m>=this.length)return-1;if(m<0&&(m=Math.max(this.length+m,0)),typeof g=="string")return g.length===0?-1:String.prototype.indexOf.call(this,g,m);if(f.isBuffer(g))return N(this,g,m);if(typeof g=="number")return f.TYPED_ARRAY_SUPPORT&&Uint8Array.prototype.indexOf==="function"?Uint8Array.prototype.indexOf.call(this,g,m):N(this,[g],m);function N(G,J,rt){for(var _t=-1,Rt=0;rt+Rt<G.length;Rt++)if(G[rt+Rt]===J[_t===-1?0:Rt-_t]){if(_t===-1&&(_t=Rt),Rt-_t+1===J.length)return rt+_t}else _t=-1;return-1}throw new TypeError("val must be string, number or Buffer")};function tt(B,g,m,N){m=Number(m)||0;var G=B.length-m;N?(N=Number(N),N>G&&(N=G)):N=G;var J=g.length;if(J%2!==0)throw new Error("Invalid hex string");N>J/2&&(N=J/2);for(var rt=0;rt<N;rt++){var _t=parseInt(g.substr(rt*2,2),16);if(isNaN(_t))throw new Error("Invalid hex string");B[m+rt]=_t}return rt}function at(B,g,m,N){return At(_(g,B.length-m),B,m,N)}function ht(B,g,m,N){return At(v(g),B,m,N)}function z(B,g,m,N){return ht(B,g,m,N)}function Y(B,g,m,N){return At(L(g),B,m,N)}function j(B,g,m,N){return At(W(g,B.length-m),B,m,N)}f.prototype.write=function(g,m,N,G){if(m===void 0)G="utf8",N=this.length,m=0;else if(N===void 0&&typeof m=="string")G=m,N=this.length,m=0;else if(isFinite(m))m=m|0,isFinite(N)?(N=N|0,G===void 0&&(G="utf8")):(G=N,N=void 0);else{var J=G;G=m,m=N|0,N=J}var rt=this.length-m;if((N===void 0||N>rt)&&(N=rt),g.length>0&&(N<0||m<0)||m>this.length)throw new RangeError("attempt to write outside buffer bounds");G||(G="utf8");for(var _t=!1;;)switch(G){case"hex":return tt(this,g,m,N);case"utf8":case"utf-8":return at(this,g,m,N);case"ascii":return ht(this,g,m,N);case"binary":return z(this,g,m,N);case"base64":return Y(this,g,m,N);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return j(this,g,m,N);default:if(_t)throw new TypeError("Unknown encoding: "+G);G=(""+G).toLowerCase(),_t=!0}},f.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function lt(B,g,m){return g===0&&m===B.length?s.fromByteArray(B):s.fromByteArray(B.slice(g,m))}function C(B,g,m){m=Math.min(B.length,m);for(var N=[],G=g;G<m;){var J=B[G],rt=null,_t=J>239?4:J>223?3:J>191?2:1;if(G+_t<=m){var Rt,Ut,re,Ot;switch(_t){case 1:J<128&&(rt=J);break;case 2:Rt=B[G+1],(Rt&192)===128&&(Ot=(J&31)<<6|Rt&63,Ot>127&&(rt=Ot));break;case 3:Rt=B[G+1],Ut=B[G+2],(Rt&192)===128&&(Ut&192)===128&&(Ot=(J&15)<<12|(Rt&63)<<6|Ut&63,Ot>2047&&(Ot<55296||Ot>57343)&&(rt=Ot));break;case 4:Rt=B[G+1],Ut=B[G+2],re=B[G+3],(Rt&192)===128&&(Ut&192)===128&&(re&192)===128&&(Ot=(J&15)<<18|(Rt&63)<<12|(Ut&63)<<6|re&63,Ot>65535&&Ot<1114112&&(rt=Ot))}}rt===null?(rt=65533,_t=1):rt>65535&&(rt-=65536,N.push(rt>>>10&1023|55296),rt=56320|rt&1023),N.push(rt),G+=_t}return xt(N)}var ct=4096;function xt(B){var g=B.length;if(g<=ct)return String.fromCharCode.apply(String,B);for(var m="",N=0;N<g;)m+=String.fromCharCode.apply(String,B.slice(N,N+=ct));return m}function bt(B,g,m){var N="";m=Math.min(B.length,m);for(var G=g;G<m;G++)N+=String.fromCharCode(B[G]&127);return N}function mt(B,g,m){var N="";m=Math.min(B.length,m);for(var G=g;G<m;G++)N+=String.fromCharCode(B[G]);return N}function F(B,g,m){var N=B.length;(!g||g<0)&&(g=0),(!m||m<0||m>N)&&(m=N);for(var G="",J=g;J<m;J++)G+=Pt(B[J]);return G}function M(B,g,m){for(var N=B.slice(g,m),G="",J=0;J<N.length;J+=2)G+=String.fromCharCode(N[J]+N[J+1]*256);return G}f.prototype.slice=function(g,m){var N=this.length;g=~~g,m=m===void 0?N:~~m,g<0?(g+=N,g<0&&(g=0)):g>N&&(g=N),m<0?(m+=N,m<0&&(m=0)):m>N&&(m=N),m<g&&(m=g);var G;if(f.TYPED_ARRAY_SUPPORT)G=this.subarray(g,m),G.__proto__=f.prototype;else{var J=m-g;G=new f(J,void 0);for(var rt=0;rt<J;rt++)G[rt]=this[rt+g]}return G.length&&(G.parent=this.parent||this),G};function $(B,g,m){if(B%1!==0||B<0)throw new RangeError("offset is not uint");if(B+g>m)throw new RangeError("Trying to access beyond buffer length")}f.prototype.readUIntLE=function(g,m,N){g=g|0,m=m|0,N||$(g,m,this.length);for(var G=this[g],J=1,rt=0;++rt<m&&(J*=256);)G+=this[g+rt]*J;return G},f.prototype.readUIntBE=function(g,m,N){g=g|0,m=m|0,N||$(g,m,this.length);for(var G=this[g+--m],J=1;m>0&&(J*=256);)G+=this[g+--m]*J;return G},f.prototype.readUInt8=function(g,m){return m||$(g,1,this.length),this[g]},f.prototype.readUInt16LE=function(g,m){return m||$(g,2,this.length),this[g]|this[g+1]<<8},f.prototype.readUInt16BE=function(g,m){return m||$(g,2,this.length),this[g]<<8|this[g+1]},f.prototype.readUInt32LE=function(g,m){return m||$(g,4,this.length),(this[g]|this[g+1]<<8|this[g+2]<<16)+this[g+3]*16777216},f.prototype.readUInt32BE=function(g,m){return m||$(g,4,this.length),this[g]*16777216+(this[g+1]<<16|this[g+2]<<8|this[g+3])},f.prototype.readIntLE=function(g,m,N){g=g|0,m=m|0,N||$(g,m,this.length);for(var G=this[g],J=1,rt=0;++rt<m&&(J*=256);)G+=this[g+rt]*J;return J*=128,G>=J&&(G-=Math.pow(2,8*m)),G},f.prototype.readIntBE=function(g,m,N){g=g|0,m=m|0,N||$(g,m,this.length);for(var G=m,J=1,rt=this[g+--G];G>0&&(J*=256);)rt+=this[g+--G]*J;return J*=128,rt>=J&&(rt-=Math.pow(2,8*m)),rt},f.prototype.readInt8=function(g,m){return m||$(g,1,this.length),this[g]&128?(255-this[g]+1)*-1:this[g]},f.prototype.readInt16LE=function(g,m){m||$(g,2,this.length);var N=this[g]|this[g+1]<<8;return N&32768?N|4294901760:N},f.prototype.readInt16BE=function(g,m){m||$(g,2,this.length);var N=this[g+1]|this[g]<<8;return N&32768?N|4294901760:N},f.prototype.readInt32LE=function(g,m){return m||$(g,4,this.length),this[g]|this[g+1]<<8|this[g+2]<<16|this[g+3]<<24},f.prototype.readInt32BE=function(g,m){return m||$(g,4,this.length),this[g]<<24|this[g+1]<<16|this[g+2]<<8|this[g+3]},f.prototype.readFloatLE=function(g,m){return m||$(g,4,this.length),o.read(this,g,!0,23,4)},f.prototype.readFloatBE=function(g,m){return m||$(g,4,this.length),o.read(this,g,!1,23,4)},f.prototype.readDoubleLE=function(g,m){return m||$(g,8,this.length),o.read(this,g,!0,52,8)},f.prototype.readDoubleBE=function(g,m){return m||$(g,8,this.length),o.read(this,g,!1,52,8)};function nt(B,g,m,N,G,J){if(!f.isBuffer(B))throw new TypeError("buffer must be a Buffer instance");if(g>G||g<J)throw new RangeError("value is out of bounds");if(m+N>B.length)throw new RangeError("index out of range")}f.prototype.writeUIntLE=function(g,m,N,G){g=+g,m=m|0,N=N|0,G||nt(this,g,m,N,Math.pow(2,8*N),0);var J=1,rt=0;for(this[m]=g&255;++rt<N&&(J*=256);)this[m+rt]=g/J&255;return m+N},f.prototype.writeUIntBE=function(g,m,N,G){g=+g,m=m|0,N=N|0,G||nt(this,g,m,N,Math.pow(2,8*N),0);var J=N-1,rt=1;for(this[m+J]=g&255;--J>=0&&(rt*=256);)this[m+J]=g/rt&255;return m+N},f.prototype.writeUInt8=function(g,m,N){return g=+g,m=m|0,N||nt(this,g,m,1,255,0),f.TYPED_ARRAY_SUPPORT||(g=Math.floor(g)),this[m]=g&255,m+1};function gt(B,g,m,N){g<0&&(g=65535+g+1);for(var G=0,J=Math.min(B.length-m,2);G<J;G++)B[m+G]=(g&255<<8*(N?G:1-G))>>>(N?G:1-G)*8}f.prototype.writeUInt16LE=function(g,m,N){return g=+g,m=m|0,N||nt(this,g,m,2,65535,0),f.TYPED_ARRAY_SUPPORT?(this[m]=g&255,this[m+1]=g>>>8):gt(this,g,m,!0),m+2},f.prototype.writeUInt16BE=function(g,m,N){return g=+g,m=m|0,N||nt(this,g,m,2,65535,0),f.TYPED_ARRAY_SUPPORT?(this[m]=g>>>8,this[m+1]=g&255):gt(this,g,m,!1),m+2};function Tt(B,g,m,N){g<0&&(g=4294967295+g+1);for(var G=0,J=Math.min(B.length-m,4);G<J;G++)B[m+G]=g>>>(N?G:3-G)*8&255}f.prototype.writeUInt32LE=function(g,m,N){return g=+g,m=m|0,N||nt(this,g,m,4,4294967295,0),f.TYPED_ARRAY_SUPPORT?(this[m+3]=g>>>24,this[m+2]=g>>>16,this[m+1]=g>>>8,this[m]=g&255):Tt(this,g,m,!0),m+4},f.prototype.writeUInt32BE=function(g,m,N){return g=+g,m=m|0,N||nt(this,g,m,4,4294967295,0),f.TYPED_ARRAY_SUPPORT?(this[m]=g>>>24,this[m+1]=g>>>16,this[m+2]=g>>>8,this[m+3]=g&255):Tt(this,g,m,!1),m+4},f.prototype.writeIntLE=function(g,m,N,G){if(g=+g,m=m|0,!G){var J=Math.pow(2,8*N-1);nt(this,g,m,N,J-1,-J)}var rt=0,_t=1,Rt=g<0?1:0;for(this[m]=g&255;++rt<N&&(_t*=256);)this[m+rt]=(g/_t>>0)-Rt&255;return m+N},f.prototype.writeIntBE=function(g,m,N,G){if(g=+g,m=m|0,!G){var J=Math.pow(2,8*N-1);nt(this,g,m,N,J-1,-J)}var rt=N-1,_t=1,Rt=g<0?1:0;for(this[m+rt]=g&255;--rt>=0&&(_t*=256);)this[m+rt]=(g/_t>>0)-Rt&255;return m+N},f.prototype.writeInt8=function(g,m,N){return g=+g,m=m|0,N||nt(this,g,m,1,127,-128),f.TYPED_ARRAY_SUPPORT||(g=Math.floor(g)),g<0&&(g=255+g+1),this[m]=g&255,m+1},f.prototype.writeInt16LE=function(g,m,N){return g=+g,m=m|0,N||nt(this,g,m,2,32767,-32768),f.TYPED_ARRAY_SUPPORT?(this[m]=g&255,this[m+1]=g>>>8):gt(this,g,m,!0),m+2},f.prototype.writeInt16BE=function(g,m,N){return g=+g,m=m|0,N||nt(this,g,m,2,32767,-32768),f.TYPED_ARRAY_SUPPORT?(this[m]=g>>>8,this[m+1]=g&255):gt(this,g,m,!1),m+2},f.prototype.writeInt32LE=function(g,m,N){return g=+g,m=m|0,N||nt(this,g,m,4,2147483647,-2147483648),f.TYPED_ARRAY_SUPPORT?(this[m]=g&255,this[m+1]=g>>>8,this[m+2]=g>>>16,this[m+3]=g>>>24):Tt(this,g,m,!0),m+4},f.prototype.writeInt32BE=function(g,m,N){return g=+g,m=m|0,N||nt(this,g,m,4,2147483647,-2147483648),g<0&&(g=4294967295+g+1),f.TYPED_ARRAY_SUPPORT?(this[m]=g>>>24,this[m+1]=g>>>16,this[m+2]=g>>>8,this[m+3]=g&255):Tt(this,g,m,!1),m+4};function dt(B,g,m,N,G,J){if(m+N>B.length)throw new RangeError("index out of range");if(m<0)throw new RangeError("index out of range")}function wt(B,g,m,N,G){return G||dt(B,g,m,4),o.write(B,g,m,N,23,4),m+4}f.prototype.writeFloatLE=function(g,m,N){return wt(this,g,m,!0,N)},f.prototype.writeFloatBE=function(g,m,N){return wt(this,g,m,!1,N)};function Et(B,g,m,N,G){return G||dt(B,g,m,8),o.write(B,g,m,N,52,8),m+8}f.prototype.writeDoubleLE=function(g,m,N){return Et(this,g,m,!0,N)},f.prototype.writeDoubleBE=function(g,m,N){return Et(this,g,m,!1,N)},f.prototype.copy=function(g,m,N,G){if(N||(N=0),!G&&G!==0&&(G=this.length),m>=g.length&&(m=g.length),m||(m=0),G>0&&G<N&&(G=N),G===N||g.length===0||this.length===0)return 0;if(m<0)throw new RangeError("targetStart out of bounds");if(N<0||N>=this.length)throw new RangeError("sourceStart out of bounds");if(G<0)throw new RangeError("sourceEnd out of bounds");G>this.length&&(G=this.length),g.length-m<G-N&&(G=g.length-m+N);var J=G-N,rt;if(this===g&&N<m&&m<G)for(rt=J-1;rt>=0;rt--)g[rt+m]=this[rt+N];else if(J<1e3||!f.TYPED_ARRAY_SUPPORT)for(rt=0;rt<J;rt++)g[rt+m]=this[rt+N];else Uint8Array.prototype.set.call(g,this.subarray(N,N+J),m);return J},f.prototype.fill=function(g,m,N){if(g||(g=0),m||(m=0),N||(N=this.length),N<m)throw new RangeError("end < start");if(N!==m&&this.length!==0){if(m<0||m>=this.length)throw new RangeError("start out of bounds");if(N<0||N>this.length)throw new RangeError("end out of bounds");var G;if(typeof g=="number")for(G=m;G<N;G++)this[G]=g;else{var J=_(g.toString()),rt=J.length;for(G=m;G<N;G++)this[G]=J[G%rt]}return this}};var Bt=/[^+\/0-9A-Za-z-_]/g;function It(B){if(B=Ft(B).replace(Bt,""),B.length<2)return"";for(;B.length%4!==0;)B=B+"=";return B}function Ft(B){return B.trim?B.trim():B.replace(/^\s+|\s+$/g,"")}function Pt(B){return B<16?"0"+B.toString(16):B.toString(16)}function _(B,g){g=g||1/0;for(var m,N=B.length,G=null,J=[],rt=0;rt<N;rt++){if(m=B.charCodeAt(rt),m>55295&&m<57344){if(!G){if(m>56319){(g-=3)>-1&&J.push(239,191,189);continue}else if(rt+1===N){(g-=3)>-1&&J.push(239,191,189);continue}G=m;continue}if(m<56320){(g-=3)>-1&&J.push(239,191,189),G=m;continue}m=(G-55296<<10|m-56320)+65536}else G&&(g-=3)>-1&&J.push(239,191,189);if(G=null,m<128){if((g-=1)<0)break;J.push(m)}else if(m<2048){if((g-=2)<0)break;J.push(m>>6|192,m&63|128)}else if(m<65536){if((g-=3)<0)break;J.push(m>>12|224,m>>6&63|128,m&63|128)}else if(m<1114112){if((g-=4)<0)break;J.push(m>>18|240,m>>12&63|128,m>>6&63|128,m&63|128)}else throw new Error("Invalid code point")}return J}function v(B){for(var g=[],m=0;m<B.length;m++)g.push(B.charCodeAt(m)&255);return g}function W(B,g){for(var m,N,G,J=[],rt=0;rt<B.length&&!((g-=2)<0);rt++)m=B.charCodeAt(rt),N=m>>8,G=m%256,J.push(G),J.push(N);return J}function L(B){return s.toByteArray(It(B))}function At(B,g,m,N){for(var G=0;G<N&&!(G+m>=g.length||G>=B.length);G++)g[G+m]=B[G];return G}}).call(this,typeof Ci!="undefined"?Ci:typeof self!="undefined"?self:typeof window!="undefined"?window:{})},{"base64-js":4,ieee754:5,isarray:6}],4:[function(e,n,a){(function(r){var s,o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",c=[];for(s=0;s<o.length;s++)c[s]=o[s];var h=[];for(s=0;s<o.length;++s)h[o.charCodeAt(s)]=s;h["-".charCodeAt(0)]=62,h["_".charCodeAt(0)]=63;var l=typeof Uint8Array!="undefined"?Uint8Array:Array;function p(w){var I=h[w.charCodeAt(0)];return I!==void 0?I:-1}function f(w){var I,D,T,R,P,O;if(w.length%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var Q=w.length;P=w.charAt(Q-2)==="="?2:w.charAt(Q-1)==="="?1:0,O=new l(w.length*3/4-P),T=P>0?w.length-4:w.length;var Z=0;function K(tt){O[Z++]=tt}for(I=0,D=0;I<T;I+=4,D+=3)R=p(w.charAt(I))<<18|p(w.charAt(I+1))<<12|p(w.charAt(I+2))<<6|p(w.charAt(I+3)),K((R&16711680)>>16),K((R&65280)>>8),K(R&255);return P===2?(R=p(w.charAt(I))<<2|p(w.charAt(I+1))>>4,K(R&255)):P===1&&(R=p(w.charAt(I))<<10|p(w.charAt(I+1))<<4|p(w.charAt(I+2))>>2,K(R>>8&255),K(R&255)),O}function d(w){return c[w]}function E(w){return d(w>>18&63)+d(w>>12&63)+d(w>>6&63)+d(w&63)}function A(w,I,D){for(var T,R=[],P=I;P<D;P+=3)T=(w[P]<<16)+(w[P+1]<<8)+w[P+2],R.push(E(T));return R.join("")}function x(w){var I,D=w.length%3,T="",R=[],P,O,Q=16383;for(I=0,O=w.length-D;I<O;I+=Q)R.push(A(w,I,I+Q>O?O:I+Q));switch(D){case 1:P=w[w.length-1],T+=d(P>>2),T+=d(P<<4&63),T+="==";break;case 2:P=(w[w.length-2]<<8)+w[w.length-1],T+=d(P>>10),T+=d(P>>4&63),T+=d(P<<2&63),T+="=";break}return R.push(T),R.join("")}r.toByteArray=f,r.fromByteArray=x})(typeof a=="undefined"?this.base64js={}:a)},{}],5:[function(e,n,a){a.read=function(r,s,o,c,h){var l,p,f=h*8-c-1,d=(1<<f)-1,E=d>>1,A=-7,x=o?h-1:0,w=o?-1:1,I=r[s+x];for(x+=w,l=I&(1<<-A)-1,I>>=-A,A+=f;A>0;l=l*256+r[s+x],x+=w,A-=8);for(p=l&(1<<-A)-1,l>>=-A,A+=c;A>0;p=p*256+r[s+x],x+=w,A-=8);if(l===0)l=1-E;else{if(l===d)return p?NaN:(I?-1:1)*(1/0);p=p+Math.pow(2,c),l=l-E}return(I?-1:1)*p*Math.pow(2,l-c)},a.write=function(r,s,o,c,h,l){var p,f,d,E=l*8-h-1,A=(1<<E)-1,x=A>>1,w=h===23?Math.pow(2,-24)-Math.pow(2,-77):0,I=c?0:l-1,D=c?1:-1,T=s<0||s===0&&1/s<0?1:0;for(s=Math.abs(s),isNaN(s)||s===1/0?(f=isNaN(s)?1:0,p=A):(p=Math.floor(Math.log(s)/Math.LN2),s*(d=Math.pow(2,-p))<1&&(p--,d*=2),p+x>=1?s+=w/d:s+=w*Math.pow(2,1-x),s*d>=2&&(p++,d/=2),p+x>=A?(f=0,p=A):p+x>=1?(f=(s*d-1)*Math.pow(2,h),p=p+x):(f=s*Math.pow(2,x-1)*Math.pow(2,h),p=0));h>=8;r[o+I]=f&255,I+=D,f/=256,h-=8);for(p=p<<h|f,E+=h;E>0;r[o+I]=p&255,I+=D,p/=256,E-=8);r[o+I-D]|=T*128}},{}],6:[function(e,n,a){var r={}.toString;n.exports=Array.isArray||function(s){return r.call(s)=="[object Array]"}},{}],7:[function(e,n,a){function r(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}n.exports=r,r.EventEmitter=r,r.prototype._events=void 0,r.prototype._maxListeners=void 0,r.defaultMaxListeners=10,r.prototype.setMaxListeners=function(l){if(!o(l)||l<0||isNaN(l))throw TypeError("n must be a positive number");return this._maxListeners=l,this},r.prototype.emit=function(l){var p,f,d,E,A,x;if(this._events||(this._events={}),l==="error"&&(!this._events.error||c(this._events.error)&&!this._events.error.length))throw p=arguments[1],p instanceof Error?p:TypeError('Uncaught, unspecified "error" event.');if(f=this._events[l],h(f))return!1;if(s(f))switch(arguments.length){case 1:f.call(this);break;case 2:f.call(this,arguments[1]);break;case 3:f.call(this,arguments[1],arguments[2]);break;default:E=Array.prototype.slice.call(arguments,1),f.apply(this,E)}else if(c(f))for(E=Array.prototype.slice.call(arguments,1),x=f.slice(),d=x.length,A=0;A<d;A++)x[A].apply(this,E);return!0},r.prototype.addListener=function(l,p){var f;if(!s(p))throw TypeError("listener must be a function");return this._events||(this._events={}),this._events.newListener&&this.emit("newListener",l,s(p.listener)?p.listener:p),this._events[l]?c(this._events[l])?this._events[l].push(p):this._events[l]=[this._events[l],p]:this._events[l]=p,c(this._events[l])&&!this._events[l].warned&&(h(this._maxListeners)?f=r.defaultMaxListeners:f=this._maxListeners,f&&f>0&&this._events[l].length>f&&(this._events[l].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[l].length),typeof console.trace=="function"&&console.trace())),this},r.prototype.on=r.prototype.addListener,r.prototype.once=function(l,p){if(!s(p))throw TypeError("listener must be a function");var f=!1;function d(){this.removeListener(l,d),f||(f=!0,p.apply(this,arguments))}return d.listener=p,this.on(l,d),this},r.prototype.removeListener=function(l,p){var f,d,E,A;if(!s(p))throw TypeError("listener must be a function");if(!this._events||!this._events[l])return this;if(f=this._events[l],E=f.length,d=-1,f===p||s(f.listener)&&f.listener===p)delete this._events[l],this._events.removeListener&&this.emit("removeListener",l,p);else if(c(f)){for(A=E;A-- >0;)if(f[A]===p||f[A].listener&&f[A].listener===p){d=A;break}if(d<0)return this;f.length===1?(f.length=0,delete this._events[l]):f.splice(d,1),this._events.removeListener&&this.emit("removeListener",l,p)}return this},r.prototype.removeAllListeners=function(l){var p,f;if(!this._events)return this;if(!this._events.removeListener)return arguments.length===0?this._events={}:this._events[l]&&delete this._events[l],this;if(arguments.length===0){for(p in this._events)p!=="removeListener"&&this.removeAllListeners(p);return this.removeAllListeners("removeListener"),this._events={},this}if(f=this._events[l],s(f))this.removeListener(l,f);else if(f)for(;f.length;)this.removeListener(l,f[f.length-1]);return delete this._events[l],this},r.prototype.listeners=function(l){var p;return!this._events||!this._events[l]?p=[]:s(this._events[l])?p=[this._events[l]]:p=this._events[l].slice(),p},r.prototype.listenerCount=function(l){if(this._events){var p=this._events[l];if(s(p))return 1;if(p)return p.length}return 0},r.listenerCount=function(l,p){return l.listenerCount(p)};function s(l){return typeof l=="function"}function o(l){return typeof l=="number"}function c(l){return typeof l=="object"&&l!==null}function h(l){return l===void 0}},{}],8:[function(e,n,a){typeof Object.create=="function"?n.exports=function(s,o){s.super_=o,s.prototype=Object.create(o.prototype,{constructor:{value:s,enumerable:!1,writable:!0,configurable:!0}})}:n.exports=function(s,o){s.super_=o;var c=function(){};c.prototype=o.prototype,s.prototype=new c,s.prototype.constructor=s}},{}],9:[function(e,n,a){n.exports=function(r){return!!(r!=null&&(r._isBuffer||r.constructor&&typeof r.constructor.isBuffer=="function"&&r.constructor.isBuffer(r)))}},{}],10:[function(e,n,a){n.exports=Array.isArray||function(r){return Object.prototype.toString.call(r)=="[object Array]"}},{}],11:[function(e,n,a){var r=n.exports={},s=[],o=!1,c,h=-1;function l(){o=!1,c.length?s=c.concat(s):h=-1,s.length&&p()}function p(){if(!o){var E=setTimeout(l);o=!0;for(var A=s.length;A;){for(c=s,s=[];++h<A;)c&&c[h].run();h=-1,A=s.length}c=null,o=!1,clearTimeout(E)}}r.nextTick=function(E){var A=new Array(arguments.length-1);if(arguments.length>1)for(var x=1;x<arguments.length;x++)A[x-1]=arguments[x];s.push(new f(E,A)),s.length===1&&!o&&setTimeout(p,0)};function f(E,A){this.fun=E,this.array=A}f.prototype.run=function(){this.fun.apply(null,this.array)},r.title="browser",r.browser=!0,r.env={},r.argv=[],r.version="",r.versions={};function d(){}r.on=d,r.addListener=d,r.once=d,r.off=d,r.removeListener=d,r.removeAllListeners=d,r.emit=d,r.binding=function(E){throw new Error("process.binding is not supported")},r.cwd=function(){return"/"},r.chdir=function(E){throw new Error("process.chdir is not supported")},r.umask=function(){return 0}},{}],12:[function(e,n,a){n.exports=e("./lib/_stream_duplex.js")},{"./lib/_stream_duplex.js":13}],13:[function(e,n,a){var r=Object.keys||function(x){var w=[];for(var I in x)w.push(I);return w};n.exports=d;var s=e("process-nextick-args"),o=e("core-util-is");o.inherits=e("inherits");var c=e("./_stream_readable"),h=e("./_stream_writable");o.inherits(d,c);for(var l=r(h.prototype),p=0;p<l.length;p++){var f=l[p];d.prototype[f]||(d.prototype[f]=h.prototype[f])}function d(x){if(!(this instanceof d))return new d(x);c.call(this,x),h.call(this,x),x&&x.readable===!1&&(this.readable=!1),x&&x.writable===!1&&(this.writable=!1),this.allowHalfOpen=!0,x&&x.allowHalfOpen===!1&&(this.allowHalfOpen=!1),this.once("end",E)}function E(){this.allowHalfOpen||this._writableState.ended||s(A,this)}function A(x){x.end()}},{"./_stream_readable":15,"./_stream_writable":17,"core-util-is":18,inherits:8,"process-nextick-args":19}],14:[function(e,n,a){n.exports=o;var r=e("./_stream_transform"),s=e("core-util-is");s.inherits=e("inherits"),s.inherits(o,r);function o(c){if(!(this instanceof o))return new o(c);r.call(this,c)}o.prototype._transform=function(c,h,l){l(null,c)}},{"./_stream_transform":16,"core-util-is":18,inherits:8}],15:[function(e,n,a){(function(r){n.exports=w;var s=e("process-nextick-args"),o=e("isarray"),l=e("buffer").Buffer;w.ReadableState=A,e("events");var c=function(F,M){return F.listeners(M).length},h;(function(){try{h=e("stream")}catch{}finally{h||(h=e("events").EventEmitter)}})();var l=e("buffer").Buffer,p=e("core-util-is");p.inherits=e("inherits");var f=e("util"),d;f&&f.debuglog?d=f.debuglog("stream"):d=function(){};var E;p.inherits(w,h);var x;function A(F,M){x=x||e("./_stream_duplex"),F=F||{},this.objectMode=!!F.objectMode,M instanceof x&&(this.objectMode=this.objectMode||!!F.readableObjectMode);var $=F.highWaterMark,nt=this.objectMode?16:16*1024;this.highWaterMark=$||$===0?$:nt,this.highWaterMark=~~this.highWaterMark,this.buffer=[],this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.defaultEncoding=F.defaultEncoding||"utf8",this.ranOut=!1,this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,F.encoding&&(E||(E=e("string_decoder/").StringDecoder),this.decoder=new E(F.encoding),this.encoding=F.encoding)}var x;function w(F){if(x=x||e("./_stream_duplex"),!(this instanceof w))return new w(F);this._readableState=new A(F,this),this.readable=!0,F&&typeof F.read=="function"&&(this._read=F.read),h.call(this)}w.prototype.push=function(F,M){var $=this._readableState;return!$.objectMode&&typeof F=="string"&&(M=M||$.defaultEncoding,M!==$.encoding&&(F=new l(F,M),M="")),I(this,$,F,M,!1)},w.prototype.unshift=function(F){var M=this._readableState;return I(this,M,F,"",!0)},w.prototype.isPaused=function(){return this._readableState.flowing===!1};function I(F,M,$,nt,gt){var Tt=O(M,$);if(Tt)F.emit("error",Tt);else if($===null)M.reading=!1,Q(F,M);else if(M.objectMode||$&&$.length>0)if(M.ended&&!gt){var dt=new Error("stream.push() after EOF");F.emit("error",dt)}else if(M.endEmitted&&gt){var dt=new Error("stream.unshift() after end event");F.emit("error",dt)}else M.decoder&&!gt&&!nt&&($=M.decoder.write($)),gt||(M.reading=!1),M.flowing&&M.length===0&&!M.sync?(F.emit("data",$),F.read(0)):(M.length+=M.objectMode?1:$.length,gt?M.buffer.unshift($):M.buffer.push($),M.needReadable&&Z(F)),tt(F,M);else gt||(M.reading=!1);return D(M)}function D(F){return!F.ended&&(F.needReadable||F.length<F.highWaterMark||F.length===0)}w.prototype.setEncoding=function(F){return E||(E=e("string_decoder/").StringDecoder),this._readableState.decoder=new E(F),this._readableState.encoding=F,this};var T=8388608;function R(F){return F>=T?F=T:(F--,F|=F>>>1,F|=F>>>2,F|=F>>>4,F|=F>>>8,F|=F>>>16,F++),F}function P(F,M){return M.length===0&&M.ended?0:M.objectMode?F===0?0:1:F===null||isNaN(F)?M.flowing&&M.buffer.length?M.buffer[0].length:M.length:F<=0?0:(F>M.highWaterMark&&(M.highWaterMark=R(F)),F>M.length?M.ended?M.length:(M.needReadable=!0,0):F)}w.prototype.read=function(F){d("read",F);var M=this._readableState,$=F;if((typeof F!="number"||F>0)&&(M.emittedReadable=!1),F===0&&M.needReadable&&(M.length>=M.highWaterMark||M.ended))return d("read: emitReadable",M.length,M.ended),M.length===0&&M.ended?ct(this):Z(this),null;if(F=P(F,M),F===0&&M.ended)return M.length===0&&ct(this),null;var nt=M.needReadable;d("need readable",nt),(M.length===0||M.length-F<M.highWaterMark)&&(nt=!0,d("length less than watermark",nt)),(M.ended||M.reading)&&(nt=!1,d("reading or ended",nt)),nt&&(d("do read"),M.reading=!0,M.sync=!0,M.length===0&&(M.needReadable=!0),this._read(M.highWaterMark),M.sync=!1),nt&&!M.reading&&(F=P($,M));var gt;return F>0?gt=C(F,M):gt=null,gt===null&&(M.needReadable=!0,F=0),M.length-=F,M.length===0&&!M.ended&&(M.needReadable=!0),$!==F&&M.ended&&M.length===0&&ct(this),gt!==null&&this.emit("data",gt),gt};function O(F,M){var $=null;return!l.isBuffer(M)&&typeof M!="string"&&M!==null&&M!==void 0&&!F.objectMode&&($=new TypeError("Invalid non-string/buffer chunk")),$}function Q(F,M){if(!M.ended){if(M.decoder){var $=M.decoder.end();$&&$.length&&(M.buffer.push($),M.length+=M.objectMode?1:$.length)}M.ended=!0,Z(F)}}function Z(F){var M=F._readableState;M.needReadable=!1,M.emittedReadable||(d("emitReadable",M.flowing),M.emittedReadable=!0,M.sync?s(K,F):K(F))}function K(F){d("emit readable"),F.emit("readable"),lt(F)}function tt(F,M){M.readingMore||(M.readingMore=!0,s(at,F,M))}function at(F,M){for(var $=M.length;!M.reading&&!M.flowing&&!M.ended&&M.length<M.highWaterMark&&(d("maybeReadMore read 0"),F.read(0),$!==M.length);)$=M.length;M.readingMore=!1}w.prototype._read=function(F){this.emit("error",new Error("not implemented"))},w.prototype.pipe=function(F,M){var $=this,nt=this._readableState;switch(nt.pipesCount){case 0:nt.pipes=F;break;case 1:nt.pipes=[nt.pipes,F];break;default:nt.pipes.push(F);break}nt.pipesCount+=1,d("pipe count=%d opts=%j",nt.pipesCount,M);var gt=(!M||M.end!==!1)&&F!==r.stdout&&F!==r.stderr,Tt=gt?wt:It;nt.endEmitted?s(Tt):$.once("end",Tt),F.on("unpipe",dt);function dt(L){d("onunpipe"),L===$&&It()}function wt(){d("onend"),F.end()}var Et=ht($);F.on("drain",Et);var Bt=!1;function It(){d("cleanup"),F.removeListener("close",_),F.removeListener("finish",v),F.removeListener("drain",Et),F.removeListener("error",Pt),F.removeListener("unpipe",dt),$.removeListener("end",wt),$.removeListener("end",It),$.removeListener("data",Ft),Bt=!0,nt.awaitDrain&&(!F._writableState||F._writableState.needDrain)&&Et()}$.on("data",Ft);function Ft(L){d("ondata");var At=F.write(L);At===!1&&(nt.pipesCount===1&&nt.pipes[0]===F&&$.listenerCount("data")===1&&!Bt&&(d("false write response, pause",$._readableState.awaitDrain),$._readableState.awaitDrain++),$.pause())}function Pt(L){d("onerror",L),W(),F.removeListener("error",Pt),c(F,"error")===0&&F.emit("error",L)}!F._events||!F._events.error?F.on("error",Pt):o(F._events.error)?F._events.error.unshift(Pt):F._events.error=[Pt,F._events.error];function _(){F.removeListener("finish",v),W()}F.once("close",_);function v(){d("onfinish"),F.removeListener("close",_),W()}F.once("finish",v);function W(){d("unpipe"),$.unpipe(F)}return F.emit("pipe",$),nt.flowing||(d("pipe resume"),$.resume()),F};function ht(F){return function(){var M=F._readableState;d("pipeOnDrain",M.awaitDrain),M.awaitDrain&&M.awaitDrain--,M.awaitDrain===0&&c(F,"data")&&(M.flowing=!0,lt(F))}}w.prototype.unpipe=function(F){var M=this._readableState;if(M.pipesCount===0)return this;if(M.pipesCount===1)return F&&F!==M.pipes?this:(F||(F=M.pipes),M.pipes=null,M.pipesCount=0,M.flowing=!1,F&&F.emit("unpipe",this),this);if(!F){var $=M.pipes,nt=M.pipesCount;M.pipes=null,M.pipesCount=0,M.flowing=!1;for(var gt=0;gt<nt;gt++)$[gt].emit("unpipe",this);return this}var gt=mt(M.pipes,F);return gt===-1?this:(M.pipes.splice(gt,1),M.pipesCount-=1,M.pipesCount===1&&(M.pipes=M.pipes[0]),F.emit("unpipe",this),this)},w.prototype.on=function(F,M){var $=h.prototype.on.call(this,F,M);if(F==="data"&&this._readableState.flowing!==!1&&this.resume(),F==="readable"&&this.readable){var nt=this._readableState;nt.readableListening||(nt.readableListening=!0,nt.emittedReadable=!1,nt.needReadable=!0,nt.reading?nt.length&&Z(this):s(z,this))}return $},w.prototype.addListener=w.prototype.on;function z(F){d("readable nexttick read 0"),F.read(0)}w.prototype.resume=function(){var F=this._readableState;return F.flowing||(d("resume"),F.flowing=!0,Y(this,F)),this};function Y(F,M){M.resumeScheduled||(M.resumeScheduled=!0,s(j,F,M))}function j(F,M){M.reading||(d("resume read 0"),F.read(0)),M.resumeScheduled=!1,F.emit("resume"),lt(F),M.flowing&&!M.reading&&F.read(0)}w.prototype.pause=function(){return d("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1&&(d("pause"),this._readableState.flowing=!1,this.emit("pause")),this};function lt(F){var M=F._readableState;if(d("flow",M.flowing),M.flowing)do var $=F.read();while($!==null&&M.flowing)}w.prototype.wrap=function(F){var M=this._readableState,$=!1,nt=this;F.on("end",function(){if(d("wrapped end"),M.decoder&&!M.ended){var dt=M.decoder.end();dt&&dt.length&&nt.push(dt)}nt.push(null)}),F.on("data",function(dt){if(d("wrapped data"),M.decoder&&(dt=M.decoder.write(dt)),!(M.objectMode&&dt==null)&&!(!M.objectMode&&(!dt||!dt.length))){var wt=nt.push(dt);wt||($=!0,F.pause())}});for(var gt in F)this[gt]===void 0&&typeof F[gt]=="function"&&(this[gt]=function(dt){return function(){return F[dt].apply(F,arguments)}}(gt));var Tt=["error","close","destroy","pause","resume"];return bt(Tt,function(dt){F.on(dt,nt.emit.bind(nt,dt))}),nt._read=function(dt){d("wrapped _read",dt),$&&($=!1,F.resume())},nt},w._fromList=C;function C(F,M){var $=M.buffer,nt=M.length,gt=!!M.decoder,Tt=!!M.objectMode,dt;if($.length===0)return null;if(nt===0)dt=null;else if(Tt)dt=$.shift();else if(!F||F>=nt)gt?dt=$.join(""):$.length===1?dt=$[0]:dt=l.concat($,nt),$.length=0;else if(F<$[0].length){var wt=$[0];dt=wt.slice(0,F),$[0]=wt.slice(F)}else if(F===$[0].length)dt=$.shift();else{gt?dt="":dt=new l(F);for(var Et=0,Bt=0,It=$.length;Bt<It&&Et<F;Bt++){var wt=$[0],Ft=Math.min(F-Et,wt.length);gt?dt+=wt.slice(0,Ft):wt.copy(dt,Et,0,Ft),Ft<wt.length?$[0]=wt.slice(Ft):$.shift(),Et+=Ft}}return dt}function ct(F){var M=F._readableState;if(M.length>0)throw new Error("endReadable called on non-empty stream");M.endEmitted||(M.ended=!0,s(xt,M,F))}function xt(F,M){!F.endEmitted&&F.length===0&&(F.endEmitted=!0,M.readable=!1,M.emit("end"))}function bt(F,M){for(var $=0,nt=F.length;$<nt;$++)M(F[$],$)}function mt(F,M){for(var $=0,nt=F.length;$<nt;$++)if(F[$]===M)return $;return-1}}).call(this,e("_process"))},{"./_stream_duplex":13,_process:11,buffer:3,"core-util-is":18,events:7,inherits:8,isarray:10,"process-nextick-args":19,"string_decoder/":26,util:2}],16:[function(e,n,a){n.exports=h;var r=e("./_stream_duplex"),s=e("core-util-is");s.inherits=e("inherits"),s.inherits(h,r);function o(p){this.afterTransform=function(f,d){return c(p,f,d)},this.needTransform=!1,this.transforming=!1,this.writecb=null,this.writechunk=null}function c(p,f,d){var E=p._transformState;E.transforming=!1;var A=E.writecb;if(!A)return p.emit("error",new Error("no writecb in Transform class"));E.writechunk=null,E.writecb=null,d!=null&&p.push(d),A&&A(f);var x=p._readableState;x.reading=!1,(x.needReadable||x.length<x.highWaterMark)&&p._read(x.highWaterMark)}function h(p){if(!(this instanceof h))return new h(p);r.call(this,p),this._transformState=new o(this);var f=this;this._readableState.needReadable=!0,this._readableState.sync=!1,p&&(typeof p.transform=="function"&&(this._transform=p.transform),typeof p.flush=="function"&&(this._flush=p.flush)),this.once("prefinish",function(){typeof this._flush=="function"?this._flush(function(d){l(f,d)}):l(f)})}h.prototype.push=function(p,f){return this._transformState.needTransform=!1,r.prototype.push.call(this,p,f)},h.prototype._transform=function(p,f,d){throw new Error("not implemented")},h.prototype._write=function(p,f,d){var E=this._transformState;if(E.writecb=d,E.writechunk=p,E.writeencoding=f,!E.transforming){var A=this._readableState;(E.needTransform||A.needReadable||A.length<A.highWaterMark)&&this._read(A.highWaterMark)}},h.prototype._read=function(p){var f=this._transformState;f.writechunk!==null&&f.writecb&&!f.transforming?(f.transforming=!0,this._transform(f.writechunk,f.writeencoding,f.afterTransform)):f.needTransform=!0};function l(p,f){if(f)return p.emit("error",f);var d=p._writableState,E=p._transformState;if(d.length)throw new Error("calling transform done when ws.length != 0");if(E.transforming)throw new Error("calling transform done when still transforming");return p.push(null)}},{"./_stream_duplex":13,"core-util-is":18,inherits:8}],17:[function(e,n,a){n.exports=E;var r=e("process-nextick-args"),h=e("buffer").Buffer;E.WritableState=f;var s=e("core-util-is");s.inherits=e("inherits");var o={deprecate:e("util-deprecate")},c;(function(){try{c=e("stream")}catch{}finally{c||(c=e("events").EventEmitter)}})();var h=e("buffer").Buffer;s.inherits(E,c);function l(){}function p(z,Y,j){this.chunk=z,this.encoding=Y,this.callback=j,this.next=null}var d;function f(z,Y){d=d||e("./_stream_duplex"),z=z||{},this.objectMode=!!z.objectMode,Y instanceof d&&(this.objectMode=this.objectMode||!!z.writableObjectMode);var j=z.highWaterMark,lt=this.objectMode?16:16*1024;this.highWaterMark=j||j===0?j:lt,this.highWaterMark=~~this.highWaterMark,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1;var C=z.decodeStrings===!1;this.decodeStrings=!C,this.defaultEncoding=z.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(ct){P(Y,ct)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1}f.prototype.getBuffer=function(){for(var Y=this.bufferedRequest,j=[];Y;)j.push(Y),Y=Y.next;return j},function(){try{Object.defineProperty(f.prototype,"buffer",{get:o.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.")})}catch{}}();var d;function E(z){if(d=d||e("./_stream_duplex"),!(this instanceof E)&&!(this instanceof d))return new E(z);this._writableState=new f(z,this),this.writable=!0,z&&(typeof z.write=="function"&&(this._write=z.write),typeof z.writev=="function"&&(this._writev=z.writev)),c.call(this)}E.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe. Not readable."))};function A(z,Y){var j=new Error("write after end");z.emit("error",j),r(Y,j)}function x(z,Y,j,lt){var C=!0;if(!h.isBuffer(j)&&typeof j!="string"&&j!==null&&j!==void 0&&!Y.objectMode){var ct=new TypeError("Invalid non-string/buffer chunk");z.emit("error",ct),r(lt,ct),C=!1}return C}E.prototype.write=function(z,Y,j){var lt=this._writableState,C=!1;return typeof Y=="function"&&(j=Y,Y=null),h.isBuffer(z)?Y="buffer":Y||(Y=lt.defaultEncoding),typeof j!="function"&&(j=l),lt.ended?A(this,j):x(this,lt,z,j)&&(lt.pendingcb++,C=I(this,lt,z,Y,j)),C},E.prototype.cork=function(){var z=this._writableState;z.corked++},E.prototype.uncork=function(){var z=this._writableState;z.corked&&(z.corked--,!z.writing&&!z.corked&&!z.finished&&!z.bufferProcessing&&z.bufferedRequest&&Z(this,z))},E.prototype.setDefaultEncoding=function(Y){if(typeof Y=="string"&&(Y=Y.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((Y+"").toLowerCase())>-1))throw new TypeError("Unknown encoding: "+Y);this._writableState.defaultEncoding=Y};function w(z,Y,j){return!z.objectMode&&z.decodeStrings!==!1&&typeof Y=="string"&&(Y=new h(Y,j)),Y}function I(z,Y,j,lt,C){j=w(Y,j,lt),h.isBuffer(j)&&(lt="buffer");var ct=Y.objectMode?1:j.length;Y.length+=ct;var xt=Y.length<Y.highWaterMark;if(xt||(Y.needDrain=!0),Y.writing||Y.corked){var bt=Y.lastBufferedRequest;Y.lastBufferedRequest=new p(j,lt,C),bt?bt.next=Y.lastBufferedRequest:Y.bufferedRequest=Y.lastBufferedRequest}else D(z,Y,!1,ct,j,lt,C);return xt}function D(z,Y,j,lt,C,ct,xt){Y.writelen=lt,Y.writecb=xt,Y.writing=!0,Y.sync=!0,j?z._writev(C,Y.onwrite):z._write(C,ct,Y.onwrite),Y.sync=!1}function T(z,Y,j,lt,C){--Y.pendingcb,j?r(C,lt):C(lt),z._writableState.errorEmitted=!0,z.emit("error",lt)}function R(z){z.writing=!1,z.writecb=null,z.length-=z.writelen,z.writelen=0}function P(z,Y){var j=z._writableState,lt=j.sync,C=j.writecb;if(R(j),Y)T(z,j,lt,Y,C);else{var ct=K(j);!ct&&!j.corked&&!j.bufferProcessing&&j.bufferedRequest&&Z(z,j),lt?r(O,z,j,ct,C):O(z,j,ct,C)}}function O(z,Y,j,lt){j||Q(z,Y),Y.pendingcb--,lt(),at(z,Y)}function Q(z,Y){Y.length===0&&Y.needDrain&&(Y.needDrain=!1,z.emit("drain"))}function Z(z,Y){Y.bufferProcessing=!0;var j=Y.bufferedRequest;if(z._writev&&j&&j.next){for(var lt=[],C=[];j;)C.push(j.callback),lt.push(j),j=j.next;Y.pendingcb++,Y.lastBufferedRequest=null,D(z,Y,!0,Y.length,lt,"",function(F){for(var M=0;M<C.length;M++)Y.pendingcb--,C[M](F)})}else{for(;j;){var ct=j.chunk,xt=j.encoding,bt=j.callback,mt=Y.objectMode?1:ct.length;if(D(z,Y,!1,mt,ct,xt,bt),j=j.next,Y.writing)break}j===null&&(Y.lastBufferedRequest=null)}Y.bufferedRequest=j,Y.bufferProcessing=!1}E.prototype._write=function(z,Y,j){j(new Error("not implemented"))},E.prototype._writev=null,E.prototype.end=function(z,Y,j){var lt=this._writableState;typeof z=="function"?(j=z,z=null,Y=null):typeof Y=="function"&&(j=Y,Y=null),z!=null&&this.write(z,Y),lt.corked&&(lt.corked=1,this.uncork()),!lt.ending&&!lt.finished&&ht(this,lt,j)};function K(z){return z.ending&&z.length===0&&z.bufferedRequest===null&&!z.finished&&!z.writing}function tt(z,Y){Y.prefinished||(Y.prefinished=!0,z.emit("prefinish"))}function at(z,Y){var j=K(Y);return j&&(Y.pendingcb===0?(tt(z,Y),Y.finished=!0,z.emit("finish")):tt(z,Y)),j}function ht(z,Y,j){Y.ending=!0,at(z,Y),j&&(Y.finished?r(j):z.once("finish",j)),Y.ended=!0}},{"./_stream_duplex":13,buffer:3,"core-util-is":18,events:7,inherits:8,"process-nextick-args":19,"util-deprecate":20}],18:[function(e,n,a){(function(r){function s(R){return Array.isArray?Array.isArray(R):T(R)==="[object Array]"}a.isArray=s;function o(R){return typeof R=="boolean"}a.isBoolean=o;function c(R){return R===null}a.isNull=c;function h(R){return R==null}a.isNullOrUndefined=h;function l(R){return typeof R=="number"}a.isNumber=l;function p(R){return typeof R=="string"}a.isString=p;function f(R){return typeof R=="symbol"}a.isSymbol=f;function d(R){return R===void 0}a.isUndefined=d;function E(R){return T(R)==="[object RegExp]"}a.isRegExp=E;function A(R){return typeof R=="object"&&R!==null}a.isObject=A;function x(R){return T(R)==="[object Date]"}a.isDate=x;function w(R){return T(R)==="[object Error]"||R instanceof Error}a.isError=w;function I(R){return typeof R=="function"}a.isFunction=I;function D(R){return R===null||typeof R=="boolean"||typeof R=="number"||typeof R=="string"||typeof R=="symbol"||typeof R=="undefined"}a.isPrimitive=D,a.isBuffer=r.isBuffer;function T(R){return Object.prototype.toString.call(R)}}).call(this,{isBuffer:e("../../../../insert-module-globals/node_modules/is-buffer/index.js")})},{"../../../../insert-module-globals/node_modules/is-buffer/index.js":9}],19:[function(e,n,a){(function(r){!r.version||r.version.indexOf("v0.")===0||r.version.indexOf("v1.")===0&&r.version.indexOf("v1.8.")!==0?n.exports=s:n.exports=r.nextTick;function s(o){for(var c=new Array(arguments.length-1),h=0;h<c.length;)c[h++]=arguments[h];r.nextTick(function(){o.apply(null,c)})}}).call(this,e("_process"))},{_process:11}],20:[function(e,n,a){(function(r){n.exports=s;function s(c,h){if(o("noDeprecation"))return c;var l=!1;function p(){if(!l){if(o("throwDeprecation"))throw new Error(h);o("traceDeprecation")?console.trace(h):console.warn(h),l=!0}return c.apply(this,arguments)}return p}function o(c){try{if(!r.localStorage)return!1}catch{return!1}var h=r.localStorage[c];return h==null?!1:String(h).toLowerCase()==="true"}}).call(this,typeof Ci!="undefined"?Ci:typeof self!="undefined"?self:typeof window!="undefined"?window:{})},{}],21:[function(e,n,a){n.exports=e("./lib/_stream_passthrough.js")},{"./lib/_stream_passthrough.js":14}],22:[function(e,n,a){var r=function(){try{return e("stream")}catch{}}();a=n.exports=e("./lib/_stream_readable.js"),a.Stream=r||a,a.Readable=a,a.Writable=e("./lib/_stream_writable.js"),a.Duplex=e("./lib/_stream_duplex.js"),a.Transform=e("./lib/_stream_transform.js"),a.PassThrough=e("./lib/_stream_passthrough.js")},{"./lib/_stream_duplex.js":13,"./lib/_stream_passthrough.js":14,"./lib/_stream_readable.js":15,"./lib/_stream_transform.js":16,"./lib/_stream_writable.js":17}],23:[function(e,n,a){n.exports=e("./lib/_stream_transform.js")},{"./lib/_stream_transform.js":16}],24:[function(e,n,a){n.exports=e("./lib/_stream_writable.js")},{"./lib/_stream_writable.js":17}],25:[function(e,n,a){n.exports=o;var r=e("events").EventEmitter,s=e("inherits");s(o,r),o.Readable=e("readable-stream/readable.js"),o.Writable=e("readable-stream/writable.js"),o.Duplex=e("readable-stream/duplex.js"),o.Transform=e("readable-stream/transform.js"),o.PassThrough=e("readable-stream/passthrough.js"),o.Stream=o;function o(){r.call(this)}o.prototype.pipe=function(c,h){var l=this;function p(I){c.writable&&c.write(I)===!1&&l.pause&&l.pause()}l.on("data",p);function f(){l.readable&&l.resume&&l.resume()}c.on("drain",f),!c._isStdio&&(!h||h.end!==!1)&&(l.on("end",E),l.on("close",A));var d=!1;function E(){d||(d=!0,c.end())}function A(){d||(d=!0,typeof c.destroy=="function"&&c.destroy())}function x(I){if(w(),r.listenerCount(this,"error")===0)throw I}l.on("error",x),c.on("error",x);function w(){l.removeListener("data",p),c.removeListener("drain",f),l.removeListener("end",E),l.removeListener("close",A),l.removeListener("error",x),c.removeListener("error",x),l.removeListener("end",w),l.removeListener("close",w),c.removeListener("close",w)}return l.on("end",w),l.on("close",w),c.on("close",w),c.emit("pipe",l),c}},{events:7,inherits:8,"readable-stream/duplex.js":12,"readable-stream/passthrough.js":21,"readable-stream/readable.js":22,"readable-stream/transform.js":23,"readable-stream/writable.js":24}],26:[function(e,n,a){var r=e("buffer").Buffer,s=r.isEncoding||function(f){switch(f&&f.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function o(f){if(f&&!s(f))throw new Error("Unknown encoding: "+f)}var c=a.StringDecoder=function(f){switch(this.encoding=(f||"utf8").toLowerCase().replace(/[-_]/,""),o(f),this.encoding){case"utf8":this.surrogateSize=3;break;case"ucs2":case"utf16le":this.surrogateSize=2,this.detectIncompleteChar=l;break;case"base64":this.surrogateSize=3,this.detectIncompleteChar=p;break;default:this.write=h;return}this.charBuffer=new r(6),this.charReceived=0,this.charLength=0};c.prototype.write=function(f){for(var d="";this.charLength;){var E=f.length>=this.charLength-this.charReceived?this.charLength-this.charReceived:f.length;if(f.copy(this.charBuffer,this.charReceived,0,E),this.charReceived+=E,this.charReceived<this.charLength)return"";f=f.slice(E,f.length),d=this.charBuffer.slice(0,this.charLength).toString(this.encoding);var x=d.charCodeAt(d.length-1);if(x>=55296&&x<=56319){this.charLength+=this.surrogateSize,d="";continue}if(this.charReceived=this.charLength=0,f.length===0)return d;break}this.detectIncompleteChar(f);var A=f.length;this.charLength&&(f.copy(this.charBuffer,0,f.length-this.charReceived,A),A-=this.charReceived),d+=f.toString(this.encoding,0,A);var A=d.length-1,x=d.charCodeAt(A);if(x>=55296&&x<=56319){var w=this.surrogateSize;return this.charLength+=w,this.charReceived+=w,this.charBuffer.copy(this.charBuffer,w,0,w),f.copy(this.charBuffer,0,0,w),d.substring(0,A)}return d},c.prototype.detectIncompleteChar=function(f){for(var d=f.length>=3?3:f.length;d>0;d--){var E=f[f.length-d];if(d==1&&E>>5==6){this.charLength=2;break}if(d<=2&&E>>4==14){this.charLength=3;break}if(d<=3&&E>>3==30){this.charLength=4;break}}this.charReceived=d},c.prototype.end=function(f){var d="";if(f&&f.length&&(d=this.write(f)),this.charReceived){var E=this.charReceived,A=this.charBuffer,x=this.encoding;d+=A.slice(0,E).toString(x)}return d};function h(f){return f.toString(this.encoding)}function l(f){this.charReceived=f.length%2,this.charLength=this.charReceived?2:0}function p(f){this.charReceived=f.length%3,this.charLength=this.charReceived?3:0}},{buffer:3}],27:[function(e,n,a){var r=e("./lib/utils/common").assign,s=e("./lib/deflate"),o=e("./lib/inflate"),c=e("./lib/zlib/constants"),h={};r(h,s,o,c),n.exports=h},{"./lib/deflate":28,"./lib/inflate":29,"./lib/utils/common":30,"./lib/zlib/constants":33}],28:[function(e,n,a){var r=e("./zlib/deflate"),s=e("./utils/common"),o=e("./utils/strings"),c=e("./zlib/messages"),h=e("./zlib/zstream"),l=Object.prototype.toString,p=0,f=4,d=0,E=1,A=2,x=-1,w=0,I=8;function D(O){if(!(this instanceof D))return new D(O);this.options=s.assign({level:x,method:I,chunkSize:16384,windowBits:15,memLevel:8,strategy:w,to:""},O||{});var Q=this.options;Q.raw&&Q.windowBits>0?Q.windowBits=-Q.windowBits:Q.gzip&&Q.windowBits>0&&Q.windowBits<16&&(Q.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new h,this.strm.avail_out=0;var Z=r.deflateInit2(this.strm,Q.level,Q.method,Q.windowBits,Q.memLevel,Q.strategy);if(Z!==d)throw new Error(c[Z]);Q.header&&r.deflateSetHeader(this.strm,Q.header)}D.prototype.push=function(O,Q){var Z=this.strm,K=this.options.chunkSize,tt,at;if(this.ended)return!1;at=Q===~~Q?Q:Q===!0?f:p,typeof O=="string"?Z.input=o.string2buf(O):l.call(O)==="[object ArrayBuffer]"?Z.input=new Uint8Array(O):Z.input=O,Z.next_in=0,Z.avail_in=Z.input.length;do{if(Z.avail_out===0&&(Z.output=new s.Buf8(K),Z.next_out=0,Z.avail_out=K),tt=r.deflate(Z,at),tt!==E&&tt!==d)return this.onEnd(tt),this.ended=!0,!1;(Z.avail_out===0||Z.avail_in===0&&(at===f||at===A))&&(this.options.to==="string"?this.onData(o.buf2binstring(s.shrinkBuf(Z.output,Z.next_out))):this.onData(s.shrinkBuf(Z.output,Z.next_out)))}while((Z.avail_in>0||Z.avail_out===0)&&tt!==E);return at===f?(tt=r.deflateEnd(this.strm),this.onEnd(tt),this.ended=!0,tt===d):(at===A&&(this.onEnd(d),Z.avail_out=0),!0)},D.prototype.onData=function(O){this.chunks.push(O)},D.prototype.onEnd=function(O){O===d&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=s.flattenChunks(this.chunks)),this.chunks=[],this.err=O,this.msg=this.strm.msg};function T(O,Q){var Z=new D(Q);if(Z.push(O,!0),Z.err)throw Z.msg;return Z.result}function R(O,Q){return Q=Q||{},Q.raw=!0,T(O,Q)}function P(O,Q){return Q=Q||{},Q.gzip=!0,T(O,Q)}a.Deflate=D,a.deflate=T,a.deflateRaw=R,a.gzip=P},{"./utils/common":30,"./utils/strings":31,"./zlib/deflate":35,"./zlib/messages":40,"./zlib/zstream":42}],29:[function(e,n,a){var r=e("./zlib/inflate"),s=e("./utils/common"),o=e("./utils/strings"),c=e("./zlib/constants"),h=e("./zlib/messages"),l=e("./zlib/zstream"),p=e("./zlib/gzheader"),f=Object.prototype.toString;function d(x){if(!(this instanceof d))return new d(x);this.options=s.assign({chunkSize:16384,windowBits:0,to:""},x||{});var w=this.options;w.raw&&w.windowBits>=0&&w.windowBits<16&&(w.windowBits=-w.windowBits,w.windowBits===0&&(w.windowBits=-15)),w.windowBits>=0&&w.windowBits<16&&!(x&&x.windowBits)&&(w.windowBits+=32),w.windowBits>15&&w.windowBits<48&&(w.windowBits&15)===0&&(w.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new l,this.strm.avail_out=0;var I=r.inflateInit2(this.strm,w.windowBits);if(I!==c.Z_OK)throw new Error(h[I]);this.header=new p,r.inflateGetHeader(this.strm,this.header)}d.prototype.push=function(x,w){var I=this.strm,D=this.options.chunkSize,T,R,P,O,Q,Z=!1;if(this.ended)return!1;R=w===~~w?w:w===!0?c.Z_FINISH:c.Z_NO_FLUSH,typeof x=="string"?I.input=o.binstring2buf(x):f.call(x)==="[object ArrayBuffer]"?I.input=new Uint8Array(x):I.input=x,I.next_in=0,I.avail_in=I.input.length;do{if(I.avail_out===0&&(I.output=new s.Buf8(D),I.next_out=0,I.avail_out=D),T=r.inflate(I,c.Z_NO_FLUSH),T===c.Z_BUF_ERROR&&Z===!0&&(T=c.Z_OK,Z=!1),T!==c.Z_STREAM_END&&T!==c.Z_OK)return this.onEnd(T),this.ended=!0,!1;I.next_out&&(I.avail_out===0||T===c.Z_STREAM_END||I.avail_in===0&&(R===c.Z_FINISH||R===c.Z_SYNC_FLUSH))&&(this.options.to==="string"?(P=o.utf8border(I.output,I.next_out),O=I.next_out-P,Q=o.buf2string(I.output,P),I.next_out=O,I.avail_out=D-O,O&&s.arraySet(I.output,I.output,P,O,0),this.onData(Q)):this.onData(s.shrinkBuf(I.output,I.next_out))),I.avail_in===0&&I.avail_out===0&&(Z=!0)}while((I.avail_in>0||I.avail_out===0)&&T!==c.Z_STREAM_END);return T===c.Z_STREAM_END&&(R=c.Z_FINISH),R===c.Z_FINISH?(T=r.inflateEnd(this.strm),this.onEnd(T),this.ended=!0,T===c.Z_OK):(R===c.Z_SYNC_FLUSH&&(this.onEnd(c.Z_OK),I.avail_out=0),!0)},d.prototype.onData=function(x){this.chunks.push(x)},d.prototype.onEnd=function(x){x===c.Z_OK&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=s.flattenChunks(this.chunks)),this.chunks=[],this.err=x,this.msg=this.strm.msg};function E(x,w){var I=new d(w);if(I.push(x,!0),I.err)throw I.msg;return I.result}function A(x,w){return w=w||{},w.raw=!0,E(x,w)}a.Inflate=d,a.inflate=E,a.inflateRaw=A,a.ungzip=E},{"./utils/common":30,"./utils/strings":31,"./zlib/constants":33,"./zlib/gzheader":36,"./zlib/inflate":38,"./zlib/messages":40,"./zlib/zstream":42}],30:[function(e,n,a){var r=typeof Uint8Array!="undefined"&&typeof Uint16Array!="undefined"&&typeof Int32Array!="undefined";a.assign=function(c){for(var h=Array.prototype.slice.call(arguments,1);h.length;){var l=h.shift();if(!!l){if(typeof l!="object")throw new TypeError(l+"must be non-object");for(var p in l)l.hasOwnProperty(p)&&(c[p]=l[p])}}return c},a.shrinkBuf=function(c,h){return c.length===h?c:c.subarray?c.subarray(0,h):(c.length=h,c)};var s={arraySet:function(c,h,l,p,f){if(h.subarray&&c.subarray){c.set(h.subarray(l,l+p),f);return}for(var d=0;d<p;d++)c[f+d]=h[l+d]},flattenChunks:function(c){var h,l,p,f,d,E;for(p=0,h=0,l=c.length;h<l;h++)p+=c[h].length;for(E=new Uint8Array(p),f=0,h=0,l=c.length;h<l;h++)d=c[h],E.set(d,f),f+=d.length;return E}},o={arraySet:function(c,h,l,p,f){for(var d=0;d<p;d++)c[f+d]=h[l+d]},flattenChunks:function(c){return[].concat.apply([],c)}};a.setTyped=function(c){c?(a.Buf8=Uint8Array,a.Buf16=Uint16Array,a.Buf32=Int32Array,a.assign(a,s)):(a.Buf8=Array,a.Buf16=Array,a.Buf32=Array,a.assign(a,o))},a.setTyped(r)},{}],31:[function(e,n,a){var r=e("./common"),s=!0,o=!0;try{String.fromCharCode.apply(null,[0])}catch{s=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{o=!1}for(var c=new r.Buf8(256),h=0;h<256;h++)c[h]=h>=252?6:h>=248?5:h>=240?4:h>=224?3:h>=192?2:1;c[254]=c[254]=1,a.string2buf=function(p){var f,d,E,A,x,w=p.length,I=0;for(A=0;A<w;A++)d=p.charCodeAt(A),(d&64512)===55296&&A+1<w&&(E=p.charCodeAt(A+1),(E&64512)===56320&&(d=65536+(d-55296<<10)+(E-56320),A++)),I+=d<128?1:d<2048?2:d<65536?3:4;for(f=new r.Buf8(I),x=0,A=0;x<I;A++)d=p.charCodeAt(A),(d&64512)===55296&&A+1<w&&(E=p.charCodeAt(A+1),(E&64512)===56320&&(d=65536+(d-55296<<10)+(E-56320),A++)),d<128?f[x++]=d:d<2048?(f[x++]=192|d>>>6,f[x++]=128|d&63):d<65536?(f[x++]=224|d>>>12,f[x++]=128|d>>>6&63,f[x++]=128|d&63):(f[x++]=240|d>>>18,f[x++]=128|d>>>12&63,f[x++]=128|d>>>6&63,f[x++]=128|d&63);return f};function l(p,f){if(f<65537&&(p.subarray&&o||!p.subarray&&s))return String.fromCharCode.apply(null,r.shrinkBuf(p,f));for(var d="",E=0;E<f;E++)d+=String.fromCharCode(p[E]);return d}a.buf2binstring=function(p){return l(p,p.length)},a.binstring2buf=function(p){for(var f=new r.Buf8(p.length),d=0,E=f.length;d<E;d++)f[d]=p.charCodeAt(d);return f},a.buf2string=function(p,f){var d,E,A,x,w=f||p.length,I=new Array(w*2);for(E=0,d=0;d<w;){if(A=p[d++],A<128){I[E++]=A;continue}if(x=c[A],x>4){I[E++]=65533,d+=x-1;continue}for(A&=x===2?31:x===3?15:7;x>1&&d<w;)A=A<<6|p[d++]&63,x--;if(x>1){I[E++]=65533;continue}A<65536?I[E++]=A:(A-=65536,I[E++]=55296|A>>10&1023,I[E++]=56320|A&1023)}return l(I,E)},a.utf8border=function(p,f){var d;for(f=f||p.length,f>p.length&&(f=p.length),d=f-1;d>=0&&(p[d]&192)===128;)d--;return d<0||d===0?f:d+c[p[d]]>f?d:f}},{"./common":30}],32:[function(e,n,a){function r(s,o,c,h){for(var l=s&65535|0,p=s>>>16&65535|0,f=0;c!==0;){f=c>2e3?2e3:c,c-=f;do l=l+o[h++]|0,p=p+l|0;while(--f);l%=65521,p%=65521}return l|p<<16|0}n.exports=r},{}],33:[function(e,n,a){n.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],34:[function(e,n,a){function r(){for(var c,h=[],l=0;l<256;l++){c=l;for(var p=0;p<8;p++)c=c&1?3988292384^c>>>1:c>>>1;h[l]=c}return h}var s=r();function o(c,h,l,p){var f=s,d=p+l;c^=-1;for(var E=p;E<d;E++)c=c>>>8^f[(c^h[E])&255];return c^-1}n.exports=o},{}],35:[function(e,n,a){var r=e("../utils/common"),s=e("./trees"),o=e("./adler32"),c=e("./crc32"),h=e("./messages"),l=0,p=1,f=3,d=4,E=5,A=0,x=1,w=-2,I=-3,D=-5,T=-1,R=1,P=2,O=3,Q=4,Z=0,K=2,tt=8,at=9,ht=15,z=8,Y=29,j=256,lt=j+1+Y,C=30,ct=19,xt=2*lt+1,bt=15,mt=3,F=258,M=F+mt+1,$=32,nt=42,gt=69,Tt=73,dt=91,wt=103,Et=113,Bt=666,It=1,Ft=2,Pt=3,_=4,v=3;function W(u,H){return u.msg=h[H],H}function L(u){return(u<<1)-(u>4?9:0)}function At(u){for(var H=u.length;--H>=0;)u[H]=0}function B(u){var H=u.state,X=H.pending;X>u.avail_out&&(X=u.avail_out),X!==0&&(r.arraySet(u.output,H.pending_buf,H.pending_out,X,u.next_out),u.next_out+=X,H.pending_out+=X,u.total_out+=X,u.avail_out-=X,H.pending-=X,H.pending===0&&(H.pending_out=0))}function g(u,H){s._tr_flush_block(u,u.block_start>=0?u.block_start:-1,u.strstart-u.block_start,H),u.block_start=u.strstart,B(u.strm)}function m(u,H){u.pending_buf[u.pending++]=H}function N(u,H){u.pending_buf[u.pending++]=H>>>8&255,u.pending_buf[u.pending++]=H&255}function G(u,H,X,S){var k=u.avail_in;return k>S&&(k=S),k===0?0:(u.avail_in-=k,r.arraySet(H,u.input,u.next_in,k,X),u.state.wrap===1?u.adler=o(u.adler,H,k,X):u.state.wrap===2&&(u.adler=c(u.adler,H,k,X)),u.next_in+=k,u.total_in+=k,k)}function J(u,H){var X=u.max_chain_length,S=u.strstart,k,V,vt=u.prev_length,ft=u.nice_match,ut=u.strstart>u.w_size-M?u.strstart-(u.w_size-M):0,Nt=u.window,Ii=u.w_mask,Lt=u.prev,St=u.strstart+F,Zt=Nt[S+vt-1],qt=Nt[S+vt];u.prev_length>=u.good_match&&(X>>=2),ft>u.lookahead&&(ft=u.lookahead);do if(k=H,!(Nt[k+vt]!==qt||Nt[k+vt-1]!==Zt||Nt[k]!==Nt[S]||Nt[++k]!==Nt[S+1])){S+=2,k++;do;while(Nt[++S]===Nt[++k]&&Nt[++S]===Nt[++k]&&Nt[++S]===Nt[++k]&&Nt[++S]===Nt[++k]&&Nt[++S]===Nt[++k]&&Nt[++S]===Nt[++k]&&Nt[++S]===Nt[++k]&&Nt[++S]===Nt[++k]&&S<St);if(V=F-(St-S),S=St-F,V>vt){if(u.match_start=H,vt=V,V>=ft)break;Zt=Nt[S+vt-1],qt=Nt[S+vt]}}while((H=Lt[H&Ii])>ut&&--X!==0);return vt<=u.lookahead?vt:u.lookahead}function rt(u){var H=u.w_size,X,S,k,V,vt;do{if(V=u.window_size-u.lookahead-u.strstart,u.strstart>=H+(H-M)){r.arraySet(u.window,u.window,H,H,0),u.match_start-=H,u.strstart-=H,u.block_start-=H,S=u.hash_size,X=S;do k=u.head[--X],u.head[X]=k>=H?k-H:0;while(--S);S=H,X=S;do k=u.prev[--X],u.prev[X]=k>=H?k-H:0;while(--S);V+=H}if(u.strm.avail_in===0)break;if(S=G(u.strm,u.window,u.strstart+u.lookahead,V),u.lookahead+=S,u.lookahead+u.insert>=mt)for(vt=u.strstart-u.insert,u.ins_h=u.window[vt],u.ins_h=(u.ins_h<<u.hash_shift^u.window[vt+1])&u.hash_mask;u.insert&&(u.ins_h=(u.ins_h<<u.hash_shift^u.window[vt+mt-1])&u.hash_mask,u.prev[vt&u.w_mask]=u.head[u.ins_h],u.head[u.ins_h]=vt,vt++,u.insert--,!(u.lookahead+u.insert<mt)););}while(u.lookahead<M&&u.strm.avail_in!==0)}function _t(u,H){var X=65535;for(X>u.pending_buf_size-5&&(X=u.pending_buf_size-5);;){if(u.lookahead<=1){if(rt(u),u.lookahead===0&&H===l)return It;if(u.lookahead===0)break}u.strstart+=u.lookahead,u.lookahead=0;var S=u.block_start+X;if((u.strstart===0||u.strstart>=S)&&(u.lookahead=u.strstart-S,u.strstart=S,g(u,!1),u.strm.avail_out===0)||u.strstart-u.block_start>=u.w_size-M&&(g(u,!1),u.strm.avail_out===0))return It}return u.insert=0,H===d?(g(u,!0),u.strm.avail_out===0?Pt:_):(u.strstart>u.block_start&&(g(u,!1),u.strm.avail_out===0),It)}function Rt(u,H){for(var X,S;;){if(u.lookahead<M){if(rt(u),u.lookahead<M&&H===l)return It;if(u.lookahead===0)break}if(X=0,u.lookahead>=mt&&(u.ins_h=(u.ins_h<<u.hash_shift^u.window[u.strstart+mt-1])&u.hash_mask,X=u.prev[u.strstart&u.w_mask]=u.head[u.ins_h],u.head[u.ins_h]=u.strstart),X!==0&&u.strstart-X<=u.w_size-M&&(u.match_length=J(u,X)),u.match_length>=mt)if(S=s._tr_tally(u,u.strstart-u.match_start,u.match_length-mt),u.lookahead-=u.match_length,u.match_length<=u.max_lazy_match&&u.lookahead>=mt){u.match_length--;do u.strstart++,u.ins_h=(u.ins_h<<u.hash_shift^u.window[u.strstart+mt-1])&u.hash_mask,X=u.prev[u.strstart&u.w_mask]=u.head[u.ins_h],u.head[u.ins_h]=u.strstart;while(--u.match_length!==0);u.strstart++}else u.strstart+=u.match_length,u.match_length=0,u.ins_h=u.window[u.strstart],u.ins_h=(u.ins_h<<u.hash_shift^u.window[u.strstart+1])&u.hash_mask;else S=s._tr_tally(u,0,u.window[u.strstart]),u.lookahead--,u.strstart++;if(S&&(g(u,!1),u.strm.avail_out===0))return It}return u.insert=u.strstart<mt-1?u.strstart:mt-1,H===d?(g(u,!0),u.strm.avail_out===0?Pt:_):u.last_lit&&(g(u,!1),u.strm.avail_out===0)?It:Ft}function Ut(u,H){for(var X,S,k;;){if(u.lookahead<M){if(rt(u),u.lookahead<M&&H===l)return It;if(u.lookahead===0)break}if(X=0,u.lookahead>=mt&&(u.ins_h=(u.ins_h<<u.hash_shift^u.window[u.strstart+mt-1])&u.hash_mask,X=u.prev[u.strstart&u.w_mask]=u.head[u.ins_h],u.head[u.ins_h]=u.strstart),u.prev_length=u.match_length,u.prev_match=u.match_start,u.match_length=mt-1,X!==0&&u.prev_length<u.max_lazy_match&&u.strstart-X<=u.w_size-M&&(u.match_length=J(u,X),u.match_length<=5&&(u.strategy===R||u.match_length===mt&&u.strstart-u.match_start>4096)&&(u.match_length=mt-1)),u.prev_length>=mt&&u.match_length<=u.prev_length){k=u.strstart+u.lookahead-mt,S=s._tr_tally(u,u.strstart-1-u.prev_match,u.prev_length-mt),u.lookahead-=u.prev_length-1,u.prev_length-=2;do++u.strstart<=k&&(u.ins_h=(u.ins_h<<u.hash_shift^u.window[u.strstart+mt-1])&u.hash_mask,X=u.prev[u.strstart&u.w_mask]=u.head[u.ins_h],u.head[u.ins_h]=u.strstart);while(--u.prev_length!==0);if(u.match_available=0,u.match_length=mt-1,u.strstart++,S&&(g(u,!1),u.strm.avail_out===0))return It}else if(u.match_available){if(S=s._tr_tally(u,0,u.window[u.strstart-1]),S&&g(u,!1),u.strstart++,u.lookahead--,u.strm.avail_out===0)return It}else u.match_available=1,u.strstart++,u.lookahead--}return u.match_available&&(S=s._tr_tally(u,0,u.window[u.strstart-1]),u.match_available=0),u.insert=u.strstart<mt-1?u.strstart:mt-1,H===d?(g(u,!0),u.strm.avail_out===0?Pt:_):u.last_lit&&(g(u,!1),u.strm.avail_out===0)?It:Ft}function re(u,H){for(var X,S,k,V,vt=u.window;;){if(u.lookahead<=F){if(rt(u),u.lookahead<=F&&H===l)return It;if(u.lookahead===0)break}if(u.match_length=0,u.lookahead>=mt&&u.strstart>0&&(k=u.strstart-1,S=vt[k],S===vt[++k]&&S===vt[++k]&&S===vt[++k])){V=u.strstart+F;do;while(S===vt[++k]&&S===vt[++k]&&S===vt[++k]&&S===vt[++k]&&S===vt[++k]&&S===vt[++k]&&S===vt[++k]&&S===vt[++k]&&k<V);u.match_length=F-(V-k),u.match_length>u.lookahead&&(u.match_length=u.lookahead)}if(u.match_length>=mt?(X=s._tr_tally(u,1,u.match_length-mt),u.lookahead-=u.match_length,u.strstart+=u.match_length,u.match_length=0):(X=s._tr_tally(u,0,u.window[u.strstart]),u.lookahead--,u.strstart++),X&&(g(u,!1),u.strm.avail_out===0))return It}return u.insert=0,H===d?(g(u,!0),u.strm.avail_out===0?Pt:_):u.last_lit&&(g(u,!1),u.strm.avail_out===0)?It:Ft}function Ot(u,H){for(var X;;){if(u.lookahead===0&&(rt(u),u.lookahead===0)){if(H===l)return It;break}if(u.match_length=0,X=s._tr_tally(u,0,u.window[u.strstart]),u.lookahead--,u.strstart++,X&&(g(u,!1),u.strm.avail_out===0))return It}return u.insert=0,H===d?(g(u,!0),u.strm.avail_out===0?Pt:_):u.last_lit&&(g(u,!1),u.strm.avail_out===0)?It:Ft}function Jt(u,H,X,S,k){this.good_length=u,this.max_lazy=H,this.nice_length=X,this.max_chain=S,this.func=k}var me;me=[new Jt(0,0,0,0,_t),new Jt(4,4,8,4,Rt),new Jt(4,5,16,8,Rt),new Jt(4,6,32,32,Rt),new Jt(4,4,16,16,Ut),new Jt(8,16,32,32,Ut),new Jt(8,16,128,128,Ut),new Jt(8,32,128,256,Ut),new Jt(32,128,258,1024,Ut),new Jt(32,258,258,4096,Ut)];function Ti(u){u.window_size=2*u.w_size,At(u.head),u.max_lazy_match=me[u.level].max_lazy,u.good_match=me[u.level].good_length,u.nice_match=me[u.level].nice_length,u.max_chain_length=me[u.level].max_chain,u.strstart=0,u.block_start=0,u.lookahead=0,u.insert=0,u.match_length=u.prev_length=mt-1,u.match_available=0,u.ins_h=0}function y(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=tt,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new r.Buf16(xt*2),this.dyn_dtree=new r.Buf16((2*C+1)*2),this.bl_tree=new r.Buf16((2*ct+1)*2),At(this.dyn_ltree),At(this.dyn_dtree),At(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new r.Buf16(bt+1),this.heap=new r.Buf16(2*lt+1),At(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new r.Buf16(2*lt+1),At(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function st(u){var H;return!u||!u.state?W(u,w):(u.total_in=u.total_out=0,u.data_type=K,H=u.state,H.pending=0,H.pending_out=0,H.wrap<0&&(H.wrap=-H.wrap),H.status=H.wrap?nt:Et,u.adler=H.wrap===2?0:1,H.last_flush=l,s._tr_init(H),A)}function ot(u){var H=st(u);return H===A&&Ti(u.state),H}function U(u,H){return!u||!u.state||u.state.wrap!==2?w:(u.state.gzhead=H,A)}function q(u,H,X,S,k,V){if(!u)return w;var vt=1;if(H===T&&(H=6),S<0?(vt=0,S=-S):S>15&&(vt=2,S-=16),k<1||k>at||X!==tt||S<8||S>15||H<0||H>9||V<0||V>Q)return W(u,w);S===8&&(S=9);var ft=new y;return u.state=ft,ft.strm=u,ft.wrap=vt,ft.gzhead=null,ft.w_bits=S,ft.w_size=1<<ft.w_bits,ft.w_mask=ft.w_size-1,ft.hash_bits=k+7,ft.hash_size=1<<ft.hash_bits,ft.hash_mask=ft.hash_size-1,ft.hash_shift=~~((ft.hash_bits+mt-1)/mt),ft.window=new r.Buf8(ft.w_size*2),ft.head=new r.Buf16(ft.hash_size),ft.prev=new r.Buf16(ft.w_size),ft.lit_bufsize=1<<k+6,ft.pending_buf_size=ft.lit_bufsize*4,ft.pending_buf=new r.Buf8(ft.pending_buf_size),ft.d_buf=ft.lit_bufsize>>1,ft.l_buf=(1+2)*ft.lit_bufsize,ft.level=H,ft.strategy=V,ft.method=X,ot(u)}function b(u,H){return q(u,H,tt,ht,z,Z)}function it(u,H){var X,S,k,V;if(!u||!u.state||H>E||H<0)return u?W(u,w):w;if(S=u.state,!u.output||!u.input&&u.avail_in!==0||S.status===Bt&&H!==d)return W(u,u.avail_out===0?D:w);if(S.strm=u,X=S.last_flush,S.last_flush=H,S.status===nt)if(S.wrap===2)u.adler=0,m(S,31),m(S,139),m(S,8),S.gzhead?(m(S,(S.gzhead.text?1:0)+(S.gzhead.hcrc?2:0)+(S.gzhead.extra?4:0)+(S.gzhead.name?8:0)+(S.gzhead.comment?16:0)),m(S,S.gzhead.time&255),m(S,S.gzhead.time>>8&255),m(S,S.gzhead.time>>16&255),m(S,S.gzhead.time>>24&255),m(S,S.level===9?2:S.strategy>=P||S.level<2?4:0),m(S,S.gzhead.os&255),S.gzhead.extra&&S.gzhead.extra.length&&(m(S,S.gzhead.extra.length&255),m(S,S.gzhead.extra.length>>8&255)),S.gzhead.hcrc&&(u.adler=c(u.adler,S.pending_buf,S.pending,0)),S.gzindex=0,S.status=gt):(m(S,0),m(S,0),m(S,0),m(S,0),m(S,0),m(S,S.level===9?2:S.strategy>=P||S.level<2?4:0),m(S,v),S.status=Et);else{var vt=tt+(S.w_bits-8<<4)<<8,ft=-1;S.strategy>=P||S.level<2?ft=0:S.level<6?ft=1:S.level===6?ft=2:ft=3,vt|=ft<<6,S.strstart!==0&&(vt|=$),vt+=31-vt%31,S.status=Et,N(S,vt),S.strstart!==0&&(N(S,u.adler>>>16),N(S,u.adler&65535)),u.adler=1}if(S.status===gt)if(S.gzhead.extra){for(k=S.pending;S.gzindex<(S.gzhead.extra.length&65535)&&!(S.pending===S.pending_buf_size&&(S.gzhead.hcrc&&S.pending>k&&(u.adler=c(u.adler,S.pending_buf,S.pending-k,k)),B(u),k=S.pending,S.pending===S.pending_buf_size));)m(S,S.gzhead.extra[S.gzindex]&255),S.gzindex++;S.gzhead.hcrc&&S.pending>k&&(u.adler=c(u.adler,S.pending_buf,S.pending-k,k)),S.gzindex===S.gzhead.extra.length&&(S.gzindex=0,S.status=Tt)}else S.status=Tt;if(S.status===Tt)if(S.gzhead.name){k=S.pending;do{if(S.pending===S.pending_buf_size&&(S.gzhead.hcrc&&S.pending>k&&(u.adler=c(u.adler,S.pending_buf,S.pending-k,k)),B(u),k=S.pending,S.pending===S.pending_buf_size)){V=1;break}S.gzindex<S.gzhead.name.length?V=S.gzhead.name.charCodeAt(S.gzindex++)&255:V=0,m(S,V)}while(V!==0);S.gzhead.hcrc&&S.pending>k&&(u.adler=c(u.adler,S.pending_buf,S.pending-k,k)),V===0&&(S.gzindex=0,S.status=dt)}else S.status=dt;if(S.status===dt)if(S.gzhead.comment){k=S.pending;do{if(S.pending===S.pending_buf_size&&(S.gzhead.hcrc&&S.pending>k&&(u.adler=c(u.adler,S.pending_buf,S.pending-k,k)),B(u),k=S.pending,S.pending===S.pending_buf_size)){V=1;break}S.gzindex<S.gzhead.comment.length?V=S.gzhead.comment.charCodeAt(S.gzindex++)&255:V=0,m(S,V)}while(V!==0);S.gzhead.hcrc&&S.pending>k&&(u.adler=c(u.adler,S.pending_buf,S.pending-k,k)),V===0&&(S.status=wt)}else S.status=wt;if(S.status===wt&&(S.gzhead.hcrc?(S.pending+2>S.pending_buf_size&&B(u),S.pending+2<=S.pending_buf_size&&(m(S,u.adler&255),m(S,u.adler>>8&255),u.adler=0,S.status=Et)):S.status=Et),S.pending!==0){if(B(u),u.avail_out===0)return S.last_flush=-1,A}else if(u.avail_in===0&&L(H)<=L(X)&&H!==d)return W(u,D);if(S.status===Bt&&u.avail_in!==0)return W(u,D);if(u.avail_in!==0||S.lookahead!==0||H!==l&&S.status!==Bt){var ut=S.strategy===P?Ot(S,H):S.strategy===O?re(S,H):me[S.level].func(S,H);if((ut===Pt||ut===_)&&(S.status=Bt),ut===It||ut===Pt)return u.avail_out===0&&(S.last_flush=-1),A;if(ut===Ft&&(H===p?s._tr_align(S):H!==E&&(s._tr_stored_block(S,0,0,!1),H===f&&(At(S.head),S.lookahead===0&&(S.strstart=0,S.block_start=0,S.insert=0))),B(u),u.avail_out===0))return S.last_flush=-1,A}return H!==d?A:S.wrap<=0?x:(S.wrap===2?(m(S,u.adler&255),m(S,u.adler>>8&255),m(S,u.adler>>16&255),m(S,u.adler>>24&255),m(S,u.total_in&255),m(S,u.total_in>>8&255),m(S,u.total_in>>16&255),m(S,u.total_in>>24&255)):(N(S,u.adler>>>16),N(S,u.adler&65535)),B(u),S.wrap>0&&(S.wrap=-S.wrap),S.pending!==0?A:x)}function pt(u){var H;return!u||!u.state?w:(H=u.state.status,H!==nt&&H!==gt&&H!==Tt&&H!==dt&&H!==wt&&H!==Et&&H!==Bt?W(u,w):(u.state=null,H===Et?W(u,I):A))}a.deflateInit=b,a.deflateInit2=q,a.deflateReset=ot,a.deflateResetKeep=st,a.deflateSetHeader=U,a.deflate=it,a.deflateEnd=pt,a.deflateInfo="pako deflate (from Nodeca project)"},{"../utils/common":30,"./adler32":32,"./crc32":34,"./messages":40,"./trees":41}],36:[function(e,n,a){function r(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}n.exports=r},{}],37:[function(e,n,a){var r=30,s=12;n.exports=function(c,h){var l,p,f,d,E,A,x,w,I,D,T,R,P,O,Q,Z,K,tt,at,ht,z,Y,j,lt,C;l=c.state,p=c.next_in,lt=c.input,f=p+(c.avail_in-5),d=c.next_out,C=c.output,E=d-(h-c.avail_out),A=d+(c.avail_out-257),x=l.dmax,w=l.wsize,I=l.whave,D=l.wnext,T=l.window,R=l.hold,P=l.bits,O=l.lencode,Q=l.distcode,Z=(1<<l.lenbits)-1,K=(1<<l.distbits)-1;t:do{P<15&&(R+=lt[p++]<<P,P+=8,R+=lt[p++]<<P,P+=8),tt=O[R&Z];e:for(;;){if(at=tt>>>24,R>>>=at,P-=at,at=tt>>>16&255,at===0)C[d++]=tt&65535;else if(at&16){ht=tt&65535,at&=15,at&&(P<at&&(R+=lt[p++]<<P,P+=8),ht+=R&(1<<at)-1,R>>>=at,P-=at),P<15&&(R+=lt[p++]<<P,P+=8,R+=lt[p++]<<P,P+=8),tt=Q[R&K];i:for(;;){if(at=tt>>>24,R>>>=at,P-=at,at=tt>>>16&255,at&16){if(z=tt&65535,at&=15,P<at&&(R+=lt[p++]<<P,P+=8,P<at&&(R+=lt[p++]<<P,P+=8)),z+=R&(1<<at)-1,z>x){c.msg="invalid distance too far back",l.mode=r;break t}if(R>>>=at,P-=at,at=d-E,z>at){if(at=z-at,at>I&&l.sane){c.msg="invalid distance too far back",l.mode=r;break t}if(Y=0,j=T,D===0){if(Y+=w-at,at<ht){ht-=at;do C[d++]=T[Y++];while(--at);Y=d-z,j=C}}else if(D<at){if(Y+=w+D-at,at-=D,at<ht){ht-=at;do C[d++]=T[Y++];while(--at);if(Y=0,D<ht){at=D,ht-=at;do C[d++]=T[Y++];while(--at);Y=d-z,j=C}}}else if(Y+=D-at,at<ht){ht-=at;do C[d++]=T[Y++];while(--at);Y=d-z,j=C}for(;ht>2;)C[d++]=j[Y++],C[d++]=j[Y++],C[d++]=j[Y++],ht-=3;ht&&(C[d++]=j[Y++],ht>1&&(C[d++]=j[Y++]))}else{Y=d-z;do C[d++]=C[Y++],C[d++]=C[Y++],C[d++]=C[Y++],ht-=3;while(ht>2);ht&&(C[d++]=C[Y++],ht>1&&(C[d++]=C[Y++]))}}else if((at&64)===0){tt=Q[(tt&65535)+(R&(1<<at)-1)];continue i}else{c.msg="invalid distance code",l.mode=r;break t}break}}else if((at&64)===0){tt=O[(tt&65535)+(R&(1<<at)-1)];continue e}else if(at&32){l.mode=s;break t}else{c.msg="invalid literal/length code",l.mode=r;break t}break}}while(p<f&&d<A);ht=P>>3,p-=ht,P-=ht<<3,R&=(1<<P)-1,c.next_in=p,c.next_out=d,c.avail_in=p<f?5+(f-p):5-(p-f),c.avail_out=d<A?257+(A-d):257-(d-A),l.hold=R,l.bits=P}},{}],38:[function(e,n,a){var r=e("../utils/common"),s=e("./adler32"),o=e("./crc32"),c=e("./inffast"),h=e("./inftrees"),l=0,p=1,f=2,d=4,E=5,A=6,x=0,w=1,I=2,D=-2,T=-3,R=-4,P=-5,O=8,Q=1,Z=2,K=3,tt=4,at=5,ht=6,z=7,Y=8,j=9,lt=10,C=11,ct=12,xt=13,bt=14,mt=15,F=16,M=17,$=18,nt=19,gt=20,Tt=21,dt=22,wt=23,Et=24,Bt=25,It=26,Ft=27,Pt=28,_=29,v=30,W=31,L=32,At=852,B=592,g=15,m=g;function N(U){return(U>>>24&255)+(U>>>8&65280)+((U&65280)<<8)+((U&255)<<24)}function G(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new r.Buf16(320),this.work=new r.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function J(U){var q;return!U||!U.state?D:(q=U.state,U.total_in=U.total_out=q.total=0,U.msg="",q.wrap&&(U.adler=q.wrap&1),q.mode=Q,q.last=0,q.havedict=0,q.dmax=32768,q.head=null,q.hold=0,q.bits=0,q.lencode=q.lendyn=new r.Buf32(At),q.distcode=q.distdyn=new r.Buf32(B),q.sane=1,q.back=-1,x)}function rt(U){var q;return!U||!U.state?D:(q=U.state,q.wsize=0,q.whave=0,q.wnext=0,J(U))}function _t(U,q){var b,it;return!U||!U.state||(it=U.state,q<0?(b=0,q=-q):(b=(q>>4)+1,q<48&&(q&=15)),q&&(q<8||q>15))?D:(it.window!==null&&it.wbits!==q&&(it.window=null),it.wrap=b,it.wbits=q,rt(U))}function Rt(U,q){var b,it;return U?(it=new G,U.state=it,it.window=null,b=_t(U,q),b!==x&&(U.state=null),b):D}function Ut(U){return Rt(U,m)}var re=!0,Ot,Jt;function me(U){if(re){var q;for(Ot=new r.Buf32(512),Jt=new r.Buf32(32),q=0;q<144;)U.lens[q++]=8;for(;q<256;)U.lens[q++]=9;for(;q<280;)U.lens[q++]=7;for(;q<288;)U.lens[q++]=8;for(h(p,U.lens,0,288,Ot,0,U.work,{bits:9}),q=0;q<32;)U.lens[q++]=5;h(f,U.lens,0,32,Jt,0,U.work,{bits:5}),re=!1}U.lencode=Ot,U.lenbits=9,U.distcode=Jt,U.distbits=5}function Ti(U,q,b,it){var pt,u=U.state;return u.window===null&&(u.wsize=1<<u.wbits,u.wnext=0,u.whave=0,u.window=new r.Buf8(u.wsize)),it>=u.wsize?(r.arraySet(u.window,q,b-u.wsize,u.wsize,0),u.wnext=0,u.whave=u.wsize):(pt=u.wsize-u.wnext,pt>it&&(pt=it),r.arraySet(u.window,q,b-it,pt,u.wnext),it-=pt,it?(r.arraySet(u.window,q,b-it,it,0),u.wnext=it,u.whave=u.wsize):(u.wnext+=pt,u.wnext===u.wsize&&(u.wnext=0),u.whave<u.wsize&&(u.whave+=pt))),0}function y(U,q){var b,it,pt,u,H,X,S,k,V,vt,ft,ut,Nt,Ii,Lt=0,St,Zt,qt,ee,Ji,qi,zt,le,Wt=new r.Buf8(4),_e,ve,La=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!U||!U.state||!U.output||!U.input&&U.avail_in!==0)return D;b=U.state,b.mode===ct&&(b.mode=xt),H=U.next_out,pt=U.output,S=U.avail_out,u=U.next_in,it=U.input,X=U.avail_in,k=b.hold,V=b.bits,vt=X,ft=S,le=x;t:for(;;)switch(b.mode){case Q:if(b.wrap===0){b.mode=xt;break}for(;V<16;){if(X===0)break t;X--,k+=it[u++]<<V,V+=8}if(b.wrap&2&&k===35615){b.check=0,Wt[0]=k&255,Wt[1]=k>>>8&255,b.check=o(b.check,Wt,2,0),k=0,V=0,b.mode=Z;break}if(b.flags=0,b.head&&(b.head.done=!1),!(b.wrap&1)||(((k&255)<<8)+(k>>8))%31){U.msg="incorrect header check",b.mode=v;break}if((k&15)!==O){U.msg="unknown compression method",b.mode=v;break}if(k>>>=4,V-=4,zt=(k&15)+8,b.wbits===0)b.wbits=zt;else if(zt>b.wbits){U.msg="invalid window size",b.mode=v;break}b.dmax=1<<zt,U.adler=b.check=1,b.mode=k&512?lt:ct,k=0,V=0;break;case Z:for(;V<16;){if(X===0)break t;X--,k+=it[u++]<<V,V+=8}if(b.flags=k,(b.flags&255)!==O){U.msg="unknown compression method",b.mode=v;break}if(b.flags&57344){U.msg="unknown header flags set",b.mode=v;break}b.head&&(b.head.text=k>>8&1),b.flags&512&&(Wt[0]=k&255,Wt[1]=k>>>8&255,b.check=o(b.check,Wt,2,0)),k=0,V=0,b.mode=K;case K:for(;V<32;){if(X===0)break t;X--,k+=it[u++]<<V,V+=8}b.head&&(b.head.time=k),b.flags&512&&(Wt[0]=k&255,Wt[1]=k>>>8&255,Wt[2]=k>>>16&255,Wt[3]=k>>>24&255,b.check=o(b.check,Wt,4,0)),k=0,V=0,b.mode=tt;case tt:for(;V<16;){if(X===0)break t;X--,k+=it[u++]<<V,V+=8}b.head&&(b.head.xflags=k&255,b.head.os=k>>8),b.flags&512&&(Wt[0]=k&255,Wt[1]=k>>>8&255,b.check=o(b.check,Wt,2,0)),k=0,V=0,b.mode=at;case at:if(b.flags&1024){for(;V<16;){if(X===0)break t;X--,k+=it[u++]<<V,V+=8}b.length=k,b.head&&(b.head.extra_len=k),b.flags&512&&(Wt[0]=k&255,Wt[1]=k>>>8&255,b.check=o(b.check,Wt,2,0)),k=0,V=0}else b.head&&(b.head.extra=null);b.mode=ht;case ht:if(b.flags&1024&&(ut=b.length,ut>X&&(ut=X),ut&&(b.head&&(zt=b.head.extra_len-b.length,b.head.extra||(b.head.extra=new Array(b.head.extra_len)),r.arraySet(b.head.extra,it,u,ut,zt)),b.flags&512&&(b.check=o(b.check,it,ut,u)),X-=ut,u+=ut,b.length-=ut),b.length))break t;b.length=0,b.mode=z;case z:if(b.flags&2048){if(X===0)break t;ut=0;do zt=it[u+ut++],b.head&&zt&&b.length<65536&&(b.head.name+=String.fromCharCode(zt));while(zt&&ut<X);if(b.flags&512&&(b.check=o(b.check,it,ut,u)),X-=ut,u+=ut,zt)break t}else b.head&&(b.head.name=null);b.length=0,b.mode=Y;case Y:if(b.flags&4096){if(X===0)break t;ut=0;do zt=it[u+ut++],b.head&&zt&&b.length<65536&&(b.head.comment+=String.fromCharCode(zt));while(zt&&ut<X);if(b.flags&512&&(b.check=o(b.check,it,ut,u)),X-=ut,u+=ut,zt)break t}else b.head&&(b.head.comment=null);b.mode=j;case j:if(b.flags&512){for(;V<16;){if(X===0)break t;X--,k+=it[u++]<<V,V+=8}if(k!==(b.check&65535)){U.msg="header crc mismatch",b.mode=v;break}k=0,V=0}b.head&&(b.head.hcrc=b.flags>>9&1,b.head.done=!0),U.adler=b.check=0,b.mode=ct;break;case lt:for(;V<32;){if(X===0)break t;X--,k+=it[u++]<<V,V+=8}U.adler=b.check=N(k),k=0,V=0,b.mode=C;case C:if(b.havedict===0)return U.next_out=H,U.avail_out=S,U.next_in=u,U.avail_in=X,b.hold=k,b.bits=V,I;U.adler=b.check=1,b.mode=ct;case ct:if(q===E||q===A)break t;case xt:if(b.last){k>>>=V&7,V-=V&7,b.mode=Ft;break}for(;V<3;){if(X===0)break t;X--,k+=it[u++]<<V,V+=8}switch(b.last=k&1,k>>>=1,V-=1,k&3){case 0:b.mode=bt;break;case 1:if(me(b),b.mode=gt,q===A){k>>>=2,V-=2;break t}break;case 2:b.mode=M;break;case 3:U.msg="invalid block type",b.mode=v}k>>>=2,V-=2;break;case bt:for(k>>>=V&7,V-=V&7;V<32;){if(X===0)break t;X--,k+=it[u++]<<V,V+=8}if((k&65535)!==(k>>>16^65535)){U.msg="invalid stored block lengths",b.mode=v;break}if(b.length=k&65535,k=0,V=0,b.mode=mt,q===A)break t;case mt:b.mode=F;case F:if(ut=b.length,ut){if(ut>X&&(ut=X),ut>S&&(ut=S),ut===0)break t;r.arraySet(pt,it,u,ut,H),X-=ut,u+=ut,S-=ut,H+=ut,b.length-=ut;break}b.mode=ct;break;case M:for(;V<14;){if(X===0)break t;X--,k+=it[u++]<<V,V+=8}if(b.nlen=(k&31)+257,k>>>=5,V-=5,b.ndist=(k&31)+1,k>>>=5,V-=5,b.ncode=(k&15)+4,k>>>=4,V-=4,b.nlen>286||b.ndist>30){U.msg="too many length or distance symbols",b.mode=v;break}b.have=0,b.mode=$;case $:for(;b.have<b.ncode;){for(;V<3;){if(X===0)break t;X--,k+=it[u++]<<V,V+=8}b.lens[La[b.have++]]=k&7,k>>>=3,V-=3}for(;b.have<19;)b.lens[La[b.have++]]=0;if(b.lencode=b.lendyn,b.lenbits=7,_e={bits:b.lenbits},le=h(l,b.lens,0,19,b.lencode,0,b.work,_e),b.lenbits=_e.bits,le){U.msg="invalid code lengths set",b.mode=v;break}b.have=0,b.mode=nt;case nt:for(;b.have<b.nlen+b.ndist;){for(;Lt=b.lencode[k&(1<<b.lenbits)-1],St=Lt>>>24,Zt=Lt>>>16&255,qt=Lt&65535,!(St<=V);){if(X===0)break t;X--,k+=it[u++]<<V,V+=8}if(qt<16)k>>>=St,V-=St,b.lens[b.have++]=qt;else{if(qt===16){for(ve=St+2;V<ve;){if(X===0)break t;X--,k+=it[u++]<<V,V+=8}if(k>>>=St,V-=St,b.have===0){U.msg="invalid bit length repeat",b.mode=v;break}zt=b.lens[b.have-1],ut=3+(k&3),k>>>=2,V-=2}else if(qt===17){for(ve=St+3;V<ve;){if(X===0)break t;X--,k+=it[u++]<<V,V+=8}k>>>=St,V-=St,zt=0,ut=3+(k&7),k>>>=3,V-=3}else{for(ve=St+7;V<ve;){if(X===0)break t;X--,k+=it[u++]<<V,V+=8}k>>>=St,V-=St,zt=0,ut=11+(k&127),k>>>=7,V-=7}if(b.have+ut>b.nlen+b.ndist){U.msg="invalid bit length repeat",b.mode=v;break}for(;ut--;)b.lens[b.have++]=zt}}if(b.mode===v)break;if(b.lens[256]===0){U.msg="invalid code -- missing end-of-block",b.mode=v;break}if(b.lenbits=9,_e={bits:b.lenbits},le=h(p,b.lens,0,b.nlen,b.lencode,0,b.work,_e),b.lenbits=_e.bits,le){U.msg="invalid literal/lengths set",b.mode=v;break}if(b.distbits=6,b.distcode=b.distdyn,_e={bits:b.distbits},le=h(f,b.lens,b.nlen,b.ndist,b.distcode,0,b.work,_e),b.distbits=_e.bits,le){U.msg="invalid distances set",b.mode=v;break}if(b.mode=gt,q===A)break t;case gt:b.mode=Tt;case Tt:if(X>=6&&S>=258){U.next_out=H,U.avail_out=S,U.next_in=u,U.avail_in=X,b.hold=k,b.bits=V,c(U,ft),H=U.next_out,pt=U.output,S=U.avail_out,u=U.next_in,it=U.input,X=U.avail_in,k=b.hold,V=b.bits,b.mode===ct&&(b.back=-1);break}for(b.back=0;Lt=b.lencode[k&(1<<b.lenbits)-1],St=Lt>>>24,Zt=Lt>>>16&255,qt=Lt&65535,!(St<=V);){if(X===0)break t;X--,k+=it[u++]<<V,V+=8}if(Zt&&(Zt&240)===0){for(ee=St,Ji=Zt,qi=qt;Lt=b.lencode[qi+((k&(1<<ee+Ji)-1)>>ee)],St=Lt>>>24,Zt=Lt>>>16&255,qt=Lt&65535,!(ee+St<=V);){if(X===0)break t;X--,k+=it[u++]<<V,V+=8}k>>>=ee,V-=ee,b.back+=ee}if(k>>>=St,V-=St,b.back+=St,b.length=qt,Zt===0){b.mode=It;break}if(Zt&32){b.back=-1,b.mode=ct;break}if(Zt&64){U.msg="invalid literal/length code",b.mode=v;break}b.extra=Zt&15,b.mode=dt;case dt:if(b.extra){for(ve=b.extra;V<ve;){if(X===0)break t;X--,k+=it[u++]<<V,V+=8}b.length+=k&(1<<b.extra)-1,k>>>=b.extra,V-=b.extra,b.back+=b.extra}b.was=b.length,b.mode=wt;case wt:for(;Lt=b.distcode[k&(1<<b.distbits)-1],St=Lt>>>24,Zt=Lt>>>16&255,qt=Lt&65535,!(St<=V);){if(X===0)break t;X--,k+=it[u++]<<V,V+=8}if((Zt&240)===0){for(ee=St,Ji=Zt,qi=qt;Lt=b.distcode[qi+((k&(1<<ee+Ji)-1)>>ee)],St=Lt>>>24,Zt=Lt>>>16&255,qt=Lt&65535,!(ee+St<=V);){if(X===0)break t;X--,k+=it[u++]<<V,V+=8}k>>>=ee,V-=ee,b.back+=ee}if(k>>>=St,V-=St,b.back+=St,Zt&64){U.msg="invalid distance code",b.mode=v;break}b.offset=qt,b.extra=Zt&15,b.mode=Et;case Et:if(b.extra){for(ve=b.extra;V<ve;){if(X===0)break t;X--,k+=it[u++]<<V,V+=8}b.offset+=k&(1<<b.extra)-1,k>>>=b.extra,V-=b.extra,b.back+=b.extra}if(b.offset>b.dmax){U.msg="invalid distance too far back",b.mode=v;break}b.mode=Bt;case Bt:if(S===0)break t;if(ut=ft-S,b.offset>ut){if(ut=b.offset-ut,ut>b.whave&&b.sane){U.msg="invalid distance too far back",b.mode=v;break}ut>b.wnext?(ut-=b.wnext,Nt=b.wsize-ut):Nt=b.wnext-ut,ut>b.length&&(ut=b.length),Ii=b.window}else Ii=pt,Nt=H-b.offset,ut=b.length;ut>S&&(ut=S),S-=ut,b.length-=ut;do pt[H++]=Ii[Nt++];while(--ut);b.length===0&&(b.mode=Tt);break;case It:if(S===0)break t;pt[H++]=b.length,S--,b.mode=Tt;break;case Ft:if(b.wrap){for(;V<32;){if(X===0)break t;X--,k|=it[u++]<<V,V+=8}if(ft-=S,U.total_out+=ft,b.total+=ft,ft&&(U.adler=b.check=b.flags?o(b.check,pt,ft,H-ft):s(b.check,pt,ft,H-ft)),ft=S,(b.flags?k:N(k))!==b.check){U.msg="incorrect data check",b.mode=v;break}k=0,V=0}b.mode=Pt;case Pt:if(b.wrap&&b.flags){for(;V<32;){if(X===0)break t;X--,k+=it[u++]<<V,V+=8}if(k!==(b.total&4294967295)){U.msg="incorrect length check",b.mode=v;break}k=0,V=0}b.mode=_;case _:le=w;break t;case v:le=T;break t;case W:return R;case L:default:return D}return U.next_out=H,U.avail_out=S,U.next_in=u,U.avail_in=X,b.hold=k,b.bits=V,(b.wsize||ft!==U.avail_out&&b.mode<v&&(b.mode<Ft||q!==d))&&Ti(U,U.output,U.next_out,ft-U.avail_out),vt-=U.avail_in,ft-=U.avail_out,U.total_in+=vt,U.total_out+=ft,b.total+=ft,b.wrap&&ft&&(U.adler=b.check=b.flags?o(b.check,pt,ft,U.next_out-ft):s(b.check,pt,ft,U.next_out-ft)),U.data_type=b.bits+(b.last?64:0)+(b.mode===ct?128:0)+(b.mode===gt||b.mode===mt?256:0),(vt===0&&ft===0||q===d)&&le===x&&(le=P),le}function st(U){if(!U||!U.state)return D;var q=U.state;return q.window&&(q.window=null),U.state=null,x}function ot(U,q){var b;return!U||!U.state||(b=U.state,(b.wrap&2)===0)?D:(b.head=q,q.done=!1,x)}a.inflateReset=rt,a.inflateReset2=_t,a.inflateResetKeep=J,a.inflateInit=Ut,a.inflateInit2=Rt,a.inflate=y,a.inflateEnd=st,a.inflateGetHeader=ot,a.inflateInfo="pako inflate (from Nodeca project)"},{"../utils/common":30,"./adler32":32,"./crc32":34,"./inffast":37,"./inftrees":39}],39:[function(e,n,a){var r=e("../utils/common"),s=15,o=852,c=592,h=0,l=1,p=2,f=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],d=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],E=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],A=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];n.exports=function(w,I,D,T,R,P,O,Q){var Z=Q.bits,K=0,tt=0,at=0,ht=0,z=0,Y=0,j=0,lt=0,C=0,ct=0,xt,bt,mt,F,M,$=null,nt=0,gt,Tt=new r.Buf16(s+1),dt=new r.Buf16(s+1),wt=null,Et=0,Bt,It,Ft;for(K=0;K<=s;K++)Tt[K]=0;for(tt=0;tt<T;tt++)Tt[I[D+tt]]++;for(z=Z,ht=s;ht>=1&&Tt[ht]===0;ht--);if(z>ht&&(z=ht),ht===0)return R[P++]=1<<24|64<<16|0,R[P++]=1<<24|64<<16|0,Q.bits=1,0;for(at=1;at<ht&&Tt[at]===0;at++);for(z<at&&(z=at),lt=1,K=1;K<=s;K++)if(lt<<=1,lt-=Tt[K],lt<0)return-1;if(lt>0&&(w===h||ht!==1))return-1;for(dt[1]=0,K=1;K<s;K++)dt[K+1]=dt[K]+Tt[K];for(tt=0;tt<T;tt++)I[D+tt]!==0&&(O[dt[I[D+tt]]++]=tt);if(w===h?($=wt=O,gt=19):w===l?($=f,nt-=257,wt=d,Et-=257,gt=256):($=E,wt=A,gt=-1),ct=0,tt=0,K=at,M=P,Y=z,j=0,mt=-1,C=1<<z,F=C-1,w===l&&C>o||w===p&&C>c)return 1;for(;;){Bt=K-j,O[tt]<gt?(It=0,Ft=O[tt]):O[tt]>gt?(It=wt[Et+O[tt]],Ft=$[nt+O[tt]]):(It=32+64,Ft=0),xt=1<<K-j,bt=1<<Y,at=bt;do bt-=xt,R[M+(ct>>j)+bt]=Bt<<24|It<<16|Ft|0;while(bt!==0);for(xt=1<<K-1;ct&xt;)xt>>=1;if(xt!==0?(ct&=xt-1,ct+=xt):ct=0,tt++,--Tt[K]===0){if(K===ht)break;K=I[D+O[tt]]}if(K>z&&(ct&F)!==mt){for(j===0&&(j=z),M+=at,Y=K-j,lt=1<<Y;Y+j<ht&&(lt-=Tt[Y+j],!(lt<=0));)Y++,lt<<=1;if(C+=1<<Y,w===l&&C>o||w===p&&C>c)return 1;mt=ct&F,R[mt]=z<<24|Y<<16|M-P|0}}return ct!==0&&(R[M+ct]=K-j<<24|64<<16|0),Q.bits=z,0}},{"../utils/common":30}],40:[function(e,n,a){n.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},{}],41:[function(e,n,a){var r=e("../utils/common"),s=4,o=0,c=1,h=2;function l(y){for(var st=y.length;--st>=0;)y[st]=0}var p=0,f=1,d=2,E=3,A=258,x=29,w=256,I=w+1+x,D=30,T=19,R=2*I+1,P=15,O=16,Q=7,Z=256,K=16,tt=17,at=18,ht=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],z=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],Y=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],j=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],lt=512,C=new Array((I+2)*2);l(C);var ct=new Array(D*2);l(ct);var xt=new Array(lt);l(xt);var bt=new Array(A-E+1);l(bt);var mt=new Array(x);l(mt);var F=new Array(D);l(F);function M(y,st,ot,U,q){this.static_tree=y,this.extra_bits=st,this.extra_base=ot,this.elems=U,this.max_length=q,this.has_stree=y&&y.length}var $,nt,gt;function Tt(y,st){this.dyn_tree=y,this.max_code=0,this.stat_desc=st}function dt(y){return y<256?xt[y]:xt[256+(y>>>7)]}function wt(y,st){y.pending_buf[y.pending++]=st&255,y.pending_buf[y.pending++]=st>>>8&255}function Et(y,st,ot){y.bi_valid>O-ot?(y.bi_buf|=st<<y.bi_valid&65535,wt(y,y.bi_buf),y.bi_buf=st>>O-y.bi_valid,y.bi_valid+=ot-O):(y.bi_buf|=st<<y.bi_valid&65535,y.bi_valid+=ot)}function Bt(y,st,ot){Et(y,ot[st*2],ot[st*2+1])}function It(y,st){var ot=0;do ot|=y&1,y>>>=1,ot<<=1;while(--st>0);return ot>>>1}function Ft(y){y.bi_valid===16?(wt(y,y.bi_buf),y.bi_buf=0,y.bi_valid=0):y.bi_valid>=8&&(y.pending_buf[y.pending++]=y.bi_buf&255,y.bi_buf>>=8,y.bi_valid-=8)}function Pt(y,st){var ot=st.dyn_tree,U=st.max_code,q=st.stat_desc.static_tree,b=st.stat_desc.has_stree,it=st.stat_desc.extra_bits,pt=st.stat_desc.extra_base,u=st.stat_desc.max_length,H,X,S,k,V,vt,ft=0;for(k=0;k<=P;k++)y.bl_count[k]=0;for(ot[y.heap[y.heap_max]*2+1]=0,H=y.heap_max+1;H<R;H++)X=y.heap[H],k=ot[ot[X*2+1]*2+1]+1,k>u&&(k=u,ft++),ot[X*2+1]=k,!(X>U)&&(y.bl_count[k]++,V=0,X>=pt&&(V=it[X-pt]),vt=ot[X*2],y.opt_len+=vt*(k+V),b&&(y.static_len+=vt*(q[X*2+1]+V)));if(ft!==0){do{for(k=u-1;y.bl_count[k]===0;)k--;y.bl_count[k]--,y.bl_count[k+1]+=2,y.bl_count[u]--,ft-=2}while(ft>0);for(k=u;k!==0;k--)for(X=y.bl_count[k];X!==0;)S=y.heap[--H],!(S>U)&&(ot[S*2+1]!==k&&(y.opt_len+=(k-ot[S*2+1])*ot[S*2],ot[S*2+1]=k),X--)}}function _(y,st,ot){var U=new Array(P+1),q=0,b,it;for(b=1;b<=P;b++)U[b]=q=q+ot[b-1]<<1;for(it=0;it<=st;it++){var pt=y[it*2+1];pt!==0&&(y[it*2]=It(U[pt]++,pt))}}function v(){var y,st,ot,U,q,b=new Array(P+1);for(ot=0,U=0;U<x-1;U++)for(mt[U]=ot,y=0;y<1<<ht[U];y++)bt[ot++]=U;for(bt[ot-1]=U,q=0,U=0;U<16;U++)for(F[U]=q,y=0;y<1<<z[U];y++)xt[q++]=U;for(q>>=7;U<D;U++)for(F[U]=q<<7,y=0;y<1<<z[U]-7;y++)xt[256+q++]=U;for(st=0;st<=P;st++)b[st]=0;for(y=0;y<=143;)C[y*2+1]=8,y++,b[8]++;for(;y<=255;)C[y*2+1]=9,y++,b[9]++;for(;y<=279;)C[y*2+1]=7,y++,b[7]++;for(;y<=287;)C[y*2+1]=8,y++,b[8]++;for(_(C,I+1,b),y=0;y<D;y++)ct[y*2+1]=5,ct[y*2]=It(y,5);$=new M(C,ht,w+1,I,P),nt=new M(ct,z,0,D,P),gt=new M(new Array(0),Y,0,T,Q)}function W(y){var st;for(st=0;st<I;st++)y.dyn_ltree[st*2]=0;for(st=0;st<D;st++)y.dyn_dtree[st*2]=0;for(st=0;st<T;st++)y.bl_tree[st*2]=0;y.dyn_ltree[Z*2]=1,y.opt_len=y.static_len=0,y.last_lit=y.matches=0}function L(y){y.bi_valid>8?wt(y,y.bi_buf):y.bi_valid>0&&(y.pending_buf[y.pending++]=y.bi_buf),y.bi_buf=0,y.bi_valid=0}function At(y,st,ot,U){L(y),U&&(wt(y,ot),wt(y,~ot)),r.arraySet(y.pending_buf,y.window,st,ot,y.pending),y.pending+=ot}function B(y,st,ot,U){var q=st*2,b=ot*2;return y[q]<y[b]||y[q]===y[b]&&U[st]<=U[ot]}function g(y,st,ot){for(var U=y.heap[ot],q=ot<<1;q<=y.heap_len&&(q<y.heap_len&&B(st,y.heap[q+1],y.heap[q],y.depth)&&q++,!B(st,U,y.heap[q],y.depth));)y.heap[ot]=y.heap[q],ot=q,q<<=1;y.heap[ot]=U}function m(y,st,ot){var U,q,b=0,it,pt;if(y.last_lit!==0)do U=y.pending_buf[y.d_buf+b*2]<<8|y.pending_buf[y.d_buf+b*2+1],q=y.pending_buf[y.l_buf+b],b++,U===0?Bt(y,q,st):(it=bt[q],Bt(y,it+w+1,st),pt=ht[it],pt!==0&&(q-=mt[it],Et(y,q,pt)),U--,it=dt(U),Bt(y,it,ot),pt=z[it],pt!==0&&(U-=F[it],Et(y,U,pt)));while(b<y.last_lit);Bt(y,Z,st)}function N(y,st){var ot=st.dyn_tree,U=st.stat_desc.static_tree,q=st.stat_desc.has_stree,b=st.stat_desc.elems,it,pt,u=-1,H;for(y.heap_len=0,y.heap_max=R,it=0;it<b;it++)ot[it*2]!==0?(y.heap[++y.heap_len]=u=it,y.depth[it]=0):ot[it*2+1]=0;for(;y.heap_len<2;)H=y.heap[++y.heap_len]=u<2?++u:0,ot[H*2]=1,y.depth[H]=0,y.opt_len--,q&&(y.static_len-=U[H*2+1]);for(st.max_code=u,it=y.heap_len>>1;it>=1;it--)g(y,ot,it);H=b;do it=y.heap[1],y.heap[1]=y.heap[y.heap_len--],g(y,ot,1),pt=y.heap[1],y.heap[--y.heap_max]=it,y.heap[--y.heap_max]=pt,ot[H*2]=ot[it*2]+ot[pt*2],y.depth[H]=(y.depth[it]>=y.depth[pt]?y.depth[it]:y.depth[pt])+1,ot[it*2+1]=ot[pt*2+1]=H,y.heap[1]=H++,g(y,ot,1);while(y.heap_len>=2);y.heap[--y.heap_max]=y.heap[1],Pt(y,st),_(ot,u,y.bl_count)}function G(y,st,ot){var U,q=-1,b,it=st[0*2+1],pt=0,u=7,H=4;for(it===0&&(u=138,H=3),st[(ot+1)*2+1]=65535,U=0;U<=ot;U++)b=it,it=st[(U+1)*2+1],!(++pt<u&&b===it)&&(pt<H?y.bl_tree[b*2]+=pt:b!==0?(b!==q&&y.bl_tree[b*2]++,y.bl_tree[K*2]++):pt<=10?y.bl_tree[tt*2]++:y.bl_tree[at*2]++,pt=0,q=b,it===0?(u=138,H=3):b===it?(u=6,H=3):(u=7,H=4))}function J(y,st,ot){var U,q=-1,b,it=st[0*2+1],pt=0,u=7,H=4;for(it===0&&(u=138,H=3),U=0;U<=ot;U++)if(b=it,it=st[(U+1)*2+1],!(++pt<u&&b===it)){if(pt<H)do Bt(y,b,y.bl_tree);while(--pt!==0);else b!==0?(b!==q&&(Bt(y,b,y.bl_tree),pt--),Bt(y,K,y.bl_tree),Et(y,pt-3,2)):pt<=10?(Bt(y,tt,y.bl_tree),Et(y,pt-3,3)):(Bt(y,at,y.bl_tree),Et(y,pt-11,7));pt=0,q=b,it===0?(u=138,H=3):b===it?(u=6,H=3):(u=7,H=4)}}function rt(y){var st;for(G(y,y.dyn_ltree,y.l_desc.max_code),G(y,y.dyn_dtree,y.d_desc.max_code),N(y,y.bl_desc),st=T-1;st>=3&&y.bl_tree[j[st]*2+1]===0;st--);return y.opt_len+=3*(st+1)+5+5+4,st}function _t(y,st,ot,U){var q;for(Et(y,st-257,5),Et(y,ot-1,5),Et(y,U-4,4),q=0;q<U;q++)Et(y,y.bl_tree[j[q]*2+1],3);J(y,y.dyn_ltree,st-1),J(y,y.dyn_dtree,ot-1)}function Rt(y){var st=4093624447,ot;for(ot=0;ot<=31;ot++,st>>>=1)if(st&1&&y.dyn_ltree[ot*2]!==0)return o;if(y.dyn_ltree[9*2]!==0||y.dyn_ltree[10*2]!==0||y.dyn_ltree[13*2]!==0)return c;for(ot=32;ot<w;ot++)if(y.dyn_ltree[ot*2]!==0)return c;return o}var Ut=!1;function re(y){Ut||(v(),Ut=!0),y.l_desc=new Tt(y.dyn_ltree,$),y.d_desc=new Tt(y.dyn_dtree,nt),y.bl_desc=new Tt(y.bl_tree,gt),y.bi_buf=0,y.bi_valid=0,W(y)}function Ot(y,st,ot,U){Et(y,(p<<1)+(U?1:0),3),At(y,st,ot,!0)}function Jt(y){Et(y,f<<1,3),Bt(y,Z,C),Ft(y)}function me(y,st,ot,U){var q,b,it=0;y.level>0?(y.strm.data_type===h&&(y.strm.data_type=Rt(y)),N(y,y.l_desc),N(y,y.d_desc),it=rt(y),q=y.opt_len+3+7>>>3,b=y.static_len+3+7>>>3,b<=q&&(q=b)):q=b=ot+5,ot+4<=q&&st!==-1?Ot(y,st,ot,U):y.strategy===s||b===q?(Et(y,(f<<1)+(U?1:0),3),m(y,C,ct)):(Et(y,(d<<1)+(U?1:0),3),_t(y,y.l_desc.max_code+1,y.d_desc.max_code+1,it+1),m(y,y.dyn_ltree,y.dyn_dtree)),W(y),U&&L(y)}function Ti(y,st,ot){return y.pending_buf[y.d_buf+y.last_lit*2]=st>>>8&255,y.pending_buf[y.d_buf+y.last_lit*2+1]=st&255,y.pending_buf[y.l_buf+y.last_lit]=ot&255,y.last_lit++,st===0?y.dyn_ltree[ot*2]++:(y.matches++,st--,y.dyn_ltree[(bt[ot]+w+1)*2]++,y.dyn_dtree[dt(st)*2]++),y.last_lit===y.lit_bufsize-1}a._tr_init=re,a._tr_stored_block=Ot,a._tr_flush_block=me,a._tr_tally=Ti,a._tr_align=Jt},{"../utils/common":30}],42:[function(e,n,a){function r(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}n.exports=r},{}],43:[function(e,n,a){(function(r){(function(s){s.parser=function(_,v){return new c(_,v)},s.SAXParser=c,s.SAXStream=A,s.createStream=E,s.MAX_BUFFER_LENGTH=64*1024;var o=["comment","sgmlDecl","textNode","tagName","doctype","procInstName","procInstBody","entity","attribName","attribValue","cdata","script"];s.EVENTS=["text","processinginstruction","sgmldeclaration","doctype","comment","attribute","opentag","closetag","opencdata","cdata","closecdata","error","end","ready","script","opennamespace","closenamespace"];function c(_,v){if(!(this instanceof c))return new c(_,v);var W=this;l(W),W.q=W.c="",W.bufferCheckPosition=s.MAX_BUFFER_LENGTH,W.opt=v||{},W.opt.lowercase=W.opt.lowercase||W.opt.lowercasetags,W.looseCase=W.opt.lowercase?"toLowerCase":"toUpperCase",W.tags=[],W.closed=W.closedRoot=W.sawRoot=!1,W.tag=W.error=null,W.strict=!!_,W.noscript=!!(_||W.opt.noscript),W.state=C.BEGIN,W.strictEntities=W.opt.strictEntities,W.ENTITIES=W.strictEntities?Object.create(s.XML_ENTITIES):Object.create(s.ENTITIES),W.attribList=[],W.opt.xmlns&&(W.ns=Object.create(Z)),W.trackPosition=W.opt.position!==!1,W.trackPosition&&(W.position=W.line=W.column=0),xt(W,"onready")}Object.create||(Object.create=function(_){function v(){}v.prototype=_;var W=new v;return W}),Object.keys||(Object.keys=function(_){var v=[];for(var W in _)_.hasOwnProperty(W)&&v.push(W);return v});function h(_){for(var v=Math.max(s.MAX_BUFFER_LENGTH,10),W=0,L=0,At=o.length;L<At;L++){var B=_[o[L]].length;if(B>v)switch(o[L]){case"textNode":mt(_);break;case"cdata":bt(_,"oncdata",_.cdata),_.cdata="";break;case"script":bt(_,"onscript",_.script),_.script="";break;default:M(_,"Max buffer length exceeded: "+o[L])}W=Math.max(W,B)}var g=s.MAX_BUFFER_LENGTH-W;_.bufferCheckPosition=g+_.position}function l(_){for(var v=0,W=o.length;v<W;v++)_[o[v]]=""}function p(_){mt(_),_.cdata!==""&&(bt(_,"oncdata",_.cdata),_.cdata=""),_.script!==""&&(bt(_,"onscript",_.script),_.script="")}c.prototype={end:function(){$(this)},write:Pt,resume:function(){return this.error=null,this},close:function(){return this.write(null)},flush:function(){p(this)}};var f;try{f=e("stream").Stream}catch{f=function(){}}var d=s.EVENTS.filter(function(_){return _!=="error"&&_!=="end"});function E(_,v){return new A(_,v)}function A(_,v){if(!(this instanceof A))return new A(_,v);f.apply(this),this._parser=new c(_,v),this.writable=!0,this.readable=!0;var W=this;this._parser.onend=function(){W.emit("end")},this._parser.onerror=function(L){W.emit("error",L),W._parser.error=null},this._decoder=null,d.forEach(function(L){Object.defineProperty(W,"on"+L,{get:function(){return W._parser["on"+L]},set:function(At){if(!At)return W.removeAllListeners(L),W._parser["on"+L]=At,At;W.on(L,At)},enumerable:!0,configurable:!1})})}A.prototype=Object.create(f.prototype,{constructor:{value:A}}),A.prototype.write=function(_){if(typeof r=="function"&&typeof r.isBuffer=="function"&&r.isBuffer(_)){if(!this._decoder){var v=e("string_decoder").StringDecoder;this._decoder=new v("utf8")}_=this._decoder.write(_)}return this._parser.write(_.toString()),this.emit("data",_),!0},A.prototype.end=function(_){return _&&_.length&&this.write(_),this._parser.end(),!0},A.prototype.on=function(_,v){var W=this;return!W._parser["on"+_]&&d.indexOf(_)!==-1&&(W._parser["on"+_]=function(){var L=arguments.length===1?[arguments[0]]:Array.apply(null,arguments);L.splice(0,0,_),W.emit.apply(W,L)}),f.prototype.on.call(W,_,v)};var x=`\r
  	 `,w="0124356789",I="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",D=`'"`,T=x+">",R="[CDATA[",P="DOCTYPE",O="http://www.w3.org/XML/1998/namespace",Q="http://www.w3.org/2000/xmlns/",Z={xml:O,xmlns:Q};x=z(x),w=z(w),I=z(I);var K=/[:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/,tt=/[:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\u00B7\u0300-\u036F\u203F-\u2040\.\d-]/,at=/[#:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/,ht=/[#:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\u00B7\u0300-\u036F\u203F-\u2040\.\d-]/;D=z(D),T=z(T);function z(_){return _.split("").reduce(function(v,W){return v[W]=!0,v},{})}function Y(_){return Object.prototype.toString.call(_)==="[object RegExp]"}function j(_,v){return Y(_)?!!v.match(_):_[v]}function lt(_,v){return!j(_,v)}var C=0;s.STATE={BEGIN:C++,BEGIN_WHITESPACE:C++,TEXT:C++,TEXT_ENTITY:C++,OPEN_WAKA:C++,SGML_DECL:C++,SGML_DECL_QUOTED:C++,DOCTYPE:C++,DOCTYPE_QUOTED:C++,DOCTYPE_DTD:C++,DOCTYPE_DTD_QUOTED:C++,COMMENT_STARTING:C++,COMMENT:C++,COMMENT_ENDING:C++,COMMENT_ENDED:C++,CDATA:C++,CDATA_ENDING:C++,CDATA_ENDING_2:C++,PROC_INST:C++,PROC_INST_BODY:C++,PROC_INST_ENDING:C++,OPEN_TAG:C++,OPEN_TAG_SLASH:C++,ATTRIB:C++,ATTRIB_NAME:C++,ATTRIB_NAME_SAW_WHITE:C++,ATTRIB_VALUE:C++,ATTRIB_VALUE_QUOTED:C++,ATTRIB_VALUE_CLOSED:C++,ATTRIB_VALUE_UNQUOTED:C++,ATTRIB_VALUE_ENTITY_Q:C++,ATTRIB_VALUE_ENTITY_U:C++,CLOSE_TAG:C++,CLOSE_TAG_SAW_WHITE:C++,SCRIPT:C++,SCRIPT_ENDING:C++},s.XML_ENTITIES={amp:"&",gt:">",lt:"<",quot:'"',apos:"'"},s.ENTITIES={amp:"&",gt:">",lt:"<",quot:'"',apos:"'",AElig:198,Aacute:193,Acirc:194,Agrave:192,Aring:197,Atilde:195,Auml:196,Ccedil:199,ETH:208,Eacute:201,Ecirc:202,Egrave:200,Euml:203,Iacute:205,Icirc:206,Igrave:204,Iuml:207,Ntilde:209,Oacute:211,Ocirc:212,Ograve:210,Oslash:216,Otilde:213,Ouml:214,THORN:222,Uacute:218,Ucirc:219,Ugrave:217,Uuml:220,Yacute:221,aacute:225,acirc:226,aelig:230,agrave:224,aring:229,atilde:227,auml:228,ccedil:231,eacute:233,ecirc:234,egrave:232,eth:240,euml:235,iacute:237,icirc:238,igrave:236,iuml:239,ntilde:241,oacute:243,ocirc:244,ograve:242,oslash:248,otilde:245,ouml:246,szlig:223,thorn:254,uacute:250,ucirc:251,ugrave:249,uuml:252,yacute:253,yuml:255,copy:169,reg:174,nbsp:160,iexcl:161,cent:162,pound:163,curren:164,yen:165,brvbar:166,sect:167,uml:168,ordf:170,laquo:171,not:172,shy:173,macr:175,deg:176,plusmn:177,sup1:185,sup2:178,sup3:179,acute:180,micro:181,para:182,middot:183,cedil:184,ordm:186,raquo:187,frac14:188,frac12:189,frac34:190,iquest:191,times:215,divide:247,OElig:338,oelig:339,Scaron:352,scaron:353,Yuml:376,fnof:402,circ:710,tilde:732,Alpha:913,Beta:914,Gamma:915,Delta:916,Epsilon:917,Zeta:918,Eta:919,Theta:920,Iota:921,Kappa:922,Lambda:923,Mu:924,Nu:925,Xi:926,Omicron:927,Pi:928,Rho:929,Sigma:931,Tau:932,Upsilon:933,Phi:934,Chi:935,Psi:936,Omega:937,alpha:945,beta:946,gamma:947,delta:948,epsilon:949,zeta:950,eta:951,theta:952,iota:953,kappa:954,lambda:955,mu:956,nu:957,xi:958,omicron:959,pi:960,rho:961,sigmaf:962,sigma:963,tau:964,upsilon:965,phi:966,chi:967,psi:968,omega:969,thetasym:977,upsih:978,piv:982,ensp:8194,emsp:8195,thinsp:8201,zwnj:8204,zwj:8205,lrm:8206,rlm:8207,ndash:8211,mdash:8212,lsquo:8216,rsquo:8217,sbquo:8218,ldquo:8220,rdquo:8221,bdquo:8222,dagger:8224,Dagger:8225,bull:8226,hellip:8230,permil:8240,prime:8242,Prime:8243,lsaquo:8249,rsaquo:8250,oline:8254,frasl:8260,euro:8364,image:8465,weierp:8472,real:8476,trade:8482,alefsym:8501,larr:8592,uarr:8593,rarr:8594,darr:8595,harr:8596,crarr:8629,lArr:8656,uArr:8657,rArr:8658,dArr:8659,hArr:8660,forall:8704,part:8706,exist:8707,empty:8709,nabla:8711,isin:8712,notin:8713,ni:8715,prod:8719,sum:8721,minus:8722,lowast:8727,radic:8730,prop:8733,infin:8734,ang:8736,and:8743,or:8744,cap:8745,cup:8746,int:8747,there4:8756,sim:8764,cong:8773,asymp:8776,ne:8800,equiv:8801,le:8804,ge:8805,sub:8834,sup:8835,nsub:8836,sube:8838,supe:8839,oplus:8853,otimes:8855,perp:8869,sdot:8901,lceil:8968,rceil:8969,lfloor:8970,rfloor:8971,lang:9001,rang:9002,loz:9674,spades:9824,clubs:9827,hearts:9829,diams:9830},Object.keys(s.ENTITIES).forEach(function(_){var v=s.ENTITIES[_],W=typeof v=="number"?String.fromCharCode(v):v;s.ENTITIES[_]=W});for(var ct in s.STATE)s.STATE[s.STATE[ct]]=ct;C=s.STATE;function xt(_,v,W){_[v]&&_[v](W)}function bt(_,v,W){_.textNode&&mt(_),xt(_,v,W)}function mt(_){_.textNode=F(_.opt,_.textNode),_.textNode&&xt(_,"ontext",_.textNode),_.textNode=""}function F(_,v){return _.trim&&(v=v.trim()),_.normalize&&(v=v.replace(/\s+/g," ")),v}function M(_,v){return mt(_),_.trackPosition&&(v+=`
  Line: `+_.line+`
  Column: `+_.column+`
  Char: `+_.c),v=new Error(v),_.error=v,xt(_,"onerror",v),_}function $(_){return _.sawRoot&&!_.closedRoot&&nt(_,"Unclosed root tag"),_.state!==C.BEGIN&&_.state!==C.BEGIN_WHITESPACE&&_.state!==C.TEXT&&M(_,"Unexpected end"),mt(_),_.c="",_.closed=!0,xt(_,"onend"),c.call(_,_.strict,_.opt),_}function nt(_,v){if(typeof _!="object"||!(_ instanceof c))throw new Error("bad call to strictFail");_.strict&&M(_,v)}function gt(_){_.strict||(_.tagName=_.tagName[_.looseCase]());var v=_.tags[_.tags.length-1]||_,W=_.tag={name:_.tagName,attributes:{}};_.opt.xmlns&&(W.ns=v.ns),_.attribList.length=0}function Tt(_,v){var W=_.indexOf(":"),L=W<0?["",_]:_.split(":"),At=L[0],B=L[1];return v&&_==="xmlns"&&(At="xmlns",B=""),{prefix:At,local:B}}function dt(_){if(_.strict||(_.attribName=_.attribName[_.looseCase]()),_.attribList.indexOf(_.attribName)!==-1||_.tag.attributes.hasOwnProperty(_.attribName)){_.attribName=_.attribValue="";return}if(_.opt.xmlns){var v=Tt(_.attribName,!0),W=v.prefix,L=v.local;if(W==="xmlns")if(L==="xml"&&_.attribValue!==O)nt(_,"xml: prefix must be bound to "+O+`
  Actual: `+_.attribValue);else if(L==="xmlns"&&_.attribValue!==Q)nt(_,"xmlns: prefix must be bound to "+Q+`
  Actual: `+_.attribValue);else{var At=_.tag,B=_.tags[_.tags.length-1]||_;At.ns===B.ns&&(At.ns=Object.create(B.ns)),At.ns[L]=_.attribValue}_.attribList.push([_.attribName,_.attribValue])}else _.tag.attributes[_.attribName]=_.attribValue,bt(_,"onattribute",{name:_.attribName,value:_.attribValue});_.attribName=_.attribValue=""}function wt(_,v){if(_.opt.xmlns){var W=_.tag,L=Tt(_.tagName);W.prefix=L.prefix,W.local=L.local,W.uri=W.ns[L.prefix]||"",W.prefix&&!W.uri&&(nt(_,"Unbound namespace prefix: "+JSON.stringify(_.tagName)),W.uri=L.prefix);var At=_.tags[_.tags.length-1]||_;W.ns&&At.ns!==W.ns&&Object.keys(W.ns).forEach(function(re){bt(_,"onopennamespace",{prefix:re,uri:W.ns[re]})});for(var B=0,g=_.attribList.length;B<g;B++){var m=_.attribList[B],N=m[0],G=m[1],J=Tt(N,!0),rt=J.prefix,_t=J.local,Rt=rt===""?"":W.ns[rt]||"",Ut={name:N,value:G,prefix:rt,local:_t,uri:Rt};rt&&rt!=="xmlns"&&!Rt&&(nt(_,"Unbound namespace prefix: "+JSON.stringify(rt)),Ut.uri=rt),_.tag.attributes[N]=Ut,bt(_,"onattribute",Ut)}_.attribList.length=0}_.tag.isSelfClosing=!!v,_.sawRoot=!0,_.tags.push(_.tag),bt(_,"onopentag",_.tag),v||(!_.noscript&&_.tagName.toLowerCase()==="script"?_.state=C.SCRIPT:_.state=C.TEXT,_.tag=null,_.tagName=""),_.attribName=_.attribValue="",_.attribList.length=0}function Et(_){if(!_.tagName){nt(_,"Weird empty close tag."),_.textNode+="</>",_.state=C.TEXT;return}if(_.script){if(_.tagName!=="script"){_.script+="</"+_.tagName+">",_.tagName="",_.state=C.SCRIPT;return}bt(_,"onscript",_.script),_.script=""}var v=_.tags.length,W=_.tagName;_.strict||(W=W[_.looseCase]());for(var L=W;v--;){var At=_.tags[v];if(At.name!==L)nt(_,"Unexpected close tag");else break}if(v<0){nt(_,"Unmatched closing tag: "+_.tagName),_.textNode+="</"+_.tagName+">",_.state=C.TEXT;return}_.tagName=W;for(var B=_.tags.length;B-- >v;){var g=_.tag=_.tags.pop();_.tagName=_.tag.name,bt(_,"onclosetag",_.tagName);var m={};for(var N in g.ns)m[N]=g.ns[N];var G=_.tags[_.tags.length-1]||_;_.opt.xmlns&&g.ns!==G.ns&&Object.keys(g.ns).forEach(function(J){var rt=g.ns[J];bt(_,"onclosenamespace",{prefix:J,uri:rt})})}v===0&&(_.closedRoot=!0),_.tagName=_.attribValue=_.attribName="",_.attribList.length=0,_.state=C.TEXT}function Bt(_){var v=_.entity,W=v.toLowerCase(),L,At="";return _.ENTITIES[v]?_.ENTITIES[v]:_.ENTITIES[W]?_.ENTITIES[W]:(v=W,v.charAt(0)==="#"&&(v.charAt(1)==="x"?(v=v.slice(2),L=parseInt(v,16),At=L.toString(16)):(v=v.slice(1),L=parseInt(v,10),At=L.toString(10))),v=v.replace(/^0+/,""),At.toLowerCase()!==v?(nt(_,"Invalid character entity"),"&"+_.entity+";"):String.fromCodePoint(L))}function It(_,v){v==="<"?(_.state=C.OPEN_WAKA,_.startTagPosition=_.position):lt(x,v)&&(nt(_,"Non-whitespace before first tag."),_.textNode=v,_.state=C.TEXT)}function Ft(_,v){var W="";return v<_.length&&(W=_.charAt(v)),W}function Pt(_){var v=this;if(this.error)throw this.error;if(v.closed)return M(v,"Cannot write after close. Assign an onready handler.");if(_===null)return $(v);for(var W=0,L="";L=Ft(_,W++),v.c=L,!!L;)switch(v.trackPosition&&(v.position++,L===`
  `?(v.line++,v.column=0):v.column++),v.state){case C.BEGIN:if(v.state=C.BEGIN_WHITESPACE,L==="\uFEFF")continue;It(v,L);continue;case C.BEGIN_WHITESPACE:It(v,L);continue;case C.TEXT:if(v.sawRoot&&!v.closedRoot){for(var At=W-1;L&&L!=="<"&&L!=="&";)L=Ft(_,W++),L&&v.trackPosition&&(v.position++,L===`
  `?(v.line++,v.column=0):v.column++);v.textNode+=_.substring(At,W-1)}L==="<"&&!(v.sawRoot&&v.closedRoot&&!v.strict)?(v.state=C.OPEN_WAKA,v.startTagPosition=v.position):(lt(x,L)&&(!v.sawRoot||v.closedRoot)&&nt(v,"Text data outside of root node."),L==="&"?v.state=C.TEXT_ENTITY:v.textNode+=L);continue;case C.SCRIPT:L==="<"?v.state=C.SCRIPT_ENDING:v.script+=L;continue;case C.SCRIPT_ENDING:L==="/"?v.state=C.CLOSE_TAG:(v.script+="<"+L,v.state=C.SCRIPT);continue;case C.OPEN_WAKA:if(L==="!")v.state=C.SGML_DECL,v.sgmlDecl="";else if(!j(x,L))if(j(K,L))v.state=C.OPEN_TAG,v.tagName=L;else if(L==="/")v.state=C.CLOSE_TAG,v.tagName="";else if(L==="?")v.state=C.PROC_INST,v.procInstName=v.procInstBody="";else{if(nt(v,"Unencoded <"),v.startTagPosition+1<v.position){var B=v.position-v.startTagPosition;L=new Array(B).join(" ")+L}v.textNode+="<"+L,v.state=C.TEXT}continue;case C.SGML_DECL:(v.sgmlDecl+L).toUpperCase()===R?(bt(v,"opencdata"),v.state=C.CDATA,v.sgmlDecl="",v.cdata=""):v.sgmlDecl+L==="--"?(v.state=C.COMMENT,v.comment="",v.sgmlDecl=""):(v.sgmlDecl+L).toUpperCase()===P?(v.state=C.DOCTYPE,(v.doctype||v.sawRoot)&&nt(v,"Inappropriately located doctype declaration"),v.doctype="",v.sgmlDecl=""):L===">"?(bt(v,"onsgmldeclaration",v.sgmlDecl),v.sgmlDecl="",v.state=C.TEXT):(j(D,L)&&(v.state=C.SGML_DECL_QUOTED),v.sgmlDecl+=L);continue;case C.SGML_DECL_QUOTED:L===v.q&&(v.state=C.SGML_DECL,v.q=""),v.sgmlDecl+=L;continue;case C.DOCTYPE:L===">"?(v.state=C.TEXT,bt(v,"ondoctype",v.doctype),v.doctype=!0):(v.doctype+=L,L==="["?v.state=C.DOCTYPE_DTD:j(D,L)&&(v.state=C.DOCTYPE_QUOTED,v.q=L));continue;case C.DOCTYPE_QUOTED:v.doctype+=L,L===v.q&&(v.q="",v.state=C.DOCTYPE);continue;case C.DOCTYPE_DTD:v.doctype+=L,L==="]"?v.state=C.DOCTYPE:j(D,L)&&(v.state=C.DOCTYPE_DTD_QUOTED,v.q=L);continue;case C.DOCTYPE_DTD_QUOTED:v.doctype+=L,L===v.q&&(v.state=C.DOCTYPE_DTD,v.q="");continue;case C.COMMENT:L==="-"?v.state=C.COMMENT_ENDING:v.comment+=L;continue;case C.COMMENT_ENDING:L==="-"?(v.state=C.COMMENT_ENDED,v.comment=F(v.opt,v.comment),v.comment&&bt(v,"oncomment",v.comment),v.comment=""):(v.comment+="-"+L,v.state=C.COMMENT);continue;case C.COMMENT_ENDED:L!==">"?(nt(v,"Malformed comment"),v.comment+="--"+L,v.state=C.COMMENT):v.state=C.TEXT;continue;case C.CDATA:L==="]"?v.state=C.CDATA_ENDING:v.cdata+=L;continue;case C.CDATA_ENDING:L==="]"?v.state=C.CDATA_ENDING_2:(v.cdata+="]"+L,v.state=C.CDATA);continue;case C.CDATA_ENDING_2:L===">"?(v.cdata&&bt(v,"oncdata",v.cdata),bt(v,"onclosecdata"),v.cdata="",v.state=C.TEXT):L==="]"?v.cdata+="]":(v.cdata+="]]"+L,v.state=C.CDATA);continue;case C.PROC_INST:L==="?"?v.state=C.PROC_INST_ENDING:j(x,L)?v.state=C.PROC_INST_BODY:v.procInstName+=L;continue;case C.PROC_INST_BODY:if(!v.procInstBody&&j(x,L))continue;L==="?"?v.state=C.PROC_INST_ENDING:v.procInstBody+=L;continue;case C.PROC_INST_ENDING:L===">"?(bt(v,"onprocessinginstruction",{name:v.procInstName,body:v.procInstBody}),v.procInstName=v.procInstBody="",v.state=C.TEXT):(v.procInstBody+="?"+L,v.state=C.PROC_INST_BODY);continue;case C.OPEN_TAG:j(tt,L)?v.tagName+=L:(gt(v),L===">"?wt(v):L==="/"?v.state=C.OPEN_TAG_SLASH:(lt(x,L)&&nt(v,"Invalid character in tag name"),v.state=C.ATTRIB));continue;case C.OPEN_TAG_SLASH:L===">"?(wt(v,!0),Et(v)):(nt(v,"Forward-slash in opening tag not followed by >"),v.state=C.ATTRIB);continue;case C.ATTRIB:if(j(x,L))continue;L===">"?wt(v):L==="/"?v.state=C.OPEN_TAG_SLASH:j(K,L)?(v.attribName=L,v.attribValue="",v.state=C.ATTRIB_NAME):nt(v,"Invalid attribute name");continue;case C.ATTRIB_NAME:L==="="?v.state=C.ATTRIB_VALUE:L===">"?(nt(v,"Attribute without value"),v.attribValue=v.attribName,dt(v),wt(v)):j(x,L)?v.state=C.ATTRIB_NAME_SAW_WHITE:j(tt,L)?v.attribName+=L:nt(v,"Invalid attribute name");continue;case C.ATTRIB_NAME_SAW_WHITE:if(L==="=")v.state=C.ATTRIB_VALUE;else{if(j(x,L))continue;nt(v,"Attribute without value"),v.tag.attributes[v.attribName]="",v.attribValue="",bt(v,"onattribute",{name:v.attribName,value:""}),v.attribName="",L===">"?wt(v):j(K,L)?(v.attribName=L,v.state=C.ATTRIB_NAME):(nt(v,"Invalid attribute name"),v.state=C.ATTRIB)}continue;case C.ATTRIB_VALUE:if(j(x,L))continue;j(D,L)?(v.q=L,v.state=C.ATTRIB_VALUE_QUOTED):(nt(v,"Unquoted attribute value"),v.state=C.ATTRIB_VALUE_UNQUOTED,v.attribValue=L);continue;case C.ATTRIB_VALUE_QUOTED:if(L!==v.q){L==="&"?v.state=C.ATTRIB_VALUE_ENTITY_Q:v.attribValue+=L;continue}dt(v),v.q="",v.state=C.ATTRIB_VALUE_CLOSED;continue;case C.ATTRIB_VALUE_CLOSED:j(x,L)?v.state=C.ATTRIB:L===">"?wt(v):L==="/"?v.state=C.OPEN_TAG_SLASH:j(K,L)?(nt(v,"No whitespace between attributes"),v.attribName=L,v.attribValue="",v.state=C.ATTRIB_NAME):nt(v,"Invalid attribute name");continue;case C.ATTRIB_VALUE_UNQUOTED:if(lt(T,L)){L==="&"?v.state=C.ATTRIB_VALUE_ENTITY_U:v.attribValue+=L;continue}dt(v),L===">"?wt(v):v.state=C.ATTRIB;continue;case C.CLOSE_TAG:if(v.tagName)L===">"?Et(v):j(tt,L)?v.tagName+=L:v.script?(v.script+="</"+v.tagName,v.tagName="",v.state=C.SCRIPT):(lt(x,L)&&nt(v,"Invalid tagname in closing tag"),v.state=C.CLOSE_TAG_SAW_WHITE);else{if(j(x,L))continue;lt(K,L)?v.script?(v.script+="</"+L,v.state=C.SCRIPT):nt(v,"Invalid tagname in closing tag."):v.tagName=L}continue;case C.CLOSE_TAG_SAW_WHITE:if(j(x,L))continue;L===">"?Et(v):nt(v,"Invalid characters in closing tag");continue;case C.TEXT_ENTITY:case C.ATTRIB_VALUE_ENTITY_Q:case C.ATTRIB_VALUE_ENTITY_U:var g,m;switch(v.state){case C.TEXT_ENTITY:g=C.TEXT,m="textNode";break;case C.ATTRIB_VALUE_ENTITY_Q:g=C.ATTRIB_VALUE_QUOTED,m="attribValue";break;case C.ATTRIB_VALUE_ENTITY_U:g=C.ATTRIB_VALUE_UNQUOTED,m="attribValue";break}L===";"?(v[m]+=Bt(v),v.entity="",v.state=g):j(v.entity.length?ht:at,L)?v.entity+=L:(nt(v,"Invalid character in entity name"),v[m]+="&"+v.entity+L,v.entity="",v.state=g);continue;default:throw new Error(v,"Unknown state: "+v.state)}return v.position>=v.bufferCheckPosition&&h(v),v}/*! http://mths.be/fromcodepoint v0.1.0 by @mathias */String.fromCodePoint||function(){var _=String.fromCharCode,v=Math.floor,W=function(){var L=16384,At=[],B,g,m=-1,N=arguments.length;if(!N)return"";for(var G="";++m<N;){var J=Number(arguments[m]);if(!isFinite(J)||J<0||J>1114111||v(J)!==J)throw RangeError("Invalid code point: "+J);J<=65535?At.push(J):(J-=65536,B=(J>>10)+55296,g=J%1024+56320,At.push(B,g)),(m+1===N||At.length>L)&&(G+=_.apply(null,At),At.length=0)}return G};Object.defineProperty?Object.defineProperty(String,"fromCodePoint",{value:W,configurable:!0,writable:!0}):String.fromCodePoint=W}()})(typeof a=="undefined"?this.sax={}:a)}).call(this,e("buffer").Buffer)},{buffer:3,stream:25,string_decoder:26}],44:[function(e,n,a){var r=r||{};r.Transform=r.Transform||(typeof e!="undefined"?e("./transform.js"):null);var s=s||(typeof e!="undefined"?e("../lib/base64-binary.js"):null),o=o||(typeof e!="undefined"?e("pako"):null);r.NIFTI_INTENT_GENMATRIX="NIFTI_INTENT_GENMATRIX",r.NIFTI_INTENT_LABEL="NIFTI_INTENT_LABEL",r.NIFTI_INTENT_NODE_INDEX="NIFTI_INTENT_NODE_INDEX",r.NIFTI_INTENT_POINTSET="NIFTI_INTENT_POINTSET",r.NIFTI_INTENT_RGB_VECTOR="NIFTI_INTENT_RGB_VECTOR",r.NIFTI_INTENT_RGBA_VECTOR="NIFTI_INTENT_RGBA_VECTOR",r.NIFTI_INTENT_SHAPE="NIFTI_INTENT_SHAPE",r.NIFTI_INTENT_TIME_SERIES="NIFTI_INTENT_TIME_SERIES",r.NIFTI_INTENT_TRIANGLE="NIFTI_INTENT_TRIANGLE",r.NIFTI_INTENT_NONE="NIFTI_INTENT_NONE",r.NIFTI_INTENT_VECTOR="NIFTI_INTENT_VECTOR",r.ATT_ARRAYINDEXINGORDER="ArrayIndexingOrder",r.ATT_DATATYPE="DataType",r.ATT_DIMENSIONALITY="Dimensionality",r.ATT_DIMN="Dim",r.ATT_ENCODING="Encoding",r.ATT_ENDIAN="Endian",r.ATT_EXTERNALFILENAME="ExternalFileName",r.ATT_EXTERNALFILEOFFSET="ExternalFileOffset",r.ATT_INTENT="Intent",r.ENCODING_ASCII="ASCII",r.ENCODING_BASE64BINARY="Base64Binary",r.ENCODING_GZIPBASE64BINARY="GZipBase64Binary",r.ENCODING_EXTERNALFILEBINARY="ExternalFileBinary",r.TYPE_NIFTI_TYPE_UINT8="NIFTI_TYPE_UINT8",r.TYPE_NIFTI_TYPE_INT32="NIFTI_TYPE_INT32",r.TYPE_NIFTI_TYPE_FLOAT32="NIFTI_TYPE_FLOAT32",r.DataArray=r.DataArray||function(){this.attributes=null,this.metadata={},this.transforms=[],this.data=null,this.dataConverted=!1},r.DataArray.prototype.isPointSet=function(){return this.attributes[r.ATT_INTENT]===r.NIFTI_INTENT_POINTSET},r.DataArray.prototype.isTriangles=function(){return this.attributes[r.ATT_INTENT]===r.NIFTI_INTENT_TRIANGLE},r.DataArray.prototype.isNormals=function(){return this.attributes[r.ATT_INTENT]===r.NIFTI_INTENT_VECTOR},r.DataArray.prototype.isColors=function(){return this.attributes[r.ATT_INTENT]===r.NIFTI_INTENT_RGB_VECTOR||this.attributes[r.ATT_INTENT]===r.NIFTI_INTENT_RGBA_VECTOR},r.DataArray.prototype.getDimensions=function(){return parseInt(this.attributes[r.ATT_DIMENSIONALITY])},r.DataArray.prototype.getNumElements=function(h){return h===void 0&&(h=0),parseInt(this.attributes[r.ATT_DIMN+h])},r.DataArray.prototype.isScalar=function(){return this.getDimensions()==1},r.DataArray.prototype.isTriple=function(){return this.getDimensions()==2&&this.getNumElements(1)==3},r.DataArray.prototype.isQuad=function(){return this.getDimensions()==2&&this.getNumElements(1)==4},r.DataArray.prototype.isAscii=function(){return r.ENCODING_ASCII===this.attributes[r.ATT_ENCODING]},r.DataArray.prototype.isBase64Binary=function(){return r.ENCODING_BASE64BINARY===this.attributes[r.ATT_ENCODING]},r.DataArray.prototype.isGzipBase64Binary=function(){return r.ENCODING_GZIPBASE64BINARY===this.attributes[r.ATT_ENCODING]},r.DataArray.prototype.isBase64Encoded=function(){return this.isBase64Binary()||this.isGzipBase64Binary()},r.DataArray.prototype.isFloat32=function(){return r.TYPE_NIFTI_TYPE_FLOAT32===this.attributes[r.ATT_DATATYPE]},r.DataArray.prototype.isInt32=function(){return r.TYPE_NIFTI_TYPE_INT32===this.attributes[r.ATT_DATATYPE]},r.DataArray.prototype.isUnsignedInt8=function(){return r.TYPE_NIFTI_TYPE_UINT8===this.attributes[r.ATT_DATATYPE]},r.DataArray.prototype.getData=function(){return this.dataConverted||(this.dataConverted=!0,this.isAscii()?this.isUnsignedInt8()?r.DataArray.readUnsignedInt8ASCII(this):this.isInt32()?r.DataArray.readSignedInt32ASCII(this):r.DataArray.readFloat32ASCII(this):this.isBase64Binary()?this.isUnsignedInt8()?r.DataArray.readUnsignedInt8Base64(this):this.isInt32()?r.DataArray.readSignedInt32Base64(this):r.DataArray.readFloat32Base64(this):this.isGzipBase64Binary()&&(this.isUnsignedInt8()?r.DataArray.readUnsignedInt8GZIPBase64(this):this.isInt32()?r.DataArray.readSignedInt32GZIPBase64(this):r.DataArray.readFloat32GZIPBase64(this))),this.data},r.DataArray.prototype.getDataAsync=function(h,l){this.dataConverted||(this.dataConverted=!0,this.isAscii()?(this.isUnsignedInt8()?r.DataArray.readUnsignedInt8ASCII(this):this.isInt32()?r.DataArray.readSignedInt32ASCII(this):r.DataArray.readFloat32ASCII(this),l()):this.isBase64Binary()?(this.isUnsignedInt8()?r.DataArray.readUnsignedInt8Base64(this):this.isInt32()?r.DataArray.readSignedInt32Base64(this):r.DataArray.readFloat32Base64(this),l()):this.isGzipBase64Binary()&&(this.isUnsignedInt8()?r.DataArray.readUnsignedInt8GZIPBase64Async(this,h,l):this.isInt32()?r.DataArray.readSignedInt32GZIPBase64Async(this,h,l):r.DataArray.readFloat32GZIPBase64Async(this,h,l)))},r.DataArray.readFloat32ASCII=function(h){var l=/[+-]?\d+(\.\d+)?/g;h.data=new Float32Array(h.data.match(l).map(function(p){return parseFloat(p)}))},r.DataArray.readSignedInt32ASCII=function(h){var l=/[+-]?\d+(\.\d+)?/g;h.data=new Int32Array(h.data.match(l).map(function(p){return parseInt(p)}))},r.DataArray.readUnsignedInt8ASCII=function(h){var l=/[+-]?\d+(\.\d+)?/g;h.data=new Uint8Array(h.data.match(l).map(function(p){return parseInt(p)}))},r.DataArray.readUnsignedInt8Base64=function(h){var l=s.decodeArrayBuffer(h.data);h.data=new Uint8Array(l,0,l.byteLength)},r.DataArray.readSignedInt32Base64=function(h){var l=s.decodeArrayBuffer(h.data);h.data=new Int32Array(l,0,l.byteLength/4)},r.DataArray.readFloat32Base64=function(h){var l=s.decodeArrayBuffer(h.data);h.data=new Float32Array(l,0,l.byteLength/4)},r.DataArray.readUnsignedInt8GZIPBase64=function(h){var l=s.decodeArrayBuffer(h.data);l=o.inflate(l).buffer,h.data=new Uint8Array(l,0,l.byteLength)},r.DataArray.readUnsignedInt8GZIPBase64Async=function(h,l,p){var f=s.decodeArrayBuffer(h.data),d=new o.Inflate,E=function(){h.data=new Uint8Array(d.result.buffer,0,d.result.buffer.byteLength),p(h.data)};setTimeout(function(){r.DataArray.readNext(d,f,0,l,E)},0)},r.DataArray.readSignedInt32GZIPBase64=function(h){var l=s.decodeArrayBuffer(h.data);l=o.inflate(l).buffer,h.data=new Int32Array(l,0,l.byteLength/4)},r.DataArray.readSignedInt32GZIPBase64Async=function(h,l,p){var f=s.decodeArrayBuffer(h.data),d=new o.Inflate,E=function(){h.data=new Int32Array(d.result.buffer,0,d.result.buffer.byteLength/4),p(h.data)};setTimeout(function(){r.DataArray.readNext(d,f,0,l,E)},0)},r.DataArray.readFloat32GZIPBase64=function(h){var l=s.decodeArrayBuffer(h.data);l=o.inflate(l).buffer,h.data=new Float32Array(l,0,l.byteLength/4)},r.DataArray.readFloat32GZIPBase64Async=function(h,l,p){var f=s.decodeArrayBuffer(h.data),d=new o.Inflate,E=function(){h.data=new Float32Array(d.result.buffer,0,d.result.buffer.byteLength/4),p(h.data)};setTimeout(function(){r.DataArray.readNext(d,f,0,l,E)},0)},r.DataArray.readNext=function(h,l,p,f,d){var E=p+32768,A=E>=l.byteLength;h.push(l.slice(p,p+4096*8),A),A?d():(f(E/l.byteLength),setTimeout(function(){r.DataArray.readNext(h,l,E,f,d)},0))};var c=typeof n;c!=="undefined"&&n.exports&&(n.exports=r.DataArray)},{"../lib/base64-binary.js":1,"./transform.js":47,pako:27}],45:[function(e,n,a){var r=r||{};r.Utils=r.Utils||(typeof e!="undefined"?e("./utilities.js"):null),r.DataArray=r.DataArray||(typeof e!="undefined"?e("./dataArray.js"):null),r.Transform=r.Transform||(typeof e!="undefined"?e("./transform.js"):null),r.Label=r.Label||(typeof e!="undefined"?e("./label.js"):null);var s=s||(typeof e!="undefined"?e("sax"):null);r.TAG_TRANSFORM="CoordinateSystemTransformMatrix",r.TAG_DATA="Data",r.TAG_DATAARRAY="DataArray",r.TAG_DATASPACE="DataSpace",r.TAG_GIFTI="GIFTI",r.TAG_LABEL="Label",r.TAG_LABELTABLE="LabelTable",r.TAG_MATRIXDATA="MatrixData",r.TAG_METADATA="MetaData",r.TAG_MD="MD",r.TAG_NAME="Name",r.TAG_TRANSFORMEDSPACE="TransformedSpace",r.TAG_VALUE="Value",r.GIFTI=r.GIFTI||function(){this.attributes=null,this.metadata={},this.dataArrays=[],this.labelTable=[]},r.GIFTI.prototype.getPointsDataArray=function(){var c;for(c=0;c<this.dataArrays.length;c+=1)if(this.dataArrays[c].isPointSet())return this.dataArrays[c];return null},r.GIFTI.prototype.getTrianglesDataArray=function(){var c;for(c=0;c<this.dataArrays.length;c+=1)if(this.dataArrays[c].isTriangles())return this.dataArrays[c];return null},r.GIFTI.prototype.getNormalsDataArray=function(){var c;for(c=0;c<this.dataArrays.length;c+=1)if(this.dataArrays[c].isNormals())return this.dataArrays[c];return null},r.GIFTI.prototype.getColorsDataArray=function(){var c;for(c=0;c<this.dataArrays.length;c+=1)if(this.dataArrays[c].isColors())return this.dataArrays[c];return null},r.GIFTI.prototype.getNumPoints=function(){var c;for(c=0;c<this.dataArrays.length;c+=1)if(this.dataArrays[c].isPointSet())return this.dataArrays[c].getNumElements();return 0},r.GIFTI.prototype.getNumTriangles=function(){var c;for(c=0;c<this.dataArrays.length;c+=1)if(this.dataArrays[c].isTriangles())return this.dataArrays[c].getNumElements();return 0},r.isThisFormat=function(c){return c.indexOf(".gii")!==-1},r.parse=function(c){var h=s.parser(!0),l=null,p=null,f=null,d=null,E=null,A=null,x="",w=null,I=!1,D=!1,T=!1,R=!1,P=!1,O=!1,Q=!1;return h.onopentag=function(Z){Z.name===r.TAG_GIFTI?(f=l=new r.GIFTI,l.attributes=Z.attributes):Z.name===r.TAG_METADATA||Z.name===r.TAG_MD||(Z.name===r.TAG_NAME?I=!0:Z.name===r.TAG_VALUE?D=!0:Z.name===r.TAG_LABELTABLE||(Z.name===r.TAG_LABEL?(Q=!0,w=new r.Label(Z.attributes)):Z.name===r.TAG_DATAARRAY?(f=p=new r.DataArray,l.dataArrays.push(p),p.attributes=Z.attributes):Z.name===r.TAG_TRANSFORM?(A=new r.Transform,p.transforms.push(A)):Z.name===r.TAG_DATASPACE?T=!0:Z.name===r.TAG_TRANSFORMEDSPACE?R=!0:Z.name===r.TAG_MATRIXDATA?P=!0:Z.name===r.TAG_DATA&&(O=!0)))},h.ontext=h.oncdata=function(Z){(I||D||T||R||P||O||Q)&&(x+=Z)},h.onclosetag=function(Z){Z===r.TAG_GIFTI||Z===r.TAG_METADATA||(Z===r.TAG_MD?f&&(f.metadata[d]=E):Z===r.TAG_NAME?(I=!1,d=x,x=""):Z===r.TAG_VALUE?(D=!1,E=x,x=""):Z===r.TAG_LABELTABLE||(Z===r.TAG_LABEL?(w.label=x.trim(),l.labelTable[w.key]=w,x=""):Z===r.TAG_DATAARRAY||Z===r.TAG_TRANSFORM||(Z===r.TAG_DATASPACE?(T=!1,A.dataSpace=x,x=""):Z===r.TAG_TRANSFORMEDSPACE?(R=!1,A.transformedSpace=x,x=""):Z===r.TAG_MATRIXDATA?(P=!1,A.matrixData=x,x=""):Z===r.TAG_DATA&&(O=!1,p.data=x,x=""))))},h.onerror=function(Z){console.log(Z)},h.write(c).close(),l};var o=typeof n;o!=="undefined"&&n.exports&&(n.exports=r)},{"./dataArray.js":44,"./label.js":46,"./transform.js":47,"./utilities.js":48,sax:43}],46:[function(e,n,a){var r=r||{};r.ATT_KEY="Key",r.ATT_RED="Red",r.ATT_GREEN="Green",r.ATT_BLUE="Blue",r.ATT_ALPHA="Alpha",r.ATT_INDEX="Index",r.Label=r.Label||function(o){this.key=o[r.ATT_KEY]||o[r.ATT_INDEX],this.r=parseFloat(o[r.ATT_RED]),this.g=parseFloat(o[r.ATT_GREEN]),this.b=parseFloat(o[r.ATT_BLUE]),this.a=parseFloat(o[r.ATT_ALPHA]),this.label=null};var s=typeof n;s!=="undefined"&&n.exports&&(n.exports=r.Label)},{}],47:[function(e,n,a){var r=r||{};r.Transform=r.Transform||function(){this.dataSpace=null,this.transformedSpace=null,this.matrixData=null};var s=typeof n;s!=="undefined"&&n.exports&&(n.exports=r.Transform)},{}],48:[function(e,n,a){var r=r||{};r.Utils=r.Utils||{},r.Utils.crcTable=null,r.Utils.makeCRCTable=function(){for(var o,c=[],h=0;h<256;h++){o=h;for(var l=0;l<8;l++)o=o&1?3988292384^o>>>1:o>>>1;c[h]=o}return c},r.Utils.crc32=function(o){for(var c=r.Utils.crcTable||(r.Utils.crcTable=r.Utils.makeCRCTable()),h=-1,l=0;l<o.byteLength;l++)h=h>>>8^c[(h^o.getUint8(l))&255];return(h^-1)>>>0};var s=typeof n;s!=="undefined"&&n.exports&&(n.exports=r.Utils)},{}]},{},[45])(45)})})(Ma);const wi=new Ie;var Yt=function(t,i,e="",n="green",a=1,r=!0,s,o=0,c=null,h=null,l=null){this.name=e,this.posNormClr=t,this.tris=i,this.id=Fa(),this.colorMap=n,this.opacity=a>1?1:a,this.visible=r,this.indexBuffer=s.createBuffer(),s.bindBuffer(s.ELEMENT_ARRAY_BUFFER,this.indexBuffer),s.bufferData(s.ELEMENT_ARRAY_BUFFER,new Int32Array(i),s.STATIC_DRAW),this.vertexBuffer=s.createBuffer(),s.bindBuffer(s.ARRAY_BUFFER,this.vertexBuffer),s.bufferData(s.ARRAY_BUFFER,new Float32Array(t),s.STATIC_DRAW),this.indexCount=i.length,this.vao=s.createVertexArray(),s.bindVertexArray(this.vao),s.bindBuffer(s.ELEMENT_ARRAY_BUFFER,this.indexBuffer),s.bindBuffer(s.ARRAY_BUFFER,this.vertexBuffer),s.enableVertexAttribArray(0),s.vertexAttribPointer(0,3,s.FLOAT,!1,28,0),s.enableVertexAttribArray(1),s.vertexAttribPointer(1,3,s.FLOAT,!1,28,12),s.enableVertexAttribArray(2),s.vertexAttribPointer(2,4,s.UNSIGNED_BYTE,!0,28,24),s.bindVertexArray(null)};Yt.prototype.colorMaps=function(t=!0){let i=[];for(const[e]of Object.entries(Kt))i.push(e);return t===!0?i.sort():i},Yt.prototype.setColorMap=function(t){this.colorMaps().indexOf(t.toLowerCase())!==-1?(this.colorMap=t.toLowerCase(),this.calMinMax()):wi.warn(`color map ${t} is not a valid color map`)};function Nh(t,i){var e=[],n=[],a=[],r=[],s,o=t.length,c,h,l,p,f,d,E,A,x,w;let I=new Float32Array(o);for(c=i.length,s=0;s<c;s+=3)A=i[s]*3,x=i[s+1]*3,w=i[s+2]*3,e.x=t[A],e.y=t[A+1],e.z=t[A+2],n.x=t[x],n.y=t[x+1],n.z=t[x+2],a.x=t[w],a.y=t[w+1],a.z=t[w+2],h=n.x-e.x,l=n.y-e.y,p=n.z-e.z,f=a.x-e.x,d=a.y-e.y,E=a.z-e.z,r[0]=d*p-E*l,r[1]=E*h-f*p,r[2]=f*l-d*h,I[A]+=r[0],I[A+1]+=r[1],I[A+2]+=r[2],I[x]+=r[0],I[x+1]+=r[1],I[x+2]+=r[2],I[w]+=r[0],I[w+1]+=r[1],I[w+2]+=r[2];for(s=0;s<o;s+=3){r[0]=-1*I[s],r[1]=-1*I[s+1],r[2]=-1*I[s+2];let D=r[0]*r[0]+r[1]*r[1]+r[2]*r[2];D>0&&(D=1/Math.sqrt(D),r[0]*=D,r[1]*=D,r[2]*=D),I[s]=r[0],I[s+1]=r[1],I[s+2]=r[2]}return I}Yt.generatePosNormClr=function(t,i,e){(t.length<3||e.length<4)&&wi.error("Catastrophic failure generatePosNormClr()");let n=Nh(t,i),a=t.length/3,r=a===e.length/4;var s=new Float32Array(a*7),o=new Uint8Array(s.buffer);let c=0,h=0,l=0,p=24;for(let f=0;f<a;f++)s[l+0]=t[c+0],s[l+1]=t[c+1],s[l+2]=t[c+2],s[l+3]=n[c+0],s[l+4]=n[c+1],s[l+5]=n[c+2],o[p]=e[h+0],o[p+1]=e[h+1],o[p+2]=e[h+2],o[p+3]=e[h+3],r&&(h+=4),c+=3,l+=7,p+=28;return s},Yt.readTxtVTK=function(t){var i=new TextDecoder("utf-8"),e=i.decode(t),n=e.split(`
  `),a=n.length;(a<7||!n[0].startsWith("# vtk DataFile"))&&alert("Invalid VTK image"),n[2].startsWith("ASCII")||alert("Not ASCII VTK mesh");let r=3;for(;n[r].length<1;)r++;for(n[r].includes("POLYDATA")||alert("Not ASCII VTK polydata"),r++;n[r].length<1;)r++;n[r].startsWith("POINTS")||alert("Not VTK POINTS");let s=n[r].split(" "),o=parseInt(s[1]),c=o*3;var h=new Float32Array(o*3);let l=0;for(;l<o*3;){r++;let E=n[r].trim().split(" ");for(let A=0;A<E.length&&!(l>=c);A++)h[l]=parseFloat(E[A]),l++}let p=[];for(r++;n[r].length<1;)r++;if(s=n[r].split(" "),r++,s[0].includes("TRIANGLE_STRIPS")){let d=parseInt(s[1]);for(let E=0;E<d;E++){let A=n[r].trim();r++;let x=A.split(" "),w=parseInt(x[0])-2,I=1;for(let D=0;D<w;D++)D%2?(p.push(parseInt(x[I+2])),p.push(parseInt(x[I+1])),p.push(parseInt(x[I]))):(p.push(parseInt(x[I])),p.push(parseInt(x[I+1])),p.push(parseInt(x[I+2]))),I+=1}}else if(s[0].includes("POLYGONS")){let d=parseInt(s[1]);for(let E=0;E<d;E++){let A=n[r].trim();r++;let x=A.split(" "),w=parseInt(x[0])-2,I=parseInt(x[1]),D=parseInt(x[2]);for(let T=0;T<w;T++){let R=parseInt(x[3+T]);p.push(I),p.push(D),p.push(R),D=R}}}else alert("Unsupported ASCII VTK datatype ",s[0]);var f=new Int32Array(p);return{positions:h,indices:f}},Yt.readVTK=function(t){let i=t.byteLength;if(i<20)throw new Error("File too small to be VTK: bytes = "+t.byteLength);var e=new Uint8Array(t);let n=0;function a(){for(;n<i&&e[n]===10;)n++;let d=n;for(;n<i&&e[n]!==10;)n++;return n++,n-d<1?"":new TextDecoder().decode(t.slice(d,n-1))}let r=a();if(r.startsWith("# vtk DataFile")||alert("Invalid VTK mesh"),r=a(),r=a(),r.startsWith("ASCII"))return this.readTxtVTK(t);r.startsWith("BINARY")||alert("Invalid VTK image, expected ASCII or BINARY",r),r=a(),r.includes("POLYDATA")||alert("Only able to read VTK POLYDATA",r),r=a(),(!r.includes("POINTS")||!r.includes("float"))&&alert("Only able to read VTK float POINTS",r);let s=r.split(" "),c=parseInt(s[1])*3;var h=new Float32Array(c),l=new DataView(t);for(let d=0;d<c;d++)h[d]=l.getFloat32(n,!1),n+=4;r=a(),s=r.split(" ");let p=[];if(s[0].includes("TRIANGLE_STRIPS")){let d=parseInt(s[1]);for(let E=0;E<d;E++){let A=l.getInt32(n,!1)-2;n+=4;for(let x=0;x<A;x++)x%2?(p.push(l.getInt32(n+8,!1)),p.push(l.getInt32(n+4,!1)),p.push(l.getInt32(n,!1))):(p.push(l.getInt32(n,!1)),p.push(l.getInt32(n+4,!1)),p.push(l.getInt32(n+8,!1))),n+=4;n+=8}}else if(s[0].includes("POLYGONS")){let d=parseInt(s[1]);for(let E=0;E<d;E++){let A=l.getInt32(n,!1)-2;n+=4;let x=l.getInt32(n,!1);n+=4;let w=l.getInt32(n,!1);n+=4;for(let I=0;I<A;I++){let D=l.getInt32(n,!1);n+=4,p.push(x),p.push(w),p.push(D),w=D}}}else alert("Unsupported ASCII VTK datatype ",s[0]);var f=new Int32Array(p);return{positions:h,indices:f}},Yt.readMZ3=function(t){if(t.byteLength<20)throw new Error("File too small to be mz3: bytes = "+t.byteLength);var i=new DataView(t),e=i.getUint16(0,!0),n=t;if(e===35615||e===8075){var a;if(typeof Ca=="object"&&typeof Ln=="function")a=Wi(new Uint8Array(t));else if(typeof Zlib=="object"&&typeof Zlib.Gunzip=="function"){var r=new Zlib.Gunzip(new Uint8Array(t));a=r.decompress()}else alert("Required script missing: include either pako.min.js or gunzip.min.js");var i=new DataView(a.buffer),e=i.getUint16(0,!0);n=a.buffer}var s=i.getUint16(2,!0),o=i.getUint32(4,!0),c=i.getUint32(8,!0),h=i.getUint32(12,!0);if(wi.debug("MZ3 magic %d attr %d face %d vert %d skip %d",e,s,o,c,h),e!=23117)throw new Error("Invalid MZ3 file");var l=s&1,p=s&2,f=s&4,d=s&8,E=s&32;if(s>63)throw new Error("Unsupported future version of MZ3 file");if(!l||!p||o<1||c<3)throw new Error("Not a mesh MZ3 file (maybe scalar)");var A=16+h,x=null;l&&(x=new Int32Array(n,A,o*3,!0),A+=o*3*4);var w=null;p&&(w=new Float32Array(n,A,c*3,!0),A+=c*3*4);var I=null;if(f){I=new Float32Array(c*3);var D=new Uint8Array(n,A,c*4,!0);A+=c*4;for(var T=0,R=0,P=0;P<c;P++){for(var O=0;O<3;O++)I[T]=D[R]/255,T++,R++;R++}}var Q=null;if(!f&&d&&E){var Z=new Float32Array(n,A,c,!0);A+=c*4,Q=new Float32Array(c*2);for(var P=0;P<c;P++)Q[P*2]=Q[P*2+1]=Z[P]}return{positions:w,indices:x,uv2:Q,colors:I}},Yt.readSTL=function(t){if(t.byteLength<80+4+50)throw new Error("File too small to be STL: bytes = "+t.byteLength);var i=new DataView(t);if(i.getUint32(80,!0)===1768714099)throw new Error("Only able to read binary (not ASCII) STL files.");var n=i.getUint32(80,!0);let a=3*n;if(t.byteLength<80+4+n*50)throw new Error("STL file too small to store triangles = ",n);var r=new Int32Array(a),s=new Float32Array(a*3);let o=80+4+12,c=0;for(var h=0;h<n;h++){for(var l=0;l<9;l++)s[c]=i.getFloat32(o,!0),c+=1,o+=4;o+=14}for(var h=0;h<a;h++)r[h]=h;return{positions:s,indices:r}},Yt.makeLut=function(t,i,e,n,a){for(var r=new Uint8ClampedArray(1024),s=0;s<a.length-1;s++)for(var o=a[s],c=a[s+1],h=c-o,l=o*4,p=o;p<=c;p++){var f=(p-o)/h;r[l++]=t[s]+f*(t[s+1]-t[s]),r[l++]=i[s]+f*(i[s+1]-i[s]),r[l++]=e[s]+f*(e[s+1]-e[s]),r[l++]=n[s]+f*(n[s+1]-n[s])}return r},Yt.colormap=function(t=""){let i={min:0,max:0,R:[0,128,255],G:[0,0,0],B:[0,0,0],A:[0,64,128],I:[0,128,255]};return this.makeLut(i.R,i.G,i.B,i.A,i.I)},Yt.loadConnectomeFromJSON=async function(t,i,e="",n="",a=1,r=!0){let s=null,o=[];t.hasOwnProperty("name")&&(e=t.name);let c=t.nodes.X.length,h=!1;if(c>1&&t.hasOwnProperty("edges")){let I=t.edges.length;(I=c*c)?h=!0:console.log("Expected %d edges not %d",c*c,I)}let l=[],p=[],f=this.colormap(t.nodeColormap),d=this.colormap(t.nodeColormapNegative),E=t.hasOwnProperty("nodeColormapNegative"),A=t.nodeMinColor,x=t.nodeMaxColor;for(let I=0;I<c;I++){let D=t.nodes.Size[I]*t.nodeScale;if(D<=0)continue;let T=t.nodes.Color[I],R=!1;if(E&&T<0&&(R=!0,T=-T),A<x){if(T<A)continue;T=(T-A)/(x-A)}else T=1;T=Math.round(Math.max(Math.min(255,T*255)),1)*4;let P=[f[T],f[T+1],f[T+2],255];R&&(P=[d[T],d[T+1],d[T+2],255]);let O=[t.nodes.X[I],t.nodes.Y[I],t.nodes.Z[I]];Ht.makeColoredSphere(l,o,p,D,O,P)}if(h){f=this.colormap(t.edgeColormap),d=this.colormap(t.edgeColormapNegative),E=t.hasOwnProperty("edgeColormapNegative"),A=t.edgeMin,x=t.edgeMax;for(let I=0;I<c-1;I++)for(let D=I+1;D<c;D++){let T=t.edges[I*c+D],R=!1;E&&T<0&&(R=!0,T=-T);let P=T*t.edgeScale;if(P<=0)continue;if(A<x){if(T<A)continue;T=(T-A)/(x-A)}else T=1;T=Math.round(Math.max(Math.min(255,T*255)),1)*4;let O=[f[T],f[T+1],f[T+2],255];R&&(O=[d[T],d[T+1],d[T+2],255]);let Q=[t.nodes.X[I],t.nodes.Y[I],t.nodes.Z[I]],Z=[t.nodes.X[D],t.nodes.Y[D],t.nodes.Z[D]];Ht.makeColoredCylinder(l,o,p,Q,Z,P,O)}}let w=this.generatePosNormClr(l,o,p);return w?s=new Yt(w,o,e,n,a,r,i):alert("Unable to load buffer properly from mesh"),s},Yt.loadFromUrl=async function(t,i,e="",n="yellow",a=1,r=[255,255,255,255],s=!0){let o=await fetch(t),c=null;if(!o.ok)throw Error(o.statusText);e=t.split("/").slice(-1)[0];let l=[];var p=[],f=/(?:\.([^.]+))?$/;let d=f.exec(e)[1];if(d.toUpperCase()==="STL"){let D=await o.arrayBuffer(),T=this.readSTL(D);p=T.positions.slice(),l=T.indices.slice()}else if(d.toUpperCase()==="VTK"){let D=await o.arrayBuffer(),T=this.readVTK(D);p=T.positions.slice(),l=T.indices.slice()}else if(d.toUpperCase()==="MZ3"){let D=await o.arrayBuffer(),T=this.readMZ3(D);if(p=T.positions.slice(),l=T.indices.slice(),T.colors&&T.colors.length===p.length){r=[];let R=p.length/3,P=0;for(let O=0;O<R;O++)r.push(T.colors[P]*255),r.push(T.colors[P+1]*255),r.push(T.colors[P+2]*255),r.push(255),P+=3}}else if(d.toUpperCase()==="OBJ"){var E=(await o.text()).split(`
  `),A=E.length;let T=[];for(let R=0;R<A;R++){let P=E[R];if(P[0]==="v"&&P[1]===" "){let O=P.split(" ");p.push(parseFloat(O[1])),p.push(parseFloat(O[2])),p.push(parseFloat(O[3]))}if(P[0]==="f"){let O=P.split(" "),Q=O[1].split("/");T.push(parseInt(Q-1)),Q=O[2].split("/"),T.push(parseInt(Q-1)),Q=O[3].split("/"),T.push(parseInt(Q-1))}l=new Int32Array(T)}}else if(d.toUpperCase()==="GII"){let D=await o.text(),T=Ma.exports.parse(D);p=T.getPointsDataArray().getData(),l=T.getTrianglesDataArray().getData()}else{let D=await o.arrayBuffer();const T=new DataView(D);let R=T.getUint32(0,!1),P=T.getUint32(4,!1);(R!==4294966883||P!==1919246708)&&wi.debug("Unable to recognize file type: does not appear to be FreeSurfer format.");let O=0;for(;T.getUint8(O)!==10;)O++;O+=2;let Q=T.getUint32(O,!1);O+=4;let Z=T.getUint32(O,!1);O+=4,Q*=3,p=new Float32Array(Q);for(let K=0;K<Q;K++)p[K]=T.getFloat32(O,!1),O+=4;Z*=3,l=new Int32Array(Z);for(let K=0;K<Z;K++)l[K]=T.getUint32(O,!1),O+=4}let x=p.length/3;if(l.length/3<1||x<3){alert("Mesh should have at least one triangle and three vertices");return}l.constructor!==Int32Array&&alert("Expected triangle indices to be of type INT32");let I=this.generatePosNormClr(p,l,r);return I?c=new Yt(I,l,e,n,a,s,i):alert("Unable to load buffer properly from mesh"),c},Yt.readFileAsync=function(t){return new Promise((i,e)=>{let n=new FileReader;n.onload=()=>{i(n.result)},n.onerror=e,n.readAsArrayBuffer(t)})},Yt.loadFromFile=async function(t,i="",e="blue",n=1,a=!0,r=.02,s=!1,o=!0){let c=null;try{let h=await this.readFileAsync(t);c=new Yt(h,i,e,n,a,r,s,o)}catch(h){wi.debug(h)}return c},String.prototype.getBytes=function(){let t=[];for(var i=0;i<this.length;i++)t.push(this.charCodeAt(i));return t};var ka="data:image/png;base64,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",Pa={atlas:{type:"msdf",distanceRange:2,size:59.65625,width:512,height:256,yOrigin:"bottom"},metrics:{emSize:1,lineHeight:1.171875,ascender:.927734375,descender:-.244140625,underlineY:-.09765625,underlineThickness:.048828125},glyphs:[{unicode:32,advance:.24755859375},{unicode:33,advance:.25732421875,planeBounds:{left:.056159633438645884,bottom:-.02437761405677056,right:.20702396031135412,top:.7299440203067705},atlasBounds:{left:488.5,bottom:145.5,right:497.5,top:190.5}},{unicode:34,advance:.31982421875,planeBounds:{left:.049409125974004715,bottom:.48691155587022,right:.2840869677759953,top:.77187750662978},atlasBounds:{left:486.5,bottom:213.5,right:500.5,top:230.5}},{unicode:35,advance:.61572265625,planeBounds:{left:.037219103997511785,bottom:-.02169206718177056,right:.6239137085024882,top:.7326295671817705},atlasBounds:{left:66.5,bottom:51.5,right:101.5,top:96.5}},{unicode:36,advance:.5615234375,planeBounds:{left:.02956531458715296,bottom:-.12381369908983761,right:.5324464041628472,top:.8484230740898377},atlasBounds:{left:109.5,bottom:197.5,right:139.5,top:255.5}},{unicode:37,advance:.732421875,planeBounds:{left:.026481776289942378,bottom:-.030073418674698794,right:.7137525987100576,top:.7410109186746989},atlasBounds:{left:88.5,bottom:144.5,right:129.5,top:190.5}},{unicode:38,advance:.62158203125,planeBounds:{left:.03225572125458355,bottom:-.030073418674698794,right:.6357130287454166,top:.7410109186746989},atlasBounds:{left:130.5,bottom:144.5,right:166.5,top:190.5}},{unicode:39,advance:.17431640625,planeBounds:{left:.028244602049502358,bottom:.49895501673814824,right:.14558352295049765,top:.7671582645118518},atlasBounds:{left:498.5,bottom:62.5,right:505.5,top:78.5}},{unicode:40,advance:.341796875,planeBounds:{left:.042983329377291775,bottom:-.250029542422407,right:.34471198312270823,top:.8227834486724072},atlasBounds:{left:.5,bottom:191.5,right:18.5,top:255.5}},{unicode:41,advance:.34765625,planeBounds:{left:-.003159248747708225,bottom:-.250029542422407,right:.29856940499770823,top:.8227834486724072},atlasBounds:{left:19.5,bottom:191.5,right:37.5,top:255.5}},{unicode:42,advance:.4306640625,planeBounds:{left:-.011208599684062338,bottom:.27785390031593765,right:.44138438093406235,top:.7304468809340623},atlasBounds:{left:449.5,bottom:23.5,right:476.5,top:50.5}},{unicode:43,advance:.56689453125,planeBounds:{left:.01353503347629649,bottom:.053493525733368255,right:.5499415290237036,top:.6066627242666317},atlasBounds:{left:361.5,bottom:17.5,right:393.5,top:50.5}},{unicode:44,advance:.1962890625,planeBounds:{left:-.009919475797210583,bottom:-.15981695975478,right:.1744702570472106,top:.12514899100478},atlasBounds:{left:498.5,bottom:79.5,right:509.5,top:96.5}},{unicode:45,advance:.27587890625,planeBounds:{left:-.00527594412977999,bottom:.24333249267450235,right:.27969000662978,top:.36067141357549765},atlasBounds:{left:52.5,bottom:7.5,right:69.5,top:14.5}},{unicode:46,advance:.26318359375,planeBounds:{left:.051032680313645884,bottom:-.027092319686354116,right:.20189700718635412,top:.12377200718635412},atlasBounds:{left:501.5,bottom:221.5,right:510.5,top:230.5}},{unicode:47,advance:.412109375,planeBounds:{left:-.013733006073205867,bottom:-.08573505127848349,right:.4053345685732059,top:.7356373950284835},atlasBounds:{left:252.5,bottom:206.5,right:277.5,top:255.5}},{unicode:48,advance:.5615234375,planeBounds:{left:.037458384830081196,bottom:-.030073418674698794,right:.5235767714199189,top:.7410109186746989},atlasBounds:{left:167.5,bottom:144.5,right:196.5,top:190.5}},{unicode:49,advance:.5615234375,planeBounds:{left:.06023674350936354,bottom:-.01998308280677056,right:.37872810024063647,top:.7343385515567705},atlasBounds:{left:488.5,bottom:97.5,right:507.5,top:142.5}},{unicode:50,advance:.5615234375,planeBounds:{left:.025334353719224725,bottom:-.01680925468177056,right:.5449781462807752,top:.7375123796817705},atlasBounds:{left:278.5,bottom:51.5,right:309.5,top:96.5}},{unicode:51,advance:.5615234375,planeBounds:{left:.028181041080081196,bottom:-.030073418674698794,right:.5142994276699189,top:.7410109186746989},atlasBounds:{left:197.5,bottom:144.5,right:226.5,top:190.5}},{unicode:52,advance:.5615234375,planeBounds:{left:.005886103858368255,bottom:-.02169206718177056,right:.5590553023916317,top:.7326295671817705},atlasBounds:{left:310.5,bottom:51.5,right:343.5,top:96.5}},{unicode:53,advance:.5615234375,planeBounds:{left:.055524791080081196,bottom:-.02657487968177056,right:.5416431776699189,top:.7277467546817705},atlasBounds:{left:344.5,bottom:51.5,right:373.5,top:96.5}},{unicode:54,advance:.5615234375,planeBounds:{left:.046003306705081196,bottom:-.034712090549698794,right:.5321216932949189,top:.7363722467996989},atlasBounds:{left:227.5,bottom:144.5,right:256.5,top:190.5}},{unicode:55,advance:.5615234375,planeBounds:{left:.018010134969224725,bottom:-.02169206718177056,right:.5376539275307752,top:.7326295671817705},atlasBounds:{left:374.5,bottom:51.5,right:405.5,top:96.5}},{unicode:56,advance:.5615234375,planeBounds:{left:.037702525455081196,bottom:-.030073418674698794,right:.5238209120449189,top:.7410109186746989},atlasBounds:{left:257.5,bottom:144.5,right:286.5,top:190.5}},{unicode:57,advance:.5615234375,planeBounds:{left:.029401744205081196,bottom:-.025434746799698794,right:.5155201307949189,top:.7456495905496989},atlasBounds:{left:287.5,bottom:144.5,right:316.5,top:190.5}},{unicode:58,advance:.2421875,planeBounds:{left:.046394008438645884,bottom:-.029431286627488215,right:.19725833531135412,top:.5572633178774882},atlasBounds:{left:439.5,bottom:61.5,right:448.5,top:96.5}},{unicode:59,advance:.21142578125,planeBounds:{left:.001066852327789419,bottom:-.16459733294591408,right:.1854565851722106,top:.556198895445914},atlasBounds:{left:406.5,bottom:53.5,right:417.5,top:96.5}},{unicode:60,advance:.50830078125,planeBounds:{left:.016948142433865897,bottom:.0726146348300812,right:.4527784200661341,top:.5587330214199189},atlasBounds:{left:394.5,bottom:21.5,right:420.5,top:50.5}},{unicode:61,advance:.548828125,planeBounds:{left:.051535540940937666,bottom:.17620354038436353,right:.5041285215590624,top:.49469489711563647},atlasBounds:{left:477.5,bottom:31.5,right:504.5,top:50.5}},{unicode:62,advance:.5224609375,planeBounds:{left:.047629290940937666,bottom:.0731029160800812,right:.5002222715590624,top:.5592213026699189},atlasBounds:{left:421.5,bottom:21.5,right:448.5,top:50.5}},{unicode:63,advance:.47216796875,planeBounds:{left:.016704001808865897,bottom:-.027876153049698794,right:.4525342794411341,top:.7432081842996989},atlasBounds:{left:317.5,bottom:144.5,right:343.5,top:190.5}},{unicode:64,advance:.89794921875,planeBounds:{left:.034064457306783605,bottom:-.23896750384690937,right:.8721996065996072,top:.7165065663469093},atlasBounds:{left:155.5,bottom:198.5,right:205.5,top:255.5}},{unicode:65,advance:.65234375,planeBounds:{left:-.008838044092129387,bottom:-.02169206718177056,right:.6616700753421295,top:.7326295671817705},atlasBounds:{left:237.5,bottom:51.5,right:277.5,top:96.5}},{unicode:66,advance:.62255859375,planeBounds:{left:.06464099434422473,bottom:-.02169206718177056,right:.5842847869057752,top:.7326295671817705},atlasBounds:{left:205.5,bottom:51.5,right:236.5,top:96.5}},{unicode:67,advance:.65087890625,planeBounds:{left:.038439807122511785,bottom:-.030073418674698794,right:.6251344116274882,top:.7410109186746989},atlasBounds:{left:344.5,bottom:144.5,right:379.5,top:190.5}},{unicode:68,advance:.65576171875,planeBounds:{left:.06301501010836826,bottom:-.02169206718177056,right:.6161842086416317,top:.7326295671817705},atlasBounds:{left:162.5,bottom:51.5,right:195.5,top:96.5}},{unicode:69,advance:.568359375,planeBounds:{left:.0652904160800812,bottom:-.02169206718177056,right:.5514088026699189,top:.7326295671817705},atlasBounds:{left:132.5,bottom:51.5,right:161.5,top:96.5}},{unicode:70,advance:.552734375,planeBounds:{left:.059675181705081196,bottom:-.02169206718177056,right:.5457935682949189,top:.7326295671817705},atlasBounds:{left:102.5,bottom:51.5,right:131.5,top:96.5}},{unicode:71,advance:.68115234375,planeBounds:{left:.040148791497511785,bottom:-.030073418674698794,right:.6268433960024882,top:.7410109186746989},atlasBounds:{left:380.5,bottom:144.5,right:415.5,top:190.5}},{unicode:72,advance:.712890625,planeBounds:{left:.062365588372511785,bottom:-.02169206718177056,right:.6490601928774882,top:.7326295671817705},atlasBounds:{left:30.5,bottom:51.5,right:65.5,top:96.5}},{unicode:73,advance:.27197265625,planeBounds:{left:.06917965680657412,bottom:-.02169206718177056,right:.20328128069342588,top:.7326295671817705},atlasBounds:{left:196.5,bottom:51.5,right:204.5,top:96.5}},{unicode:74,advance:.5517578125,planeBounds:{left:.007184947330081194,bottom:-.02657487968177056,right:.4933033339199188,top:.7277467546817705},atlasBounds:{left:.5,bottom:51.5,right:29.5,top:96.5}},{unicode:75,advance:.626953125,planeBounds:{left:.061633166497511785,bottom:-.02169206718177056,right:.6483277710024882,top:.7326295671817705},atlasBounds:{left:452.5,bottom:97.5,right:487.5,top:142.5}},{unicode:76,advance:.5380859375,planeBounds:{left:.06341786132300943,bottom:-.02169206718177056,right:.5327735449269906,top:.7326295671817705},atlasBounds:{left:423.5,bottom:97.5,right:451.5,top:142.5}},{unicode:77,advance:.873046875,planeBounds:{left:.05911847969322944,bottom:-.02169206718177056,right:.8134401140567705,top:.7326295671817705},atlasBounds:{left:377.5,bottom:97.5,right:422.5,top:142.5}},{unicode:78,advance:.712890625,planeBounds:{left:.062365588372511785,bottom:-.02169206718177056,right:.6490601928774882,top:.7326295671817705},atlasBounds:{left:341.5,bottom:97.5,right:376.5,top:142.5}},{unicode:79,advance:.6875,planeBounds:{left:.033395854136655315,bottom:-.030073418674698794,right:.6536158646133446,top:.7410109186746989},atlasBounds:{left:416.5,bottom:144.5,right:453.5,top:190.5}},{unicode:80,advance:.630859375,planeBounds:{left:.061550166358368255,bottom:-.02169206718177056,right:.6147193648916317,top:.7326295671817705},atlasBounds:{left:273.5,bottom:97.5,right:306.5,top:142.5}},{unicode:81,advance:.6875,planeBounds:{left:.030466166636655315,bottom:-.14391866037519643,right:.6506861771133446,top:.7445045978751964},atlasBounds:{left:214.5,bottom:202.5,right:251.5,top:255.5}},{unicode:82,advance:.61572265625,planeBounds:{left:.06350329135836826,bottom:-.02169206718177056,right:.6166724898916317,top:.7326295671817705},atlasBounds:{left:186.5,bottom:97.5,right:219.5,top:142.5}},{unicode:83,advance:.59326171875,planeBounds:{left:.020778681983368255,bottom:-.030073418674698794,right:.5739478805166317,top:.7410109186746989},atlasBounds:{left:454.5,bottom:144.5,right:487.5,top:190.5}},{unicode:84,advance:.5966796875,planeBounds:{left:.005480822747511787,bottom:-.02169206718177056,right:.5921754272524882,top:.7326295671817705},atlasBounds:{left:112.5,bottom:97.5,right:147.5,top:142.5}},{unicode:85,advance:.6484375,planeBounds:{left:.049098994483368255,bottom:-.02657487968177056,right:.6022681930166317,top:.7277467546817705},atlasBounds:{left:78.5,bottom:97.5,right:111.5,top:142.5}},{unicode:86,advance:.63623046875,planeBounds:{left:-.008269192599201152,bottom:-.02169206718177056,right:.6454762238492011,top:.7326295671817705},atlasBounds:{left:38.5,bottom:97.5,right:77.5,top:142.5}},{unicode:87,advance:.88720703125,planeBounds:{left:.011923628617731797,bottom:-.02169206718177056,right:.8835841838822683,top:.7326295671817705},atlasBounds:{left:220.5,bottom:97.5,right:272.5,top:142.5}},{unicode:88,advance:.626953125,planeBounds:{left:.004098979136655316,bottom:-.02169206718177056,right:.6243189896133446,top:.7326295671817705},atlasBounds:{left:.5,bottom:97.5,right:37.5,top:142.5}},{unicode:89,advance:.6005859375,planeBounds:{left:-.010793598988344685,bottom:-.02169206718177056,right:.6094264114883446,top:.7326295671817705},atlasBounds:{left:148.5,bottom:97.5,right:185.5,top:142.5}},{unicode:90,advance:.5986328125,planeBounds:{left:.024196650733368255,bottom:-.02169206718177056,right:.5773658492666317,top:.7326295671817705},atlasBounds:{left:307.5,bottom:97.5,right:340.5,top:142.5}},{unicode:91,advance:.26513671875,planeBounds:{left:.05437250871693295,bottom:-.17280296457569408,right:.27228764753306706,top:.8329592145756942},atlasBounds:{left:59.5,bottom:195.5,right:72.5,top:255.5}},{unicode:92,advance:.41015625,planeBounds:{left:.0014037126767941326,bottom:-.08573505127848349,right:.4204712873232059,top:.7356373950284835},atlasBounds:{left:278.5,bottom:206.5,right:303.5,top:255.5}},{unicode:93,advance:.26513671875,planeBounds:{left:-.020659233400995285,bottom:-.17280296457569408,right:.2140186084009953,top:.8329592145756942},atlasBounds:{left:94.5,bottom:195.5,right:108.5,top:255.5}},{unicode:94,advance:.41796875,planeBounds:{left:.006855376669722368,bottom:.33229482979472236,right:.40916024833027764,top:.7345997014552776},atlasBounds:{left:486.5,bottom:231.5,right:510.5,top:255.5}},{unicode:95,advance:.451171875,planeBounds:{left:-.017473255794918804,bottom:-.09553469482549765,right:.4686451307949188,top:.021804226075497646},atlasBounds:{left:70.5,bottom:7.5,right:99.5,top:14.5}},{unicode:96,advance:.30908203125,planeBounds:{left:.00391839948107648,bottom:.5860277898277895,right:.2553589442689235,top:.7704175226722105},atlasBounds:{left:36.5,bottom:3.5,right:51.5,top:14.5}},{unicode:97,advance:.5439453125,planeBounds:{left:.028181041080081196,bottom:-.029187146002488215,right:.5142994276699189,top:.5575074585024882},atlasBounds:{left:30.5,bottom:15.5,right:59.5,top:50.5}},{unicode:98,advance:.56103515625,planeBounds:{left:.048932994205081196,bottom:-.032187684160555265,right:.5350513807949189,top:.7724220591605554},atlasBounds:{left:304.5,bottom:207.5,right:333.5,top:255.5}},{unicode:99,advance:.5234375,planeBounds:{left:.024518931705081196,bottom:-.029187146002488215,right:.5106373182949189,top:.5575074585024882},atlasBounds:{left:.5,bottom:15.5,right:29.5,top:50.5}},{unicode:100,advance:.56396484375,planeBounds:{left:.026227916080081196,bottom:-.032187684160555265,right:.5123463026699189,top:.7724220591605554},atlasBounds:{left:334.5,bottom:207.5,right:363.5,top:255.5}},{unicode:101,advance:.52978515625,planeBounds:{left:.026472056705081196,bottom:-.029187146002488215,right:.5125904432949189,top:.5575074585024882},atlasBounds:{left:468.5,bottom:61.5,right:497.5,top:96.5}},{unicode:102,advance:.34716796875,planeBounds:{left:.004575110905578838,bottom:-.022177918535555265,right:.3733545765944212,top:.7824318247855554},atlasBounds:{left:364.5,bottom:207.5,right:386.5,top:255.5}},{unicode:103,advance:.56103515625,planeBounds:{left:.026960337955081196,bottom:-.22888445766762702,right:.5130787245449189,top:.558962582667627},atlasBounds:{left:28.5,bottom:143.5,right:57.5,top:190.5}},{unicode:104,advance:.55078125,planeBounds:{left:.049826556565937666,bottom:-.01892352016762703,right:.5024195371840624,top:.768923520167627},atlasBounds:{left:.5,bottom:143.5,right:27.5,top:190.5}},{unicode:105,advance:.24267578125,planeBounds:{left:.046882289688645884,bottom:-.01680925468177056,right:.19774661656135412,top:.7375123796817705},atlasBounds:{left:498.5,bottom:145.5,right:507.5,top:190.5}},{unicode:106,advance:.23876953125,planeBounds:{left:-.048979545900995285,bottom:-.2324562772148376,right:.1856982959009953,top:.7397804959648377},atlasBounds:{left:140.5,bottom:197.5,right:154.5,top:255.5}},{unicode:107,advance:.5068359375,planeBounds:{left:.044294322330081196,bottom:-.01892352016762703,right:.5304127089199189,top:.768923520167627},atlasBounds:{left:58.5,bottom:143.5,right:87.5,top:190.5}},{unicode:108,advance:.24267578125,planeBounds:{left:.05428707868157412,bottom:-.01892352016762703,right:.18838870256842588,top:.768923520167627},atlasBounds:{left:477.5,bottom:208.5,right:485.5,top:255.5}},{unicode:109,advance:.87646484375,planeBounds:{left:.04430890170737297,bottom:-.024304333502488215,right:.832155942042627,top:.5623902710024882},atlasBounds:{left:116.5,bottom:15.5,right:163.5,top:50.5}},{unicode:110,advance:.5517578125,planeBounds:{left:.049826556565937666,bottom:-.024304333502488215,right:.5024195371840624,top:.5623902710024882},atlasBounds:{left:60.5,bottom:15.5,right:87.5,top:50.5}},{unicode:111,advance:.5703125,planeBounds:{left:.025090213094224725,bottom:-.029187146002488215,right:.5447340056557752,top:.5575074585024882},atlasBounds:{left:193.5,bottom:15.5,right:224.5,top:50.5}},{unicode:112,advance:.56103515625,planeBounds:{left:.048444712955081196,bottom:-.22644305141762702,right:.5345630995449189,top:.561403988917627},atlasBounds:{left:447.5,bottom:208.5,right:476.5,top:255.5}},{unicode:113,advance:.568359375,planeBounds:{left:.025983775455081196,bottom:-.22644305141762702,right:.5121021620449189,top:.561403988917627},atlasBounds:{left:417.5,bottom:208.5,right:446.5,top:255.5}},{unicode:114,advance:.33837890625,planeBounds:{left:.045180595002291775,bottom:-.024304333502488215,right:.34690924874770823,top:.5623902710024882},atlasBounds:{left:449.5,bottom:61.5,right:467.5,top:96.5}},{unicode:115,advance:.515625,planeBounds:{left:.021669814448009427,bottom:-.029187146002488215,right:.4910254980519906,top:.5575074585024882},atlasBounds:{left:164.5,bottom:15.5,right:192.5,top:50.5}},{unicode:116,advance:.32666015625,planeBounds:{left:-.019433670483564695,bottom:-.02877457520298586,right:.3158203892335647,top:.675258950202986},atlasBounds:{left:418.5,bottom:54.5,right:438.5,top:96.5}},{unicode:117,advance:.55126953125,planeBounds:{left:.048117572190937666,bottom:-.034069958502488215,right:.5007105528090624,top:.5526246460024882},atlasBounds:{left:88.5,bottom:15.5,right:115.5,top:50.5}},{unicode:118,advance:.484375,planeBounds:{left:-.002092396419918806,bottom:-.02080579450955998,right:.4840259901699188,top:.5491261070095601},atlasBounds:{left:331.5,bottom:16.5,right:360.5,top:50.5}},{unicode:119,advance:.75146484375,planeBounds:{left:-.002649098431770561,bottom:-.02080579450955998,right:.7516725359317705,top:.5491261070095601},atlasBounds:{left:225.5,bottom:16.5,right:270.5,top:50.5}},{unicode:120,advance:.49560546875,planeBounds:{left:-.0046143729128470395,bottom:-.02080579450955998,right:.4982667166628471,top:.5491261070095601},atlasBounds:{left:300.5,bottom:16.5,right:330.5,top:50.5}},{unicode:121,advance:.47314453125,planeBounds:{left:-.007219349544918806,bottom:-.23645281704262702,right:.4788990370449188,top:.551394223292627},atlasBounds:{left:387.5,bottom:208.5,right:416.5,top:255.5}},{unicode:122,advance:.49560546875,planeBounds:{left:.018007705073009427,bottom:-.02080579450955998,right:.4873633886769906,top:.5491261070095601},atlasBounds:{left:271.5,bottom:16.5,right:299.5,top:50.5}},{unicode:123,advance:.33837890625,planeBounds:{left:.011572188891435306,bottom:-.20234398020069408,right:.3468262486085647,top:.8034181989506942},atlasBounds:{left:73.5,bottom:195.5,right:93.5,top:255.5}},{unicode:124,advance:.24365234375,planeBounds:{left:.06315671142450235,bottom:-.15466084787519643,right:.18049563232549765,top:.7337624103751964},atlasBounds:{left:206.5,bottom:202.5,right:213.5,top:255.5}},{unicode:125,advance:.33837890625,planeBounds:{left:-.010156326733564695,bottom:-.20234398020069408,right:.3250977329835647,top:.8034181989506942},atlasBounds:{left:38.5,bottom:195.5,right:58.5,top:255.5}},{unicode:126,advance:.68017578125,planeBounds:{left:.046984728997511785,bottom:.1766063915990047,right:.6336793335024882,top:.4112842334009953},atlasBounds:{left:.5,bottom:.5,right:35.5,top:14.5}}],kerning:[]};const ne=new Ie,et=function(t={}){this.opts={},this.defaults={textHeight:.06,colorbarHeight:.05,crosshairWidth:1,show3Dcrosshair:!1,backColor:[0,0,0,1],crosshairColor:[1,0,0,1],selectionBoxColor:[1,1,1,.5],clipPlaneColor:[.7,0,.7,.5],colorBarMargin:.05,trustCalMinMax:!0,clipPlaneHotKey:"KeyC",viewModeHotKey:"KeyV",keyDebounceTime:50,isNearestInterpolation:!1,isAtlasOutline:!1,isRadiologicalConvention:!1,logging:!1,loadingText:"waiting for images...",dragAndDropEnabled:!0},this.canvas=null,this.gl=null,this.colormapTexture=null,this.volumeTexture=null,this.overlayTexture=null,this.overlayTextureID=[],this.sliceShader=null,this.lineShader=null,this.renderShader=null,this.pickingShader=null,this.colorbarShader=null,this.fontShader=null,this.passThroughShader=null,this.orientShaderAtlasU=null,this.orientShaderU=null,this.orientShaderI=null,this.orientShaderF=null,this.orientShaderRGBU=null,this.surfaceShader=null,this.meshShader=null,this.genericVAO=null,this.unusedVAO=null,this.crosshairs3D=null,this.pickingSurfaceShader=null,this.DEFAULT_FONT_GLYPH_SHEET=ka,this.DEFAULT_FONT_METRICS=Pa,this.fontMets=null,this.sliceTypeAxial=0,this.sliceTypeCoronal=1,this.sliceTypeSagittal=2,this.sliceTypeMultiplanar=3,this.sliceTypeRender=4,this.sliceType=this.sliceTypeMultiplanar,this.scene={},this.syncOpts={},this.scene.renderAzimuth=110,this.scene.renderElevation=10,this.scene.crosshairPos=[.5,.5,.5],this.scene.clipPlane=[0,0,0,0],this.scene.clipPlaneDepthAziElev=[2,0,0],this.scene.mousedown=!1,this.scene.touchdown=!1,this.scene.mouseButtonLeft=0,this.scene.mouseButtonRight=2,this.scene.mouseButtonLeftDown=!1,this.scene.mouseButtonRightDown=!1,this.scene.mouseDepthPicker=!1,this.scene.prevX=0,this.scene.prevY=0,this.scene.currX=0,this.scene.currY=0,this.back={},this.overlays=[],this.volumes=[],this.meshes=[],this.volScaleMultiplier=1,this.volScale=[],this.vox=[],this.mousePos=[0,0],this.numScreenSlices=0,this.screenSlices=[{leftTopWidthHeight:[1,0,0,1],axCorSag:this.sliceTypeAxial},{leftTopWidthHeight:[1,0,0,1],axCorSag:this.sliceTypeAxial},{leftTopWidthHeight:[1,0,0,1],axCorSag:this.sliceTypeAxial},{leftTopWidthHeight:[1,0,0,1],axCorSag:this.sliceTypeAxial}],this.isDragging=!1,this.dragStart=[0,0],this.dragEnd=[0,0],this.dragClipPlaneStartDepthAziElev=[0,0,0],this.lastTwoTouchDistance=0,this.otherNV=null,this.volumeObject3D=null,this.intensityRange$=new ni,this.scene.location$=new ni,this.scene.loading$=new ni,this.imageLoaded$=new ni,this.currentClipPlaneIndex=0,this.lastCalled=new Date().getTime(),this.multiTouchGesture=!1,this.gestureInterval=null,this.selectedObjectId=-1,this.CLIP_PLANE_ID=1,this.VOLUME_ID=254,this.DISTANCE_FROM_CAMERA=-.54,this.meshShaders=[{Name:"Phong",Frag:bs},{Name:"Matte",Frag:Es},{Name:"Harmonic",Frag:Ts},{Name:"Hemispheric",Frag:ws},{Name:"Outline",Frag:xs},{Name:"Toon",Frag:As}],this.initialized=!1;for(let i in this.defaults)this.opts[i]=t[i]===void 0?this.defaults[i]:t[i];this.loadingText=this.opts.loadingText,ne.setLogLevel(this.opts.logging),this.eventsToSubjects={location:this.scene.location$,loading:this.scene.loading$,imageLoaded:this.imageLoaded$,intensityRange:this.intensityRange$},this.subscriptions=[]};et.prototype.attachTo=async function(t){return await this.attachToCanvas(document.getElementById(t)),ne.debug("attached to element with id: ",t),this},et.prototype.on=function(t,i){if(Object.keys(this.eventsToSubjects).indexOf(t)==-1)return;let a=this.eventsToSubjects[t].subscribe({next:r=>i(r)});this.subscriptions.push({[t]:a})},et.prototype.off=function(t){if(Object.keys(this.eventsToSubjects).indexOf(t)==-1)return;let e=this.subscriptions.length;for(let n=0;n<e;n++)if(Object.keys(this.subscriptions[n])[0]===t){this.subscriptions[n][t].unsubscribe(),this.subscriptions.splice(n,1);return}},et.prototype.attachToCanvas=async function(t){return this.canvas=t,this.gl=this.canvas.getContext("webgl2"),this.gl||(alert("unable to get webgl2 context. Perhaps this browser does not support webgl2"),ne.warn("unable to get webgl2 context. Perhaps this browser does not support webgl2")),this.canvas.parentElement.style.backgroundColor="black",this.canvas.style.width="100%",this.canvas.style.height="100%",this.canvas.width=this.canvas.offsetWidth,this.canvas.height=this.canvas.offsetHeight,window.addEventListener("resize",this.resizeListener.bind(this)),this.registerInteractions(),await this.init(),this.drawScene(),this},et.prototype.syncWith=function(t,i={"2d":!0,"3d":!0}){this.otherNV=t,this.syncOpts=i},et.prototype.sync=function(){if(!this.otherNV||typeof this.otherNV=="undefined")return;let t=this.frac2mm(this.scene.crosshairPos);this.syncOpts["2d"]&&(this.otherNV.scene.crosshairPos=this.otherNV.mm2frac(t)),this.syncOpts["3d"]&&(this.otherNV.scene.renderAzimuth=this.scene.renderAzimuth,this.otherNV.scene.renderElevation=this.scene.renderElevation),this.otherNV.drawScene()},et.prototype.arrayEquals=function(t,i){return Array.isArray(t)&&Array.isArray(i)&&t.length===i.length&&t.every((e,n)=>e===i[n])},et.prototype.resizeListener=function(){this.canvas.style.width="100%",this.canvas.style.height="100%",this.canvas.width=this.canvas.offsetWidth,this.canvas.height=this.canvas.offsetHeight,this.drawScene()},et.prototype.getRelativeMousePosition=function(t,i){i=i||t.target;var e=i.getBoundingClientRect();return{x:t.clientX-e.left,y:t.clientY-e.top}},et.prototype.getNoPaddingNoBorderCanvasRelativeMousePosition=function(t,i){i=i||t.target;var e=this.getRelativeMousePosition(t,i);return e.x=e.x*i.width/i.clientWidth,e.y=e.y*i.height/i.clientHeight,e},et.prototype.mouseContextMenuListener=function(t){t.preventDefault()},et.prototype.mouseDownListener=function(t){t.preventDefault(),this.scene.mousedown=!0,t.button===this.scene.mouseButtonLeft?(this.scene.mouseButtonLeftDown=!0,this.mouseLeftButtonHandler(t)):t.button===this.scene.mouseButtonRight&&(this.scene.mouseButtonRightDown=!0,this.mouseRightButtonHandler(t))},et.prototype.mouseLeftButtonHandler=function(t){let i=this.getNoPaddingNoBorderCanvasRelativeMousePosition(t,this.gl.canvas);this.mouseClick(i.x,i.y),this.mouseDown(i.x,i.y)},et.prototype.mouseRightButtonHandler=function(t){this.isDragging=!0;let i=this.getNoPaddingNoBorderCanvasRelativeMousePosition(t,this.gl.canvas);this.dragStart[0]=i.x,this.dragStart[1]=i.y,this.dragClipPlaneStartDepthAziElev=this.scene.clipPlaneDepthAziElev},et.prototype.calculateMinMaxVoxIdx=function(t){if(t.length>2)throw new Error("array must not contain more than two values");return[Math.floor(Math.min(t[0],t[1])),Math.floor(Math.max(t[0],t[1]))]};function Ua(t,i){return t.scl_slope===0&&(t.scl_slope=1),i*t.scl_slope+t.scl_inter}et.prototype.calculateNewRange=function(t=0){if(this.sliceType===this.sliceTypeRender||this.dragStart[0]===this.dragEnd[0]&&this.dragStart[1]===this.dragEnd[1])return;let i=this.canvasPos2frac([this.dragStart[0],this.dragStart[1]]),e=this.frac2vox(i,t);i=this.canvasPos2frac([this.dragEnd[0],this.dragEnd[1]]);let n=this.frac2vox(i,t),a=-Number.MAX_VALUE,r=Number.MAX_VALUE,s,o,c;s=this.calculateMinMaxVoxIdx([e[0],n[0]]),o=this.calculateMinMaxVoxIdx([e[1],n[1]]),c=this.calculateMinMaxVoxIdx([e[2],n[2]]),e[0]-n[0]===0?s[1]=e[0]+1:e[1]-n[1]===0?o[1]=e[1]+1:e[2]-n[2]===0&&(c[1]=e[2]+1);const h=this.volumes[t].hdr,l=this.volumes[t].img,p=h.dims[1],f=h.dims[2];for(let A=c[0];A<c[1];A++){let x=A*p*f;for(let w=o[0];w<o[1];w++){let I=w*p;for(let D=s[0];D<s[1];D++){let T=x+I+D;r>l[T]&&(r=l[T]),a<l[T]&&(a=l[T])}}}if(!(r>=a)){var d=Ua(h,r),E=Ua(h,a);this.volumes[t].cal_min=d,this.volumes[t].cal_max=E,this.intensityRange$.next(this.volumes[t])}},et.prototype.mouseUpListener=function(){this.scene.mousedown=!1,this.scene.mouseButtonRightDown=!1,this.scene.mouseButtonLeftDown=!1,this.isDragging&&(this.isDragging=!1,this.calculateNewRange(),this.refreshLayers(this.volumes[0],0,this.volumes.length)),this.drawScene()},et.prototype.checkMultitouch=function(t){if(this.scene.touchdown&&!this.multiTouchGesture){var i=this.canvas.getBoundingClientRect();this.mouseClick(t.touches[0].clientX-i.left,t.touches[0].clientY-i.top),this.mouseDown(t.touches[0].clientX-i.left,t.touches[0].clientY-i.top)}},et.prototype.touchStartListener=function(t){t.preventDefault(),this.scene.touchdown=!0,this.scene.touchdown&&t.touches.length<2?this.multiTouchGesture=!1:this.multiTouchGesture=!0,setTimeout(this.checkMultitouch.bind(this),1,t)},et.prototype.touchEndListener=function(){this.scene.touchdown=!1,this.lastTwoTouchDistance=0,this.multiTouchGesture=!1},et.prototype.mouseMoveListener=function(t){if(this.scene.mousedown){let i=this.getNoPaddingNoBorderCanvasRelativeMousePosition(t,this.gl.canvas);this.scene.mouseButtonLeftDown?(this.mouseClick(i.x,i.y),this.mouseMove(i.x,i.y)):this.scene.mouseButtonRightDown&&(this.dragEnd[0]=i.x,this.dragEnd[1]=i.y),this.drawScene(),this.scene.prevX=this.scene.currX,this.scene.prevY=this.scene.currY}},et.prototype.resetBriCon=function(){if(this.sliceType===this.sliceTypeRender){this.scene.mouseDepthPicker=!0,this.drawScene();return}this.volumes[0].cal_min=this.volumes[0].robust_min,this.volumes[0].cal_max=this.volumes[0].robust_max,this.intensityRange$.next(this.volumes[0]),this.refreshLayers(this.volumes[0],0,this.volumes.length),this.drawScene()},et.prototype.touchMoveListener=function(t){if(this.scene.touchdown&&t.touches.length<2){var i=this.canvas.getBoundingClientRect();this.mouseClick(t.touches[0].clientX-i.left,t.touches[0].clientY-i.top),this.mouseMove(t.touches[0].clientX-i.left,t.touches[0].clientY-i.top)}else this.handlePinchZoom(t)},et.prototype.handlePinchZoom=function(t){if(t.targetTouches.length==2&&t.changedTouches.length==2){var i=Math.hypot(t.touches[0].pageX-t.touches[1].pageX,t.touches[0].pageY-t.touches[1].pageY),e=this.canvas.getBoundingClientRect();this.mousePos=[t.touches[0].clientX-e.left,t.touches[0].clientY-e.top],i<this.lastTwoTouchDistance?this.sliceScroll2D(-.01,t.touches[0].clientX-e.left,t.touches[0].clientY-e.top):this.sliceScroll2D(.01,t.touches[0].clientX-e.left,t.touches[0].clientY-e.top),this.lastTwoTouchDistance=i}},et.prototype.keyUpListener=function(t){if(t.code===this.opts.clipPlaneHotKey){if(this.sliceType!=this.sliceTypeRender)return;let i=new Date().getTime();if(i-this.lastCalled>this.opts.keyDebounceTime){switch(this.currentClipPlaneIndex=(this.currentClipPlaneIndex+1)%7,this.currentClipPlaneIndex){case 0:this.scene.clipPlaneDepthAziElev=[2,0,0];break;case 1:this.scene.clipPlaneDepthAziElev=[0,270,0];break;case 2:this.scene.clipPlaneDepthAziElev=[0,90,0];break;case 3:this.scene.clipPlaneDepthAziElev=[0,0,0];break;case 4:this.scene.clipPlaneDepthAziElev=[0,180,0];break;case 5:this.scene.clipPlaneDepthAziElev=[0,0,-90];break;case 6:this.scene.clipPlaneDepthAziElev=[0,0,90];break}this.setClipPlane(this.scene.clipPlaneDepthAziElev)}this.lastCalled=i}else if(t.code===this.opts.viewModeHotKey){let i=new Date().getTime();i-this.lastCalled>this.opts.keyDebounceTime&&(this.setSliceType((this.sliceType+1)%5),this.lastCalled=i)}},et.prototype.wheelListener=function(t){t.preventDefault(),t.stopPropagation();var i=this.canvas.getBoundingClientRect();t.deltaY<0?this.sliceScroll2D(-.01,t.clientX-i.left,t.clientY-i.top):this.sliceScroll2D(.01,t.clientX-i.left,t.clientY-i.top)},et.prototype.registerInteractions=function(){this.canvas.addEventListener("mousedown",this.mouseDownListener.bind(this)),this.canvas.addEventListener("mouseup",this.mouseUpListener.bind(this)),this.canvas.addEventListener("mousemove",this.mouseMoveListener.bind(this)),this.canvas.addEventListener("touchstart",this.touchStartListener.bind(this)),this.canvas.addEventListener("touchend",this.touchEndListener.bind(this)),this.canvas.addEventListener("touchmove",this.touchMoveListener.bind(this)),this.canvas.addEventListener("wheel",this.wheelListener.bind(this)),this.canvas.addEventListener("contextmenu",this.mouseContextMenuListener.bind(this)),this.canvas.addEventListener("dblclick",this.resetBriCon.bind(this)),this.canvas.addEventListener("dragenter",this.dragEnterListener.bind(this),!1),this.canvas.addEventListener("dragover",this.dragOverListener.bind(this),!1),this.canvas.addEventListener("drop",this.dropListener.bind(this),!1),this.canvas.setAttribute("tabindex",0),this.canvas.addEventListener("keyup",this.keyUpListener.bind(this),!1),this.canvas.focus()},et.prototype.dragEnterListener=function(t){t.stopPropagation(),t.preventDefault()},et.prototype.dragOverListener=function(t){t.stopPropagation(),t.preventDefault()},et.prototype.dropListener=async function(t){if(t.stopPropagation(),t.preventDefault(),!this.opts.dragAndDropEnabled)return;const i=t.dataTransfer,e=i.getData("text/uri-list");if(e){let n=await Ct.loadFromUrl(e);this.setVolume(n)}else{const n=i.files;if(n.length>0){t.shiftKey||(this.volumes=[],this.overlays=[]);for(const a of n){let r=await Ct.loadFromFile(a);this.addVolume(r)}}}},et.prototype.setRadiologicalConvention=function(t){this.opts.isRadiologicalConvention=t},et.prototype.getRadiologicalConvention=function(){return this.opts.isRadiologicalConvention},et.prototype.addVolume=function(t){this.volumes.push(t);let i=this.volumes.length===1?0:this.volumes.length-1;this.setVolume(t,i),this.imageLoaded$.next(t)},et.prototype.addMesh=function(t){this.meshes.push(t);let i=this.meshes.length===1?0:this.meshes.length-1;this.setMesh(t,i),this.imageLoaded$.next(t)},et.prototype.getVolumeIndexByID=function(t){let i=this.volumes.length;for(let e=0;e<i;e++)if(this.volumes[e].id===t)return e;return-1},et.prototype.getMeshIndexByID=function(t){let i=this.meshes.length;for(let e=0;e<i;e++)if(this.meshes[e].id===t)return e;return-1},et.prototype.getOverlayIndexByID=function(t){let i=this.overlays.length;for(let e=0;e<i;e++)if(this.overlays[e].id===t)return e;return-1},et.prototype.setVolume=function(t,i=0){this.volumes.map(a=>{ne.debug(a.name)});let e=this.volumes.length;if(i>e)return;let n=this.getVolumeIndexByID(t.id);i===0?(this.volumes.splice(n,1),this.volumes.unshift(t),this.back=this.volumes[0],this.overlays=this.volumes.slice(1)):i<0?(this.volumes.splice(this.getVolumeIndexByID(t.id),1),this.back=this.volumes[0],this.volumes.length>1?this.overlays=this.volumes.slice(1):this.overlays=[]):(this.volumes.splice(n,1),this.volumes.splice(i,0,t),this.overlays=this.volumes.slice(1),this.back=this.volumes[0]),this.updateGLVolume(),this.volumes.map(a=>{ne.debug(a.name)})},et.prototype.setMesh=function(t,i=0){this.meshes.map(a=>{ne.debug("MESH: ",a.name)});let e=this.meshes.length;if(i>e)return;let n=this.getMeshIndexByID(t.id);i===0?(this.meshes.splice(n,1),this.meshes.unshift(t)):i<0?this.meshes.splice(this.getMeshIndexByID(t.id),1):(this.meshes.splice(n,1),this.meshes.splice(i,0,t)),this.updateGLVolume(),this.meshes.map(a=>{ne.debug(a.name)})},et.prototype.removeVolume=function(t){this.setVolume(t,-1)},et.prototype.removeMesh=function(t){this.setMesh(t,-1)},et.prototype.moveVolumeToBottom=function(t){this.setVolume(t,0)},et.prototype.moveVolumeUp=function(t){let i=this.getVolumeIndexByID(t.id);this.setVolume(t,i+1)},et.prototype.moveVolumeDown=function(t){let i=this.getVolumeIndexByID(t.id);this.setVolume(t,i-1)},et.prototype.moveVolumeToTop=function(t){this.setVolume(t,this.volumes.length-1)},et.prototype.mouseDown=function(i,e){this.sliceType==this.sliceTypeRender&&(this.mousePos=[i,e])},et.prototype.mouseMove=function(i,e){this.sliceType==this.sliceTypeRender&&(this.scene.renderAzimuth+=i-this.mousePos[0],this.scene.renderElevation+=e-this.mousePos[1],this.mousePos=[i,e],this.drawScene())},et.prototype.sph2cartDeg=function(i,e){let n=-e*(Math.PI/180),a=(i-90)%360*(Math.PI/180),r=[Math.cos(n)*Math.cos(a),Math.cos(n)*Math.sin(a),Math.sin(n)],s=Math.sqrt(r[0]*r[0]+r[1]*r[1]+r[2]*r[2]);return s<=0||(r[0]/=s,r[1]/=s,r[2]/=s),r},et.prototype.setClipPlane=function(t){let i=this.sph2cartDeg(t[1]+180,t[2]);this.scene.clipPlane=[i[0],i[1],i[2],t[0]],this.scene.clipPlaneDepthAziElev=t,this.sliceType==this.sliceTypeRender&&this.drawScene()},et.prototype.setCrosshairColor=function(t){this.opts.crosshairColor=t,this.drawScene()},et.prototype.setSelectionBoxColor=function(t){this.opts.selectionBoxColor=t},et.prototype.sliceScroll2D=function(t,i,e,n=!0){this.mouseClick(i,e,t,n)},et.prototype.setSliceType=function(t){return this.sliceType=t,this.drawScene(),this},et.prototype.setOpacity=function(t,i){if(this.volumes[t].opacity=i,t===0){this.drawScene();return}this.updateGLVolume()},et.prototype.setScale=function(t){this.volScaleMultiplier=t,this.drawScene()},et.prototype.setClipPlaneColor=function(t){this.opts.clipPlaneColor=t,this.drawScene()},et.prototype.overlayRGBA=function(t){let i=t.hdr,e=i.dims[1]*i.dims[2]*i.dims[3],n=new Uint8ClampedArray(e*4),a=.2*Math.min(Math.min(i.dims[1],i.dims[2]),i.dims[3]),r=.5*i.dims[1],s=.5*i.dims[2],o=.5*i.dims[3],c=0;for(let h=0;h<i.dims[3];h++)for(let l=0;l<i.dims[2];l++)for(let p=0;p<i.dims[1];p++){let f=Math.abs(p-r),d=Math.abs(l-s),E=Math.abs(h-o),A=Math.sqrt(f*f+d*d+E*E),x=0;A<a&&(x=255),n[c++]=0,n[c++]=x,n[c++]=0,n[c++]=x*.5}return n},et.prototype.vox2mm=function(t,i){let e=he(i);Qe(e,e);let n=De(t[0],t[1],t[2],1);return Xe(n,n,e),Vt(n[0],n[1],n[2])},et.prototype.cloneVolume=function(t){return this.volumes[t].clone()},et.prototype.loadVolumes=async function(t){this.on("loading",i=>{i?(this.loadingText="loading...",this.drawScene()):this.loadingText=this.opts.loadingText}),this.initialized,this.volumes=[],this.gl.clearColor(0,0,0,1),this.gl.clear(this.gl.COLOR_BUFFER_BIT),this.scene.loading$.next(!1);for(let i=0;i<t.length;i++){this.scene.loading$.next(!0);let e=await Ct.loadFromUrl(t[i].url,t[i].name,t[i].colorMap,t[i].opacity,t[i].urlImgData,this.opts.trustCalMinMax);this.scene.loading$.next(!1),this.addVolume(e)}return this},et.prototype.loadMeshes=async function(t){this.on("loading",i=>{i?(this.loadingText="loading...",this.drawScene()):this.loadingText=this.opts.loadingText}),this.initialized,this.meshes=[],this.gl.clearColor(0,0,0,1),this.gl.clear(this.gl.COLOR_BUFFER_BIT),this.scene.loading$.next(!1);for(let i=0;i<t.length;i++){this.scene.loading$.next(!0);let e=await Yt.loadFromUrl(t[i].url,this.gl,t[i].name,t[i].colorMap,t[i].opacity,t[i].rgba255,t[i].visible);this.scene.loading$.next(!1),this.addMesh(e)}return this.drawScene(),this},et.prototype.loadConnectome=async function(t){this.on("loading",i=>{i?(this.loadingText="loading...",this.drawScene()):this.loadingText=this.opts.loadingText}),this.initialized,this.meshes=[],this.gl.clearColor(0,0,0,1),this.gl.clear(this.gl.COLOR_BUFFER_BIT),this.scene.loading$.next(!1);for(let i=0;i<1;i++){this.scene.loading$.next(!0);let e=await Yt.loadConnectomeFromJSON(t,this.gl);this.scene.loading$.next(!1),this.addMesh(e)}return this.drawScene(),this},et.prototype.rgbaTex=function(t,i,e,n=!1){if(t&&this.gl.deleteTexture(t),t=this.gl.createTexture(),this.gl.activeTexture(i),this.gl.bindTexture(this.gl.TEXTURE_3D,t),this.gl.texParameteri(this.gl.TEXTURE_3D,this.gl.TEXTURE_MIN_FILTER,this.gl.LINEAR),this.gl.texParameteri(this.gl.TEXTURE_3D,this.gl.TEXTURE_MAG_FILTER,this.gl.LINEAR),this.gl.texParameteri(this.gl.TEXTURE_3D,this.gl.TEXTURE_WRAP_R,this.gl.CLAMP_TO_EDGE),this.gl.texParameteri(this.gl.TEXTURE_3D,this.gl.TEXTURE_WRAP_S,this.gl.CLAMP_TO_EDGE),this.gl.texParameteri(this.gl.TEXTURE_3D,this.gl.TEXTURE_WRAP_T,this.gl.CLAMP_TO_EDGE),this.gl.pixelStorei(this.gl.UNPACK_ALIGNMENT,1),this.gl.texStorage3D(this.gl.TEXTURE_3D,1,this.gl.RGBA8,e[1],e[2],e[3]),n){let a=new Uint8Array(e[1]*e[2]*e[3]*4);this.gl.texSubImage3D(this.gl.TEXTURE_3D,0,0,0,0,e[1],e[2],e[3],this.gl.RGBA,this.gl.UNSIGNED_BYTE,a)}return t},et.prototype.requestCORSIfNotSameOrigin=function(t,i){new URL(i,window.location.href).origin!==window.location.origin&&(t.crossOrigin="")},et.prototype.loadFontTexture=function(t){return new Promise((i,e)=>{let n=new Image;n.onload=()=>{let a=this.gl.createTexture();this.gl.activeTexture(this.gl.TEXTURE3),this.gl.bindTexture(this.gl.TEXTURE_2D,a),this.gl.uniform1i(this.fontShader.uniforms.fontTexture,3),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_S,this.gl.CLAMP_TO_EDGE),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_T,this.gl.CLAMP_TO_EDGE),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_MIN_FILTER,this.gl.LINEAR),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_MAG_FILTER,this.gl.LINEAR),this.gl.texImage2D(this.gl.TEXTURE_2D,0,this.gl.RGBA,this.gl.RGBA,this.gl.UNSIGNED_BYTE,n),i(a)},n.onerror=e,this.requestCORSIfNotSameOrigin(n,t),n.src=t})},et.prototype.initFontMets=function(){this.fontMets=[];for(let e=0;e<256;e++)this.fontMets[e]={},this.fontMets[e].xadv=0,this.fontMets[e].uv_lbwh=[0,0,0,0],this.fontMets[e].lbwh=[0,0,0,0];this.fontMets.distanceRange=this.fontMetrics.atlas.distanceRange,this.fontMets.size=this.fontMetrics.atlas.size;let t=this.fontMetrics.atlas.width,i=this.fontMetrics.atlas.height;for(let e=0;e<this.fontMetrics.glyphs.length;e++){let n=this.fontMetrics.glyphs[e],a=n.unicode;if(this.fontMets[a].xadv=n.advance,n.planeBounds===void 0)continue;let r=n.atlasBounds.left/t,s=(i-n.atlasBounds.top)/i,o=(n.atlasBounds.right-n.atlasBounds.left)/t,c=(n.atlasBounds.top-n.atlasBounds.bottom)/i;this.fontMets[a].uv_lbwh=[r,s,o,c],r=n.planeBounds.left,s=n.planeBounds.bottom,o=n.planeBounds.right-n.planeBounds.left,c=n.planeBounds.top-n.planeBounds.bottom,this.fontMets[a].lbwh=[r,s,o,c]}},et.prototype.loadFont=async function(t=ka,i=Pa){await this.loadFontTexture(t);let e=await fetch(i);if(!e.ok)throw Error(e.statusText);let n=await e.text();this.fontMetrics=JSON.parse(n),this.initFontMets(),this.fontShader.use(this.gl),this.gl.uniform1i(this.fontShader.uniforms.fontTexture,3),this.drawScene()},et.prototype.loadDefaultFont=async function(){await this.loadFontTexture(this.DEFAULT_FONT_GLYPH_SHEET),this.fontMetrics=this.DEFAULT_FONT_METRICS,this.initFontMets()},et.prototype.initText=async function(){this.fontShader=new kt(this.gl,jn,Vn),this.fontShader.use(this.gl),await this.loadDefaultFont(),this.drawLoadingText(this.loadingText)},et.prototype.initText=async function(){this.fontShader=new kt(this.gl,jn,Vn),this.fontShader.use(this.gl),await this.loadDefaultFont(),this.drawLoadingText(this.loadingText)},et.prototype.setMeshShader=function(t=2){this.gl.deleteProgram(this.meshShader.program);let i=0;if(typeof t=="number")i=t;else{let n=t.toLowerCase();for(var e=0;e<this.meshShaders.length;e++)if(this.meshShaders[e].Name.toLowerCase()===n){i=e;break}}i=Math.min(i,this.meshShaders.length-1),i=Math.max(i,0),this.meshShader=new kt(this.gl,Qn,this.meshShaders[i].Frag),this.updateGLVolume()},et.prototype.meshShaderNames=function(t=!0){let i=[];for(var e=0;e<this.meshShaders.length;e++)i.push(this.meshShaders[e].Name);return t===!0?i.sort():i},et.prototype.init=async function(){let t=this.gl.getExtension("WEBGL_debug_renderer_info"),i=this.gl.getParameter(t.UNMASKED_VENDOR_WEBGL),e=this.gl.getParameter(t.UNMASKED_RENDERER_WEBGL);ne.info("renderer vendor: ",i),ne.info("renderer: ",e),this.gl.enable(this.gl.CULL_FACE),this.gl.cullFace(this.gl.FRONT),this.gl.enable(this.gl.BLEND),this.gl.blendFunc(this.gl.SRC_ALPHA,this.gl.ONE_MINUS_SRC_ALPHA),this.rgbaTex(this.volumeTexture,this.gl.TEXTURE0,[2,2,2,2],!0),this.rgbaTex(this.overlayTexture,this.gl.TEXTURE2,[2,2,2,2],!0);let n=[1,1,0,1,0,0,0,1,0,0,0,0];return this.cuboidVertexBuffer=this.gl.createBuffer(),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.cuboidVertexBuffer),this.gl.bufferData(this.gl.ARRAY_BUFFER,new Float32Array(n),this.gl.STATIC_DRAW),this.genericVAO=this.gl.createVertexArray(),this.gl.bindVertexArray(this.genericVAO),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.cuboidVertexBuffer),this.gl.enableVertexAttribArray(0),this.gl.vertexAttribPointer(0,3,this.gl.FLOAT,!1,0,0),this.gl.bindVertexArray(this.unusedVAO),this.pickingShader=new kt(this.gl,en,ys),this.pickingShader.use(this.gl),this.gl.uniform1i(this.pickingShader.uniforms.volume,0),this.gl.uniform1i(this.pickingShader.uniforms.overlay,2),this.pickingShader.mvpUniformLoc=this.pickingShader.uniforms.mvpMtx,this.pickingShader.rayDirUniformLoc=this.pickingShader.uniforms.rayDir,this.pickingShader.clipPlaneUniformLoc=this.pickingShader.uniforms.clipPlane,this.sliceShader=new kt(this.gl,rs,as),this.sliceShader.use(this.gl),this.gl.uniform1i(this.sliceShader.uniforms.volume,0),this.gl.uniform1i(this.sliceShader.uniforms.overlay,2),this.lineShader=new kt(this.gl,hs,ss),this.renderShader=new kt(this.gl,en,ns),this.renderShader.use(this.gl),this.gl.uniform1i(this.renderShader.uniforms.volume,0),this.gl.uniform1i(this.renderShader.uniforms.overlay,2),this.renderShader.mvpUniformLoc=this.renderShader.uniforms.mvpMtx,this.renderShader.mvpMatRASLoc=this.renderShader.uniforms.matRAS,this.renderShader.rayDirUniformLoc=this.renderShader.uniforms.rayDir,this.renderShader.clipPlaneUniformLoc=this.renderShader.uniforms.clipPlane,this.colorbarShader=new kt(this.gl,os,ls),this.colorbarShader.use(this.gl),this.gl.uniform1i(this.colorbarShader.uniforms.colormap,1),this.passThroughShader=new kt(this.gl,ps,gs),this.orientShaderAtlasU=new kt(this.gl,ii,nn.concat(us)),this.orientShaderU=new kt(this.gl,ii,nn.concat(rn)),this.orientShaderI=new kt(this.gl,ii,fs.concat(rn)),this.orientShaderF=new kt(this.gl,ii,cs.concat(rn)),this.orientShaderRGBU=new kt(this.gl,ii,nn.concat(ds)),this.pickingSurfaceShader=new kt(this.gl,en,Is),this.surfaceShader=new kt(this.gl,ms,vs),this.meshShader=new kt(this.gl,Qn,this.meshShaders[0].Frag),await this.initText(),this.updateGLVolume(),this.initialized=!0,this.drawScene(),this},et.prototype.updateGLVolume=function(){let t=0,i=this.volumes.length;this.refreshColormaps();for(let e=0;e<i;e++)!this.volumes[e].toRAS||(this.refreshLayers(this.volumes[e],t,i),t++);this.drawScene()},et.prototype.refreshLayers=function(t,i,e){let n=t.hdr,a=t.img,r=t.opacity,s=null;this.gl.bindVertexArray(this.unusedVAO),this.crosshairs3D!==null&&(this.crosshairs3D.mm[0]=NaN);let o=he(t.toRAS);if(i===0){this.volumeObject3D=t.toNiivueObject3D(this.VOLUME_ID,this.gl),Pe(o,o),ne.debug(`mtx layer ${i}`,o),this.back.matRAS=t.matRAS,this.back.dims=t.dimsRAS,this.back.pixDims=t.pixDimsRAS,s=this.rgbaTex(this.volumeTexture,this.gl.TEXTURE0,t.dimsRAS);let{volScale:A,vox:x}=this.sliceScale();this.volScale=A,this.vox=x,this.volumeObject3D.scale=A,this.renderShader.use(this.gl),this.gl.uniform3fv(this.renderShader.uniforms.texVox,x),this.gl.uniform3fv(this.renderShader.uniforms.volScale,A),this.renderShader;let w=this.pickingShader;w.use(this.gl),this.gl.uniform1i(w.uniforms.volume,0),this.gl.uniform1i(w.uniforms.colormap,1),this.gl.uniform1i(w.uniforms.overlay,2),this.gl.uniform3fv(w.uniforms.volScale,A),ne.debug(this.volumeObject3D)}else{this.back.dims===void 0&&ne.error("Fatal error: Unable to render overlay: background dimensions not defined!");let A=this.mm2frac(t.mm000),x=this.mm2frac(t.mm100),w=this.mm2frac(t.mm010),I=this.mm2frac(t.mm001);x=$t(x,x,A),w=$t(w,w,A),I=$t(I,I,A),o=ue(x[0],x[1],x[2],A[0],w[0],w[1],w[2],A[1],I[0],I[1],I[2],A[2],0,0,0,1),Pe(o,o),i===1?(s=this.rgbaTex(this.overlayTexture,this.gl.TEXTURE2,this.back.dims),this.overlayTextureID=s):s=this.overlayTextureID}let c=this.gl.createFramebuffer();this.gl.bindFramebuffer(this.gl.FRAMEBUFFER,c),this.gl.disable(this.gl.CULL_FACE),this.gl.viewport(0,0,this.back.dims[1],this.back.dims[2]),this.gl.disable(this.gl.BLEND);let h=this.gl.createTexture();this.gl.activeTexture(this.gl.TEXTURE6),this.gl.bindTexture(this.gl.TEXTURE_3D,h),this.gl.texParameteri(this.gl.TEXTURE_3D,this.gl.TEXTURE_MIN_FILTER,this.gl.NEAREST),this.gl.texParameteri(this.gl.TEXTURE_3D,this.gl.TEXTURE_MAG_FILTER,this.gl.NEAREST),this.gl.texParameteri(this.gl.TEXTURE_3D,this.gl.TEXTURE_WRAP_R,this.gl.CLAMP_TO_EDGE),this.gl.texParameteri(this.gl.TEXTURE_3D,this.gl.TEXTURE_WRAP_S,this.gl.CLAMP_TO_EDGE),this.gl.texParameteri(this.gl.TEXTURE_3D,this.gl.TEXTURE_WRAP_T,this.gl.CLAMP_TO_EDGE),this.gl.pixelStorei(this.gl.UNPACK_ALIGNMENT,1);let l=this.orientShaderU;if(n.datatypeCode===2)n.intent_code===1002&&(l=this.orientShaderAtlasU),this.gl.texStorage3D(this.gl.TEXTURE_3D,1,this.gl.R8UI,n.dims[1],n.dims[2],n.dims[3]),this.gl.texSubImage3D(this.gl.TEXTURE_3D,0,0,0,0,n.dims[1],n.dims[2],n.dims[3],this.gl.RED_INTEGER,this.gl.UNSIGNED_BYTE,a);else if(n.datatypeCode===4)this.gl.texStorage3D(this.gl.TEXTURE_3D,1,this.gl.R16I,n.dims[1],n.dims[2],n.dims[3]),this.gl.texSubImage3D(this.gl.TEXTURE_3D,0,0,0,0,n.dims[1],n.dims[2],n.dims[3],this.gl.RED_INTEGER,this.gl.SHORT,a),l=this.orientShaderI;else if(n.datatypeCode===16)this.gl.texStorage3D(this.gl.TEXTURE_3D,1,this.gl.R32F,n.dims[1],n.dims[2],n.dims[3]),this.gl.texSubImage3D(this.gl.TEXTURE_3D,0,0,0,0,n.dims[1],n.dims[2],n.dims[3],this.gl.RED,this.gl.FLOAT,a),l=this.orientShaderF;else if(n.datatypeCode===64){let A=new Float32Array;A=Float32Array.from(a),this.gl.texStorage3D(this.gl.TEXTURE_3D,1,this.gl.R32F,n.dims[1],n.dims[2],n.dims[3]),this.gl.texSubImage3D(this.gl.TEXTURE_3D,0,0,0,0,n.dims[1],n.dims[2],n.dims[3],this.gl.RED,this.gl.FLOAT,A),l=this.orientShaderF}else n.datatypeCode===128?(l=this.orientShaderRGBU,l.use(this.gl),this.gl.uniform1i(l.uniforms.hasAlpha,!1),this.gl.texStorage3D(this.gl.TEXTURE_3D,1,this.gl.RGB8UI,n.dims[1],n.dims[2],n.dims[3]),this.gl.texSubImage3D(this.gl.TEXTURE_3D,0,0,0,0,n.dims[1],n.dims[2],n.dims[3],this.gl.RGB_INTEGER,this.gl.UNSIGNED_BYTE,a)):n.datatypeCode===512?(this.gl.texStorage3D(this.gl.TEXTURE_3D,1,this.gl.R16UI,n.dims[1],n.dims[2],n.dims[3]),this.gl.texSubImage3D(this.gl.TEXTURE_3D,0,0,0,0,n.dims[1],n.dims[2],n.dims[3],this.gl.RED_INTEGER,this.gl.UNSIGNED_SHORT,a)):n.datatypeCode===2304&&(l=this.orientShaderRGBU,l.use(this.gl),this.gl.uniform1i(l.uniforms.hasAlpha,!0),this.gl.texStorage3D(this.gl.TEXTURE_3D,1,this.gl.RGBA8UI,n.dims[1],n.dims[2],n.dims[3]),this.gl.texSubImage3D(this.gl.TEXTURE_3D,0,0,0,0,n.dims[1],n.dims[2],n.dims[3],this.gl.RGBA_INTEGER,this.gl.UNSIGNED_BYTE,a));t.global_min===void 0&&t.calMinMax();let p=null;if(this.gl.bindVertexArray(this.genericVAO),i>1){p=this.rgbaTex(p,this.gl.TEXTURE5,this.back.dims),this.gl.bindTexture(this.gl.TEXTURE_3D,p);let A=this.passThroughShader;A.use(this.gl),this.gl.uniform1i(A.uniforms.in3D,2);for(let x=0;x<this.back.dims[3];x++){let w=1/this.back.dims[3]*(x+.5);this.gl.uniform1f(A.uniforms.coordZ,w),this.gl.framebufferTextureLayer(this.gl.FRAMEBUFFER,this.gl.COLOR_ATTACHMENT0,p,0,x),this.gl.drawArrays(this.gl.TRIANGLE_STRIP,0,4)}}else p=this.rgbaTex(p,this.gl.TEXTURE5,[2,2,2,2]);if(l.use(this.gl),this.gl.activeTexture(this.gl.TEXTURE1),this.gl.bindTexture(this.gl.TEXTURE_2D,this.colormapTexture),this.gl.uniform1f(l.uniforms.cal_min,t.cal_min),this.gl.uniform1f(l.uniforms.cal_max,t.cal_max),this.gl.bindTexture(this.gl.TEXTURE_3D,h),this.gl.uniform1i(l.uniforms.intensityVol,6),this.gl.uniform1i(l.uniforms.blend3D,5),this.gl.uniform1i(l.uniforms.colormap,1),this.gl.uniform1f(l.uniforms.layer,i),this.gl.uniform1f(l.uniforms.numLayers,e),this.gl.uniform1f(l.uniforms.scl_inter,n.scl_inter),this.gl.uniform1f(l.uniforms.scl_slope,n.scl_slope),this.gl.uniform1f(l.uniforms.opacity,r),this.gl.uniformMatrix4fv(l.uniforms.mtx,!1,o),n.intent_code===1002){let A=1/this.back.dims[1];this.opts.isAtlasOutline||(A=-A),this.gl.uniform3fv(l.uniforms.xyzFrac,[A,1/this.back.dims[2],1/this.back.dims[3]])}ne.debug("back dims: ",this.back.dims);for(let A=0;A<this.back.dims[3];A++){let x=1/this.back.dims[3]*(A+.5);this.gl.uniform1f(l.uniforms.coordZ,x),this.gl.framebufferTextureLayer(this.gl.FRAMEBUFFER,this.gl.COLOR_ATTACHMENT0,s,0,A),this.gl.drawArrays(this.gl.TRIANGLE_STRIP,0,4)}this.gl.bindVertexArray(this.unusedVAO),this.gl.deleteTexture(h),this.gl.deleteTexture(p),this.gl.viewport(0,0,this.gl.canvas.width,this.gl.canvas.height),this.gl.bindFramebuffer(this.gl.FRAMEBUFFER,null),this.gl.deleteFramebuffer(c),this.renderShader.use(this.gl);let f=this.sliceScale(),d=f.vox,E=f.volScale;this.gl.uniform1f(this.renderShader.uniforms.overlays,this.overlays),this.gl.uniform4fv(this.renderShader.uniforms.clipPlaneColor,this.opts.clipPlaneColor),this.gl.uniform1f(this.renderShader.uniforms.backOpacity,this.volumes[0].opacity),this.gl.uniform4fv(this.renderShader.uniforms.clipPlane,this.scene.clipPlane),this.gl.uniform3fv(this.renderShader.uniforms.texVox,d),this.gl.uniform3fv(this.renderShader.uniforms.volScale,E),this.pickingShader.use(this.gl),this.gl.uniform1f(this.pickingShader.uniforms.overlays,this.overlays),this.gl.uniform3fv(this.pickingShader.uniforms.texVox,d),this.sliceShader.use(this.gl),this.gl.uniform1f(this.sliceShader.uniforms.overlays,this.overlays),this.updateInterpolation(i)},et.prototype.colorMaps=function(t=!0){let i=[];for(const[e]of Object.entries(Kt))i.push(e);return t===!0?i.sort():i},et.prototype.setColorMap=function(t,i){let e=this.getVolumeIndexByID(t);this.volumes[e].colorMap=i,this.updateGLVolume()},et.prototype.colormapFromKey=function(t){let i=this.colorMaps();for(let e=0;e<i.length;e++){let n=i[e];if(t.toLowerCase()===n.toLowerCase())return Kt[n]}},et.prototype.colormap=function(t=""){let i="gray",e=this.colorMaps();for(let n=0;n<e.length;n++){let a=e[n];if(t.toLowerCase()===a.toLowerCase())return this.makeLut(Kt[a].R,Kt[a].G,Kt[a].B,Kt[a].A,Kt[a].I)}return this.makeLut(Kt[i].R,Kt[i].G,Kt[i].B,Kt[i].A,Kt[i].I)},et.prototype.refreshColormaps=function(){let t=this.volumes.length;if(t<1)return;this.colormapTexture!==null&&this.gl.deleteTexture(this.colormapTexture),this.colormapTexture=this.gl.createTexture(),this.gl.activeTexture(this.gl.TEXTURE1),this.gl.bindTexture(this.gl.TEXTURE_2D,this.colormapTexture),this.gl.texStorage2D(this.gl.TEXTURE_2D,1,this.gl.RGBA8,256,t),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_MIN_FILTER,this.gl.LINEAR),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_MAG_FILTER,this.gl.LINEAR),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_R,this.gl.CLAMP_TO_EDGE),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_S,this.gl.CLAMP_TO_EDGE),this.gl.pixelStorei(this.gl.UNPACK_ALIGNMENT,1);let i=this.colormap(this.volumes[0].colorMap);if(t>1)for(let e=1;e<t;e++){let n=this.colormap(this.volumes[e].colorMap),a=new Uint8ClampedArray(i.length+n.length);a.set(i),a.set(n,i.length),i=a}return this.gl.texSubImage2D(this.gl.TEXTURE_2D,0,0,0,256,t,this.gl.RGBA,this.gl.UNSIGNED_BYTE,i),this},et.prototype.makeLut=function(t,i,e,n,a){for(var r=new Uint8ClampedArray(1024),s=0;s<a.length-1;s++)for(var o=a[s],c=a[s+1],h=c-o,l=o*4,p=o;p<=c;p++){var f=(p-o)/h;r[l++]=t[s]+f*(t[s+1]-t[s]),r[l++]=i[s]+f*(i[s+1]-i[s]),r[l++]=e[s]+f*(e[s+1]-e[s]),r[l++]=n[s]+f*(n[s+1]-n[s])}return r},et.prototype.sliceScale=function(){var t=[1,this.back.dims[1]*this.back.pixDims[1],this.back.dims[2]*this.back.pixDims[2],this.back.dims[3]*this.back.pixDims[3]],i=Math.max(t[1],Math.max(t[2],t[3])),e=[t[1]/i,t[2]/i,t[3]/i],n=[this.back.dims[1],this.back.dims[2],this.back.dims[3]];return{volScale:e,vox:n}},et.prototype.mouseClick=function(t,i,e=0,n=!0){var a,r;if(this.canvas.focus(),this.sliceType===this.sliceTypeRender){if(e===0)return;if(this.scene.clipPlaneDepthAziElev[0]<1.8){let l=this.scene.clipPlaneDepthAziElev.slice();return e>0&&(l[0]=Math.min(1.5,l[0]+.025)),e<0&&(l[0]=Math.max(-1.5,l[0]-.025)),l[0]!==this.scene.clipPlaneDepthAziElev[0]?(this.scene.clipPlaneDepthAziElev=l,this.setClipPlane(this.scene.clipPlaneDepthAziElev)):void 0}e>0&&(this.volScaleMultiplier=Math.min(2,this.volScaleMultiplier*1.1)),e<0&&(this.volScaleMultiplier=Math.max(.5,this.volScaleMultiplier*.9)),this.drawScene();return}if(!(this.numScreenSlices<1||this.gl.canvas.height<1||this.gl.canvas.width<1))for(let l=0;l<this.numScreenSlices;l++){var s=this.screenSlices[l].axCorSag;if(s>this.sliceTypeSagittal)continue;var o=this.screenSlices[l].leftTopWidthHeight;let p=!1;o[2]<0&&(p=!0,o[0]+=o[2],o[2]=-o[2]);var c=(t-o[0])/o[2];p&&(c=1-c);var h=1-(i-o[1])/o[3];if(c>=0&&c<1&&h>=0&&h<1){if(!n){this.scene.crosshairPos[2-s]=e,this.drawScene();return}if(e!==0){a=this.scene.crosshairPos[2-s],r=a+e,r>1&&(r=1),r<0&&(r=0),this.scene.crosshairPos[2-s]=r,this.drawScene(),this.scene.location$.next({mm:this.frac2mm(this.scene.crosshairPos),vox:this.frac2vox(this.scene.crosshairPos),frac:this.scene.crosshairPos,values:this.volumes.map(f=>{let d=this.frac2mm(this.scene.crosshairPos),E=f.mm2vox(d);return f.getValue(...E)})});return}s===this.sliceTypeAxial&&(this.scene.crosshairPos[0]=c,this.scene.crosshairPos[1]=h),s===this.sliceTypeCoronal&&(this.scene.crosshairPos[0]=c,this.scene.crosshairPos[2]=h),s===this.sliceTypeSagittal&&(this.scene.crosshairPos[1]=c,this.scene.crosshairPos[2]=h),this.drawScene(),this.scene.location$.next({mm:this.frac2mm(this.scene.crosshairPos),vox:this.frac2vox(this.scene.crosshairPos),frac:this.scene.crosshairPos,values:this.volumes.map(f=>{let d=this.frac2mm(this.scene.crosshairPos),E=f.mm2vox(d);return f.getValue(...E)})});return}else if(t===null&&i===null){this.scene.crosshairPos[2-s]=e,this.drawScene();return}}},et.prototype.drawSelectionBox=function(t){this.lineShader.use(this.gl),this.gl.uniform4fv(this.lineShader.uniforms.lineColor,this.opts.selectionBoxColor),this.gl.uniform2fv(this.lineShader.uniforms.canvasWidthHeight,[this.gl.canvas.width,this.gl.canvas.height]),this.gl.uniform4f(this.lineShader.uniforms.leftTopWidthHeight,t[0],t[1],t[2],t[3]),this.gl.bindVertexArray(this.genericVAO),this.gl.drawArrays(this.gl.TRIANGLE_STRIP,0,4),this.gl.bindVertexArray(this.unusedVAO)},et.prototype.drawColorbar=function(t){t[2]<=0||t[3]<=0||(this.colorbarShader.use(this.gl),this.gl.activeTexture(this.gl.TEXTURE1),this.gl.bindTexture(this.gl.TEXTURE_2D,this.colormapTexture),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_MIN_FILTER,this.gl.NEAREST),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_MAG_FILTER,this.gl.NEAREST),this.gl.uniform2fv(this.colorbarShader.uniforms.canvasWidthHeight,[this.gl.canvas.width,this.gl.canvas.height]),this.gl.uniform4f(this.colorbarShader.uniforms.leftTopWidthHeight,t[0],t[1],t[2],t[3]),this.gl.bindVertexArray(this.genericVAO),this.gl.drawArrays(this.gl.TRIANGLE_STRIP,0,4),this.gl.bindVertexArray(this.unusedVAO),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_MIN_FILTER,this.gl.LINEAR),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_MAG_FILTER,this.gl.LINEAR))},et.prototype.textWidth=function(t,i){let e=0;var n=new TextEncoder().encode(i);for(let a=0;a<i.length;a++)e+=t*this.fontMets[n[a]].xadv;return e},et.prototype.drawChar=function(t,i,e){let n=this.fontMets[e],a=t[0]+i*n.lbwh[0],r=-(i*n.lbwh[1]),s=i*n.lbwh[2],o=i*n.lbwh[3],c=t[1]+(r-o)+i;return this.gl.uniform4f(this.fontShader.uniforms.leftTopWidthHeight,a,c,s,o),this.gl.uniform4fv(this.fontShader.uniforms.uvLeftTopWidthHeight,n.uv_lbwh),this.gl.drawArrays(this.gl.TRIANGLE_STRIP,0,4),i*n.xadv},et.prototype.drawLoadingText=function(t){this.gl.viewport(0,0,this.gl.canvas.width,this.gl.canvas.height),this.gl.enable(this.gl.CULL_FACE),this.drawTextBelow([this.canvas.width/2,this.canvas.height/2],t,3),this.canvas.focus()},et.prototype.drawText=function(t,i,e=1){if(this.opts.textHeight<=0)return;this.fontShader.use(this.gl);let n=this.opts.textHeight*Math.min(this.gl.canvas.height,this.gl.canvas.width)*e;this.gl.enable(this.gl.BLEND),this.gl.uniform2f(this.fontShader.uniforms.canvasWidthHeight,this.gl.canvas.width,this.gl.canvas.height),this.gl.uniform4fv(this.fontShader.uniforms.fontColor,this.opts.crosshairColor);let a=n/this.fontMets.size*this.fontMets.distanceRange;a=Math.max(a,1),this.gl.uniform1f(this.fontShader.uniforms.screenPxRange,a);var r=new TextEncoder().encode(i);this.gl.bindVertexArray(this.genericVAO);for(let s=0;s<i.length;s++)t[0]+=this.drawChar(t,n,r[s]);this.gl.bindVertexArray(this.unusedVAO)},et.prototype.drawTextRight=function(t,i,e=1){this.opts.textHeight<=0||(t[1]-=.5*this.opts.textHeight*this.gl.canvas.height,this.drawText(t,i,e))},et.prototype.drawTextBelow=function(t,i,e=1){if(this.opts.textHeight<=0)return;let n=this.opts.textHeight*this.gl.canvas.height*e;t[0]-=.5*this.textWidth(n,i),this.drawText(t,i,e)},et.prototype.updateInterpolation=function(t){let i=this.gl.LINEAR;this.opts.isNearestInterpolation&&(i=this.gl.NEAREST),t===0?this.gl.activeTexture(this.gl.TEXTURE0):this.gl.activeTexture(this.gl.TEXTURE2),this.gl.texParameteri(this.gl.TEXTURE_3D,this.gl.TEXTURE_MIN_FILTER,i),this.gl.texParameteri(this.gl.TEXTURE_3D,this.gl.TEXTURE_MAG_FILTER,i)},et.prototype.setAtlasOutline=function(t){this.opts.isAtlasOutline=t,this.updateGLVolume(),this.drawScene()},et.prototype.setInterpolation=function(t){this.opts.isNearestInterpolation=t;let i=this.volumes.length;i<1||(this.updateInterpolation(0),i>1&&this.updateInterpolation(1),this.drawScene())},et.prototype.draw2D=function(t,i){this.gl.cullFace(this.gl.FRONT);var e=[this.scene.crosshairPos[0],this.scene.crosshairPos[1],this.scene.crosshairPos[2]];i===this.sliceTypeCoronal&&(e=[this.scene.crosshairPos[0],this.scene.crosshairPos[2],this.scene.crosshairPos[1]]),i===this.sliceTypeSagittal&&(e=[this.scene.crosshairPos[1],this.scene.crosshairPos[2],this.scene.crosshairPos[0]]);let n=this.opts.isRadiologicalConvention&&i<this.sliceTypeSagittal;if(this.sliceShader.use(this.gl),this.gl.uniform1f(this.sliceShader.uniforms.opacity,this.volumes[0].opacity),this.gl.uniform1i(this.sliceShader.uniforms.axCorSag,i),this.gl.uniform1f(this.sliceShader.uniforms.slice,e[2]),this.gl.uniform2fv(this.sliceShader.uniforms.canvasWidthHeight,[this.gl.canvas.width,this.gl.canvas.height]),n&&(this.gl.disable(this.gl.CULL_FACE),t[2]=-t[2],t[0]=t[0]-t[2]),this.gl.uniform4f(this.sliceShader.uniforms.leftTopWidthHeight,t[0],t[1],t[2],t[3]),this.gl.bindVertexArray(this.genericVAO),this.gl.drawArrays(this.gl.TRIANGLE_STRIP,0,4),this.screenSlices[this.numScreenSlices].leftTopWidthHeight=t,this.screenSlices[this.numScreenSlices].axCorSag=i,this.numScreenSlices+=1,!(this.opts.crosshairWidth<=0)){this.lineShader.use(this.gl),this.gl.uniform4fv(this.lineShader.uniforms.lineColor,this.opts.crosshairColor),this.gl.uniform2fv(this.lineShader.uniforms.canvasWidthHeight,[this.gl.canvas.width,this.gl.canvas.height]);var a=t[0]+t[2]*e[0];this.gl.uniform4f(this.lineShader.uniforms.leftTopWidthHeight,a-.5*this.opts.crosshairWidth,t[1],this.opts.crosshairWidth,t[3]),this.gl.drawArrays(this.gl.TRIANGLE_STRIP,0,4);var r=t[1]+t[3]*(1-e[1]);this.gl.uniform4f(this.lineShader.uniforms.leftTopWidthHeight,t[0],r-.5*this.opts.crosshairWidth,t[2],this.opts.crosshairWidth),this.gl.drawArrays(this.gl.TRIANGLE_STRIP,0,4),this.gl.bindVertexArray(this.unusedVAO),this.gl.enable(this.gl.CULL_FACE),n?this.drawTextRight([t[0]+t[2]+1,t[1]+.5*t[3]],"R"):i<this.sliceTypeSagittal&&this.drawTextRight([t[0]+1,t[1]+.5*t[3]],"L"),i===this.sliceTypeAxial&&this.drawTextBelow([t[0]+.5*t[2],t[1]+1],"A"),i>this.sliceTypeAxial&&this.drawTextBelow([t[0]+.5*t[2],t[1]+1],"S"),this.sync()}},et.prototype.calculateMvpMatrix=function(){function t(h){return h*(Math.PI/180)}let i=this.gl.canvas.clientWidth/this.gl.canvas.clientHeight,e=ie(),n=.7*this.volumeObject3D.furthestVertexFromOrigin*1/this.volScaleMultiplier;i<1?Yn(e,-n,n,-n/i,n/i,.01,n*8):Yn(e,-n*i,n*i,-n,n,.01,n*8);const a=ie();a[0]=-1;let r=Vt(0,0,-n*1.8);$i(a,a,r),$i(a,a,this.volumeObject3D.position),zn(a,a,t(270-this.scene.renderElevation)),Gn(a,a,t(this.scene.renderAzimuth-180)),$i(a,a,this.volumeObject3D.originNegate);let s=ie();Pe(s,a);let o=ie();Qe(o,s);let c=ie();return ti(c,e,a),[c,a,o]},et.prototype.calculateRayDirection=function(){function t(h){return h*(Math.PI/180)}const i=ie();i[0]=-1,zn(i,i,t(270-this.scene.renderElevation)),Gn(i,i,t(this.scene.renderAzimuth-180));let e=he(this.back.obliqueRAS);ti(i,i,e);let n=ue(1,0,0,0,0,-1,0,0,0,0,-1,0,0,0,0,1),a=ie();ti(a,n,i);var r=ie();Pe(r,a);var s=De(0,0,-1,1);Xe(s,s,r);let o=Vt(s[0],s[1],s[2]);Le(o,o);const c=5e-5;return Math.abs(o[0])<c&&(o[0]=c),Math.abs(o[1])<c&&(o[1]=c),Math.abs(o[2])<c&&(o[2]=c),o},et.prototype.draw3D=function(){let t=this.gl;t.viewport(0,0,t.canvas.width,t.canvas.height);let i,e,n;[i,e,n]=this.calculateMvpMatrix(this.volumeObject3D);const a=this.calculateRayDirection();let r=this.volumeObject3D;if(this.scene.mouseDepthPicker){if(t.clear(t.COLOR_BUFFER_BIT|t.DEPTH_BUFFER_BIT),this.scene.mouseDepthPicker=!1,r.isVisible&&r.isPickable){let l=this.pickingShader;l.use(this.gl),t.enable(t.CULL_FACE),t.cullFace(t.FRONT),t.uniformMatrix4fv(l.mvpUniformLoc,!1,i),t.uniform3fv(l.rayDirUniformLoc,a),t.uniform4fv(l.clipPlaneUniformLoc,this.scene.clipPlane),t.uniform1i(l.uniforms.id,r.id),t.bindVertexArray(r.vao),t.drawElements(r.mode,r.indexCount,t.UNSIGNED_SHORT,0),t.bindVertexArray(this.unusedVAO)}const o=this.mousePos[0]*t.canvas.width/t.canvas.clientWidth,c=t.canvas.height-this.mousePos[1]*t.canvas.height/t.canvas.clientHeight-1,h=new Uint8Array(4);t.readPixels(o,c,1,1,t.RGBA,t.UNSIGNED_BYTE,h),this.selectedObjectId=h[3],this.selectedObjectId===this.VOLUME_ID&&(this.scene.crosshairPos=new Float32Array(h.slice(0,3)).map(l=>l/255))}if(t.clear(t.COLOR_BUFFER_BIT|t.DEPTH_BUFFER_BIT),this.volumeObject3D.isVisible){t.enable(t.BLEND),t.blendFunc(t.SRC_ALPHA,t.ONE_MINUS_SRC_ALPHA),t.enable(t.CULL_FACE),t.cullFace(t.FRONT);let o=this.renderShader;o.use(this.gl),t.uniformMatrix4fv(o.mvpUniformLoc,!1,i),t.uniformMatrix4fv(o.mvpMatRASLoc,!1,this.back.matRAS),t.uniform3fv(o.rayDirUniformLoc,a),t.uniform4fv(o.clipPlaneUniformLoc,this.scene.clipPlane),t.bindVertexArray(r.vao),t.drawElements(r.mode,r.indexCount,t.UNSIGNED_SHORT,0),t.bindVertexArray(this.unusedVAO)}this.drawCrosshairs3D(!0,1),this.drawMesh3D(!0,1),this.drawCrosshairs3D(!1,.35);let s="azimuth: "+this.scene.renderAzimuth.toFixed(0)+" elevation: "+this.scene.renderElevation.toFixed(0);return this.sync(),s},et.prototype.drawMesh3D=function(t=!0,i=1){if(this.meshes.length<1)return;let e=this.gl,n,a,r;[n,a,r]=this.calculateMvpMatrix(this.crosshairs3D),e.enable(e.DEPTH_TEST),e.enable(e.BLEND),e.blendFunc(e.SRC_ALPHA,e.ONE_MINUS_SRC_ALPHA),t?(e.enable(e.DEPTH_TEST),e.disable(e.BLEND),e.depthFunc(e.GREATER)):(e.disable(e.DEPTH_TEST),e.enable(e.BLEND),e.depthFunc(e.ALWAYS)),e.disable(e.CULL_FACE),this.meshShader.use(this.gl),e.uniformMatrix4fv(this.meshShader.uniforms.mvpMtx,!1,n),e.uniformMatrix4fv(this.meshShader.uniforms.modelMtx,!1,a),e.uniformMatrix4fv(this.meshShader.uniforms.normMtx,!1,r),e.uniform1f(this.meshShader.uniforms.opacity,i);for(let s=0;s<this.meshes.length;s++)this.meshes[s].indexCount<3||(e.bindVertexArray(this.meshes[s].vao),e.drawElements(e.TRIANGLES,this.meshes[s].indexCount,e.UNSIGNED_INT,0),e.bindVertexArray(this.unusedVAO))},et.prototype.drawCrosshairs3D=function(t=!0,i=1){if(!this.opts.show3Dcrosshair)return;let e=this.gl,n=this.frac2mm(this.scene.crosshairPos);if(this.crosshairs3D===null||this.crosshairs3D.mm[0]!==n[0]||this.crosshairs3D.mm[1]!==n[1]||this.crosshairs3D.mm[2]!==n[2]){this.crosshairs3D!==null&&(e.deleteBuffer(this.crosshairs3D.indexBuffer),e.deleteBuffer(this.crosshairs3D.vertexBuffer));let h=Math.min(Math.min(this.back.pixDims[1],this.back.pixDims[2]),this.back.pixDims[3]);this.crosshairs3D=Ht.generateCrosshairs(this.gl,1,n,this.volumeObject3D.extentsMin,this.volumeObject3D.extentsMax,h),this.crosshairs3D.minExtent=this.volumeObject3D.minExtent,this.crosshairs3D.maxExtent=this.volumeObject3D.maxExtent,this.crosshairs3D.mm=n,this.crosshairs3D.originNegate=this.volumeObject3D.originNegate,this.crosshairs3D.furthestVertexFromOrigin=this.volumeObject3D.furthestVertexFromOrigin}let a=this.surfaceShader;a.use(this.gl);let r,s,o;[r,s,o]=this.calculateMvpMatrix(this.crosshairs3D),e.uniformMatrix4fv(a.uniforms.mvpMtx,!1,r),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,this.crosshairs3D.indexBuffer),e.enable(e.DEPTH_TEST);let c=[...this.opts.crosshairColor];t?(e.disable(e.BLEND),e.depthFunc(e.GREATER)):(e.enable(e.BLEND),e.blendFunc(e.SRC_ALPHA,e.ONE_MINUS_SRC_ALPHA),e.depthFunc(e.ALWAYS)),c[3]=i,e.uniform4fv(a.uniforms.surfaceColor,c),e.bindVertexArray(this.crosshairs3D.vao),e.drawElements(e.TRIANGLES,this.crosshairs3D.indexCount,e.UNSIGNED_SHORT,0),e.bindVertexArray(this.unusedVAO)},et.prototype.mm2frac=function(t,i=0){let e=De(t[0],t[1],t[2],1),n=this.volumes[i].hdr.dims,a=[0,0,0];if(typeof n=="undefined"||n[1]<1||n[2]<1||n[3]<1)return a;let r=he(this.volumes[i].matRAS);return Qe(r,r),Pe(r,r),Xe(e,e,r),a[0]=(e[0]+.5)/n[1],a[1]=(e[1]+.5)/n[2],a[2]=(e[2]+.5)/n[3],a},et.prototype.vox2frac=function(t,i=0){return[(t[0]+.5)/this.volumes[i].hdr.dims[1],(t[1]+.5)/this.volumes[i].hdr.dims[2],(t[2]+.5)/this.volumes[i].hdr.dims[3]]},et.prototype.frac2vox=function(t,i=0){return[Math.round(t[0]*this.volumes[i].hdr.dims[1]-.5),Math.round(t[1]*this.volumes[i].hdr.dims[2]-.5),Math.round(t[2]*this.volumes[i].hdr.dims[3]-.5)]},et.prototype.frac2mm=function(t,i=0){let e=De(t[0],t[1],t[2],1),n=De(this.volumes[i].dimsRAS[1],this.volumes[i].dimsRAS[2],this.volumes[i].dimsRAS[3],1),a=he(this.volumes[i].matRAS);Qe(a,a),is(e,e,n);let r=De(-.5,-.5,-.5,0);return ts(e,e,r),Xe(e,e,a),e},et.prototype.canvasPos2frac=function(t){let i,e,n;for(let c=0;c<this.numScreenSlices;c++){var a=this.screenSlices[c].axCorSag;if(a>this.sliceTypeSagittal)continue;var r=this.screenSlices[c].leftTopWidthHeight;let h=!1;r[2]<0&&(h=!0,r[0]+=r[2],r[2]=-r[2]);var s=(t[0]-r[0])/r[2];h&&(s=1-s);var o=1-(t[1]-r[1])/r[3];if(s>=0&&s<1&&o>=0&&o<1){switch(a){case this.sliceTypeAxial:break;case this.sliceTypeCoronal:break}a===this.sliceTypeAxial&&(i=s,e=o,n=this.scene.crosshairPos[2]),a===this.sliceTypeCoronal&&(i=s,e=this.scene.crosshairPos[1],n=o),a===this.sliceTypeSagittal&&(i=this.scene.crosshairPos[0],e=s,n=o);break}}return[i,e,n]},et.prototype.scaleSlice=function(t,i){let e=this.gl.canvas.clientWidth/t;i*e>this.gl.canvas.clientHeight&&(e=this.gl.canvas.clientHeight/i);let n=t*e,a=i*e;return[(this.gl.canvas.clientWidth-n)*.5,(this.gl.canvas.clientHeight-a)*.5,n,a]},et.prototype.drawScene=function(){if(!this.initialized)return;this.gl.clearColor(this.opts.backColor[0],this.opts.backColor[1],this.opts.backColor[2],this.opts.backColor[3]),this.gl.clear(this.gl.COLOR_BUFFER_BIT);let t="";if(this.volumes.length===0||typeof this.volumes[0].dims=="undefined"){this.drawLoadingText(this.loadingText);return}if(this.sliceType===this.sliceTypeRender){if(this.isDragging&&this.scene.clipPlaneDepthAziElev[0]<1.8){let a=this.dragStart[0]-this.dragEnd[0],r=this.dragStart[1]-this.dragEnd[1],s=this.dragClipPlaneStartDepthAziElev.slice();if(s[1]-=a,s[1]=s[1]%360,s[2]+=r,s[2]>90&&(s[2]=90),s[2]<-90&&(s[2]=-90),s[1]!==this.scene.clipPlaneDepthAziElev[1]||s[2]!==this.scene.clipPlaneDepthAziElev[2])return this.scene.clipPlaneDepthAziElev=s,this.setClipPlane(this.scene.clipPlaneDepthAziElev)}return this.draw3D()}let{volScale:i}=this.sliceScale();if(this.gl.viewport(0,0,this.gl.canvas.width,this.gl.canvas.height),this.numScreenSlices=0,this.sliceType===this.sliceTypeAxial){let a=this.scaleSlice(i[0],i[1]);this.draw2D(a,0)}else if(this.sliceType===this.sliceTypeCoronal){let a=this.scaleSlice(i[0],i[2]);this.draw2D(a,1)}else if(this.sliceType===this.sliceTypeSagittal){let a=this.scaleSlice(i[1],i[2]);this.draw2D(a,2)}else{let a=this.scaleSlice(i[0]+i[1],i[1]+i[2]),r=a[2]*i[0]/(i[0]+i[1]),s=this.scaleSlice(i[0]+i[0]+i[1],Math.max(i[1],i[2])),o=s[2]*i[0]/(i[0]+i[0]+i[1]);if(o>r){let c=o/i[0],h=i[1]*c,l=i[2]*c;this.draw2D([s[0],s[1],o,h],0),this.draw2D([s[0]+o,s[1],o,l],1),this.draw2D([s[0]+o+o,s[1],h,l],2)}else{let c=a[2]-r,h=a[3]*i[1]/(i[1]+i[2]),l=a[3]-h;this.draw2D([a[0],a[1]+l,r,h],0),this.draw2D([a[0],a[1],r,l],1),this.draw2D([a[0]+r,a[1],c,l],2);var e=this.opts.colorBarMargin*h;this.drawColorbar([a[0]+r+e,a[1]+l+e,c-e-e,h*this.opts.colorbarHeight])}}if(this.isDragging&&this.sliceType!==this.sliceTypeRender){let a=Math.abs(this.dragStart[0]-this.dragEnd[0]),r=Math.abs(this.dragStart[1]-this.dragEnd[1]);this.drawSelectionBox([Math.min(this.dragStart[0],this.dragEnd[0]),Math.min(this.dragStart[1],this.dragEnd[1]),a,r])}const n=this.frac2mm([this.scene.crosshairPos[0],this.scene.crosshairPos[1],this.scene.crosshairPos[2]]);return t=n[0].toFixed(2)+"\xD7"+n[1].toFixed(2)+"\xD7"+n[2].toFixed(2),this.gl.finish(),t},Se.NVImage=Ct,Se.NVMesh=Yt,Se.Niivue=et,Object.defineProperties(Se,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
  