From 80cb0960e8d3c986e829e2e20acf818f908b4b51 Mon Sep 17 00:00:00 2001 From: Takahiro Poly Horikawa Date: Wed, 28 Dec 2022 14:57:12 +0900 Subject: [PATCH 1/2] =?UTF-8?q?=E7=89=B9=E5=BE=B4=E7=82=B9=E3=83=95?= =?UTF-8?q?=E3=82=A1=E3=82=A4=E3=83=AB=E3=82=922023=E3=83=90=E3=83=BC?= =?UTF-8?q?=E3=82=B8=E3=83=A7=E3=83=B3=E3=81=AB=E5=B7=AE=E3=81=97=E6=9B=BF?= =?UTF-8?q?=E3=81=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 9 +- public/DataNFT/image2023.fset | Bin 0 -> 2228 bytes public/DataNFT/image2023.fset3 | Bin 0 -> 275536 bytes public/DataNFT/image2023.iset | Bin 0 -> 26935 bytes public/js/bundle.js | 8 +- public/js/bundle.js.LICENSE.txt | 3 + src/js/app.js | 2 +- yarn.lock | 4416 +++++-------------------------- 8 files changed, 671 insertions(+), 3767 deletions(-) create mode 100644 public/DataNFT/image2023.fset create mode 100644 public/DataNFT/image2023.fset3 create mode 100644 public/DataNFT/image2023.iset create mode 100644 public/js/bundle.js.LICENSE.txt diff --git a/package.json b/package.json index e9fc7e9..8296942 100644 --- a/package.json +++ b/package.json @@ -3,9 +3,7 @@ "version": "1.0.0", "description": "", "main": "index.js", - "scripts": { - "start": "webpack-dev-server --inline --hot --colors --content-base public/" - }, + "scripts": {}, "author": "", "license": "ISC", "dependencies": { @@ -13,8 +11,7 @@ "three": "^0.112" }, "devDependencies": { - "webpack": "^4.41.5", - "webpack-cli": "^3.3.10", - "webpack-dev-server": "^3.10.1" + "webpack": "^5.75.0", + "webpack-cli": "^5.0.1" } } diff --git a/public/DataNFT/image2023.fset b/public/DataNFT/image2023.fset new file mode 100644 index 0000000000000000000000000000000000000000..a440e22b24857f3d13d655695d8b4629c58ae1ec GIT binary patch literal 2228 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 U#)Mdy@|>w5`oqw>oAJ^ed>qNs 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

@Zn&TK=Gb?5DE%e2&i1kC;EUojvX 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 U>#~J`Gj=wQHN^fgb~bMR2OYJeQvd(} literal 0 HcmV?d00001 diff --git a/public/DataNFT/image2023.iset b/public/DataNFT/image2023.iset new file mode 100644 index 0000000000000000000000000000000000000000..641aa35ca841a1128d8a21c6a13318c80040c72a GIT binary patch literal 26935 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 buOQ>mK`nFae0?1:+e}),"name"in Function.prototype==!1&&Object.defineProperty(Function.prototype,"name",{get:function(){return this.toString().match(/^\s*function\s*([^\(\s]*)/)[1]}}),void 0===Object.assign&&(Object.assign=function(e){if(null==e)throw new TypeError("Cannot convert undefined or null to object");for(var t=Object(e),n=1;n>8&255]+Rt[e>>16&255]+Rt[e>>24&255]+"-"+Rt[255&t]+Rt[t>>8&255]+"-"+Rt[t>>16&15|64]+Rt[t>>24&255]+"-"+Rt[63&n|128]+Rt[n>>8&255]+"-"+Rt[n>>16&255]+Rt[n>>24&255]+Rt[255&r]+Rt[r>>8&255]+Rt[r>>16&255]+Rt[r>>24&255]).toUpperCase()},clamp:function(e,t,n){return Math.max(t,Math.min(n,e))},euclideanModulo:function(e,t){return(e%t+t)%t},mapLinear:function(e,t,n,r,i){return r+(e-t)*(i-r)/(n-t)},lerp:function(e,t,n){return(1-n)*e+n*t},smoothstep:function(e,t,n){return e<=t?0:e>=n?1:(e=(e-t)/(n-t))*e*(3-2*e)},smootherstep:function(e,t,n){return e<=t?0:e>=n?1:(e=(e-t)/(n-t))*e*e*(e*(6*e-15)+10)},randInt:function(e,t){return e+Math.floor(Math.random()*(t-e+1))},randFloat:function(e,t){return e+Math.random()*(t-e)},randFloatSpread:function(e){return e*(.5-Math.random())},degToRad:function(e){return e*It.DEG2RAD},radToDeg:function(e){return e*It.RAD2DEG},isPowerOfTwo:function(e){return 0==(e&e-1)&&0!==e},ceilPowerOfTwo:function(e){return Math.pow(2,Math.ceil(Math.log(e)/Math.LN2))},floorPowerOfTwo:function(e){return Math.pow(2,Math.floor(Math.log(e)/Math.LN2))}};function Ot(e,t){this.x=e||0,this.y=t||0}function Dt(e,t,n,r){this._x=e||0,this._y=t||0,this._z=n||0,this._w=void 0!==r?r:1}Object.defineProperties(Ot.prototype,{width:{get:function(){return this.x},set:function(e){this.x=e}},height:{get:function(){return this.y},set:function(e){this.y=e}}}),Object.assign(Ot.prototype,{isVector2:!0,set:function(e,t){return this.x=e,this.y=t,this},setScalar:function(e){return this.x=e,this.y=e,this},setX:function(e){return this.x=e,this},setY:function(e){return this.y=e,this},setComponent:function(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;default:throw new Error("index is out of range: "+e)}return this},getComponent:function(e){switch(e){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+e)}},clone:function(){return new this.constructor(this.x,this.y)},copy:function(e){return this.x=e.x,this.y=e.y,this},add:function(e,t){return void 0!==t?(console.warn("THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(e,t)):(this.x+=e.x,this.y+=e.y,this)},addScalar:function(e){return this.x+=e,this.y+=e,this},addVectors:function(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this},addScaledVector:function(e,t){return this.x+=e.x*t,this.y+=e.y*t,this},sub:function(e,t){return void 0!==t?(console.warn("THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(e,t)):(this.x-=e.x,this.y-=e.y,this)},subScalar:function(e){return this.x-=e,this.y-=e,this},subVectors:function(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this},multiply:function(e){return this.x*=e.x,this.y*=e.y,this},multiplyScalar:function(e){return this.x*=e,this.y*=e,this},divide:function(e){return this.x/=e.x,this.y/=e.y,this},divideScalar:function(e){return this.multiplyScalar(1/e)},applyMatrix3:function(e){var t=this.x,n=this.y,r=e.elements;return this.x=r[0]*t+r[3]*n+r[6],this.y=r[1]*t+r[4]*n+r[7],this},min:function(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this},max:function(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this},clamp:function(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this},clampScalar:function(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this},clampLength:function(e,t){var n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(e,Math.min(t,n)))},floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this},ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this},round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this},roundToZero:function(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this},negate:function(){return this.x=-this.x,this.y=-this.y,this},dot:function(e){return this.x*e.x+this.y*e.y},cross:function(e){return this.x*e.y-this.y*e.x},lengthSq:function(){return this.x*this.x+this.y*this.y},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},manhattanLength:function(){return Math.abs(this.x)+Math.abs(this.y)},normalize:function(){return this.divideScalar(this.length()||1)},angle:function(){var e=Math.atan2(this.y,this.x);return e<0&&(e+=2*Math.PI),e},distanceTo:function(e){return Math.sqrt(this.distanceToSquared(e))},distanceToSquared:function(e){var t=this.x-e.x,n=this.y-e.y;return t*t+n*n},manhattanDistanceTo:function(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)},setLength:function(e){return this.normalize().multiplyScalar(e)},lerp:function(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this},lerpVectors:function(e,t,n){return this.subVectors(t,e).multiplyScalar(n).add(e)},equals:function(e){return e.x===this.x&&e.y===this.y},fromArray:function(e,t){return void 0===t&&(t=0),this.x=e[t],this.y=e[t+1],this},toArray:function(e,t){return void 0===e&&(e=[]),void 0===t&&(t=0),e[t]=this.x,e[t+1]=this.y,e},fromBufferAttribute:function(e,t,n){return void 0!==n&&console.warn("THREE.Vector2: offset has been removed from .fromBufferAttribute()."),this.x=e.getX(t),this.y=e.getY(t),this},rotateAround:function(e,t){var n=Math.cos(t),r=Math.sin(t),i=this.x-e.x,a=this.y-e.y;return this.x=i*n-a*r+e.x,this.y=i*r+a*n+e.y,this}}),Object.assign(Dt,{slerp:function(e,t,n,r){return n.copy(e).slerp(t,r)},slerpFlat:function(e,t,n,r,i,a,o){var s=n[r+0],c=n[r+1],l=n[r+2],h=n[r+3],u=i[a+0],p=i[a+1],d=i[a+2],f=i[a+3];if(h!==f||s!==u||c!==p||l!==d){var m=1-o,v=s*u+c*p+l*d+h*f,g=v>=0?1:-1,y=1-v*v;if(y>Number.EPSILON){var x=Math.sqrt(y),b=Math.atan2(x,v*g);m=Math.sin(m*b)/x,o=Math.sin(o*b)/x}var w=o*g;if(s=s*m+u*w,c=c*m+p*w,l=l*m+d*w,h=h*m+f*w,m===1-o){var _=1/Math.sqrt(s*s+c*c+l*l+h*h);s*=_,c*=_,l*=_,h*=_}}e[t]=s,e[t+1]=c,e[t+2]=l,e[t+3]=h}}),Object.defineProperties(Dt.prototype,{x:{get:function(){return this._x},set:function(e){this._x=e,this._onChangeCallback()}},y:{get:function(){return this._y},set:function(e){this._y=e,this._onChangeCallback()}},z:{get:function(){return this._z},set:function(e){this._z=e,this._onChangeCallback()}},w:{get:function(){return this._w},set:function(e){this._w=e,this._onChangeCallback()}}}),Object.assign(Dt.prototype,{isQuaternion:!0,set:function(e,t,n,r){return this._x=e,this._y=t,this._z=n,this._w=r,this._onChangeCallback(),this},clone:function(){return new this.constructor(this._x,this._y,this._z,this._w)},copy:function(e){return this._x=e.x,this._y=e.y,this._z=e.z,this._w=e.w,this._onChangeCallback(),this},setFromEuler:function(e,t){if(!e||!e.isEuler)throw new Error("THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.");var n=e._x,r=e._y,i=e._z,a=e.order,o=Math.cos,s=Math.sin,c=o(n/2),l=o(r/2),h=o(i/2),u=s(n/2),p=s(r/2),d=s(i/2);return"XYZ"===a?(this._x=u*l*h+c*p*d,this._y=c*p*h-u*l*d,this._z=c*l*d+u*p*h,this._w=c*l*h-u*p*d):"YXZ"===a?(this._x=u*l*h+c*p*d,this._y=c*p*h-u*l*d,this._z=c*l*d-u*p*h,this._w=c*l*h+u*p*d):"ZXY"===a?(this._x=u*l*h-c*p*d,this._y=c*p*h+u*l*d,this._z=c*l*d+u*p*h,this._w=c*l*h-u*p*d):"ZYX"===a?(this._x=u*l*h-c*p*d,this._y=c*p*h+u*l*d,this._z=c*l*d-u*p*h,this._w=c*l*h+u*p*d):"YZX"===a?(this._x=u*l*h+c*p*d,this._y=c*p*h+u*l*d,this._z=c*l*d-u*p*h,this._w=c*l*h-u*p*d):"XZY"===a&&(this._x=u*l*h-c*p*d,this._y=c*p*h-u*l*d,this._z=c*l*d+u*p*h,this._w=c*l*h+u*p*d),!1!==t&&this._onChangeCallback(),this},setFromAxisAngle:function(e,t){var n=t/2,r=Math.sin(n);return this._x=e.x*r,this._y=e.y*r,this._z=e.z*r,this._w=Math.cos(n),this._onChangeCallback(),this},setFromRotationMatrix:function(e){var t,n=e.elements,r=n[0],i=n[4],a=n[8],o=n[1],s=n[5],c=n[9],l=n[2],h=n[6],u=n[10],p=r+s+u;return p>0?(t=.5/Math.sqrt(p+1),this._w=.25/t,this._x=(h-c)*t,this._y=(a-l)*t,this._z=(o-i)*t):r>s&&r>u?(t=2*Math.sqrt(1+r-s-u),this._w=(h-c)/t,this._x=.25*t,this._y=(i+o)/t,this._z=(a+l)/t):s>u?(t=2*Math.sqrt(1+s-r-u),this._w=(a-l)/t,this._x=(i+o)/t,this._y=.25*t,this._z=(c+h)/t):(t=2*Math.sqrt(1+u-r-s),this._w=(o-i)/t,this._x=(a+l)/t,this._y=(c+h)/t,this._z=.25*t),this._onChangeCallback(),this},setFromUnitVectors:function(e,t){var n=e.dot(t)+1;return n<1e-6?(n=0,Math.abs(e.x)>Math.abs(e.z)?(this._x=-e.y,this._y=e.x,this._z=0,this._w=n):(this._x=0,this._y=-e.z,this._z=e.y,this._w=n)):(this._x=e.y*t.z-e.z*t.y,this._y=e.z*t.x-e.x*t.z,this._z=e.x*t.y-e.y*t.x,this._w=n),this.normalize()},angleTo:function(e){return 2*Math.acos(Math.abs(It.clamp(this.dot(e),-1,1)))},rotateTowards:function(e,t){var n=this.angleTo(e);if(0===n)return this;var r=Math.min(1,t/n);return this.slerp(e,r),this},inverse:function(){return this.conjugate()},conjugate:function(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this},dot:function(e){return this._x*e._x+this._y*e._y+this._z*e._z+this._w*e._w},lengthSq:function(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w},length:function(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)},normalize:function(){var e=this.length();return 0===e?(this._x=0,this._y=0,this._z=0,this._w=1):(e=1/e,this._x=this._x*e,this._y=this._y*e,this._z=this._z*e,this._w=this._w*e),this._onChangeCallback(),this},multiply:function(e,t){return void 0!==t?(console.warn("THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead."),this.multiplyQuaternions(e,t)):this.multiplyQuaternions(this,e)},premultiply:function(e){return this.multiplyQuaternions(e,this)},multiplyQuaternions:function(e,t){var n=e._x,r=e._y,i=e._z,a=e._w,o=t._x,s=t._y,c=t._z,l=t._w;return this._x=n*l+a*o+r*c-i*s,this._y=r*l+a*s+i*o-n*c,this._z=i*l+a*c+n*s-r*o,this._w=a*l-n*o-r*s-i*c,this._onChangeCallback(),this},slerp:function(e,t){if(0===t)return this;if(1===t)return this.copy(e);var n=this._x,r=this._y,i=this._z,a=this._w,o=a*e._w+n*e._x+r*e._y+i*e._z;if(o<0?(this._w=-e._w,this._x=-e._x,this._y=-e._y,this._z=-e._z,o=-o):this.copy(e),o>=1)return this._w=a,this._x=n,this._y=r,this._z=i,this;var s=1-o*o;if(s<=Number.EPSILON){var c=1-t;return this._w=c*a+t*this._w,this._x=c*n+t*this._x,this._y=c*r+t*this._y,this._z=c*i+t*this._z,this.normalize(),this._onChangeCallback(),this}var l=Math.sqrt(s),h=Math.atan2(l,o),u=Math.sin((1-t)*h)/l,p=Math.sin(t*h)/l;return this._w=a*u+this._w*p,this._x=n*u+this._x*p,this._y=r*u+this._y*p,this._z=i*u+this._z*p,this._onChangeCallback(),this},equals:function(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._w===this._w},fromArray:function(e,t){return void 0===t&&(t=0),this._x=e[t],this._y=e[t+1],this._z=e[t+2],this._w=e[t+3],this._onChangeCallback(),this},toArray:function(e,t){return void 0===e&&(e=[]),void 0===t&&(t=0),e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._w,e},_onChange:function(e){return this._onChangeCallback=e,this},_onChangeCallback:function(){}});var Nt=new Bt,zt=new Dt;function Bt(e,t,n){this.x=e||0,this.y=t||0,this.z=n||0}Object.assign(Bt.prototype,{isVector3:!0,set:function(e,t,n){return this.x=e,this.y=t,this.z=n,this},setScalar:function(e){return this.x=e,this.y=e,this.z=e,this},setX:function(e){return this.x=e,this},setY:function(e){return this.y=e,this},setZ:function(e){return this.z=e,this},setComponent:function(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;default:throw new Error("index is out of range: "+e)}return this},getComponent:function(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+e)}},clone:function(){return new this.constructor(this.x,this.y,this.z)},copy:function(e){return this.x=e.x,this.y=e.y,this.z=e.z,this},add:function(e,t){return void 0!==t?(console.warn("THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(e,t)):(this.x+=e.x,this.y+=e.y,this.z+=e.z,this)},addScalar:function(e){return this.x+=e,this.y+=e,this.z+=e,this},addVectors:function(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this},addScaledVector:function(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this},sub:function(e,t){return void 0!==t?(console.warn("THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(e,t)):(this.x-=e.x,this.y-=e.y,this.z-=e.z,this)},subScalar:function(e){return this.x-=e,this.y-=e,this.z-=e,this},subVectors:function(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this},multiply:function(e,t){return void 0!==t?(console.warn("THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead."),this.multiplyVectors(e,t)):(this.x*=e.x,this.y*=e.y,this.z*=e.z,this)},multiplyScalar:function(e){return this.x*=e,this.y*=e,this.z*=e,this},multiplyVectors:function(e,t){return this.x=e.x*t.x,this.y=e.y*t.y,this.z=e.z*t.z,this},applyEuler:function(e){return e&&e.isEuler||console.error("THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order."),this.applyQuaternion(zt.setFromEuler(e))},applyAxisAngle:function(e,t){return this.applyQuaternion(zt.setFromAxisAngle(e,t))},applyMatrix3:function(e){var t=this.x,n=this.y,r=this.z,i=e.elements;return this.x=i[0]*t+i[3]*n+i[6]*r,this.y=i[1]*t+i[4]*n+i[7]*r,this.z=i[2]*t+i[5]*n+i[8]*r,this},applyNormalMatrix:function(e){return this.applyMatrix3(e).normalize()},applyMatrix4:function(e){var t=this.x,n=this.y,r=this.z,i=e.elements,a=1/(i[3]*t+i[7]*n+i[11]*r+i[15]);return this.x=(i[0]*t+i[4]*n+i[8]*r+i[12])*a,this.y=(i[1]*t+i[5]*n+i[9]*r+i[13])*a,this.z=(i[2]*t+i[6]*n+i[10]*r+i[14])*a,this},applyQuaternion:function(e){var t=this.x,n=this.y,r=this.z,i=e.x,a=e.y,o=e.z,s=e.w,c=s*t+a*r-o*n,l=s*n+o*t-i*r,h=s*r+i*n-a*t,u=-i*t-a*n-o*r;return this.x=c*s+u*-i+l*-o-h*-a,this.y=l*s+u*-a+h*-i-c*-o,this.z=h*s+u*-o+c*-a-l*-i,this},project:function(e){return this.applyMatrix4(e.matrixWorldInverse).applyMatrix4(e.projectionMatrix)},unproject:function(e){return this.applyMatrix4(e.projectionMatrixInverse).applyMatrix4(e.matrixWorld)},transformDirection:function(e){var t=this.x,n=this.y,r=this.z,i=e.elements;return this.x=i[0]*t+i[4]*n+i[8]*r,this.y=i[1]*t+i[5]*n+i[9]*r,this.z=i[2]*t+i[6]*n+i[10]*r,this.normalize()},divide:function(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this},divideScalar:function(e){return this.multiplyScalar(1/e)},min:function(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this},max:function(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this},clamp:function(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this.z=Math.max(e.z,Math.min(t.z,this.z)),this},clampScalar:function(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this.z=Math.max(e,Math.min(t,this.z)),this},clampLength:function(e,t){var n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(e,Math.min(t,n)))},floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this},ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this},round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this},roundToZero:function(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this},negate:function(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this},dot:function(e){return this.x*e.x+this.y*e.y+this.z*e.z},lengthSq:function(){return this.x*this.x+this.y*this.y+this.z*this.z},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)},manhattanLength:function(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)},normalize:function(){return this.divideScalar(this.length()||1)},setLength:function(e){return this.normalize().multiplyScalar(e)},lerp:function(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this},lerpVectors:function(e,t,n){return this.subVectors(t,e).multiplyScalar(n).add(e)},cross:function(e,t){return void 0!==t?(console.warn("THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead."),this.crossVectors(e,t)):this.crossVectors(this,e)},crossVectors:function(e,t){var n=e.x,r=e.y,i=e.z,a=t.x,o=t.y,s=t.z;return this.x=r*s-i*o,this.y=i*a-n*s,this.z=n*o-r*a,this},projectOnVector:function(e){var t=e.dot(this)/e.lengthSq();return this.copy(e).multiplyScalar(t)},projectOnPlane:function(e){return Nt.copy(this).projectOnVector(e),this.sub(Nt)},reflect:function(e){return this.sub(Nt.copy(e).multiplyScalar(2*this.dot(e)))},angleTo:function(e){var t=Math.sqrt(this.lengthSq()*e.lengthSq());0===t&&console.error("THREE.Vector3: angleTo() can't handle zero length vectors.");var n=this.dot(e)/t;return Math.acos(It.clamp(n,-1,1))},distanceTo:function(e){return Math.sqrt(this.distanceToSquared(e))},distanceToSquared:function(e){var t=this.x-e.x,n=this.y-e.y,r=this.z-e.z;return t*t+n*n+r*r},manhattanDistanceTo:function(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)+Math.abs(this.z-e.z)},setFromSpherical:function(e){return this.setFromSphericalCoords(e.radius,e.phi,e.theta)},setFromSphericalCoords:function(e,t,n){var r=Math.sin(t)*e;return this.x=r*Math.sin(n),this.y=Math.cos(t)*e,this.z=r*Math.cos(n),this},setFromCylindrical:function(e){return this.setFromCylindricalCoords(e.radius,e.theta,e.y)},setFromCylindricalCoords:function(e,t,n){return this.x=e*Math.sin(t),this.y=n,this.z=e*Math.cos(t),this},setFromMatrixPosition:function(e){var t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this},setFromMatrixScale:function(e){var t=this.setFromMatrixColumn(e,0).length(),n=this.setFromMatrixColumn(e,1).length(),r=this.setFromMatrixColumn(e,2).length();return this.x=t,this.y=n,this.z=r,this},setFromMatrixColumn:function(e,t){return this.fromArray(e.elements,4*t)},equals:function(e){return e.x===this.x&&e.y===this.y&&e.z===this.z},fromArray:function(e,t){return void 0===t&&(t=0),this.x=e[t],this.y=e[t+1],this.z=e[t+2],this},toArray:function(e,t){return void 0===e&&(e=[]),void 0===t&&(t=0),e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e},fromBufferAttribute:function(e,t,n){return void 0!==n&&console.warn("THREE.Vector3: offset has been removed from .fromBufferAttribute()."),this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this}});var Ft,Ut=new Bt;function Gt(){this.elements=[1,0,0,0,1,0,0,0,1],arguments.length>0&&console.error("THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.")}Object.assign(Gt.prototype,{isMatrix3:!0,set:function(e,t,n,r,i,a,o,s,c){var l=this.elements;return l[0]=e,l[1]=r,l[2]=o,l[3]=t,l[4]=i,l[5]=s,l[6]=n,l[7]=a,l[8]=c,this},identity:function(){return this.set(1,0,0,0,1,0,0,0,1),this},clone:function(){return(new this.constructor).fromArray(this.elements)},copy:function(e){var t=this.elements,n=e.elements;return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t[8]=n[8],this},setFromMatrix4:function(e){var t=e.elements;return this.set(t[0],t[4],t[8],t[1],t[5],t[9],t[2],t[6],t[10]),this},applyToBufferAttribute:function(e){for(var t=0,n=e.count;t2048||t.height>2048?t.toDataURL("image/jpeg",.6):t.toDataURL("image/png")}},kt=0;function Vt(e,t,n,r,i,a,o,s,c,l){Object.defineProperty(this,"id",{value:kt++}),this.uuid=It.generateUUID(),this.name="",this.image=void 0!==e?e:Vt.DEFAULT_IMAGE,this.mipmaps=[],this.mapping=void 0!==t?t:Vt.DEFAULT_MAPPING,this.wrapS=void 0!==n?n:ce,this.wrapT=void 0!==r?r:ce,this.magFilter=void 0!==i?i:de,this.minFilter=void 0!==a?a:me,this.anisotropy=void 0!==c?c:1,this.format=void 0!==o?o:Re,this.internalFormat=null,this.type=void 0!==s?s:ve,this.offset=new Ot(0,0),this.repeat=new Ot(1,1),this.center=new Ot(0,0),this.rotation=0,this.matrixAutoUpdate=!0,this.matrix=new Gt,this.generateMipmaps=!0,this.premultiplyAlpha=!1,this.flipY=!0,this.unpackAlignment=4,this.encoding=void 0!==l?l:ft,this.version=0,this.onUpdate=null}function jt(e,t,n,r){this.x=e||0,this.y=t||0,this.z=n||0,this.w=void 0!==r?r:1}function Wt(e,t,n){this.width=e,this.height=t,this.scissor=new jt(0,0,e,t),this.scissorTest=!1,this.viewport=new jt(0,0,e,t),n=n||{},this.texture=new Vt(void 0,void 0,n.wrapS,n.wrapT,n.magFilter,n.minFilter,n.format,n.type,n.anisotropy,n.encoding),this.texture.image={},this.texture.image.width=e,this.texture.image.height=t,this.texture.generateMipmaps=void 0!==n.generateMipmaps&&n.generateMipmaps,this.texture.minFilter=void 0!==n.minFilter?n.minFilter:de,this.depthBuffer=void 0===n.depthBuffer||n.depthBuffer,this.stencilBuffer=void 0===n.stencilBuffer||n.stencilBuffer,this.depthTexture=void 0!==n.depthTexture?n.depthTexture:null}function qt(e,t,n){Wt.call(this,e,t,n),this.samples=4}Vt.DEFAULT_IMAGE=void 0,Vt.DEFAULT_MAPPING=300,Vt.prototype=Object.assign(Object.create(Pt.prototype),{constructor:Vt,isTexture:!0,updateMatrix:function(){this.matrix.setUvTransform(this.offset.x,this.offset.y,this.repeat.x,this.repeat.y,this.rotation,this.center.x,this.center.y)},clone:function(){return(new this.constructor).copy(this)},copy:function(e){return this.name=e.name,this.image=e.image,this.mipmaps=e.mipmaps.slice(0),this.mapping=e.mapping,this.wrapS=e.wrapS,this.wrapT=e.wrapT,this.magFilter=e.magFilter,this.minFilter=e.minFilter,this.anisotropy=e.anisotropy,this.format=e.format,this.internalFormat=e.internalFormat,this.type=e.type,this.offset.copy(e.offset),this.repeat.copy(e.repeat),this.center.copy(e.center),this.rotation=e.rotation,this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrix.copy(e.matrix),this.generateMipmaps=e.generateMipmaps,this.premultiplyAlpha=e.premultiplyAlpha,this.flipY=e.flipY,this.unpackAlignment=e.unpackAlignment,this.encoding=e.encoding,this},toJSON:function(e){var t=void 0===e||"string"==typeof e;if(!t&&void 0!==e.textures[this.uuid])return e.textures[this.uuid];var n={metadata:{version:4.5,type:"Texture",generator:"Texture.toJSON"},uuid:this.uuid,name:this.name,mapping:this.mapping,repeat:[this.repeat.x,this.repeat.y],offset:[this.offset.x,this.offset.y],center:[this.center.x,this.center.y],rotation:this.rotation,wrap:[this.wrapS,this.wrapT],format:this.format,type:this.type,encoding:this.encoding,minFilter:this.minFilter,magFilter:this.magFilter,anisotropy:this.anisotropy,flipY:this.flipY,premultiplyAlpha:this.premultiplyAlpha,unpackAlignment:this.unpackAlignment};if(void 0!==this.image){var r=this.image;if(void 0===r.uuid&&(r.uuid=It.generateUUID()),!t&&void 0===e.images[r.uuid]){var i;if(Array.isArray(r)){i=[];for(var a=0,o=r.length;a1)switch(this.wrapS){case se:e.x=e.x-Math.floor(e.x);break;case ce:e.x=e.x<0?0:1;break;case le:1===Math.abs(Math.floor(e.x)%2)?e.x=Math.ceil(e.x)-e.x:e.x=e.x-Math.floor(e.x)}if(e.y<0||e.y>1)switch(this.wrapT){case se:e.y=e.y-Math.floor(e.y);break;case ce:e.y=e.y<0?0:1;break;case le:1===Math.abs(Math.floor(e.y)%2)?e.y=Math.ceil(e.y)-e.y:e.y=e.y-Math.floor(e.y)}return this.flipY&&(e.y=1-e.y),e}}),Object.defineProperty(Vt.prototype,"needsUpdate",{set:function(e){!0===e&&this.version++}}),Object.defineProperties(jt.prototype,{width:{get:function(){return this.z},set:function(e){this.z=e}},height:{get:function(){return this.w},set:function(e){this.w=e}}}),Object.assign(jt.prototype,{isVector4:!0,set:function(e,t,n,r){return this.x=e,this.y=t,this.z=n,this.w=r,this},setScalar:function(e){return this.x=e,this.y=e,this.z=e,this.w=e,this},setX:function(e){return this.x=e,this},setY:function(e){return this.y=e,this},setZ:function(e){return this.z=e,this},setW:function(e){return this.w=e,this},setComponent:function(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;case 3:this.w=t;break;default:throw new Error("index is out of range: "+e)}return this},getComponent:function(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw new Error("index is out of range: "+e)}},clone:function(){return new this.constructor(this.x,this.y,this.z,this.w)},copy:function(e){return this.x=e.x,this.y=e.y,this.z=e.z,this.w=void 0!==e.w?e.w:1,this},add:function(e,t){return void 0!==t?(console.warn("THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(e,t)):(this.x+=e.x,this.y+=e.y,this.z+=e.z,this.w+=e.w,this)},addScalar:function(e){return this.x+=e,this.y+=e,this.z+=e,this.w+=e,this},addVectors:function(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this.w=e.w+t.w,this},addScaledVector:function(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this.w+=e.w*t,this},sub:function(e,t){return void 0!==t?(console.warn("THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(e,t)):(this.x-=e.x,this.y-=e.y,this.z-=e.z,this.w-=e.w,this)},subScalar:function(e){return this.x-=e,this.y-=e,this.z-=e,this.w-=e,this},subVectors:function(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this.w=e.w-t.w,this},multiplyScalar:function(e){return this.x*=e,this.y*=e,this.z*=e,this.w*=e,this},applyMatrix4:function(e){var t=this.x,n=this.y,r=this.z,i=this.w,a=e.elements;return this.x=a[0]*t+a[4]*n+a[8]*r+a[12]*i,this.y=a[1]*t+a[5]*n+a[9]*r+a[13]*i,this.z=a[2]*t+a[6]*n+a[10]*r+a[14]*i,this.w=a[3]*t+a[7]*n+a[11]*r+a[15]*i,this},divideScalar:function(e){return this.multiplyScalar(1/e)},setAxisAngleFromQuaternion:function(e){this.w=2*Math.acos(e.w);var t=Math.sqrt(1-e.w*e.w);return t<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=e.x/t,this.y=e.y/t,this.z=e.z/t),this},setAxisAngleFromRotationMatrix:function(e){var t,n,r,i,a=e.elements,o=a[0],s=a[4],c=a[8],l=a[1],h=a[5],u=a[9],p=a[2],d=a[6],f=a[10];if(Math.abs(s-l)<.01&&Math.abs(c-p)<.01&&Math.abs(u-d)<.01){if(Math.abs(s+l)<.1&&Math.abs(c+p)<.1&&Math.abs(u+d)<.1&&Math.abs(o+h+f-3)<.1)return this.set(1,0,0,0),this;t=Math.PI;var m=(o+1)/2,v=(h+1)/2,g=(f+1)/2,y=(s+l)/4,x=(c+p)/4,b=(u+d)/4;return m>v&&m>g?m<.01?(n=0,r=.707106781,i=.707106781):(r=y/(n=Math.sqrt(m)),i=x/n):v>g?v<.01?(n=.707106781,r=0,i=.707106781):(n=y/(r=Math.sqrt(v)),i=b/r):g<.01?(n=.707106781,r=.707106781,i=0):(n=x/(i=Math.sqrt(g)),r=b/i),this.set(n,r,i,t),this}var w=Math.sqrt((d-u)*(d-u)+(c-p)*(c-p)+(l-s)*(l-s));return Math.abs(w)<.001&&(w=1),this.x=(d-u)/w,this.y=(c-p)/w,this.z=(l-s)/w,this.w=Math.acos((o+h+f-1)/2),this},min:function(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this.w=Math.min(this.w,e.w),this},max:function(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this.w=Math.max(this.w,e.w),this},clamp:function(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this.z=Math.max(e.z,Math.min(t.z,this.z)),this.w=Math.max(e.w,Math.min(t.w,this.w)),this},clampScalar:function(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this.z=Math.max(e,Math.min(t,this.z)),this.w=Math.max(e,Math.min(t,this.w)),this},clampLength:function(e,t){var n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(e,Math.min(t,n)))},floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this.w=Math.floor(this.w),this},ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this.w=Math.ceil(this.w),this},round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this.w=Math.round(this.w),this},roundToZero:function(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this.w=this.w<0?Math.ceil(this.w):Math.floor(this.w),this},negate:function(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,this},dot:function(e){return this.x*e.x+this.y*e.y+this.z*e.z+this.w*e.w},lengthSq:function(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)},manhattanLength:function(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)},normalize:function(){return this.divideScalar(this.length()||1)},setLength:function(e){return this.normalize().multiplyScalar(e)},lerp:function(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this.w+=(e.w-this.w)*t,this},lerpVectors:function(e,t,n){return this.subVectors(t,e).multiplyScalar(n).add(e)},equals:function(e){return e.x===this.x&&e.y===this.y&&e.z===this.z&&e.w===this.w},fromArray:function(e,t){return void 0===t&&(t=0),this.x=e[t],this.y=e[t+1],this.z=e[t+2],this.w=e[t+3],this},toArray:function(e,t){return void 0===e&&(e=[]),void 0===t&&(t=0),e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e[t+3]=this.w,e},fromBufferAttribute:function(e,t,n){return void 0!==n&&console.warn("THREE.Vector4: offset has been removed from .fromBufferAttribute()."),this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this.w=e.getW(t),this}}),Wt.prototype=Object.assign(Object.create(Pt.prototype),{constructor:Wt,isWebGLRenderTarget:!0,setSize:function(e,t){this.width===e&&this.height===t||(this.width=e,this.height=t,this.texture.image.width=e,this.texture.image.height=t,this.dispose()),this.viewport.set(0,0,e,t),this.scissor.set(0,0,e,t)},clone:function(){return(new this.constructor).copy(this)},copy:function(e){return this.width=e.width,this.height=e.height,this.viewport.copy(e.viewport),this.texture=e.texture.clone(),this.depthBuffer=e.depthBuffer,this.stencilBuffer=e.stencilBuffer,this.depthTexture=e.depthTexture,this},dispose:function(){this.dispatchEvent({type:"dispose"})}}),qt.prototype=Object.assign(Object.create(Wt.prototype),{constructor:qt,isWebGLMultisampleRenderTarget:!0,copy:function(e){return Wt.prototype.copy.call(this,e),this.samples=e.samples,this}});var Xt=new Bt,Yt=new en,Zt=new Bt(0,0,0),Jt=new Bt(1,1,1),Kt=new Bt,Qt=new Bt,$t=new Bt;function en(){this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],arguments.length>0&&console.error("THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.")}Object.assign(en.prototype,{isMatrix4:!0,set:function(e,t,n,r,i,a,o,s,c,l,h,u,p,d,f,m){var v=this.elements;return v[0]=e,v[4]=t,v[8]=n,v[12]=r,v[1]=i,v[5]=a,v[9]=o,v[13]=s,v[2]=c,v[6]=l,v[10]=h,v[14]=u,v[3]=p,v[7]=d,v[11]=f,v[15]=m,this},identity:function(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this},clone:function(){return(new en).fromArray(this.elements)},copy:function(e){var t=this.elements,n=e.elements;return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t[8]=n[8],t[9]=n[9],t[10]=n[10],t[11]=n[11],t[12]=n[12],t[13]=n[13],t[14]=n[14],t[15]=n[15],this},copyPosition:function(e){var t=this.elements,n=e.elements;return t[12]=n[12],t[13]=n[13],t[14]=n[14],this},extractBasis:function(e,t,n){return e.setFromMatrixColumn(this,0),t.setFromMatrixColumn(this,1),n.setFromMatrixColumn(this,2),this},makeBasis:function(e,t,n){return this.set(e.x,t.x,n.x,0,e.y,t.y,n.y,0,e.z,t.z,n.z,0,0,0,0,1),this},extractRotation:function(e){var t=this.elements,n=e.elements,r=1/Xt.setFromMatrixColumn(e,0).length(),i=1/Xt.setFromMatrixColumn(e,1).length(),a=1/Xt.setFromMatrixColumn(e,2).length();return t[0]=n[0]*r,t[1]=n[1]*r,t[2]=n[2]*r,t[3]=0,t[4]=n[4]*i,t[5]=n[5]*i,t[6]=n[6]*i,t[7]=0,t[8]=n[8]*a,t[9]=n[9]*a,t[10]=n[10]*a,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this},makeRotationFromEuler:function(e){e&&e.isEuler||console.error("THREE.Matrix4: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.");var t=this.elements,n=e.x,r=e.y,i=e.z,a=Math.cos(n),o=Math.sin(n),s=Math.cos(r),c=Math.sin(r),l=Math.cos(i),h=Math.sin(i);if("XYZ"===e.order){var u=a*l,p=a*h,d=o*l,f=o*h;t[0]=s*l,t[4]=-s*h,t[8]=c,t[1]=p+d*c,t[5]=u-f*c,t[9]=-o*s,t[2]=f-u*c,t[6]=d+p*c,t[10]=a*s}else if("YXZ"===e.order){var m=s*l,v=s*h,g=c*l,y=c*h;t[0]=m+y*o,t[4]=g*o-v,t[8]=a*c,t[1]=a*h,t[5]=a*l,t[9]=-o,t[2]=v*o-g,t[6]=y+m*o,t[10]=a*s}else if("ZXY"===e.order){m=s*l,v=s*h,g=c*l,y=c*h;t[0]=m-y*o,t[4]=-a*h,t[8]=g+v*o,t[1]=v+g*o,t[5]=a*l,t[9]=y-m*o,t[2]=-a*c,t[6]=o,t[10]=a*s}else if("ZYX"===e.order){u=a*l,p=a*h,d=o*l,f=o*h;t[0]=s*l,t[4]=d*c-p,t[8]=u*c+f,t[1]=s*h,t[5]=f*c+u,t[9]=p*c-d,t[2]=-c,t[6]=o*s,t[10]=a*s}else if("YZX"===e.order){var x=a*s,b=a*c,w=o*s,_=o*c;t[0]=s*l,t[4]=_-x*h,t[8]=w*h+b,t[1]=h,t[5]=a*l,t[9]=-o*l,t[2]=-c*l,t[6]=b*h+w,t[10]=x-_*h}else if("XZY"===e.order){x=a*s,b=a*c,w=o*s,_=o*c;t[0]=s*l,t[4]=-h,t[8]=c*l,t[1]=x*h+_,t[5]=a*l,t[9]=b*h-w,t[2]=w*h-b,t[6]=o*l,t[10]=_*h+x}return t[3]=0,t[7]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this},makeRotationFromQuaternion:function(e){return this.compose(Zt,e,Jt)},lookAt:function(e,t,n){var r=this.elements;return $t.subVectors(e,t),0===$t.lengthSq()&&($t.z=1),$t.normalize(),Kt.crossVectors(n,$t),0===Kt.lengthSq()&&(1===Math.abs(n.z)?$t.x+=1e-4:$t.z+=1e-4,$t.normalize(),Kt.crossVectors(n,$t)),Kt.normalize(),Qt.crossVectors($t,Kt),r[0]=Kt.x,r[4]=Qt.x,r[8]=$t.x,r[1]=Kt.y,r[5]=Qt.y,r[9]=$t.y,r[2]=Kt.z,r[6]=Qt.z,r[10]=$t.z,this},multiply:function(e,t){return void 0!==t?(console.warn("THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead."),this.multiplyMatrices(e,t)):this.multiplyMatrices(this,e)},premultiply:function(e){return this.multiplyMatrices(e,this)},multiplyMatrices:function(e,t){var n=e.elements,r=t.elements,i=this.elements,a=n[0],o=n[4],s=n[8],c=n[12],l=n[1],h=n[5],u=n[9],p=n[13],d=n[2],f=n[6],m=n[10],v=n[14],g=n[3],y=n[7],x=n[11],b=n[15],w=r[0],_=r[4],M=r[8],S=r[12],T=r[1],E=r[5],A=r[9],L=r[13],P=r[2],R=r[6],C=r[10],I=r[14],O=r[3],D=r[7],N=r[11],z=r[15];return i[0]=a*w+o*T+s*P+c*O,i[4]=a*_+o*E+s*R+c*D,i[8]=a*M+o*A+s*C+c*N,i[12]=a*S+o*L+s*I+c*z,i[1]=l*w+h*T+u*P+p*O,i[5]=l*_+h*E+u*R+p*D,i[9]=l*M+h*A+u*C+p*N,i[13]=l*S+h*L+u*I+p*z,i[2]=d*w+f*T+m*P+v*O,i[6]=d*_+f*E+m*R+v*D,i[10]=d*M+f*A+m*C+v*N,i[14]=d*S+f*L+m*I+v*z,i[3]=g*w+y*T+x*P+b*O,i[7]=g*_+y*E+x*R+b*D,i[11]=g*M+y*A+x*C+b*N,i[15]=g*S+y*L+x*I+b*z,this},multiplyScalar:function(e){var t=this.elements;return t[0]*=e,t[4]*=e,t[8]*=e,t[12]*=e,t[1]*=e,t[5]*=e,t[9]*=e,t[13]*=e,t[2]*=e,t[6]*=e,t[10]*=e,t[14]*=e,t[3]*=e,t[7]*=e,t[11]*=e,t[15]*=e,this},applyToBufferAttribute:function(e){for(var t=0,n=e.count;t1){for(var t=0;t1){for(var t=0;t0){r.children=[];for(s=0;s0&&(n.geometries=u),p.length>0&&(n.materials=p),d.length>0&&(n.textures=d),f.length>0&&(n.images=f),o.length>0&&(n.shapes=o)}return n.object=r,n;function m(e){var t=[];for(var n in e){var r=e[n];delete r.metadata,t.push(r)}return t}},clone:function(e){return(new this.constructor).copy(this,e)},copy:function(e,t){if(void 0===t&&(t=!0),this.name=e.name,this.up.copy(e.up),this.position.copy(e.position),this.quaternion.copy(e.quaternion),this.scale.copy(e.scale),this.matrix.copy(e.matrix),this.matrixWorld.copy(e.matrixWorld),this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrixWorldNeedsUpdate=e.matrixWorldNeedsUpdate,this.layers.mask=e.layers.mask,this.visible=e.visible,this.castShadow=e.castShadow,this.receiveShadow=e.receiveShadow,this.frustumCulled=e.frustumCulled,this.renderOrder=e.renderOrder,this.userData=JSON.parse(JSON.stringify(e.userData)),!0===t)for(var n=0;ns)return!1}return!0}Object.assign(Dn.prototype,{isBox3:!0,set:function(e,t){return this.min.copy(e),this.max.copy(t),this},setFromArray:function(e){for(var t=1/0,n=1/0,r=1/0,i=-1/0,a=-1/0,o=-1/0,s=0,c=e.length;si&&(i=l),h>a&&(a=h),u>o&&(o=u)}return this.min.set(t,n,r),this.max.set(i,a,o),this},setFromBufferAttribute:function(e){for(var t=1/0,n=1/0,r=1/0,i=-1/0,a=-1/0,o=-1/0,s=0,c=e.count;si&&(i=l),h>a&&(a=h),u>o&&(o=u)}return this.min.set(t,n,r),this.max.set(i,a,o),this},setFromPoints:function(e){this.makeEmpty();for(var t=0,n=e.length;tthis.max.x||e.ythis.max.y||e.zthis.max.z)},containsBox:function(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y&&this.min.z<=e.min.z&&e.max.z<=this.max.z},getParameter:function(e,t){return void 0===t&&(console.warn("THREE.Box3: .getParameter() target is now required"),t=new Bt),t.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y),(e.z-this.min.z)/(this.max.z-this.min.z))},intersectsBox:function(e){return!(e.max.xthis.max.x||e.max.ythis.max.y||e.max.zthis.max.z)},intersectsSphere:function(e){return this.clampPoint(e.center,_n),_n.distanceToSquared(e.center)<=e.radius*e.radius},intersectsPlane:function(e){var t,n;return e.normal.x>0?(t=e.normal.x*this.min.x,n=e.normal.x*this.max.x):(t=e.normal.x*this.max.x,n=e.normal.x*this.min.x),e.normal.y>0?(t+=e.normal.y*this.min.y,n+=e.normal.y*this.max.y):(t+=e.normal.y*this.max.y,n+=e.normal.y*this.min.y),e.normal.z>0?(t+=e.normal.z*this.min.z,n+=e.normal.z*this.max.z):(t+=e.normal.z*this.max.z,n+=e.normal.z*this.min.z),t<=-e.constant&&n>=-e.constant},intersectsTriangle:function(e){if(this.isEmpty())return!1;this.getCenter(Rn),Cn.subVectors(this.max,Rn),Sn.subVectors(e.a,Rn),Tn.subVectors(e.b,Rn),En.subVectors(e.c,Rn),An.subVectors(Tn,Sn),Ln.subVectors(En,Tn),Pn.subVectors(Sn,En);var t=[0,-An.z,An.y,0,-Ln.z,Ln.y,0,-Pn.z,Pn.y,An.z,0,-An.x,Ln.z,0,-Ln.x,Pn.z,0,-Pn.x,-An.y,An.x,0,-Ln.y,Ln.x,0,-Pn.y,Pn.x,0];return!!Nn(t,Sn,Tn,En,Cn)&&(!!Nn(t=[1,0,0,0,1,0,0,0,1],Sn,Tn,En,Cn)&&(In.crossVectors(An,Ln),Nn(t=[In.x,In.y,In.z],Sn,Tn,En,Cn)))},clampPoint:function(e,t){return void 0===t&&(console.warn("THREE.Box3: .clampPoint() target is now required"),t=new Bt),t.copy(e).clamp(this.min,this.max)},distanceToPoint:function(e){return _n.copy(e).clamp(this.min,this.max).sub(e).length()},getBoundingSphere:function(e){return void 0===e&&console.error("THREE.Box3: .getBoundingSphere() target is now required"),this.getCenter(e.center),e.radius=.5*this.getSize(_n).length(),e},intersect:function(e){return this.min.max(e.min),this.max.min(e.max),this.isEmpty()&&this.makeEmpty(),this},union:function(e){return this.min.min(e.min),this.max.max(e.max),this},applyMatrix4:function(e){return this.isEmpty()?this:(wn[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(e),wn[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(e),wn[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(e),wn[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(e),wn[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(e),wn[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(e),wn[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(e),wn[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(e),this.setFromPoints(wn),this)},translate:function(e){return this.min.add(e),this.max.add(e),this},equals:function(e){return e.min.equals(this.min)&&e.max.equals(this.max)}});var zn=new Dn;function Bn(e,t){this.center=void 0!==e?e:new Bt,this.radius=void 0!==t?t:0}Object.assign(Bn.prototype,{set:function(e,t){return this.center.copy(e),this.radius=t,this},setFromPoints:function(e,t){var n=this.center;void 0!==t?n.copy(t):zn.setFromPoints(e).getCenter(n);for(var r=0,i=0,a=e.length;ithis.radius*this.radius&&(t.sub(this.center).normalize(),t.multiplyScalar(this.radius).add(this.center)),t},getBoundingBox:function(e){return void 0===e&&(console.warn("THREE.Sphere: .getBoundingBox() target is now required"),e=new Dn),e.set(this.center,this.center),e.expandByScalar(this.radius),e},applyMatrix4:function(e){return this.center.applyMatrix4(e),this.radius=this.radius*e.getMaxScaleOnAxis(),this},translate:function(e){return this.center.add(e),this},equals:function(e){return e.center.equals(this.center)&&e.radius===this.radius}});var Fn=new Bt,Un=new Bt,Gn=new Bt,Hn=new Bt,kn=new Bt,Vn=new Bt,jn=new Bt;function Wn(e,t){this.origin=void 0!==e?e:new Bt,this.direction=void 0!==t?t:new Bt(0,0,-1)}Object.assign(Wn.prototype,{set:function(e,t){return this.origin.copy(e),this.direction.copy(t),this},clone:function(){return(new this.constructor).copy(this)},copy:function(e){return this.origin.copy(e.origin),this.direction.copy(e.direction),this},at:function(e,t){return void 0===t&&(console.warn("THREE.Ray: .at() target is now required"),t=new Bt),t.copy(this.direction).multiplyScalar(e).add(this.origin)},lookAt:function(e){return this.direction.copy(e).sub(this.origin).normalize(),this},recast:function(e){return this.origin.copy(this.at(e,Fn)),this},closestPointToPoint:function(e,t){void 0===t&&(console.warn("THREE.Ray: .closestPointToPoint() target is now required"),t=new Bt),t.subVectors(e,this.origin);var n=t.dot(this.direction);return n<0?t.copy(this.origin):t.copy(this.direction).multiplyScalar(n).add(this.origin)},distanceToPoint:function(e){return Math.sqrt(this.distanceSqToPoint(e))},distanceSqToPoint:function(e){var t=Fn.subVectors(e,this.origin).dot(this.direction);return t<0?this.origin.distanceToSquared(e):(Fn.copy(this.direction).multiplyScalar(t).add(this.origin),Fn.distanceToSquared(e))},distanceSqToSegment:function(e,t,n,r){Un.copy(e).add(t).multiplyScalar(.5),Gn.copy(t).sub(e).normalize(),Hn.copy(this.origin).sub(Un);var i,a,o,s,c=.5*e.distanceTo(t),l=-this.direction.dot(Gn),h=Hn.dot(this.direction),u=-Hn.dot(Gn),p=Hn.lengthSq(),d=Math.abs(1-l*l);if(d>0)if(a=l*h-u,s=c*d,(i=l*u-h)>=0)if(a>=-s)if(a<=s){var f=1/d;o=(i*=f)*(i+l*(a*=f)+2*h)+a*(l*i+a+2*u)+p}else a=c,o=-(i=Math.max(0,-(l*a+h)))*i+a*(a+2*u)+p;else a=-c,o=-(i=Math.max(0,-(l*a+h)))*i+a*(a+2*u)+p;else a<=-s?o=-(i=Math.max(0,-(-l*c+h)))*i+(a=i>0?-c:Math.min(Math.max(-c,-u),c))*(a+2*u)+p:a<=s?(i=0,o=(a=Math.min(Math.max(-c,-u),c))*(a+2*u)+p):o=-(i=Math.max(0,-(l*c+h)))*i+(a=i>0?c:Math.min(Math.max(-c,-u),c))*(a+2*u)+p;else a=l>0?-c:c,o=-(i=Math.max(0,-(l*a+h)))*i+a*(a+2*u)+p;return n&&n.copy(this.direction).multiplyScalar(i).add(this.origin),r&&r.copy(Gn).multiplyScalar(a).add(Un),o},intersectSphere:function(e,t){Fn.subVectors(e.center,this.origin);var n=Fn.dot(this.direction),r=Fn.dot(Fn)-n*n,i=e.radius*e.radius;if(r>i)return null;var a=Math.sqrt(i-r),o=n-a,s=n+a;return o<0&&s<0?null:o<0?this.at(s,t):this.at(o,t)},intersectsSphere:function(e){return this.distanceSqToPoint(e.center)<=e.radius*e.radius},distanceToPlane:function(e){var t=e.normal.dot(this.direction);if(0===t)return 0===e.distanceToPoint(this.origin)?0:null;var n=-(this.origin.dot(e.normal)+e.constant)/t;return n>=0?n:null},intersectPlane:function(e,t){var n=this.distanceToPlane(e);return null===n?null:this.at(n,t)},intersectsPlane:function(e){var t=e.distanceToPoint(this.origin);return 0===t||e.normal.dot(this.direction)*t<0},intersectBox:function(e,t){var n,r,i,a,o,s,c=1/this.direction.x,l=1/this.direction.y,h=1/this.direction.z,u=this.origin;return c>=0?(n=(e.min.x-u.x)*c,r=(e.max.x-u.x)*c):(n=(e.max.x-u.x)*c,r=(e.min.x-u.x)*c),l>=0?(i=(e.min.y-u.y)*l,a=(e.max.y-u.y)*l):(i=(e.max.y-u.y)*l,a=(e.min.y-u.y)*l),n>a||i>r?null:((i>n||n!=n)&&(n=i),(a=0?(o=(e.min.z-u.z)*h,s=(e.max.z-u.z)*h):(o=(e.max.z-u.z)*h,s=(e.min.z-u.z)*h),n>s||o>r?null:((o>n||n!=n)&&(n=o),(s=0?n:r,t)))},intersectsBox:function(e){return null!==this.intersectBox(e,Fn)},intersectTriangle:function(e,t,n,r,i){kn.subVectors(t,e),Vn.subVectors(n,e),jn.crossVectors(kn,Vn);var a,o=this.direction.dot(jn);if(o>0){if(r)return null;a=1}else{if(!(o<0))return null;a=-1,o=-o}Hn.subVectors(this.origin,e);var s=a*this.direction.dot(Vn.crossVectors(Hn,Vn));if(s<0)return null;var c=a*this.direction.dot(kn.cross(Hn));if(c<0)return null;if(s+c>o)return null;var l=-a*Hn.dot(jn);return l<0?null:this.at(l/o,i)},applyMatrix4:function(e){return this.origin.applyMatrix4(e),this.direction.transformDirection(e),this},equals:function(e){return e.origin.equals(this.origin)&&e.direction.equals(this.direction)}});var qn=new Bt,Xn=new Bt,Yn=new Gt;function Zn(e,t){this.normal=void 0!==e?e:new Bt(1,0,0),this.constant=void 0!==t?t:0}Object.assign(Zn.prototype,{isPlane:!0,set:function(e,t){return this.normal.copy(e),this.constant=t,this},setComponents:function(e,t,n,r){return this.normal.set(e,t,n),this.constant=r,this},setFromNormalAndCoplanarPoint:function(e,t){return this.normal.copy(e),this.constant=-t.dot(this.normal),this},setFromCoplanarPoints:function(e,t,n){var r=qn.subVectors(n,t).cross(Xn.subVectors(e,t)).normalize();return this.setFromNormalAndCoplanarPoint(r,e),this},clone:function(){return(new this.constructor).copy(this)},copy:function(e){return this.normal.copy(e.normal),this.constant=e.constant,this},normalize:function(){var e=1/this.normal.length();return this.normal.multiplyScalar(e),this.constant*=e,this},negate:function(){return this.constant*=-1,this.normal.negate(),this},distanceToPoint:function(e){return this.normal.dot(e)+this.constant},distanceToSphere:function(e){return this.distanceToPoint(e.center)-e.radius},projectPoint:function(e,t){return void 0===t&&(console.warn("THREE.Plane: .projectPoint() target is now required"),t=new Bt),t.copy(this.normal).multiplyScalar(-this.distanceToPoint(e)).add(e)},intersectLine:function(e,t){void 0===t&&(console.warn("THREE.Plane: .intersectLine() target is now required"),t=new Bt);var n=e.delta(qn),r=this.normal.dot(n);if(0===r)return 0===this.distanceToPoint(e.start)?t.copy(e.start):void 0;var i=-(e.start.dot(this.normal)+this.constant)/r;return i<0||i>1?void 0:t.copy(n).multiplyScalar(i).add(e.start)},intersectsLine:function(e){var t=this.distanceToPoint(e.start),n=this.distanceToPoint(e.end);return t<0&&n>0||n<0&&t>0},intersectsBox:function(e){return e.intersectsPlane(this)},intersectsSphere:function(e){return e.intersectsPlane(this)},coplanarPoint:function(e){return void 0===e&&(console.warn("THREE.Plane: .coplanarPoint() target is now required"),e=new Bt),e.copy(this.normal).multiplyScalar(-this.constant)},applyMatrix4:function(e,t){var n=t||Yn.getNormalMatrix(e),r=this.coplanarPoint(qn).applyMatrix4(e),i=this.normal.applyMatrix3(n).normalize();return this.constant=-r.dot(i),this},translate:function(e){return this.constant-=e.dot(this.normal),this},equals:function(e){return e.normal.equals(this.normal)&&e.constant===this.constant}});var Jn=new Bt,Kn=new Bt,Qn=new Bt,$n=new Bt,er=new Bt,tr=new Bt,nr=new Bt,rr=new Bt,ir=new Bt,ar=new Bt;function or(e,t,n){this.a=void 0!==e?e:new Bt,this.b=void 0!==t?t:new Bt,this.c=void 0!==n?n:new Bt}Object.assign(or,{getNormal:function(e,t,n,r){void 0===r&&(console.warn("THREE.Triangle: .getNormal() target is now required"),r=new Bt),r.subVectors(n,t),Jn.subVectors(e,t),r.cross(Jn);var i=r.lengthSq();return i>0?r.multiplyScalar(1/Math.sqrt(i)):r.set(0,0,0)},getBarycoord:function(e,t,n,r,i){Jn.subVectors(r,t),Kn.subVectors(n,t),Qn.subVectors(e,t);var a=Jn.dot(Jn),o=Jn.dot(Kn),s=Jn.dot(Qn),c=Kn.dot(Kn),l=Kn.dot(Qn),h=a*c-o*o;if(void 0===i&&(console.warn("THREE.Triangle: .getBarycoord() target is now required"),i=new Bt),0===h)return i.set(-2,-1,-1);var u=1/h,p=(c*s-o*l)*u,d=(a*l-o*s)*u;return i.set(1-p-d,d,p)},containsPoint:function(e,t,n,r){return or.getBarycoord(e,t,n,r,$n),$n.x>=0&&$n.y>=0&&$n.x+$n.y<=1},getUV:function(e,t,n,r,i,a,o,s){return this.getBarycoord(e,t,n,r,$n),s.set(0,0),s.addScaledVector(i,$n.x),s.addScaledVector(a,$n.y),s.addScaledVector(o,$n.z),s},isFrontFacing:function(e,t,n,r){return Jn.subVectors(n,t),Kn.subVectors(e,t),Jn.cross(Kn).dot(r)<0}}),Object.assign(or.prototype,{set:function(e,t,n){return this.a.copy(e),this.b.copy(t),this.c.copy(n),this},setFromPointsAndIndices:function(e,t,n,r){return this.a.copy(e[t]),this.b.copy(e[n]),this.c.copy(e[r]),this},clone:function(){return(new this.constructor).copy(this)},copy:function(e){return this.a.copy(e.a),this.b.copy(e.b),this.c.copy(e.c),this},getArea:function(){return Jn.subVectors(this.c,this.b),Kn.subVectors(this.a,this.b),.5*Jn.cross(Kn).length()},getMidpoint:function(e){return void 0===e&&(console.warn("THREE.Triangle: .getMidpoint() target is now required"),e=new Bt),e.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)},getNormal:function(e){return or.getNormal(this.a,this.b,this.c,e)},getPlane:function(e){return void 0===e&&(console.warn("THREE.Triangle: .getPlane() target is now required"),e=new Zn),e.setFromCoplanarPoints(this.a,this.b,this.c)},getBarycoord:function(e,t){return or.getBarycoord(e,this.a,this.b,this.c,t)},getUV:function(e,t,n,r,i){return or.getUV(e,this.a,this.b,this.c,t,n,r,i)},containsPoint:function(e){return or.containsPoint(e,this.a,this.b,this.c)},isFrontFacing:function(e){return or.isFrontFacing(this.a,this.b,this.c,e)},intersectsBox:function(e){return e.intersectsTriangle(this)},closestPointToPoint:function(e,t){void 0===t&&(console.warn("THREE.Triangle: .closestPointToPoint() target is now required"),t=new Bt);var n,r,i=this.a,a=this.b,o=this.c;er.subVectors(a,i),tr.subVectors(o,i),rr.subVectors(e,i);var s=er.dot(rr),c=tr.dot(rr);if(s<=0&&c<=0)return t.copy(i);ir.subVectors(e,a);var l=er.dot(ir),h=tr.dot(ir);if(l>=0&&h<=l)return t.copy(a);var u=s*h-l*c;if(u<=0&&s>=0&&l<=0)return n=s/(s-l),t.copy(i).addScaledVector(er,n);ar.subVectors(e,o);var p=er.dot(ar),d=tr.dot(ar);if(d>=0&&p<=d)return t.copy(o);var f=p*c-s*d;if(f<=0&&c>=0&&d<=0)return r=c/(c-d),t.copy(i).addScaledVector(tr,r);var m=l*d-p*h;if(m<=0&&h-l>=0&&p-d>=0)return nr.subVectors(o,a),r=(h-l)/(h-l+(p-d)),t.copy(a).addScaledVector(nr,r);var v=1/(m+f+u);return n=f*v,r=u*v,t.copy(i).addScaledVector(er,n).addScaledVector(tr,r)},equals:function(e){return e.a.equals(this.a)&&e.b.equals(this.b)&&e.c.equals(this.c)}});var sr={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},cr={h:0,s:0,l:0},lr={h:0,s:0,l:0};function hr(e,t,n){return void 0===t&&void 0===n?this.set(e):this.setRGB(e,t,n)}function ur(e,t,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?e+6*(t-e)*n:n<.5?t:n<2/3?e+6*(t-e)*(2/3-n):e}function pr(e){return e<.04045?.0773993808*e:Math.pow(.9478672986*e+.0521327014,2.4)}function dr(e){return e<.0031308?12.92*e:1.055*Math.pow(e,.41666)-.055}function fr(e,t,n,r,i,a){this.a=e,this.b=t,this.c=n,this.normal=r&&r.isVector3?r:new Bt,this.vertexNormals=Array.isArray(r)?r:[],this.color=i&&i.isColor?i:new hr,this.vertexColors=Array.isArray(i)?i:[],this.materialIndex=void 0!==a?a:0}Object.assign(hr.prototype,{isColor:!0,r:1,g:1,b:1,set:function(e){return e&&e.isColor?this.copy(e):"number"==typeof e?this.setHex(e):"string"==typeof e&&this.setStyle(e),this},setScalar:function(e){return this.r=e,this.g=e,this.b=e,this},setHex:function(e){return e=Math.floor(e),this.r=(e>>16&255)/255,this.g=(e>>8&255)/255,this.b=(255&e)/255,this},setRGB:function(e,t,n){return this.r=e,this.g=t,this.b=n,this},setHSL:function(e,t,n){if(e=It.euclideanModulo(e,1),t=It.clamp(t,0,1),n=It.clamp(n,0,1),0===t)this.r=this.g=this.b=n;else{var r=n<=.5?n*(1+t):n+t-n*t,i=2*n-r;this.r=ur(i,r,e+1/3),this.g=ur(i,r,e),this.b=ur(i,r,e-1/3)}return this},setStyle:function(e){function t(t){void 0!==t&&parseFloat(t)<1&&console.warn("THREE.Color: Alpha component of "+e+" will be ignored.")}var n;if(n=/^((?:rgb|hsl)a?)\(\s*([^\)]*)\)/.exec(e)){var r,i=n[1],a=n[2];switch(i){case"rgb":case"rgba":if(r=/^(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec(a))return this.r=Math.min(255,parseInt(r[1],10))/255,this.g=Math.min(255,parseInt(r[2],10))/255,this.b=Math.min(255,parseInt(r[3],10))/255,t(r[5]),this;if(r=/^(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec(a))return this.r=Math.min(100,parseInt(r[1],10))/100,this.g=Math.min(100,parseInt(r[2],10))/100,this.b=Math.min(100,parseInt(r[3],10))/100,t(r[5]),this;break;case"hsl":case"hsla":if(r=/^([0-9]*\.?[0-9]+)\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec(a)){var o=parseFloat(r[1])/360,s=parseInt(r[2],10)/100,c=parseInt(r[3],10)/100;return t(r[5]),this.setHSL(o,s,c)}}}else if(n=/^\#([A-Fa-f0-9]+)$/.exec(e)){var l=n[1],h=l.length;if(3===h)return this.r=parseInt(l.charAt(0)+l.charAt(0),16)/255,this.g=parseInt(l.charAt(1)+l.charAt(1),16)/255,this.b=parseInt(l.charAt(2)+l.charAt(2),16)/255,this;if(6===h)return this.r=parseInt(l.charAt(0)+l.charAt(1),16)/255,this.g=parseInt(l.charAt(2)+l.charAt(3),16)/255,this.b=parseInt(l.charAt(4)+l.charAt(5),16)/255,this}return e&&e.length>0?this.setColorName(e):this},setColorName:function(e){var t=sr[e];return void 0!==t?this.setHex(t):console.warn("THREE.Color: Unknown color "+e),this},clone:function(){return new this.constructor(this.r,this.g,this.b)},copy:function(e){return this.r=e.r,this.g=e.g,this.b=e.b,this},copyGammaToLinear:function(e,t){return void 0===t&&(t=2),this.r=Math.pow(e.r,t),this.g=Math.pow(e.g,t),this.b=Math.pow(e.b,t),this},copyLinearToGamma:function(e,t){void 0===t&&(t=2);var n=t>0?1/t:1;return this.r=Math.pow(e.r,n),this.g=Math.pow(e.g,n),this.b=Math.pow(e.b,n),this},convertGammaToLinear:function(e){return this.copyGammaToLinear(this,e),this},convertLinearToGamma:function(e){return this.copyLinearToGamma(this,e),this},copySRGBToLinear:function(e){return this.r=pr(e.r),this.g=pr(e.g),this.b=pr(e.b),this},copyLinearToSRGB:function(e){return this.r=dr(e.r),this.g=dr(e.g),this.b=dr(e.b),this},convertSRGBToLinear:function(){return this.copySRGBToLinear(this),this},convertLinearToSRGB:function(){return this.copyLinearToSRGB(this),this},getHex:function(){return 255*this.r<<16^255*this.g<<8^255*this.b<<0},getHexString:function(){return("000000"+this.getHex().toString(16)).slice(-6)},getHSL:function(e){void 0===e&&(console.warn("THREE.Color: .getHSL() target is now required"),e={h:0,s:0,l:0});var t,n,r=this.r,i=this.g,a=this.b,o=Math.max(r,i,a),s=Math.min(r,i,a),c=(s+o)/2;if(s===o)t=0,n=0;else{var l=o-s;switch(n=c<=.5?l/(o+s):l/(2-o-s),o){case r:t=(i-a)/l+(i0&&(n.alphaTest=this.alphaTest),!0===this.premultipliedAlpha&&(n.premultipliedAlpha=this.premultipliedAlpha),!0===this.wireframe&&(n.wireframe=this.wireframe),this.wireframeLinewidth>1&&(n.wireframeLinewidth=this.wireframeLinewidth),"round"!==this.wireframeLinecap&&(n.wireframeLinecap=this.wireframeLinecap),"round"!==this.wireframeLinejoin&&(n.wireframeLinejoin=this.wireframeLinejoin),!0===this.morphTargets&&(n.morphTargets=!0),!0===this.morphNormals&&(n.morphNormals=!0),!0===this.skinning&&(n.skinning=!0),!1===this.visible&&(n.visible=!1),!1===this.toneMapped&&(n.toneMapped=!1),"{}"!==JSON.stringify(this.userData)&&(n.userData=this.userData),t){var i=r(e.textures),a=r(e.images);i.length>0&&(n.textures=i),a.length>0&&(n.images=a)}return n},clone:function(){return(new this.constructor).copy(this)},copy:function(e){this.name=e.name,this.fog=e.fog,this.blending=e.blending,this.side=e.side,this.flatShading=e.flatShading,this.vertexTangents=e.vertexTangents,this.vertexColors=e.vertexColors,this.opacity=e.opacity,this.transparent=e.transparent,this.blendSrc=e.blendSrc,this.blendDst=e.blendDst,this.blendEquation=e.blendEquation,this.blendSrcAlpha=e.blendSrcAlpha,this.blendDstAlpha=e.blendDstAlpha,this.blendEquationAlpha=e.blendEquationAlpha,this.depthFunc=e.depthFunc,this.depthTest=e.depthTest,this.depthWrite=e.depthWrite,this.stencilWriteMask=e.stencilWriteMask,this.stencilFunc=e.stencilFunc,this.stencilRef=e.stencilRef,this.stencilFuncMask=e.stencilFuncMask,this.stencilFail=e.stencilFail,this.stencilZFail=e.stencilZFail,this.stencilZPass=e.stencilZPass,this.stencilWrite=e.stencilWrite;var t=e.clippingPlanes,n=null;if(null!==t){var r=t.length;n=new Array(r);for(var i=0;i!==r;++i)n[i]=t[i].clone()}return this.clippingPlanes=n,this.clipIntersection=e.clipIntersection,this.clipShadows=e.clipShadows,this.shadowSide=e.shadowSide,this.colorWrite=e.colorWrite,this.precision=e.precision,this.polygonOffset=e.polygonOffset,this.polygonOffsetFactor=e.polygonOffsetFactor,this.polygonOffsetUnits=e.polygonOffsetUnits,this.dithering=e.dithering,this.alphaTest=e.alphaTest,this.premultipliedAlpha=e.premultipliedAlpha,this.visible=e.visible,this.toneMapped=e.toneMapped,this.userData=JSON.parse(JSON.stringify(e.userData)),this},dispose:function(){this.dispatchEvent({type:"dispose"})}}),Object.defineProperty(vr.prototype,"needsUpdate",{set:function(e){!0===e&&this.version++}}),gr.prototype=Object.create(vr.prototype),gr.prototype.constructor=gr,gr.prototype.isMeshBasicMaterial=!0,gr.prototype.copy=function(e){return vr.prototype.copy.call(this,e),this.color.copy(e.color),this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.skinning=e.skinning,this.morphTargets=e.morphTargets,this};var yr=new Bt;function xr(e,t,n){if(Array.isArray(e))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.name="",this.array=e,this.itemSize=t,this.count=void 0!==e?e.length/t:0,this.normalized=!0===n,this.usage=Lt,this.updateRange={offset:0,count:-1},this.version=0}function br(e,t,n){xr.call(this,new Int8Array(e),t,n)}function wr(e,t,n){xr.call(this,new Uint8Array(e),t,n)}function _r(e,t,n){xr.call(this,new Uint8ClampedArray(e),t,n)}function Mr(e,t,n){xr.call(this,new Int16Array(e),t,n)}function Sr(e,t,n){xr.call(this,new Uint16Array(e),t,n)}function Tr(e,t,n){xr.call(this,new Int32Array(e),t,n)}function Er(e,t,n){xr.call(this,new Uint32Array(e),t,n)}function Ar(e,t,n){xr.call(this,new Float32Array(e),t,n)}function Lr(e,t,n){xr.call(this,new Float64Array(e),t,n)}function Pr(){this.vertices=[],this.normals=[],this.colors=[],this.uvs=[],this.uvs2=[],this.groups=[],this.morphTargets={},this.skinWeights=[],this.skinIndices=[],this.boundingBox=null,this.boundingSphere=null,this.verticesNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.uvsNeedUpdate=!1,this.groupsNeedUpdate=!1}function Rr(e){if(0===e.length)return-1/0;for(var t=e[0],n=1,r=e.length;nt&&(t=e[n]);return t}Object.defineProperty(xr.prototype,"needsUpdate",{set:function(e){!0===e&&this.version++}}),Object.assign(xr.prototype,{isBufferAttribute:!0,onUploadCallback:function(){},setUsage:function(e){return this.usage=e,this},copy:function(e){return this.name=e.name,this.array=new e.array.constructor(e.array),this.itemSize=e.itemSize,this.count=e.count,this.normalized=e.normalized,this.usage=e.usage,this},copyAt:function(e,t,n){e*=this.itemSize,n*=t.itemSize;for(var r=0,i=this.itemSize;r0,o=i[1]&&i[1].length>0,s=e.morphTargets,c=s.length;if(c>0){t=[];for(var l=0;l0){h=[];for(l=0;l0&&0===n.length&&console.error("THREE.DirectGeometry: Faceless geometries are not supported.");for(l=0;l65535?Er:Sr)(e,1):this.index=e},getAttribute:function(e){return this.attributes[e]},setAttribute:function(e,t){return this.attributes[e]=t,this},deleteAttribute:function(e){return delete this.attributes[e],this},addGroup:function(e,t,n){this.groups.push({start:e,count:t,materialIndex:void 0!==n?n:0})},clearGroups:function(){this.groups=[]},setDrawRange:function(e,t){this.drawRange.start=e,this.drawRange.count=t},applyMatrix:function(e){var t=this.attributes.position;void 0!==t&&(t.applyMatrix4(e),t.needsUpdate=!0);var n=this.attributes.normal;if(void 0!==n){var r=(new Gt).getNormalMatrix(e);n.applyNormalMatrix(r),n.needsUpdate=!0}var i=this.attributes.tangent;return void 0!==i&&(i.transformDirection(e),i.needsUpdate=!0),null!==this.boundingBox&&this.computeBoundingBox(),null!==this.boundingSphere&&this.computeBoundingSphere(),this},rotateX:function(e){return Ir.makeRotationX(e),this.applyMatrix(Ir),this},rotateY:function(e){return Ir.makeRotationY(e),this.applyMatrix(Ir),this},rotateZ:function(e){return Ir.makeRotationZ(e),this.applyMatrix(Ir),this},translate:function(e,t,n){return Ir.makeTranslation(e,t,n),this.applyMatrix(Ir),this},scale:function(e,t,n){return Ir.makeScale(e,t,n),this.applyMatrix(Ir),this},lookAt:function(e){return Or.lookAt(e),Or.updateMatrix(),this.applyMatrix(Or.matrix),this},center:function(){return this.computeBoundingBox(),this.boundingBox.getCenter(Dr).negate(),this.translate(Dr.x,Dr.y,Dr.z),this},setFromObject:function(e){var t=e.geometry;if(e.isPoints||e.isLine){var n=new Ar(3*t.vertices.length,3),r=new Ar(3*t.colors.length,3);if(this.setAttribute("position",n.copyVector3sArray(t.vertices)),this.setAttribute("color",r.copyColorsArray(t.colors)),t.lineDistances&&t.lineDistances.length===t.vertices.length){var i=new Ar(t.lineDistances.length,1);this.setAttribute("lineDistance",i.copyArray(t.lineDistances))}null!==t.boundingSphere&&(this.boundingSphere=t.boundingSphere.clone()),null!==t.boundingBox&&(this.boundingBox=t.boundingBox.clone())}else e.isMesh&&t&&t.isGeometry&&this.fromGeometry(t);return this},setFromPoints:function(e){for(var t=[],n=0,r=e.length;n0){var n=new Float32Array(3*e.normals.length);this.setAttribute("normal",new xr(n,3).copyVector3sArray(e.normals))}if(e.colors.length>0){var r=new Float32Array(3*e.colors.length);this.setAttribute("color",new xr(r,3).copyColorsArray(e.colors))}if(e.uvs.length>0){var i=new Float32Array(2*e.uvs.length);this.setAttribute("uv",new xr(i,2).copyVector2sArray(e.uvs))}if(e.uvs2.length>0){var a=new Float32Array(2*e.uvs2.length);this.setAttribute("uv2",new xr(a,2).copyVector2sArray(e.uvs2))}for(var o in this.groups=e.groups,e.morphTargets){for(var s=[],c=e.morphTargets[o],l=0,h=c.length;l0){var d=new Ar(4*e.skinIndices.length,4);this.setAttribute("skinIndex",d.copyVector4sArray(e.skinIndices))}if(e.skinWeights.length>0){var f=new Ar(4*e.skinWeights.length,4);this.setAttribute("skinWeight",f.copyVector4sArray(e.skinWeights))}return null!==e.boundingSphere&&(this.boundingSphere=e.boundingSphere.clone()),null!==e.boundingBox&&(this.boundingBox=e.boundingBox.clone()),this},computeBoundingBox:function(){null===this.boundingBox&&(this.boundingBox=new Dn);var e=this.attributes.position,t=this.morphAttributes.position;if(void 0!==e){if(this.boundingBox.setFromBufferAttribute(e),t)for(var n=0,r=t.length;n0&&(e.userData=this.userData),void 0!==this.parameters){var t=this.parameters;for(var n in t)void 0!==t[n]&&(e[n]=t[n]);return e}e.data={attributes:{}};var r=this.index;null!==r&&(e.data.index={type:r.array.constructor.name,array:Array.prototype.slice.call(r.array)});var i=this.attributes;for(var n in i){var a=(p=i[n]).toJSON();""!==p.name&&(a.name=p.name),e.data.attributes[n]=a}var o={},s=!1;for(var n in this.morphAttributes){for(var c=this.morphAttributes[n],l=[],h=0,u=c.length;h0&&(o[n]=l,s=!0)}s&&(e.data.morphAttributes=o,e.data.morphTargetsRelative=this.morphTargetsRelative);var d=this.groups;d.length>0&&(e.data.groups=JSON.parse(JSON.stringify(d)));var f=this.boundingSphere;return null!==f&&(e.data.boundingSphere={center:f.center.toArray(),radius:f.radius}),e},clone:function(){return(new Fr).copy(this)},copy:function(e){var t,n,r;this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null,this.name=e.name;var i=e.index;null!==i&&this.setIndex(i.clone());var a=e.attributes;for(t in a){var o=a[t];this.setAttribute(t,o.clone())}var s=e.morphAttributes;for(t in s){var c=[],l=s[t];for(n=0,r=l.length;nn.far?null:{distance:c,point:ti.clone(),object:e}}function ii(e,t,n,r,i,a,o,s,c,l,h,u){kr.fromBufferAttribute(i,l),Vr.fromBufferAttribute(i,h),jr.fromBufferAttribute(i,u);var p=e.morphTargetInfluences;if(t.morphTargets&&a&&p){Yr.set(0,0,0),Zr.set(0,0,0),Jr.set(0,0,0);for(var d=0,f=a.length;d0){var o=i[a[0]];if(void 0!==o)for(this.morphTargetInfluences=[],this.morphTargetDictionary={},e=0,t=o.length;e0&&console.error("THREE.Mesh.updateMorphTargets() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.")}},raycast:function(e,t){var n,r=this.geometry,i=this.material,a=this.matrixWorld;if(void 0!==i&&(null===r.boundingSphere&&r.computeBoundingSphere(),Hr.copy(r.boundingSphere),Hr.applyMatrix4(a),!1!==e.ray.intersectsSphere(Hr)&&(Ur.getInverse(a),Gr.copy(e.ray).applyMatrix4(Ur),null===r.boundingBox||!1!==Gr.intersectsBox(r.boundingBox))))if(r.isBufferGeometry){var o,s,c,l,h,u,p,d,f,m=r.index,v=r.attributes.position,g=r.morphAttributes.position,y=r.morphTargetsRelative,x=r.attributes.uv,b=r.attributes.uv2,w=r.groups,_=r.drawRange;if(null!==m)if(Array.isArray(i))for(l=0,u=w.length;l0&&(E=R);for(var C=0,I=P.length;C0)for(l=0;l0&&(this.normalsNeedUpdate=!0)},computeFlatVertexNormals:function(){var e,t,n;for(this.computeFaceNormals(),e=0,t=this.faces.length;e0&&(this.normalsNeedUpdate=!0)},computeMorphNormals:function(){var e,t,n,r,i;for(n=0,r=this.faces.length;n=0;n--){var f=p[n];for(this.faces.splice(f,1),o=0,s=this.faceVertexUvs.length;o0,v=d.vertexNormals.length>0,g=1!==d.color.r||1!==d.color.g||1!==d.color.b,y=d.vertexColors.length>0,x=0;if(x=M(x,0,0),x=M(x,1,!0),x=M(x,2,!1),x=M(x,3,f),x=M(x,4,m),x=M(x,5,v),x=M(x,6,g),x=M(x,7,y),o.push(x),o.push(d.a,d.b,d.c),o.push(d.materialIndex),f){var b=this.faceVertexUvs[0][i];o.push(E(b[0]),E(b[1]),E(b[2]))}if(m&&o.push(S(d.normal)),v){var w=d.vertexNormals;o.push(S(w[0]),S(w[1]),S(w[2]))}if(g&&o.push(T(d.color)),y){var _=d.vertexColors;o.push(T(_[0]),T(_[1]),T(_[2]))}}function M(e,t,n){return n?e|1<0&&(e.data.colors=l),u.length>0&&(e.data.uvs=[u]),e.data.faces=o,e},clone:function(){return(new li).copy(this)},copy:function(e){var t,n,r,i,a,o;this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.name=e.name;var s=e.vertices;for(t=0,n=s.length;t0?1:-1,l.push(P.x,P.y,P.z),h.push(y/m),h.push(1-x/v),A+=1}}for(x=0;x0&&(t.defines=this.defines),t.vertexShader=this.vertexShader,t.fragmentShader=this.fragmentShader;var i={};for(var a in this.extensions)!0===this.extensions[a]&&(i[a]=!0);return Object.keys(i).length>0&&(t.extensions=i),t},vi.prototype=Object.assign(Object.create(xn.prototype),{constructor:vi,isCamera:!0,copy:function(e,t){return xn.prototype.copy.call(this,e,t),this.matrixWorldInverse.copy(e.matrixWorldInverse),this.projectionMatrix.copy(e.projectionMatrix),this.projectionMatrixInverse.copy(e.projectionMatrixInverse),this},getWorldDirection:function(e){void 0===e&&(console.warn("THREE.Camera: .getWorldDirection() target is now required"),e=new Bt),this.updateMatrixWorld(!0);var t=this.matrixWorld.elements;return e.set(-t[8],-t[9],-t[10]).normalize()},updateMatrixWorld:function(e){xn.prototype.updateMatrixWorld.call(this,e),this.matrixWorldInverse.getInverse(this.matrixWorld)},clone:function(){return(new this.constructor).copy(this)}}),gi.prototype=Object.assign(Object.create(vi.prototype),{constructor:gi,isPerspectiveCamera:!0,copy:function(e,t){return vi.prototype.copy.call(this,e,t),this.fov=e.fov,this.zoom=e.zoom,this.near=e.near,this.far=e.far,this.focus=e.focus,this.aspect=e.aspect,this.view=null===e.view?null:Object.assign({},e.view),this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this},setFocalLength:function(e){var t=.5*this.getFilmHeight()/e;this.fov=2*It.RAD2DEG*Math.atan(t),this.updateProjectionMatrix()},getFocalLength:function(){var e=Math.tan(.5*It.DEG2RAD*this.fov);return.5*this.getFilmHeight()/e},getEffectiveFOV:function(){return 2*It.RAD2DEG*Math.atan(Math.tan(.5*It.DEG2RAD*this.fov)/this.zoom)},getFilmWidth:function(){return this.filmGauge*Math.min(this.aspect,1)},getFilmHeight:function(){return this.filmGauge/Math.max(this.aspect,1)},setViewOffset:function(e,t,n,r,i,a){this.aspect=e/t,null===this.view&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=e,this.view.fullHeight=t,this.view.offsetX=n,this.view.offsetY=r,this.view.width=i,this.view.height=a,this.updateProjectionMatrix()},clearViewOffset:function(){null!==this.view&&(this.view.enabled=!1),this.updateProjectionMatrix()},updateProjectionMatrix:function(){var e=this.near,t=e*Math.tan(.5*It.DEG2RAD*this.fov)/this.zoom,n=2*t,r=this.aspect*n,i=-.5*r,a=this.view;if(null!==this.view&&this.view.enabled){var o=a.fullWidth,s=a.fullHeight;i+=a.offsetX*r/o,t-=a.offsetY*n/s,r*=a.width/o,n*=a.height/s}var c=this.filmOffset;0!==c&&(i+=e*c/this.getFilmWidth()),this.projectionMatrix.makePerspective(i,i+r,t,t-n,e,this.far),this.projectionMatrixInverse.getInverse(this.projectionMatrix)},toJSON:function(e){var t=xn.prototype.toJSON.call(this,e);return t.object.fov=this.fov,t.object.zoom=this.zoom,t.object.near=this.near,t.object.far=this.far,t.object.focus=this.focus,t.object.aspect=this.aspect,null!==this.view&&(t.object.view=Object.assign({},this.view)),t.object.filmGauge=this.filmGauge,t.object.filmOffset=this.filmOffset,t}});var yi=90,xi=1;function bi(e,t,n,r){xn.call(this),this.type="CubeCamera";var i=new gi(yi,xi,e,t);i.up.set(0,-1,0),i.lookAt(new Bt(1,0,0)),this.add(i);var a=new gi(yi,xi,e,t);a.up.set(0,-1,0),a.lookAt(new Bt(-1,0,0)),this.add(a);var o=new gi(yi,xi,e,t);o.up.set(0,0,1),o.lookAt(new Bt(0,1,0)),this.add(o);var s=new gi(yi,xi,e,t);s.up.set(0,0,-1),s.lookAt(new Bt(0,-1,0)),this.add(s);var c=new gi(yi,xi,e,t);c.up.set(0,-1,0),c.lookAt(new Bt(0,0,1)),this.add(c);var l=new gi(yi,xi,e,t);l.up.set(0,-1,0),l.lookAt(new Bt(0,0,-1)),this.add(l),r=r||{format:Pe,magFilter:de,minFilter:de},this.renderTarget=new wi(n,n,r),this.renderTarget.texture.name="CubeCamera",this.update=function(e,t){null===this.parent&&this.updateMatrixWorld();var n=e.getRenderTarget(),r=this.renderTarget,h=r.texture.generateMipmaps;r.texture.generateMipmaps=!1,e.setRenderTarget(r,0),e.render(t,i),e.setRenderTarget(r,1),e.render(t,a),e.setRenderTarget(r,2),e.render(t,o),e.setRenderTarget(r,3),e.render(t,s),e.setRenderTarget(r,4),e.render(t,c),r.texture.generateMipmaps=h,e.setRenderTarget(r,5),e.render(t,l),e.setRenderTarget(n)},this.clear=function(e,t,n,r){for(var i=e.getRenderTarget(),a=this.renderTarget,o=0;o<6;o++)e.setRenderTarget(a,o),e.clear(t,n,r);e.setRenderTarget(i)}}function wi(e,t,n){Wt.call(this,e,t,n)}function _i(e,t,n,r,i,a,o,s,c,l,h,u){Vt.call(this,null,a,o,s,c,l,r,i,h,u),this.image={data:e||null,width:t||1,height:n||1},this.magFilter=void 0!==c?c:he,this.minFilter=void 0!==l?l:he,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1,this.needsUpdate=!0}bi.prototype=Object.create(xn.prototype),bi.prototype.constructor=bi,wi.prototype=Object.create(Wt.prototype),wi.prototype.constructor=wi,wi.prototype.isWebGLRenderTargetCube=!0,wi.prototype.fromEquirectangularTexture=function(e,t){this.texture.type=t.type,this.texture.format=t.format,this.texture.encoding=t.encoding;var n=new bn,r={uniforms:{tEquirect:{value:null}},vertexShader:["varying vec3 vWorldDirection;","vec3 transformDirection( in vec3 dir, in mat4 matrix ) {","\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );","}","void main() {","\tvWorldDirection = transformDirection( position, modelMatrix );","\t#include ","\t#include ","}"].join("\n"),fragmentShader:["uniform sampler2D tEquirect;","varying vec3 vWorldDirection;","#define RECIPROCAL_PI 0.31830988618","#define RECIPROCAL_PI2 0.15915494","void main() {","\tvec3 direction = normalize( vWorldDirection );","\tvec2 sampleUV;","\tsampleUV.y = asin( clamp( direction.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;","\tsampleUV.x = atan( direction.z, direction.x ) * RECIPROCAL_PI2 + 0.5;","\tgl_FragColor = texture2D( tEquirect, sampleUV );","}"].join("\n")},i=new mi({type:"CubemapFromEquirect",uniforms:ui(r.uniforms),vertexShader:r.vertexShader,fragmentShader:r.fragmentShader,side:h,blending:m});i.uniforms.tEquirect.value=t;var a=new ni(new hi(5,5,5),i);n.add(a);var o=new bi(1,10,1);return o.renderTarget=this,o.renderTarget.texture.name="CubeCameraTexture",o.update(e,n),a.geometry.dispose(),a.material.dispose(),this},_i.prototype=Object.create(Vt.prototype),_i.prototype.constructor=_i,_i.prototype.isDataTexture=!0;var Mi=new Bn,Si=new Bt;function Ti(e,t,n,r,i,a){this.planes=[void 0!==e?e:new Zn,void 0!==t?t:new Zn,void 0!==n?n:new Zn,void 0!==r?r:new Zn,void 0!==i?i:new Zn,void 0!==a?a:new Zn]}Object.assign(Ti.prototype,{set:function(e,t,n,r,i,a){var o=this.planes;return o[0].copy(e),o[1].copy(t),o[2].copy(n),o[3].copy(r),o[4].copy(i),o[5].copy(a),this},clone:function(){return(new this.constructor).copy(this)},copy:function(e){for(var t=this.planes,n=0;n<6;n++)t[n].copy(e.planes[n]);return this},setFromMatrix:function(e){var t=this.planes,n=e.elements,r=n[0],i=n[1],a=n[2],o=n[3],s=n[4],c=n[5],l=n[6],h=n[7],u=n[8],p=n[9],d=n[10],f=n[11],m=n[12],v=n[13],g=n[14],y=n[15];return t[0].setComponents(o-r,h-s,f-u,y-m).normalize(),t[1].setComponents(o+r,h+s,f+u,y+m).normalize(),t[2].setComponents(o+i,h+c,f+p,y+v).normalize(),t[3].setComponents(o-i,h-c,f-p,y-v).normalize(),t[4].setComponents(o-a,h-l,f-d,y-g).normalize(),t[5].setComponents(o+a,h+l,f+d,y+g).normalize(),this},intersectsObject:function(e){var t=e.geometry;return null===t.boundingSphere&&t.computeBoundingSphere(),Mi.copy(t.boundingSphere).applyMatrix4(e.matrixWorld),this.intersectsSphere(Mi)},intersectsSprite:function(e){return Mi.center.set(0,0,0),Mi.radius=.7071067811865476,Mi.applyMatrix4(e.matrixWorld),this.intersectsSphere(Mi)},intersectsSphere:function(e){for(var t=this.planes,n=e.center,r=-e.radius,i=0;i<6;i++){if(t[i].distanceToPoint(n)0?e.max.x:e.min.x,Si.y=r.normal.y>0?e.max.y:e.min.y,Si.z=r.normal.z>0?e.max.z:e.min.z,r.distanceToPoint(Si)<0)return!1}return!0},containsPoint:function(e){for(var t=this.planes,n=0;n<6;n++)if(t[n].distanceToPoint(e)<0)return!1;return!0}});var Ei={alphamap_fragment:"#ifdef USE_ALPHAMAP\n\tdiffuseColor.a *= texture2D( alphaMap, vUv ).g;\n#endif",alphamap_pars_fragment:"#ifdef USE_ALPHAMAP\n\tuniform sampler2D alphaMap;\n#endif",alphatest_fragment:"#ifdef ALPHATEST\n\tif ( diffuseColor.a < ALPHATEST ) discard;\n#endif",aomap_fragment:"#ifdef USE_AOMAP\n\tfloat ambientOcclusion = ( texture2D( aoMap, vUv2 ).r - 1.0 ) * aoMapIntensity + 1.0;\n\treflectedLight.indirectDiffuse *= ambientOcclusion;\n\t#if defined( USE_ENVMAP ) && defined( STANDARD )\n\t\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\n\t\treflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.specularRoughness );\n\t#endif\n#endif",aomap_pars_fragment:"#ifdef USE_AOMAP\n\tuniform sampler2D aoMap;\n\tuniform float aoMapIntensity;\n#endif",begin_vertex:"vec3 transformed = vec3( position );",beginnormal_vertex:"vec3 objectNormal = vec3( normal );\n#ifdef USE_TANGENT\n\tvec3 objectTangent = vec3( tangent.xyz );\n#endif",bsdfs:"vec2 integrateSpecularBRDF( const in float dotNV, const in float roughness ) {\n\tconst vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\n\tconst vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\n\tvec4 r = roughness * c0 + c1;\n\tfloat a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\n\treturn vec2( -1.04, 1.04 ) * a004 + r.zw;\n}\nfloat punctualLightIntensityToIrradianceFactor( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\n#if defined ( PHYSICALLY_CORRECT_LIGHTS )\n\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\n\tif( cutoffDistance > 0.0 ) {\n\t\tdistanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\n\t}\n\treturn distanceFalloff;\n#else\n\tif( cutoffDistance > 0.0 && decayExponent > 0.0 ) {\n\t\treturn pow( saturate( -lightDistance / cutoffDistance + 1.0 ), decayExponent );\n\t}\n\treturn 1.0;\n#endif\n}\nvec3 BRDF_Diffuse_Lambert( const in vec3 diffuseColor ) {\n\treturn RECIPROCAL_PI * diffuseColor;\n}\nvec3 F_Schlick( const in vec3 specularColor, const in float dotLH ) {\n\tfloat fresnel = exp2( ( -5.55473 * dotLH - 6.98316 ) * dotLH );\n\treturn ( 1.0 - specularColor ) * fresnel + specularColor;\n}\nvec3 F_Schlick_RoughnessDependent( const in vec3 F0, const in float dotNV, const in float roughness ) {\n\tfloat fresnel = exp2( ( -5.55473 * dotNV - 6.98316 ) * dotNV );\n\tvec3 Fr = max( vec3( 1.0 - roughness ), F0 ) - F0;\n\treturn Fr * fresnel + F0;\n}\nfloat G_GGX_Smith( const in float alpha, const in float dotNL, const in float dotNV ) {\n\tfloat a2 = pow2( alpha );\n\tfloat gl = dotNL + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\n\tfloat gv = dotNV + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\n\treturn 1.0 / ( gl * gv );\n}\nfloat G_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {\n\tfloat a2 = pow2( alpha );\n\tfloat gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\n\tfloat gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\n\treturn 0.5 / max( gv + gl, EPSILON );\n}\nfloat D_GGX( const in float alpha, const in float dotNH ) {\n\tfloat a2 = pow2( alpha );\n\tfloat denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;\n\treturn RECIPROCAL_PI * a2 / pow2( denom );\n}\nvec3 BRDF_Specular_GGX( const in IncidentLight incidentLight, const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float roughness ) {\n\tfloat alpha = pow2( roughness );\n\tvec3 halfDir = normalize( incidentLight.direction + viewDir );\n\tfloat dotNL = saturate( dot( normal, incidentLight.direction ) );\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tfloat dotNH = saturate( dot( normal, halfDir ) );\n\tfloat dotLH = saturate( dot( incidentLight.direction, halfDir ) );\n\tvec3 F = F_Schlick( specularColor, dotLH );\n\tfloat G = G_GGX_SmithCorrelated( alpha, dotNL, dotNV );\n\tfloat D = D_GGX( alpha, dotNH );\n\treturn F * ( G * D );\n}\nvec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {\n\tconst float LUT_SIZE = 64.0;\n\tconst float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\n\tconst float LUT_BIAS = 0.5 / LUT_SIZE;\n\tfloat dotNV = saturate( dot( N, V ) );\n\tvec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );\n\tuv = uv * LUT_SCALE + LUT_BIAS;\n\treturn uv;\n}\nfloat LTC_ClippedSphereFormFactor( const in vec3 f ) {\n\tfloat l = length( f );\n\treturn max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );\n}\nvec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {\n\tfloat x = dot( v1, v2 );\n\tfloat y = abs( x );\n\tfloat a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;\n\tfloat b = 3.4175940 + ( 4.1616724 + y ) * y;\n\tfloat v = a / b;\n\tfloat theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\n\treturn cross( v1, v2 ) * theta_sintheta;\n}\nvec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {\n\tvec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\n\tvec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\n\tvec3 lightNormal = cross( v1, v2 );\n\tif( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );\n\tvec3 T1, T2;\n\tT1 = normalize( V - N * dot( V, N ) );\n\tT2 = - cross( N, T1 );\n\tmat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\n\tvec3 coords[ 4 ];\n\tcoords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\n\tcoords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\n\tcoords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\n\tcoords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\n\tcoords[ 0 ] = normalize( coords[ 0 ] );\n\tcoords[ 1 ] = normalize( coords[ 1 ] );\n\tcoords[ 2 ] = normalize( coords[ 2 ] );\n\tcoords[ 3 ] = normalize( coords[ 3 ] );\n\tvec3 vectorFormFactor = vec3( 0.0 );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\n\tfloat result = LTC_ClippedSphereFormFactor( vectorFormFactor );\n\treturn vec3( result );\n}\nvec3 BRDF_Specular_GGX_Environment( const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float roughness ) {\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tvec2 brdf = integrateSpecularBRDF( dotNV, roughness );\n\treturn specularColor * brdf.x + brdf.y;\n}\nvoid BRDF_Specular_Multiscattering_Environment( const in GeometricContext geometry, const in vec3 specularColor, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\n\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\n\tvec3 F = F_Schlick_RoughnessDependent( specularColor, dotNV, roughness );\n\tvec2 brdf = integrateSpecularBRDF( dotNV, roughness );\n\tvec3 FssEss = F * brdf.x + brdf.y;\n\tfloat Ess = brdf.x + brdf.y;\n\tfloat Ems = 1.0 - Ess;\n\tvec3 Favg = specularColor + ( 1.0 - specularColor ) * 0.047619;\tvec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg );\n\tsingleScatter += FssEss;\n\tmultiScatter += Fms * Ems;\n}\nfloat G_BlinnPhong_Implicit( ) {\n\treturn 0.25;\n}\nfloat D_BlinnPhong( const in float shininess, const in float dotNH ) {\n\treturn RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );\n}\nvec3 BRDF_Specular_BlinnPhong( const in IncidentLight incidentLight, const in GeometricContext geometry, const in vec3 specularColor, const in float shininess ) {\n\tvec3 halfDir = normalize( incidentLight.direction + geometry.viewDir );\n\tfloat dotNH = saturate( dot( geometry.normal, halfDir ) );\n\tfloat dotLH = saturate( dot( incidentLight.direction, halfDir ) );\n\tvec3 F = F_Schlick( specularColor, dotLH );\n\tfloat G = G_BlinnPhong_Implicit( );\n\tfloat D = D_BlinnPhong( shininess, dotNH );\n\treturn F * ( G * D );\n}\nfloat GGXRoughnessToBlinnExponent( const in float ggxRoughness ) {\n\treturn ( 2.0 / pow2( ggxRoughness + 0.0001 ) - 2.0 );\n}\nfloat BlinnExponentToGGXRoughness( const in float blinnExponent ) {\n\treturn sqrt( 2.0 / ( blinnExponent + 2.0 ) );\n}\n#if defined( USE_SHEEN )\nfloat D_Charlie(float roughness, float NoH) {\n\tfloat invAlpha = 1.0 / roughness;\n\tfloat cos2h = NoH * NoH;\n\tfloat sin2h = max(1.0 - cos2h, 0.0078125);\treturn (2.0 + invAlpha) * pow(sin2h, invAlpha * 0.5) / (2.0 * PI);\n}\nfloat V_Neubelt(float NoV, float NoL) {\n\treturn saturate(1.0 / (4.0 * (NoL + NoV - NoL * NoV)));\n}\nvec3 BRDF_Specular_Sheen( const in float roughness, const in vec3 L, const in GeometricContext geometry, vec3 specularColor ) {\n\tvec3 N = geometry.normal;\n\tvec3 V = geometry.viewDir;\n\tvec3 H = normalize( V + L );\n\tfloat dotNH = saturate( dot( N, H ) );\n\treturn specularColor * D_Charlie( roughness, dotNH ) * V_Neubelt( dot(N, V), dot(N, L) );\n}\n#endif",bumpmap_pars_fragment:"#ifdef USE_BUMPMAP\n\tuniform sampler2D bumpMap;\n\tuniform float bumpScale;\n\tvec2 dHdxy_fwd() {\n\t\tvec2 dSTdx = dFdx( vUv );\n\t\tvec2 dSTdy = dFdy( vUv );\n\t\tfloat Hll = bumpScale * texture2D( bumpMap, vUv ).x;\n\t\tfloat dBx = bumpScale * texture2D( bumpMap, vUv + dSTdx ).x - Hll;\n\t\tfloat dBy = bumpScale * texture2D( bumpMap, vUv + dSTdy ).x - Hll;\n\t\treturn vec2( dBx, dBy );\n\t}\n\tvec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy ) {\n\t\tvec3 vSigmaX = vec3( dFdx( surf_pos.x ), dFdx( surf_pos.y ), dFdx( surf_pos.z ) );\n\t\tvec3 vSigmaY = vec3( dFdy( surf_pos.x ), dFdy( surf_pos.y ), dFdy( surf_pos.z ) );\n\t\tvec3 vN = surf_norm;\n\t\tvec3 R1 = cross( vSigmaY, vN );\n\t\tvec3 R2 = cross( vN, vSigmaX );\n\t\tfloat fDet = dot( vSigmaX, R1 );\n\t\tfDet *= ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t\tvec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\n\t\treturn normalize( abs( fDet ) * surf_norm - vGrad );\n\t}\n#endif",clipping_planes_fragment:"#if NUM_CLIPPING_PLANES > 0\n\tvec4 plane;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\n\t\tplane = clippingPlanes[ i ];\n\t\tif ( dot( vViewPosition, plane.xyz ) > plane.w ) discard;\n\t}\n\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\n\t\tbool clipped = true;\n\t\t#pragma unroll_loop\n\t\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\n\t\t\tplane = clippingPlanes[ i ];\n\t\t\tclipped = ( dot( vViewPosition, plane.xyz ) > plane.w ) && clipped;\n\t\t}\n\t\tif ( clipped ) discard;\n\t#endif\n#endif",clipping_planes_pars_fragment:"#if NUM_CLIPPING_PLANES > 0\n\t#if ! defined( STANDARD ) && ! defined( PHONG ) && ! defined( MATCAP )\n\t\tvarying vec3 vViewPosition;\n\t#endif\n\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\n#endif",clipping_planes_pars_vertex:"#if NUM_CLIPPING_PLANES > 0 && ! defined( STANDARD ) && ! defined( PHONG ) && ! defined( MATCAP )\n\tvarying vec3 vViewPosition;\n#endif",clipping_planes_vertex:"#if NUM_CLIPPING_PLANES > 0 && ! defined( STANDARD ) && ! defined( PHONG ) && ! defined( MATCAP )\n\tvViewPosition = - mvPosition.xyz;\n#endif",color_fragment:"#ifdef USE_COLOR\n\tdiffuseColor.rgb *= vColor;\n#endif",color_pars_fragment:"#ifdef USE_COLOR\n\tvarying vec3 vColor;\n#endif",color_pars_vertex:"#ifdef USE_COLOR\n\tvarying vec3 vColor;\n#endif",color_vertex:"#ifdef USE_COLOR\n\tvColor.xyz = color.xyz;\n#endif",common:"#define PI 3.14159265359\n#define PI2 6.28318530718\n#define PI_HALF 1.5707963267949\n#define RECIPROCAL_PI 0.31830988618\n#define RECIPROCAL_PI2 0.15915494\n#define LOG2 1.442695\n#define EPSILON 1e-6\n#ifndef saturate\n#define saturate(a) clamp( a, 0.0, 1.0 )\n#endif\n#define whiteComplement(a) ( 1.0 - saturate( a ) )\nfloat pow2( const in float x ) { return x*x; }\nfloat pow3( const in float x ) { return x*x*x; }\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\nfloat average( const in vec3 color ) { return dot( color, vec3( 0.3333 ) ); }\nhighp float rand( const in vec2 uv ) {\n\tconst highp float a = 12.9898, b = 78.233, c = 43758.5453;\n\thighp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\n\treturn fract(sin(sn) * c);\n}\n#ifdef HIGH_PRECISION\n\tfloat precisionSafeLength( vec3 v ) { return length( v ); }\n#else\n\tfloat max3( vec3 v ) { return max( max( v.x, v.y ), v.z ); }\n\tfloat precisionSafeLength( vec3 v ) {\n\t\tfloat maxComponent = max3( abs( v ) );\n\t\treturn length( v / maxComponent ) * maxComponent;\n\t}\n#endif\nstruct IncidentLight {\n\tvec3 color;\n\tvec3 direction;\n\tbool visible;\n};\nstruct ReflectedLight {\n\tvec3 directDiffuse;\n\tvec3 directSpecular;\n\tvec3 indirectDiffuse;\n\tvec3 indirectSpecular;\n};\nstruct GeometricContext {\n\tvec3 position;\n\tvec3 normal;\n\tvec3 viewDir;\n#ifdef CLEARCOAT\n\tvec3 clearcoatNormal;\n#endif\n};\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n}\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\n\treturn normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\n}\nvec3 projectOnPlane(in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\n\tfloat distance = dot( planeNormal, point - pointOnPlane );\n\treturn - distance * planeNormal + point;\n}\nfloat sideOfPlane( in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\n\treturn sign( dot( point - pointOnPlane, planeNormal ) );\n}\nvec3 linePlaneIntersect( in vec3 pointOnLine, in vec3 lineDirection, in vec3 pointOnPlane, in vec3 planeNormal ) {\n\treturn lineDirection * ( dot( planeNormal, pointOnPlane - pointOnLine ) / dot( planeNormal, lineDirection ) ) + pointOnLine;\n}\nmat3 transposeMat3( const in mat3 m ) {\n\tmat3 tmp;\n\ttmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\n\ttmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\n\ttmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\n\treturn tmp;\n}\nfloat linearToRelativeLuminance( const in vec3 color ) {\n\tvec3 weights = vec3( 0.2126, 0.7152, 0.0722 );\n\treturn dot( weights, color.rgb );\n}\nbool isPerspectiveMatrix( mat4 m ) {\n return m[ 2 ][ 3 ] == - 1.0;\n}",cube_uv_reflection_fragment:"#ifdef ENVMAP_TYPE_CUBE_UV\n#define cubeUV_maxMipLevel 8.0\n#define cubeUV_minMipLevel 4.0\n#define cubeUV_maxTileSize 256.0\n#define cubeUV_minTileSize 16.0\nfloat getFace(vec3 direction) {\n vec3 absDirection = abs(direction);\n float face = -1.0;\n if (absDirection.x > absDirection.z) {\n if (absDirection.x > absDirection.y)\n face = direction.x > 0.0 ? 0.0 : 3.0;\n else\n face = direction.y > 0.0 ? 1.0 : 4.0;\n } else {\n if (absDirection.z > absDirection.y)\n face = direction.z > 0.0 ? 2.0 : 5.0;\n else\n face = direction.y > 0.0 ? 1.0 : 4.0;\n }\n return face;\n}\nvec2 getUV(vec3 direction, float face) {\n vec2 uv;\n if (face == 0.0) {\n uv = vec2(-direction.z, direction.y) / abs(direction.x);\n } else if (face == 1.0) {\n uv = vec2(direction.x, -direction.z) / abs(direction.y);\n } else if (face == 2.0) {\n uv = direction.xy / abs(direction.z);\n } else if (face == 3.0) {\n uv = vec2(direction.z, direction.y) / abs(direction.x);\n } else if (face == 4.0) {\n uv = direction.xz / abs(direction.y);\n } else {\n uv = vec2(-direction.x, direction.y) / abs(direction.z);\n }\n return 0.5 * (uv + 1.0);\n}\nvec3 bilinearCubeUV(sampler2D envMap, vec3 direction, float mipInt) {\n float face = getFace(direction);\n float filterInt = max(cubeUV_minMipLevel - mipInt, 0.0);\n mipInt = max(mipInt, cubeUV_minMipLevel);\n float faceSize = exp2(mipInt);\n float texelSize = 1.0 / (3.0 * cubeUV_maxTileSize);\n vec2 uv = getUV(direction, face) * (faceSize - 1.0);\n vec2 f = fract(uv);\n uv += 0.5 - f;\n if (face > 2.0) {\n uv.y += faceSize;\n face -= 3.0;\n }\n uv.x += face * faceSize;\n if(mipInt < cubeUV_maxMipLevel){\n uv.y += 2.0 * cubeUV_maxTileSize;\n }\n uv.y += filterInt * 2.0 * cubeUV_minTileSize;\n uv.x += 3.0 * max(0.0, cubeUV_maxTileSize - 2.0 * faceSize);\n uv *= texelSize;\n vec3 tl = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\n uv.x += texelSize;\n vec3 tr = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\n uv.y += texelSize;\n vec3 br = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\n uv.x -= texelSize;\n vec3 bl = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\n vec3 tm = mix(tl, tr, f.x);\n vec3 bm = mix(bl, br, f.x);\n return mix(tm, bm, f.y);\n}\n#define r0 1.0\n#define v0 0.339\n#define m0 -2.0\n#define r1 0.8\n#define v1 0.276\n#define m1 -1.0\n#define r4 0.4\n#define v4 0.046\n#define m4 2.0\n#define r5 0.305\n#define v5 0.016\n#define m5 3.0\n#define r6 0.21\n#define v6 0.0038\n#define m6 4.0\nfloat roughnessToMip(float roughness) {\n float mip = 0.0;\n if (roughness >= r1) {\n mip = (r0 - roughness) * (m1 - m0) / (r0 - r1) + m0;\n } else if (roughness >= r4) {\n mip = (r1 - roughness) * (m4 - m1) / (r1 - r4) + m1;\n } else if (roughness >= r5) {\n mip = (r4 - roughness) * (m5 - m4) / (r4 - r5) + m4;\n } else if (roughness >= r6) {\n mip = (r5 - roughness) * (m6 - m5) / (r5 - r6) + m5;\n } else {\n mip = -2.0 * log2(1.16 * roughness); }\n return mip;\n}\nvec4 textureCubeUV(sampler2D envMap, vec3 sampleDir, float roughness) {\n float mip = clamp(roughnessToMip(roughness), m0, cubeUV_maxMipLevel);\n float mipF = fract(mip);\n float mipInt = floor(mip);\n vec3 color0 = bilinearCubeUV(envMap, sampleDir, mipInt);\n if (mipF == 0.0) {\n return vec4(color0, 1.0);\n } else {\n vec3 color1 = bilinearCubeUV(envMap, sampleDir, mipInt + 1.0);\n return vec4(mix(color0, color1, mipF), 1.0);\n }\n}\n#endif",defaultnormal_vertex:"vec3 transformedNormal = objectNormal;\n#ifdef USE_INSTANCING\n\ttransformedNormal = mat3( instanceMatrix ) * transformedNormal;\n#endif\ntransformedNormal = normalMatrix * transformedNormal;\n#ifdef FLIP_SIDED\n\ttransformedNormal = - transformedNormal;\n#endif\n#ifdef USE_TANGENT\n\tvec3 transformedTangent = ( modelViewMatrix * vec4( objectTangent, 0.0 ) ).xyz;\n\t#ifdef FLIP_SIDED\n\t\ttransformedTangent = - transformedTangent;\n\t#endif\n#endif",displacementmap_pars_vertex:"#ifdef USE_DISPLACEMENTMAP\n\tuniform sampler2D displacementMap;\n\tuniform float displacementScale;\n\tuniform float displacementBias;\n#endif",displacementmap_vertex:"#ifdef USE_DISPLACEMENTMAP\n\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, vUv ).x * displacementScale + displacementBias );\n#endif",emissivemap_fragment:"#ifdef USE_EMISSIVEMAP\n\tvec4 emissiveColor = texture2D( emissiveMap, vUv );\n\temissiveColor.rgb = emissiveMapTexelToLinear( emissiveColor ).rgb;\n\ttotalEmissiveRadiance *= emissiveColor.rgb;\n#endif",emissivemap_pars_fragment:"#ifdef USE_EMISSIVEMAP\n\tuniform sampler2D emissiveMap;\n#endif",encodings_fragment:"gl_FragColor = linearToOutputTexel( gl_FragColor );",encodings_pars_fragment:"\nvec4 LinearToLinear( in vec4 value ) {\n\treturn value;\n}\nvec4 GammaToLinear( in vec4 value, in float gammaFactor ) {\n\treturn vec4( pow( value.rgb, vec3( gammaFactor ) ), value.a );\n}\nvec4 LinearToGamma( in vec4 value, in float gammaFactor ) {\n\treturn vec4( pow( value.rgb, vec3( 1.0 / gammaFactor ) ), value.a );\n}\nvec4 sRGBToLinear( in vec4 value ) {\n\treturn vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.a );\n}\nvec4 LinearTosRGB( in vec4 value ) {\n\treturn vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );\n}\nvec4 RGBEToLinear( in vec4 value ) {\n\treturn vec4( value.rgb * exp2( value.a * 255.0 - 128.0 ), 1.0 );\n}\nvec4 LinearToRGBE( in vec4 value ) {\n\tfloat maxComponent = max( max( value.r, value.g ), value.b );\n\tfloat fExp = clamp( ceil( log2( maxComponent ) ), -128.0, 127.0 );\n\treturn vec4( value.rgb / exp2( fExp ), ( fExp + 128.0 ) / 255.0 );\n}\nvec4 RGBMToLinear( in vec4 value, in float maxRange ) {\n\treturn vec4( value.rgb * value.a * maxRange, 1.0 );\n}\nvec4 LinearToRGBM( in vec4 value, in float maxRange ) {\n\tfloat maxRGB = max( value.r, max( value.g, value.b ) );\n\tfloat M = clamp( maxRGB / maxRange, 0.0, 1.0 );\n\tM = ceil( M * 255.0 ) / 255.0;\n\treturn vec4( value.rgb / ( M * maxRange ), M );\n}\nvec4 RGBDToLinear( in vec4 value, in float maxRange ) {\n\treturn vec4( value.rgb * ( ( maxRange / 255.0 ) / value.a ), 1.0 );\n}\nvec4 LinearToRGBD( in vec4 value, in float maxRange ) {\n\tfloat maxRGB = max( value.r, max( value.g, value.b ) );\n\tfloat D = max( maxRange / maxRGB, 1.0 );\n\tD = min( floor( D ) / 255.0, 1.0 );\n\treturn vec4( value.rgb * ( D * ( 255.0 / maxRange ) ), D );\n}\nconst mat3 cLogLuvM = mat3( 0.2209, 0.3390, 0.4184, 0.1138, 0.6780, 0.7319, 0.0102, 0.1130, 0.2969 );\nvec4 LinearToLogLuv( in vec4 value ) {\n\tvec3 Xp_Y_XYZp = cLogLuvM * value.rgb;\n\tXp_Y_XYZp = max( Xp_Y_XYZp, vec3( 1e-6, 1e-6, 1e-6 ) );\n\tvec4 vResult;\n\tvResult.xy = Xp_Y_XYZp.xy / Xp_Y_XYZp.z;\n\tfloat Le = 2.0 * log2(Xp_Y_XYZp.y) + 127.0;\n\tvResult.w = fract( Le );\n\tvResult.z = ( Le - ( floor( vResult.w * 255.0 ) ) / 255.0 ) / 255.0;\n\treturn vResult;\n}\nconst mat3 cLogLuvInverseM = mat3( 6.0014, -2.7008, -1.7996, -1.3320, 3.1029, -5.7721, 0.3008, -1.0882, 5.6268 );\nvec4 LogLuvToLinear( in vec4 value ) {\n\tfloat Le = value.z * 255.0 + value.w;\n\tvec3 Xp_Y_XYZp;\n\tXp_Y_XYZp.y = exp2( ( Le - 127.0 ) / 2.0 );\n\tXp_Y_XYZp.z = Xp_Y_XYZp.y / value.y;\n\tXp_Y_XYZp.x = value.x * Xp_Y_XYZp.z;\n\tvec3 vRGB = cLogLuvInverseM * Xp_Y_XYZp.rgb;\n\treturn vec4( max( vRGB, 0.0 ), 1.0 );\n}",envmap_fragment:"#ifdef USE_ENVMAP\n\t#ifdef ENV_WORLDPOS\n\t\tvec3 cameraToFrag;\n\t\t\n\t\tif ( isOrthographic ) {\n\t\t\tcameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\n\t\t} else {\n\t\t\tcameraToFrag = normalize( vWorldPosition - cameraPosition );\n\t\t}\n\t\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvec3 reflectVec = reflect( cameraToFrag, worldNormal );\n\t\t#else\n\t\t\tvec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio );\n\t\t#endif\n\t#else\n\t\tvec3 reflectVec = vReflect;\n\t#endif\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tvec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\n\t#elif defined( ENVMAP_TYPE_CUBE_UV )\n\t\tvec4 envColor = textureCubeUV( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ), 0.0 );\n\t#elif defined( ENVMAP_TYPE_EQUIREC )\n\t\tvec2 sampleUV;\n\t\treflectVec = normalize( reflectVec );\n\t\tsampleUV.y = asin( clamp( reflectVec.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n\t\tsampleUV.x = atan( reflectVec.z, reflectVec.x ) * RECIPROCAL_PI2 + 0.5;\n\t\tvec4 envColor = texture2D( envMap, sampleUV );\n\t#elif defined( ENVMAP_TYPE_SPHERE )\n\t\treflectVec = normalize( reflectVec );\n\t\tvec3 reflectView = normalize( ( viewMatrix * vec4( reflectVec, 0.0 ) ).xyz + vec3( 0.0, 0.0, 1.0 ) );\n\t\tvec4 envColor = texture2D( envMap, reflectView.xy * 0.5 + 0.5 );\n\t#else\n\t\tvec4 envColor = vec4( 0.0 );\n\t#endif\n\t#ifndef ENVMAP_TYPE_CUBE_UV\n\t\tenvColor = envMapTexelToLinear( envColor );\n\t#endif\n\t#ifdef ENVMAP_BLENDING_MULTIPLY\n\t\toutgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\n\t#elif defined( ENVMAP_BLENDING_MIX )\n\t\toutgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\n\t#elif defined( ENVMAP_BLENDING_ADD )\n\t\toutgoingLight += envColor.xyz * specularStrength * reflectivity;\n\t#endif\n#endif",envmap_common_pars_fragment:"#ifdef USE_ENVMAP\n\tuniform float envMapIntensity;\n\tuniform float flipEnvMap;\n\tuniform int maxMipLevel;\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tuniform samplerCube envMap;\n\t#else\n\t\tuniform sampler2D envMap;\n\t#endif\n\t\n#endif",envmap_pars_fragment:"#ifdef USE_ENVMAP\n\tuniform float reflectivity;\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\n\t\t#define ENV_WORLDPOS\n\t#endif\n\t#ifdef ENV_WORLDPOS\n\t\tvarying vec3 vWorldPosition;\n\t\tuniform float refractionRatio;\n\t#else\n\t\tvarying vec3 vReflect;\n\t#endif\n#endif",envmap_pars_vertex:"#ifdef USE_ENVMAP\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) ||defined( PHONG )\n\t\t#define ENV_WORLDPOS\n\t#endif\n\t#ifdef ENV_WORLDPOS\n\t\t\n\t\tvarying vec3 vWorldPosition;\n\t#else\n\t\tvarying vec3 vReflect;\n\t\tuniform float refractionRatio;\n\t#endif\n#endif",envmap_physical_pars_fragment:"#if defined( USE_ENVMAP )\n\t#ifdef ENVMAP_MODE_REFRACTION\n\t\tuniform float refractionRatio;\n\t#endif\n\tvec3 getLightProbeIndirectIrradiance( const in GeometricContext geometry, const in int maxMIPLevel ) {\n\t\tvec3 worldNormal = inverseTransformDirection( geometry.normal, viewMatrix );\n\t\t#ifdef ENVMAP_TYPE_CUBE\n\t\t\tvec3 queryVec = vec3( flipEnvMap * worldNormal.x, worldNormal.yz );\n\t\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\t\tvec4 envMapColor = textureCubeLodEXT( envMap, queryVec, float( maxMIPLevel ) );\n\t\t\t#else\n\t\t\t\tvec4 envMapColor = textureCube( envMap, queryVec, float( maxMIPLevel ) );\n\t\t\t#endif\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\n\t\t#elif defined( ENVMAP_TYPE_CUBE_UV )\n\t\t\tvec3 queryVec = vec3( flipEnvMap * worldNormal.x, worldNormal.yz );\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, queryVec, 1.0 );\n\t\t#else\n\t\t\tvec4 envMapColor = vec4( 0.0 );\n\t\t#endif\n\t\treturn PI * envMapColor.rgb * envMapIntensity;\n\t}\n\tfloat getSpecularMIPLevel( const in float roughness, const in int maxMIPLevel ) {\n\t\tfloat maxMIPLevelScalar = float( maxMIPLevel );\n\t\tfloat sigma = PI * roughness * roughness / ( 1.0 + roughness );\n\t\tfloat desiredMIPLevel = maxMIPLevelScalar + log2( sigma );\n\t\treturn clamp( desiredMIPLevel, 0.0, maxMIPLevelScalar );\n\t}\n\tvec3 getLightProbeIndirectRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness, const in int maxMIPLevel ) {\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t vec3 reflectVec = reflect( -viewDir, normal );\n\t\t reflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );\n\t\t#else\n\t\t vec3 reflectVec = refract( -viewDir, normal, refractionRatio );\n\t\t#endif\n\t\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\n\t\tfloat specularMIPLevel = getSpecularMIPLevel( roughness, maxMIPLevel );\n\t\t#ifdef ENVMAP_TYPE_CUBE\n\t\t\tvec3 queryReflectVec = vec3( flipEnvMap * reflectVec.x, reflectVec.yz );\n\t\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\t\tvec4 envMapColor = textureCubeLodEXT( envMap, queryReflectVec, specularMIPLevel );\n\t\t\t#else\n\t\t\t\tvec4 envMapColor = textureCube( envMap, queryReflectVec, specularMIPLevel );\n\t\t\t#endif\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\n\t\t#elif defined( ENVMAP_TYPE_CUBE_UV )\n\t\t\tvec3 queryReflectVec = vec3( flipEnvMap * reflectVec.x, reflectVec.yz );\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, queryReflectVec, roughness );\n\t\t#elif defined( ENVMAP_TYPE_EQUIREC )\n\t\t\tvec2 sampleUV;\n\t\t\tsampleUV.y = asin( clamp( reflectVec.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n\t\t\tsampleUV.x = atan( reflectVec.z, reflectVec.x ) * RECIPROCAL_PI2 + 0.5;\n\t\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\t\tvec4 envMapColor = texture2DLodEXT( envMap, sampleUV, specularMIPLevel );\n\t\t\t#else\n\t\t\t\tvec4 envMapColor = texture2D( envMap, sampleUV, specularMIPLevel );\n\t\t\t#endif\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\n\t\t#elif defined( ENVMAP_TYPE_SPHERE )\n\t\t\tvec3 reflectView = normalize( ( viewMatrix * vec4( reflectVec, 0.0 ) ).xyz + vec3( 0.0,0.0,1.0 ) );\n\t\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\t\tvec4 envMapColor = texture2DLodEXT( envMap, reflectView.xy * 0.5 + 0.5, specularMIPLevel );\n\t\t\t#else\n\t\t\t\tvec4 envMapColor = texture2D( envMap, reflectView.xy * 0.5 + 0.5, specularMIPLevel );\n\t\t\t#endif\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\n\t\t#endif\n\t\treturn envMapColor.rgb * envMapIntensity;\n\t}\n#endif",envmap_vertex:"#ifdef USE_ENVMAP\n\t#ifdef ENV_WORLDPOS\n\t\tvWorldPosition = worldPosition.xyz;\n\t#else\n\t\tvec3 cameraToVertex;\n\t\tif ( isOrthographic ) { \n\t\t\tcameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\n\t\t} else {\n\t\t\tcameraToVertex = normalize( worldPosition.xyz - cameraPosition );\n\t\t}\n\t\tvec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvReflect = reflect( cameraToVertex, worldNormal );\n\t\t#else\n\t\t\tvReflect = refract( cameraToVertex, worldNormal, refractionRatio );\n\t\t#endif\n\t#endif\n#endif",fog_vertex:"#ifdef USE_FOG\n\tfogDepth = -mvPosition.z;\n#endif",fog_pars_vertex:"#ifdef USE_FOG\n\tvarying float fogDepth;\n#endif",fog_fragment:"#ifdef USE_FOG\n\t#ifdef FOG_EXP2\n\t\tfloat fogFactor = 1.0 - exp( - fogDensity * fogDensity * fogDepth * fogDepth );\n\t#else\n\t\tfloat fogFactor = smoothstep( fogNear, fogFar, fogDepth );\n\t#endif\n\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\n#endif",fog_pars_fragment:"#ifdef USE_FOG\n\tuniform vec3 fogColor;\n\tvarying float fogDepth;\n\t#ifdef FOG_EXP2\n\t\tuniform float fogDensity;\n\t#else\n\t\tuniform float fogNear;\n\t\tuniform float fogFar;\n\t#endif\n#endif",gradientmap_pars_fragment:"#ifdef USE_GRADIENTMAP\n\tuniform sampler2D gradientMap;\n#endif\nvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\n\tfloat dotNL = dot( normal, lightDirection );\n\tvec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\n\t#ifdef USE_GRADIENTMAP\n\t\treturn texture2D( gradientMap, coord ).rgb;\n\t#else\n\t\treturn ( coord.x < 0.7 ) ? vec3( 0.7 ) : vec3( 1.0 );\n\t#endif\n}",lightmap_fragment:"#ifdef USE_LIGHTMAP\n\tvec4 lightMapTexel= texture2D( lightMap, vUv2 );\n\treflectedLight.indirectDiffuse += PI * lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity;\n#endif",lightmap_pars_fragment:"#ifdef USE_LIGHTMAP\n\tuniform sampler2D lightMap;\n\tuniform float lightMapIntensity;\n#endif",lights_lambert_vertex:"vec3 diffuse = vec3( 1.0 );\nGeometricContext geometry;\ngeometry.position = mvPosition.xyz;\ngeometry.normal = normalize( transformedNormal );\ngeometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( -mvPosition.xyz );\nGeometricContext backGeometry;\nbackGeometry.position = geometry.position;\nbackGeometry.normal = -geometry.normal;\nbackGeometry.viewDir = geometry.viewDir;\nvLightFront = vec3( 0.0 );\nvIndirectFront = vec3( 0.0 );\n#ifdef DOUBLE_SIDED\n\tvLightBack = vec3( 0.0 );\n\tvIndirectBack = vec3( 0.0 );\n#endif\nIncidentLight directLight;\nfloat dotNL;\nvec3 directLightColor_Diffuse;\n#if NUM_POINT_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tgetPointDirectLightIrradiance( pointLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = PI * directLight.color;\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\n\t\t#endif\n\t}\n#endif\n#if NUM_SPOT_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tgetSpotDirectLightIrradiance( spotLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = PI * directLight.color;\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\n\t\t#endif\n\t}\n#endif\n#if NUM_DIR_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tgetDirectionalDirectLightIrradiance( directionalLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = PI * directLight.color;\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\n\t\t#endif\n\t}\n#endif\n#if NUM_HEMI_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\n\t\tvIndirectFront += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvIndirectBack += getHemisphereLightIrradiance( hemisphereLights[ i ], backGeometry );\n\t\t#endif\n\t}\n#endif",lights_pars_begin:"uniform bool receiveShadow;\nuniform vec3 ambientLightColor;\nuniform vec3 lightProbe[ 9 ];\nvec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {\n\tfloat x = normal.x, y = normal.y, z = normal.z;\n\tvec3 result = shCoefficients[ 0 ] * 0.886227;\n\tresult += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;\n\tresult += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;\n\tresult += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;\n\tresult += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;\n\tresult += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;\n\tresult += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );\n\tresult += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;\n\tresult += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );\n\treturn result;\n}\nvec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in GeometricContext geometry ) {\n\tvec3 worldNormal = inverseTransformDirection( geometry.normal, viewMatrix );\n\tvec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );\n\treturn irradiance;\n}\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\n\tvec3 irradiance = ambientLightColor;\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\tirradiance *= PI;\n\t#endif\n\treturn irradiance;\n}\n#if NUM_DIR_LIGHTS > 0\n\tstruct DirectionalLight {\n\t\tvec3 direction;\n\t\tvec3 color;\n\t\tint shadow;\n\t\tfloat shadowBias;\n\t\tfloat shadowRadius;\n\t\tvec2 shadowMapSize;\n\t};\n\tuniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\n\tvoid getDirectionalDirectLightIrradiance( const in DirectionalLight directionalLight, const in GeometricContext geometry, out IncidentLight directLight ) {\n\t\tdirectLight.color = directionalLight.color;\n\t\tdirectLight.direction = directionalLight.direction;\n\t\tdirectLight.visible = true;\n\t}\n#endif\n#if NUM_POINT_LIGHTS > 0\n\tstruct PointLight {\n\t\tvec3 position;\n\t\tvec3 color;\n\t\tfloat distance;\n\t\tfloat decay;\n\t\tint shadow;\n\t\tfloat shadowBias;\n\t\tfloat shadowRadius;\n\t\tvec2 shadowMapSize;\n\t\tfloat shadowCameraNear;\n\t\tfloat shadowCameraFar;\n\t};\n\tuniform PointLight pointLights[ NUM_POINT_LIGHTS ];\n\tvoid getPointDirectLightIrradiance( const in PointLight pointLight, const in GeometricContext geometry, out IncidentLight directLight ) {\n\t\tvec3 lVector = pointLight.position - geometry.position;\n\t\tdirectLight.direction = normalize( lVector );\n\t\tfloat lightDistance = length( lVector );\n\t\tdirectLight.color = pointLight.color;\n\t\tdirectLight.color *= punctualLightIntensityToIrradianceFactor( lightDistance, pointLight.distance, pointLight.decay );\n\t\tdirectLight.visible = ( directLight.color != vec3( 0.0 ) );\n\t}\n#endif\n#if NUM_SPOT_LIGHTS > 0\n\tstruct SpotLight {\n\t\tvec3 position;\n\t\tvec3 direction;\n\t\tvec3 color;\n\t\tfloat distance;\n\t\tfloat decay;\n\t\tfloat coneCos;\n\t\tfloat penumbraCos;\n\t\tint shadow;\n\t\tfloat shadowBias;\n\t\tfloat shadowRadius;\n\t\tvec2 shadowMapSize;\n\t};\n\tuniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\n\tvoid getSpotDirectLightIrradiance( const in SpotLight spotLight, const in GeometricContext geometry, out IncidentLight directLight ) {\n\t\tvec3 lVector = spotLight.position - geometry.position;\n\t\tdirectLight.direction = normalize( lVector );\n\t\tfloat lightDistance = length( lVector );\n\t\tfloat angleCos = dot( directLight.direction, spotLight.direction );\n\t\tif ( angleCos > spotLight.coneCos ) {\n\t\t\tfloat spotEffect = smoothstep( spotLight.coneCos, spotLight.penumbraCos, angleCos );\n\t\t\tdirectLight.color = spotLight.color;\n\t\t\tdirectLight.color *= spotEffect * punctualLightIntensityToIrradianceFactor( lightDistance, spotLight.distance, spotLight.decay );\n\t\t\tdirectLight.visible = true;\n\t\t} else {\n\t\t\tdirectLight.color = vec3( 0.0 );\n\t\t\tdirectLight.visible = false;\n\t\t}\n\t}\n#endif\n#if NUM_RECT_AREA_LIGHTS > 0\n\tstruct RectAreaLight {\n\t\tvec3 color;\n\t\tvec3 position;\n\t\tvec3 halfWidth;\n\t\tvec3 halfHeight;\n\t};\n\tuniform sampler2D ltc_1;\tuniform sampler2D ltc_2;\n\tuniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\n#endif\n#if NUM_HEMI_LIGHTS > 0\n\tstruct HemisphereLight {\n\t\tvec3 direction;\n\t\tvec3 skyColor;\n\t\tvec3 groundColor;\n\t};\n\tuniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\n\tvec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in GeometricContext geometry ) {\n\t\tfloat dotNL = dot( geometry.normal, hemiLight.direction );\n\t\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\n\t\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\n\t\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\t\tirradiance *= PI;\n\t\t#endif\n\t\treturn irradiance;\n\t}\n#endif",lights_toon_fragment:"ToonMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;\nmaterial.specularColor = specular;\nmaterial.specularShininess = shininess;\nmaterial.specularStrength = specularStrength;",lights_toon_pars_fragment:"varying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\nstruct ToonMaterial {\n\tvec3\tdiffuseColor;\n\tvec3\tspecularColor;\n\tfloat\tspecularShininess;\n\tfloat\tspecularStrength;\n};\nvoid RE_Direct_Toon( const in IncidentLight directLight, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\n\tvec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\tirradiance *= PI;\n\t#endif\n\treflectedLight.directDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n\treflectedLight.directSpecular += irradiance * BRDF_Specular_BlinnPhong( directLight, geometry, material.specularColor, material.specularShininess ) * material.specularStrength;\n}\nvoid RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n}\n#define RE_Direct\t\t\t\tRE_Direct_Toon\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Toon\n#define Material_LightProbeLOD( material )\t(0)",lights_phong_fragment:"BlinnPhongMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;\nmaterial.specularColor = specular;\nmaterial.specularShininess = shininess;\nmaterial.specularStrength = specularStrength;",lights_phong_pars_fragment:"varying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\nstruct BlinnPhongMaterial {\n\tvec3\tdiffuseColor;\n\tvec3\tspecularColor;\n\tfloat\tspecularShininess;\n\tfloat\tspecularStrength;\n};\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\n\tvec3 irradiance = dotNL * directLight.color;\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\tirradiance *= PI;\n\t#endif\n\treflectedLight.directDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n\treflectedLight.directSpecular += irradiance * BRDF_Specular_BlinnPhong( directLight, geometry, material.specularColor, material.specularShininess ) * material.specularStrength;\n}\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n}\n#define RE_Direct\t\t\t\tRE_Direct_BlinnPhong\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_BlinnPhong\n#define Material_LightProbeLOD( material )\t(0)",lights_physical_fragment:"PhysicalMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\nvec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );\nfloat geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );\nmaterial.specularRoughness = max( roughnessFactor, 0.0525 );material.specularRoughness += geometryRoughness;\nmaterial.specularRoughness = min( material.specularRoughness, 1.0 );\n#ifdef REFLECTIVITY\n\tmaterial.specularColor = mix( vec3( MAXIMUM_SPECULAR_COEFFICIENT * pow2( reflectivity ) ), diffuseColor.rgb, metalnessFactor );\n#else\n\tmaterial.specularColor = mix( vec3( DEFAULT_SPECULAR_COEFFICIENT ), diffuseColor.rgb, metalnessFactor );\n#endif\n#ifdef CLEARCOAT\n\tmaterial.clearcoat = saturate( clearcoat );\tmaterial.clearcoatRoughness = max( clearcoatRoughness, 0.0525 );\n\tmaterial.clearcoatRoughness += geometryRoughness;\n\tmaterial.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 );\n#endif\n#ifdef USE_SHEEN\n\tmaterial.sheenColor = sheen;\n#endif",lights_physical_pars_fragment:"struct PhysicalMaterial {\n\tvec3\tdiffuseColor;\n\tfloat\tspecularRoughness;\n\tvec3\tspecularColor;\n#ifdef CLEARCOAT\n\tfloat clearcoat;\n\tfloat clearcoatRoughness;\n#endif\n#ifdef USE_SHEEN\n\tvec3 sheenColor;\n#endif\n};\n#define MAXIMUM_SPECULAR_COEFFICIENT 0.16\n#define DEFAULT_SPECULAR_COEFFICIENT 0.04\nfloat clearcoatDHRApprox( const in float roughness, const in float dotNL ) {\n\treturn DEFAULT_SPECULAR_COEFFICIENT + ( 1.0 - DEFAULT_SPECULAR_COEFFICIENT ) * ( pow( 1.0 - dotNL, 5.0 ) * pow( 1.0 - roughness, 2.0 ) );\n}\n#if NUM_RECT_AREA_LIGHTS > 0\n\tvoid RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\t\tvec3 normal = geometry.normal;\n\t\tvec3 viewDir = geometry.viewDir;\n\t\tvec3 position = geometry.position;\n\t\tvec3 lightPos = rectAreaLight.position;\n\t\tvec3 halfWidth = rectAreaLight.halfWidth;\n\t\tvec3 halfHeight = rectAreaLight.halfHeight;\n\t\tvec3 lightColor = rectAreaLight.color;\n\t\tfloat roughness = material.specularRoughness;\n\t\tvec3 rectCoords[ 4 ];\n\t\trectCoords[ 0 ] = lightPos + halfWidth - halfHeight;\t\trectCoords[ 1 ] = lightPos - halfWidth - halfHeight;\n\t\trectCoords[ 2 ] = lightPos - halfWidth + halfHeight;\n\t\trectCoords[ 3 ] = lightPos + halfWidth + halfHeight;\n\t\tvec2 uv = LTC_Uv( normal, viewDir, roughness );\n\t\tvec4 t1 = texture2D( ltc_1, uv );\n\t\tvec4 t2 = texture2D( ltc_2, uv );\n\t\tmat3 mInv = mat3(\n\t\t\tvec3( t1.x, 0, t1.y ),\n\t\t\tvec3( 0, 1, 0 ),\n\t\t\tvec3( t1.z, 0, t1.w )\n\t\t);\n\t\tvec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );\n\t\treflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\n\t\treflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );\n\t}\n#endif\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\n\tvec3 irradiance = dotNL * directLight.color;\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\tirradiance *= PI;\n\t#endif\n\t#ifdef CLEARCOAT\n\t\tfloat ccDotNL = saturate( dot( geometry.clearcoatNormal, directLight.direction ) );\n\t\tvec3 ccIrradiance = ccDotNL * directLight.color;\n\t\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\t\tccIrradiance *= PI;\n\t\t#endif\n\t\tfloat clearcoatDHR = material.clearcoat * clearcoatDHRApprox( material.clearcoatRoughness, ccDotNL );\n\t\treflectedLight.directSpecular += ccIrradiance * material.clearcoat * BRDF_Specular_GGX( directLight, geometry.viewDir, geometry.clearcoatNormal, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearcoatRoughness );\n\t#else\n\t\tfloat clearcoatDHR = 0.0;\n\t#endif\n\t#ifdef USE_SHEEN\n\t\treflectedLight.directSpecular += ( 1.0 - clearcoatDHR ) * irradiance * BRDF_Specular_Sheen(\n\t\t\tmaterial.specularRoughness,\n\t\t\tdirectLight.direction,\n\t\t\tgeometry,\n\t\t\tmaterial.sheenColor\n\t\t);\n\t#else\n\t\treflectedLight.directSpecular += ( 1.0 - clearcoatDHR ) * irradiance * BRDF_Specular_GGX( directLight, geometry.viewDir, geometry.normal, material.specularColor, material.specularRoughness);\n\t#endif\n\treflectedLight.directDiffuse += ( 1.0 - clearcoatDHR ) * irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {\n\t#ifdef CLEARCOAT\n\t\tfloat ccDotNV = saturate( dot( geometry.clearcoatNormal, geometry.viewDir ) );\n\t\treflectedLight.indirectSpecular += clearcoatRadiance * material.clearcoat * BRDF_Specular_GGX_Environment( geometry.viewDir, geometry.clearcoatNormal, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearcoatRoughness );\n\t\tfloat ccDotNL = ccDotNV;\n\t\tfloat clearcoatDHR = material.clearcoat * clearcoatDHRApprox( material.clearcoatRoughness, ccDotNL );\n\t#else\n\t\tfloat clearcoatDHR = 0.0;\n\t#endif\n\tfloat clearcoatInv = 1.0 - clearcoatDHR;\n\tvec3 singleScattering = vec3( 0.0 );\n\tvec3 multiScattering = vec3( 0.0 );\n\tvec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\n\tBRDF_Specular_Multiscattering_Environment( geometry, material.specularColor, material.specularRoughness, singleScattering, multiScattering );\n\tvec3 diffuse = material.diffuseColor * ( 1.0 - ( singleScattering + multiScattering ) );\n\treflectedLight.indirectSpecular += clearcoatInv * radiance * singleScattering;\n\treflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance;\n\treflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;\n}\n#define RE_Direct\t\t\t\tRE_Direct_Physical\n#define RE_Direct_RectArea\t\tRE_Direct_RectArea_Physical\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Physical\n#define RE_IndirectSpecular\t\tRE_IndirectSpecular_Physical\nfloat computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {\n\treturn saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );\n}",lights_fragment_begin:"\nGeometricContext geometry;\ngeometry.position = - vViewPosition;\ngeometry.normal = normal;\ngeometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );\n#ifdef CLEARCOAT\n\tgeometry.clearcoatNormal = clearcoatNormal;\n#endif\nIncidentLight directLight;\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\n\tPointLight pointLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tpointLight = pointLights[ i ];\n\t\tgetPointDirectLightIrradiance( pointLight, geometry, directLight );\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )\n\t\tdirectLight.color *= all( bvec3( pointLight.shadow, directLight.visible, receiveShadow ) ) ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n#endif\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\n\tSpotLight spotLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tspotLight = spotLights[ i ];\n\t\tgetSpotDirectLightIrradiance( spotLight, geometry, directLight );\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\n\t\tdirectLight.color *= all( bvec3( spotLight.shadow, directLight.visible, receiveShadow ) ) ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n#endif\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\n\tDirectionalLight directionalLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tdirectionalLight = directionalLights[ i ];\n\t\tgetDirectionalDirectLightIrradiance( directionalLight, geometry, directLight );\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )\n\t\tdirectLight.color *= all( bvec3( directionalLight.shadow, directLight.visible, receiveShadow ) ) ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n#endif\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\n\tRectAreaLight rectAreaLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\n\t\trectAreaLight = rectAreaLights[ i ];\n\t\tRE_Direct_RectArea( rectAreaLight, geometry, material, reflectedLight );\n\t}\n#endif\n#if defined( RE_IndirectDiffuse )\n\tvec3 iblIrradiance = vec3( 0.0 );\n\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\n\tirradiance += getLightProbeIrradiance( lightProbe, geometry );\n\t#if ( NUM_HEMI_LIGHTS > 0 )\n\t\t#pragma unroll_loop\n\t\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\n\t\t\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\n\t\t}\n\t#endif\n#endif\n#if defined( RE_IndirectSpecular )\n\tvec3 radiance = vec3( 0.0 );\n\tvec3 clearcoatRadiance = vec3( 0.0 );\n#endif",lights_fragment_maps:"#if defined( RE_IndirectDiffuse )\n\t#ifdef USE_LIGHTMAP\n\t\tvec4 lightMapTexel= texture2D( lightMap, vUv2 );\n\t\tvec3 lightMapIrradiance = lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity;\n\t\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\t\tlightMapIrradiance *= PI;\n\t\t#endif\n\t\tirradiance += lightMapIrradiance;\n\t#endif\n\t#if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV )\n\t\tiblIrradiance += getLightProbeIndirectIrradiance( geometry, maxMipLevel );\n\t#endif\n#endif\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\n\tradiance += getLightProbeIndirectRadiance( geometry.viewDir, geometry.normal, material.specularRoughness, maxMipLevel );\n\t#ifdef CLEARCOAT\n\t\tclearcoatRadiance += getLightProbeIndirectRadiance( geometry.viewDir, geometry.clearcoatNormal, material.clearcoatRoughness, maxMipLevel );\n\t#endif\n#endif",lights_fragment_end:"#if defined( RE_IndirectDiffuse )\n\tRE_IndirectDiffuse( irradiance, geometry, material, reflectedLight );\n#endif\n#if defined( RE_IndirectSpecular )\n\tRE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometry, material, reflectedLight );\n#endif",logdepthbuf_fragment:"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\n\tgl_FragDepthEXT = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\n#endif",logdepthbuf_pars_fragment:"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\n\tuniform float logDepthBufFC;\n\tvarying float vFragDepth;\n\tvarying float vIsPerspective;\n#endif",logdepthbuf_pars_vertex:"#ifdef USE_LOGDEPTHBUF\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tvarying float vFragDepth;\n\t\tvarying float vIsPerspective;\n\t#else\n\t\tuniform float logDepthBufFC;\n\t#endif\n#endif",logdepthbuf_vertex:"#ifdef USE_LOGDEPTHBUF\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tvFragDepth = 1.0 + gl_Position.w;\n\t\tvIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );\n\t#else\n\t\tif ( isPerspectiveMatrix( projectionMatrix ) ) {\n\t\t\tgl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0;\n\t\t\tgl_Position.z *= gl_Position.w;\n\t\t}\n\t#endif\n#endif",map_fragment:"#ifdef USE_MAP\n\tvec4 texelColor = texture2D( map, vUv );\n\ttexelColor = mapTexelToLinear( texelColor );\n\tdiffuseColor *= texelColor;\n#endif",map_pars_fragment:"#ifdef USE_MAP\n\tuniform sampler2D map;\n#endif",map_particle_fragment:"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\n\tvec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\n#endif\n#ifdef USE_MAP\n\tvec4 mapTexel = texture2D( map, uv );\n\tdiffuseColor *= mapTexelToLinear( mapTexel );\n#endif\n#ifdef USE_ALPHAMAP\n\tdiffuseColor.a *= texture2D( alphaMap, uv ).g;\n#endif",map_particle_pars_fragment:"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\n\tuniform mat3 uvTransform;\n#endif\n#ifdef USE_MAP\n\tuniform sampler2D map;\n#endif\n#ifdef USE_ALPHAMAP\n\tuniform sampler2D alphaMap;\n#endif",metalnessmap_fragment:"float metalnessFactor = metalness;\n#ifdef USE_METALNESSMAP\n\tvec4 texelMetalness = texture2D( metalnessMap, vUv );\n\tmetalnessFactor *= texelMetalness.b;\n#endif",metalnessmap_pars_fragment:"#ifdef USE_METALNESSMAP\n\tuniform sampler2D metalnessMap;\n#endif",morphnormal_vertex:"#ifdef USE_MORPHNORMALS\n\tobjectNormal *= morphTargetBaseInfluence;\n\tobjectNormal += morphNormal0 * morphTargetInfluences[ 0 ];\n\tobjectNormal += morphNormal1 * morphTargetInfluences[ 1 ];\n\tobjectNormal += morphNormal2 * morphTargetInfluences[ 2 ];\n\tobjectNormal += morphNormal3 * morphTargetInfluences[ 3 ];\n#endif",morphtarget_pars_vertex:"#ifdef USE_MORPHTARGETS\n\tuniform float morphTargetBaseInfluence;\n\t#ifndef USE_MORPHNORMALS\n\tuniform float morphTargetInfluences[ 8 ];\n\t#else\n\tuniform float morphTargetInfluences[ 4 ];\n\t#endif\n#endif",morphtarget_vertex:"#ifdef USE_MORPHTARGETS\n\ttransformed *= morphTargetBaseInfluence;\n\ttransformed += morphTarget0 * morphTargetInfluences[ 0 ];\n\ttransformed += morphTarget1 * morphTargetInfluences[ 1 ];\n\ttransformed += morphTarget2 * morphTargetInfluences[ 2 ];\n\ttransformed += morphTarget3 * morphTargetInfluences[ 3 ];\n\t#ifndef USE_MORPHNORMALS\n\ttransformed += morphTarget4 * morphTargetInfluences[ 4 ];\n\ttransformed += morphTarget5 * morphTargetInfluences[ 5 ];\n\ttransformed += morphTarget6 * morphTargetInfluences[ 6 ];\n\ttransformed += morphTarget7 * morphTargetInfluences[ 7 ];\n\t#endif\n#endif",normal_fragment_begin:"#ifdef FLAT_SHADED\n\tvec3 fdx = vec3( dFdx( vViewPosition.x ), dFdx( vViewPosition.y ), dFdx( vViewPosition.z ) );\n\tvec3 fdy = vec3( dFdy( vViewPosition.x ), dFdy( vViewPosition.y ), dFdy( vViewPosition.z ) );\n\tvec3 normal = normalize( cross( fdx, fdy ) );\n#else\n\tvec3 normal = normalize( vNormal );\n\t#ifdef DOUBLE_SIDED\n\t\tnormal = normal * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t#endif\n\t#ifdef USE_TANGENT\n\t\tvec3 tangent = normalize( vTangent );\n\t\tvec3 bitangent = normalize( vBitangent );\n\t\t#ifdef DOUBLE_SIDED\n\t\t\ttangent = tangent * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t\t\tbitangent = bitangent * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t\t#endif\n\t\t#if defined( TANGENTSPACE_NORMALMAP ) || defined( USE_CLEARCOAT_NORMALMAP )\n\t\t\tmat3 vTBN = mat3( tangent, bitangent, normal );\n\t\t#endif\n\t#endif\n#endif\nvec3 geometryNormal = normal;",normal_fragment_maps:"#ifdef OBJECTSPACE_NORMALMAP\n\tnormal = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n\t#ifdef FLIP_SIDED\n\t\tnormal = - normal;\n\t#endif\n\t#ifdef DOUBLE_SIDED\n\t\tnormal = normal * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t#endif\n\tnormal = normalize( normalMatrix * normal );\n#elif defined( TANGENTSPACE_NORMALMAP )\n\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n\tmapN.xy *= normalScale;\n\t#ifdef USE_TANGENT\n\t\tnormal = normalize( vTBN * mapN );\n\t#else\n\t\tnormal = perturbNormal2Arb( -vViewPosition, normal, mapN );\n\t#endif\n#elif defined( USE_BUMPMAP )\n\tnormal = perturbNormalArb( -vViewPosition, normal, dHdxy_fwd() );\n#endif",normalmap_pars_fragment:"#ifdef USE_NORMALMAP\n\tuniform sampler2D normalMap;\n\tuniform vec2 normalScale;\n#endif\n#ifdef OBJECTSPACE_NORMALMAP\n\tuniform mat3 normalMatrix;\n#endif\n#if ! defined ( USE_TANGENT ) && ( defined ( TANGENTSPACE_NORMALMAP ) || defined ( USE_CLEARCOAT_NORMALMAP ) )\n\tvec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm, vec3 mapN ) {\n\t\tvec3 q0 = vec3( dFdx( eye_pos.x ), dFdx( eye_pos.y ), dFdx( eye_pos.z ) );\n\t\tvec3 q1 = vec3( dFdy( eye_pos.x ), dFdy( eye_pos.y ), dFdy( eye_pos.z ) );\n\t\tvec2 st0 = dFdx( vUv.st );\n\t\tvec2 st1 = dFdy( vUv.st );\n\t\tfloat scale = sign( st1.t * st0.s - st0.t * st1.s );\n\t\tvec3 S = normalize( ( q0 * st1.t - q1 * st0.t ) * scale );\n\t\tvec3 T = normalize( ( - q0 * st1.s + q1 * st0.s ) * scale );\n\t\tvec3 N = normalize( surf_norm );\n\t\tmat3 tsn = mat3( S, T, N );\n\t\tmapN.xy *= ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t\treturn normalize( tsn * mapN );\n\t}\n#endif",clearcoat_normal_fragment_begin:"#ifdef CLEARCOAT\n\tvec3 clearcoatNormal = geometryNormal;\n#endif",clearcoat_normal_fragment_maps:"#ifdef USE_CLEARCOAT_NORMALMAP\n\tvec3 clearcoatMapN = texture2D( clearcoatNormalMap, vUv ).xyz * 2.0 - 1.0;\n\tclearcoatMapN.xy *= clearcoatNormalScale;\n\t#ifdef USE_TANGENT\n\t\tclearcoatNormal = normalize( vTBN * clearcoatMapN );\n\t#else\n\t\tclearcoatNormal = perturbNormal2Arb( - vViewPosition, clearcoatNormal, clearcoatMapN );\n\t#endif\n#endif",clearcoat_normalmap_pars_fragment:"#ifdef USE_CLEARCOAT_NORMALMAP\n\tuniform sampler2D clearcoatNormalMap;\n\tuniform vec2 clearcoatNormalScale;\n#endif",packing:"vec3 packNormalToRGB( const in vec3 normal ) {\n\treturn normalize( normal ) * 0.5 + 0.5;\n}\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\n\treturn 2.0 * rgb.xyz - 1.0;\n}\nconst float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;\nconst vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\nconst vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. );\nconst float ShiftRight8 = 1. / 256.;\nvec4 packDepthToRGBA( const in float v ) {\n\tvec4 r = vec4( fract( v * PackFactors ), v );\n\tr.yzw -= r.xyz * ShiftRight8;\treturn r * PackUpscale;\n}\nfloat unpackRGBAToDepth( const in vec4 v ) {\n\treturn dot( v, UnpackFactors );\n}\nvec4 pack2HalfToRGBA( vec2 v ) {\n\tvec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ));\n\treturn vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w);\n}\nvec2 unpackRGBATo2Half( vec4 v ) {\n\treturn vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) );\n}\nfloat viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {\n\treturn ( viewZ + near ) / ( near - far );\n}\nfloat orthographicDepthToViewZ( const in float linearClipZ, const in float near, const in float far ) {\n\treturn linearClipZ * ( near - far ) - near;\n}\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\n\treturn (( near + viewZ ) * far ) / (( far - near ) * viewZ );\n}\nfloat perspectiveDepthToViewZ( const in float invClipZ, const in float near, const in float far ) {\n\treturn ( near * far ) / ( ( far - near ) * invClipZ - far );\n}",premultiplied_alpha_fragment:"#ifdef PREMULTIPLIED_ALPHA\n\tgl_FragColor.rgb *= gl_FragColor.a;\n#endif",project_vertex:"vec4 mvPosition = vec4( transformed, 1.0 );\n#ifdef USE_INSTANCING\n\tmvPosition = instanceMatrix * mvPosition;\n#endif\nmvPosition = modelViewMatrix * mvPosition;\ngl_Position = projectionMatrix * mvPosition;",dithering_fragment:"#ifdef DITHERING\n\tgl_FragColor.rgb = dithering( gl_FragColor.rgb );\n#endif",dithering_pars_fragment:"#ifdef DITHERING\n\tvec3 dithering( vec3 color ) {\n\t\tfloat grid_position = rand( gl_FragCoord.xy );\n\t\tvec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );\n\t\tdither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );\n\t\treturn color + dither_shift_RGB;\n\t}\n#endif",roughnessmap_fragment:"float roughnessFactor = roughness;\n#ifdef USE_ROUGHNESSMAP\n\tvec4 texelRoughness = texture2D( roughnessMap, vUv );\n\troughnessFactor *= texelRoughness.g;\n#endif",roughnessmap_pars_fragment:"#ifdef USE_ROUGHNESSMAP\n\tuniform sampler2D roughnessMap;\n#endif",shadowmap_pars_fragment:"#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\n\t#endif\n\tfloat texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\n\t\treturn step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\n\t}\n\tvec2 texture2DDistribution( sampler2D shadow, vec2 uv ) {\n\t\treturn unpackRGBATo2Half( texture2D( shadow, uv ) );\n\t}\n\tfloat VSMShadow (sampler2D shadow, vec2 uv, float compare ){\n\t\tfloat occlusion = 1.0;\n\t\tvec2 distribution = texture2DDistribution( shadow, uv );\n\t\tfloat hard_shadow = step( compare , distribution.x );\n\t\tif (hard_shadow != 1.0 ) {\n\t\t\tfloat distance = compare - distribution.x ;\n\t\t\tfloat variance = max( 0.00000, distribution.y * distribution.y );\n\t\t\tfloat softness_probability = variance / (variance + distance * distance );\t\t\tsoftness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 );\t\t\tocclusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 );\n\t\t}\n\t\treturn occlusion;\n\t}\n\tfloat texture2DShadowLerp( sampler2D depths, vec2 size, vec2 uv, float compare ) {\n\t\tconst vec2 offset = vec2( 0.0, 1.0 );\n\t\tvec2 texelSize = vec2( 1.0 ) / size;\n\t\tvec2 centroidUV = ( floor( uv * size - 0.5 ) + 0.5 ) * texelSize;\n\t\tfloat lb = texture2DCompare( depths, centroidUV + texelSize * offset.xx, compare );\n\t\tfloat lt = texture2DCompare( depths, centroidUV + texelSize * offset.xy, compare );\n\t\tfloat rb = texture2DCompare( depths, centroidUV + texelSize * offset.yx, compare );\n\t\tfloat rt = texture2DCompare( depths, centroidUV + texelSize * offset.yy, compare );\n\t\tvec2 f = fract( uv * size + 0.5 );\n\t\tfloat a = mix( lb, lt, f.y );\n\t\tfloat b = mix( rb, rt, f.y );\n\t\tfloat c = mix( a, b, f.x );\n\t\treturn c;\n\t}\n\tfloat getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\n\t\tfloat shadow = 1.0;\n\t\tshadowCoord.xyz /= shadowCoord.w;\n\t\tshadowCoord.z += shadowBias;\n\t\tbvec4 inFrustumVec = bvec4 ( shadowCoord.x >= 0.0, shadowCoord.x <= 1.0, shadowCoord.y >= 0.0, shadowCoord.y <= 1.0 );\n\t\tbool inFrustum = all( inFrustumVec );\n\t\tbvec2 frustumTestVec = bvec2( inFrustum, shadowCoord.z <= 1.0 );\n\t\tbool frustumTest = all( frustumTestVec );\n\t\tif ( frustumTest ) {\n\t\t#if defined( SHADOWMAP_TYPE_PCF )\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n\t\t\tfloat dx0 = - texelSize.x * shadowRadius;\n\t\t\tfloat dy0 = - texelSize.y * shadowRadius;\n\t\t\tfloat dx1 = + texelSize.x * shadowRadius;\n\t\t\tfloat dy1 = + texelSize.y * shadowRadius;\n\t\t\tfloat dx2 = dx0 / 2.0;\n\t\t\tfloat dy2 = dy0 / 2.0;\n\t\t\tfloat dx3 = dx1 / 2.0;\n\t\t\tfloat dy3 = dy1 / 2.0;\n\t\t\tshadow = (\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\n\t\t\t) * ( 1.0 / 17.0 );\n\t\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n\t\t\tfloat dx0 = - texelSize.x * shadowRadius;\n\t\t\tfloat dy0 = - texelSize.y * shadowRadius;\n\t\t\tfloat dx1 = + texelSize.x * shadowRadius;\n\t\t\tfloat dy1 = + texelSize.y * shadowRadius;\n\t\t\tshadow = (\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy, shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#elif defined( SHADOWMAP_TYPE_VSM )\n\t\t\tshadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z );\n\t\t#else\n\t\t\tshadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );\n\t\t#endif\n\t\t}\n\t\treturn shadow;\n\t}\n\tvec2 cubeToUV( vec3 v, float texelSizeY ) {\n\t\tvec3 absV = abs( v );\n\t\tfloat scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );\n\t\tabsV *= scaleToCube;\n\t\tv *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );\n\t\tvec2 planar = v.xy;\n\t\tfloat almostATexel = 1.5 * texelSizeY;\n\t\tfloat almostOne = 1.0 - almostATexel;\n\t\tif ( absV.z >= almostOne ) {\n\t\t\tif ( v.z > 0.0 )\n\t\t\t\tplanar.x = 4.0 - v.x;\n\t\t} else if ( absV.x >= almostOne ) {\n\t\t\tfloat signX = sign( v.x );\n\t\t\tplanar.x = v.z * signX + 2.0 * signX;\n\t\t} else if ( absV.y >= almostOne ) {\n\t\t\tfloat signY = sign( v.y );\n\t\t\tplanar.x = v.x + 2.0 * signY + 2.0;\n\t\t\tplanar.y = v.z * signY - 2.0;\n\t\t}\n\t\treturn vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );\n\t}\n\tfloat getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {\n\t\tvec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );\n\t\tvec3 lightToPosition = shadowCoord.xyz;\n\t\tfloat dp = ( length( lightToPosition ) - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear );\t\tdp += shadowBias;\n\t\tvec3 bd3D = normalize( lightToPosition );\n\t\t#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM )\n\t\t\tvec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;\n\t\t\treturn (\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#else\n\t\t\treturn texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );\n\t\t#endif\n\t}\n#endif",shadowmap_pars_vertex:"#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t\tuniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\t\tuniform mat4 spotShadowMatrix[ NUM_SPOT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t\tuniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\n\t#endif\n#endif",shadowmap_vertex:"#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\n\t\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * worldPosition;\n\t}\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\n\t\tvSpotShadowCoord[ i ] = spotShadowMatrix[ i ] * worldPosition;\n\t}\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\n\t\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * worldPosition;\n\t}\n\t#endif\n#endif",shadowmask_pars_fragment:"float getShadowMask() {\n\tfloat shadow = 1.0;\n\t#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\tDirectionalLight directionalLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\n\t\tdirectionalLight = directionalLights[ i ];\n\t\tshadow *= all( bvec2( directionalLight.shadow, receiveShadow ) ) ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t}\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\tSpotLight spotLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\n\t\tspotLight = spotLights[ i ];\n\t\tshadow *= all( bvec2( spotLight.shadow, receiveShadow ) ) ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\n\t}\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\tPointLight pointLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\n\t\tpointLight = pointLights[ i ];\n\t\tshadow *= all( bvec2( pointLight.shadow, receiveShadow ) ) ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\n\t}\n\t#endif\n\t#endif\n\treturn shadow;\n}",skinbase_vertex:"#ifdef USE_SKINNING\n\tmat4 boneMatX = getBoneMatrix( skinIndex.x );\n\tmat4 boneMatY = getBoneMatrix( skinIndex.y );\n\tmat4 boneMatZ = getBoneMatrix( skinIndex.z );\n\tmat4 boneMatW = getBoneMatrix( skinIndex.w );\n#endif",skinning_pars_vertex:"#ifdef USE_SKINNING\n\tuniform mat4 bindMatrix;\n\tuniform mat4 bindMatrixInverse;\n\t#ifdef BONE_TEXTURE\n\t\tuniform highp sampler2D boneTexture;\n\t\tuniform int boneTextureSize;\n\t\tmat4 getBoneMatrix( const in float i ) {\n\t\t\tfloat j = i * 4.0;\n\t\t\tfloat x = mod( j, float( boneTextureSize ) );\n\t\t\tfloat y = floor( j / float( boneTextureSize ) );\n\t\t\tfloat dx = 1.0 / float( boneTextureSize );\n\t\t\tfloat dy = 1.0 / float( boneTextureSize );\n\t\t\ty = dy * ( y + 0.5 );\n\t\t\tvec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) );\n\t\t\tvec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) );\n\t\t\tvec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) );\n\t\t\tvec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) );\n\t\t\tmat4 bone = mat4( v1, v2, v3, v4 );\n\t\t\treturn bone;\n\t\t}\n\t#else\n\t\tuniform mat4 boneMatrices[ MAX_BONES ];\n\t\tmat4 getBoneMatrix( const in float i ) {\n\t\t\tmat4 bone = boneMatrices[ int(i) ];\n\t\t\treturn bone;\n\t\t}\n\t#endif\n#endif",skinning_vertex:"#ifdef USE_SKINNING\n\tvec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );\n\tvec4 skinned = vec4( 0.0 );\n\tskinned += boneMatX * skinVertex * skinWeight.x;\n\tskinned += boneMatY * skinVertex * skinWeight.y;\n\tskinned += boneMatZ * skinVertex * skinWeight.z;\n\tskinned += boneMatW * skinVertex * skinWeight.w;\n\ttransformed = ( bindMatrixInverse * skinned ).xyz;\n#endif",skinnormal_vertex:"#ifdef USE_SKINNING\n\tmat4 skinMatrix = mat4( 0.0 );\n\tskinMatrix += skinWeight.x * boneMatX;\n\tskinMatrix += skinWeight.y * boneMatY;\n\tskinMatrix += skinWeight.z * boneMatZ;\n\tskinMatrix += skinWeight.w * boneMatW;\n\tskinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;\n\tobjectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz;\n\t#ifdef USE_TANGENT\n\t\tobjectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz;\n\t#endif\n#endif",specularmap_fragment:"float specularStrength;\n#ifdef USE_SPECULARMAP\n\tvec4 texelSpecular = texture2D( specularMap, vUv );\n\tspecularStrength = texelSpecular.r;\n#else\n\tspecularStrength = 1.0;\n#endif",specularmap_pars_fragment:"#ifdef USE_SPECULARMAP\n\tuniform sampler2D specularMap;\n#endif",tonemapping_fragment:"#if defined( TONE_MAPPING )\n\tgl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\n#endif",tonemapping_pars_fragment:"#ifndef saturate\n#define saturate(a) clamp( a, 0.0, 1.0 )\n#endif\nuniform float toneMappingExposure;\nuniform float toneMappingWhitePoint;\nvec3 LinearToneMapping( vec3 color ) {\n\treturn toneMappingExposure * color;\n}\nvec3 ReinhardToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\treturn saturate( color / ( vec3( 1.0 ) + color ) );\n}\n#define Uncharted2Helper( x ) max( ( ( x * ( 0.15 * x + 0.10 * 0.50 ) + 0.20 * 0.02 ) / ( x * ( 0.15 * x + 0.50 ) + 0.20 * 0.30 ) ) - 0.02 / 0.30, vec3( 0.0 ) )\nvec3 Uncharted2ToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\treturn saturate( Uncharted2Helper( color ) / Uncharted2Helper( vec3( toneMappingWhitePoint ) ) );\n}\nvec3 OptimizedCineonToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\tcolor = max( vec3( 0.0 ), color - 0.004 );\n\treturn pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\n}\nvec3 ACESFilmicToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\treturn saturate( ( color * ( 2.51 * color + 0.03 ) ) / ( color * ( 2.43 * color + 0.59 ) + 0.14 ) );\n}",uv_pars_fragment:"#if ( defined( USE_UV ) && ! defined( UVS_VERTEX_ONLY ) )\n\tvarying vec2 vUv;\n#endif",uv_pars_vertex:"#ifdef USE_UV\n\t#ifdef UVS_VERTEX_ONLY\n\t\tvec2 vUv;\n\t#else\n\t\tvarying vec2 vUv;\n\t#endif\n\tuniform mat3 uvTransform;\n#endif",uv_vertex:"#ifdef USE_UV\n\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n#endif",uv2_pars_fragment:"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tvarying vec2 vUv2;\n#endif",uv2_pars_vertex:"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tattribute vec2 uv2;\n\tvarying vec2 vUv2;\n\tuniform mat3 uv2Transform;\n#endif",uv2_vertex:"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tvUv2 = ( uv2Transform * vec3( uv2, 1 ) ).xy;\n#endif",worldpos_vertex:"#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP )\n\tvec4 worldPosition = vec4( transformed, 1.0 );\n\t#ifdef USE_INSTANCING\n\t\tworldPosition = instanceMatrix * worldPosition;\n\t#endif\n\tworldPosition = modelMatrix * worldPosition;\n#endif",background_frag:"uniform sampler2D t2D;\nvarying vec2 vUv;\nvoid main() {\n\tvec4 texColor = texture2D( t2D, vUv );\n\tgl_FragColor = mapTexelToLinear( texColor );\n\t#include \n\t#include \n}",background_vert:"varying vec2 vUv;\nuniform mat3 uvTransform;\nvoid main() {\n\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n\tgl_Position = vec4( position.xy, 1.0, 1.0 );\n}",cube_frag:"#include \nuniform float opacity;\nvarying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvec3 vReflect = vWorldDirection;\n\t#include \n\tgl_FragColor = envColor;\n\tgl_FragColor.a *= opacity;\n\t#include \n\t#include \n}",cube_vert:"varying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include \n\t#include \n\tgl_Position.z = gl_Position.w;\n}",depth_frag:"#if DEPTH_PACKING == 3200\n\tuniform float opacity;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( 1.0 );\n\t#if DEPTH_PACKING == 3200\n\t\tdiffuseColor.a = opacity;\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#if DEPTH_PACKING == 3200\n\t\tgl_FragColor = vec4( vec3( 1.0 - gl_FragCoord.z ), opacity );\n\t#elif DEPTH_PACKING == 3201\n\t\tgl_FragColor = packDepthToRGBA( gl_FragCoord.z );\n\t#endif\n}",depth_vert:"#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include \n\t\t#include \n\t\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",distanceRGBA_frag:"#define DISTANCE\nuniform vec3 referencePosition;\nuniform float nearDistance;\nuniform float farDistance;\nvarying vec3 vWorldPosition;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main () {\n\t#include \n\tvec4 diffuseColor = vec4( 1.0 );\n\t#include \n\t#include \n\t#include \n\tfloat dist = length( vWorldPosition - referencePosition );\n\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\n\tdist = saturate( dist );\n\tgl_FragColor = packDepthToRGBA( dist );\n}",distanceRGBA_vert:"#define DISTANCE\nvarying vec3 vWorldPosition;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include \n\t\t#include \n\t\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvWorldPosition = worldPosition.xyz;\n}",equirect_frag:"uniform sampler2D tEquirect;\nvarying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvec3 direction = normalize( vWorldDirection );\n\tvec2 sampleUV;\n\tsampleUV.y = asin( clamp( direction.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n\tsampleUV.x = atan( direction.z, direction.x ) * RECIPROCAL_PI2 + 0.5;\n\tvec4 texColor = texture2D( tEquirect, sampleUV );\n\tgl_FragColor = mapTexelToLinear( texColor );\n\t#include \n\t#include \n}",equirect_vert:"varying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include \n\t#include \n}",linedashed_frag:"uniform vec3 diffuse;\nuniform float opacity;\nuniform float dashSize;\nuniform float totalSize;\nvarying float vLineDistance;\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\n\t\tdiscard;\n\t}\n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n}",linedashed_vert:"uniform float scale;\nattribute float lineDistance;\nvarying float vLineDistance;\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvLineDistance = scale * lineDistance;\n\tvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\n\tgl_Position = projectionMatrix * mvPosition;\n\t#include \n\t#include \n\t#include \n}",meshbasic_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\t#ifdef USE_LIGHTMAP\n\t\n\t\tvec4 lightMapTexel= texture2D( lightMap, vUv2 );\n\t\treflectedLight.indirectDiffuse += lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity;\n\t#else\n\t\treflectedLight.indirectDiffuse += vec3( 1.0 );\n\t#endif\n\t#include \n\treflectedLight.indirectDiffuse *= diffuseColor.rgb;\n\tvec3 outgoingLight = reflectedLight.indirectDiffuse;\n\t#include \n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n}",meshbasic_vert:"#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#ifdef USE_ENVMAP\n\t#include \n\t#include \n\t#include \n\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshlambert_frag:"uniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float opacity;\nvarying vec3 vLightFront;\nvarying vec3 vIndirectFront;\n#ifdef DOUBLE_SIDED\n\tvarying vec3 vLightBack;\n\tvarying vec3 vIndirectBack;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\treflectedLight.indirectDiffuse = getAmbientLightIrradiance( ambientLightColor );\n\t#ifdef DOUBLE_SIDED\n\t\treflectedLight.indirectDiffuse += ( gl_FrontFacing ) ? vIndirectFront : vIndirectBack;\n\t#else\n\t\treflectedLight.indirectDiffuse += vIndirectFront;\n\t#endif\n\t#include \n\treflectedLight.indirectDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb );\n\t#ifdef DOUBLE_SIDED\n\t\treflectedLight.directDiffuse = ( gl_FrontFacing ) ? vLightFront : vLightBack;\n\t#else\n\t\treflectedLight.directDiffuse = vLightFront;\n\t#endif\n\treflectedLight.directDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb ) * getShadowMask();\n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\n\t#include \n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshlambert_vert:"#define LAMBERT\nvarying vec3 vLightFront;\nvarying vec3 vIndirectFront;\n#ifdef DOUBLE_SIDED\n\tvarying vec3 vLightBack;\n\tvarying vec3 vIndirectBack;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshmatcap_frag:"#define MATCAP\nuniform vec3 diffuse;\nuniform float opacity;\nuniform sampler2D matcap;\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 viewDir = normalize( vViewPosition );\n\tvec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );\n\tvec3 y = cross( viewDir, x );\n\tvec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5;\n\t#ifdef USE_MATCAP\n\t\tvec4 matcapColor = texture2D( matcap, uv );\n\t\tmatcapColor = matcapTexelToLinear( matcapColor );\n\t#else\n\t\tvec4 matcapColor = vec4( 1.0 );\n\t#endif\n\tvec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n}",meshmatcap_vert:"#define MATCAP\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#ifndef FLAT_SHADED\n\t\tvNormal = normalize( transformedNormal );\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n}",meshtoon_frag:"#define TOON\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform vec3 specular;\nuniform float shininess;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshtoon_vert:"#define TOON\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n}",meshphong_frag:"#define PHONG\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform vec3 specular;\nuniform float shininess;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\n\t#include \n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshphong_vert:"#define PHONG\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n\t#include \n}",meshphysical_frag:"#define STANDARD\n#ifdef PHYSICAL\n\t#define REFLECTIVITY\n\t#define CLEARCOAT\n\t#define TRANSPARENCY\n#endif\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float roughness;\nuniform float metalness;\nuniform float opacity;\n#ifdef TRANSPARENCY\n\tuniform float transparency;\n#endif\n#ifdef REFLECTIVITY\n\tuniform float reflectivity;\n#endif\n#ifdef CLEARCOAT\n\tuniform float clearcoat;\n\tuniform float clearcoatRoughness;\n#endif\n#ifdef USE_SHEEN\n\tuniform vec3 sheen;\n#endif\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\n\t#ifdef TRANSPARENCY\n\t\tdiffuseColor.a *= saturate( 1. - transparency + linearToRelativeLuminance( reflectedLight.directSpecular + reflectedLight.indirectSpecular ) );\n\t#endif\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshphysical_vert:"#define STANDARD\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n\t#ifdef USE_TANGENT\n\t\tvTangent = normalize( transformedTangent );\n\t\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\n\t#endif\n#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n}",normal_frag:"#define NORMAL\nuniform float opacity;\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\n\tvarying vec3 vViewPosition;\n#endif\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\tgl_FragColor = vec4( packNormalToRGB( normal ), opacity );\n}",normal_vert:"#define NORMAL\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\n\tvarying vec3 vViewPosition;\n#endif\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n\t#ifdef USE_TANGENT\n\t\tvTangent = normalize( transformedTangent );\n\t\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\n\t#endif\n#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\n\tvViewPosition = - mvPosition.xyz;\n#endif\n}",points_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n}",points_vert:"uniform float size;\nuniform float scale;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\tgl_PointSize = size;\n\t#ifdef USE_SIZEATTENUATION\n\t\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\n\t\tif ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z );\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n}",shadow_frag:"uniform vec3 color;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\tgl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\n\t#include \n}",shadow_vert:"#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",sprite_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n}",sprite_vert:"uniform float rotation;\nuniform vec2 center;\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\n\tvec2 scale;\n\tscale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) );\n\tscale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) );\n\t#ifndef USE_SIZEATTENUATION\n\t\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\n\t\tif ( isPerspective ) scale *= - mvPosition.z;\n\t#endif\n\tvec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale;\n\tvec2 rotatedPosition;\n\trotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\n\trotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\n\tmvPosition.xy += rotatedPosition;\n\tgl_Position = projectionMatrix * mvPosition;\n\t#include \n\t#include \n\t#include \n}"},Ai={common:{diffuse:{value:new hr(15658734)},opacity:{value:1},map:{value:null},uvTransform:{value:new Gt},uv2Transform:{value:new Gt},alphaMap:{value:null}},specularmap:{specularMap:{value:null}},envmap:{envMap:{value:null},flipEnvMap:{value:-1},reflectivity:{value:1},refractionRatio:{value:.98},maxMipLevel:{value:0}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1}},emissivemap:{emissiveMap:{value:null}},bumpmap:{bumpMap:{value:null},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalScale:{value:new Ot(1,1)}},displacementmap:{displacementMap:{value:null},displacementScale:{value:1},displacementBias:{value:0}},roughnessmap:{roughnessMap:{value:null}},metalnessmap:{metalnessMap:{value:null}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new hr(16777215)}},lights:{ambientLightColor:{value:[]},lightProbe:{value:[]},directionalLights:{value:[],properties:{direction:{},color:{},shadow:{},shadowBias:{},shadowRadius:{},shadowMapSize:{}}},directionalShadowMap:{value:[]},directionalShadowMatrix:{value:[]},spotLights:{value:[],properties:{color:{},position:{},direction:{},distance:{},coneCos:{},penumbraCos:{},decay:{},shadow:{},shadowBias:{},shadowRadius:{},shadowMapSize:{}}},spotShadowMap:{value:[]},spotShadowMatrix:{value:[]},pointLights:{value:[],properties:{color:{},position:{},decay:{},distance:{},shadow:{},shadowBias:{},shadowRadius:{},shadowMapSize:{},shadowCameraNear:{},shadowCameraFar:{}}},pointShadowMap:{value:[]},pointShadowMatrix:{value:[]},hemisphereLights:{value:[],properties:{direction:{},skyColor:{},groundColor:{}}},rectAreaLights:{value:[],properties:{color:{},position:{},width:{},height:{}}}},points:{diffuse:{value:new hr(15658734)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},uvTransform:{value:new Gt}},sprite:{diffuse:{value:new hr(15658734)},opacity:{value:1},center:{value:new Ot(.5,.5)},rotation:{value:0},map:{value:null},alphaMap:{value:null},uvTransform:{value:new Gt}}},Li={basic:{uniforms:pi([Ai.common,Ai.specularmap,Ai.envmap,Ai.aomap,Ai.lightmap,Ai.fog]),vertexShader:Ei.meshbasic_vert,fragmentShader:Ei.meshbasic_frag},lambert:{uniforms:pi([Ai.common,Ai.specularmap,Ai.envmap,Ai.aomap,Ai.lightmap,Ai.emissivemap,Ai.fog,Ai.lights,{emissive:{value:new hr(0)}}]),vertexShader:Ei.meshlambert_vert,fragmentShader:Ei.meshlambert_frag},phong:{uniforms:pi([Ai.common,Ai.specularmap,Ai.envmap,Ai.aomap,Ai.lightmap,Ai.emissivemap,Ai.bumpmap,Ai.normalmap,Ai.displacementmap,Ai.fog,Ai.lights,{emissive:{value:new hr(0)},specular:{value:new hr(1118481)},shininess:{value:30}}]),vertexShader:Ei.meshphong_vert,fragmentShader:Ei.meshphong_frag},standard:{uniforms:pi([Ai.common,Ai.envmap,Ai.aomap,Ai.lightmap,Ai.emissivemap,Ai.bumpmap,Ai.normalmap,Ai.displacementmap,Ai.roughnessmap,Ai.metalnessmap,Ai.fog,Ai.lights,{emissive:{value:new hr(0)},roughness:{value:.5},metalness:{value:.5},envMapIntensity:{value:1}}]),vertexShader:Ei.meshphysical_vert,fragmentShader:Ei.meshphysical_frag},toon:{uniforms:pi([Ai.common,Ai.specularmap,Ai.aomap,Ai.lightmap,Ai.emissivemap,Ai.bumpmap,Ai.normalmap,Ai.displacementmap,Ai.gradientmap,Ai.fog,Ai.lights,{emissive:{value:new hr(0)},specular:{value:new hr(1118481)},shininess:{value:30}}]),vertexShader:Ei.meshtoon_vert,fragmentShader:Ei.meshtoon_frag},matcap:{uniforms:pi([Ai.common,Ai.bumpmap,Ai.normalmap,Ai.displacementmap,Ai.fog,{matcap:{value:null}}]),vertexShader:Ei.meshmatcap_vert,fragmentShader:Ei.meshmatcap_frag},points:{uniforms:pi([Ai.points,Ai.fog]),vertexShader:Ei.points_vert,fragmentShader:Ei.points_frag},dashed:{uniforms:pi([Ai.common,Ai.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:Ei.linedashed_vert,fragmentShader:Ei.linedashed_frag},depth:{uniforms:pi([Ai.common,Ai.displacementmap]),vertexShader:Ei.depth_vert,fragmentShader:Ei.depth_frag},normal:{uniforms:pi([Ai.common,Ai.bumpmap,Ai.normalmap,Ai.displacementmap,{opacity:{value:1}}]),vertexShader:Ei.normal_vert,fragmentShader:Ei.normal_frag},sprite:{uniforms:pi([Ai.sprite,Ai.fog]),vertexShader:Ei.sprite_vert,fragmentShader:Ei.sprite_frag},background:{uniforms:{uvTransform:{value:new Gt},t2D:{value:null}},vertexShader:Ei.background_vert,fragmentShader:Ei.background_frag},cube:{uniforms:pi([Ai.envmap,{opacity:{value:1}}]),vertexShader:Ei.cube_vert,fragmentShader:Ei.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:Ei.equirect_vert,fragmentShader:Ei.equirect_frag},distanceRGBA:{uniforms:pi([Ai.common,Ai.displacementmap,{referencePosition:{value:new Bt},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:Ei.distanceRGBA_vert,fragmentShader:Ei.distanceRGBA_frag},shadow:{uniforms:pi([Ai.lights,Ai.fog,{color:{value:new hr(0)},opacity:{value:1}}]),vertexShader:Ei.shadow_vert,fragmentShader:Ei.shadow_frag}};function Pi(){var e=null,t=!1,n=null;function r(i,a){!1!==t&&(n(i,a),e.requestAnimationFrame(r))}return{start:function(){!0!==t&&null!==n&&(e.requestAnimationFrame(r),t=!0)},stop:function(){t=!1},setAnimationLoop:function(e){n=e},setContext:function(t){e=t}}}function Ri(e){var t=new WeakMap;return{get:function(e){return e.isInterleavedBufferAttribute&&(e=e.data),t.get(e)},remove:function(n){n.isInterleavedBufferAttribute&&(n=n.data);var r=t.get(n);r&&(e.deleteBuffer(r.buffer),t.delete(n))},update:function(n,r){n.isInterleavedBufferAttribute&&(n=n.data);var i=t.get(n);void 0===i?t.set(n,function(t,n){var r=t.array,i=t.usage,a=e.createBuffer();e.bindBuffer(n,a),e.bufferData(n,r,i),t.onUploadCallback();var o=5126;return r instanceof Float32Array?o=5126:r instanceof Float64Array?console.warn("THREE.WebGLAttributes: Unsupported data buffer format: Float64Array."):r instanceof Uint16Array?o=5123:r instanceof Int16Array?o=5122:r instanceof Uint32Array?o=5125:r instanceof Int32Array?o=5124:r instanceof Int8Array?o=5120:r instanceof Uint8Array&&(o=5121),{buffer:a,type:o,bytesPerElement:r.BYTES_PER_ELEMENT,version:t.version}}(n,r)):i.version0&&e.getShaderPrecisionFormat(35632,36338).precision>0)return"highp";t="mediump"}return"mediump"===t&&e.getShaderPrecisionFormat(35633,36337).precision>0&&e.getShaderPrecisionFormat(35632,36337).precision>0?"mediump":"lowp"}var a="undefined"!=typeof WebGL2RenderingContext&&e instanceof WebGL2RenderingContext||"undefined"!=typeof WebGL2ComputeRenderingContext&&e instanceof WebGL2ComputeRenderingContext,o=void 0!==n.precision?n.precision:"highp",s=i(o);s!==o&&(console.warn("THREE.WebGLRenderer:",o,"not supported, using",s,"instead."),o=s);var c=!0===n.logarithmicDepthBuffer,l=e.getParameter(34930),h=e.getParameter(35660),u=e.getParameter(3379),p=e.getParameter(34076),d=e.getParameter(34921),f=e.getParameter(36347),m=e.getParameter(36348),v=e.getParameter(36349),g=h>0,y=a||!!t.get("OES_texture_float");return{isWebGL2:a,getMaxAnisotropy:function(){if(void 0!==r)return r;var n=t.get("EXT_texture_filter_anisotropic");return r=null!==n?e.getParameter(n.MAX_TEXTURE_MAX_ANISOTROPY_EXT):0},getMaxPrecision:i,precision:o,logarithmicDepthBuffer:c,maxTextures:l,maxVertexTextures:h,maxTextureSize:u,maxCubemapSize:p,maxAttributes:d,maxVertexUniforms:f,maxVaryings:m,maxFragmentUniforms:v,vertexTextures:g,floatFragmentTextures:y,floatVertexTextures:g&&y,maxSamples:a?e.getParameter(36183):0}}function zi(){var e=this,t=null,n=0,r=!1,i=!1,a=new Zn,o=new Gt,s={value:null,needsUpdate:!1};function c(){s.value!==t&&(s.value=t,s.needsUpdate=n>0),e.numPlanes=n,e.numIntersection=0}function l(t,n,r,i){var c=null!==t?t.length:0,l=null;if(0!==c){if(l=s.value,!0!==i||null===l){var h=r+4*c,u=n.matrixWorldInverse;o.getNormalMatrix(u),(null===l||l.length65535?Er:Sr)(n,1);d.version=o,t.update(d,34963);var f=i.get(e);f&&t.remove(f),i.set(e,d)}return{get:function(e,t){var i=r.get(t);return i||(t.addEventListener("dispose",a),t.isBufferGeometry?i=t:t.isGeometry&&(void 0===t._bufferGeometry&&(t._bufferGeometry=(new Fr).setFromObject(e)),i=t._bufferGeometry),r.set(t,i),n.memory.geometries++,i)},update:function(e){var n=e.index,r=e.attributes;for(var i in null!==n&&t.update(n,34963),r)t.update(r[i],34962);var a=e.morphAttributes;for(var i in a)for(var o=a[i],s=0,c=o.length;s0)return e;var i=t*n,a=Ki[i];if(void 0===a&&(a=new Float32Array(i),Ki[i]=a),0!==t){r.toArray(a,0);for(var o=1,s=0;o!==t;++o)s+=n,e[o].toArray(a,s)}return a}function ra(e,t){if(e.length!==t.length)return!1;for(var n=0,r=e.length;n/gm;function Ka(e){return e.replace(Ja,Qa)}function Qa(e,t){var n=Ei[t];if(void 0===n)throw new Error("Can not resolve #include <"+t+">");return Ka(n)}var $a=/#pragma unroll_loop[\s]+?for \( int i \= (\d+)\; i < (\d+)\; i \+\+ \) \{([\s\S]+?)(?=\})\}/g;function eo(e){return e.replace($a,to)}function to(e,t,n,r){for(var i="",a=parseInt(t);a0?e.gammaFactor:1,M=a.isWebGL2?"":function(e,t,n){return[(e=e||{}).derivatives||t.envMapCubeUV||t.bumpMap||t.tangentSpaceNormalMap||t.clearcoatNormalMap||t.flatShading||"physical"===t.shaderID?"#extension GL_OES_standard_derivatives : enable":"",(e.fragDepth||t.logarithmicDepthBuffer)&&n.get("EXT_frag_depth")?"#extension GL_EXT_frag_depth : enable":"",e.drawBuffers&&n.get("WEBGL_draw_buffers")?"#extension GL_EXT_draw_buffers : require":"",(e.shaderTextureLOD||t.envMap)&&n.get("EXT_shader_texture_lod")?"#extension GL_EXT_shader_texture_lod : enable":""].filter(Xa).join("\n")}(r.extensions,a,t),S=function(e){var t=[];for(var n in e){var r=e[n];!1!==r&&t.push("#define "+n+" "+r)}return t.join("\n")}(m),T=f.createProgram(),E=a.numMultiviewViews;if(r.isRawShaderMaterial?((l=[S].filter(Xa).join("\n")).length>0&&(l+="\n"),(h=[M,S].filter(Xa).join("\n")).length>0&&(h+="\n")):(l=[no(a),"#define SHADER_NAME "+i.name,S,a.instancing?"#define USE_INSTANCING":"",a.supportsVertexTextures?"#define VERTEX_TEXTURES":"","#define GAMMA_FACTOR "+_,"#define MAX_BONES "+a.maxBones,a.useFog&&a.fog?"#define USE_FOG":"",a.useFog&&a.fogExp2?"#define FOG_EXP2":"",a.map?"#define USE_MAP":"",a.envMap?"#define USE_ENVMAP":"",a.envMap?"#define "+b:"",a.lightMap?"#define USE_LIGHTMAP":"",a.aoMap?"#define USE_AOMAP":"",a.emissiveMap?"#define USE_EMISSIVEMAP":"",a.bumpMap?"#define USE_BUMPMAP":"",a.normalMap?"#define USE_NORMALMAP":"",a.normalMap&&a.objectSpaceNormalMap?"#define OBJECTSPACE_NORMALMAP":"",a.normalMap&&a.tangentSpaceNormalMap?"#define TANGENTSPACE_NORMALMAP":"",a.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",a.displacementMap&&a.supportsVertexTextures?"#define USE_DISPLACEMENTMAP":"",a.specularMap?"#define USE_SPECULARMAP":"",a.roughnessMap?"#define USE_ROUGHNESSMAP":"",a.metalnessMap?"#define USE_METALNESSMAP":"",a.alphaMap?"#define USE_ALPHAMAP":"",a.vertexTangents?"#define USE_TANGENT":"",a.vertexColors?"#define USE_COLOR":"",a.vertexUvs?"#define USE_UV":"",a.uvsVertexOnly?"#define UVS_VERTEX_ONLY":"",a.flatShading?"#define FLAT_SHADED":"",a.skinning?"#define USE_SKINNING":"",a.useVertexTexture?"#define BONE_TEXTURE":"",a.morphTargets?"#define USE_MORPHTARGETS":"",a.morphNormals&&!1===a.flatShading?"#define USE_MORPHNORMALS":"",a.doubleSided?"#define DOUBLE_SIDED":"",a.flipSided?"#define FLIP_SIDED":"",a.shadowMapEnabled?"#define USE_SHADOWMAP":"",a.shadowMapEnabled?"#define "+y:"",a.sizeAttenuation?"#define USE_SIZEATTENUATION":"",a.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",a.logarithmicDepthBuffer&&(a.isWebGL2||t.get("EXT_frag_depth"))?"#define USE_LOGDEPTHBUF_EXT":"","uniform mat4 modelMatrix;","uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform mat4 viewMatrix;","uniform mat3 normalMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;","#ifdef USE_INSTANCING"," attribute mat4 instanceMatrix;","#endif","attribute vec3 position;","attribute vec3 normal;","attribute vec2 uv;","#ifdef USE_TANGENT","\tattribute vec4 tangent;","#endif","#ifdef USE_COLOR","\tattribute vec3 color;","#endif","#ifdef USE_MORPHTARGETS","\tattribute vec3 morphTarget0;","\tattribute vec3 morphTarget1;","\tattribute vec3 morphTarget2;","\tattribute vec3 morphTarget3;","\t#ifdef USE_MORPHNORMALS","\t\tattribute vec3 morphNormal0;","\t\tattribute vec3 morphNormal1;","\t\tattribute vec3 morphNormal2;","\t\tattribute vec3 morphNormal3;","\t#else","\t\tattribute vec3 morphTarget4;","\t\tattribute vec3 morphTarget5;","\t\tattribute vec3 morphTarget6;","\t\tattribute vec3 morphTarget7;","\t#endif","#endif","#ifdef USE_SKINNING","\tattribute vec4 skinIndex;","\tattribute vec4 skinWeight;","#endif","\n"].filter(Xa).join("\n"),h=[M,no(a),"#define SHADER_NAME "+i.name,S,a.alphaTest?"#define ALPHATEST "+a.alphaTest+(a.alphaTest%1?"":".0"):"","#define GAMMA_FACTOR "+_,a.useFog&&a.fog?"#define USE_FOG":"",a.useFog&&a.fogExp2?"#define FOG_EXP2":"",a.map?"#define USE_MAP":"",a.matcap?"#define USE_MATCAP":"",a.envMap?"#define USE_ENVMAP":"",a.envMap?"#define "+x:"",a.envMap?"#define "+b:"",a.envMap?"#define "+w:"",a.lightMap?"#define USE_LIGHTMAP":"",a.aoMap?"#define USE_AOMAP":"",a.emissiveMap?"#define USE_EMISSIVEMAP":"",a.bumpMap?"#define USE_BUMPMAP":"",a.normalMap?"#define USE_NORMALMAP":"",a.normalMap&&a.objectSpaceNormalMap?"#define OBJECTSPACE_NORMALMAP":"",a.normalMap&&a.tangentSpaceNormalMap?"#define TANGENTSPACE_NORMALMAP":"",a.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",a.specularMap?"#define USE_SPECULARMAP":"",a.roughnessMap?"#define USE_ROUGHNESSMAP":"",a.metalnessMap?"#define USE_METALNESSMAP":"",a.alphaMap?"#define USE_ALPHAMAP":"",a.sheen?"#define USE_SHEEN":"",a.vertexTangents?"#define USE_TANGENT":"",a.vertexColors?"#define USE_COLOR":"",a.vertexUvs?"#define USE_UV":"",a.uvsVertexOnly?"#define UVS_VERTEX_ONLY":"",a.gradientMap?"#define USE_GRADIENTMAP":"",a.flatShading?"#define FLAT_SHADED":"",a.doubleSided?"#define DOUBLE_SIDED":"",a.flipSided?"#define FLIP_SIDED":"",a.shadowMapEnabled?"#define USE_SHADOWMAP":"",a.shadowMapEnabled?"#define "+y:"",a.premultipliedAlpha?"#define PREMULTIPLIED_ALPHA":"",a.physicallyCorrectLights?"#define PHYSICALLY_CORRECT_LIGHTS":"",a.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",a.logarithmicDepthBuffer&&(a.isWebGL2||t.get("EXT_frag_depth"))?"#define USE_LOGDEPTHBUF_EXT":"",(r.extensions&&r.extensions.shaderTextureLOD||a.envMap)&&(a.isWebGL2||t.get("EXT_shader_texture_lod"))?"#define TEXTURE_LOD_EXT":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;",a.toneMapping!==Y?"#define TONE_MAPPING":"",a.toneMapping!==Y?Ei.tonemapping_pars_fragment:"",a.toneMapping!==Y?qa("toneMapping",a.toneMapping):"",a.dithering?"#define DITHERING":"",a.outputEncoding||a.mapEncoding||a.matcapEncoding||a.envMapEncoding||a.emissiveMapEncoding||a.lightMapEncoding?Ei.encodings_pars_fragment:"",a.mapEncoding?Wa("mapTexelToLinear",a.mapEncoding):"",a.matcapEncoding?Wa("matcapTexelToLinear",a.matcapEncoding):"",a.envMapEncoding?Wa("envMapTexelToLinear",a.envMapEncoding):"",a.emissiveMapEncoding?Wa("emissiveMapTexelToLinear",a.emissiveMapEncoding):"",a.lightMapEncoding?Wa("lightMapTexelToLinear",a.lightMapEncoding):"",a.outputEncoding?(u="linearToOutputTexel",p=a.outputEncoding,d=Va(p),"vec4 "+u+"( vec4 value ) { return LinearTo"+d[0]+d[1]+"; }"):"",a.depthPacking?"#define DEPTH_PACKING "+r.depthPacking:"","\n"].filter(Xa).join("\n")),v=Za(v=Ya(v=Ka(v),a),a),g=Za(g=Ya(g=Ka(g),a),a),v=eo(v),g=eo(g),a.isWebGL2&&!r.isRawShaderMaterial){var A=!1,L=/^\s*#version\s+300\s+es\s*\n/;r.isShaderMaterial&&null!==v.match(L)&&null!==g.match(L)&&(A=!0,v=v.replace(L,""),g=g.replace(L,"")),l=["#version 300 es\n","#define attribute in","#define varying out","#define texture2D texture"].join("\n")+"\n"+l,h=["#version 300 es\n","#define varying in",A?"":"out highp vec4 pc_fragColor;",A?"":"#define gl_FragColor pc_fragColor","#define gl_FragDepthEXT gl_FragDepth","#define texture2D texture","#define textureCube texture","#define texture2DProj textureProj","#define texture2DLodEXT textureLod","#define texture2DProjLodEXT textureProjLod","#define textureCubeLodEXT textureLod","#define texture2DGradEXT textureGrad","#define texture2DProjGradEXT textureProjGrad","#define textureCubeGradEXT textureGrad"].join("\n")+"\n"+h,E>0&&(l=(l=l.replace("#version 300 es\n",["#version 300 es\n","#extension GL_OVR_multiview2 : require","layout(num_views = "+E+") in;","#define VIEW_ID gl_ViewID_OVR"].join("\n"))).replace(["uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform mat4 viewMatrix;","uniform mat3 normalMatrix;"].join("\n"),["uniform mat4 modelViewMatrices["+E+"];","uniform mat4 projectionMatrices["+E+"];","uniform mat4 viewMatrices["+E+"];","uniform mat3 normalMatrices["+E+"];","#define modelViewMatrix modelViewMatrices[VIEW_ID]","#define projectionMatrix projectionMatrices[VIEW_ID]","#define viewMatrix viewMatrices[VIEW_ID]","#define normalMatrix normalMatrices[VIEW_ID]"].join("\n")),h=(h=h.replace("#version 300 es\n",["#version 300 es\n","#extension GL_OVR_multiview2 : require","#define VIEW_ID gl_ViewID_OVR"].join("\n"))).replace("uniform mat4 viewMatrix;",["uniform mat4 viewMatrices["+E+"];","#define viewMatrix viewMatrices[VIEW_ID]"].join("\n")))}var P,R,C=h+g,I=Ha(f,35633,l+v),O=Ha(f,35632,C);if(f.attachShader(T,I),f.attachShader(T,O),void 0!==r.index0AttributeName?f.bindAttribLocation(T,0,r.index0AttributeName):!0===a.morphTargets&&f.bindAttribLocation(T,0,"position"),f.linkProgram(T),e.debug.checkShaderErrors){var D=f.getProgramInfoLog(T).trim(),N=f.getShaderInfoLog(I).trim(),z=f.getShaderInfoLog(O).trim(),B=!0,F=!0;if(!1===f.getProgramParameter(T,35714)){B=!1;var U=ja(f,I,"vertex"),G=ja(f,O,"fragment");console.error("THREE.WebGLProgram: shader error: ",f.getError(),"35715",f.getProgramParameter(T,35715),"gl.getProgramInfoLog",D,U,G)}else""!==D?console.warn("THREE.WebGLProgram: gl.getProgramInfoLog()",D):""!==N&&""!==z||(F=!1);F&&(this.diagnostics={runnable:B,material:r,programLog:D,vertexShader:{log:N,prefix:l},fragmentShader:{log:z,prefix:h}})}return f.deleteShader(I),f.deleteShader(O),this.getUniforms=function(){return void 0===P&&(P=new Ga(f,T)),P},this.getAttributes=function(){return void 0===R&&(R=function(e,t){for(var n={},r=e.getProgramParameter(t,35721),i=0;i0,maxBones:M,useVertexTexture:o,morphTargets:t.morphTargets,morphNormals:t.morphNormals,maxMorphTargets:e.maxMorphTargets,maxMorphNormals:e.maxMorphNormals,numDirLights:r.directional.length,numPointLights:r.point.length,numSpotLights:r.spot.length,numRectAreaLights:r.rectArea.length,numHemiLights:r.hemi.length,numDirLightShadows:r.directionalShadowMap.length,numPointLightShadows:r.pointShadowMap.length,numSpotLightShadows:r.spotShadowMap.length,numClippingPlanes:v,numClipIntersection:g,dithering:t.dithering,shadowMapEnabled:e.shadowMap.enabled&&d.length>0,shadowMapType:e.shadowMap.type,toneMapping:t.toneMapped?e.toneMapping:Y,physicallyCorrectLights:e.physicallyCorrectLights,premultipliedAlpha:t.premultipliedAlpha,alphaTest:t.alphaTest,doubleSided:t.side===u,flipSided:t.side===h,depthPacking:void 0!==t.depthPacking&&t.depthPacking}},this.getProgramCacheKey=function(t,n){var r=[];if(n.shaderID?r.push(n.shaderID):(r.push(t.fragmentShader),r.push(t.vertexShader)),void 0!==t.defines)for(var i in t.defines)r.push(i),r.push(t.defines[i]);if(void 0===t.isRawShaderMaterial){for(var a=0;a1&&n.sort(e||oo),r.length>1&&r.sort(t||so)}}}function lo(){var e=new WeakMap;function t(n){var r=n.target;r.removeEventListener("dispose",t),e.delete(r)}return{get:function(n,r){var i,a=e.get(n);return void 0===a?(i=new co,e.set(n,new WeakMap),e.get(n).set(r,i),n.addEventListener("dispose",t)):void 0===(i=a.get(r))&&(i=new co,a.set(r,i)),i},dispose:function(){e=new WeakMap}}}function ho(){var e={};return{get:function(t){if(void 0!==e[t.id])return e[t.id];var n;switch(t.type){case"DirectionalLight":n={direction:new Bt,color:new hr,shadow:!1,shadowBias:0,shadowRadius:1,shadowMapSize:new Ot};break;case"SpotLight":n={position:new Bt,direction:new Bt,color:new hr,distance:0,coneCos:0,penumbraCos:0,decay:0,shadow:!1,shadowBias:0,shadowRadius:1,shadowMapSize:new Ot};break;case"PointLight":n={position:new Bt,color:new hr,distance:0,decay:0,shadow:!1,shadowBias:0,shadowRadius:1,shadowMapSize:new Ot,shadowCameraNear:1,shadowCameraFar:1e3};break;case"HemisphereLight":n={direction:new Bt,skyColor:new hr,groundColor:new hr};break;case"RectAreaLight":n={color:new hr,position:new Bt,halfWidth:new Bt,halfHeight:new Bt}}return e[t.id]=n,n}}}var uo=0;function po(e,t){return(t.castShadow?1:0)-(e.castShadow?1:0)}function fo(){for(var e=new ho,t={version:0,hash:{directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1},ambient:[0,0,0],probe:[],directional:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotShadowMap:[],spotShadowMatrix:[],rectArea:[],point:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[],numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1},n=0;n<9;n++)t.probe.push(new Bt);var r=new Bt,i=new en,a=new en;return{setup:function(n,o,s){for(var c=0,l=0,h=0,u=0;u<9;u++)t.probe[u].set(0,0,0);var p=0,d=0,f=0,m=0,v=0,g=0,y=0,x=0,b=s.matrixWorldInverse;n.sort(po),u=0;for(var w=n.length;u0:!0===s.isGeometry&&(p=s.morphTargets&&s.morphTargets.length>0));var d=!1;!0===t.isSkinnedMesh&&(!0===n.skinning?d=!0:console.warn("THREE.WebGLShadowMap: THREE.SkinnedMesh with material.skinning set to false:",t)),l=h(p,d,!0===t.isInstancedMesh)}else l=u;if(e.localClippingEnabled&&!0===n.clipShadows&&0!==n.clippingPlanes.length){var m=l.uuid,g=n.uuid,y=f[m];void 0===y&&(y={},f[m]=y);var x=y[g];void 0===x&&(x=l.clone(),y[g]=x),l=x}return l.visible=n.visible,l.wireframe=n.wireframe,l.side=o===c?null!==n.shadowSide?n.shadowSide:n.side:null!==n.shadowSide?n.shadowSide:v[n.side],l.clipShadows=n.clipShadows,l.clippingPlanes=n.clippingPlanes,l.clipIntersection=n.clipIntersection,l.wireframeLinewidth=n.wireframeLinewidth,l.linewidth=n.linewidth,!0===r.isPointLight&&!0===l.isMeshDistanceMaterial&&(l.referencePosition.setFromMatrixPosition(r.matrixWorld),l.nearDistance=i,l.farDistance=a),l}function E(n,i,a,o,s){if(!1!==n.visible){if(n.layers.test(i.layers)&&(n.isMesh||n.isLine||n.isPoints)&&(n.castShadow||n.receiveShadow&&s===c)&&(!n.frustumCulled||r.intersectsObject(n))){n.modelViewMatrix.multiplyMatrices(a.matrixWorldInverse,n.matrixWorld);var l=t.update(n),h=n.material;if(Array.isArray(h))for(var u=l.groups,p=0,d=u.length;pn||i.y>n)&&(console.warn("THREE.WebGLShadowMap:",g,"has shadow exceeding max texture size, reducing"),i.x>n&&(a.x=Math.floor(n/x.x),i.x=a.x*x.x,y.mapSize.x=a.x),i.y>n&&(a.y=Math.floor(n/x.y),i.y=a.y*x.y,y.mapSize.y=a.y)),null===y.map&&!y.isPointLightShadow&&this.type===c){var b={minFilter:de,magFilter:de,format:Re};y.map=new Wt(i.x,i.y,b),y.map.texture.name=g.name+".shadowMap",y.mapPass=new Wt(i.x,i.y,b),y.camera.updateProjectionMatrix()}if(null===y.map){b={minFilter:he,magFilter:he,format:Re};y.map=new Wt(i.x,i.y,b),y.map.texture.name=g.name+".shadowMap",y.camera.updateProjectionMatrix()}e.setRenderTarget(y.map),e.clear();for(var M=y.getViewportCount(),S=0;S=1):-1!==ue.indexOf("OpenGL ES")&&(he=parseFloat(/^OpenGL\ ES\ ([0-9])/.exec(ue)[1]),le=he>=2);var pe=null,de={},fe=new jt,me=new jt;function ve(t,n,r){var i=new Uint8Array(4),a=e.createTexture();e.bindTexture(t,a),e.texParameteri(t,10241,9728),e.texParameteri(t,10240,9728);for(var o=0;or||e.height>r)&&(i=r/Math.max(e.width,e.height)),i<1||!0===t){if("undefined"!=typeof HTMLImageElement&&e instanceof HTMLImageElement||"undefined"!=typeof HTMLCanvasElement&&e instanceof HTMLCanvasElement||"undefined"!=typeof ImageBitmap&&e instanceof ImageBitmap){var a=t?It.floorPowerOfTwo:Math.floor,o=a(i*e.width),c=a(i*e.height);void 0===s&&(s=m(o,c));var l=n?m(o,c):s;return l.width=o,l.height=c,l.getContext("2d").drawImage(e,0,0,o,c),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+e.width+"x"+e.height+") to ("+o+"x"+c+")."),l}return"data"in e&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+e.width+"x"+e.height+")."),e}return e}function g(e){return It.isPowerOfTwo(e.width)&&It.isPowerOfTwo(e.height)}function y(e,t){return e.generateMipmaps&&t&&e.minFilter!==he&&e.minFilter!==de}function x(t,n,i,a){e.generateMipmap(t),r.get(n).__maxMipLevel=Math.log(Math.max(i,a))*Math.LOG2E}function b(n,r,i){if(!1===c)return r;if(null!==n){if(void 0!==e[n])return e[n];console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '"+n+"'")}var a=r;return 6403===r&&(5126===i&&(a=33326),5131===i&&(a=33325),5121===i&&(a=33321)),6407===r&&(5126===i&&(a=34837),5131===i&&(a=34843),5121===i&&(a=32849)),6408===r&&(5126===i&&(a=34836),5131===i&&(a=34842),5121===i&&(a=32856)),33325===a||33326===a||34842===a||34836===a?t.get("EXT_color_buffer_float"):34843!==a&&34837!==a||console.warn("THREE.WebGLRenderer: Floating point textures with RGB format not supported. Please use RGBA instead."),a}function w(e){return e===he||e===ue||e===pe?9728:9729}function _(t){var n=t.target;n.removeEventListener("dispose",_),function(t){var n=r.get(t);if(void 0===n.__webglInit)return;e.deleteTexture(n.__webglTexture),r.remove(t)}(n),n.isVideoTexture&&d.delete(n),o.memory.textures--}function M(t){var n=t.target;n.removeEventListener("dispose",M),function(t){var n=r.get(t),i=r.get(t.texture);if(!t)return;void 0!==i.__webglTexture&&e.deleteTexture(i.__webglTexture);t.depthTexture&&t.depthTexture.dispose();if(t.isWebGLRenderTargetCube)for(var a=0;a<6;a++)e.deleteFramebuffer(n.__webglFramebuffer[a]),n.__webglDepthbuffer&&e.deleteRenderbuffer(n.__webglDepthbuffer[a]);else e.deleteFramebuffer(n.__webglFramebuffer),n.__webglDepthbuffer&&e.deleteRenderbuffer(n.__webglDepthbuffer);if(t.isWebGLMultiviewRenderTarget){e.deleteTexture(n.__webglColorTexture),e.deleteTexture(n.__webglDepthStencilTexture),o.memory.textures-=2;a=0;for(var s=n.__webglViewFramebuffers.length;a0&&i.__version!==e.version){var a=e.image;if(void 0===a)console.warn("THREE.WebGLRenderer: Texture marked for update but image is undefined");else{if(!1!==a.complete)return void I(i,e,t);console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete")}}n.activeTexture(33984+t),n.bindTexture(3553,i.__webglTexture)}function E(t,i){if(6===t.image.length){var o=r.get(t);if(t.version>0&&o.__version!==t.version){C(o,t),n.activeTexture(33984+i),n.bindTexture(34067,o.__webglTexture),e.pixelStorei(37440,t.flipY);for(var s=t&&t.isCompressedTexture,l=t.image[0]&&t.image[0].isDataTexture,u=[],p=0;p<6;p++)u[p]=s||l?l?t.image[p].image:t.image[p]:v(t.image[p],!1,!0,h);var d,f=u[0],m=g(f)||c,w=a.convert(t.format),_=a.convert(t.type),M=b(t.internalFormat,w,_);if(R(34067,t,m),s){for(p=0;p<6;p++){d=u[p].mipmaps;for(var S=0;S1||r.get(a).__currentAnisotropy)&&(e.texParameterf(n,s.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(a.anisotropy,i.getMaxAnisotropy())),r.get(a).__currentAnisotropy=a.anisotropy)}}function C(t,n){void 0===t.__webglInit&&(t.__webglInit=!0,n.addEventListener("dispose",_),t.__webglTexture=e.createTexture(),o.memory.textures++)}function I(t,r,i){var o=3553;r.isDataTexture2DArray&&(o=35866),r.isDataTexture3D&&(o=32879),C(t,r),n.activeTexture(33984+i),n.bindTexture(o,t.__webglTexture),e.pixelStorei(37440,r.flipY),e.pixelStorei(37441,r.premultiplyAlpha),e.pixelStorei(3317,r.unpackAlignment);var s=function(e){return!c&&(e.wrapS!==ce||e.wrapT!==ce||e.minFilter!==he&&e.minFilter!==de)}(r)&&!1===g(r.image),l=v(r.image,s,!1,u),h=g(l)||c,p=a.convert(r.format),d=a.convert(r.type),f=b(r.internalFormat,p,d);R(o,r,h);var m,w=r.mipmaps;if(r.isDepthTexture){if(f=6402,r.type===_e){if(!1===c)throw new Error("Float Depth Texture only supported in WebGL2.0");f=36012}else c&&(f=33189);r.format===De&&6402===f&&r.type!==xe&&r.type!==we&&(console.warn("THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture."),r.type=xe,d=a.convert(r.type)),r.format===Ne&&(f=34041,r.type!==Ae&&(console.warn("THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture."),r.type=Ae,d=a.convert(r.type))),n.texImage2D(3553,0,f,l.width,l.height,0,p,d,null)}else if(r.isDataTexture)if(w.length>0&&h){for(var _=0,M=w.length;_0&&h){for(_=0,M=w.length;_=l&&console.warn("THREE.WebGLTextures: Trying to use "+e+" texture units while this GPU supports only "+l),S+=1,e},this.resetTextureUnits=function(){S=0},this.setTexture2D=T,this.setTexture2DArray=function(e,t){var i=r.get(e);e.version>0&&i.__version!==e.version?I(i,e,t):(n.activeTexture(33984+t),n.bindTexture(35866,i.__webglTexture))},this.setTexture3D=function(e,t){var i=r.get(e);e.version>0&&i.__version!==e.version?I(i,e,t):(n.activeTexture(33984+t),n.bindTexture(32879,i.__webglTexture))},this.setTextureCube=E,this.setTextureCubeDynamic=A,this.setupRenderTarget=function(i){var s=r.get(i),l=r.get(i.texture);i.addEventListener("dispose",M),l.__webglTexture=e.createTexture(),o.memory.textures++;var h=!0===i.isWebGLRenderTargetCube,u=!0===i.isWebGLMultisampleRenderTarget,p=!0===i.isWebGLMultiviewRenderTarget,d=g(i)||c;if(h){s.__webglFramebuffer=[];for(var f=0;f<6;f++)s.__webglFramebuffer[f]=e.createFramebuffer()}else if(s.__webglFramebuffer=e.createFramebuffer(),u)if(c){s.__webglMultisampledFramebuffer=e.createFramebuffer(),s.__webglColorRenderbuffer=e.createRenderbuffer(),e.bindRenderbuffer(36161,s.__webglColorRenderbuffer);var m=a.convert(i.texture.format),v=a.convert(i.texture.type),w=b(i.texture.internalFormat,m,v),_=z(i);e.renderbufferStorageMultisample(36161,_,w,i.width,i.height),e.bindFramebuffer(36160,s.__webglMultisampledFramebuffer),e.framebufferRenderbuffer(36160,36064,36161,s.__webglColorRenderbuffer),e.bindRenderbuffer(36161,null),i.depthBuffer&&(s.__webglDepthRenderbuffer=e.createRenderbuffer(),D(s.__webglDepthRenderbuffer,i,!0)),e.bindFramebuffer(36160,null)}else console.warn("THREE.WebGLRenderer: WebGLMultisampleRenderTarget can only be used with WebGL2.");else if(p){var S=i.width,T=i.height,E=i.numViews;e.bindFramebuffer(36160,s.__webglFramebuffer);var A=t.get("OVR_multiview2");o.memory.textures+=2;var L=e.createTexture();e.bindTexture(35866,L),e.texParameteri(35866,10240,9728),e.texParameteri(35866,10241,9728),e.texImage3D(35866,0,32856,S,T,E,0,6408,5121,null),A.framebufferTextureMultiviewOVR(36160,36064,L,0,0,E);var P=e.createTexture();e.bindTexture(35866,P),e.texParameteri(35866,10240,9728),e.texParameteri(35866,10241,9728),e.texImage3D(35866,0,35056,S,T,E,0,34041,34042,null),A.framebufferTextureMultiviewOVR(36160,33306,P,0,0,E);var C=new Array(E);for(f=0;fp)return!1;for(var n=1,r=t.length;n=0){var l=i[s];if(void 0!==l){var h=l.normalized,u=l.itemSize;if(void 0===(M=w.get(l)))continue;var p=M.buffer,d=M.type,y=M.bytesPerElement;if(l.isInterleavedBufferAttribute){var x=l.data,b=x.stride,_=l.offset;x&&x.isInstancedInterleavedBuffer?(g.enableAttributeAndDivisor(c,x.meshPerAttribute),void 0===t.maxInstancedCount&&(t.maxInstancedCount=x.meshPerAttribute*x.count)):g.enableAttribute(c),f.bindBuffer(34962,p),f.vertexAttribPointer(c,u,d,h,b*y,_*y)}else l.isInstancedBufferAttribute?(g.enableAttributeAndDivisor(c,l.meshPerAttribute),void 0===t.maxInstancedCount&&(t.maxInstancedCount=l.meshPerAttribute*l.count)):g.enableAttribute(c),f.bindBuffer(34962,p),f.vertexAttribPointer(c,u,d,h,0,0)}else if("instanceMatrix"===s){var M;if(void 0===(M=w.get(e.instanceMatrix)))continue;p=M.buffer,d=M.type;g.enableAttributeAndDivisor(c+0,1),g.enableAttributeAndDivisor(c+1,1),g.enableAttributeAndDivisor(c+2,1),g.enableAttributeAndDivisor(c+3,1),f.bindBuffer(34962,p),f.vertexAttribPointer(c+0,4,d,!1,64,0),f.vertexAttribPointer(c+1,4,d,!1,64,16),f.vertexAttribPointer(c+2,4,d,!1,64,32),f.vertexAttribPointer(c+3,4,d,!1,64,48)}else if(void 0!==o){var S=o[s];if(void 0!==S)switch(S.length){case 2:f.vertexAttrib2fv(c,S);break;case 3:f.vertexAttrib3fv(c,S);break;case 4:f.vertexAttrib4fv(c,S);break;default:f.vertexAttrib1fv(c,S)}}}}g.disableUnusedAttributes()}(i,n,r,s),null!==l&&f.bindBuffer(34963,u.buffer));var y=null!==l?l.count:h.count,x=n.drawRange.start*p,b=n.drawRange.count*p,M=null!==a?a.start*p:0,S=null!==a?a.count*p:1/0,T=Math.max(x,M),E=Math.min(y,x+b,M+S)-1,A=Math.max(0,E-T+1);if(0!==A){if(i.isMesh)!0===r.wireframe?(g.setLineWidth(r.wireframeLinewidth*se()),d.setMode(1)):d.setMode(4);else if(i.isLine){var C=r.linewidth;void 0===C&&(C=1),g.setLineWidth(C*se()),i.isLineSegments?d.setMode(1):i.isLineLoop?d.setMode(2):d.setMode(3)}else i.isPoints?d.setMode(0):i.isSprite&&d.setMode(4);i.isInstancedMesh?d.renderInstances(n,T,A,i.count):n.isInstancedBufferGeometry?d.renderInstances(n,T,A,n.maxInstancedCount):d.render(T,A)}},this.compile=function(e,t){(d=E.get(e,t)).init(),e.traverse((function(e){e.isLight&&(d.pushLight(e),e.castShadow&&d.pushShadow(e))})),d.setupLights(t),e.traverse((function(t){if(t.material)if(Array.isArray(t.material))for(var n=0;n=0&&e.numSupportedMorphTargets++}if(e.morphNormals){e.numSupportedMorphNormals=0;for(f=0;f=0&&e.numSupportedMorphNormals++}var m=r.shader.uniforms;(e.isShaderMaterial||e.isRawShaderMaterial)&&!0!==e.clipping||(r.numClippingPlanes=ne.numPlanes,r.numIntersection=ne.numIntersection,m.clippingPlanes=ne.uniform),r.fog=t.fog,r.needsLights=function(e){return e.isMeshLambertMaterial||e.isMeshToonMaterial||e.isMeshPhongMaterial||e.isMeshStandardMaterial||e.isShadowMaterial||e.isShaderMaterial&&!0===e.lights}(e),r.lightsStateVersion=o,r.needsLights&&(m.ambientLightColor.value=i.state.ambient,m.lightProbe.value=i.state.probe,m.directionalLights.value=i.state.directional,m.spotLights.value=i.state.spot,m.rectAreaLights.value=i.state.rectArea,m.pointLights.value=i.state.point,m.hemisphereLights.value=i.state.hemi,m.directionalShadowMap.value=i.state.directionalShadowMap,m.directionalShadowMatrix.value=i.state.directionalShadowMatrix,m.spotShadowMap.value=i.state.spotShadowMap,m.spotShadowMatrix.value=i.state.spotShadowMatrix,m.pointShadowMap.value=i.state.pointShadowMap,m.pointShadowMatrix.value=i.state.pointShadowMatrix);var v=r.program.getUniforms(),g=Ga.seqWithValue(v.seq,m);r.uniformsList=g}function Ae(e,t,n,r){b.resetTextureUnits();var i=t.fog,a=n.isMeshStandardMaterial?t.environment:null,o=x.get(n),s=d.state.lights;if(re&&(ie||e!==H)){var c=e===H&&n.id===U;ne.setState(n.clippingPlanes,n.clipIntersection,n.clipShadows,e,o,c)}n.version===o.__version&&(void 0===o.program?n.needsUpdate=!0:n.fog&&o.fog!==i?n.needsUpdate=!0:o.environment!==a?n.needsUpdate=!0:o.needsLights&&o.lightsStateVersion!==s.state.version?n.needsUpdate=!0:void 0===o.numClippingPlanes||o.numClippingPlanes===ne.numPlanes&&o.numIntersection===ne.numIntersection?o.outputEncoding!==I.outputEncoding&&(n.needsUpdate=!0):n.needsUpdate=!0),n.version!==o.__version&&(Ee(n,t,r),o.__version=n.version);var l,u,p=!1,m=!1,y=!1,w=o.program,_=w.getUniforms(),M=o.shader.uniforms;if(g.useProgram(w.program)&&(p=!0,m=!0,y=!0),n.id!==U&&(U=n.id,m=!0),p||H!==e){if(w.numMultiviewViews>0?ue.updateCameraProjectionMatricesUniform(e,_):_.setValue(f,"projectionMatrix",e.projectionMatrix),v.logarithmicDepthBuffer&&_.setValue(f,"logDepthBufFC",2/(Math.log(e.far+1)/Math.LN2)),H!==e&&(H=e,m=!0,y=!0),n.isShaderMaterial||n.isMeshPhongMaterial||n.isMeshToonMaterial||n.isMeshStandardMaterial||n.envMap){var S=_.map.cameraPosition;void 0!==S&&S.setValue(f,oe.setFromMatrixPosition(e.matrixWorld))}(n.isMeshPhongMaterial||n.isMeshToonMaterial||n.isMeshLambertMaterial||n.isMeshBasicMaterial||n.isMeshStandardMaterial||n.isShaderMaterial)&&_.setValue(f,"isOrthographic",!0===e.isOrthographicCamera),(n.isMeshPhongMaterial||n.isMeshToonMaterial||n.isMeshLambertMaterial||n.isMeshBasicMaterial||n.isMeshStandardMaterial||n.isShaderMaterial||n.skinning)&&(w.numMultiviewViews>0?ue.updateCameraViewMatricesUniform(e,_):_.setValue(f,"viewMatrix",e.matrixWorldInverse))}if(n.skinning){_.setOptional(f,r,"bindMatrix"),_.setOptional(f,r,"bindMatrixInverse");var T=r.skeleton;if(T){var E=T.bones;if(v.floatVertexTextures){if(void 0===T.boneTexture){var A=Math.sqrt(4*E.length);A=It.ceilPowerOfTwo(A),A=Math.max(A,4);var L=new Float32Array(A*A*4);L.set(T.boneMatrices);var P=new _i(L,A,A,Re,_e);T.boneMatrices=L,T.boneTexture=P,T.boneTextureSize=A}_.setValue(f,"boneTexture",T.boneTexture,b),_.setValue(f,"boneTextureSize",T.boneTextureSize)}else _.setOptional(f,T,"boneMatrices")}}return(m||o.receiveShadow!==r.receiveShadow)&&(o.receiveShadow=r.receiveShadow,_.setValue(f,"receiveShadow",r.receiveShadow)),m&&(_.setValue(f,"toneMappingExposure",I.toneMappingExposure),_.setValue(f,"toneMappingWhitePoint",I.toneMappingWhitePoint),o.needsLights&&(u=y,(l=M).ambientLightColor.needsUpdate=u,l.lightProbe.needsUpdate=u,l.directionalLights.needsUpdate=u,l.pointLights.needsUpdate=u,l.spotLights.needsUpdate=u,l.rectAreaLights.needsUpdate=u,l.hemisphereLights.needsUpdate=u),i&&n.fog&&function(e,t){e.fogColor.value.copy(t.color),t.isFog?(e.fogNear.value=t.near,e.fogFar.value=t.far):t.isFogExp2&&(e.fogDensity.value=t.density)}(M,i),n.isMeshBasicMaterial?Le(M,n):n.isMeshLambertMaterial?(Le(M,n),function(e,t){t.emissiveMap&&(e.emissiveMap.value=t.emissiveMap)}(M,n)):n.isMeshToonMaterial?(Le(M,n),function(e,t){e.specular.value.copy(t.specular),e.shininess.value=Math.max(t.shininess,1e-4),t.gradientMap&&(e.gradientMap.value=t.gradientMap);t.emissiveMap&&(e.emissiveMap.value=t.emissiveMap);t.bumpMap&&(e.bumpMap.value=t.bumpMap,e.bumpScale.value=t.bumpScale,t.side===h&&(e.bumpScale.value*=-1));t.normalMap&&(e.normalMap.value=t.normalMap,e.normalScale.value.copy(t.normalScale),t.side===h&&e.normalScale.value.negate());t.displacementMap&&(e.displacementMap.value=t.displacementMap,e.displacementScale.value=t.displacementScale,e.displacementBias.value=t.displacementBias)}(M,n)):n.isMeshPhongMaterial?(Le(M,n),function(e,t){e.specular.value.copy(t.specular),e.shininess.value=Math.max(t.shininess,1e-4),t.emissiveMap&&(e.emissiveMap.value=t.emissiveMap);t.bumpMap&&(e.bumpMap.value=t.bumpMap,e.bumpScale.value=t.bumpScale,t.side===h&&(e.bumpScale.value*=-1));t.normalMap&&(e.normalMap.value=t.normalMap,e.normalScale.value.copy(t.normalScale),t.side===h&&e.normalScale.value.negate());t.displacementMap&&(e.displacementMap.value=t.displacementMap,e.displacementScale.value=t.displacementScale,e.displacementBias.value=t.displacementBias)}(M,n)):n.isMeshStandardMaterial?(Le(M,n,a),n.isMeshPhysicalMaterial?function(e,t,n){Pe(e,t,n),e.reflectivity.value=t.reflectivity,e.clearcoat.value=t.clearcoat,e.clearcoatRoughness.value=t.clearcoatRoughness,t.sheen&&e.sheen.value.copy(t.sheen);t.clearcoatNormalMap&&(e.clearcoatNormalScale.value.copy(t.clearcoatNormalScale),e.clearcoatNormalMap.value=t.clearcoatNormalMap,t.side===h&&e.clearcoatNormalScale.value.negate());e.transparency.value=t.transparency}(M,n,a):Pe(M,n,a)):n.isMeshMatcapMaterial?(Le(M,n),function(e,t){t.matcap&&(e.matcap.value=t.matcap);t.bumpMap&&(e.bumpMap.value=t.bumpMap,e.bumpScale.value=t.bumpScale,t.side===h&&(e.bumpScale.value*=-1));t.normalMap&&(e.normalMap.value=t.normalMap,e.normalScale.value.copy(t.normalScale),t.side===h&&e.normalScale.value.negate());t.displacementMap&&(e.displacementMap.value=t.displacementMap,e.displacementScale.value=t.displacementScale,e.displacementBias.value=t.displacementBias)}(M,n)):n.isMeshDepthMaterial?(Le(M,n),function(e,t){t.displacementMap&&(e.displacementMap.value=t.displacementMap,e.displacementScale.value=t.displacementScale,e.displacementBias.value=t.displacementBias)}(M,n)):n.isMeshDistanceMaterial?(Le(M,n),function(e,t){t.displacementMap&&(e.displacementMap.value=t.displacementMap,e.displacementScale.value=t.displacementScale,e.displacementBias.value=t.displacementBias);e.referencePosition.value.copy(t.referencePosition),e.nearDistance.value=t.nearDistance,e.farDistance.value=t.farDistance}(M,n)):n.isMeshNormalMaterial?(Le(M,n),function(e,t){t.bumpMap&&(e.bumpMap.value=t.bumpMap,e.bumpScale.value=t.bumpScale,t.side===h&&(e.bumpScale.value*=-1));t.normalMap&&(e.normalMap.value=t.normalMap,e.normalScale.value.copy(t.normalScale),t.side===h&&e.normalScale.value.negate());t.displacementMap&&(e.displacementMap.value=t.displacementMap,e.displacementScale.value=t.displacementScale,e.displacementBias.value=t.displacementBias)}(M,n)):n.isLineBasicMaterial?(function(e,t){e.diffuse.value.copy(t.color),e.opacity.value=t.opacity}(M,n),n.isLineDashedMaterial&&function(e,t){e.dashSize.value=t.dashSize,e.totalSize.value=t.dashSize+t.gapSize,e.scale.value=t.scale}(M,n)):n.isPointsMaterial?function(e,t){e.diffuse.value.copy(t.color),e.opacity.value=t.opacity,e.size.value=t.size*Y,e.scale.value=.5*X,t.map&&(e.map.value=t.map);t.alphaMap&&(e.alphaMap.value=t.alphaMap);var n;t.map?n=t.map:t.alphaMap&&(n=t.alphaMap);void 0!==n&&(!0===n.matrixAutoUpdate&&n.updateMatrix(),e.uvTransform.value.copy(n.matrix))}(M,n):n.isSpriteMaterial?function(e,t){e.diffuse.value.copy(t.color),e.opacity.value=t.opacity,e.rotation.value=t.rotation,t.map&&(e.map.value=t.map);t.alphaMap&&(e.alphaMap.value=t.alphaMap);var n;t.map?n=t.map:t.alphaMap&&(n=t.alphaMap);void 0!==n&&(!0===n.matrixAutoUpdate&&n.updateMatrix(),e.uvTransform.value.copy(n.matrix))}(M,n):n.isShadowMaterial&&(M.color.value.copy(n.color),M.opacity.value=n.opacity),void 0!==M.ltc_1&&(M.ltc_1.value=Ai.LTC_1),void 0!==M.ltc_2&&(M.ltc_2.value=Ai.LTC_2),Ga.upload(f,o.uniformsList,M,b),n.isShaderMaterial&&(n.uniformsNeedUpdate=!1)),n.isShaderMaterial&&!0===n.uniformsNeedUpdate&&(Ga.upload(f,o.uniformsList,M,b),n.uniformsNeedUpdate=!1),n.isSpriteMaterial&&_.setValue(f,"center",r.center),w.numMultiviewViews>0?ue.updateObjectMatricesUniforms(r,e,_):(_.setValue(f,"modelViewMatrix",r.modelViewMatrix),_.setValue(f,"normalMatrix",r.normalMatrix)),_.setValue(f,"modelMatrix",r.matrixWorld),w}function Le(e,t,n){e.opacity.value=t.opacity,t.color&&e.diffuse.value.copy(t.color),t.emissive&&e.emissive.value.copy(t.emissive).multiplyScalar(t.emissiveIntensity),t.map&&(e.map.value=t.map),t.alphaMap&&(e.alphaMap.value=t.alphaMap),t.specularMap&&(e.specularMap.value=t.specularMap);var r,i,a=t.envMap||n;a&&(e.envMap.value=a,e.flipEnvMap.value=a.isCubeTexture?-1:1,e.reflectivity.value=t.reflectivity,e.refractionRatio.value=t.refractionRatio,e.maxMipLevel.value=x.get(a).__maxMipLevel),t.lightMap&&(e.lightMap.value=t.lightMap,e.lightMapIntensity.value=t.lightMapIntensity),t.aoMap&&(e.aoMap.value=t.aoMap,e.aoMapIntensity.value=t.aoMapIntensity),t.map?r=t.map:t.specularMap?r=t.specularMap:t.displacementMap?r=t.displacementMap:t.normalMap?r=t.normalMap:t.bumpMap?r=t.bumpMap:t.roughnessMap?r=t.roughnessMap:t.metalnessMap?r=t.metalnessMap:t.alphaMap?r=t.alphaMap:t.emissiveMap&&(r=t.emissiveMap),void 0!==r&&(r.isWebGLRenderTarget&&(r=r.texture),!0===r.matrixAutoUpdate&&r.updateMatrix(),e.uvTransform.value.copy(r.matrix)),t.aoMap?i=t.aoMap:t.lightMap&&(i=t.lightMap),void 0!==i&&(i.isWebGLRenderTarget&&(i=i.texture),!0===i.matrixAutoUpdate&&i.updateMatrix(),e.uv2Transform.value.copy(i.matrix))}function Pe(e,t,n){e.roughness.value=t.roughness,e.metalness.value=t.metalness,t.roughnessMap&&(e.roughnessMap.value=t.roughnessMap),t.metalnessMap&&(e.metalnessMap.value=t.metalnessMap),t.emissiveMap&&(e.emissiveMap.value=t.emissiveMap),t.bumpMap&&(e.bumpMap.value=t.bumpMap,e.bumpScale.value=t.bumpScale,t.side===h&&(e.bumpScale.value*=-1)),t.normalMap&&(e.normalMap.value=t.normalMap,e.normalScale.value.copy(t.normalScale),t.side===h&&e.normalScale.value.negate()),t.displacementMap&&(e.displacementMap.value=t.displacementMap,e.displacementScale.value=t.displacementScale,e.displacementBias.value=t.displacementBias),(t.envMap||n)&&(e.envMapIntensity.value=t.envMapIntensity)}be.setAnimationLoop((function(e){he.isPresenting||xe&&xe(e)})),"undefined"!=typeof window&&be.setContext(window),this.setAnimationLoop=function(e){xe=e,he.setAnimationLoop(e),be.start()},this.render=function(e,t){var n,r;if(void 0!==arguments[2]&&(console.warn("THREE.WebGLRenderer.render(): the renderTarget argument has been removed. Use .setRenderTarget() instead."),n=arguments[2]),void 0!==arguments[3]&&(console.warn("THREE.WebGLRenderer.render(): the forceClear argument has been removed. Use .clear() instead."),r=arguments[3]),t&&t.isCamera){if(!O){G.geometry=null,G.program=null,G.wireframe=!1,U=-1,H=null,!0===e.autoUpdate&&e.updateMatrixWorld(),null===t.parent&&t.updateMatrixWorld(),he.enabled&&he.isPresenting&&(t=he.getCamera(t)),(d=E.get(e,t)).init(),e.onBeforeRender(I,e,t,n||B),ae.multiplyMatrices(t.projectionMatrix,t.matrixWorldInverse),te.setFromMatrix(ae),ie=this.localClippingEnabled,re=ne.init(this.clippingPlanes,ie,t),(p=T.get(e,t)).init(),we(e,t,0,I.sortObjects),!0===I.sortObjects&&p.sort(J,K),re&&ne.beginShadows();var i=d.state.shadowsArray;pe.render(i,e,t),d.setupLights(t),re&&ne.endShadows(),this.info.autoReset&&this.info.reset(),void 0!==n&&this.setRenderTarget(n),he.enabled&&ue.isAvailable()&&ue.attachCamera(t),A.render(p,e,t,r);var a=p.opaque,o=p.transparent;if(e.overrideMaterial){var s=e.overrideMaterial;a.length&&Se(a,e,t,s),o.length&&Se(o,e,t,s)}else a.length&&Se(a,e,t),o.length&&Se(o,e,t);e.onAfterRender(I,e,t),null!==B&&(b.updateRenderTargetMipmap(B),b.updateMultisampleRenderTarget(B)),g.buffers.depth.setTest(!0),g.buffers.depth.setMask(!0),g.buffers.color.setMask(!0),g.setPolygonOffset(!1),he.enabled&&ue.isAvailable()&&ue.detachCamera(t),p=null,d=null}}else console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.")},this.setFramebuffer=function(e){D!==e&&null===B&&f.bindFramebuffer(36160,e),D=e},this.getActiveCubeFace=function(){return N},this.getActiveMipmapLevel=function(){return z},this.getRenderTarget=function(){return B},this.setRenderTarget=function(e,t,n){B=e,N=t,z=n,e&&void 0===x.get(e).__webglFramebuffer&&b.setupRenderTarget(e);var r=D,i=!1;if(e){var a=x.get(e).__webglFramebuffer;e.isWebGLRenderTargetCube?(r=a[t||0],i=!0):r=e.isWebGLMultisampleRenderTarget?x.get(e).__webglMultisampledFramebuffer:a,V.copy(e.viewport),j.copy(e.scissor),W=e.scissorTest}else V.copy(Q).multiplyScalar(Y).floor(),j.copy($).multiplyScalar(Y).floor(),W=ee;if(F!==r&&(f.bindFramebuffer(36160,r),F=r),g.viewport(V),g.scissor(j),g.setScissorTest(W),i){var o=x.get(e.texture);f.framebufferTexture2D(36160,36064,34069+(t||0),o.__webglTexture,n||0)}},this.readRenderTargetPixels=function(e,t,n,r,i,a,o){if(e&&e.isWebGLRenderTarget){var s=x.get(e).__webglFramebuffer;if(e.isWebGLRenderTargetCube&&void 0!==o&&(s=s[o]),s){var c=!1;s!==F&&(f.bindFramebuffer(36160,s),c=!0);try{var l=e.texture,h=l.format,u=l.type;if(h!==Re&&C.convert(h)!==f.getParameter(35739))return void console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");if(!(u===ve||C.convert(u)===f.getParameter(35738)||u===_e&&(v.isWebGL2||m.get("OES_texture_float")||m.get("WEBGL_color_buffer_float"))||u===Me&&(v.isWebGL2?m.get("EXT_color_buffer_float"):m.get("EXT_color_buffer_half_float"))))return void console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");36053===f.checkFramebufferStatus(36160)?t>=0&&t<=e.width-r&&n>=0&&n<=e.height-i&&f.readPixels(t,n,r,i,C.convert(h),C.convert(u),a):console.error("THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.")}finally{c&&f.bindFramebuffer(36160,F)}}}else console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.")},this.copyFramebufferToTexture=function(e,t,n){void 0===n&&(n=0);var r=Math.pow(2,-n),i=Math.floor(t.image.width*r),a=Math.floor(t.image.height*r),o=C.convert(t.format);b.setTexture2D(t,0),f.copyTexImage2D(3553,n,o,e.x,e.y,i,a,0),g.unbindTexture()},this.copyTextureToTexture=function(e,t,n,r){var i=t.image.width,a=t.image.height,o=C.convert(n.format),s=C.convert(n.type);b.setTexture2D(n,0),t.isDataTexture?f.texSubImage2D(3553,r||0,e.x,e.y,i,a,o,s,t.image.data):f.texSubImage2D(3553,r||0,e.x,e.y,o,s,t.image),g.unbindTexture()},this.initTexture=function(e){b.setTexture2D(e,0),g.unbindTexture()},"undefined"!=typeof __THREE_DEVTOOLS__&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}function Co(e,t){this.name="",this.color=new hr(e),this.density=void 0!==t?t:25e-5}function Io(e,t,n){this.name="",this.color=new hr(e),this.near=void 0!==t?t:1,this.far=void 0!==n?n:1e3}function Oo(e,t){this.array=e,this.stride=t,this.count=void 0!==e?e.length/t:0,this.usage=Lt,this.updateRange={offset:0,count:-1},this.version=0}To.prototype=Object.assign(Object.create(Wt.prototype),{constructor:To,isWebGLMultiviewRenderTarget:!0,copy:function(e){return Wt.prototype.copy.call(this,e),this.numViews=e.numViews,this},setNumViews:function(e){return this.numViews!==e&&(this.numViews=e,this.dispose()),this}}),Ao.prototype=Object.assign(Object.create(gi.prototype),{constructor:Ao,isArrayCamera:!0}),Lo.prototype=Object.assign(Object.create(xn.prototype),{constructor:Lo,isGroup:!0}),Object.assign(Po.prototype,Pt.prototype),Object.assign(Co.prototype,{isFogExp2:!0,clone:function(){return new Co(this.color,this.density)},toJSON:function(){return{type:"FogExp2",color:this.color.getHex(),density:this.density}}}),Object.assign(Io.prototype,{isFog:!0,clone:function(){return new Io(this.color,this.near,this.far)},toJSON:function(){return{type:"Fog",color:this.color.getHex(),near:this.near,far:this.far}}}),Object.defineProperty(Oo.prototype,"needsUpdate",{set:function(e){!0===e&&this.version++}}),Object.assign(Oo.prototype,{isInterleavedBuffer:!0,onUploadCallback:function(){},setUsage:function(e){return this.usage=e,this},copy:function(e){return this.array=new e.array.constructor(e.array),this.count=e.count,this.stride=e.stride,this.usage=e.usage,this},copyAt:function(e,t,n){e*=this.stride,n*=t.stride;for(var r=0,i=this.stride;re.far||t.push({distance:s,point:Fo.clone(),uv:or.getUV(Fo,jo,Wo,qo,Xo,Yo,Zo,new Ot),face:null,object:this})}},clone:function(){return new this.constructor(this.material).copy(this)},copy:function(e){return xn.prototype.copy.call(this,e),void 0!==e.center&&this.center.copy(e.center),this}});var Qo=new Bt,$o=new Bt;function es(){xn.call(this),this.type="LOD",Object.defineProperties(this,{levels:{enumerable:!0,value:[]}}),this.autoUpdate=!0}function ts(e,t){e&&e.isGeometry&&console.error("THREE.SkinnedMesh no longer supports THREE.Geometry. Use THREE.BufferGeometry instead."),ni.call(this,e,t),this.type="SkinnedMesh",this.bindMode="attached",this.bindMatrix=new en,this.bindMatrixInverse=new en}es.prototype=Object.assign(Object.create(xn.prototype),{constructor:es,isLOD:!0,copy:function(e){xn.prototype.copy.call(this,e,!1);for(var t=e.levels,n=0,r=t.length;n0){for(var n=1,r=t.length;n0){Qo.setFromMatrixPosition(this.matrixWorld);var n=e.ray.origin.distanceTo(Qo);this.getObjectForDistance(n).raycast(e,t)}},update:function(e){var t=this.levels;if(t.length>1){Qo.setFromMatrixPosition(e.matrixWorld),$o.setFromMatrixPosition(this.matrixWorld);var n=Qo.distanceTo($o);t[0].object.visible=!0;for(var r=1,i=t.length;r=t[r].distance;r++)t[r-1].object.visible=!1,t[r].object.visible=!0;for(;r0&&(cs[0].instanceId=i,cs[0].object=this,t.push(cs[0]),cs.length=0)},setMatrixAt:function(e,t){t.toArray(this.instanceMatrix.array,16*e)},updateMorphTargets:function(){}}),us.prototype=Object.create(vr.prototype),us.prototype.constructor=us,us.prototype.isLineBasicMaterial=!0,us.prototype.copy=function(e){return vr.prototype.copy.call(this,e),this.color.copy(e.color),this.linewidth=e.linewidth,this.linecap=e.linecap,this.linejoin=e.linejoin,this};var ps=new Bt,ds=new Bt,fs=new en,ms=new Wn,vs=new Bn;function gs(e,t,n){1===n&&console.error("THREE.Line: parameter THREE.LinePieces no longer supported. Use THREE.LineSegments instead."),xn.call(this),this.type="Line",this.geometry=void 0!==e?e:new Fr,this.material=void 0!==t?t:new us({color:16777215*Math.random()})}gs.prototype=Object.assign(Object.create(xn.prototype),{constructor:gs,isLine:!0,computeLineDistances:function(){var e=this.geometry;if(e.isBufferGeometry)if(null===e.index){for(var t=e.attributes.position,n=[0],r=1,i=t.count;ro))h.applyMatrix4(this.matrixWorld),(w=e.ray.origin.distanceTo(h))e.far||t.push({distance:w,point:l.clone().applyMatrix4(this.matrixWorld),index:m,face:null,faceIndex:null,object:this})}else for(m=0,v=d.length/3-1;mo))h.applyMatrix4(this.matrixWorld),(w=e.ray.origin.distanceTo(h))e.far||t.push({distance:w,point:l.clone().applyMatrix4(this.matrixWorld),index:m,face:null,faceIndex:null,object:this})}}else if(r.isGeometry){var x=r.vertices,b=x.length;for(m=0;mo))h.applyMatrix4(this.matrixWorld),(w=e.ray.origin.distanceTo(h))e.far||t.push({distance:w,point:l.clone().applyMatrix4(this.matrixWorld),index:m,face:null,faceIndex:null,object:this})}}}},clone:function(){return new this.constructor(this.geometry,this.material).copy(this)}});var ys=new Bt,xs=new Bt;function bs(e,t){gs.call(this,e,t),this.type="LineSegments"}function ws(e,t){gs.call(this,e,t),this.type="LineLoop"}function _s(e){vr.call(this),this.type="PointsMaterial",this.color=new hr(16777215),this.map=null,this.alphaMap=null,this.size=1,this.sizeAttenuation=!0,this.morphTargets=!1,this.setValues(e)}bs.prototype=Object.assign(Object.create(gs.prototype),{constructor:bs,isLineSegments:!0,computeLineDistances:function(){var e=this.geometry;if(e.isBufferGeometry)if(null===e.index){for(var t=e.attributes.position,n=[],r=0,i=t.count;ri.far)return;a.push({distance:l,distanceToRay:Math.sqrt(s),point:c,index:t,face:null,object:o})}}function Ps(e,t,n,r,i,a,o,s,c){Vt.call(this,e,t,n,r,i,a,o,s,c),this.format=void 0!==o?o:Pe,this.minFilter=void 0!==a?a:de,this.magFilter=void 0!==i?i:de,this.generateMipmaps=!1}function Rs(e,t,n,r,i,a,o,s,c,l,h,u){Vt.call(this,null,a,o,s,c,l,r,i,h,u),this.image={width:t,height:n},this.mipmaps=e,this.flipY=!1,this.generateMipmaps=!1}function Cs(e,t,n,r,i,a,o,s,c){Vt.call(this,e,t,n,r,i,a,o,s,c),this.needsUpdate=!0}function Is(e,t,n,r,i,a,o,s,c,l){if((l=void 0!==l?l:De)!==De&&l!==Ne)throw new Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");void 0===n&&l===De&&(n=xe),void 0===n&&l===Ne&&(n=Ae),Vt.call(this,null,r,i,a,o,s,l,n,c),this.image={width:e,height:t},this.magFilter=void 0!==o?o:he,this.minFilter=void 0!==s?s:he,this.flipY=!1,this.generateMipmaps=!1}function Os(e){Fr.call(this),this.type="WireframeGeometry";var t,n,r,i,a,o,s,c,l,h,u=[],p=[0,0],d={},f=["a","b","c"];if(e&&e.isGeometry){var m=e.faces;for(t=0,r=m.length;t=0?(e(v-1e-5,m,u),p.subVectors(h,u)):(e(v+1e-5,m,u),p.subVectors(u,h)),m-1e-5>=0?(e(v,m-1e-5,u),d.subVectors(h,u)):(e(v,m+1e-5,u),d.subVectors(u,h)),l.crossVectors(p,d).normalize(),s.push(l.x,l.y,l.z),c.push(v,m)}}for(r=0;r.9&&o<.1&&(t<.2&&(a[e+0]+=1),n<.2&&(a[e+2]+=1),r<.2&&(a[e+4]+=1))}}()}(),this.setAttribute("position",new Ar(i,3)),this.setAttribute("normal",new Ar(i.slice(),3)),this.setAttribute("uv",new Ar(a,2)),0===r?this.computeVertexNormals():this.normalizeNormals()}function Fs(e,t){li.call(this),this.type="TetrahedronGeometry",this.parameters={radius:e,detail:t},this.fromBufferGeometry(new Us(e,t)),this.mergeVertices()}function Us(e,t){Bs.call(this,[1,1,1,-1,-1,1,-1,1,-1,1,-1,-1],[2,1,0,0,3,2,1,3,0,2,3,1],e,t),this.type="TetrahedronBufferGeometry",this.parameters={radius:e,detail:t}}function Gs(e,t){li.call(this),this.type="OctahedronGeometry",this.parameters={radius:e,detail:t},this.fromBufferGeometry(new Hs(e,t)),this.mergeVertices()}function Hs(e,t){Bs.call(this,[1,0,0,-1,0,0,0,1,0,0,-1,0,0,0,1,0,0,-1],[0,2,4,0,4,3,0,3,5,0,5,2,1,2,5,1,5,3,1,3,4,1,4,2],e,t),this.type="OctahedronBufferGeometry",this.parameters={radius:e,detail:t}}function ks(e,t){li.call(this),this.type="IcosahedronGeometry",this.parameters={radius:e,detail:t},this.fromBufferGeometry(new Vs(e,t)),this.mergeVertices()}function Vs(e,t){var n=(1+Math.sqrt(5))/2,r=[-1,n,0,1,n,0,-1,-n,0,1,-n,0,0,-1,n,0,1,n,0,-1,-n,0,1,-n,n,0,-1,n,0,1,-n,0,-1,-n,0,1];Bs.call(this,r,[0,11,5,0,5,1,0,1,7,0,7,10,0,10,11,1,5,9,5,11,4,11,10,2,10,7,6,7,1,8,3,9,4,3,4,2,3,2,6,3,6,8,3,8,9,4,9,5,2,4,11,6,2,10,8,6,7,9,8,1],e,t),this.type="IcosahedronBufferGeometry",this.parameters={radius:e,detail:t}}function js(e,t){li.call(this),this.type="DodecahedronGeometry",this.parameters={radius:e,detail:t},this.fromBufferGeometry(new Ws(e,t)),this.mergeVertices()}function Ws(e,t){var n=(1+Math.sqrt(5))/2,r=1/n,i=[-1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,1,1,-1,1,1,1,0,-r,-n,0,-r,n,0,r,-n,0,r,n,-r,-n,0,-r,n,0,r,-n,0,r,n,0,-n,0,-r,n,0,-r,-n,0,r,n,0,r];Bs.call(this,i,[3,11,7,3,7,15,3,15,13,7,19,17,7,17,6,7,6,15,17,4,8,17,8,10,17,10,6,8,0,16,8,16,2,8,2,10,0,12,1,0,1,18,0,18,16,6,10,2,6,2,13,6,13,15,2,16,18,2,18,3,2,3,13,18,1,9,18,9,11,18,11,3,4,14,12,4,12,0,4,0,8,11,9,5,11,5,19,11,19,7,19,5,14,19,14,4,19,4,17,1,12,14,1,14,5,1,5,9],e,t),this.type="DodecahedronBufferGeometry",this.parameters={radius:e,detail:t}}function qs(e,t,n,r,i,a){li.call(this),this.type="TubeGeometry",this.parameters={path:e,tubularSegments:t,radius:n,radialSegments:r,closed:i},void 0!==a&&console.warn("THREE.TubeGeometry: taper has been removed.");var o=new Xs(e,t,n,r,i);this.tangents=o.tangents,this.normals=o.normals,this.binormals=o.binormals,this.fromBufferGeometry(o),this.mergeVertices()}function Xs(e,t,n,r,i){Fr.call(this),this.type="TubeBufferGeometry",this.parameters={path:e,tubularSegments:t,radius:n,radialSegments:r,closed:i},t=t||64,n=n||1,r=r||8,i=i||!1;var a=e.computeFrenetFrames(t,i);this.tangents=a.tangents,this.normals=a.normals,this.binormals=a.binormals;var o,s,c=new Bt,l=new Bt,h=new Ot,u=new Bt,p=[],d=[],f=[],m=[];function v(i){u=e.getPointAt(i/t,u);var o=a.normals[i],h=a.binormals[i];for(s=0;s<=r;s++){var f=s/r*Math.PI*2,m=Math.sin(f),v=-Math.cos(f);l.x=v*o.x+m*h.x,l.y=v*o.y+m*h.y,l.z=v*o.z+m*h.z,l.normalize(),d.push(l.x,l.y,l.z),c.x=u.x+n*l.x,c.y=u.y+n*l.y,c.z=u.z+n*l.z,p.push(c.x,c.y,c.z)}}!function(){for(o=0;o0){var o=i[a[0]];if(void 0!==o)for(this.morphTargetInfluences=[],this.morphTargetDictionary={},e=0,t=o.length;e0&&console.error("THREE.Points.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.")}},clone:function(){return new this.constructor(this.geometry,this.material).copy(this)}}),Ps.prototype=Object.assign(Object.create(Vt.prototype),{constructor:Ps,isVideoTexture:!0,update:function(){var e=this.image;e.readyState>=e.HAVE_CURRENT_DATA&&(this.needsUpdate=!0)}}),Rs.prototype=Object.create(Vt.prototype),Rs.prototype.constructor=Rs,Rs.prototype.isCompressedTexture=!0,Cs.prototype=Object.create(Vt.prototype),Cs.prototype.constructor=Cs,Cs.prototype.isCanvasTexture=!0,Is.prototype=Object.create(Vt.prototype),Is.prototype.constructor=Is,Is.prototype.isDepthTexture=!0,Os.prototype=Object.create(Fr.prototype),Os.prototype.constructor=Os,Ds.prototype=Object.create(li.prototype),Ds.prototype.constructor=Ds,Ns.prototype=Object.create(Fr.prototype),Ns.prototype.constructor=Ns,zs.prototype=Object.create(li.prototype),zs.prototype.constructor=zs,Bs.prototype=Object.create(Fr.prototype),Bs.prototype.constructor=Bs,Fs.prototype=Object.create(li.prototype),Fs.prototype.constructor=Fs,Us.prototype=Object.create(Bs.prototype),Us.prototype.constructor=Us,Gs.prototype=Object.create(li.prototype),Gs.prototype.constructor=Gs,Hs.prototype=Object.create(Bs.prototype),Hs.prototype.constructor=Hs,ks.prototype=Object.create(li.prototype),ks.prototype.constructor=ks,Vs.prototype=Object.create(Bs.prototype),Vs.prototype.constructor=Vs,js.prototype=Object.create(li.prototype),js.prototype.constructor=js,Ws.prototype=Object.create(Bs.prototype),Ws.prototype.constructor=Ws,qs.prototype=Object.create(li.prototype),qs.prototype.constructor=qs,Xs.prototype=Object.create(Fr.prototype),Xs.prototype.constructor=Xs,Xs.prototype.toJSON=function(){var e=Fr.prototype.toJSON.call(this);return e.path=this.parameters.path.toJSON(),e},Ys.prototype=Object.create(li.prototype),Ys.prototype.constructor=Ys,Zs.prototype=Object.create(Fr.prototype),Zs.prototype.constructor=Zs,Js.prototype=Object.create(li.prototype),Js.prototype.constructor=Js,Ks.prototype=Object.create(Fr.prototype),Ks.prototype.constructor=Ks;var Qs=function(e,t,n){n=n||2;var r,i,a,o,s,c,l,h=t&&t.length,u=h?t[0]*n:e.length,p=$s(e,0,u,n,!0),d=[];if(!p||p.next===p.prev)return d;if(h&&(p=function(e,t,n,r){var i,a,o,s,c,l=[];for(i=0,a=t.length;i80*n){r=a=e[0],i=o=e[1];for(var f=n;fa&&(a=s),c>o&&(o=c);l=0!==(l=Math.max(a-r,o-i))?1/l:0}return tc(p,d,n,r,i,l),d};function $s(e,t,n,r,i){var a,o;if(i===function(e,t,n,r){for(var i=0,a=t,o=n-r;a0)for(a=t;a=t;a-=r)o=gc(a,e[a],e[a+1],o);return o&&dc(o,o.next)&&(yc(o),o=o.next),o}function ec(e,t){if(!e)return e;t||(t=e);var n,r=e;do{if(n=!1,r.steiner||!dc(r,r.next)&&0!==pc(r.prev,r,r.next))r=r.next;else{if(yc(r),(r=t=r.prev)===r.next)break;n=!0}}while(n||r!==t);return t}function tc(e,t,n,r,i,a,o){if(e){!o&&a&&function(e,t,n,r){var i=e;do{null===i.z&&(i.z=cc(i.x,i.y,t,n,r)),i.prevZ=i.prev,i.nextZ=i.next,i=i.next}while(i!==e);i.prevZ.nextZ=null,i.prevZ=null,function(e){var t,n,r,i,a,o,s,c,l=1;do{for(n=e,e=null,a=null,o=0;n;){for(o++,r=n,s=0,t=0;t0||c>0&&r;)0!==s&&(0===c||!r||n.z<=r.z)?(i=n,n=n.nextZ,s--):(i=r,r=r.nextZ,c--),a?a.nextZ=i:e=i,i.prevZ=a,a=i;n=r}a.nextZ=null,l*=2}while(o>1)}(i)}(e,r,i,a);for(var s,c,l=e;e.prev!==e.next;)if(s=e.prev,c=e.next,a?rc(e,r,i,a):nc(e))t.push(s.i/n),t.push(e.i/n),t.push(c.i/n),yc(e),e=c.next,l=c.next;else if((e=c)===l){o?1===o?tc(e=ic(e,t,n),t,n,r,i,a,2):2===o&&ac(e,t,n,r,i,a):tc(ec(e),t,n,r,i,a,1);break}}}function nc(e){var t=e.prev,n=e,r=e.next;if(pc(t,n,r)>=0)return!1;for(var i=e.next.next;i!==e.prev;){if(hc(t.x,t.y,n.x,n.y,r.x,r.y,i.x,i.y)&&pc(i.prev,i,i.next)>=0)return!1;i=i.next}return!0}function rc(e,t,n,r){var i=e.prev,a=e,o=e.next;if(pc(i,a,o)>=0)return!1;for(var s=i.xa.x?i.x>o.x?i.x:o.x:a.x>o.x?a.x:o.x,h=i.y>a.y?i.y>o.y?i.y:o.y:a.y>o.y?a.y:o.y,u=cc(s,c,t,n,r),p=cc(l,h,t,n,r),d=e.prevZ,f=e.nextZ;d&&d.z>=u&&f&&f.z<=p;){if(d!==e.prev&&d!==e.next&&hc(i.x,i.y,a.x,a.y,o.x,o.y,d.x,d.y)&&pc(d.prev,d,d.next)>=0)return!1;if(d=d.prevZ,f!==e.prev&&f!==e.next&&hc(i.x,i.y,a.x,a.y,o.x,o.y,f.x,f.y)&&pc(f.prev,f,f.next)>=0)return!1;f=f.nextZ}for(;d&&d.z>=u;){if(d!==e.prev&&d!==e.next&&hc(i.x,i.y,a.x,a.y,o.x,o.y,d.x,d.y)&&pc(d.prev,d,d.next)>=0)return!1;d=d.prevZ}for(;f&&f.z<=p;){if(f!==e.prev&&f!==e.next&&hc(i.x,i.y,a.x,a.y,o.x,o.y,f.x,f.y)&&pc(f.prev,f,f.next)>=0)return!1;f=f.nextZ}return!0}function ic(e,t,n){var r=e;do{var i=r.prev,a=r.next.next;!dc(i,a)&&fc(i,r,r.next,a)&&mc(i,a)&&mc(a,i)&&(t.push(i.i/n),t.push(r.i/n),t.push(a.i/n),yc(r),yc(r.next),r=e=a),r=r.next}while(r!==e);return r}function ac(e,t,n,r,i,a){var o=e;do{for(var s=o.next.next;s!==o.prev;){if(o.i!==s.i&&uc(o,s)){var c=vc(o,s);return o=ec(o,o.next),c=ec(c,c.next),tc(o,t,n,r,i,a),void tc(c,t,n,r,i,a)}s=s.next}o=o.next}while(o!==e)}function oc(e,t){return e.x-t.x}function sc(e,t){if(t=function(e,t){var n,r=t,i=e.x,a=e.y,o=-1/0;do{if(a<=r.y&&a>=r.next.y&&r.next.y!==r.y){var s=r.x+(a-r.y)*(r.next.x-r.x)/(r.next.y-r.y);if(s<=i&&s>o){if(o=s,s===i){if(a===r.y)return r;if(a===r.next.y)return r.next}n=r.x=r.x&&r.x>=h&&i!==r.x&&hc(an.x)&&mc(r,e)&&(n=r,p=c),r=r.next;return n}(e,t)){var n=vc(t,e);ec(n,n.next)}}function cc(e,t,n,r,i){return(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=32767*(e-n)*i)|e<<8))|e<<4))|e<<2))|e<<1))|(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=32767*(t-r)*i)|t<<8))|t<<4))|t<<2))|t<<1))<<1}function lc(e){var t=e,n=e;do{(t.x=0&&(e-o)*(r-s)-(n-o)*(t-s)>=0&&(n-o)*(a-s)-(i-o)*(r-s)>=0}function uc(e,t){return e.next.i!==t.i&&e.prev.i!==t.i&&!function(e,t){var n=e;do{if(n.i!==e.i&&n.next.i!==e.i&&n.i!==t.i&&n.next.i!==t.i&&fc(n,n.next,e,t))return!0;n=n.next}while(n!==e);return!1}(e,t)&&mc(e,t)&&mc(t,e)&&function(e,t){var n=e,r=!1,i=(e.x+t.x)/2,a=(e.y+t.y)/2;do{n.y>a!=n.next.y>a&&n.next.y!==n.y&&i<(n.next.x-n.x)*(a-n.y)/(n.next.y-n.y)+n.x&&(r=!r),n=n.next}while(n!==e);return r}(e,t)}function pc(e,t,n){return(t.y-e.y)*(n.x-t.x)-(t.x-e.x)*(n.y-t.y)}function dc(e,t){return e.x===t.x&&e.y===t.y}function fc(e,t,n,r){return!!(dc(e,n)&&dc(t,r)||dc(e,r)&&dc(n,t))||pc(e,t,n)>0!=pc(e,t,r)>0&&pc(n,r,e)>0!=pc(n,r,t)>0}function mc(e,t){return pc(e.prev,e,e.next)<0?pc(e,t,e.next)>=0&&pc(e,e.prev,t)>=0:pc(e,t,e.prev)<0||pc(e,e.next,t)<0}function vc(e,t){var n=new xc(e.i,e.x,e.y),r=new xc(t.i,t.x,t.y),i=e.next,a=t.prev;return e.next=t,t.prev=e,n.next=i,i.prev=n,r.next=n,n.prev=r,a.next=r,r.prev=a,r}function gc(e,t,n,r){var i=new xc(e,t,n);return r?(i.next=r.next,i.prev=r,r.next.prev=i,r.next=i):(i.prev=i,i.next=i),i}function yc(e){e.next.prev=e.prev,e.prev.next=e.next,e.prevZ&&(e.prevZ.nextZ=e.nextZ),e.nextZ&&(e.nextZ.prevZ=e.prevZ)}function xc(e,t,n){this.i=e,this.x=t,this.y=n,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1}var bc={area:function(e){for(var t=e.length,n=0,r=t-1,i=0;i2&&e[t-1].equals(e[0])&&e.pop()}function _c(e,t){for(var n=0;nNumber.EPSILON){var p=Math.sqrt(h),d=Math.sqrt(c*c+l*l),f=t.x-s/p,m=t.y+o/p,v=((n.x-l/d-f)*l-(n.y+c/d-m)*c)/(o*l-s*c),g=(r=f+o*v-e.x)*r+(i=m+s*v-e.y)*i;if(g<=2)return new Ot(r,i);a=Math.sqrt(g/2)}else{var y=!1;o>Number.EPSILON?c>Number.EPSILON&&(y=!0):o<-Number.EPSILON?c<-Number.EPSILON&&(y=!0):Math.sign(s)===Math.sign(l)&&(y=!0),y?(r=-s,i=o,a=Math.sqrt(h)):(r=o,i=s,a=Math.sqrt(h/2))}return new Ot(r/a,i/a)}for(var G=[],H=0,k=P.length,V=k-1,j=H+1;H=0;C--){for(O=C/d,D=h*Math.cos(O*Math.PI/2),I=u*Math.sin(O*Math.PI/2)+p,H=0,k=P.length;H=0;){n=H,(r=H-1)<0&&(r=e.length-1);var i=0,a=s+2*d;for(i=0;i0)&&f.push(_,M,T),(c!==n-1||l0&&g(!0),t>0&&g(!1)),this.setIndex(l),this.setAttribute("position",new Ar(h,3)),this.setAttribute("normal",new Ar(u,3)),this.setAttribute("uv",new Ar(p,2))}function Hc(e,t,n,r,i,a,o){Uc.call(this,0,e,t,n,r,i,a,o),this.type="ConeGeometry",this.parameters={radius:e,height:t,radialSegments:n,heightSegments:r,openEnded:i,thetaStart:a,thetaLength:o}}function kc(e,t,n,r,i,a,o){Gc.call(this,0,e,t,n,r,i,a,o),this.type="ConeBufferGeometry",this.parameters={radius:e,height:t,radialSegments:n,heightSegments:r,openEnded:i,thetaStart:a,thetaLength:o}}function Vc(e,t,n,r){li.call(this),this.type="CircleGeometry",this.parameters={radius:e,segments:t,thetaStart:n,thetaLength:r},this.fromBufferGeometry(new jc(e,t,n,r)),this.mergeVertices()}function jc(e,t,n,r){Fr.call(this),this.type="CircleBufferGeometry",this.parameters={radius:e,segments:t,thetaStart:n,thetaLength:r},e=e||1,t=void 0!==t?Math.max(3,t):8,n=void 0!==n?n:0,r=void 0!==r?r:2*Math.PI;var i,a,o=[],s=[],c=[],l=[],h=new Bt,u=new Ot;for(s.push(0,0,0),c.push(0,0,1),l.push(.5,.5),a=0,i=3;a<=t;a++,i+=3){var p=n+a/t*r;h.x=e*Math.cos(p),h.y=e*Math.sin(p),s.push(h.x,h.y,h.z),c.push(0,0,1),u.x=(s[i]/e+1)/2,u.y=(s[i+1]/e+1)/2,l.push(u.x,u.y)}for(i=1;i<=t;i++)o.push(i,i+1,0);this.setIndex(o),this.setAttribute("position",new Ar(s,3)),this.setAttribute("normal",new Ar(c,3)),this.setAttribute("uv",new Ar(l,2))}Ac.prototype=Object.create(li.prototype),Ac.prototype.constructor=Ac,Lc.prototype=Object.create(Sc.prototype),Lc.prototype.constructor=Lc,Pc.prototype=Object.create(li.prototype),Pc.prototype.constructor=Pc,Rc.prototype=Object.create(Fr.prototype),Rc.prototype.constructor=Rc,Cc.prototype=Object.create(li.prototype),Cc.prototype.constructor=Cc,Ic.prototype=Object.create(Fr.prototype),Ic.prototype.constructor=Ic,Oc.prototype=Object.create(li.prototype),Oc.prototype.constructor=Oc,Dc.prototype=Object.create(Fr.prototype),Dc.prototype.constructor=Dc,Nc.prototype=Object.create(li.prototype),Nc.prototype.constructor=Nc,Nc.prototype.toJSON=function(){var e=li.prototype.toJSON.call(this);return Bc(this.parameters.shapes,e)},zc.prototype=Object.create(Fr.prototype),zc.prototype.constructor=zc,zc.prototype.toJSON=function(){var e=Fr.prototype.toJSON.call(this);return Bc(this.parameters.shapes,e)},Fc.prototype=Object.create(Fr.prototype),Fc.prototype.constructor=Fc,Uc.prototype=Object.create(li.prototype),Uc.prototype.constructor=Uc,Gc.prototype=Object.create(Fr.prototype),Gc.prototype.constructor=Gc,Hc.prototype=Object.create(Uc.prototype),Hc.prototype.constructor=Hc,kc.prototype=Object.create(Gc.prototype),kc.prototype.constructor=kc,Vc.prototype=Object.create(li.prototype),Vc.prototype.constructor=Vc,jc.prototype=Object.create(Fr.prototype),jc.prototype.constructor=jc;var Wc=Object.freeze({__proto__:null,WireframeGeometry:Os,ParametricGeometry:Ds,ParametricBufferGeometry:Ns,TetrahedronGeometry:Fs,TetrahedronBufferGeometry:Us,OctahedronGeometry:Gs,OctahedronBufferGeometry:Hs,IcosahedronGeometry:ks,IcosahedronBufferGeometry:Vs,DodecahedronGeometry:js,DodecahedronBufferGeometry:Ws,PolyhedronGeometry:zs,PolyhedronBufferGeometry:Bs,TubeGeometry:qs,TubeBufferGeometry:Xs,TorusKnotGeometry:Ys,TorusKnotBufferGeometry:Zs,TorusGeometry:Js,TorusBufferGeometry:Ks,TextGeometry:Ac,TextBufferGeometry:Lc,SphereGeometry:Pc,SphereBufferGeometry:Rc,RingGeometry:Cc,RingBufferGeometry:Ic,PlaneGeometry:Ci,PlaneBufferGeometry:Ii,LatheGeometry:Oc,LatheBufferGeometry:Dc,ShapeGeometry:Nc,ShapeBufferGeometry:zc,ExtrudeGeometry:Mc,ExtrudeBufferGeometry:Sc,EdgesGeometry:Fc,ConeGeometry:Hc,ConeBufferGeometry:kc,CylinderGeometry:Uc,CylinderBufferGeometry:Gc,CircleGeometry:Vc,CircleBufferGeometry:jc,BoxGeometry:class extends li{constructor(e,t,n,r,i,a){super(),this.type="BoxGeometry",this.parameters={width:e,height:t,depth:n,widthSegments:r,heightSegments:i,depthSegments:a},this.fromBufferGeometry(new hi(e,t,n,r,i,a)),this.mergeVertices()}},BoxBufferGeometry:hi});function qc(e){vr.call(this),this.type="ShadowMaterial",this.color=new hr(0),this.transparent=!0,this.setValues(e)}function Xc(e){mi.call(this,e),this.type="RawShaderMaterial"}function Yc(e){vr.call(this),this.defines={STANDARD:""},this.type="MeshStandardMaterial",this.color=new hr(16777215),this.roughness=1,this.metalness=0,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new hr(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=St,this.normalScale=new Ot(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.roughnessMap=null,this.metalnessMap=null,this.alphaMap=null,this.envMap=null,this.envMapIntensity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.skinning=!1,this.morphTargets=!1,this.morphNormals=!1,this.setValues(e)}function Zc(e){Yc.call(this),this.defines={STANDARD:"",PHYSICAL:""},this.type="MeshPhysicalMaterial",this.reflectivity=.5,this.clearcoat=0,this.clearcoatRoughness=0,this.sheen=null,this.clearcoatNormalScale=new Ot(1,1),this.clearcoatNormalMap=null,this.transparency=0,this.setValues(e)}function Jc(e){vr.call(this),this.type="MeshPhongMaterial",this.color=new hr(16777215),this.specular=new hr(1118481),this.shininess=30,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new hr(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=St,this.normalScale=new Ot(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.combine=W,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.skinning=!1,this.morphTargets=!1,this.morphNormals=!1,this.setValues(e)}function Kc(e){vr.call(this),this.defines={TOON:""},this.type="MeshToonMaterial",this.color=new hr(16777215),this.specular=new hr(1118481),this.shininess=30,this.map=null,this.gradientMap=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new hr(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=St,this.normalScale=new Ot(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.skinning=!1,this.morphTargets=!1,this.morphNormals=!1,this.setValues(e)}function Qc(e){vr.call(this),this.type="MeshNormalMaterial",this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=St,this.normalScale=new Ot(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.fog=!1,this.skinning=!1,this.morphTargets=!1,this.morphNormals=!1,this.setValues(e)}function $c(e){vr.call(this),this.type="MeshLambertMaterial",this.color=new hr(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new hr(0),this.emissiveIntensity=1,this.emissiveMap=null,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.combine=W,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.skinning=!1,this.morphTargets=!1,this.morphNormals=!1,this.setValues(e)}function el(e){vr.call(this),this.defines={MATCAP:""},this.type="MeshMatcapMaterial",this.color=new hr(16777215),this.matcap=null,this.map=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=St,this.normalScale=new Ot(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.alphaMap=null,this.skinning=!1,this.morphTargets=!1,this.morphNormals=!1,this.setValues(e)}function tl(e){us.call(this),this.type="LineDashedMaterial",this.scale=1,this.dashSize=3,this.gapSize=1,this.setValues(e)}qc.prototype=Object.create(vr.prototype),qc.prototype.constructor=qc,qc.prototype.isShadowMaterial=!0,qc.prototype.copy=function(e){return vr.prototype.copy.call(this,e),this.color.copy(e.color),this},Xc.prototype=Object.create(mi.prototype),Xc.prototype.constructor=Xc,Xc.prototype.isRawShaderMaterial=!0,Yc.prototype=Object.create(vr.prototype),Yc.prototype.constructor=Yc,Yc.prototype.isMeshStandardMaterial=!0,Yc.prototype.copy=function(e){return vr.prototype.copy.call(this,e),this.defines={STANDARD:""},this.color.copy(e.color),this.roughness=e.roughness,this.metalness=e.metalness,this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.roughnessMap=e.roughnessMap,this.metalnessMap=e.metalnessMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapIntensity=e.envMapIntensity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.skinning=e.skinning,this.morphTargets=e.morphTargets,this.morphNormals=e.morphNormals,this},Zc.prototype=Object.create(Yc.prototype),Zc.prototype.constructor=Zc,Zc.prototype.isMeshPhysicalMaterial=!0,Zc.prototype.copy=function(e){return Yc.prototype.copy.call(this,e),this.defines={STANDARD:"",PHYSICAL:""},this.reflectivity=e.reflectivity,this.clearcoat=e.clearcoat,this.clearcoatRoughness=e.clearcoatRoughness,e.sheen?this.sheen=(this.sheen||new hr).copy(e.sheen):this.sheen=null,this.clearcoatNormalMap=e.clearcoatNormalMap,this.clearcoatNormalScale.copy(e.clearcoatNormalScale),this.transparency=e.transparency,this},Jc.prototype=Object.create(vr.prototype),Jc.prototype.constructor=Jc,Jc.prototype.isMeshPhongMaterial=!0,Jc.prototype.copy=function(e){return vr.prototype.copy.call(this,e),this.color.copy(e.color),this.specular.copy(e.specular),this.shininess=e.shininess,this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.skinning=e.skinning,this.morphTargets=e.morphTargets,this.morphNormals=e.morphNormals,this},Kc.prototype=Object.create(vr.prototype),Kc.prototype.constructor=Kc,Kc.prototype.isMeshToonMaterial=!0,Kc.prototype.copy=function(e){return vr.prototype.copy.call(this,e),this.color.copy(e.color),this.specular.copy(e.specular),this.shininess=e.shininess,this.map=e.map,this.gradientMap=e.gradientMap,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.skinning=e.skinning,this.morphTargets=e.morphTargets,this.morphNormals=e.morphNormals,this},Qc.prototype=Object.create(vr.prototype),Qc.prototype.constructor=Qc,Qc.prototype.isMeshNormalMaterial=!0,Qc.prototype.copy=function(e){return vr.prototype.copy.call(this,e),this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.skinning=e.skinning,this.morphTargets=e.morphTargets,this.morphNormals=e.morphNormals,this},$c.prototype=Object.create(vr.prototype),$c.prototype.constructor=$c,$c.prototype.isMeshLambertMaterial=!0,$c.prototype.copy=function(e){return vr.prototype.copy.call(this,e),this.color.copy(e.color),this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.skinning=e.skinning,this.morphTargets=e.morphTargets,this.morphNormals=e.morphNormals,this},el.prototype=Object.create(vr.prototype),el.prototype.constructor=el,el.prototype.isMeshMatcapMaterial=!0,el.prototype.copy=function(e){return vr.prototype.copy.call(this,e),this.defines={MATCAP:""},this.color.copy(e.color),this.matcap=e.matcap,this.map=e.map,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.alphaMap=e.alphaMap,this.skinning=e.skinning,this.morphTargets=e.morphTargets,this.morphNormals=e.morphNormals,this},tl.prototype=Object.create(us.prototype),tl.prototype.constructor=tl,tl.prototype.isLineDashedMaterial=!0,tl.prototype.copy=function(e){return us.prototype.copy.call(this,e),this.scale=e.scale,this.dashSize=e.dashSize,this.gapSize=e.gapSize,this};var nl=Object.freeze({__proto__:null,ShadowMaterial:qc,SpriteMaterial:Bo,RawShaderMaterial:Xc,ShaderMaterial:mi,PointsMaterial:_s,MeshPhysicalMaterial:Zc,MeshStandardMaterial:Yc,MeshPhongMaterial:Jc,MeshToonMaterial:Kc,MeshNormalMaterial:Qc,MeshLambertMaterial:$c,MeshDepthMaterial:go,MeshDistanceMaterial:yo,MeshBasicMaterial:gr,MeshMatcapMaterial:el,LineDashedMaterial:tl,LineBasicMaterial:us,Material:vr}),rl={arraySlice:function(e,t,n){return rl.isTypedArray(e)?new e.constructor(e.subarray(t,void 0!==n?n:e.length)):e.slice(t,n)},convertArray:function(e,t,n){return!e||!n&&e.constructor===t?e:"number"==typeof t.BYTES_PER_ELEMENT?new t(e):Array.prototype.slice.call(e)},isTypedArray:function(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)},getKeyframeOrder:function(e){for(var t=e.length,n=new Array(t),r=0;r!==t;++r)n[r]=r;return n.sort((function(t,n){return e[t]-e[n]})),n},sortedArray:function(e,t,n){for(var r=e.length,i=new e.constructor(r),a=0,o=0;o!==r;++a)for(var s=n[a]*t,c=0;c!==t;++c)i[o++]=e[s+c];return i},flattenJSON:function(e,t,n,r){for(var i=1,a=e[0];void 0!==a&&void 0===a[r];)a=e[i++];if(void 0!==a){var o=a[r];if(void 0!==o)if(Array.isArray(o))do{void 0!==(o=a[r])&&(t.push(a.time),n.push.apply(n,o)),a=e[i++]}while(void 0!==a);else if(void 0!==o.toArray)do{void 0!==(o=a[r])&&(t.push(a.time),o.toArray(n,n.length)),a=e[i++]}while(void 0!==a);else do{void 0!==(o=a[r])&&(t.push(a.time),n.push(o)),a=e[i++]}while(void 0!==a)}},subclip:function(e,t,n,r,i){i=i||30;var a=e.clone();a.name=t;for(var o=[],s=0;s=r)){h.push(c.times[p]);for(var f=0;fa.tracks[s].times[0]&&(m=a.tracks[s].times[0]);for(s=0;s=i)break e;var s=t[1];e=(i=t[--n-1]))break t}a=n,n=0}for(;n>>1;et;)--a;if(++a,0!==i||a!==r){i>=a&&(i=(a=Math.max(a,1))-1);var o=this.getValueSize();this.times=rl.arraySlice(n,i,a),this.values=rl.arraySlice(this.values,i*o,a*o)}return this},validate:function(){var e=!0,t=this.getValueSize();t-Math.floor(t)!=0&&(console.error("THREE.KeyframeTrack: Invalid value size in track.",this),e=!1);var n=this.times,r=this.values,i=n.length;0===i&&(console.error("THREE.KeyframeTrack: Track is empty.",this),e=!1);for(var a=null,o=0;o!==i;o++){var s=n[o];if("number"==typeof s&&isNaN(s)){console.error("THREE.KeyframeTrack: Time is not a valid number.",this,o,s),e=!1;break}if(null!==a&&a>s){console.error("THREE.KeyframeTrack: Out of order keys.",this,o,s,a),e=!1;break}a=s}if(void 0!==r&&rl.isTypedArray(r)){o=0;for(var c=r.length;o!==c;++o){var l=r[o];if(isNaN(l)){console.error("THREE.KeyframeTrack: Value is not a valid number.",this,o,l),e=!1;break}}}return e},optimize:function(){for(var e=this.times,t=this.values,n=this.getValueSize(),r=2302===this.getInterpolation(),i=1,a=e.length-1,o=1;o0){e[i]=e[a];for(f=a*n,m=i*n,p=0;p!==n;++p)t[m+p]=t[f+p];++i}return i!==e.length&&(this.times=rl.arraySlice(e,0,i),this.values=rl.arraySlice(t,0,i*n)),this},clone:function(){var e=rl.arraySlice(this.times,0),t=rl.arraySlice(this.values,0),n=new(0,this.constructor)(this.name,e,t);return n.createInterpolant=this.createInterpolant,n}}),ll.prototype=Object.assign(Object.create(cl.prototype),{constructor:ll,ValueTypeName:"bool",ValueBufferType:Array,DefaultInterpolation:2300,InterpolantFactoryMethodLinear:void 0,InterpolantFactoryMethodSmooth:void 0}),hl.prototype=Object.assign(Object.create(cl.prototype),{constructor:hl,ValueTypeName:"color"}),ul.prototype=Object.assign(Object.create(cl.prototype),{constructor:ul,ValueTypeName:"number"}),pl.prototype=Object.assign(Object.create(il.prototype),{constructor:pl,interpolate_:function(e,t,n,r){for(var i=this.resultBuffer,a=this.sampleValues,o=this.valueSize,s=e*o,c=(n-t)/(r-t),l=s+o;s!==l;s+=4)Dt.slerpFlat(i,0,a,s-o,a,s,c);return i}}),dl.prototype=Object.assign(Object.create(cl.prototype),{constructor:dl,ValueTypeName:"quaternion",DefaultInterpolation:2301,InterpolantFactoryMethodLinear:function(e){return new pl(this.times,this.values,this.getValueSize(),e)},InterpolantFactoryMethodSmooth:void 0}),fl.prototype=Object.assign(Object.create(cl.prototype),{constructor:fl,ValueTypeName:"string",ValueBufferType:Array,DefaultInterpolation:2300,InterpolantFactoryMethodLinear:void 0,InterpolantFactoryMethodSmooth:void 0}),ml.prototype=Object.assign(Object.create(cl.prototype),{constructor:ml,ValueTypeName:"vector"}),Object.assign(vl,{parse:function(e){for(var t=[],n=e.tracks,r=1/(e.fps||1),i=0,a=n.length;i!==a;++i)t.push(gl(n[i]).scale(r));return new vl(e.name,e.duration,t)},toJSON:function(e){for(var t=[],n=e.tracks,r={name:e.name,duration:e.duration,tracks:t,uuid:e.uuid},i=0,a=n.length;i!==a;++i)t.push(cl.toJSON(n[i]));return r},CreateFromMorphTargetSequence:function(e,t,n,r){for(var i=t.length,a=[],o=0;o1){var l=r[u=c[1]];l||(r[u]=l=[]),l.push(s)}}var h=[];for(var u in r)h.push(vl.CreateFromMorphTargetSequence(u,r[u],t,n));return h},parseAnimation:function(e,t){if(!e)return console.error("THREE.AnimationClip: No animation in JSONLoader data."),null;for(var n=function(e,t,n,r,i){if(0!==n.length){var a=[],o=[];rl.flattenJSON(n,a,o,r),0!==a.length&&i.push(new e(t,a,o))}},r=[],i=e.name||"default",a=e.length||-1,o=e.fps||30,s=e.hierarchy||[],c=0;c0||0===e.search(/^data\:image\/jpeg/);i.format=r?Pe:Re,i.needsUpdate=!0,void 0!==t&&t(i)}),n,r),i}}),Object.assign(Rl.prototype,{getPoint:function(){return console.warn("THREE.Curve: .getPoint() not implemented."),null},getPointAt:function(e,t){var n=this.getUtoTmapping(e);return this.getPoint(n,t)},getPoints:function(e){void 0===e&&(e=5);for(var t=[],n=0;n<=e;n++)t.push(this.getPoint(n/e));return t},getSpacedPoints:function(e){void 0===e&&(e=5);for(var t=[],n=0;n<=e;n++)t.push(this.getPointAt(n/e));return t},getLength:function(){var e=this.getLengths();return e[e.length-1]},getLengths:function(e){if(void 0===e&&(e=this.arcLengthDivisions),this.cacheArcLengths&&this.cacheArcLengths.length===e+1&&!this.needsUpdate)return this.cacheArcLengths;this.needsUpdate=!1;var t,n,r=[],i=this.getPoint(0),a=0;for(r.push(0),n=1;n<=e;n++)a+=(t=this.getPoint(n/e)).distanceTo(i),r.push(a),i=t;return this.cacheArcLengths=r,r},updateArcLengths:function(){this.needsUpdate=!0,this.getLengths()},getUtoTmapping:function(e,t){var n,r=this.getLengths(),i=0,a=r.length;n=t||e*r[a-1];for(var o,s=0,c=a-1;s<=c;)if((o=r[i=Math.floor(s+(c-s)/2)]-n)<0)s=i+1;else{if(!(o>0)){c=i;break}c=i-1}if(r[i=c]===n)return i/(a-1);var l=r[i];return(i+(n-l)/(r[i+1]-l))/(a-1)},getTangent:function(e){var t=e-1e-4,n=e+1e-4;t<0&&(t=0),n>1&&(n=1);var r=this.getPoint(t);return this.getPoint(n).clone().sub(r).normalize()},getTangentAt:function(e){var t=this.getUtoTmapping(e);return this.getTangent(t)},computeFrenetFrames:function(e,t){var n,r,i,a=new Bt,o=[],s=[],c=[],l=new Bt,h=new en;for(n=0;n<=e;n++)r=n/e,o[n]=this.getTangentAt(r),o[n].normalize();s[0]=new Bt,c[0]=new Bt;var u=Number.MAX_VALUE,p=Math.abs(o[0].x),d=Math.abs(o[0].y),f=Math.abs(o[0].z);for(p<=u&&(u=p,a.set(1,0,0)),d<=u&&(u=d,a.set(0,1,0)),f<=u&&a.set(0,0,1),l.crossVectors(o[0],a).normalize(),s[0].crossVectors(o[0],l),c[0].crossVectors(o[0],s[0]),n=1;n<=e;n++)s[n]=s[n-1].clone(),c[n]=c[n-1].clone(),l.crossVectors(o[n-1],o[n]),l.length()>Number.EPSILON&&(l.normalize(),i=Math.acos(It.clamp(o[n-1].dot(o[n]),-1,1)),s[n].applyMatrix4(h.makeRotationAxis(l,i))),c[n].crossVectors(o[n],s[n]);if(!0===t)for(i=Math.acos(It.clamp(s[0].dot(s[e]),-1,1)),i/=e,o[0].dot(l.crossVectors(s[0],s[e]))>0&&(i=-i),n=1;n<=e;n++)s[n].applyMatrix4(h.makeRotationAxis(o[n],i*n)),c[n].crossVectors(o[n],s[n]);return{tangents:o,normals:s,binormals:c}},clone:function(){return(new this.constructor).copy(this)},copy:function(e){return this.arcLengthDivisions=e.arcLengthDivisions,this},toJSON:function(){var e={metadata:{version:4.5,type:"Curve",generator:"Curve.toJSON"}};return e.arcLengthDivisions=this.arcLengthDivisions,e.type=this.type,e},fromJSON:function(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}}),Cl.prototype=Object.create(Rl.prototype),Cl.prototype.constructor=Cl,Cl.prototype.isEllipseCurve=!0,Cl.prototype.getPoint=function(e,t){for(var n=t||new Ot,r=2*Math.PI,i=this.aEndAngle-this.aStartAngle,a=Math.abs(i)r;)i-=r;i0?0:(Math.floor(Math.abs(h)/c)+1)*c:0===u&&h===c-1&&(h=c-2,u=1),this.closed||h>0?n=s[(h-1)%c]:(Dl.subVectors(s[0],s[1]).add(s[0]),n=Dl),r=s[h%c],i=s[(h+1)%c],this.closed||h+2r.length-2?r.length-1:a+1],h=r[a>r.length-3?r.length-1:a+2];return n.set(Ul(o,s.x,c.x,l.x,h.x),Ul(o,s.y,c.y,l.y,h.y)),n},Yl.prototype.copy=function(e){Rl.prototype.copy.call(this,e),this.points=[];for(var t=0,n=e.points.length;t=t){var i=n[r]-t,a=this.curves[r],o=a.getLength(),s=0===o?0:1-i/o;return a.getPointAt(s)}r++}return null},getLength:function(){var e=this.getCurveLengths();return e[e.length-1]},updateArcLengths:function(){this.needsUpdate=!0,this.cacheLengths=null,this.getCurveLengths()},getCurveLengths:function(){if(this.cacheLengths&&this.cacheLengths.length===this.curves.length)return this.cacheLengths;for(var e=[],t=0,n=0,r=this.curves.length;n1&&!n[n.length-1].equals(n[0])&&n.push(n[0]),n},copy:function(e){Rl.prototype.copy.call(this,e),this.curves=[];for(var t=0,n=e.curves.length;t0){var l=c.getPoint(0);l.equals(this.currentPoint)||this.lineTo(l.x,l.y)}this.curves.push(c);var h=c.getPoint(1);return this.currentPoint.copy(h),this},copy:function(e){return Jl.prototype.copy.call(this,e),this.currentPoint.copy(e.currentPoint),this},toJSON:function(){var e=Jl.prototype.toJSON.call(this);return e.currentPoint=this.currentPoint.toArray(),e},fromJSON:function(e){return Jl.prototype.fromJSON.call(this,e),this.currentPoint.fromArray(e.currentPoint),this}}),Ql.prototype=Object.assign(Object.create(Kl.prototype),{constructor:Ql,getPointsHoles:function(e){for(var t=[],n=0,r=this.holes.length;n0){var a=new Al(new xl(t));a.setCrossOrigin(this.crossOrigin);for(var o=0,s=e.length;o0?new ts(o,s):new ni(o,s);break;case"InstancedMesh":o=i(e.geometry),s=a(e.material);var c=e.count,l=e.instanceMatrix;(r=new hs(o,s,c)).instanceMatrix=new xr(new Float32Array(l.array),16);break;case"LOD":r=new es;break;case"Line":r=new gs(i(e.geometry),a(e.material),e.mode);break;case"LineLoop":r=new ws(i(e.geometry),a(e.material));break;case"LineSegments":r=new bs(i(e.geometry),a(e.material));break;case"PointCloud":case"Points":r=new As(i(e.geometry),a(e.material));break;case"Sprite":r=new Jo(a(e.material));break;case"Group":r=new Lo;break;default:r=new xn}if(r.uuid=e.uuid,void 0!==e.name&&(r.name=e.name),void 0!==e.matrix?(r.matrix.fromArray(e.matrix),void 0!==e.matrixAutoUpdate&&(r.matrixAutoUpdate=e.matrixAutoUpdate),r.matrixAutoUpdate&&r.matrix.decompose(r.position,r.quaternion,r.scale)):(void 0!==e.position&&r.position.fromArray(e.position),void 0!==e.rotation&&r.rotation.fromArray(e.rotation),void 0!==e.quaternion&&r.quaternion.fromArray(e.quaternion),void 0!==e.scale&&r.scale.fromArray(e.scale)),void 0!==e.castShadow&&(r.castShadow=e.castShadow),void 0!==e.receiveShadow&&(r.receiveShadow=e.receiveShadow),e.shadow&&(void 0!==e.shadow.bias&&(r.shadow.bias=e.shadow.bias),void 0!==e.shadow.radius&&(r.shadow.radius=e.shadow.radius),void 0!==e.shadow.mapSize&&r.shadow.mapSize.fromArray(e.shadow.mapSize),void 0!==e.shadow.camera&&(r.shadow.camera=this.parseObject(e.shadow.camera))),void 0!==e.visible&&(r.visible=e.visible),void 0!==e.frustumCulled&&(r.frustumCulled=e.frustumCulled),void 0!==e.renderOrder&&(r.renderOrder=e.renderOrder),void 0!==e.userData&&(r.userData=e.userData),void 0!==e.layers&&(r.layers.mask=e.layers),void 0!==e.children)for(var h=e.children,u=0;uNumber.EPSILON){if(l<0&&(o=t[a],c=-c,s=t[i],l=-l),e.ys.y)continue;if(e.y===o.y){if(e.x===o.x)return!0}else{var h=l*(e.x-o.x)-c*(e.y-o.y);if(0===h)return!0;if(h<0)continue;r=!r}}else{if(e.y!==o.y)continue;if(s.x<=e.x&&e.x<=o.x||o.x<=e.x&&e.x<=s.x)return!0}}return r}var i=bc.isClockWise,a=this.subPaths;if(0===a.length)return[];if(!0===t)return n(a);var o,s,c,l=[];if(1===a.length)return s=a[0],(c=new Ql).curves=s.curves,l.push(c),l;var h=!i(a[0].getPoints());h=e?!h:h;var u,p,d=[],f=[],m=[],v=0;f[v]=void 0,m[v]=[];for(var g=0,y=a.length;g1){for(var x=!1,b=[],w=0,_=f.length;w<_;w++)d[w]=[];for(w=0,_=f.length;w<_;w++)for(var M=m[w],S=0;S0&&(x||(m=d))}g=0;for(var L=f.length;g0){this.source.connect(this.filters[0]);for(var e=1,t=this.filters.length;e0){this.source.disconnect(this.filters[0]);for(var e=1,t=this.filters.length;e=.5)for(var a=0;a!==i;++a)e[t+a]=e[n+a]},_slerp:function(e,t,n,r){Dt.slerpFlat(e,t,e,t,e,n,r)},_lerp:function(e,t,n,r,i){for(var a=1-r,o=0;o!==i;++o){var s=t+o;e[s]=e[s]*a+e[n+o]*r}}});var Zh=new RegExp("[\\[\\]\\.:\\/]","g"),Jh="[^"+"\\[\\]\\.:\\/".replace("\\.","")+"]",Kh=/((?:WC+[\/:])*)/.source.replace("WC","[^\\[\\]\\.:\\/]"),Qh=/(WCOD+)?/.source.replace("WCOD",Jh),$h=/(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace("WC","[^\\[\\]\\.:\\/]"),eu=/\.(WC+)(?:\[(.+)\])?/.source.replace("WC","[^\\[\\]\\.:\\/]"),tu=new RegExp("^"+Kh+Qh+$h+eu+"$"),nu=["material","materials","bones"];function ru(e,t,n){var r=n||iu.parseTrackName(t);this._targetGroup=e,this._bindings=e.subscribe_(t,r)}function iu(e,t,n){this.path=t,this.parsedPath=n||iu.parseTrackName(t),this.node=iu.findNode(e,this.parsedPath.nodeName)||e,this.rootNode=e}function au(e,t,n){this._mixer=e,this._clip=t,this._localRoot=n||null;for(var r=t.tracks,i=r.length,a=new Array(i),o={endingStart:dt,endingEnd:dt},s=0;s!==i;++s){var c=r[s].createInterpolant(null);a[s]=c,c.settings=o}this._interpolantSettings=o,this._interpolants=a,this._propertyBindings=new Array(i),this._cacheIndex=null,this._byClipCacheIndex=null,this._timeScaleInterpolant=null,this._weightInterpolant=null,this.loop=pt,this._loopCount=-1,this._startTime=null,this.time=0,this.timeScale=1,this._effectiveTimeScale=1,this.weight=1,this._effectiveWeight=1,this.repetitions=1/0,this.paused=!1,this.enabled=!0,this.clampWhenFinished=!1,this.zeroSlopeAtStart=!0,this.zeroSlopeAtEnd=!0}function ou(e){this._root=e,this._initMemoryManager(),this._accuIndex=0,this.time=0,this.timeScale=1}function su(e){"string"==typeof e&&(console.warn("THREE.Uniform: Type parameter is no longer needed."),e=arguments[1]),this.value=e}function cu(e,t,n){Oo.call(this,e,t),this.meshPerAttribute=n||1}function lu(e,t){return e.distance-t.distance}function hu(e,t,n,r){if(!1!==e.visible&&(e.raycast(t,n),!0===r))for(var i=e.children,a=0,o=i.length;a=t){var h=t++,u=e[h];n[u.uuid]=l,e[l]=u,n[c]=h,e[h]=s;for(var p=0,d=i;p!==d;++p){var f=r[p],m=f[h],v=f[l];f[l]=m,f[h]=v}}}this.nCachedObjects_=t},uncache:function(){for(var e=this._objects,t=e.length,n=this.nCachedObjects_,r=this._indicesByUUID,i=this._bindings,a=i.length,o=0,s=arguments.length;o!==s;++o){var c=arguments[o],l=c.uuid,h=r[l];if(void 0!==h)if(delete r[l],h0)for(var c=this._interpolants,l=this._propertyBindings,h=0,u=c.length;h!==u;++h)c[h].evaluate(o),l[h].accumulate(r,s)}else this._updateWeight(e)},_updateWeight:function(e){var t=0;if(this.enabled){t=this.weight;var n=this._weightInterpolant;if(null!==n){var r=n.evaluate(e)[0];t*=r,e>n.parameterPositions[1]&&(this.stopFading(),0===r&&(this.enabled=!1))}}return this._effectiveWeight=t,t},_updateTimeScale:function(e){var t=0;if(!this.paused){t=this.timeScale;var n=this._timeScaleInterpolant;if(null!==n)t*=n.evaluate(e)[0],e>n.parameterPositions[1]&&(this.stopWarping(),0===t?this.paused=!0:this.timeScale=t)}return this._effectiveTimeScale=t,t},_updateTime:function(e){var t=this.time+e,n=this._clip.duration,r=this.loop,i=this._loopCount,a=2202===r;if(0===e)return-1===i?t:a&&1==(1&i)?n-t:t;if(r===ut){-1===i&&(this._loopCount=0,this._setEndings(!0,!0,!1));e:{if(t>=n)t=n;else{if(!(t<0)){this.time=t;break e}t=0}this.clampWhenFinished?this.paused=!0:this.enabled=!1,this.time=t,this._mixer.dispatchEvent({type:"finished",action:this,direction:e<0?-1:1})}}else{if(-1===i&&(e>=0?(i=0,this._setEndings(!0,0===this.repetitions,a)):this._setEndings(0===this.repetitions,!0,a)),t>=n||t<0){var o=Math.floor(t/n);t-=n*o,i+=Math.abs(o);var s=this.repetitions-i;if(s<=0)this.clampWhenFinished?this.paused=!0:this.enabled=!1,t=e>0?n:0,this.time=t,this._mixer.dispatchEvent({type:"finished",action:this,direction:e>0?1:-1});else{if(1===s){var c=e<0;this._setEndings(c,!c,a)}else this._setEndings(!1,!1,a);this._loopCount=i,this.time=t,this._mixer.dispatchEvent({type:"loop",action:this,loopDelta:o})}}else this.time=t;if(a&&1==(1&i))return n-t}return t},_setEndings:function(e,t,n){var r=this._interpolantSettings;n?(r.endingStart=2401,r.endingEnd=2401):(r.endingStart=e?this.zeroSlopeAtStart?2401:dt:2402,r.endingEnd=t?this.zeroSlopeAtEnd?2401:dt:2402)},_scheduleFading:function(e,t,n){var r=this._mixer,i=r.time,a=this._weightInterpolant;null===a&&(a=r._lendControlInterpolant(),this._weightInterpolant=a);var o=a.parameterPositions,s=a.sampleValues;return o[0]=i,s[0]=t,o[1]=i+e,s[1]=n,this}}),ou.prototype=Object.assign(Object.create(Pt.prototype),{constructor:ou,_bindAction:function(e,t){var n=e._localRoot||this._root,r=e._clip.tracks,i=r.length,a=e._propertyBindings,o=e._interpolants,s=n.uuid,c=this._bindingsByRootAndName,l=c[s];void 0===l&&(l={},c[s]=l);for(var h=0;h!==i;++h){var u=r[h],p=u.name,d=l[p];if(void 0!==d)a[h]=d;else{if(void 0!==(d=a[h])){null===d._cacheIndex&&(++d.referenceCount,this._addInactiveBinding(d,s,p));continue}var f=t&&t._propertyBindings[h].binding.parsedPath;++(d=new Yh(iu.create(n,p,f),u.ValueTypeName,u.getValueSize())).referenceCount,this._addInactiveBinding(d,s,p),a[h]=d}o[h].resultBuffer=d.buffer}},_activateAction:function(e){if(!this._isActiveAction(e)){if(null===e._cacheIndex){var t=(e._localRoot||this._root).uuid,n=e._clip.uuid,r=this._actionsByClip[n];this._bindAction(e,r&&r.knownActions[0]),this._addInactiveAction(e,n,t)}for(var i=e._propertyBindings,a=0,o=i.length;a!==o;++a){var s=i[a];0==s.useCount++&&(this._lendBinding(s),s.saveOriginalState())}this._lendAction(e)}},_deactivateAction:function(e){if(this._isActiveAction(e)){for(var t=e._propertyBindings,n=0,r=t.length;n!==r;++n){var i=t[n];0==--i.useCount&&(i.restoreOriginalState(),this._takeBackBinding(i))}this._takeBackAction(e)}},_initMemoryManager:function(){this._actions=[],this._nActiveActions=0,this._actionsByClip={},this._bindings=[],this._nActiveBindings=0,this._bindingsByRootAndName={},this._controlInterpolants=[],this._nActiveControlInterpolants=0;var e=this;this.stats={actions:{get total(){return e._actions.length},get inUse(){return e._nActiveActions}},bindings:{get total(){return e._bindings.length},get inUse(){return e._nActiveBindings}},controlInterpolants:{get total(){return e._controlInterpolants.length},get inUse(){return e._nActiveControlInterpolants}}}},_isActiveAction:function(e){var t=e._cacheIndex;return null!==t&&tthis.max.x||e.ythis.max.y)},containsBox:function(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y},getParameter:function(e,t){return void 0===t&&(console.warn("THREE.Box2: .getParameter() target is now required"),t=new Ot),t.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y))},intersectsBox:function(e){return!(e.max.xthis.max.x||e.max.ythis.max.y)},clampPoint:function(e,t){return void 0===t&&(console.warn("THREE.Box2: .clampPoint() target is now required"),t=new Ot),t.copy(e).clamp(this.min,this.max)},distanceToPoint:function(e){return uu.copy(e).clamp(this.min,this.max).sub(e).length()},intersect:function(e){return this.min.max(e.min),this.max.min(e.max),this},union:function(e){return this.min.min(e.min),this.max.max(e.max),this},translate:function(e){return this.min.add(e),this.max.add(e),this},equals:function(e){return e.min.equals(this.min)&&e.max.equals(this.max)}});var du=new Bt,fu=new Bt;function mu(e,t){this.start=void 0!==e?e:new Bt,this.end=void 0!==t?t:new Bt}function vu(e){xn.call(this),this.material=e,this.render=function(){}}Object.assign(mu.prototype,{set:function(e,t){return this.start.copy(e),this.end.copy(t),this},clone:function(){return(new this.constructor).copy(this)},copy:function(e){return this.start.copy(e.start),this.end.copy(e.end),this},getCenter:function(e){return void 0===e&&(console.warn("THREE.Line3: .getCenter() target is now required"),e=new Bt),e.addVectors(this.start,this.end).multiplyScalar(.5)},delta:function(e){return void 0===e&&(console.warn("THREE.Line3: .delta() target is now required"),e=new Bt),e.subVectors(this.end,this.start)},distanceSq:function(){return this.start.distanceToSquared(this.end)},distance:function(){return this.start.distanceTo(this.end)},at:function(e,t){return void 0===t&&(console.warn("THREE.Line3: .at() target is now required"),t=new Bt),this.delta(t).multiplyScalar(e).add(this.start)},closestPointToPointParameter:function(e,t){du.subVectors(e,this.start),fu.subVectors(this.end,this.start);var n=fu.dot(fu),r=fu.dot(du)/n;return t&&(r=It.clamp(r,0,1)),r},closestPointToPoint:function(e,t,n){var r=this.closestPointToPointParameter(e,t);return void 0===n&&(console.warn("THREE.Line3: .closestPointToPoint() target is now required"),n=new Bt),this.delta(n).multiplyScalar(r).add(this.start)},applyMatrix4:function(e){return this.start.applyMatrix4(e),this.end.applyMatrix4(e),this},equals:function(e){return e.start.equals(this.start)&&e.end.equals(this.end)}}),vu.prototype=Object.create(xn.prototype),vu.prototype.constructor=vu,vu.prototype.isImmediateRenderObject=!0;var gu=new Bt;function yu(e,t){xn.call(this),this.light=e,this.light.updateMatrixWorld(),this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.color=t;for(var n=new Fr,r=[0,0,0,0,0,1,0,0,0,1,0,1,0,0,0,-1,0,1,0,0,0,0,1,1,0,0,0,0,-1,1],i=0,a=1;i<32;i++,a++){var o=i/32*Math.PI*2,s=a/32*Math.PI*2;r.push(Math.cos(o),Math.sin(o),1,Math.cos(s),Math.sin(s),1)}n.setAttribute("position",new Ar(r,3));var c=new us({fog:!1});this.cone=new bs(n,c),this.add(this.cone),this.update()}yu.prototype=Object.create(xn.prototype),yu.prototype.constructor=yu,yu.prototype.dispose=function(){this.cone.geometry.dispose(),this.cone.material.dispose()},yu.prototype.update=function(){this.light.updateMatrixWorld();var e=this.light.distance?this.light.distance:1e3,t=e*Math.tan(this.light.angle);this.cone.scale.set(t,t,e),gu.setFromMatrixPosition(this.light.target.matrixWorld),this.cone.lookAt(gu),void 0!==this.color?this.cone.material.color.set(this.color):this.cone.material.color.copy(this.light.color)};var xu=new Bt,bu=new en,wu=new en;function _u(e){for(var t=function e(t){var n=[];t&&t.isBone&&n.push(t);for(var r=0;r.99999)this.quaternion.set(0,0,0,1);else if(e.y<-.99999)this.quaternion.set(1,0,0,0);else{ju.set(e.z,0,-e.x).normalize();var t=Math.acos(e.y);this.quaternion.setFromAxisAngle(ju,t)}},Wu.prototype.setLength=function(e,t,n){void 0===t&&(t=.2*e),void 0===n&&(n=.2*t),this.line.scale.set(1,Math.max(1e-4,e-t),1),this.line.updateMatrix(),this.cone.scale.set(n,t,n),this.cone.position.y=e,this.cone.updateMatrix()},Wu.prototype.setColor=function(e){this.line.material.color.set(e),this.cone.material.color.set(e)},Wu.prototype.copy=function(e){return xn.prototype.copy.call(this,e,!1),this.line.copy(e.line),this.cone.copy(e.cone),this},Wu.prototype.clone=function(){return(new this.constructor).copy(this)},qu.prototype=Object.create(bs.prototype),qu.prototype.constructor=qu;var Xu,Yu,Zu,Ju,Ku=4,Qu=8,$u=Math.pow(2,Qu),ep=[.125,.215,.35,.446,.526,.582],tp=Qu-Ku+1+ep.length,np=20,rp={[ft]:0,[mt]:1,[gt]:2,[xt]:3,[bt]:4,[wt]:5,[vt]:6},ip=new oh,ap=(Xu=np,Yu=new Float32Array(Xu),Zu=new Bt(0,1,0),(Ju=new Xc({defines:{n:Xu},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:Yu},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:Zu},inputEncoding:{value:rp[ft]},outputEncoding:{value:rp[ft]}},vertexShader:Ap(),fragmentShader:`\nprecision mediump float;\nprecision mediump int;\nvarying vec3 vOutputDirection;\nuniform sampler2D envMap;\nuniform int samples;\nuniform float weights[n];\nuniform bool latitudinal;\nuniform float dTheta;\nuniform float mipInt;\nuniform vec3 poleAxis;\n\n${Lp()}\n\n#define ENVMAP_TYPE_CUBE_UV\n#include \n\nvoid main() {\n\tgl_FragColor = vec4(0.0);\n\tfor (int i = 0; i < n; i++) {\n\t\tif (i >= samples)\n\t\t\tbreak;\n\t\tfor (int dir = -1; dir < 2; dir += 2) {\n\t\t\tif (i == 0 && dir == 1)\n\t\t\t\tcontinue;\n\t\t\tvec3 axis = latitudinal ? poleAxis : cross(poleAxis, vOutputDirection);\n\t\t\tif (all(equal(axis, vec3(0.0))))\n\t\t\t\taxis = cross(vec3(0.0, 1.0, 0.0), vOutputDirection);\n\t\t\taxis = normalize(axis);\n\t\t\tfloat theta = dTheta * float(dir * i);\n\t\t\tfloat cosTheta = cos(theta);\n\t\t\t// Rodrigues' axis-angle rotation\n\t\t\tvec3 sampleDirection = vOutputDirection * cosTheta\n\t\t\t\t\t+ cross(axis, vOutputDirection) * sin(theta)\n\t\t\t\t\t+ axis * dot(axis, vOutputDirection) * (1.0 - cosTheta);\n\t\t\tgl_FragColor.rgb +=\n\t\t\t\t\tweights[i] * bilinearCubeUV(envMap, sampleDirection, mipInt);\n\t\t}\n\t}\n\tgl_FragColor = linearToOutputTexel(gl_FragColor);\n}\n\t\t`,blending:m,depthTest:!1,depthWrite:!1})).type="SphericalGaussianBlur",Ju),op=null,sp=null,{_lodPlanes:cp,_sizeLods:lp,_sigmas:hp}=function(){for(var e=[],t=[],n=[],r=Qu,i=0;iQu-Ku?o=ep[i-Qu+Ku-1]:0==i&&(o=0),n.push(o);for(var s=1/(a-1),c=-s/2,l=1+s/2,h=[c,c,l,c,l,l,c,c,l,l,c,l],u=new Float32Array(108),p=new Float32Array(72),d=new Float32Array(36),f=0;f<6;f++){var m=f%3*2/3-1,v=f>2?0:-1,g=[m,v,0,m+2/3,v,0,m+2/3,v+1,0,m,v,0,m+2/3,v+1,0,m,v+1,0];u.set(g,18*f),p.set(h,12*f);var y=[f,f,f,f,f,f];d.set(y,6*f)}var x=new Fr;x.setAttribute("position",new xr(u,3)),x.setAttribute("uv",new xr(p,2)),x.setAttribute("faceIndex",new xr(d,1)),e.push(x),r>Ku&&r--}return{_lodPlanes:e,_sizeLods:t,_sigmas:n}}(),up=null,pp=null,dp=(1+Math.sqrt(5))/2,fp=1/dp,mp=[new Bt(1,1,1),new Bt(-1,1,1),new Bt(1,1,-1),new Bt(-1,1,-1),new Bt(0,dp,fp),new Bt(0,dp,-fp),new Bt(fp,0,dp),new Bt(-fp,0,dp),new Bt(dp,fp,0),new Bt(-dp,fp,0)];function vp(e){pp=e,xp(ap)}function gp(e){var t={magFilter:he,minFilter:he,generateMipmaps:!1,type:e?e.type:ve,format:e?e.format:Oe,encoding:e?e.encoding:gt,depthBuffer:!1,stencilBuffer:!1},n=bp(t);return n.depthBuffer=!e,up=bp(t),n}function yp(){up.dispose(),pp.setRenderTarget(null);var e=pp.getSize(new Ot);pp.setViewport(0,0,e.x,e.y)}function xp(e){var t=new bn;t.add(new ni(cp[0],e)),pp.compile(t,ip)}function bp(e){var t=new Wt(3*$u,3*$u,e);return t.texture.mapping=ae,t.texture.name="PMREM.cubeUv",t.scissorTest=!0,t}function wp(e,t,n,r){var i=1/pp.getPixelRatio();e*=i,t*=i,n*=i,r*=i,pp.setViewport(e,t,n,r),pp.setScissor(e,t,n,r)}function _p(e){var t=pp.autoClear;pp.autoClear=!1;for(var n=1;nnp&&console.warn(`sigmaRadians, ${i}, is too large and will clip, as it requested ${p} samples when the maximum is set to ${np}`);for(var d=[],f=0,m=0;mQu-Ku?r-Qu+Ku:0));pp.setRenderTarget(t),wp(v,x,3*y,2*y),pp.render(s,ip)}function Tp(){var e=new Xc({uniforms:{envMap:{value:null},texelSize:{value:new Ot(1,1)},inputEncoding:{value:rp[ft]},outputEncoding:{value:rp[ft]}},vertexShader:Ap(),fragmentShader:`\nprecision mediump float;\nprecision mediump int;\nvarying vec3 vOutputDirection;\nuniform sampler2D envMap;\nuniform vec2 texelSize;\n\n${Lp()}\n\n#define RECIPROCAL_PI 0.31830988618\n#define RECIPROCAL_PI2 0.15915494\n\nvoid main() {\n\tgl_FragColor = vec4(0.0);\n\tvec3 outputDirection = normalize(vOutputDirection);\n\tvec2 uv;\n\tuv.y = asin(clamp(outputDirection.y, -1.0, 1.0)) * RECIPROCAL_PI + 0.5;\n\tuv.x = atan(outputDirection.z, outputDirection.x) * RECIPROCAL_PI2 + 0.5;\n\tvec2 f = fract(uv / texelSize - 0.5);\n\tuv -= f * texelSize;\n\tvec3 tl = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\n\tuv.x += texelSize.x;\n\tvec3 tr = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\n\tuv.y += texelSize.y;\n\tvec3 br = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\n\tuv.x -= texelSize.x;\n\tvec3 bl = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\n\tvec3 tm = mix(tl, tr, f.x);\n\tvec3 bm = mix(bl, br, f.x);\n\tgl_FragColor.rgb = mix(tm, bm, f.y);\n\tgl_FragColor = linearToOutputTexel(gl_FragColor);\n}\n\t\t`,blending:m,depthTest:!1,depthWrite:!1});return e.type="EquirectangularToCubeUV",e}function Ep(){var e=new Xc({uniforms:{envMap:{value:null},inputEncoding:{value:rp[ft]},outputEncoding:{value:rp[ft]}},vertexShader:Ap(),fragmentShader:`\nprecision mediump float;\nprecision mediump int;\nvarying vec3 vOutputDirection;\nuniform samplerCube envMap;\n\n${Lp()}\n\nvoid main() {\n\tgl_FragColor = vec4(0.0);\n\tgl_FragColor.rgb = envMapTexelToLinear(textureCube(envMap, vec3( - vOutputDirection.x, vOutputDirection.yz ))).rgb;\n\tgl_FragColor = linearToOutputTexel(gl_FragColor);\n}\n\t\t`,blending:m,depthTest:!1,depthWrite:!1});return e.type="CubemapToCubeUV",e}function Ap(){return"\nprecision mediump float;\nprecision mediump int;\nattribute vec3 position;\nattribute vec2 uv;\nattribute float faceIndex;\nvarying vec3 vOutputDirection;\nvec3 getDirection(vec2 uv, float face) {\n\tuv = 2.0 * uv - 1.0;\n\tvec3 direction = vec3(uv, 1.0);\n\tif (face == 0.0) {\n\t\tdirection = direction.zyx;\n\t\tdirection.z *= -1.0;\n\t} else if (face == 1.0) {\n\t\tdirection = direction.xzy;\n\t\tdirection.z *= -1.0;\n\t} else if (face == 3.0) {\n\t\tdirection = direction.zyx;\n\t\tdirection.x *= -1.0;\n\t} else if (face == 4.0) {\n\t\tdirection = direction.xzy;\n\t\tdirection.y *= -1.0;\n\t} else if (face == 5.0) {\n\t\tdirection.xz *= -1.0;\n\t}\n\treturn direction;\n}\nvoid main() {\n\tvOutputDirection = getDirection(uv, faceIndex);\n\tgl_Position = vec4( position, 1.0 );\n}\n\t"}function Lp(){return"\nuniform int inputEncoding;\nuniform int outputEncoding;\n\n#include \n\nvec4 inputTexelToLinear(vec4 value){\n\tif(inputEncoding == 0){\n\t\treturn value;\n\t}else if(inputEncoding == 1){\n\t\treturn sRGBToLinear(value);\n\t}else if(inputEncoding == 2){\n\t\treturn RGBEToLinear(value);\n\t}else if(inputEncoding == 3){\n\t\treturn RGBMToLinear(value, 7.0);\n\t}else if(inputEncoding == 4){\n\t\treturn RGBMToLinear(value, 16.0);\n\t}else if(inputEncoding == 5){\n\t\treturn RGBDToLinear(value, 256.0);\n\t}else{\n\t\treturn GammaToLinear(value, 2.2);\n\t}\n}\n\nvec4 linearToOutputTexel(vec4 value){\n\tif(outputEncoding == 0){\n\t\treturn value;\n\t}else if(outputEncoding == 1){\n\t\treturn LinearTosRGB(value);\n\t}else if(outputEncoding == 2){\n\t\treturn LinearToRGBE(value);\n\t}else if(outputEncoding == 3){\n\t\treturn LinearToRGBM(value, 7.0);\n\t}else if(outputEncoding == 4){\n\t\treturn LinearToRGBM(value, 16.0);\n\t}else if(outputEncoding == 5){\n\t\treturn LinearToRGBD(value, 256.0);\n\t}else{\n\t\treturn LinearToGamma(value, 2.2);\n\t}\n}\n\nvec4 envMapTexelToLinear(vec4 color) {\n\treturn inputTexelToLinear(color);\n}\n\t"}vp.prototype={constructor:vp,fromScene:function(e,t=0,n=.1,r=100){var i=gp();return function(e,t,n,r){var i=new gi(90,1,t,n),a=[1,1,1,1,-1,1],o=[1,1,-1,-1,-1,1],s=pp.outputEncoding,c=pp.toneMapping,l=pp.toneMappingExposure,h=pp.getClearColor(),u=pp.getClearAlpha();pp.toneMapping=Z,pp.toneMappingExposure=1,pp.outputEncoding=ft,e.scale.z*=-1;var p=e.background;if(p&&p.isColor){p.convertSRGBToLinear();var d=Math.max(p.r,p.g,p.b),f=Math.min(Math.max(Math.ceil(Math.log2(d)),-128),127);p=p.multiplyScalar(Math.pow(2,-f));var m=(f+128)/255;pp.setClearColor(p,m),e.background=null}pp.setRenderTarget(r);for(var v=0;v<6;v++){var g=v%3;0==g?(i.up.set(0,a[v],0),i.lookAt(o[v],0,0)):1==g?(i.up.set(0,0,a[v]),i.lookAt(0,o[v],0)):(i.up.set(0,a[v],0),i.lookAt(0,0,o[v])),wp(g*$u,v>2?$u:0,$u,$u),pp.render(e,i)}pp.toneMapping=c,pp.toneMappingExposure=l,pp.outputEncoding=s,pp.setClearColor(h,u),e.scale.z*=-1}(e,n,r,i),t>0&&Mp(i,0,0,t),_p(i),yp(),i.scissorTest=!1,i},fromEquirectangular:function(e){return e.magFilter=he,e.minFilter=he,e.generateMipmaps=!1,this.fromCubemap(e)},fromCubemap:function(e){var t=gp(e);return function(e,t){var n=new bn;e.isCubeTexture?null==sp&&(sp=Ep()):null==op&&(op=Tp());var r=e.isCubeTexture?sp:op;n.add(new ni(cp[0],r));var i=r.uniforms;i.envMap.value=e,e.isCubeTexture||i.texelSize.value.set(1/e.image.width,1/e.image.height);i.inputEncoding.value=rp[e.encoding],i.outputEncoding.value=rp[e.encoding],pp.setRenderTarget(t),wp(0,0,3*$u,2*$u),pp.render(n,ip)}(e,t),_p(t),yp(),t.scissorTest=!1,t},compileCubemapShader:function(){null==sp&&xp(sp=Ep())},compileEquirectangularShader:function(){null==op&&xp(op=Tp())},dispose:function(){ap.dispose(),null!=sp&&sp.dispose(),null!=op&&op.dispose();for(var e=0;e=a+1e3&&(s.update(1e3*o/(e-a),100),a=e,o=0,l)){var t=performance.memory;l.update(t.usedJSHeapSize/1048576,t.jsHeapSizeLimit/1048576)}return e},update:function(){i=this.end()},domElement:t,setMode:r}};Rp.Panel=function(e,t,n){var r=1/0,i=0,a=Math.round,o=a(window.devicePixelRatio||1),s=80*o,c=48*o,l=3*o,h=2*o,u=3*o,p=15*o,d=74*o,f=30*o,m=document.createElement("canvas");m.width=s,m.height=c,m.style.cssText="width:80px;height:48px";var v=m.getContext("2d");return v.font="bold "+9*o+"px Helvetica,Arial,sans-serif",v.textBaseline="top",v.fillStyle=n,v.fillRect(0,0,s,c),v.fillStyle=t,v.fillText(e,l,h),v.fillRect(u,p,d,f),v.fillStyle=n,v.globalAlpha=.9,v.fillRect(u,p,d,f),{dom:m,update:function(c,g){r=Math.min(r,c),i=Math.max(i,c),v.fillStyle=n,v.globalAlpha=1,v.fillRect(0,0,s,p),v.fillStyle=t,v.fillText(a(c)+" "+e+" ("+a(r)+"-"+a(i)+")",l,h),v.drawImage(m,u+o,p,d-o,f,u,p,d-o,f),v.fillRect(u+d-o,p,o,f),v.fillStyle=n,v.globalAlpha=.9,v.fillRect(u+d-o,p,o,a((1-c/g)*f))}}};var Cp={},Ip=void 0,Op=Cp; -/** @license zlib.js 2012 - imaya [ https://github.com/imaya/zlib.js ] The MIT License */function Dp(e,t){var n,r=e.split("."),i=Op;!(r[0]in i)&&i.execScript&&i.execScript("var "+r[0]);for(;r.length&&(n=r.shift());)r.length||t===Ip?i=i[n]?i[n]:i[n]={}:i[n]=t}var Np="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Uint32Array&&"undefined"!=typeof DataView;function zp(e){var t,n,r,i,a,o,s,c,l,h,u=e.length,p=0,d=Number.POSITIVE_INFINITY;for(c=0;cp&&(p=e[c]),e[c]>=1;for(h=r<<16|c,l=o;l>>=1){case 0:var t=this.input,n=this.a,r=this.c,i=this.b,a=t.length,o=Ip,s=r.length,c=Ip;if(this.d=this.f=0,n+1>=a)throw Error("invalid uncompressed block header: LEN");if(o=t[n++]|t[n++]<<8,n+1>=a)throw Error("invalid uncompressed block header: NLEN");if(o===~(t[n++]|t[n++]<<8))throw Error("invalid uncompressed block header: length verify");if(n+o>t.length)throw Error("input buffer is broken");switch(this.i){case Fp:for(;i+o>r.length;){if(o-=c=s-i,Np)r.set(t.subarray(n,n+c),i),i+=c,n+=c;else for(;c--;)r[i++]=t[n++];this.b=i,r=this.e(),i=this.b}break;case Up:for(;i+o>r.length;)r=this.e({p:2});break;default:throw Error("invalid inflate mode")}if(Np)r.set(t.subarray(n,n+o),i),i+=o,n+=o;else for(;o--;)r[i++]=t[n++];this.a=n,this.b=i,this.c=r;break;case 1:this.j(nd,id);break;case 2:var l,h,u,p,d=ad(this,5)+257,f=ad(this,5)+1,m=ad(this,4)+4,v=new(Np?Uint8Array:Array)(jp.length),g=Ip,y=Ip,x=Ip,b=Ip,w=Ip;for(w=0;w=Hp?8:255>=Hp?9:279>=Hp?7:8;var ed,td,nd=zp($p),rd=new(Np?Uint8Array:Array)(30);for(ed=0,td=rd.length;ed=s)throw Error("input buffer is broken");r|=a[o++]<>>t,e.d=i-t,e.a=o,n}function od(e,t){for(var n,r,i=e.f,a=e.d,o=e.input,s=e.a,c=o.length,l=t[0],h=t[1];a=c);)i|=o[s++]<>>16)>a)throw Error("invalid code length: "+r);return e.f=i>>r,e.d=a-r,e.a=s,65535&n}function sd(e,t){var n,r;switch(this.input=e,this.a=0,!t&&(t={})||(t.index&&(this.a=t.index),t.verify&&(this.A=t.verify)),n=e[this.a++],r=e[this.a++],15&n){case cd:this.method=cd;break;default:throw Error("unsupported compression method")}if(0!=((n<<8)+r)%31)throw Error("invalid fcheck flag:"+((n<<8)+r)%31);if(32&r)throw Error("fdict flag is not supported");this.q=new Bp(e,{index:this.a,bufferSize:t.bufferSize,bufferType:t.bufferType,resize:t.resize})}Bp.prototype.j=function(e,t){var n=this.c,r=this.b;this.o=e;for(var i,a,o,s,c=n.length-258;256!==(i=od(this,e));)if(256>i)r>=c&&(this.b=r,n=this.e(),r=this.b),n[r++]=i;else for(s=qp[a=i-257],0=c&&(this.b=r,n=this.e(),r=this.b);s--;)n[r]=n[r++-o];for(;8<=this.d;)this.d-=8,this.a--;this.b=r},Bp.prototype.w=function(e,t){var n=this.c,r=this.b;this.o=e;for(var i,a,o,s,c=n.length;256!==(i=od(this,e));)if(256>i)r>=c&&(c=(n=this.e()).length),n[r++]=i;else for(s=qp[a=i-257],0c&&(c=(n=this.e()).length);s--;)n[r]=n[r++-o];for(;8<=this.d;)this.d-=8,this.a--;this.b=r},Bp.prototype.e=function(){var e,t,n=new(Np?Uint8Array:Array)(this.b-32768),r=this.b-32768,i=this.c;if(Np)n.set(i.subarray(32768,n.length));else for(e=0,t=n.length;ee;++e)i[e]=i[r+e];return this.b=32768,i},Bp.prototype.z=function(e){var t,n,r,i=this.input.length/this.a+1|0,a=this.input,o=this.c;return e&&("number"==typeof e.p&&(i=e.p),"number"==typeof e.u&&(i+=e.u)),2>i?n=(r=(a.length-this.a)/this.o[2]/2*258|0)t&&(this.c.length=t),e=this.c),this.buffer=e},sd.prototype.k=function(){var e,t,n=this.input;if(e=this.q.k(),this.a=this.q.a,this.A){t=(n[this.a++]<<24|n[this.a++]<<16|n[this.a++]<<8|n[this.a++])>>>0;var r=e;if("string"==typeof r){var i,a,o=r.split("");for(i=0,a=o.length;i>>0;r=o}for(var s,c=1,l=0,h=r.length,u=0;0>>0)throw Error("invalid adler-32 checksum")}return e};var cd=8;Dp("Zlib.Inflate",sd),Dp("Zlib.Inflate.prototype.decompress",sd.prototype.k);var ld,hd,ud,pd,dd={ADAPTIVE:Gp.s,BLOCK:Gp.t};if(Object.keys)ld=Object.keys(dd);else for(hd in ld=[],ud=0,dd)ld[ud++]=hd;for(ud=0,pd=ld.length;ud=n[r])return r-1;if(t<=n[e])return e;for(var i=e,a=r,o=Math.floor((i+a)/2);t=n[o+1];)t=b&&(x[y][0]=x[g][0]/c[M+1][_],w=x[y][0]*c[_][M]);var S=d-1<=M?b-1:n-d;for(u=_>=-1?1:-_;u<=S;++u)x[y][u]=(x[g][u]-x[g][u-1])/c[M+1][_+u],w+=x[y][u]*c[_+u][M];d<=M&&(x[y][b]=-x[g][b-1]/c[M+1][d],w+=x[y][b]*c[d][M]),s[b][d]=w;u=g;g=y,y=u}}for(d=n,b=1;b<=r;++b){for(u=0;u<=n;++u)s[b][u]*=d;d*=n-b}return s},calcBSplineDerivatives:function(e,t,n,r,i){for(var a=i=o.length&&o===w(a,0,o.length))e=(new c).parse(t);else{var r=w(t);if(!function(e){var t=["K","a","y","d","a","r","a","\\","F","B","X","\\","B","i","n","a","r","y","\\","\\"],n=0;for(var r=0;r0,s="string"==typeof a.Content&&""!==a.Content;if(o||s){var c=this.parseImage(r[i]);n[a.RelativeFilename||a.Filename]=c}}}}for(var l in t){var h=t[l];void 0!==n[h]?t[l]=n[h]:t[l]=t[l].split("\\").pop()}return t},parseImage:function(e){var t,n=e.Content,r=e.RelativeFilename||e.Filename,i=r.slice(r.lastIndexOf(".")+1).toLowerCase();switch(i){case"bmp":t="image/bmp";break;case"jpg":case"jpeg":t="image/jpeg";break;case"png":t="image/png";break;case"tif":t="image/tiff";break;case"tga":null===this.manager.getHandler(".tga")&&console.warn("FBXLoader: TGA loader not found, skipping ",r),t="image/tga";break;default:return void console.warn('FBXLoader: Image type "'+i+'" is not supported.')}if("string"==typeof n)return"data:"+t+";base64,"+n;var a=new Uint8Array(n);return window.URL.createObjectURL(new Blob([a],{type:t}))},parseTextures:function(t){var n=new Map;if("Texture"in e.Objects){var r=e.Objects.Texture;for(var i in r){var a=this.parseTexture(r[i],t);n.set(parseInt(i),a)}}return n},parseTexture:function(e,t){var n=this.loadTexture(e,t);n.ID=e.id,n.name=e.attrName;var r=e.WrapModeU,i=e.WrapModeV,a=void 0!==r?r.value:0,o=void 0!==i?i.value:0;if(n.wrapS=0===a?se:ce,n.wrapT=0===o?se:ce,"Scaling"in e){var s=e.Scaling.value;n.repeat.x=s[0],n.repeat.y=s[1]}return n},loadTexture:function(e,n){var r,i,a=this.textureLoader.path,o=t.get(e.id).children;void 0!==o&&o.length>0&&void 0!==n[o[0].ID]&&(0!==(r=n[o[0].ID]).indexOf("blob:")&&0!==r.indexOf("data:")||this.textureLoader.setPath(void 0));var s=e.FileName.slice(-3).toLowerCase();if("tga"===s){var c=this.manager.getHandler(".tga");null===c?(console.warn("FBXLoader: TGA loader not found, creating placeholder texture for",e.RelativeFilename),i=new Vt):i=c.load(r)}else"psd"===s?(console.warn("FBXLoader: PSD textures are not supported, creating placeholder texture for",e.RelativeFilename),i=new Vt):i=this.textureLoader.load(r);return this.textureLoader.setPath(a),i},parseMaterials:function(t){var n=new Map;if("Material"in e.Objects){var r=e.Objects.Material;for(var i in r){var a=this.parseMaterial(r[i],t);null!==a&&n.set(parseInt(i),a)}}return n},parseMaterial:function(e,n){var r=e.id,i=e.attrName,a=e.ShadingModel;if("object"==typeof a&&(a=a.value),!t.has(r))return null;var o,s=this.parseParameters(e,n,r);switch(a.toLowerCase()){case"phong":o=new Jc;break;case"lambert":o=new $c;break;default:console.warn('THREE.FBXLoader: unknown material type "%s". Defaulting to MeshPhongMaterial.',a),o=new Jc}return o.setValues(s),o.name=i,o},parseParameters:function(e,n,r){var i={};e.BumpFactor&&(i.bumpScale=e.BumpFactor.value),e.Diffuse?i.color=(new hr).fromArray(e.Diffuse.value):e.DiffuseColor&&"Color"===e.DiffuseColor.type&&(i.color=(new hr).fromArray(e.DiffuseColor.value)),e.DisplacementFactor&&(i.displacementScale=e.DisplacementFactor.value),e.Emissive?i.emissive=(new hr).fromArray(e.Emissive.value):e.EmissiveColor&&"Color"===e.EmissiveColor.type&&(i.emissive=(new hr).fromArray(e.EmissiveColor.value)),e.EmissiveFactor&&(i.emissiveIntensity=parseFloat(e.EmissiveFactor.value)),e.Opacity&&(i.opacity=parseFloat(e.Opacity.value)),i.opacity<1&&(i.transparent=!0),e.ReflectionFactor&&(i.reflectivity=e.ReflectionFactor.value),e.Shininess&&(i.shininess=e.Shininess.value),e.Specular?i.specular=(new hr).fromArray(e.Specular.value):e.SpecularColor&&"Color"===e.SpecularColor.type&&(i.specular=(new hr).fromArray(e.SpecularColor.value));var a=this;return t.get(r).children.forEach((function(e){var t=e.relationship;switch(t){case"Bump":i.bumpMap=a.getTexture(n,e.ID);break;case"Maya|TEX_ao_map":i.aoMap=a.getTexture(n,e.ID);break;case"DiffuseColor":case"Maya|TEX_color_map":i.map=a.getTexture(n,e.ID),i.map.encoding=mt;break;case"DisplacementColor":i.displacementMap=a.getTexture(n,e.ID);break;case"EmissiveColor":i.emissiveMap=a.getTexture(n,e.ID),i.emissiveMap.encoding=mt;break;case"NormalMap":case"Maya|TEX_normal_map":i.normalMap=a.getTexture(n,e.ID);break;case"ReflectionColor":i.envMap=a.getTexture(n,e.ID),i.envMap.mapping=ne,i.envMap.encoding=mt;break;case"SpecularColor":i.specularMap=a.getTexture(n,e.ID),i.specularMap.encoding=mt;break;case"TransparentColor":i.alphaMap=a.getTexture(n,e.ID),i.transparent=!0;break;case"AmbientColor":case"ShininessExponent":case"SpecularFactor":case"VectorDisplacementColor":default:console.warn("THREE.FBXLoader: %s map is not supported in three.js, skipping texture.",t)}})),i},getTexture:function(n,r){return"LayeredTexture"in e.Objects&&r in e.Objects.LayeredTexture&&(console.warn("THREE.FBXLoader: layered textures are not supported in three.js. Discarding all but first layer."),r=t.get(r).children[0].ID),n.get(r)},parseDeformers:function(){var n={},r={};if("Deformer"in e.Objects){var i=e.Objects.Deformer;for(var a in i){var o=i[a],s=t.get(parseInt(a));if("Skin"===o.attrType){var c=this.parseSkeleton(s,i);c.ID=a,s.parents.length>1&&console.warn("THREE.FBXLoader: skeleton attached to more than one geometry is not supported."),c.geometryID=s.parents[0].ID,n[a]=c}else if("BlendShape"===o.attrType){var l={id:a};l.rawTargets=this.parseMorphTargets(s,i),l.id=a,s.parents.length>1&&console.warn("THREE.FBXLoader: morph target attached to more than one geometry is not supported."),r[a]=l}}}return{skeletons:n,morphTargets:r}},parseSkeleton:function(e,t){var n=[];return e.children.forEach((function(e){var r=t[e.ID];if("Cluster"===r.attrType){var i={ID:e.ID,indices:[],weights:[],transformLink:(new en).fromArray(r.TransformLink.a)};"Indexes"in r&&(i.indices=r.Indexes.a,i.weights=r.Weights.a),n.push(i)}})),{rawBones:n,bones:[]}},parseMorphTargets:function(e,n){for(var r=[],i=0;i1?a=o:o.length>0?a=o[0]:(a=new Jc({color:13421772}),o.push(a)),"color"in i.attributes&&o.forEach((function(e){e.vertexColors=f})),i.FBX_Deformer?(o.forEach((function(e){e.skinning=!0})),(r=new ts(i,a)).normalizeSkinWeights()):r=new ni(i,a),r},createCurve:function(e,t){return new gs(e.children.reduce((function(e,n){return t.has(n.ID)&&(e=t.get(n.ID)),e}),null),new us({color:3342591,linewidth:1}))},getTransformData:function(e,t){var n={};"InheritType"in t&&(n.inheritType=parseInt(t.InheritType.value)),n.eulerOrder="RotationOrder"in t?x(t.RotationOrder.value):"ZYX","Lcl_Translation"in t&&(n.translation=t.Lcl_Translation.value),"PreRotation"in t&&(n.preRotation=t.PreRotation.value),"Lcl_Rotation"in t&&(n.rotation=t.Lcl_Rotation.value),"PostRotation"in t&&(n.postRotation=t.PostRotation.value),"Lcl_Scaling"in t&&(n.scale=t.Lcl_Scaling.value),"ScalingOffset"in t&&(n.scalingOffset=t.ScalingOffset.value),"ScalingPivot"in t&&(n.scalingPivot=t.ScalingPivot.value),"RotationOffset"in t&&(n.rotationOffset=t.RotationOffset.value),"RotationPivot"in t&&(n.rotationPivot=t.RotationPivot.value),e.userData.transformData=n},setLookAtProperties:function(r,i){"LookAtProperty"in i&&t.get(r.ID).children.forEach((function(t){if("LookAtProperty"===t.relationship){var i=e.Objects.Model[t.ID];if("Lcl_Translation"in i){var a=i.Lcl_Translation.value;void 0!==r.target?(r.target.position.fromArray(a),n.add(r.target)):r.lookAt((new Bt).fromArray(a))}}}))},bindSkeleton:function(e,n,r){var i=this.parsePoseNodes();for(var a in e){var o=e[a];t.get(parseInt(o.ID)).parents.forEach((function(e){if(n.has(e.ID)){var a=e.ID;t.get(a).parents.forEach((function(e){r.has(e.ID)&&r.get(e.ID).bind(new is(o.bones),i[e.ID])}))}}))}},parsePoseNodes:function(){var t={};if("Pose"in e.Objects){var n=e.Objects.Pose;for(var r in n)if("BindPose"===n[r].attrType){var i=n[r].PoseNode;Array.isArray(i)?i.forEach((function(e){t[e.Node]=(new en).fromArray(e.Matrix.a)})):t[i.Node]=(new en).fromArray(i.Matrix.a)}}return t},createAmbientLight:function(){if("GlobalSettings"in e&&"AmbientColor"in e.GlobalSettings){var t=e.GlobalSettings.AmbientColor.value,r=t[0],i=t[1],a=t[2];if(0!==r||0!==i||0!==a){var o=new hr(r,i,a);n.add(new lh(o,1))}}},setupMorphMaterials:function(){var e=this;n.traverse((function(t){t.isMesh&&t.geometry.morphAttributes.position&&t.geometry.morphAttributes.position.length&&(Array.isArray(t.material)?t.material.forEach((function(n,r){e.setupMorphMaterial(t,n,r)})):e.setupMorphMaterial(t,t.material))}))},setupMorphMaterial:function(e,t,r){var i=e.uuid,a=t.uuid,o=!1;if(n.traverse((function(e){e.isMesh&&(Array.isArray(e.material)?e.material.forEach((function(t){t.uuid===a&&e.uuid!==i&&(o=!0)})):e.material.uuid===a&&e.uuid!==i&&(o=!0))})),!0===o){var s=t.clone();s.morphTargets=!0,void 0===r?e.material=s:e.material[r]=s}else t.morphTargets=!0}},a.prototype={constructor:a,parse:function(n){var r=new Map;if("Geometry"in e.Objects){var i=e.Objects.Geometry;for(var a in i){var o=t.get(parseInt(a)),s=this.parseGeometry(o,i[a],n);r.set(parseInt(a),s)}}return r},parseGeometry:function(e,t,n){switch(t.attrType){case"Mesh":return this.parseMeshGeometry(e,t,n);case"NurbsCurve":return this.parseNurbsGeometry(t)}},parseMeshGeometry:function(t,n,r){var i=r.skeletons,a=[],o=t.parents.map((function(t){return e.Objects.Model[t.ID]}));if(0!==o.length){var s=t.children.reduce((function(e,t){return void 0!==i[t.ID]&&(e=i[t.ID]),e}),null);t.children.forEach((function(e){void 0!==r.morphTargets[e.ID]&&a.push(r.morphTargets[e.ID])}));var c=o[0],l={};"RotationOrder"in c&&(l.eulerOrder=x(c.RotationOrder.value)),"InheritType"in c&&(l.inheritType=parseInt(c.InheritType.value)),"GeometricTranslation"in c&&(l.translation=c.GeometricTranslation.value),"GeometricRotation"in c&&(l.rotation=c.GeometricRotation.value),"GeometricScaling"in c&&(l.scale=c.GeometricScaling.value);var h=y(l);return this.genGeometry(n,s,a,h)}},genGeometry:function(e,t,n,r){var i=new Fr;e.attrName&&(i.name=e.attrName);var a=this.parseGeoNode(e,t),o=this.genBuffers(a),s=new Ar(o.vertex,3);if(s.applyMatrix4(r),i.setAttribute("position",s),o.colors.length>0&&i.setAttribute("color",new Ar(o.colors,3)),t&&(i.setAttribute("skinIndex",new Sr(o.weightsIndices,4)),i.setAttribute("skinWeight",new Ar(o.vertexWeights,4)),i.FBX_Deformer=t),o.normal.length>0){var c=(new Gt).getNormalMatrix(r),l=new Ar(o.normal,3);l.applyNormalMatrix(c),i.setAttribute("normal",l)}if(o.uvs.forEach((function(e,t){var n="uv"+(t+1).toString();0===t&&(n="uv"),i.setAttribute(n,new Ar(o.uvs[t],2))})),a.material&&"AllSame"!==a.material.mappingType){var h=o.materialIndex[0],u=0;if(o.materialIndex.forEach((function(e,t){e!==h&&(i.addGroup(u,t-u,h),h=e,u=t)})),i.groups.length>0){var p=i.groups[i.groups.length-1],d=p.start+p.count;d!==o.materialIndex.length&&i.addGroup(d,o.materialIndex.length-d,h)}0===i.groups.length&&i.addGroup(0,o.materialIndex.length,o.materialIndex[0])}return this.addMorphTargets(i,e,n,r),i},parseGeoNode:function(e,t){var n={};if(n.vertexPositions=void 0!==e.Vertices?e.Vertices.a:[],n.vertexIndices=void 0!==e.PolygonVertexIndex?e.PolygonVertexIndex.a:[],e.LayerElementColor&&(n.color=this.parseVertexColors(e.LayerElementColor[0])),e.LayerElementMaterial&&(n.material=this.parseMaterialIndices(e.LayerElementMaterial[0])),e.LayerElementNormal&&(n.normal=this.parseNormals(e.LayerElementNormal[0])),e.LayerElementUV){n.uv=[];for(var r=0;e.LayerElementUV[r];)n.uv.push(this.parseUVs(e.LayerElementUV[r])),r++}return n.weightTable={},null!==t&&(n.skeleton=t,t.rawBones.forEach((function(e,t){e.indices.forEach((function(r,i){void 0===n.weightTable[r]&&(n.weightTable[r]=[]),n.weightTable[r].push({id:t,weight:e.weights[i]})}))}))),n},genBuffers:function(e){var t={vertex:[],normal:[],colors:[],uvs:[],materialIndex:[],vertexWeights:[],weightsIndices:[]},n=0,r=0,i=!1,a=[],o=[],s=[],c=[],l=[],h=[],u=this;return e.vertexIndices.forEach((function(p,d){var f=!1;p<0&&(p^=-1,f=!0);var v=[],g=[];if(a.push(3*p,3*p+1,3*p+2),e.color){var y=m(d,n,p,e.color);s.push(y[0],y[1],y[2])}if(e.skeleton){if(void 0!==e.weightTable[p]&&e.weightTable[p].forEach((function(e){g.push(e.weight),v.push(e.id)})),g.length>4){i||(console.warn("THREE.FBXLoader: Vertex has more than 4 skinning weights assigned to vertex. Deleting additional weights."),i=!0);var x=[0,0,0,0],b=[0,0,0,0];g.forEach((function(e,t){var n=e,r=v[t];b.forEach((function(e,t,i){if(n>e){i[t]=n,n=e;var a=x[t];x[t]=r,r=a}}))})),v=x,g=b}for(;g.length<4;)g.push(0),v.push(0);for(var w=0;w<4;++w)l.push(g[w]),h.push(v[w])}if(e.normal){y=m(d,n,p,e.normal);o.push(y[0],y[1],y[2])}if(e.material&&"AllSame"!==e.material.mappingType)var _=m(d,n,p,e.material)[0];e.uv&&e.uv.forEach((function(e,t){var r=m(d,n,p,e);void 0===c[t]&&(c[t]=[]),c[t].push(r[0]),c[t].push(r[1])})),r++,f&&(u.genFace(t,e,a,_,o,s,c,l,h,r),n++,r=0,a=[],o=[],s=[],c=[],l=[],h=[])})),t},genFace:function(e,t,n,r,i,a,o,s,c,l){for(var h=2;h1&&console.warn("THREE.FBXLoader: Encountered an animation stack with multiple layers, this is currently not supported. Ignoring subsequent layers.");var s=n.get(o[0].ID);i[a]={name:r[a].attrName,layer:s}}return i},addClip:function(e){var t=[],n=this;return e.layer.forEach((function(e){t=t.concat(n.generateTracks(e))})),new vl(e.name,-1,t)},generateTracks:function(e){var t=[],n=new Bt,r=new Dt,i=new Bt;if(e.transform&&e.transform.decompose(n,r,i),n=n.toArray(),r=(new rn).setFromQuaternion(r,e.eulerOrder).toArray(),i=i.toArray(),void 0!==e.T&&Object.keys(e.T.curves).length>0){var a=this.generateVectorTrack(e.modelName,e.T.curves,n,"position");void 0!==a&&t.push(a)}if(void 0!==e.R&&Object.keys(e.R.curves).length>0){var o=this.generateRotationTrack(e.modelName,e.R.curves,r,e.preRotation,e.postRotation,e.eulerOrder);void 0!==o&&t.push(o)}if(void 0!==e.S&&Object.keys(e.S.curves).length>0){var s=this.generateVectorTrack(e.modelName,e.S.curves,i,"scale");void 0!==s&&t.push(s)}if(void 0!==e.DeformPercent){var c=this.generateMorphTrack(e);void 0!==c&&t.push(c)}return t},generateVectorTrack:function(e,t,n,r){var i=this.getTimesForAllAxes(t);return new ml(e+"."+r,i,this.getKeyframeTrackValues(i,t,n))},generateRotationTrack:function(e,t,n,r,i,a){void 0!==t.x&&(this.interpolateRotations(t.x),t.x.values=t.x.values.map(It.degToRad)),void 0!==t.y&&(this.interpolateRotations(t.y),t.y.values=t.y.values.map(It.degToRad)),void 0!==t.z&&(this.interpolateRotations(t.z),t.z.values=t.z.values.map(It.degToRad));var o=this.getTimesForAllAxes(t),s=this.getKeyframeTrackValues(o,t,n);void 0!==r&&((r=r.map(It.degToRad)).push(a),r=(new rn).fromArray(r),r=(new Dt).setFromEuler(r)),void 0!==i&&((i=i.map(It.degToRad)).push(a),i=(new rn).fromArray(i),i=(new Dt).setFromEuler(i).inverse());for(var c=new Dt,l=new rn,h=[],u=0;u=180){for(var a=i/180,o=r/a,s=n+o,c=e.times[t-1],l=(e.times[t]-c)/a,h=c+l,u=[],p=[];h1&&(n=e[1].replace(/^(\w+)::/,""),r=e[2]),{id:t,name:n,type:r}},parseNodeProperty:function(e,t,n){var r=t[1].replace(/^"/,"").replace(/"$/,"").trim(),i=t[2].replace(/^"/,"").replace(/"$/,"").trim();"Content"===r&&","===i&&(i=n.replace(/"/g,"").replace(/,$/,"").trim());var a=this.getCurrentNode();if("Properties70"!==a.name){if("C"===r){var o=i.split(",").slice(1),s=parseInt(o[0]),c=parseInt(o[1]),l=i.split(",").slice(3);r="connections",function(e,t){for(var n=0,r=e.length,i=t.length;n=e.size():e.getOffset()+160+16>=e.size()},parseNode:function(e,t){var n={},r=t>=7500?e.getUint64():e.getUint32(),i=t>=7500?e.getUint64():e.getUint32(),a=(t>=7500?e.getUint64():e.getUint32(),e.getUint8()),o=e.getString(a);if(0===r)return null;for(var s=[],c=0;c0?s[0]:"",h=s.length>1?s[1]:"",u=s.length>2?s[2]:"";for(n.singleProperty=1===i&&e.getOffset()===r;r>e.getOffset();){var p=this.parseNode(e,t);null!==p&&this.parseSubNode(o,n,p)}return n.propertyList=s,"number"==typeof l&&(n.id=l),""!==h&&(n.attrName=h),""!==u&&(n.attrType=u),""!==o&&(n.name=o),n},parseSubNode:function(e,t,n){if(!0===n.singleProperty){var r=n.propertyList[0];Array.isArray(r)?(t[n.name]=n,n.a=r):t[n.name]=r}else if("Connections"===e&&"C"===n.name){var i=[];n.propertyList.forEach((function(e,t){0!==t&&i.push(e)})),void 0===t.connections&&(t.connections=[]),t.connections.push(i)}else if("Properties70"===n.name){Object.keys(n).forEach((function(e){t[e]=n[e]}))}else if("Properties70"===e&&"P"===n.name){var a,o=n.propertyList[0],s=n.propertyList[1],c=n.propertyList[2],l=n.propertyList[3];0===o.indexOf("Lcl ")&&(o=o.replace("Lcl ","Lcl_")),0===s.indexOf("Lcl ")&&(s=s.replace("Lcl ","Lcl_")),a="Color"===s||"ColorRGB"===s||"Vector"===s||"Vector3D"===s||0===s.indexOf("Lcl_")?[n.propertyList[4],n.propertyList[5],n.propertyList[6]]:n.propertyList[4],t[o]={type:s,type2:c,flag:l,value:a}}else void 0===t[n.name]?"number"==typeof n.id?(t[n.name]={},t[n.name][n.id]=n):t[n.name]=n:"PoseNode"===n.name?(Array.isArray(t[n.name])||(t[n.name]=[t[n.name]]),t[n.name].push(n)):void 0===t[n.name][n.id]&&(t[n.name][n.id]=n)},parseProperty:function(e){var t=e.getString(1);switch(t){case"C":return e.getBoolean();case"D":return e.getFloat64();case"F":return e.getFloat32();case"I":return e.getInt32();case"L":return e.getInt64();case"R":var n=e.getUint32();return e.getArrayBuffer(n);case"S":n=e.getUint32();return e.getString(n);case"Y":return e.getInt16();case"b":case"c":case"d":case"f":case"i":case"l":var r=e.getUint32(),i=e.getUint32(),a=e.getUint32();if(0===i)switch(t){case"b":case"c":return e.getBooleanArray(r);case"d":return e.getFloat64Array(r);case"f":return e.getFloat32Array(r);case"i":return e.getInt32Array(r);case"l":return e.getInt64Array(r)}void 0===fd&&console.error("THREE.FBXLoader: External library Inflate.min.js required, obtain or import from https://github.com/imaya/zlib.js");var o=new l(new fd.Inflate(new Uint8Array(e.getArrayBuffer(a))).decompress().buffer);switch(t){case"b":case"c":return o.getBooleanArray(r);case"d":return o.getFloat64Array(r);case"f":return o.getFloat32Array(r);case"i":return o.getInt32Array(r);case"l":return o.getInt64Array(r)}default:throw new Error("THREE.FBXLoader: Unknown property type "+t)}}},l.prototype={constructor:l,getOffset:function(){return this.offset},size:function(){return this.dv.buffer.byteLength},skip:function(e){this.offset+=e},getBoolean:function(){return 1==(1&this.getUint8())},getBooleanArray:function(e){for(var t=[],n=0;n=0&&(t=t.slice(0,r)),ph.decodeText(new Uint8Array(t))}},h.prototype={constructor:h,add:function(e,t){this[e]=t}};var d=[];function m(e,t,n,r){var i;switch(r.mappingType){case"ByPolygonVertex":i=e;break;case"ByPolygon":i=t;break;case"ByVertice":i=n;break;case"AllSame":i=r.indices[0];break;default:console.warn("THREE.FBXLoader: unknown attribute mapping type "+r.mappingType)}"IndexToDirect"===r.referenceType&&(i=r.indices[i]);var a=i*r.dataSize,o=a+r.dataSize;return function(e,t,n,r){for(var i=n,a=0;i{console.log("Loading complete!"),Md=!0,bd=new ou(yd),wd=new ou(xd);for(let e of yd.animations){console.log(`add dooranim:${e.name}`);const t=bd.clipAction(e);t.setLoop(ut),t.clampWhenFinished=!0,t.play(),t.paused=!0,Ed.push(t)}for(let e of xd.animations){console.log(`add royanim:${e.name}`);const t=wd.clipAction(e);t.setLoop(ut),t.clampWhenFinished=!0,t.play(),t.paused=!0,Ed.push(t)}R.matrixAutoUpdate=!1,R.add(yd),R.add(xd),Sd&&(document.body.classList.remove("loading"),document.getElementById("loading").remove(),document.getElementById("warning").style.display="flex")},_d=new Hh(A),T.add(_d),console.log(_d),new Lh(C).load("Data/hny2020.mp3",e=>{_d.setBuffer(e)});const I=new gd(C);I.load("models/hny2020fbx/Greeting_OnlyDoor.fbx",e=>{console.log("door loaded",e.scale,e.position),e.scale.x=.07,e.scale.y=.07,e.scale.z=.07,e.rotateX(90*Math.PI/180),e.position.x=70,e.position.y=90,e.position.z=0,yd=e}),I.load("models/hny2020fbx/Greeting280_OnlyRoy.fbx",e=>{console.log("roy loaded",e.scale,e.position),e.traverse(e=>{e.material&&("mahojin"===e.material.name?e.material.transparent=!0:(e.material.shininess=0,e.material.reflectivity=0,e.material.specular=new hr(0,0,0)))}),e.scale.x=.07,e.scale.y=.07,e.scale.z=.07,e.rotateX(90*Math.PI/180),e.position.x=70,e.position.y=90,e.position.z=0,xd=e});let O,D=e=>{O=e?JSON.parse(e.matrixGL_RH):null},N=Date.now(),z=0;function B(){M.fillStyle="black",M.fillRect(0,0,g,y),M.drawImage(n,0,0,l,h,x,b,m,v);let e=M.getImageData(0,0,g,y);w.postMessage({type:"process",imagedata:e},[e.data.buffer])}let F=()=>{(()=>{let e=Date.now();if(z+=e-N,N=e,O){R.visible=!0;for(let e=0;e<16;e++)Pd.delta[e]=O[e]-Pd.interpolated[e],Pd.interpolated[e]=Pd.interpolated[e]+Pd.delta[e]/Ld;Rd(R.matrix,Pd.interpolated),document.getElementById("warning").style.display="none",Md&&!Td&&(Td=!0,setTimeout(()=>{for(let e of Ed)e.paused=!1;_d.play()},2e3))}else R.visible=!1;S.render(T,E)})(),requestAnimationFrame(F);const e=Ad.getDelta();bd&&bd.update(e),wd&&wd.update(e),o&&o(),s&&s()};console.log("input",r,i),l=r,h=i,d=640/Math.max(l,h/3*4),f=/Android|mobile|iPad|iPhone/i.test(navigator.userAgent)?window.outerWidth/r:1,u=l*f,p=h*f,n.style.width=u+"px",n.style.height=p+"px",a.style.clientWidth=u+"px",a.style.clientHeight=p+"px",a.width=u,a.height=p,m=l*d,v=h*d,g=Math.max(m,v/3*4),y=Math.max(v,m/4*3),x=(g-m)/2,b=(y-v)/2,console.log(`pw=${g} ph=${y} ox=${x} oy=${b} sw=${u} sh=${p} w=${m} h=${v} vw=${l} vh=${h}`),_.style.clientWidth=g+"px",_.style.clientHeight=y+"px",_.width=g,_.height=y,S.setSize(u,p),w=new Worker("./vendor/jsartoolkit5/js/artoolkit.worker.js"),w.postMessage({type:"load",pw:g,ph:y,camera_para:"../../../Data/camera_para-iPhone 5 rear 640x480 1.0m.dat",marker:t.url}),w.onmessage=e=>{let t=e.data;switch(t.type){case"loaded":{let e=JSON.parse(t.proj);console.log(e);let n=g/m,r=y/v;e[0]*=n,e[4]*=n,e[8]*=n,e[12]*=n,e[1]*=r,e[5]*=r,e[9]*=r,e[13]*=r;const i=2*Math.atan(1/e[5])*180/Math.PI,a=e[5]/e[0];console.log(`fov=${i} aspect=${a}`);const o=new gi(i,a,1,3e3);E.projectionMatrix=o.projectionMatrix;break}case"endLoading":1==t.end&&(Sd=!0,Md&&(document.body.classList.remove("loading"),document.getElementById("loading").remove(),document.getElementById("warning").style.display="flex"));break;case"found":D(t);break;case"not found":D(null)}B()},F(),B()}let Id={width:874,height:590,dpi:150,url:"../../../DataNFT/2020_greenting_omote"},Od=(document.getElementById("app"),document.getElementById("video")),Dd=document.getElementById("canvas");if(navigator.mediaDevices&&navigator.mediaDevices.getUserMedia){let e={audio:!1,video:!0};console.log(window.innerWidth,window.innerHeight);window.innerWidth,window.innerWidth,window.innerHeight;e={audio:!1,video:{facingMode:"environment",width:640,height:480}},console.log(e),navigator.mediaDevices.getUserMedia(e).then((function(e){Od.srcObject=e,Od.addEventListener("loadedmetadata",()=>{Od.play(),console.log("video",Od,Od.videoWidth,Od.videoHeight),Cd(0,Id,Od,Od.videoWidth,Od.videoHeight,Dd,(function(){}),(function(){}))})}))}}]); \ No newline at end of file +/*! For license information please see bundle.js.LICENSE.txt */ +(()=>{"use strict";void 0===Number.EPSILON&&(Number.EPSILON=Math.pow(2,-52)),void 0===Number.isInteger&&(Number.isInteger=function(e){return"number"==typeof e&&isFinite(e)&&Math.floor(e)===e}),void 0===Math.sign&&(Math.sign=function(e){return e<0?-1:e>0?1:+e}),"name"in Function.prototype==0&&Object.defineProperty(Function.prototype,"name",{get:function(){return this.toString().match(/^\s*function\s*([^\(\s]*)/)[1]}}),void 0===Object.assign&&(Object.assign=function(e){if(null==e)throw new TypeError("Cannot convert undefined or null to object");for(var t=Object(e),n=1;n>8&255]+O[e>>16&255]+O[e>>24&255]+"-"+O[255&t]+O[t>>8&255]+"-"+O[t>>16&15|64]+O[t>>24&255]+"-"+O[63&n|128]+O[n>>8&255]+"-"+O[n>>16&255]+O[n>>24&255]+O[255&i]+O[i>>8&255]+O[i>>16&255]+O[i>>24&255]).toUpperCase()},clamp:function(e,t,n){return Math.max(t,Math.min(n,e))},euclideanModulo:function(e,t){return(e%t+t)%t},mapLinear:function(e,t,n,i,r){return i+(e-t)*(r-i)/(n-t)},lerp:function(e,t,n){return(1-n)*e+n*t},smoothstep:function(e,t,n){return e<=t?0:e>=n?1:(e=(e-t)/(n-t))*e*(3-2*e)},smootherstep:function(e,t,n){return e<=t?0:e>=n?1:(e=(e-t)/(n-t))*e*e*(e*(6*e-15)+10)},randInt:function(e,t){return e+Math.floor(Math.random()*(t-e+1))},randFloat:function(e,t){return e+Math.random()*(t-e)},randFloatSpread:function(e){return e*(.5-Math.random())},degToRad:function(e){return e*N.DEG2RAD},radToDeg:function(e){return e*N.RAD2DEG},isPowerOfTwo:function(e){return 0==(e&e-1)&&0!==e},ceilPowerOfTwo:function(e){return Math.pow(2,Math.ceil(Math.log(e)/Math.LN2))},floorPowerOfTwo:function(e){return Math.pow(2,Math.floor(Math.log(e)/Math.LN2))}};function z(e,t){this.x=e||0,this.y=t||0}function B(e,t,n,i){this._x=e||0,this._y=t||0,this._z=n||0,this._w=void 0!==i?i:1}Object.defineProperties(z.prototype,{width:{get:function(){return this.x},set:function(e){this.x=e}},height:{get:function(){return this.y},set:function(e){this.y=e}}}),Object.assign(z.prototype,{isVector2:!0,set:function(e,t){return this.x=e,this.y=t,this},setScalar:function(e){return this.x=e,this.y=e,this},setX:function(e){return this.x=e,this},setY:function(e){return this.y=e,this},setComponent:function(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;default:throw new Error("index is out of range: "+e)}return this},getComponent:function(e){switch(e){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+e)}},clone:function(){return new this.constructor(this.x,this.y)},copy:function(e){return this.x=e.x,this.y=e.y,this},add:function(e,t){return void 0!==t?(console.warn("THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(e,t)):(this.x+=e.x,this.y+=e.y,this)},addScalar:function(e){return this.x+=e,this.y+=e,this},addVectors:function(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this},addScaledVector:function(e,t){return this.x+=e.x*t,this.y+=e.y*t,this},sub:function(e,t){return void 0!==t?(console.warn("THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(e,t)):(this.x-=e.x,this.y-=e.y,this)},subScalar:function(e){return this.x-=e,this.y-=e,this},subVectors:function(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this},multiply:function(e){return this.x*=e.x,this.y*=e.y,this},multiplyScalar:function(e){return this.x*=e,this.y*=e,this},divide:function(e){return this.x/=e.x,this.y/=e.y,this},divideScalar:function(e){return this.multiplyScalar(1/e)},applyMatrix3:function(e){var t=this.x,n=this.y,i=e.elements;return this.x=i[0]*t+i[3]*n+i[6],this.y=i[1]*t+i[4]*n+i[7],this},min:function(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this},max:function(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this},clamp:function(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this},clampScalar:function(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this},clampLength:function(e,t){var n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(e,Math.min(t,n)))},floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this},ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this},round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this},roundToZero:function(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this},negate:function(){return this.x=-this.x,this.y=-this.y,this},dot:function(e){return this.x*e.x+this.y*e.y},cross:function(e){return this.x*e.y-this.y*e.x},lengthSq:function(){return this.x*this.x+this.y*this.y},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},manhattanLength:function(){return Math.abs(this.x)+Math.abs(this.y)},normalize:function(){return this.divideScalar(this.length()||1)},angle:function(){var e=Math.atan2(this.y,this.x);return e<0&&(e+=2*Math.PI),e},distanceTo:function(e){return Math.sqrt(this.distanceToSquared(e))},distanceToSquared:function(e){var t=this.x-e.x,n=this.y-e.y;return t*t+n*n},manhattanDistanceTo:function(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)},setLength:function(e){return this.normalize().multiplyScalar(e)},lerp:function(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this},lerpVectors:function(e,t,n){return this.subVectors(t,e).multiplyScalar(n).add(e)},equals:function(e){return e.x===this.x&&e.y===this.y},fromArray:function(e,t){return void 0===t&&(t=0),this.x=e[t],this.y=e[t+1],this},toArray:function(e,t){return void 0===e&&(e=[]),void 0===t&&(t=0),e[t]=this.x,e[t+1]=this.y,e},fromBufferAttribute:function(e,t,n){return void 0!==n&&console.warn("THREE.Vector2: offset has been removed from .fromBufferAttribute()."),this.x=e.getX(t),this.y=e.getY(t),this},rotateAround:function(e,t){var n=Math.cos(t),i=Math.sin(t),r=this.x-e.x,a=this.y-e.y;return this.x=r*n-a*i+e.x,this.y=r*i+a*n+e.y,this}}),Object.assign(B,{slerp:function(e,t,n,i){return n.copy(e).slerp(t,i)},slerpFlat:function(e,t,n,i,r,a,o){var s=n[i+0],c=n[i+1],l=n[i+2],h=n[i+3],u=r[a+0],p=r[a+1],d=r[a+2],f=r[a+3];if(h!==f||s!==u||c!==p||l!==d){var m=1-o,v=s*u+c*p+l*d+h*f,g=v>=0?1:-1,y=1-v*v;if(y>Number.EPSILON){var x=Math.sqrt(y),b=Math.atan2(x,v*g);m=Math.sin(m*b)/x,o=Math.sin(o*b)/x}var w=o*g;if(s=s*m+u*w,c=c*m+p*w,l=l*m+d*w,h=h*m+f*w,m===1-o){var _=1/Math.sqrt(s*s+c*c+l*l+h*h);s*=_,c*=_,l*=_,h*=_}}e[t]=s,e[t+1]=c,e[t+2]=l,e[t+3]=h}}),Object.defineProperties(B.prototype,{x:{get:function(){return this._x},set:function(e){this._x=e,this._onChangeCallback()}},y:{get:function(){return this._y},set:function(e){this._y=e,this._onChangeCallback()}},z:{get:function(){return this._z},set:function(e){this._z=e,this._onChangeCallback()}},w:{get:function(){return this._w},set:function(e){this._w=e,this._onChangeCallback()}}}),Object.assign(B.prototype,{isQuaternion:!0,set:function(e,t,n,i){return this._x=e,this._y=t,this._z=n,this._w=i,this._onChangeCallback(),this},clone:function(){return new this.constructor(this._x,this._y,this._z,this._w)},copy:function(e){return this._x=e.x,this._y=e.y,this._z=e.z,this._w=e.w,this._onChangeCallback(),this},setFromEuler:function(e,t){if(!e||!e.isEuler)throw new Error("THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.");var n=e._x,i=e._y,r=e._z,a=e.order,o=Math.cos,s=Math.sin,c=o(n/2),l=o(i/2),h=o(r/2),u=s(n/2),p=s(i/2),d=s(r/2);return"XYZ"===a?(this._x=u*l*h+c*p*d,this._y=c*p*h-u*l*d,this._z=c*l*d+u*p*h,this._w=c*l*h-u*p*d):"YXZ"===a?(this._x=u*l*h+c*p*d,this._y=c*p*h-u*l*d,this._z=c*l*d-u*p*h,this._w=c*l*h+u*p*d):"ZXY"===a?(this._x=u*l*h-c*p*d,this._y=c*p*h+u*l*d,this._z=c*l*d+u*p*h,this._w=c*l*h-u*p*d):"ZYX"===a?(this._x=u*l*h-c*p*d,this._y=c*p*h+u*l*d,this._z=c*l*d-u*p*h,this._w=c*l*h+u*p*d):"YZX"===a?(this._x=u*l*h+c*p*d,this._y=c*p*h+u*l*d,this._z=c*l*d-u*p*h,this._w=c*l*h-u*p*d):"XZY"===a&&(this._x=u*l*h-c*p*d,this._y=c*p*h-u*l*d,this._z=c*l*d+u*p*h,this._w=c*l*h+u*p*d),!1!==t&&this._onChangeCallback(),this},setFromAxisAngle:function(e,t){var n=t/2,i=Math.sin(n);return this._x=e.x*i,this._y=e.y*i,this._z=e.z*i,this._w=Math.cos(n),this._onChangeCallback(),this},setFromRotationMatrix:function(e){var t,n=e.elements,i=n[0],r=n[4],a=n[8],o=n[1],s=n[5],c=n[9],l=n[2],h=n[6],u=n[10],p=i+s+u;return p>0?(t=.5/Math.sqrt(p+1),this._w=.25/t,this._x=(h-c)*t,this._y=(a-l)*t,this._z=(o-r)*t):i>s&&i>u?(t=2*Math.sqrt(1+i-s-u),this._w=(h-c)/t,this._x=.25*t,this._y=(r+o)/t,this._z=(a+l)/t):s>u?(t=2*Math.sqrt(1+s-i-u),this._w=(a-l)/t,this._x=(r+o)/t,this._y=.25*t,this._z=(c+h)/t):(t=2*Math.sqrt(1+u-i-s),this._w=(o-r)/t,this._x=(a+l)/t,this._y=(c+h)/t,this._z=.25*t),this._onChangeCallback(),this},setFromUnitVectors:function(e,t){var n=e.dot(t)+1;return n<1e-6?(n=0,Math.abs(e.x)>Math.abs(e.z)?(this._x=-e.y,this._y=e.x,this._z=0,this._w=n):(this._x=0,this._y=-e.z,this._z=e.y,this._w=n)):(this._x=e.y*t.z-e.z*t.y,this._y=e.z*t.x-e.x*t.z,this._z=e.x*t.y-e.y*t.x,this._w=n),this.normalize()},angleTo:function(e){return 2*Math.acos(Math.abs(N.clamp(this.dot(e),-1,1)))},rotateTowards:function(e,t){var n=this.angleTo(e);if(0===n)return this;var i=Math.min(1,t/n);return this.slerp(e,i),this},inverse:function(){return this.conjugate()},conjugate:function(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this},dot:function(e){return this._x*e._x+this._y*e._y+this._z*e._z+this._w*e._w},lengthSq:function(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w},length:function(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)},normalize:function(){var e=this.length();return 0===e?(this._x=0,this._y=0,this._z=0,this._w=1):(e=1/e,this._x=this._x*e,this._y=this._y*e,this._z=this._z*e,this._w=this._w*e),this._onChangeCallback(),this},multiply:function(e,t){return void 0!==t?(console.warn("THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead."),this.multiplyQuaternions(e,t)):this.multiplyQuaternions(this,e)},premultiply:function(e){return this.multiplyQuaternions(e,this)},multiplyQuaternions:function(e,t){var n=e._x,i=e._y,r=e._z,a=e._w,o=t._x,s=t._y,c=t._z,l=t._w;return this._x=n*l+a*o+i*c-r*s,this._y=i*l+a*s+r*o-n*c,this._z=r*l+a*c+n*s-i*o,this._w=a*l-n*o-i*s-r*c,this._onChangeCallback(),this},slerp:function(e,t){if(0===t)return this;if(1===t)return this.copy(e);var n=this._x,i=this._y,r=this._z,a=this._w,o=a*e._w+n*e._x+i*e._y+r*e._z;if(o<0?(this._w=-e._w,this._x=-e._x,this._y=-e._y,this._z=-e._z,o=-o):this.copy(e),o>=1)return this._w=a,this._x=n,this._y=i,this._z=r,this;var s=1-o*o;if(s<=Number.EPSILON){var c=1-t;return this._w=c*a+t*this._w,this._x=c*n+t*this._x,this._y=c*i+t*this._y,this._z=c*r+t*this._z,this.normalize(),this._onChangeCallback(),this}var l=Math.sqrt(s),h=Math.atan2(l,o),u=Math.sin((1-t)*h)/l,p=Math.sin(t*h)/l;return this._w=a*u+this._w*p,this._x=n*u+this._x*p,this._y=i*u+this._y*p,this._z=r*u+this._z*p,this._onChangeCallback(),this},equals:function(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._w===this._w},fromArray:function(e,t){return void 0===t&&(t=0),this._x=e[t],this._y=e[t+1],this._z=e[t+2],this._w=e[t+3],this._onChangeCallback(),this},toArray:function(e,t){return void 0===e&&(e=[]),void 0===t&&(t=0),e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._w,e},_onChange:function(e){return this._onChangeCallback=e,this},_onChangeCallback:function(){}});var F=new G,U=new B;function G(e,t,n){this.x=e||0,this.y=t||0,this.z=n||0}Object.assign(G.prototype,{isVector3:!0,set:function(e,t,n){return this.x=e,this.y=t,this.z=n,this},setScalar:function(e){return this.x=e,this.y=e,this.z=e,this},setX:function(e){return this.x=e,this},setY:function(e){return this.y=e,this},setZ:function(e){return this.z=e,this},setComponent:function(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;default:throw new Error("index is out of range: "+e)}return this},getComponent:function(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+e)}},clone:function(){return new this.constructor(this.x,this.y,this.z)},copy:function(e){return this.x=e.x,this.y=e.y,this.z=e.z,this},add:function(e,t){return void 0!==t?(console.warn("THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(e,t)):(this.x+=e.x,this.y+=e.y,this.z+=e.z,this)},addScalar:function(e){return this.x+=e,this.y+=e,this.z+=e,this},addVectors:function(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this},addScaledVector:function(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this},sub:function(e,t){return void 0!==t?(console.warn("THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(e,t)):(this.x-=e.x,this.y-=e.y,this.z-=e.z,this)},subScalar:function(e){return this.x-=e,this.y-=e,this.z-=e,this},subVectors:function(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this},multiply:function(e,t){return void 0!==t?(console.warn("THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead."),this.multiplyVectors(e,t)):(this.x*=e.x,this.y*=e.y,this.z*=e.z,this)},multiplyScalar:function(e){return this.x*=e,this.y*=e,this.z*=e,this},multiplyVectors:function(e,t){return this.x=e.x*t.x,this.y=e.y*t.y,this.z=e.z*t.z,this},applyEuler:function(e){return e&&e.isEuler||console.error("THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order."),this.applyQuaternion(U.setFromEuler(e))},applyAxisAngle:function(e,t){return this.applyQuaternion(U.setFromAxisAngle(e,t))},applyMatrix3:function(e){var t=this.x,n=this.y,i=this.z,r=e.elements;return this.x=r[0]*t+r[3]*n+r[6]*i,this.y=r[1]*t+r[4]*n+r[7]*i,this.z=r[2]*t+r[5]*n+r[8]*i,this},applyNormalMatrix:function(e){return this.applyMatrix3(e).normalize()},applyMatrix4:function(e){var t=this.x,n=this.y,i=this.z,r=e.elements,a=1/(r[3]*t+r[7]*n+r[11]*i+r[15]);return this.x=(r[0]*t+r[4]*n+r[8]*i+r[12])*a,this.y=(r[1]*t+r[5]*n+r[9]*i+r[13])*a,this.z=(r[2]*t+r[6]*n+r[10]*i+r[14])*a,this},applyQuaternion:function(e){var t=this.x,n=this.y,i=this.z,r=e.x,a=e.y,o=e.z,s=e.w,c=s*t+a*i-o*n,l=s*n+o*t-r*i,h=s*i+r*n-a*t,u=-r*t-a*n-o*i;return this.x=c*s+u*-r+l*-o-h*-a,this.y=l*s+u*-a+h*-r-c*-o,this.z=h*s+u*-o+c*-a-l*-r,this},project:function(e){return this.applyMatrix4(e.matrixWorldInverse).applyMatrix4(e.projectionMatrix)},unproject:function(e){return this.applyMatrix4(e.projectionMatrixInverse).applyMatrix4(e.matrixWorld)},transformDirection:function(e){var t=this.x,n=this.y,i=this.z,r=e.elements;return this.x=r[0]*t+r[4]*n+r[8]*i,this.y=r[1]*t+r[5]*n+r[9]*i,this.z=r[2]*t+r[6]*n+r[10]*i,this.normalize()},divide:function(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this},divideScalar:function(e){return this.multiplyScalar(1/e)},min:function(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this},max:function(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this},clamp:function(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this.z=Math.max(e.z,Math.min(t.z,this.z)),this},clampScalar:function(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this.z=Math.max(e,Math.min(t,this.z)),this},clampLength:function(e,t){var n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(e,Math.min(t,n)))},floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this},ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this},round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this},roundToZero:function(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this},negate:function(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this},dot:function(e){return this.x*e.x+this.y*e.y+this.z*e.z},lengthSq:function(){return this.x*this.x+this.y*this.y+this.z*this.z},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)},manhattanLength:function(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)},normalize:function(){return this.divideScalar(this.length()||1)},setLength:function(e){return this.normalize().multiplyScalar(e)},lerp:function(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this},lerpVectors:function(e,t,n){return this.subVectors(t,e).multiplyScalar(n).add(e)},cross:function(e,t){return void 0!==t?(console.warn("THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead."),this.crossVectors(e,t)):this.crossVectors(this,e)},crossVectors:function(e,t){var n=e.x,i=e.y,r=e.z,a=t.x,o=t.y,s=t.z;return this.x=i*s-r*o,this.y=r*a-n*s,this.z=n*o-i*a,this},projectOnVector:function(e){var t=e.dot(this)/e.lengthSq();return this.copy(e).multiplyScalar(t)},projectOnPlane:function(e){return F.copy(this).projectOnVector(e),this.sub(F)},reflect:function(e){return this.sub(F.copy(e).multiplyScalar(2*this.dot(e)))},angleTo:function(e){var t=Math.sqrt(this.lengthSq()*e.lengthSq());0===t&&console.error("THREE.Vector3: angleTo() can't handle zero length vectors.");var n=this.dot(e)/t;return Math.acos(N.clamp(n,-1,1))},distanceTo:function(e){return Math.sqrt(this.distanceToSquared(e))},distanceToSquared:function(e){var t=this.x-e.x,n=this.y-e.y,i=this.z-e.z;return t*t+n*n+i*i},manhattanDistanceTo:function(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)+Math.abs(this.z-e.z)},setFromSpherical:function(e){return this.setFromSphericalCoords(e.radius,e.phi,e.theta)},setFromSphericalCoords:function(e,t,n){var i=Math.sin(t)*e;return this.x=i*Math.sin(n),this.y=Math.cos(t)*e,this.z=i*Math.cos(n),this},setFromCylindrical:function(e){return this.setFromCylindricalCoords(e.radius,e.theta,e.y)},setFromCylindricalCoords:function(e,t,n){return this.x=e*Math.sin(t),this.y=n,this.z=e*Math.cos(t),this},setFromMatrixPosition:function(e){var t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this},setFromMatrixScale:function(e){var t=this.setFromMatrixColumn(e,0).length(),n=this.setFromMatrixColumn(e,1).length(),i=this.setFromMatrixColumn(e,2).length();return this.x=t,this.y=n,this.z=i,this},setFromMatrixColumn:function(e,t){return this.fromArray(e.elements,4*t)},equals:function(e){return e.x===this.x&&e.y===this.y&&e.z===this.z},fromArray:function(e,t){return void 0===t&&(t=0),this.x=e[t],this.y=e[t+1],this.z=e[t+2],this},toArray:function(e,t){return void 0===e&&(e=[]),void 0===t&&(t=0),e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e},fromBufferAttribute:function(e,t,n){return void 0!==n&&console.warn("THREE.Vector3: offset has been removed from .fromBufferAttribute()."),this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this}});var H,V=new G;function k(){this.elements=[1,0,0,0,1,0,0,0,1],arguments.length>0&&console.error("THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.")}Object.assign(k.prototype,{isMatrix3:!0,set:function(e,t,n,i,r,a,o,s,c){var l=this.elements;return l[0]=e,l[1]=i,l[2]=o,l[3]=t,l[4]=r,l[5]=s,l[6]=n,l[7]=a,l[8]=c,this},identity:function(){return this.set(1,0,0,0,1,0,0,0,1),this},clone:function(){return(new this.constructor).fromArray(this.elements)},copy:function(e){var t=this.elements,n=e.elements;return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t[8]=n[8],this},setFromMatrix4:function(e){var t=e.elements;return this.set(t[0],t[4],t[8],t[1],t[5],t[9],t[2],t[6],t[10]),this},applyToBufferAttribute:function(e){for(var t=0,n=e.count;t2048||t.height>2048?t.toDataURL("image/jpeg",.6):t.toDataURL("image/png")}},W=0;function q(e,t,n,r,a,o,s,u,p,d){Object.defineProperty(this,"id",{value:W++}),this.uuid=N.generateUUID(),this.name="",this.image=void 0!==e?e:q.DEFAULT_IMAGE,this.mipmaps=[],this.mapping=void 0!==t?t:q.DEFAULT_MAPPING,this.wrapS=void 0!==n?n:i,this.wrapT=void 0!==r?r:i,this.magFilter=void 0!==a?a:c,this.minFilter=void 0!==o?o:l,this.anisotropy=void 0!==p?p:1,this.format=void 0!==s?s:v,this.internalFormat=null,this.type=void 0!==u?u:h,this.offset=new z(0,0),this.repeat=new z(1,1),this.center=new z(0,0),this.rotation=0,this.matrixAutoUpdate=!0,this.matrix=new k,this.generateMipmaps=!0,this.premultiplyAlpha=!1,this.flipY=!0,this.unpackAlignment=4,this.encoding=void 0!==d?d:E,this.version=0,this.onUpdate=null}function X(e,t,n,i){this.x=e||0,this.y=t||0,this.z=n||0,this.w=void 0!==i?i:1}function Y(e,t,n){this.width=e,this.height=t,this.scissor=new X(0,0,e,t),this.scissorTest=!1,this.viewport=new X(0,0,e,t),n=n||{},this.texture=new q(void 0,void 0,n.wrapS,n.wrapT,n.magFilter,n.minFilter,n.format,n.type,n.anisotropy,n.encoding),this.texture.image={},this.texture.image.width=e,this.texture.image.height=t,this.texture.generateMipmaps=void 0!==n.generateMipmaps&&n.generateMipmaps,this.texture.minFilter=void 0!==n.minFilter?n.minFilter:c,this.depthBuffer=void 0===n.depthBuffer||n.depthBuffer,this.stencilBuffer=void 0===n.stencilBuffer||n.stencilBuffer,this.depthTexture=void 0!==n.depthTexture?n.depthTexture:null}function Z(e,t,n){Y.call(this,e,t,n),this.samples=4}q.DEFAULT_IMAGE=void 0,q.DEFAULT_MAPPING=300,q.prototype=Object.assign(Object.create(I.prototype),{constructor:q,isTexture:!0,updateMatrix:function(){this.matrix.setUvTransform(this.offset.x,this.offset.y,this.repeat.x,this.repeat.y,this.rotation,this.center.x,this.center.y)},clone:function(){return(new this.constructor).copy(this)},copy:function(e){return this.name=e.name,this.image=e.image,this.mipmaps=e.mipmaps.slice(0),this.mapping=e.mapping,this.wrapS=e.wrapS,this.wrapT=e.wrapT,this.magFilter=e.magFilter,this.minFilter=e.minFilter,this.anisotropy=e.anisotropy,this.format=e.format,this.internalFormat=e.internalFormat,this.type=e.type,this.offset.copy(e.offset),this.repeat.copy(e.repeat),this.center.copy(e.center),this.rotation=e.rotation,this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrix.copy(e.matrix),this.generateMipmaps=e.generateMipmaps,this.premultiplyAlpha=e.premultiplyAlpha,this.flipY=e.flipY,this.unpackAlignment=e.unpackAlignment,this.encoding=e.encoding,this},toJSON:function(e){var t=void 0===e||"string"==typeof e;if(!t&&void 0!==e.textures[this.uuid])return e.textures[this.uuid];var n={metadata:{version:4.5,type:"Texture",generator:"Texture.toJSON"},uuid:this.uuid,name:this.name,mapping:this.mapping,repeat:[this.repeat.x,this.repeat.y],offset:[this.offset.x,this.offset.y],center:[this.center.x,this.center.y],rotation:this.rotation,wrap:[this.wrapS,this.wrapT],format:this.format,type:this.type,encoding:this.encoding,minFilter:this.minFilter,magFilter:this.magFilter,anisotropy:this.anisotropy,flipY:this.flipY,premultiplyAlpha:this.premultiplyAlpha,unpackAlignment:this.unpackAlignment};if(void 0!==this.image){var i=this.image;if(void 0===i.uuid&&(i.uuid=N.generateUUID()),!t&&void 0===e.images[i.uuid]){var r;if(Array.isArray(i)){r=[];for(var a=0,o=i.length;a1)switch(this.wrapS){case n:e.x=e.x-Math.floor(e.x);break;case i:e.x=e.x<0?0:1;break;case r:1===Math.abs(Math.floor(e.x)%2)?e.x=Math.ceil(e.x)-e.x:e.x=e.x-Math.floor(e.x)}if(e.y<0||e.y>1)switch(this.wrapT){case n:e.y=e.y-Math.floor(e.y);break;case i:e.y=e.y<0?0:1;break;case r:1===Math.abs(Math.floor(e.y)%2)?e.y=Math.ceil(e.y)-e.y:e.y=e.y-Math.floor(e.y)}return this.flipY&&(e.y=1-e.y),e}}),Object.defineProperty(q.prototype,"needsUpdate",{set:function(e){!0===e&&this.version++}}),Object.defineProperties(X.prototype,{width:{get:function(){return this.z},set:function(e){this.z=e}},height:{get:function(){return this.w},set:function(e){this.w=e}}}),Object.assign(X.prototype,{isVector4:!0,set:function(e,t,n,i){return this.x=e,this.y=t,this.z=n,this.w=i,this},setScalar:function(e){return this.x=e,this.y=e,this.z=e,this.w=e,this},setX:function(e){return this.x=e,this},setY:function(e){return this.y=e,this},setZ:function(e){return this.z=e,this},setW:function(e){return this.w=e,this},setComponent:function(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;case 3:this.w=t;break;default:throw new Error("index is out of range: "+e)}return this},getComponent:function(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw new Error("index is out of range: "+e)}},clone:function(){return new this.constructor(this.x,this.y,this.z,this.w)},copy:function(e){return this.x=e.x,this.y=e.y,this.z=e.z,this.w=void 0!==e.w?e.w:1,this},add:function(e,t){return void 0!==t?(console.warn("THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(e,t)):(this.x+=e.x,this.y+=e.y,this.z+=e.z,this.w+=e.w,this)},addScalar:function(e){return this.x+=e,this.y+=e,this.z+=e,this.w+=e,this},addVectors:function(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this.w=e.w+t.w,this},addScaledVector:function(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this.w+=e.w*t,this},sub:function(e,t){return void 0!==t?(console.warn("THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(e,t)):(this.x-=e.x,this.y-=e.y,this.z-=e.z,this.w-=e.w,this)},subScalar:function(e){return this.x-=e,this.y-=e,this.z-=e,this.w-=e,this},subVectors:function(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this.w=e.w-t.w,this},multiplyScalar:function(e){return this.x*=e,this.y*=e,this.z*=e,this.w*=e,this},applyMatrix4:function(e){var t=this.x,n=this.y,i=this.z,r=this.w,a=e.elements;return this.x=a[0]*t+a[4]*n+a[8]*i+a[12]*r,this.y=a[1]*t+a[5]*n+a[9]*i+a[13]*r,this.z=a[2]*t+a[6]*n+a[10]*i+a[14]*r,this.w=a[3]*t+a[7]*n+a[11]*i+a[15]*r,this},divideScalar:function(e){return this.multiplyScalar(1/e)},setAxisAngleFromQuaternion:function(e){this.w=2*Math.acos(e.w);var t=Math.sqrt(1-e.w*e.w);return t<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=e.x/t,this.y=e.y/t,this.z=e.z/t),this},setAxisAngleFromRotationMatrix:function(e){var t,n,i,r,a=.01,o=.1,s=e.elements,c=s[0],l=s[4],h=s[8],u=s[1],p=s[5],d=s[9],f=s[2],m=s[6],v=s[10];if(Math.abs(l-u)y&&g>x?gx?y0&&console.error("THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.")}Object.assign(ie.prototype,{isMatrix4:!0,set:function(e,t,n,i,r,a,o,s,c,l,h,u,p,d,f,m){var v=this.elements;return v[0]=e,v[4]=t,v[8]=n,v[12]=i,v[1]=r,v[5]=a,v[9]=o,v[13]=s,v[2]=c,v[6]=l,v[10]=h,v[14]=u,v[3]=p,v[7]=d,v[11]=f,v[15]=m,this},identity:function(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this},clone:function(){return(new ie).fromArray(this.elements)},copy:function(e){var t=this.elements,n=e.elements;return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t[8]=n[8],t[9]=n[9],t[10]=n[10],t[11]=n[11],t[12]=n[12],t[13]=n[13],t[14]=n[14],t[15]=n[15],this},copyPosition:function(e){var t=this.elements,n=e.elements;return t[12]=n[12],t[13]=n[13],t[14]=n[14],this},extractBasis:function(e,t,n){return e.setFromMatrixColumn(this,0),t.setFromMatrixColumn(this,1),n.setFromMatrixColumn(this,2),this},makeBasis:function(e,t,n){return this.set(e.x,t.x,n.x,0,e.y,t.y,n.y,0,e.z,t.z,n.z,0,0,0,0,1),this},extractRotation:function(e){var t=this.elements,n=e.elements,i=1/J.setFromMatrixColumn(e,0).length(),r=1/J.setFromMatrixColumn(e,1).length(),a=1/J.setFromMatrixColumn(e,2).length();return t[0]=n[0]*i,t[1]=n[1]*i,t[2]=n[2]*i,t[3]=0,t[4]=n[4]*r,t[5]=n[5]*r,t[6]=n[6]*r,t[7]=0,t[8]=n[8]*a,t[9]=n[9]*a,t[10]=n[10]*a,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this},makeRotationFromEuler:function(e){e&&e.isEuler||console.error("THREE.Matrix4: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.");var t=this.elements,n=e.x,i=e.y,r=e.z,a=Math.cos(n),o=Math.sin(n),s=Math.cos(i),c=Math.sin(i),l=Math.cos(r),h=Math.sin(r);if("XYZ"===e.order){var u=a*l,p=a*h,d=o*l,f=o*h;t[0]=s*l,t[4]=-s*h,t[8]=c,t[1]=p+d*c,t[5]=u-f*c,t[9]=-o*s,t[2]=f-u*c,t[6]=d+p*c,t[10]=a*s}else if("YXZ"===e.order){var m=s*l,v=s*h,g=c*l,y=c*h;t[0]=m+y*o,t[4]=g*o-v,t[8]=a*c,t[1]=a*h,t[5]=a*l,t[9]=-o,t[2]=v*o-g,t[6]=y+m*o,t[10]=a*s}else if("ZXY"===e.order)m=s*l,v=s*h,g=c*l,y=c*h,t[0]=m-y*o,t[4]=-a*h,t[8]=g+v*o,t[1]=v+g*o,t[5]=a*l,t[9]=y-m*o,t[2]=-a*c,t[6]=o,t[10]=a*s;else if("ZYX"===e.order)u=a*l,p=a*h,d=o*l,f=o*h,t[0]=s*l,t[4]=d*c-p,t[8]=u*c+f,t[1]=s*h,t[5]=f*c+u,t[9]=p*c-d,t[2]=-c,t[6]=o*s,t[10]=a*s;else if("YZX"===e.order){var x=a*s,b=a*c,w=o*s,_=o*c;t[0]=s*l,t[4]=_-x*h,t[8]=w*h+b,t[1]=h,t[5]=a*l,t[9]=-o*l,t[2]=-c*l,t[6]=b*h+w,t[10]=x-_*h}else"XZY"===e.order&&(x=a*s,b=a*c,w=o*s,_=o*c,t[0]=s*l,t[4]=-h,t[8]=c*l,t[1]=x*h+_,t[5]=a*l,t[9]=b*h-w,t[2]=w*h-b,t[6]=o*l,t[10]=_*h+x);return t[3]=0,t[7]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this},makeRotationFromQuaternion:function(e){return this.compose(Q,e,$)},lookAt:function(e,t,n){var i=this.elements;return ne.subVectors(e,t),0===ne.lengthSq()&&(ne.z=1),ne.normalize(),ee.crossVectors(n,ne),0===ee.lengthSq()&&(1===Math.abs(n.z)?ne.x+=1e-4:ne.z+=1e-4,ne.normalize(),ee.crossVectors(n,ne)),ee.normalize(),te.crossVectors(ne,ee),i[0]=ee.x,i[4]=te.x,i[8]=ne.x,i[1]=ee.y,i[5]=te.y,i[9]=ne.y,i[2]=ee.z,i[6]=te.z,i[10]=ne.z,this},multiply:function(e,t){return void 0!==t?(console.warn("THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead."),this.multiplyMatrices(e,t)):this.multiplyMatrices(this,e)},premultiply:function(e){return this.multiplyMatrices(e,this)},multiplyMatrices:function(e,t){var n=e.elements,i=t.elements,r=this.elements,a=n[0],o=n[4],s=n[8],c=n[12],l=n[1],h=n[5],u=n[9],p=n[13],d=n[2],f=n[6],m=n[10],v=n[14],g=n[3],y=n[7],x=n[11],b=n[15],w=i[0],_=i[4],M=i[8],T=i[12],S=i[1],E=i[5],A=i[9],L=i[13],P=i[2],R=i[6],C=i[10],I=i[14],O=i[3],D=i[7],N=i[11],z=i[15];return r[0]=a*w+o*S+s*P+c*O,r[4]=a*_+o*E+s*R+c*D,r[8]=a*M+o*A+s*C+c*N,r[12]=a*T+o*L+s*I+c*z,r[1]=l*w+h*S+u*P+p*O,r[5]=l*_+h*E+u*R+p*D,r[9]=l*M+h*A+u*C+p*N,r[13]=l*T+h*L+u*I+p*z,r[2]=d*w+f*S+m*P+v*O,r[6]=d*_+f*E+m*R+v*D,r[10]=d*M+f*A+m*C+v*N,r[14]=d*T+f*L+m*I+v*z,r[3]=g*w+y*S+x*P+b*O,r[7]=g*_+y*E+x*R+b*D,r[11]=g*M+y*A+x*C+b*N,r[15]=g*T+y*L+x*I+b*z,this},multiplyScalar:function(e){var t=this.elements;return t[0]*=e,t[4]*=e,t[8]*=e,t[12]*=e,t[1]*=e,t[5]*=e,t[9]*=e,t[13]*=e,t[2]*=e,t[6]*=e,t[10]*=e,t[14]*=e,t[3]*=e,t[7]*=e,t[11]*=e,t[15]*=e,this},applyToBufferAttribute:function(e){for(var t=0,n=e.count;t1){for(var t=0;t1){for(var t=0;t0)for(i.children=[],s=0;s0&&(n.geometries=u),p.length>0&&(n.materials=p),d.length>0&&(n.textures=d),f.length>0&&(n.images=f),o.length>0&&(n.shapes=o)}return n.object=i,n;function m(e){var t=[];for(var n in e){var i=e[n];delete i.metadata,t.push(i)}return t}},clone:function(e){return(new this.constructor).copy(this,e)},copy:function(e,t){if(void 0===t&&(t=!0),this.name=e.name,this.up.copy(e.up),this.position.copy(e.position),this.quaternion.copy(e.quaternion),this.scale.copy(e.scale),this.matrix.copy(e.matrix),this.matrixWorld.copy(e.matrixWorld),this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrixWorldNeedsUpdate=e.matrixWorldNeedsUpdate,this.layers.mask=e.layers.mask,this.visible=e.visible,this.castShadow=e.castShadow,this.receiveShadow=e.receiveShadow,this.frustumCulled=e.frustumCulled,this.renderOrder=e.renderOrder,this.userData=JSON.parse(JSON.stringify(e.userData)),!0===t)for(var n=0;ns)return!1}return!0}Object.assign(ze.prototype,{isBox3:!0,set:function(e,t){return this.min.copy(e),this.max.copy(t),this},setFromArray:function(e){for(var t=1/0,n=1/0,i=1/0,r=-1/0,a=-1/0,o=-1/0,s=0,c=e.length;sr&&(r=l),h>a&&(a=h),u>o&&(o=u)}return this.min.set(t,n,i),this.max.set(r,a,o),this},setFromBufferAttribute:function(e){for(var t=1/0,n=1/0,i=1/0,r=-1/0,a=-1/0,o=-1/0,s=0,c=e.count;sr&&(r=l),h>a&&(a=h),u>o&&(o=u)}return this.min.set(t,n,i),this.max.set(r,a,o),this},setFromPoints:function(e){this.makeEmpty();for(var t=0,n=e.length;tthis.max.x||e.ythis.max.y||e.zthis.max.z)},containsBox:function(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y&&this.min.z<=e.min.z&&e.max.z<=this.max.z},getParameter:function(e,t){return void 0===t&&(console.warn("THREE.Box3: .getParameter() target is now required"),t=new G),t.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y),(e.z-this.min.z)/(this.max.z-this.min.z))},intersectsBox:function(e){return!(e.max.xthis.max.x||e.max.ythis.max.y||e.max.zthis.max.z)},intersectsSphere:function(e){return this.clampPoint(e.center,Te),Te.distanceToSquared(e.center)<=e.radius*e.radius},intersectsPlane:function(e){var t,n;return e.normal.x>0?(t=e.normal.x*this.min.x,n=e.normal.x*this.max.x):(t=e.normal.x*this.max.x,n=e.normal.x*this.min.x),e.normal.y>0?(t+=e.normal.y*this.min.y,n+=e.normal.y*this.max.y):(t+=e.normal.y*this.max.y,n+=e.normal.y*this.min.y),e.normal.z>0?(t+=e.normal.z*this.min.z,n+=e.normal.z*this.max.z):(t+=e.normal.z*this.max.z,n+=e.normal.z*this.min.z),t<=-e.constant&&n>=-e.constant},intersectsTriangle:function(e){if(this.isEmpty())return!1;this.getCenter(Ie),Oe.subVectors(this.max,Ie),Ee.subVectors(e.a,Ie),Ae.subVectors(e.b,Ie),Le.subVectors(e.c,Ie),Pe.subVectors(Ae,Ee),Re.subVectors(Le,Ae),Ce.subVectors(Ee,Le);var t=[0,-Pe.z,Pe.y,0,-Re.z,Re.y,0,-Ce.z,Ce.y,Pe.z,0,-Pe.x,Re.z,0,-Re.x,Ce.z,0,-Ce.x,-Pe.y,Pe.x,0,-Re.y,Re.x,0,-Ce.y,Ce.x,0];return!!Be(t,Ee,Ae,Le,Oe)&&!!Be(t=[1,0,0,0,1,0,0,0,1],Ee,Ae,Le,Oe)&&(De.crossVectors(Pe,Re),Be(t=[De.x,De.y,De.z],Ee,Ae,Le,Oe))},clampPoint:function(e,t){return void 0===t&&(console.warn("THREE.Box3: .clampPoint() target is now required"),t=new G),t.copy(e).clamp(this.min,this.max)},distanceToPoint:function(e){return Te.copy(e).clamp(this.min,this.max).sub(e).length()},getBoundingSphere:function(e){return void 0===e&&console.error("THREE.Box3: .getBoundingSphere() target is now required"),this.getCenter(e.center),e.radius=.5*this.getSize(Te).length(),e},intersect:function(e){return this.min.max(e.min),this.max.min(e.max),this.isEmpty()&&this.makeEmpty(),this},union:function(e){return this.min.min(e.min),this.max.max(e.max),this},applyMatrix4:function(e){return this.isEmpty()||(Me[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(e),Me[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(e),Me[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(e),Me[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(e),Me[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(e),Me[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(e),Me[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(e),Me[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(e),this.setFromPoints(Me)),this},translate:function(e){return this.min.add(e),this.max.add(e),this},equals:function(e){return e.min.equals(this.min)&&e.max.equals(this.max)}});var Fe=new ze;function Ue(e,t){this.center=void 0!==e?e:new G,this.radius=void 0!==t?t:0}Object.assign(Ue.prototype,{set:function(e,t){return this.center.copy(e),this.radius=t,this},setFromPoints:function(e,t){var n=this.center;void 0!==t?n.copy(t):Fe.setFromPoints(e).getCenter(n);for(var i=0,r=0,a=e.length;rthis.radius*this.radius&&(t.sub(this.center).normalize(),t.multiplyScalar(this.radius).add(this.center)),t},getBoundingBox:function(e){return void 0===e&&(console.warn("THREE.Sphere: .getBoundingBox() target is now required"),e=new ze),e.set(this.center,this.center),e.expandByScalar(this.radius),e},applyMatrix4:function(e){return this.center.applyMatrix4(e),this.radius=this.radius*e.getMaxScaleOnAxis(),this},translate:function(e){return this.center.add(e),this},equals:function(e){return e.center.equals(this.center)&&e.radius===this.radius}});var Ge=new G,He=new G,Ve=new G,ke=new G,je=new G,We=new G,qe=new G;function Xe(e,t){this.origin=void 0!==e?e:new G,this.direction=void 0!==t?t:new G(0,0,-1)}Object.assign(Xe.prototype,{set:function(e,t){return this.origin.copy(e),this.direction.copy(t),this},clone:function(){return(new this.constructor).copy(this)},copy:function(e){return this.origin.copy(e.origin),this.direction.copy(e.direction),this},at:function(e,t){return void 0===t&&(console.warn("THREE.Ray: .at() target is now required"),t=new G),t.copy(this.direction).multiplyScalar(e).add(this.origin)},lookAt:function(e){return this.direction.copy(e).sub(this.origin).normalize(),this},recast:function(e){return this.origin.copy(this.at(e,Ge)),this},closestPointToPoint:function(e,t){void 0===t&&(console.warn("THREE.Ray: .closestPointToPoint() target is now required"),t=new G),t.subVectors(e,this.origin);var n=t.dot(this.direction);return n<0?t.copy(this.origin):t.copy(this.direction).multiplyScalar(n).add(this.origin)},distanceToPoint:function(e){return Math.sqrt(this.distanceSqToPoint(e))},distanceSqToPoint:function(e){var t=Ge.subVectors(e,this.origin).dot(this.direction);return t<0?this.origin.distanceToSquared(e):(Ge.copy(this.direction).multiplyScalar(t).add(this.origin),Ge.distanceToSquared(e))},distanceSqToSegment:function(e,t,n,i){He.copy(e).add(t).multiplyScalar(.5),Ve.copy(t).sub(e).normalize(),ke.copy(this.origin).sub(He);var r,a,o,s,c=.5*e.distanceTo(t),l=-this.direction.dot(Ve),h=ke.dot(this.direction),u=-ke.dot(Ve),p=ke.lengthSq(),d=Math.abs(1-l*l);if(d>0)if(a=l*h-u,s=c*d,(r=l*u-h)>=0)if(a>=-s)if(a<=s){var f=1/d;o=(r*=f)*(r+l*(a*=f)+2*h)+a*(l*r+a+2*u)+p}else a=c,o=-(r=Math.max(0,-(l*a+h)))*r+a*(a+2*u)+p;else a=-c,o=-(r=Math.max(0,-(l*a+h)))*r+a*(a+2*u)+p;else a<=-s?o=-(r=Math.max(0,-(-l*c+h)))*r+(a=r>0?-c:Math.min(Math.max(-c,-u),c))*(a+2*u)+p:a<=s?(r=0,o=(a=Math.min(Math.max(-c,-u),c))*(a+2*u)+p):o=-(r=Math.max(0,-(l*c+h)))*r+(a=r>0?c:Math.min(Math.max(-c,-u),c))*(a+2*u)+p;else a=l>0?-c:c,o=-(r=Math.max(0,-(l*a+h)))*r+a*(a+2*u)+p;return n&&n.copy(this.direction).multiplyScalar(r).add(this.origin),i&&i.copy(Ve).multiplyScalar(a).add(He),o},intersectSphere:function(e,t){Ge.subVectors(e.center,this.origin);var n=Ge.dot(this.direction),i=Ge.dot(Ge)-n*n,r=e.radius*e.radius;if(i>r)return null;var a=Math.sqrt(r-i),o=n-a,s=n+a;return o<0&&s<0?null:o<0?this.at(s,t):this.at(o,t)},intersectsSphere:function(e){return this.distanceSqToPoint(e.center)<=e.radius*e.radius},distanceToPlane:function(e){var t=e.normal.dot(this.direction);if(0===t)return 0===e.distanceToPoint(this.origin)?0:null;var n=-(this.origin.dot(e.normal)+e.constant)/t;return n>=0?n:null},intersectPlane:function(e,t){var n=this.distanceToPlane(e);return null===n?null:this.at(n,t)},intersectsPlane:function(e){var t=e.distanceToPoint(this.origin);return 0===t||e.normal.dot(this.direction)*t<0},intersectBox:function(e,t){var n,i,r,a,o,s,c=1/this.direction.x,l=1/this.direction.y,h=1/this.direction.z,u=this.origin;return c>=0?(n=(e.min.x-u.x)*c,i=(e.max.x-u.x)*c):(n=(e.max.x-u.x)*c,i=(e.min.x-u.x)*c),l>=0?(r=(e.min.y-u.y)*l,a=(e.max.y-u.y)*l):(r=(e.max.y-u.y)*l,a=(e.min.y-u.y)*l),n>a||r>i?null:((r>n||n!=n)&&(n=r),(a=0?(o=(e.min.z-u.z)*h,s=(e.max.z-u.z)*h):(o=(e.max.z-u.z)*h,s=(e.min.z-u.z)*h),n>s||o>i?null:((o>n||n!=n)&&(n=o),(s=0?n:i,t)))},intersectsBox:function(e){return null!==this.intersectBox(e,Ge)},intersectTriangle:function(e,t,n,i,r){je.subVectors(t,e),We.subVectors(n,e),qe.crossVectors(je,We);var a,o=this.direction.dot(qe);if(o>0){if(i)return null;a=1}else{if(!(o<0))return null;a=-1,o=-o}ke.subVectors(this.origin,e);var s=a*this.direction.dot(We.crossVectors(ke,We));if(s<0)return null;var c=a*this.direction.dot(je.cross(ke));if(c<0)return null;if(s+c>o)return null;var l=-a*ke.dot(qe);return l<0?null:this.at(l/o,r)},applyMatrix4:function(e){return this.origin.applyMatrix4(e),this.direction.transformDirection(e),this},equals:function(e){return e.origin.equals(this.origin)&&e.direction.equals(this.direction)}});var Ye=new G,Ze=new G,Je=new k;function Ke(e,t){this.normal=void 0!==e?e:new G(1,0,0),this.constant=void 0!==t?t:0}Object.assign(Ke.prototype,{isPlane:!0,set:function(e,t){return this.normal.copy(e),this.constant=t,this},setComponents:function(e,t,n,i){return this.normal.set(e,t,n),this.constant=i,this},setFromNormalAndCoplanarPoint:function(e,t){return this.normal.copy(e),this.constant=-t.dot(this.normal),this},setFromCoplanarPoints:function(e,t,n){var i=Ye.subVectors(n,t).cross(Ze.subVectors(e,t)).normalize();return this.setFromNormalAndCoplanarPoint(i,e),this},clone:function(){return(new this.constructor).copy(this)},copy:function(e){return this.normal.copy(e.normal),this.constant=e.constant,this},normalize:function(){var e=1/this.normal.length();return this.normal.multiplyScalar(e),this.constant*=e,this},negate:function(){return this.constant*=-1,this.normal.negate(),this},distanceToPoint:function(e){return this.normal.dot(e)+this.constant},distanceToSphere:function(e){return this.distanceToPoint(e.center)-e.radius},projectPoint:function(e,t){return void 0===t&&(console.warn("THREE.Plane: .projectPoint() target is now required"),t=new G),t.copy(this.normal).multiplyScalar(-this.distanceToPoint(e)).add(e)},intersectLine:function(e,t){void 0===t&&(console.warn("THREE.Plane: .intersectLine() target is now required"),t=new G);var n=e.delta(Ye),i=this.normal.dot(n);if(0===i)return 0===this.distanceToPoint(e.start)?t.copy(e.start):void 0;var r=-(e.start.dot(this.normal)+this.constant)/i;return r<0||r>1?void 0:t.copy(n).multiplyScalar(r).add(e.start)},intersectsLine:function(e){var t=this.distanceToPoint(e.start),n=this.distanceToPoint(e.end);return t<0&&n>0||n<0&&t>0},intersectsBox:function(e){return e.intersectsPlane(this)},intersectsSphere:function(e){return e.intersectsPlane(this)},coplanarPoint:function(e){return void 0===e&&(console.warn("THREE.Plane: .coplanarPoint() target is now required"),e=new G),e.copy(this.normal).multiplyScalar(-this.constant)},applyMatrix4:function(e,t){var n=t||Je.getNormalMatrix(e),i=this.coplanarPoint(Ye).applyMatrix4(e),r=this.normal.applyMatrix3(n).normalize();return this.constant=-i.dot(r),this},translate:function(e){return this.constant-=e.dot(this.normal),this},equals:function(e){return e.normal.equals(this.normal)&&e.constant===this.constant}});var Qe=new G,$e=new G,et=new G,tt=new G,nt=new G,it=new G,rt=new G,at=new G,ot=new G,st=new G;function ct(e,t,n){this.a=void 0!==e?e:new G,this.b=void 0!==t?t:new G,this.c=void 0!==n?n:new G}Object.assign(ct,{getNormal:function(e,t,n,i){void 0===i&&(console.warn("THREE.Triangle: .getNormal() target is now required"),i=new G),i.subVectors(n,t),Qe.subVectors(e,t),i.cross(Qe);var r=i.lengthSq();return r>0?i.multiplyScalar(1/Math.sqrt(r)):i.set(0,0,0)},getBarycoord:function(e,t,n,i,r){Qe.subVectors(i,t),$e.subVectors(n,t),et.subVectors(e,t);var a=Qe.dot(Qe),o=Qe.dot($e),s=Qe.dot(et),c=$e.dot($e),l=$e.dot(et),h=a*c-o*o;if(void 0===r&&(console.warn("THREE.Triangle: .getBarycoord() target is now required"),r=new G),0===h)return r.set(-2,-1,-1);var u=1/h,p=(c*s-o*l)*u,d=(a*l-o*s)*u;return r.set(1-p-d,d,p)},containsPoint:function(e,t,n,i){return ct.getBarycoord(e,t,n,i,tt),tt.x>=0&&tt.y>=0&&tt.x+tt.y<=1},getUV:function(e,t,n,i,r,a,o,s){return this.getBarycoord(e,t,n,i,tt),s.set(0,0),s.addScaledVector(r,tt.x),s.addScaledVector(a,tt.y),s.addScaledVector(o,tt.z),s},isFrontFacing:function(e,t,n,i){return Qe.subVectors(n,t),$e.subVectors(e,t),Qe.cross($e).dot(i)<0}}),Object.assign(ct.prototype,{set:function(e,t,n){return this.a.copy(e),this.b.copy(t),this.c.copy(n),this},setFromPointsAndIndices:function(e,t,n,i){return this.a.copy(e[t]),this.b.copy(e[n]),this.c.copy(e[i]),this},clone:function(){return(new this.constructor).copy(this)},copy:function(e){return this.a.copy(e.a),this.b.copy(e.b),this.c.copy(e.c),this},getArea:function(){return Qe.subVectors(this.c,this.b),$e.subVectors(this.a,this.b),.5*Qe.cross($e).length()},getMidpoint:function(e){return void 0===e&&(console.warn("THREE.Triangle: .getMidpoint() target is now required"),e=new G),e.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)},getNormal:function(e){return ct.getNormal(this.a,this.b,this.c,e)},getPlane:function(e){return void 0===e&&(console.warn("THREE.Triangle: .getPlane() target is now required"),e=new Ke),e.setFromCoplanarPoints(this.a,this.b,this.c)},getBarycoord:function(e,t){return ct.getBarycoord(e,this.a,this.b,this.c,t)},getUV:function(e,t,n,i,r){return ct.getUV(e,this.a,this.b,this.c,t,n,i,r)},containsPoint:function(e){return ct.containsPoint(e,this.a,this.b,this.c)},isFrontFacing:function(e){return ct.isFrontFacing(this.a,this.b,this.c,e)},intersectsBox:function(e){return e.intersectsTriangle(this)},closestPointToPoint:function(e,t){void 0===t&&(console.warn("THREE.Triangle: .closestPointToPoint() target is now required"),t=new G);var n,i,r=this.a,a=this.b,o=this.c;nt.subVectors(a,r),it.subVectors(o,r),at.subVectors(e,r);var s=nt.dot(at),c=it.dot(at);if(s<=0&&c<=0)return t.copy(r);ot.subVectors(e,a);var l=nt.dot(ot),h=it.dot(ot);if(l>=0&&h<=l)return t.copy(a);var u=s*h-l*c;if(u<=0&&s>=0&&l<=0)return n=s/(s-l),t.copy(r).addScaledVector(nt,n);st.subVectors(e,o);var p=nt.dot(st),d=it.dot(st);if(d>=0&&p<=d)return t.copy(o);var f=p*c-s*d;if(f<=0&&c>=0&&d<=0)return i=c/(c-d),t.copy(r).addScaledVector(it,i);var m=l*d-p*h;if(m<=0&&h-l>=0&&p-d>=0)return rt.subVectors(o,a),i=(h-l)/(h-l+(p-d)),t.copy(a).addScaledVector(rt,i);var v=1/(m+f+u);return n=f*v,i=u*v,t.copy(r).addScaledVector(nt,n).addScaledVector(it,i)},equals:function(e){return e.a.equals(this.a)&&e.b.equals(this.b)&&e.c.equals(this.c)}});var lt={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},ht={h:0,s:0,l:0},ut={h:0,s:0,l:0};function pt(e,t,n){return void 0===t&&void 0===n?this.set(e):this.setRGB(e,t,n)}function dt(e,t,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?e+6*(t-e)*n:n<.5?t:n<2/3?e+6*(t-e)*(2/3-n):e}function ft(e){return e<.04045?.0773993808*e:Math.pow(.9478672986*e+.0521327014,2.4)}function mt(e){return e<.0031308?12.92*e:1.055*Math.pow(e,.41666)-.055}function vt(e,t,n,i,r,a){this.a=e,this.b=t,this.c=n,this.normal=i&&i.isVector3?i:new G,this.vertexNormals=Array.isArray(i)?i:[],this.color=r&&r.isColor?r:new pt,this.vertexColors=Array.isArray(r)?r:[],this.materialIndex=void 0!==a?a:0}Object.assign(pt.prototype,{isColor:!0,r:1,g:1,b:1,set:function(e){return e&&e.isColor?this.copy(e):"number"==typeof e?this.setHex(e):"string"==typeof e&&this.setStyle(e),this},setScalar:function(e){return this.r=e,this.g=e,this.b=e,this},setHex:function(e){return e=Math.floor(e),this.r=(e>>16&255)/255,this.g=(e>>8&255)/255,this.b=(255&e)/255,this},setRGB:function(e,t,n){return this.r=e,this.g=t,this.b=n,this},setHSL:function(e,t,n){if(e=N.euclideanModulo(e,1),t=N.clamp(t,0,1),n=N.clamp(n,0,1),0===t)this.r=this.g=this.b=n;else{var i=n<=.5?n*(1+t):n+t-n*t,r=2*n-i;this.r=dt(r,i,e+1/3),this.g=dt(r,i,e),this.b=dt(r,i,e-1/3)}return this},setStyle:function(e){function t(t){void 0!==t&&parseFloat(t)<1&&console.warn("THREE.Color: Alpha component of "+e+" will be ignored.")}var n;if(n=/^((?:rgb|hsl)a?)\(\s*([^\)]*)\)/.exec(e)){var i,r=n[1],a=n[2];switch(r){case"rgb":case"rgba":if(i=/^(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec(a))return this.r=Math.min(255,parseInt(i[1],10))/255,this.g=Math.min(255,parseInt(i[2],10))/255,this.b=Math.min(255,parseInt(i[3],10))/255,t(i[5]),this;if(i=/^(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec(a))return this.r=Math.min(100,parseInt(i[1],10))/100,this.g=Math.min(100,parseInt(i[2],10))/100,this.b=Math.min(100,parseInt(i[3],10))/100,t(i[5]),this;break;case"hsl":case"hsla":if(i=/^([0-9]*\.?[0-9]+)\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec(a)){var o=parseFloat(i[1])/360,s=parseInt(i[2],10)/100,c=parseInt(i[3],10)/100;return t(i[5]),this.setHSL(o,s,c)}}}else if(n=/^\#([A-Fa-f0-9]+)$/.exec(e)){var l=n[1],h=l.length;if(3===h)return this.r=parseInt(l.charAt(0)+l.charAt(0),16)/255,this.g=parseInt(l.charAt(1)+l.charAt(1),16)/255,this.b=parseInt(l.charAt(2)+l.charAt(2),16)/255,this;if(6===h)return this.r=parseInt(l.charAt(0)+l.charAt(1),16)/255,this.g=parseInt(l.charAt(2)+l.charAt(3),16)/255,this.b=parseInt(l.charAt(4)+l.charAt(5),16)/255,this}return e&&e.length>0?this.setColorName(e):this},setColorName:function(e){var t=lt[e];return void 0!==t?this.setHex(t):console.warn("THREE.Color: Unknown color "+e),this},clone:function(){return new this.constructor(this.r,this.g,this.b)},copy:function(e){return this.r=e.r,this.g=e.g,this.b=e.b,this},copyGammaToLinear:function(e,t){return void 0===t&&(t=2),this.r=Math.pow(e.r,t),this.g=Math.pow(e.g,t),this.b=Math.pow(e.b,t),this},copyLinearToGamma:function(e,t){void 0===t&&(t=2);var n=t>0?1/t:1;return this.r=Math.pow(e.r,n),this.g=Math.pow(e.g,n),this.b=Math.pow(e.b,n),this},convertGammaToLinear:function(e){return this.copyGammaToLinear(this,e),this},convertLinearToGamma:function(e){return this.copyLinearToGamma(this,e),this},copySRGBToLinear:function(e){return this.r=ft(e.r),this.g=ft(e.g),this.b=ft(e.b),this},copyLinearToSRGB:function(e){return this.r=mt(e.r),this.g=mt(e.g),this.b=mt(e.b),this},convertSRGBToLinear:function(){return this.copySRGBToLinear(this),this},convertLinearToSRGB:function(){return this.copyLinearToSRGB(this),this},getHex:function(){return 255*this.r<<16^255*this.g<<8^255*this.b<<0},getHexString:function(){return("000000"+this.getHex().toString(16)).slice(-6)},getHSL:function(e){void 0===e&&(console.warn("THREE.Color: .getHSL() target is now required"),e={h:0,s:0,l:0});var t,n,i=this.r,r=this.g,a=this.b,o=Math.max(i,r,a),s=Math.min(i,r,a),c=(s+o)/2;if(s===o)t=0,n=0;else{var l=o-s;switch(n=c<=.5?l/(o+s):l/(2-o-s),o){case i:t=(r-a)/l+(r0&&(n.alphaTest=this.alphaTest),!0===this.premultipliedAlpha&&(n.premultipliedAlpha=this.premultipliedAlpha),!0===this.wireframe&&(n.wireframe=this.wireframe),this.wireframeLinewidth>1&&(n.wireframeLinewidth=this.wireframeLinewidth),"round"!==this.wireframeLinecap&&(n.wireframeLinecap=this.wireframeLinecap),"round"!==this.wireframeLinejoin&&(n.wireframeLinejoin=this.wireframeLinejoin),!0===this.morphTargets&&(n.morphTargets=!0),!0===this.morphNormals&&(n.morphNormals=!0),!0===this.skinning&&(n.skinning=!0),!1===this.visible&&(n.visible=!1),!1===this.toneMapped&&(n.toneMapped=!1),"{}"!==JSON.stringify(this.userData)&&(n.userData=this.userData),t){var r=i(e.textures),a=i(e.images);r.length>0&&(n.textures=r),a.length>0&&(n.images=a)}return n},clone:function(){return(new this.constructor).copy(this)},copy:function(e){this.name=e.name,this.fog=e.fog,this.blending=e.blending,this.side=e.side,this.flatShading=e.flatShading,this.vertexTangents=e.vertexTangents,this.vertexColors=e.vertexColors,this.opacity=e.opacity,this.transparent=e.transparent,this.blendSrc=e.blendSrc,this.blendDst=e.blendDst,this.blendEquation=e.blendEquation,this.blendSrcAlpha=e.blendSrcAlpha,this.blendDstAlpha=e.blendDstAlpha,this.blendEquationAlpha=e.blendEquationAlpha,this.depthFunc=e.depthFunc,this.depthTest=e.depthTest,this.depthWrite=e.depthWrite,this.stencilWriteMask=e.stencilWriteMask,this.stencilFunc=e.stencilFunc,this.stencilRef=e.stencilRef,this.stencilFuncMask=e.stencilFuncMask,this.stencilFail=e.stencilFail,this.stencilZFail=e.stencilZFail,this.stencilZPass=e.stencilZPass,this.stencilWrite=e.stencilWrite;var t=e.clippingPlanes,n=null;if(null!==t){var i=t.length;n=new Array(i);for(var r=0;r!==i;++r)n[r]=t[r].clone()}return this.clippingPlanes=n,this.clipIntersection=e.clipIntersection,this.clipShadows=e.clipShadows,this.shadowSide=e.shadowSide,this.colorWrite=e.colorWrite,this.precision=e.precision,this.polygonOffset=e.polygonOffset,this.polygonOffsetFactor=e.polygonOffsetFactor,this.polygonOffsetUnits=e.polygonOffsetUnits,this.dithering=e.dithering,this.alphaTest=e.alphaTest,this.premultipliedAlpha=e.premultipliedAlpha,this.visible=e.visible,this.toneMapped=e.toneMapped,this.userData=JSON.parse(JSON.stringify(e.userData)),this},dispose:function(){this.dispatchEvent({type:"dispose"})}}),Object.defineProperty(yt.prototype,"needsUpdate",{set:function(e){!0===e&&this.version++}}),xt.prototype=Object.create(yt.prototype),xt.prototype.constructor=xt,xt.prototype.isMeshBasicMaterial=!0,xt.prototype.copy=function(e){return yt.prototype.copy.call(this,e),this.color.copy(e.color),this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.skinning=e.skinning,this.morphTargets=e.morphTargets,this};var bt=new G;function wt(e,t,n){if(Array.isArray(e))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.name="",this.array=e,this.itemSize=t,this.count=void 0!==e?e.length/t:0,this.normalized=!0===n,this.usage=R,this.updateRange={offset:0,count:-1},this.version=0}function _t(e,t,n){wt.call(this,new Int8Array(e),t,n)}function Mt(e,t,n){wt.call(this,new Uint8Array(e),t,n)}function Tt(e,t,n){wt.call(this,new Uint8ClampedArray(e),t,n)}function St(e,t,n){wt.call(this,new Int16Array(e),t,n)}function Et(e,t,n){wt.call(this,new Uint16Array(e),t,n)}function At(e,t,n){wt.call(this,new Int32Array(e),t,n)}function Lt(e,t,n){wt.call(this,new Uint32Array(e),t,n)}function Pt(e,t,n){wt.call(this,new Float32Array(e),t,n)}function Rt(e,t,n){wt.call(this,new Float64Array(e),t,n)}function Ct(){this.vertices=[],this.normals=[],this.colors=[],this.uvs=[],this.uvs2=[],this.groups=[],this.morphTargets={},this.skinWeights=[],this.skinIndices=[],this.boundingBox=null,this.boundingSphere=null,this.verticesNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.uvsNeedUpdate=!1,this.groupsNeedUpdate=!1}function It(e){if(0===e.length)return-1/0;for(var t=e[0],n=1,i=e.length;nt&&(t=e[n]);return t}Object.defineProperty(wt.prototype,"needsUpdate",{set:function(e){!0===e&&this.version++}}),Object.assign(wt.prototype,{isBufferAttribute:!0,onUploadCallback:function(){},setUsage:function(e){return this.usage=e,this},copy:function(e){return this.name=e.name,this.array=new e.array.constructor(e.array),this.itemSize=e.itemSize,this.count=e.count,this.normalized=e.normalized,this.usage=e.usage,this},copyAt:function(e,t,n){e*=this.itemSize,n*=t.itemSize;for(var i=0,r=this.itemSize;i0,o=r[1]&&r[1].length>0,s=e.morphTargets,c=s.length;if(c>0){t=[];for(var l=0;l0){for(h=[],l=0;l0&&0===n.length&&console.error("THREE.DirectGeometry: Faceless geometries are not supported."),l=0;l65535?Lt:Et)(e,1):this.index=e},getAttribute:function(e){return this.attributes[e]},setAttribute:function(e,t){return this.attributes[e]=t,this},deleteAttribute:function(e){return delete this.attributes[e],this},addGroup:function(e,t,n){this.groups.push({start:e,count:t,materialIndex:void 0!==n?n:0})},clearGroups:function(){this.groups=[]},setDrawRange:function(e,t){this.drawRange.start=e,this.drawRange.count=t},applyMatrix:function(e){var t=this.attributes.position;void 0!==t&&(t.applyMatrix4(e),t.needsUpdate=!0);var n=this.attributes.normal;if(void 0!==n){var i=(new k).getNormalMatrix(e);n.applyNormalMatrix(i),n.needsUpdate=!0}var r=this.attributes.tangent;return void 0!==r&&(r.transformDirection(e),r.needsUpdate=!0),null!==this.boundingBox&&this.computeBoundingBox(),null!==this.boundingSphere&&this.computeBoundingSphere(),this},rotateX:function(e){return Dt.makeRotationX(e),this.applyMatrix(Dt),this},rotateY:function(e){return Dt.makeRotationY(e),this.applyMatrix(Dt),this},rotateZ:function(e){return Dt.makeRotationZ(e),this.applyMatrix(Dt),this},translate:function(e,t,n){return Dt.makeTranslation(e,t,n),this.applyMatrix(Dt),this},scale:function(e,t,n){return Dt.makeScale(e,t,n),this.applyMatrix(Dt),this},lookAt:function(e){return Nt.lookAt(e),Nt.updateMatrix(),this.applyMatrix(Nt.matrix),this},center:function(){return this.computeBoundingBox(),this.boundingBox.getCenter(zt).negate(),this.translate(zt.x,zt.y,zt.z),this},setFromObject:function(e){var t=e.geometry;if(e.isPoints||e.isLine){var n=new Pt(3*t.vertices.length,3),i=new Pt(3*t.colors.length,3);if(this.setAttribute("position",n.copyVector3sArray(t.vertices)),this.setAttribute("color",i.copyColorsArray(t.colors)),t.lineDistances&&t.lineDistances.length===t.vertices.length){var r=new Pt(t.lineDistances.length,1);this.setAttribute("lineDistance",r.copyArray(t.lineDistances))}null!==t.boundingSphere&&(this.boundingSphere=t.boundingSphere.clone()),null!==t.boundingBox&&(this.boundingBox=t.boundingBox.clone())}else e.isMesh&&t&&t.isGeometry&&this.fromGeometry(t);return this},setFromPoints:function(e){for(var t=[],n=0,i=e.length;n0){var n=new Float32Array(3*e.normals.length);this.setAttribute("normal",new wt(n,3).copyVector3sArray(e.normals))}if(e.colors.length>0){var i=new Float32Array(3*e.colors.length);this.setAttribute("color",new wt(i,3).copyColorsArray(e.colors))}if(e.uvs.length>0){var r=new Float32Array(2*e.uvs.length);this.setAttribute("uv",new wt(r,2).copyVector2sArray(e.uvs))}if(e.uvs2.length>0){var a=new Float32Array(2*e.uvs2.length);this.setAttribute("uv2",new wt(a,2).copyVector2sArray(e.uvs2))}for(var o in this.groups=e.groups,e.morphTargets){for(var s=[],c=e.morphTargets[o],l=0,h=c.length;l0){var d=new Pt(4*e.skinIndices.length,4);this.setAttribute("skinIndex",d.copyVector4sArray(e.skinIndices))}if(e.skinWeights.length>0){var f=new Pt(4*e.skinWeights.length,4);this.setAttribute("skinWeight",f.copyVector4sArray(e.skinWeights))}return null!==e.boundingSphere&&(this.boundingSphere=e.boundingSphere.clone()),null!==e.boundingBox&&(this.boundingBox=e.boundingBox.clone()),this},computeBoundingBox:function(){null===this.boundingBox&&(this.boundingBox=new ze);var e=this.attributes.position,t=this.morphAttributes.position;if(void 0!==e){if(this.boundingBox.setFromBufferAttribute(e),t)for(var n=0,i=t.length;n0&&(e.userData=this.userData),void 0!==this.parameters){var t=this.parameters;for(var n in t)void 0!==t[n]&&(e[n]=t[n]);return e}e.data={attributes:{}};var i=this.index;null!==i&&(e.data.index={type:i.array.constructor.name,array:Array.prototype.slice.call(i.array)});var r=this.attributes;for(var n in r){var a=(p=r[n]).toJSON();""!==p.name&&(a.name=p.name),e.data.attributes[n]=a}var o={},s=!1;for(var n in this.morphAttributes){for(var c=this.morphAttributes[n],l=[],h=0,u=c.length;h0&&(o[n]=l,s=!0)}s&&(e.data.morphAttributes=o,e.data.morphTargetsRelative=this.morphTargetsRelative);var d=this.groups;d.length>0&&(e.data.groups=JSON.parse(JSON.stringify(d)));var f=this.boundingSphere;return null!==f&&(e.data.boundingSphere={center:f.center.toArray(),radius:f.radius}),e},clone:function(){return(new Gt).copy(this)},copy:function(e){var t,n,i;this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null,this.name=e.name;var r=e.index;null!==r&&this.setIndex(r.clone());var a=e.attributes;for(t in a){var o=a[t];this.setAttribute(t,o.clone())}var s=e.morphAttributes;for(t in s){var c=[],l=s[t];for(n=0,i=l.length;nn.far?null:{distance:c,point:rn.clone(),object:e}}function sn(e,t,n,i,r,a,o,s,c,l,h,u){jt.fromBufferAttribute(r,l),Wt.fromBufferAttribute(r,h),qt.fromBufferAttribute(r,u);var p=e.morphTargetInfluences;if(t.morphTargets&&a&&p){Jt.set(0,0,0),Kt.set(0,0,0),Qt.set(0,0,0);for(var d=0,f=a.length;d0){var o=r[a[0]];if(void 0!==o)for(this.morphTargetInfluences=[],this.morphTargetDictionary={},e=0,t=o.length;e0&&console.error("THREE.Mesh.updateMorphTargets() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.")}},raycast:function(e,t){var n,i=this.geometry,r=this.material,a=this.matrixWorld;if(void 0!==r&&(null===i.boundingSphere&&i.computeBoundingSphere(),kt.copy(i.boundingSphere),kt.applyMatrix4(a),!1!==e.ray.intersectsSphere(kt)&&(Ht.getInverse(a),Vt.copy(e.ray).applyMatrix4(Ht),null===i.boundingBox||!1!==Vt.intersectsBox(i.boundingBox))))if(i.isBufferGeometry){var o,s,c,l,h,u,p,d,f,m=i.index,v=i.attributes.position,g=i.morphAttributes.position,y=i.morphTargetsRelative,x=i.attributes.uv,b=i.attributes.uv2,w=i.groups,_=i.drawRange;if(null!==m)if(Array.isArray(r))for(l=0,u=w.length;l0&&(E=R);for(var C=0,I=P.length;C0)for(l=0;l0&&(this.normalsNeedUpdate=!0)},computeFlatVertexNormals:function(){var e,t,n;for(this.computeFaceNormals(),e=0,t=this.faces.length;e0&&(this.normalsNeedUpdate=!0)},computeMorphNormals:function(){var e,t,n,i,r;for(n=0,i=this.faces.length;n=0;n--){var f=p[n];for(this.faces.splice(f,1),o=0,s=this.faceVertexUvs.length;o0,v=d.vertexNormals.length>0,g=1!==d.color.r||1!==d.color.g||1!==d.color.b,y=d.vertexColors.length>0,x=0;if(x=M(x,0,0),x=M(x,1,!0),x=M(x,2,!1),x=M(x,3,f),x=M(x,4,m),x=M(x,5,v),x=M(x,6,g),x=M(x,7,y),o.push(x),o.push(d.a,d.b,d.c),o.push(d.materialIndex),f){var b=this.faceVertexUvs[0][r];o.push(E(b[0]),E(b[1]),E(b[2]))}if(m&&o.push(T(d.normal)),v){var w=d.vertexNormals;o.push(T(w[0]),T(w[1]),T(w[2]))}if(g&&o.push(S(d.color)),y){var _=d.vertexColors;o.push(S(_[0]),S(_[1]),S(_[2]))}}function M(e,t,n){return n?e|1<0&&(e.data.colors=l),u.length>0&&(e.data.uvs=[u]),e.data.faces=o,e},clone:function(){return(new pn).copy(this)},copy:function(e){var t,n,i,r,a,o;this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.name=e.name;var s=e.vertices;for(t=0,n=s.length;t0?1:-1,l.push(P.x,P.y,P.z),h.push(y/m),h.push(1-x/v),A+=1}}for(x=0;x0&&(t.defines=this.defines),t.vertexShader=this.vertexShader,t.fragmentShader=this.fragmentShader;var r={};for(var a in this.extensions)!0===this.extensions[a]&&(r[a]=!0);return Object.keys(r).length>0&&(t.extensions=r),t},gn.prototype=Object.assign(Object.create(we.prototype),{constructor:gn,isCamera:!0,copy:function(e,t){return we.prototype.copy.call(this,e,t),this.matrixWorldInverse.copy(e.matrixWorldInverse),this.projectionMatrix.copy(e.projectionMatrix),this.projectionMatrixInverse.copy(e.projectionMatrixInverse),this},getWorldDirection:function(e){void 0===e&&(console.warn("THREE.Camera: .getWorldDirection() target is now required"),e=new G),this.updateMatrixWorld(!0);var t=this.matrixWorld.elements;return e.set(-t[8],-t[9],-t[10]).normalize()},updateMatrixWorld:function(e){we.prototype.updateMatrixWorld.call(this,e),this.matrixWorldInverse.getInverse(this.matrixWorld)},clone:function(){return(new this.constructor).copy(this)}}),yn.prototype=Object.assign(Object.create(gn.prototype),{constructor:yn,isPerspectiveCamera:!0,copy:function(e,t){return gn.prototype.copy.call(this,e,t),this.fov=e.fov,this.zoom=e.zoom,this.near=e.near,this.far=e.far,this.focus=e.focus,this.aspect=e.aspect,this.view=null===e.view?null:Object.assign({},e.view),this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this},setFocalLength:function(e){var t=.5*this.getFilmHeight()/e;this.fov=2*N.RAD2DEG*Math.atan(t),this.updateProjectionMatrix()},getFocalLength:function(){var e=Math.tan(.5*N.DEG2RAD*this.fov);return.5*this.getFilmHeight()/e},getEffectiveFOV:function(){return 2*N.RAD2DEG*Math.atan(Math.tan(.5*N.DEG2RAD*this.fov)/this.zoom)},getFilmWidth:function(){return this.filmGauge*Math.min(this.aspect,1)},getFilmHeight:function(){return this.filmGauge/Math.max(this.aspect,1)},setViewOffset:function(e,t,n,i,r,a){this.aspect=e/t,null===this.view&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=e,this.view.fullHeight=t,this.view.offsetX=n,this.view.offsetY=i,this.view.width=r,this.view.height=a,this.updateProjectionMatrix()},clearViewOffset:function(){null!==this.view&&(this.view.enabled=!1),this.updateProjectionMatrix()},updateProjectionMatrix:function(){var e=this.near,t=e*Math.tan(.5*N.DEG2RAD*this.fov)/this.zoom,n=2*t,i=this.aspect*n,r=-.5*i,a=this.view;if(null!==this.view&&this.view.enabled){var o=a.fullWidth,s=a.fullHeight;r+=a.offsetX*i/o,t-=a.offsetY*n/s,i*=a.width/o,n*=a.height/s}var c=this.filmOffset;0!==c&&(r+=e*c/this.getFilmWidth()),this.projectionMatrix.makePerspective(r,r+i,t,t-n,e,this.far),this.projectionMatrixInverse.getInverse(this.projectionMatrix)},toJSON:function(e){var t=we.prototype.toJSON.call(this,e);return t.object.fov=this.fov,t.object.zoom=this.zoom,t.object.near=this.near,t.object.far=this.far,t.object.focus=this.focus,t.object.aspect=this.aspect,null!==this.view&&(t.object.view=Object.assign({},this.view)),t.object.filmGauge=this.filmGauge,t.object.filmOffset=this.filmOffset,t}});var xn=90;function bn(e,t,n,i){we.call(this),this.type="CubeCamera";var r=new yn(xn,1,e,t);r.up.set(0,-1,0),r.lookAt(new G(1,0,0)),this.add(r);var a=new yn(xn,1,e,t);a.up.set(0,-1,0),a.lookAt(new G(-1,0,0)),this.add(a);var o=new yn(xn,1,e,t);o.up.set(0,0,1),o.lookAt(new G(0,1,0)),this.add(o);var s=new yn(xn,1,e,t);s.up.set(0,0,-1),s.lookAt(new G(0,-1,0)),this.add(s);var l=new yn(xn,1,e,t);l.up.set(0,-1,0),l.lookAt(new G(0,0,1)),this.add(l);var h=new yn(xn,1,e,t);h.up.set(0,-1,0),h.lookAt(new G(0,0,-1)),this.add(h),i=i||{format:m,magFilter:c,minFilter:c},this.renderTarget=new wn(n,n,i),this.renderTarget.texture.name="CubeCamera",this.update=function(e,t){null===this.parent&&this.updateMatrixWorld();var n=e.getRenderTarget(),i=this.renderTarget,c=i.texture.generateMipmaps;i.texture.generateMipmaps=!1,e.setRenderTarget(i,0),e.render(t,r),e.setRenderTarget(i,1),e.render(t,a),e.setRenderTarget(i,2),e.render(t,o),e.setRenderTarget(i,3),e.render(t,s),e.setRenderTarget(i,4),e.render(t,l),i.texture.generateMipmaps=c,e.setRenderTarget(i,5),e.render(t,h),e.setRenderTarget(n)},this.clear=function(e,t,n,i){for(var r=e.getRenderTarget(),a=this.renderTarget,o=0;o<6;o++)e.setRenderTarget(a,o),e.clear(t,n,i);e.setRenderTarget(r)}}function wn(e,t,n){Y.call(this,e,t,n)}function _n(e,t,n,i,r,o,s,c,l,h,u,p){q.call(this,null,o,s,c,l,h,i,r,u,p),this.image={data:e||null,width:t||1,height:n||1},this.magFilter=void 0!==l?l:a,this.minFilter=void 0!==h?h:a,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1,this.needsUpdate=!0}bn.prototype=Object.create(we.prototype),bn.prototype.constructor=bn,wn.prototype=Object.create(Y.prototype),wn.prototype.constructor=wn,wn.prototype.isWebGLRenderTargetCube=!0,wn.prototype.fromEquirectangularTexture=function(e,t){this.texture.type=t.type,this.texture.format=t.format,this.texture.encoding=t.encoding;var n=new _e,i={uniforms:{tEquirect:{value:null}},vertexShader:["varying vec3 vWorldDirection;","vec3 transformDirection( in vec3 dir, in mat4 matrix ) {","\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );","}","void main() {","\tvWorldDirection = transformDirection( position, modelMatrix );","\t#include ","\t#include ","}"].join("\n"),fragmentShader:["uniform sampler2D tEquirect;","varying vec3 vWorldDirection;","#define RECIPROCAL_PI 0.31830988618","#define RECIPROCAL_PI2 0.15915494","void main() {","\tvec3 direction = normalize( vWorldDirection );","\tvec2 sampleUV;","\tsampleUV.y = asin( clamp( direction.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;","\tsampleUV.x = atan( direction.z, direction.x ) * RECIPROCAL_PI2 + 0.5;","\tgl_FragColor = texture2D( tEquirect, sampleUV );","}"].join("\n")},r=new vn({type:"CubemapFromEquirect",uniforms:fn(i.uniforms),vertexShader:i.vertexShader,fragmentShader:i.fragmentShader,side:1,blending:0});r.uniforms.tEquirect.value=t;var a=new an(new dn(5,5,5),r);n.add(a);var o=new bn(1,10,1);return o.renderTarget=this,o.renderTarget.texture.name="CubeCameraTexture",o.update(e,n),a.geometry.dispose(),a.material.dispose(),this},_n.prototype=Object.create(q.prototype),_n.prototype.constructor=_n,_n.prototype.isDataTexture=!0;var Mn=new Ue,Tn=new G;function Sn(e,t,n,i,r,a){this.planes=[void 0!==e?e:new Ke,void 0!==t?t:new Ke,void 0!==n?n:new Ke,void 0!==i?i:new Ke,void 0!==r?r:new Ke,void 0!==a?a:new Ke]}Object.assign(Sn.prototype,{set:function(e,t,n,i,r,a){var o=this.planes;return o[0].copy(e),o[1].copy(t),o[2].copy(n),o[3].copy(i),o[4].copy(r),o[5].copy(a),this},clone:function(){return(new this.constructor).copy(this)},copy:function(e){for(var t=this.planes,n=0;n<6;n++)t[n].copy(e.planes[n]);return this},setFromMatrix:function(e){var t=this.planes,n=e.elements,i=n[0],r=n[1],a=n[2],o=n[3],s=n[4],c=n[5],l=n[6],h=n[7],u=n[8],p=n[9],d=n[10],f=n[11],m=n[12],v=n[13],g=n[14],y=n[15];return t[0].setComponents(o-i,h-s,f-u,y-m).normalize(),t[1].setComponents(o+i,h+s,f+u,y+m).normalize(),t[2].setComponents(o+r,h+c,f+p,y+v).normalize(),t[3].setComponents(o-r,h-c,f-p,y-v).normalize(),t[4].setComponents(o-a,h-l,f-d,y-g).normalize(),t[5].setComponents(o+a,h+l,f+d,y+g).normalize(),this},intersectsObject:function(e){var t=e.geometry;return null===t.boundingSphere&&t.computeBoundingSphere(),Mn.copy(t.boundingSphere).applyMatrix4(e.matrixWorld),this.intersectsSphere(Mn)},intersectsSprite:function(e){return Mn.center.set(0,0,0),Mn.radius=.7071067811865476,Mn.applyMatrix4(e.matrixWorld),this.intersectsSphere(Mn)},intersectsSphere:function(e){for(var t=this.planes,n=e.center,i=-e.radius,r=0;r<6;r++)if(t[r].distanceToPoint(n)0?e.max.x:e.min.x,Tn.y=i.normal.y>0?e.max.y:e.min.y,Tn.z=i.normal.z>0?e.max.z:e.min.z,i.distanceToPoint(Tn)<0)return!1}return!0},containsPoint:function(e){for(var t=this.planes,n=0;n<6;n++)if(t[n].distanceToPoint(e)<0)return!1;return!0}});var En={alphamap_fragment:"#ifdef USE_ALPHAMAP\n\tdiffuseColor.a *= texture2D( alphaMap, vUv ).g;\n#endif",alphamap_pars_fragment:"#ifdef USE_ALPHAMAP\n\tuniform sampler2D alphaMap;\n#endif",alphatest_fragment:"#ifdef ALPHATEST\n\tif ( diffuseColor.a < ALPHATEST ) discard;\n#endif",aomap_fragment:"#ifdef USE_AOMAP\n\tfloat ambientOcclusion = ( texture2D( aoMap, vUv2 ).r - 1.0 ) * aoMapIntensity + 1.0;\n\treflectedLight.indirectDiffuse *= ambientOcclusion;\n\t#if defined( USE_ENVMAP ) && defined( STANDARD )\n\t\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\n\t\treflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.specularRoughness );\n\t#endif\n#endif",aomap_pars_fragment:"#ifdef USE_AOMAP\n\tuniform sampler2D aoMap;\n\tuniform float aoMapIntensity;\n#endif",begin_vertex:"vec3 transformed = vec3( position );",beginnormal_vertex:"vec3 objectNormal = vec3( normal );\n#ifdef USE_TANGENT\n\tvec3 objectTangent = vec3( tangent.xyz );\n#endif",bsdfs:"vec2 integrateSpecularBRDF( const in float dotNV, const in float roughness ) {\n\tconst vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\n\tconst vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\n\tvec4 r = roughness * c0 + c1;\n\tfloat a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\n\treturn vec2( -1.04, 1.04 ) * a004 + r.zw;\n}\nfloat punctualLightIntensityToIrradianceFactor( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\n#if defined ( PHYSICALLY_CORRECT_LIGHTS )\n\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\n\tif( cutoffDistance > 0.0 ) {\n\t\tdistanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\n\t}\n\treturn distanceFalloff;\n#else\n\tif( cutoffDistance > 0.0 && decayExponent > 0.0 ) {\n\t\treturn pow( saturate( -lightDistance / cutoffDistance + 1.0 ), decayExponent );\n\t}\n\treturn 1.0;\n#endif\n}\nvec3 BRDF_Diffuse_Lambert( const in vec3 diffuseColor ) {\n\treturn RECIPROCAL_PI * diffuseColor;\n}\nvec3 F_Schlick( const in vec3 specularColor, const in float dotLH ) {\n\tfloat fresnel = exp2( ( -5.55473 * dotLH - 6.98316 ) * dotLH );\n\treturn ( 1.0 - specularColor ) * fresnel + specularColor;\n}\nvec3 F_Schlick_RoughnessDependent( const in vec3 F0, const in float dotNV, const in float roughness ) {\n\tfloat fresnel = exp2( ( -5.55473 * dotNV - 6.98316 ) * dotNV );\n\tvec3 Fr = max( vec3( 1.0 - roughness ), F0 ) - F0;\n\treturn Fr * fresnel + F0;\n}\nfloat G_GGX_Smith( const in float alpha, const in float dotNL, const in float dotNV ) {\n\tfloat a2 = pow2( alpha );\n\tfloat gl = dotNL + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\n\tfloat gv = dotNV + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\n\treturn 1.0 / ( gl * gv );\n}\nfloat G_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {\n\tfloat a2 = pow2( alpha );\n\tfloat gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\n\tfloat gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\n\treturn 0.5 / max( gv + gl, EPSILON );\n}\nfloat D_GGX( const in float alpha, const in float dotNH ) {\n\tfloat a2 = pow2( alpha );\n\tfloat denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;\n\treturn RECIPROCAL_PI * a2 / pow2( denom );\n}\nvec3 BRDF_Specular_GGX( const in IncidentLight incidentLight, const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float roughness ) {\n\tfloat alpha = pow2( roughness );\n\tvec3 halfDir = normalize( incidentLight.direction + viewDir );\n\tfloat dotNL = saturate( dot( normal, incidentLight.direction ) );\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tfloat dotNH = saturate( dot( normal, halfDir ) );\n\tfloat dotLH = saturate( dot( incidentLight.direction, halfDir ) );\n\tvec3 F = F_Schlick( specularColor, dotLH );\n\tfloat G = G_GGX_SmithCorrelated( alpha, dotNL, dotNV );\n\tfloat D = D_GGX( alpha, dotNH );\n\treturn F * ( G * D );\n}\nvec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {\n\tconst float LUT_SIZE = 64.0;\n\tconst float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\n\tconst float LUT_BIAS = 0.5 / LUT_SIZE;\n\tfloat dotNV = saturate( dot( N, V ) );\n\tvec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );\n\tuv = uv * LUT_SCALE + LUT_BIAS;\n\treturn uv;\n}\nfloat LTC_ClippedSphereFormFactor( const in vec3 f ) {\n\tfloat l = length( f );\n\treturn max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );\n}\nvec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {\n\tfloat x = dot( v1, v2 );\n\tfloat y = abs( x );\n\tfloat a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;\n\tfloat b = 3.4175940 + ( 4.1616724 + y ) * y;\n\tfloat v = a / b;\n\tfloat theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\n\treturn cross( v1, v2 ) * theta_sintheta;\n}\nvec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {\n\tvec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\n\tvec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\n\tvec3 lightNormal = cross( v1, v2 );\n\tif( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );\n\tvec3 T1, T2;\n\tT1 = normalize( V - N * dot( V, N ) );\n\tT2 = - cross( N, T1 );\n\tmat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\n\tvec3 coords[ 4 ];\n\tcoords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\n\tcoords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\n\tcoords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\n\tcoords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\n\tcoords[ 0 ] = normalize( coords[ 0 ] );\n\tcoords[ 1 ] = normalize( coords[ 1 ] );\n\tcoords[ 2 ] = normalize( coords[ 2 ] );\n\tcoords[ 3 ] = normalize( coords[ 3 ] );\n\tvec3 vectorFormFactor = vec3( 0.0 );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\n\tfloat result = LTC_ClippedSphereFormFactor( vectorFormFactor );\n\treturn vec3( result );\n}\nvec3 BRDF_Specular_GGX_Environment( const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float roughness ) {\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tvec2 brdf = integrateSpecularBRDF( dotNV, roughness );\n\treturn specularColor * brdf.x + brdf.y;\n}\nvoid BRDF_Specular_Multiscattering_Environment( const in GeometricContext geometry, const in vec3 specularColor, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\n\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\n\tvec3 F = F_Schlick_RoughnessDependent( specularColor, dotNV, roughness );\n\tvec2 brdf = integrateSpecularBRDF( dotNV, roughness );\n\tvec3 FssEss = F * brdf.x + brdf.y;\n\tfloat Ess = brdf.x + brdf.y;\n\tfloat Ems = 1.0 - Ess;\n\tvec3 Favg = specularColor + ( 1.0 - specularColor ) * 0.047619;\tvec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg );\n\tsingleScatter += FssEss;\n\tmultiScatter += Fms * Ems;\n}\nfloat G_BlinnPhong_Implicit( ) {\n\treturn 0.25;\n}\nfloat D_BlinnPhong( const in float shininess, const in float dotNH ) {\n\treturn RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );\n}\nvec3 BRDF_Specular_BlinnPhong( const in IncidentLight incidentLight, const in GeometricContext geometry, const in vec3 specularColor, const in float shininess ) {\n\tvec3 halfDir = normalize( incidentLight.direction + geometry.viewDir );\n\tfloat dotNH = saturate( dot( geometry.normal, halfDir ) );\n\tfloat dotLH = saturate( dot( incidentLight.direction, halfDir ) );\n\tvec3 F = F_Schlick( specularColor, dotLH );\n\tfloat G = G_BlinnPhong_Implicit( );\n\tfloat D = D_BlinnPhong( shininess, dotNH );\n\treturn F * ( G * D );\n}\nfloat GGXRoughnessToBlinnExponent( const in float ggxRoughness ) {\n\treturn ( 2.0 / pow2( ggxRoughness + 0.0001 ) - 2.0 );\n}\nfloat BlinnExponentToGGXRoughness( const in float blinnExponent ) {\n\treturn sqrt( 2.0 / ( blinnExponent + 2.0 ) );\n}\n#if defined( USE_SHEEN )\nfloat D_Charlie(float roughness, float NoH) {\n\tfloat invAlpha = 1.0 / roughness;\n\tfloat cos2h = NoH * NoH;\n\tfloat sin2h = max(1.0 - cos2h, 0.0078125);\treturn (2.0 + invAlpha) * pow(sin2h, invAlpha * 0.5) / (2.0 * PI);\n}\nfloat V_Neubelt(float NoV, float NoL) {\n\treturn saturate(1.0 / (4.0 * (NoL + NoV - NoL * NoV)));\n}\nvec3 BRDF_Specular_Sheen( const in float roughness, const in vec3 L, const in GeometricContext geometry, vec3 specularColor ) {\n\tvec3 N = geometry.normal;\n\tvec3 V = geometry.viewDir;\n\tvec3 H = normalize( V + L );\n\tfloat dotNH = saturate( dot( N, H ) );\n\treturn specularColor * D_Charlie( roughness, dotNH ) * V_Neubelt( dot(N, V), dot(N, L) );\n}\n#endif",bumpmap_pars_fragment:"#ifdef USE_BUMPMAP\n\tuniform sampler2D bumpMap;\n\tuniform float bumpScale;\n\tvec2 dHdxy_fwd() {\n\t\tvec2 dSTdx = dFdx( vUv );\n\t\tvec2 dSTdy = dFdy( vUv );\n\t\tfloat Hll = bumpScale * texture2D( bumpMap, vUv ).x;\n\t\tfloat dBx = bumpScale * texture2D( bumpMap, vUv + dSTdx ).x - Hll;\n\t\tfloat dBy = bumpScale * texture2D( bumpMap, vUv + dSTdy ).x - Hll;\n\t\treturn vec2( dBx, dBy );\n\t}\n\tvec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy ) {\n\t\tvec3 vSigmaX = vec3( dFdx( surf_pos.x ), dFdx( surf_pos.y ), dFdx( surf_pos.z ) );\n\t\tvec3 vSigmaY = vec3( dFdy( surf_pos.x ), dFdy( surf_pos.y ), dFdy( surf_pos.z ) );\n\t\tvec3 vN = surf_norm;\n\t\tvec3 R1 = cross( vSigmaY, vN );\n\t\tvec3 R2 = cross( vN, vSigmaX );\n\t\tfloat fDet = dot( vSigmaX, R1 );\n\t\tfDet *= ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t\tvec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\n\t\treturn normalize( abs( fDet ) * surf_norm - vGrad );\n\t}\n#endif",clipping_planes_fragment:"#if NUM_CLIPPING_PLANES > 0\n\tvec4 plane;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\n\t\tplane = clippingPlanes[ i ];\n\t\tif ( dot( vViewPosition, plane.xyz ) > plane.w ) discard;\n\t}\n\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\n\t\tbool clipped = true;\n\t\t#pragma unroll_loop\n\t\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\n\t\t\tplane = clippingPlanes[ i ];\n\t\t\tclipped = ( dot( vViewPosition, plane.xyz ) > plane.w ) && clipped;\n\t\t}\n\t\tif ( clipped ) discard;\n\t#endif\n#endif",clipping_planes_pars_fragment:"#if NUM_CLIPPING_PLANES > 0\n\t#if ! defined( STANDARD ) && ! defined( PHONG ) && ! defined( MATCAP )\n\t\tvarying vec3 vViewPosition;\n\t#endif\n\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\n#endif",clipping_planes_pars_vertex:"#if NUM_CLIPPING_PLANES > 0 && ! defined( STANDARD ) && ! defined( PHONG ) && ! defined( MATCAP )\n\tvarying vec3 vViewPosition;\n#endif",clipping_planes_vertex:"#if NUM_CLIPPING_PLANES > 0 && ! defined( STANDARD ) && ! defined( PHONG ) && ! defined( MATCAP )\n\tvViewPosition = - mvPosition.xyz;\n#endif",color_fragment:"#ifdef USE_COLOR\n\tdiffuseColor.rgb *= vColor;\n#endif",color_pars_fragment:"#ifdef USE_COLOR\n\tvarying vec3 vColor;\n#endif",color_pars_vertex:"#ifdef USE_COLOR\n\tvarying vec3 vColor;\n#endif",color_vertex:"#ifdef USE_COLOR\n\tvColor.xyz = color.xyz;\n#endif",common:"#define PI 3.14159265359\n#define PI2 6.28318530718\n#define PI_HALF 1.5707963267949\n#define RECIPROCAL_PI 0.31830988618\n#define RECIPROCAL_PI2 0.15915494\n#define LOG2 1.442695\n#define EPSILON 1e-6\n#ifndef saturate\n#define saturate(a) clamp( a, 0.0, 1.0 )\n#endif\n#define whiteComplement(a) ( 1.0 - saturate( a ) )\nfloat pow2( const in float x ) { return x*x; }\nfloat pow3( const in float x ) { return x*x*x; }\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\nfloat average( const in vec3 color ) { return dot( color, vec3( 0.3333 ) ); }\nhighp float rand( const in vec2 uv ) {\n\tconst highp float a = 12.9898, b = 78.233, c = 43758.5453;\n\thighp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\n\treturn fract(sin(sn) * c);\n}\n#ifdef HIGH_PRECISION\n\tfloat precisionSafeLength( vec3 v ) { return length( v ); }\n#else\n\tfloat max3( vec3 v ) { return max( max( v.x, v.y ), v.z ); }\n\tfloat precisionSafeLength( vec3 v ) {\n\t\tfloat maxComponent = max3( abs( v ) );\n\t\treturn length( v / maxComponent ) * maxComponent;\n\t}\n#endif\nstruct IncidentLight {\n\tvec3 color;\n\tvec3 direction;\n\tbool visible;\n};\nstruct ReflectedLight {\n\tvec3 directDiffuse;\n\tvec3 directSpecular;\n\tvec3 indirectDiffuse;\n\tvec3 indirectSpecular;\n};\nstruct GeometricContext {\n\tvec3 position;\n\tvec3 normal;\n\tvec3 viewDir;\n#ifdef CLEARCOAT\n\tvec3 clearcoatNormal;\n#endif\n};\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n}\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\n\treturn normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\n}\nvec3 projectOnPlane(in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\n\tfloat distance = dot( planeNormal, point - pointOnPlane );\n\treturn - distance * planeNormal + point;\n}\nfloat sideOfPlane( in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\n\treturn sign( dot( point - pointOnPlane, planeNormal ) );\n}\nvec3 linePlaneIntersect( in vec3 pointOnLine, in vec3 lineDirection, in vec3 pointOnPlane, in vec3 planeNormal ) {\n\treturn lineDirection * ( dot( planeNormal, pointOnPlane - pointOnLine ) / dot( planeNormal, lineDirection ) ) + pointOnLine;\n}\nmat3 transposeMat3( const in mat3 m ) {\n\tmat3 tmp;\n\ttmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\n\ttmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\n\ttmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\n\treturn tmp;\n}\nfloat linearToRelativeLuminance( const in vec3 color ) {\n\tvec3 weights = vec3( 0.2126, 0.7152, 0.0722 );\n\treturn dot( weights, color.rgb );\n}\nbool isPerspectiveMatrix( mat4 m ) {\n return m[ 2 ][ 3 ] == - 1.0;\n}",cube_uv_reflection_fragment:"#ifdef ENVMAP_TYPE_CUBE_UV\n#define cubeUV_maxMipLevel 8.0\n#define cubeUV_minMipLevel 4.0\n#define cubeUV_maxTileSize 256.0\n#define cubeUV_minTileSize 16.0\nfloat getFace(vec3 direction) {\n vec3 absDirection = abs(direction);\n float face = -1.0;\n if (absDirection.x > absDirection.z) {\n if (absDirection.x > absDirection.y)\n face = direction.x > 0.0 ? 0.0 : 3.0;\n else\n face = direction.y > 0.0 ? 1.0 : 4.0;\n } else {\n if (absDirection.z > absDirection.y)\n face = direction.z > 0.0 ? 2.0 : 5.0;\n else\n face = direction.y > 0.0 ? 1.0 : 4.0;\n }\n return face;\n}\nvec2 getUV(vec3 direction, float face) {\n vec2 uv;\n if (face == 0.0) {\n uv = vec2(-direction.z, direction.y) / abs(direction.x);\n } else if (face == 1.0) {\n uv = vec2(direction.x, -direction.z) / abs(direction.y);\n } else if (face == 2.0) {\n uv = direction.xy / abs(direction.z);\n } else if (face == 3.0) {\n uv = vec2(direction.z, direction.y) / abs(direction.x);\n } else if (face == 4.0) {\n uv = direction.xz / abs(direction.y);\n } else {\n uv = vec2(-direction.x, direction.y) / abs(direction.z);\n }\n return 0.5 * (uv + 1.0);\n}\nvec3 bilinearCubeUV(sampler2D envMap, vec3 direction, float mipInt) {\n float face = getFace(direction);\n float filterInt = max(cubeUV_minMipLevel - mipInt, 0.0);\n mipInt = max(mipInt, cubeUV_minMipLevel);\n float faceSize = exp2(mipInt);\n float texelSize = 1.0 / (3.0 * cubeUV_maxTileSize);\n vec2 uv = getUV(direction, face) * (faceSize - 1.0);\n vec2 f = fract(uv);\n uv += 0.5 - f;\n if (face > 2.0) {\n uv.y += faceSize;\n face -= 3.0;\n }\n uv.x += face * faceSize;\n if(mipInt < cubeUV_maxMipLevel){\n uv.y += 2.0 * cubeUV_maxTileSize;\n }\n uv.y += filterInt * 2.0 * cubeUV_minTileSize;\n uv.x += 3.0 * max(0.0, cubeUV_maxTileSize - 2.0 * faceSize);\n uv *= texelSize;\n vec3 tl = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\n uv.x += texelSize;\n vec3 tr = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\n uv.y += texelSize;\n vec3 br = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\n uv.x -= texelSize;\n vec3 bl = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\n vec3 tm = mix(tl, tr, f.x);\n vec3 bm = mix(bl, br, f.x);\n return mix(tm, bm, f.y);\n}\n#define r0 1.0\n#define v0 0.339\n#define m0 -2.0\n#define r1 0.8\n#define v1 0.276\n#define m1 -1.0\n#define r4 0.4\n#define v4 0.046\n#define m4 2.0\n#define r5 0.305\n#define v5 0.016\n#define m5 3.0\n#define r6 0.21\n#define v6 0.0038\n#define m6 4.0\nfloat roughnessToMip(float roughness) {\n float mip = 0.0;\n if (roughness >= r1) {\n mip = (r0 - roughness) * (m1 - m0) / (r0 - r1) + m0;\n } else if (roughness >= r4) {\n mip = (r1 - roughness) * (m4 - m1) / (r1 - r4) + m1;\n } else if (roughness >= r5) {\n mip = (r4 - roughness) * (m5 - m4) / (r4 - r5) + m4;\n } else if (roughness >= r6) {\n mip = (r5 - roughness) * (m6 - m5) / (r5 - r6) + m5;\n } else {\n mip = -2.0 * log2(1.16 * roughness); }\n return mip;\n}\nvec4 textureCubeUV(sampler2D envMap, vec3 sampleDir, float roughness) {\n float mip = clamp(roughnessToMip(roughness), m0, cubeUV_maxMipLevel);\n float mipF = fract(mip);\n float mipInt = floor(mip);\n vec3 color0 = bilinearCubeUV(envMap, sampleDir, mipInt);\n if (mipF == 0.0) {\n return vec4(color0, 1.0);\n } else {\n vec3 color1 = bilinearCubeUV(envMap, sampleDir, mipInt + 1.0);\n return vec4(mix(color0, color1, mipF), 1.0);\n }\n}\n#endif",defaultnormal_vertex:"vec3 transformedNormal = objectNormal;\n#ifdef USE_INSTANCING\n\ttransformedNormal = mat3( instanceMatrix ) * transformedNormal;\n#endif\ntransformedNormal = normalMatrix * transformedNormal;\n#ifdef FLIP_SIDED\n\ttransformedNormal = - transformedNormal;\n#endif\n#ifdef USE_TANGENT\n\tvec3 transformedTangent = ( modelViewMatrix * vec4( objectTangent, 0.0 ) ).xyz;\n\t#ifdef FLIP_SIDED\n\t\ttransformedTangent = - transformedTangent;\n\t#endif\n#endif",displacementmap_pars_vertex:"#ifdef USE_DISPLACEMENTMAP\n\tuniform sampler2D displacementMap;\n\tuniform float displacementScale;\n\tuniform float displacementBias;\n#endif",displacementmap_vertex:"#ifdef USE_DISPLACEMENTMAP\n\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, vUv ).x * displacementScale + displacementBias );\n#endif",emissivemap_fragment:"#ifdef USE_EMISSIVEMAP\n\tvec4 emissiveColor = texture2D( emissiveMap, vUv );\n\temissiveColor.rgb = emissiveMapTexelToLinear( emissiveColor ).rgb;\n\ttotalEmissiveRadiance *= emissiveColor.rgb;\n#endif",emissivemap_pars_fragment:"#ifdef USE_EMISSIVEMAP\n\tuniform sampler2D emissiveMap;\n#endif",encodings_fragment:"gl_FragColor = linearToOutputTexel( gl_FragColor );",encodings_pars_fragment:"\nvec4 LinearToLinear( in vec4 value ) {\n\treturn value;\n}\nvec4 GammaToLinear( in vec4 value, in float gammaFactor ) {\n\treturn vec4( pow( value.rgb, vec3( gammaFactor ) ), value.a );\n}\nvec4 LinearToGamma( in vec4 value, in float gammaFactor ) {\n\treturn vec4( pow( value.rgb, vec3( 1.0 / gammaFactor ) ), value.a );\n}\nvec4 sRGBToLinear( in vec4 value ) {\n\treturn vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.a );\n}\nvec4 LinearTosRGB( in vec4 value ) {\n\treturn vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );\n}\nvec4 RGBEToLinear( in vec4 value ) {\n\treturn vec4( value.rgb * exp2( value.a * 255.0 - 128.0 ), 1.0 );\n}\nvec4 LinearToRGBE( in vec4 value ) {\n\tfloat maxComponent = max( max( value.r, value.g ), value.b );\n\tfloat fExp = clamp( ceil( log2( maxComponent ) ), -128.0, 127.0 );\n\treturn vec4( value.rgb / exp2( fExp ), ( fExp + 128.0 ) / 255.0 );\n}\nvec4 RGBMToLinear( in vec4 value, in float maxRange ) {\n\treturn vec4( value.rgb * value.a * maxRange, 1.0 );\n}\nvec4 LinearToRGBM( in vec4 value, in float maxRange ) {\n\tfloat maxRGB = max( value.r, max( value.g, value.b ) );\n\tfloat M = clamp( maxRGB / maxRange, 0.0, 1.0 );\n\tM = ceil( M * 255.0 ) / 255.0;\n\treturn vec4( value.rgb / ( M * maxRange ), M );\n}\nvec4 RGBDToLinear( in vec4 value, in float maxRange ) {\n\treturn vec4( value.rgb * ( ( maxRange / 255.0 ) / value.a ), 1.0 );\n}\nvec4 LinearToRGBD( in vec4 value, in float maxRange ) {\n\tfloat maxRGB = max( value.r, max( value.g, value.b ) );\n\tfloat D = max( maxRange / maxRGB, 1.0 );\n\tD = min( floor( D ) / 255.0, 1.0 );\n\treturn vec4( value.rgb * ( D * ( 255.0 / maxRange ) ), D );\n}\nconst mat3 cLogLuvM = mat3( 0.2209, 0.3390, 0.4184, 0.1138, 0.6780, 0.7319, 0.0102, 0.1130, 0.2969 );\nvec4 LinearToLogLuv( in vec4 value ) {\n\tvec3 Xp_Y_XYZp = cLogLuvM * value.rgb;\n\tXp_Y_XYZp = max( Xp_Y_XYZp, vec3( 1e-6, 1e-6, 1e-6 ) );\n\tvec4 vResult;\n\tvResult.xy = Xp_Y_XYZp.xy / Xp_Y_XYZp.z;\n\tfloat Le = 2.0 * log2(Xp_Y_XYZp.y) + 127.0;\n\tvResult.w = fract( Le );\n\tvResult.z = ( Le - ( floor( vResult.w * 255.0 ) ) / 255.0 ) / 255.0;\n\treturn vResult;\n}\nconst mat3 cLogLuvInverseM = mat3( 6.0014, -2.7008, -1.7996, -1.3320, 3.1029, -5.7721, 0.3008, -1.0882, 5.6268 );\nvec4 LogLuvToLinear( in vec4 value ) {\n\tfloat Le = value.z * 255.0 + value.w;\n\tvec3 Xp_Y_XYZp;\n\tXp_Y_XYZp.y = exp2( ( Le - 127.0 ) / 2.0 );\n\tXp_Y_XYZp.z = Xp_Y_XYZp.y / value.y;\n\tXp_Y_XYZp.x = value.x * Xp_Y_XYZp.z;\n\tvec3 vRGB = cLogLuvInverseM * Xp_Y_XYZp.rgb;\n\treturn vec4( max( vRGB, 0.0 ), 1.0 );\n}",envmap_fragment:"#ifdef USE_ENVMAP\n\t#ifdef ENV_WORLDPOS\n\t\tvec3 cameraToFrag;\n\t\t\n\t\tif ( isOrthographic ) {\n\t\t\tcameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\n\t\t} else {\n\t\t\tcameraToFrag = normalize( vWorldPosition - cameraPosition );\n\t\t}\n\t\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvec3 reflectVec = reflect( cameraToFrag, worldNormal );\n\t\t#else\n\t\t\tvec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio );\n\t\t#endif\n\t#else\n\t\tvec3 reflectVec = vReflect;\n\t#endif\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tvec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\n\t#elif defined( ENVMAP_TYPE_CUBE_UV )\n\t\tvec4 envColor = textureCubeUV( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ), 0.0 );\n\t#elif defined( ENVMAP_TYPE_EQUIREC )\n\t\tvec2 sampleUV;\n\t\treflectVec = normalize( reflectVec );\n\t\tsampleUV.y = asin( clamp( reflectVec.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n\t\tsampleUV.x = atan( reflectVec.z, reflectVec.x ) * RECIPROCAL_PI2 + 0.5;\n\t\tvec4 envColor = texture2D( envMap, sampleUV );\n\t#elif defined( ENVMAP_TYPE_SPHERE )\n\t\treflectVec = normalize( reflectVec );\n\t\tvec3 reflectView = normalize( ( viewMatrix * vec4( reflectVec, 0.0 ) ).xyz + vec3( 0.0, 0.0, 1.0 ) );\n\t\tvec4 envColor = texture2D( envMap, reflectView.xy * 0.5 + 0.5 );\n\t#else\n\t\tvec4 envColor = vec4( 0.0 );\n\t#endif\n\t#ifndef ENVMAP_TYPE_CUBE_UV\n\t\tenvColor = envMapTexelToLinear( envColor );\n\t#endif\n\t#ifdef ENVMAP_BLENDING_MULTIPLY\n\t\toutgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\n\t#elif defined( ENVMAP_BLENDING_MIX )\n\t\toutgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\n\t#elif defined( ENVMAP_BLENDING_ADD )\n\t\toutgoingLight += envColor.xyz * specularStrength * reflectivity;\n\t#endif\n#endif",envmap_common_pars_fragment:"#ifdef USE_ENVMAP\n\tuniform float envMapIntensity;\n\tuniform float flipEnvMap;\n\tuniform int maxMipLevel;\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tuniform samplerCube envMap;\n\t#else\n\t\tuniform sampler2D envMap;\n\t#endif\n\t\n#endif",envmap_pars_fragment:"#ifdef USE_ENVMAP\n\tuniform float reflectivity;\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\n\t\t#define ENV_WORLDPOS\n\t#endif\n\t#ifdef ENV_WORLDPOS\n\t\tvarying vec3 vWorldPosition;\n\t\tuniform float refractionRatio;\n\t#else\n\t\tvarying vec3 vReflect;\n\t#endif\n#endif",envmap_pars_vertex:"#ifdef USE_ENVMAP\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) ||defined( PHONG )\n\t\t#define ENV_WORLDPOS\n\t#endif\n\t#ifdef ENV_WORLDPOS\n\t\t\n\t\tvarying vec3 vWorldPosition;\n\t#else\n\t\tvarying vec3 vReflect;\n\t\tuniform float refractionRatio;\n\t#endif\n#endif",envmap_physical_pars_fragment:"#if defined( USE_ENVMAP )\n\t#ifdef ENVMAP_MODE_REFRACTION\n\t\tuniform float refractionRatio;\n\t#endif\n\tvec3 getLightProbeIndirectIrradiance( const in GeometricContext geometry, const in int maxMIPLevel ) {\n\t\tvec3 worldNormal = inverseTransformDirection( geometry.normal, viewMatrix );\n\t\t#ifdef ENVMAP_TYPE_CUBE\n\t\t\tvec3 queryVec = vec3( flipEnvMap * worldNormal.x, worldNormal.yz );\n\t\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\t\tvec4 envMapColor = textureCubeLodEXT( envMap, queryVec, float( maxMIPLevel ) );\n\t\t\t#else\n\t\t\t\tvec4 envMapColor = textureCube( envMap, queryVec, float( maxMIPLevel ) );\n\t\t\t#endif\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\n\t\t#elif defined( ENVMAP_TYPE_CUBE_UV )\n\t\t\tvec3 queryVec = vec3( flipEnvMap * worldNormal.x, worldNormal.yz );\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, queryVec, 1.0 );\n\t\t#else\n\t\t\tvec4 envMapColor = vec4( 0.0 );\n\t\t#endif\n\t\treturn PI * envMapColor.rgb * envMapIntensity;\n\t}\n\tfloat getSpecularMIPLevel( const in float roughness, const in int maxMIPLevel ) {\n\t\tfloat maxMIPLevelScalar = float( maxMIPLevel );\n\t\tfloat sigma = PI * roughness * roughness / ( 1.0 + roughness );\n\t\tfloat desiredMIPLevel = maxMIPLevelScalar + log2( sigma );\n\t\treturn clamp( desiredMIPLevel, 0.0, maxMIPLevelScalar );\n\t}\n\tvec3 getLightProbeIndirectRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness, const in int maxMIPLevel ) {\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t vec3 reflectVec = reflect( -viewDir, normal );\n\t\t reflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );\n\t\t#else\n\t\t vec3 reflectVec = refract( -viewDir, normal, refractionRatio );\n\t\t#endif\n\t\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\n\t\tfloat specularMIPLevel = getSpecularMIPLevel( roughness, maxMIPLevel );\n\t\t#ifdef ENVMAP_TYPE_CUBE\n\t\t\tvec3 queryReflectVec = vec3( flipEnvMap * reflectVec.x, reflectVec.yz );\n\t\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\t\tvec4 envMapColor = textureCubeLodEXT( envMap, queryReflectVec, specularMIPLevel );\n\t\t\t#else\n\t\t\t\tvec4 envMapColor = textureCube( envMap, queryReflectVec, specularMIPLevel );\n\t\t\t#endif\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\n\t\t#elif defined( ENVMAP_TYPE_CUBE_UV )\n\t\t\tvec3 queryReflectVec = vec3( flipEnvMap * reflectVec.x, reflectVec.yz );\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, queryReflectVec, roughness );\n\t\t#elif defined( ENVMAP_TYPE_EQUIREC )\n\t\t\tvec2 sampleUV;\n\t\t\tsampleUV.y = asin( clamp( reflectVec.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n\t\t\tsampleUV.x = atan( reflectVec.z, reflectVec.x ) * RECIPROCAL_PI2 + 0.5;\n\t\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\t\tvec4 envMapColor = texture2DLodEXT( envMap, sampleUV, specularMIPLevel );\n\t\t\t#else\n\t\t\t\tvec4 envMapColor = texture2D( envMap, sampleUV, specularMIPLevel );\n\t\t\t#endif\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\n\t\t#elif defined( ENVMAP_TYPE_SPHERE )\n\t\t\tvec3 reflectView = normalize( ( viewMatrix * vec4( reflectVec, 0.0 ) ).xyz + vec3( 0.0,0.0,1.0 ) );\n\t\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\t\tvec4 envMapColor = texture2DLodEXT( envMap, reflectView.xy * 0.5 + 0.5, specularMIPLevel );\n\t\t\t#else\n\t\t\t\tvec4 envMapColor = texture2D( envMap, reflectView.xy * 0.5 + 0.5, specularMIPLevel );\n\t\t\t#endif\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\n\t\t#endif\n\t\treturn envMapColor.rgb * envMapIntensity;\n\t}\n#endif",envmap_vertex:"#ifdef USE_ENVMAP\n\t#ifdef ENV_WORLDPOS\n\t\tvWorldPosition = worldPosition.xyz;\n\t#else\n\t\tvec3 cameraToVertex;\n\t\tif ( isOrthographic ) { \n\t\t\tcameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\n\t\t} else {\n\t\t\tcameraToVertex = normalize( worldPosition.xyz - cameraPosition );\n\t\t}\n\t\tvec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvReflect = reflect( cameraToVertex, worldNormal );\n\t\t#else\n\t\t\tvReflect = refract( cameraToVertex, worldNormal, refractionRatio );\n\t\t#endif\n\t#endif\n#endif",fog_vertex:"#ifdef USE_FOG\n\tfogDepth = -mvPosition.z;\n#endif",fog_pars_vertex:"#ifdef USE_FOG\n\tvarying float fogDepth;\n#endif",fog_fragment:"#ifdef USE_FOG\n\t#ifdef FOG_EXP2\n\t\tfloat fogFactor = 1.0 - exp( - fogDensity * fogDensity * fogDepth * fogDepth );\n\t#else\n\t\tfloat fogFactor = smoothstep( fogNear, fogFar, fogDepth );\n\t#endif\n\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\n#endif",fog_pars_fragment:"#ifdef USE_FOG\n\tuniform vec3 fogColor;\n\tvarying float fogDepth;\n\t#ifdef FOG_EXP2\n\t\tuniform float fogDensity;\n\t#else\n\t\tuniform float fogNear;\n\t\tuniform float fogFar;\n\t#endif\n#endif",gradientmap_pars_fragment:"#ifdef USE_GRADIENTMAP\n\tuniform sampler2D gradientMap;\n#endif\nvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\n\tfloat dotNL = dot( normal, lightDirection );\n\tvec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\n\t#ifdef USE_GRADIENTMAP\n\t\treturn texture2D( gradientMap, coord ).rgb;\n\t#else\n\t\treturn ( coord.x < 0.7 ) ? vec3( 0.7 ) : vec3( 1.0 );\n\t#endif\n}",lightmap_fragment:"#ifdef USE_LIGHTMAP\n\tvec4 lightMapTexel= texture2D( lightMap, vUv2 );\n\treflectedLight.indirectDiffuse += PI * lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity;\n#endif",lightmap_pars_fragment:"#ifdef USE_LIGHTMAP\n\tuniform sampler2D lightMap;\n\tuniform float lightMapIntensity;\n#endif",lights_lambert_vertex:"vec3 diffuse = vec3( 1.0 );\nGeometricContext geometry;\ngeometry.position = mvPosition.xyz;\ngeometry.normal = normalize( transformedNormal );\ngeometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( -mvPosition.xyz );\nGeometricContext backGeometry;\nbackGeometry.position = geometry.position;\nbackGeometry.normal = -geometry.normal;\nbackGeometry.viewDir = geometry.viewDir;\nvLightFront = vec3( 0.0 );\nvIndirectFront = vec3( 0.0 );\n#ifdef DOUBLE_SIDED\n\tvLightBack = vec3( 0.0 );\n\tvIndirectBack = vec3( 0.0 );\n#endif\nIncidentLight directLight;\nfloat dotNL;\nvec3 directLightColor_Diffuse;\n#if NUM_POINT_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tgetPointDirectLightIrradiance( pointLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = PI * directLight.color;\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\n\t\t#endif\n\t}\n#endif\n#if NUM_SPOT_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tgetSpotDirectLightIrradiance( spotLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = PI * directLight.color;\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\n\t\t#endif\n\t}\n#endif\n#if NUM_DIR_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tgetDirectionalDirectLightIrradiance( directionalLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = PI * directLight.color;\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\n\t\t#endif\n\t}\n#endif\n#if NUM_HEMI_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\n\t\tvIndirectFront += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvIndirectBack += getHemisphereLightIrradiance( hemisphereLights[ i ], backGeometry );\n\t\t#endif\n\t}\n#endif",lights_pars_begin:"uniform bool receiveShadow;\nuniform vec3 ambientLightColor;\nuniform vec3 lightProbe[ 9 ];\nvec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {\n\tfloat x = normal.x, y = normal.y, z = normal.z;\n\tvec3 result = shCoefficients[ 0 ] * 0.886227;\n\tresult += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;\n\tresult += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;\n\tresult += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;\n\tresult += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;\n\tresult += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;\n\tresult += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );\n\tresult += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;\n\tresult += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );\n\treturn result;\n}\nvec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in GeometricContext geometry ) {\n\tvec3 worldNormal = inverseTransformDirection( geometry.normal, viewMatrix );\n\tvec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );\n\treturn irradiance;\n}\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\n\tvec3 irradiance = ambientLightColor;\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\tirradiance *= PI;\n\t#endif\n\treturn irradiance;\n}\n#if NUM_DIR_LIGHTS > 0\n\tstruct DirectionalLight {\n\t\tvec3 direction;\n\t\tvec3 color;\n\t\tint shadow;\n\t\tfloat shadowBias;\n\t\tfloat shadowRadius;\n\t\tvec2 shadowMapSize;\n\t};\n\tuniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\n\tvoid getDirectionalDirectLightIrradiance( const in DirectionalLight directionalLight, const in GeometricContext geometry, out IncidentLight directLight ) {\n\t\tdirectLight.color = directionalLight.color;\n\t\tdirectLight.direction = directionalLight.direction;\n\t\tdirectLight.visible = true;\n\t}\n#endif\n#if NUM_POINT_LIGHTS > 0\n\tstruct PointLight {\n\t\tvec3 position;\n\t\tvec3 color;\n\t\tfloat distance;\n\t\tfloat decay;\n\t\tint shadow;\n\t\tfloat shadowBias;\n\t\tfloat shadowRadius;\n\t\tvec2 shadowMapSize;\n\t\tfloat shadowCameraNear;\n\t\tfloat shadowCameraFar;\n\t};\n\tuniform PointLight pointLights[ NUM_POINT_LIGHTS ];\n\tvoid getPointDirectLightIrradiance( const in PointLight pointLight, const in GeometricContext geometry, out IncidentLight directLight ) {\n\t\tvec3 lVector = pointLight.position - geometry.position;\n\t\tdirectLight.direction = normalize( lVector );\n\t\tfloat lightDistance = length( lVector );\n\t\tdirectLight.color = pointLight.color;\n\t\tdirectLight.color *= punctualLightIntensityToIrradianceFactor( lightDistance, pointLight.distance, pointLight.decay );\n\t\tdirectLight.visible = ( directLight.color != vec3( 0.0 ) );\n\t}\n#endif\n#if NUM_SPOT_LIGHTS > 0\n\tstruct SpotLight {\n\t\tvec3 position;\n\t\tvec3 direction;\n\t\tvec3 color;\n\t\tfloat distance;\n\t\tfloat decay;\n\t\tfloat coneCos;\n\t\tfloat penumbraCos;\n\t\tint shadow;\n\t\tfloat shadowBias;\n\t\tfloat shadowRadius;\n\t\tvec2 shadowMapSize;\n\t};\n\tuniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\n\tvoid getSpotDirectLightIrradiance( const in SpotLight spotLight, const in GeometricContext geometry, out IncidentLight directLight ) {\n\t\tvec3 lVector = spotLight.position - geometry.position;\n\t\tdirectLight.direction = normalize( lVector );\n\t\tfloat lightDistance = length( lVector );\n\t\tfloat angleCos = dot( directLight.direction, spotLight.direction );\n\t\tif ( angleCos > spotLight.coneCos ) {\n\t\t\tfloat spotEffect = smoothstep( spotLight.coneCos, spotLight.penumbraCos, angleCos );\n\t\t\tdirectLight.color = spotLight.color;\n\t\t\tdirectLight.color *= spotEffect * punctualLightIntensityToIrradianceFactor( lightDistance, spotLight.distance, spotLight.decay );\n\t\t\tdirectLight.visible = true;\n\t\t} else {\n\t\t\tdirectLight.color = vec3( 0.0 );\n\t\t\tdirectLight.visible = false;\n\t\t}\n\t}\n#endif\n#if NUM_RECT_AREA_LIGHTS > 0\n\tstruct RectAreaLight {\n\t\tvec3 color;\n\t\tvec3 position;\n\t\tvec3 halfWidth;\n\t\tvec3 halfHeight;\n\t};\n\tuniform sampler2D ltc_1;\tuniform sampler2D ltc_2;\n\tuniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\n#endif\n#if NUM_HEMI_LIGHTS > 0\n\tstruct HemisphereLight {\n\t\tvec3 direction;\n\t\tvec3 skyColor;\n\t\tvec3 groundColor;\n\t};\n\tuniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\n\tvec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in GeometricContext geometry ) {\n\t\tfloat dotNL = dot( geometry.normal, hemiLight.direction );\n\t\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\n\t\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\n\t\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\t\tirradiance *= PI;\n\t\t#endif\n\t\treturn irradiance;\n\t}\n#endif",lights_toon_fragment:"ToonMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;\nmaterial.specularColor = specular;\nmaterial.specularShininess = shininess;\nmaterial.specularStrength = specularStrength;",lights_toon_pars_fragment:"varying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\nstruct ToonMaterial {\n\tvec3\tdiffuseColor;\n\tvec3\tspecularColor;\n\tfloat\tspecularShininess;\n\tfloat\tspecularStrength;\n};\nvoid RE_Direct_Toon( const in IncidentLight directLight, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\n\tvec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\tirradiance *= PI;\n\t#endif\n\treflectedLight.directDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n\treflectedLight.directSpecular += irradiance * BRDF_Specular_BlinnPhong( directLight, geometry, material.specularColor, material.specularShininess ) * material.specularStrength;\n}\nvoid RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n}\n#define RE_Direct\t\t\t\tRE_Direct_Toon\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Toon\n#define Material_LightProbeLOD( material )\t(0)",lights_phong_fragment:"BlinnPhongMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;\nmaterial.specularColor = specular;\nmaterial.specularShininess = shininess;\nmaterial.specularStrength = specularStrength;",lights_phong_pars_fragment:"varying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\nstruct BlinnPhongMaterial {\n\tvec3\tdiffuseColor;\n\tvec3\tspecularColor;\n\tfloat\tspecularShininess;\n\tfloat\tspecularStrength;\n};\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\n\tvec3 irradiance = dotNL * directLight.color;\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\tirradiance *= PI;\n\t#endif\n\treflectedLight.directDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n\treflectedLight.directSpecular += irradiance * BRDF_Specular_BlinnPhong( directLight, geometry, material.specularColor, material.specularShininess ) * material.specularStrength;\n}\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n}\n#define RE_Direct\t\t\t\tRE_Direct_BlinnPhong\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_BlinnPhong\n#define Material_LightProbeLOD( material )\t(0)",lights_physical_fragment:"PhysicalMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\nvec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );\nfloat geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );\nmaterial.specularRoughness = max( roughnessFactor, 0.0525 );material.specularRoughness += geometryRoughness;\nmaterial.specularRoughness = min( material.specularRoughness, 1.0 );\n#ifdef REFLECTIVITY\n\tmaterial.specularColor = mix( vec3( MAXIMUM_SPECULAR_COEFFICIENT * pow2( reflectivity ) ), diffuseColor.rgb, metalnessFactor );\n#else\n\tmaterial.specularColor = mix( vec3( DEFAULT_SPECULAR_COEFFICIENT ), diffuseColor.rgb, metalnessFactor );\n#endif\n#ifdef CLEARCOAT\n\tmaterial.clearcoat = saturate( clearcoat );\tmaterial.clearcoatRoughness = max( clearcoatRoughness, 0.0525 );\n\tmaterial.clearcoatRoughness += geometryRoughness;\n\tmaterial.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 );\n#endif\n#ifdef USE_SHEEN\n\tmaterial.sheenColor = sheen;\n#endif",lights_physical_pars_fragment:"struct PhysicalMaterial {\n\tvec3\tdiffuseColor;\n\tfloat\tspecularRoughness;\n\tvec3\tspecularColor;\n#ifdef CLEARCOAT\n\tfloat clearcoat;\n\tfloat clearcoatRoughness;\n#endif\n#ifdef USE_SHEEN\n\tvec3 sheenColor;\n#endif\n};\n#define MAXIMUM_SPECULAR_COEFFICIENT 0.16\n#define DEFAULT_SPECULAR_COEFFICIENT 0.04\nfloat clearcoatDHRApprox( const in float roughness, const in float dotNL ) {\n\treturn DEFAULT_SPECULAR_COEFFICIENT + ( 1.0 - DEFAULT_SPECULAR_COEFFICIENT ) * ( pow( 1.0 - dotNL, 5.0 ) * pow( 1.0 - roughness, 2.0 ) );\n}\n#if NUM_RECT_AREA_LIGHTS > 0\n\tvoid RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\t\tvec3 normal = geometry.normal;\n\t\tvec3 viewDir = geometry.viewDir;\n\t\tvec3 position = geometry.position;\n\t\tvec3 lightPos = rectAreaLight.position;\n\t\tvec3 halfWidth = rectAreaLight.halfWidth;\n\t\tvec3 halfHeight = rectAreaLight.halfHeight;\n\t\tvec3 lightColor = rectAreaLight.color;\n\t\tfloat roughness = material.specularRoughness;\n\t\tvec3 rectCoords[ 4 ];\n\t\trectCoords[ 0 ] = lightPos + halfWidth - halfHeight;\t\trectCoords[ 1 ] = lightPos - halfWidth - halfHeight;\n\t\trectCoords[ 2 ] = lightPos - halfWidth + halfHeight;\n\t\trectCoords[ 3 ] = lightPos + halfWidth + halfHeight;\n\t\tvec2 uv = LTC_Uv( normal, viewDir, roughness );\n\t\tvec4 t1 = texture2D( ltc_1, uv );\n\t\tvec4 t2 = texture2D( ltc_2, uv );\n\t\tmat3 mInv = mat3(\n\t\t\tvec3( t1.x, 0, t1.y ),\n\t\t\tvec3( 0, 1, 0 ),\n\t\t\tvec3( t1.z, 0, t1.w )\n\t\t);\n\t\tvec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );\n\t\treflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\n\t\treflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );\n\t}\n#endif\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\n\tvec3 irradiance = dotNL * directLight.color;\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\tirradiance *= PI;\n\t#endif\n\t#ifdef CLEARCOAT\n\t\tfloat ccDotNL = saturate( dot( geometry.clearcoatNormal, directLight.direction ) );\n\t\tvec3 ccIrradiance = ccDotNL * directLight.color;\n\t\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\t\tccIrradiance *= PI;\n\t\t#endif\n\t\tfloat clearcoatDHR = material.clearcoat * clearcoatDHRApprox( material.clearcoatRoughness, ccDotNL );\n\t\treflectedLight.directSpecular += ccIrradiance * material.clearcoat * BRDF_Specular_GGX( directLight, geometry.viewDir, geometry.clearcoatNormal, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearcoatRoughness );\n\t#else\n\t\tfloat clearcoatDHR = 0.0;\n\t#endif\n\t#ifdef USE_SHEEN\n\t\treflectedLight.directSpecular += ( 1.0 - clearcoatDHR ) * irradiance * BRDF_Specular_Sheen(\n\t\t\tmaterial.specularRoughness,\n\t\t\tdirectLight.direction,\n\t\t\tgeometry,\n\t\t\tmaterial.sheenColor\n\t\t);\n\t#else\n\t\treflectedLight.directSpecular += ( 1.0 - clearcoatDHR ) * irradiance * BRDF_Specular_GGX( directLight, geometry.viewDir, geometry.normal, material.specularColor, material.specularRoughness);\n\t#endif\n\treflectedLight.directDiffuse += ( 1.0 - clearcoatDHR ) * irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {\n\t#ifdef CLEARCOAT\n\t\tfloat ccDotNV = saturate( dot( geometry.clearcoatNormal, geometry.viewDir ) );\n\t\treflectedLight.indirectSpecular += clearcoatRadiance * material.clearcoat * BRDF_Specular_GGX_Environment( geometry.viewDir, geometry.clearcoatNormal, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearcoatRoughness );\n\t\tfloat ccDotNL = ccDotNV;\n\t\tfloat clearcoatDHR = material.clearcoat * clearcoatDHRApprox( material.clearcoatRoughness, ccDotNL );\n\t#else\n\t\tfloat clearcoatDHR = 0.0;\n\t#endif\n\tfloat clearcoatInv = 1.0 - clearcoatDHR;\n\tvec3 singleScattering = vec3( 0.0 );\n\tvec3 multiScattering = vec3( 0.0 );\n\tvec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\n\tBRDF_Specular_Multiscattering_Environment( geometry, material.specularColor, material.specularRoughness, singleScattering, multiScattering );\n\tvec3 diffuse = material.diffuseColor * ( 1.0 - ( singleScattering + multiScattering ) );\n\treflectedLight.indirectSpecular += clearcoatInv * radiance * singleScattering;\n\treflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance;\n\treflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;\n}\n#define RE_Direct\t\t\t\tRE_Direct_Physical\n#define RE_Direct_RectArea\t\tRE_Direct_RectArea_Physical\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Physical\n#define RE_IndirectSpecular\t\tRE_IndirectSpecular_Physical\nfloat computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {\n\treturn saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );\n}",lights_fragment_begin:"\nGeometricContext geometry;\ngeometry.position = - vViewPosition;\ngeometry.normal = normal;\ngeometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );\n#ifdef CLEARCOAT\n\tgeometry.clearcoatNormal = clearcoatNormal;\n#endif\nIncidentLight directLight;\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\n\tPointLight pointLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tpointLight = pointLights[ i ];\n\t\tgetPointDirectLightIrradiance( pointLight, geometry, directLight );\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )\n\t\tdirectLight.color *= all( bvec3( pointLight.shadow, directLight.visible, receiveShadow ) ) ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n#endif\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\n\tSpotLight spotLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tspotLight = spotLights[ i ];\n\t\tgetSpotDirectLightIrradiance( spotLight, geometry, directLight );\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\n\t\tdirectLight.color *= all( bvec3( spotLight.shadow, directLight.visible, receiveShadow ) ) ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n#endif\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\n\tDirectionalLight directionalLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tdirectionalLight = directionalLights[ i ];\n\t\tgetDirectionalDirectLightIrradiance( directionalLight, geometry, directLight );\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )\n\t\tdirectLight.color *= all( bvec3( directionalLight.shadow, directLight.visible, receiveShadow ) ) ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n#endif\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\n\tRectAreaLight rectAreaLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\n\t\trectAreaLight = rectAreaLights[ i ];\n\t\tRE_Direct_RectArea( rectAreaLight, geometry, material, reflectedLight );\n\t}\n#endif\n#if defined( RE_IndirectDiffuse )\n\tvec3 iblIrradiance = vec3( 0.0 );\n\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\n\tirradiance += getLightProbeIrradiance( lightProbe, geometry );\n\t#if ( NUM_HEMI_LIGHTS > 0 )\n\t\t#pragma unroll_loop\n\t\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\n\t\t\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\n\t\t}\n\t#endif\n#endif\n#if defined( RE_IndirectSpecular )\n\tvec3 radiance = vec3( 0.0 );\n\tvec3 clearcoatRadiance = vec3( 0.0 );\n#endif",lights_fragment_maps:"#if defined( RE_IndirectDiffuse )\n\t#ifdef USE_LIGHTMAP\n\t\tvec4 lightMapTexel= texture2D( lightMap, vUv2 );\n\t\tvec3 lightMapIrradiance = lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity;\n\t\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\t\tlightMapIrradiance *= PI;\n\t\t#endif\n\t\tirradiance += lightMapIrradiance;\n\t#endif\n\t#if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV )\n\t\tiblIrradiance += getLightProbeIndirectIrradiance( geometry, maxMipLevel );\n\t#endif\n#endif\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\n\tradiance += getLightProbeIndirectRadiance( geometry.viewDir, geometry.normal, material.specularRoughness, maxMipLevel );\n\t#ifdef CLEARCOAT\n\t\tclearcoatRadiance += getLightProbeIndirectRadiance( geometry.viewDir, geometry.clearcoatNormal, material.clearcoatRoughness, maxMipLevel );\n\t#endif\n#endif",lights_fragment_end:"#if defined( RE_IndirectDiffuse )\n\tRE_IndirectDiffuse( irradiance, geometry, material, reflectedLight );\n#endif\n#if defined( RE_IndirectSpecular )\n\tRE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometry, material, reflectedLight );\n#endif",logdepthbuf_fragment:"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\n\tgl_FragDepthEXT = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\n#endif",logdepthbuf_pars_fragment:"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\n\tuniform float logDepthBufFC;\n\tvarying float vFragDepth;\n\tvarying float vIsPerspective;\n#endif",logdepthbuf_pars_vertex:"#ifdef USE_LOGDEPTHBUF\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tvarying float vFragDepth;\n\t\tvarying float vIsPerspective;\n\t#else\n\t\tuniform float logDepthBufFC;\n\t#endif\n#endif",logdepthbuf_vertex:"#ifdef USE_LOGDEPTHBUF\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tvFragDepth = 1.0 + gl_Position.w;\n\t\tvIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );\n\t#else\n\t\tif ( isPerspectiveMatrix( projectionMatrix ) ) {\n\t\t\tgl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0;\n\t\t\tgl_Position.z *= gl_Position.w;\n\t\t}\n\t#endif\n#endif",map_fragment:"#ifdef USE_MAP\n\tvec4 texelColor = texture2D( map, vUv );\n\ttexelColor = mapTexelToLinear( texelColor );\n\tdiffuseColor *= texelColor;\n#endif",map_pars_fragment:"#ifdef USE_MAP\n\tuniform sampler2D map;\n#endif",map_particle_fragment:"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\n\tvec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\n#endif\n#ifdef USE_MAP\n\tvec4 mapTexel = texture2D( map, uv );\n\tdiffuseColor *= mapTexelToLinear( mapTexel );\n#endif\n#ifdef USE_ALPHAMAP\n\tdiffuseColor.a *= texture2D( alphaMap, uv ).g;\n#endif",map_particle_pars_fragment:"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\n\tuniform mat3 uvTransform;\n#endif\n#ifdef USE_MAP\n\tuniform sampler2D map;\n#endif\n#ifdef USE_ALPHAMAP\n\tuniform sampler2D alphaMap;\n#endif",metalnessmap_fragment:"float metalnessFactor = metalness;\n#ifdef USE_METALNESSMAP\n\tvec4 texelMetalness = texture2D( metalnessMap, vUv );\n\tmetalnessFactor *= texelMetalness.b;\n#endif",metalnessmap_pars_fragment:"#ifdef USE_METALNESSMAP\n\tuniform sampler2D metalnessMap;\n#endif",morphnormal_vertex:"#ifdef USE_MORPHNORMALS\n\tobjectNormal *= morphTargetBaseInfluence;\n\tobjectNormal += morphNormal0 * morphTargetInfluences[ 0 ];\n\tobjectNormal += morphNormal1 * morphTargetInfluences[ 1 ];\n\tobjectNormal += morphNormal2 * morphTargetInfluences[ 2 ];\n\tobjectNormal += morphNormal3 * morphTargetInfluences[ 3 ];\n#endif",morphtarget_pars_vertex:"#ifdef USE_MORPHTARGETS\n\tuniform float morphTargetBaseInfluence;\n\t#ifndef USE_MORPHNORMALS\n\tuniform float morphTargetInfluences[ 8 ];\n\t#else\n\tuniform float morphTargetInfluences[ 4 ];\n\t#endif\n#endif",morphtarget_vertex:"#ifdef USE_MORPHTARGETS\n\ttransformed *= morphTargetBaseInfluence;\n\ttransformed += morphTarget0 * morphTargetInfluences[ 0 ];\n\ttransformed += morphTarget1 * morphTargetInfluences[ 1 ];\n\ttransformed += morphTarget2 * morphTargetInfluences[ 2 ];\n\ttransformed += morphTarget3 * morphTargetInfluences[ 3 ];\n\t#ifndef USE_MORPHNORMALS\n\ttransformed += morphTarget4 * morphTargetInfluences[ 4 ];\n\ttransformed += morphTarget5 * morphTargetInfluences[ 5 ];\n\ttransformed += morphTarget6 * morphTargetInfluences[ 6 ];\n\ttransformed += morphTarget7 * morphTargetInfluences[ 7 ];\n\t#endif\n#endif",normal_fragment_begin:"#ifdef FLAT_SHADED\n\tvec3 fdx = vec3( dFdx( vViewPosition.x ), dFdx( vViewPosition.y ), dFdx( vViewPosition.z ) );\n\tvec3 fdy = vec3( dFdy( vViewPosition.x ), dFdy( vViewPosition.y ), dFdy( vViewPosition.z ) );\n\tvec3 normal = normalize( cross( fdx, fdy ) );\n#else\n\tvec3 normal = normalize( vNormal );\n\t#ifdef DOUBLE_SIDED\n\t\tnormal = normal * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t#endif\n\t#ifdef USE_TANGENT\n\t\tvec3 tangent = normalize( vTangent );\n\t\tvec3 bitangent = normalize( vBitangent );\n\t\t#ifdef DOUBLE_SIDED\n\t\t\ttangent = tangent * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t\t\tbitangent = bitangent * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t\t#endif\n\t\t#if defined( TANGENTSPACE_NORMALMAP ) || defined( USE_CLEARCOAT_NORMALMAP )\n\t\t\tmat3 vTBN = mat3( tangent, bitangent, normal );\n\t\t#endif\n\t#endif\n#endif\nvec3 geometryNormal = normal;",normal_fragment_maps:"#ifdef OBJECTSPACE_NORMALMAP\n\tnormal = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n\t#ifdef FLIP_SIDED\n\t\tnormal = - normal;\n\t#endif\n\t#ifdef DOUBLE_SIDED\n\t\tnormal = normal * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t#endif\n\tnormal = normalize( normalMatrix * normal );\n#elif defined( TANGENTSPACE_NORMALMAP )\n\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n\tmapN.xy *= normalScale;\n\t#ifdef USE_TANGENT\n\t\tnormal = normalize( vTBN * mapN );\n\t#else\n\t\tnormal = perturbNormal2Arb( -vViewPosition, normal, mapN );\n\t#endif\n#elif defined( USE_BUMPMAP )\n\tnormal = perturbNormalArb( -vViewPosition, normal, dHdxy_fwd() );\n#endif",normalmap_pars_fragment:"#ifdef USE_NORMALMAP\n\tuniform sampler2D normalMap;\n\tuniform vec2 normalScale;\n#endif\n#ifdef OBJECTSPACE_NORMALMAP\n\tuniform mat3 normalMatrix;\n#endif\n#if ! defined ( USE_TANGENT ) && ( defined ( TANGENTSPACE_NORMALMAP ) || defined ( USE_CLEARCOAT_NORMALMAP ) )\n\tvec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm, vec3 mapN ) {\n\t\tvec3 q0 = vec3( dFdx( eye_pos.x ), dFdx( eye_pos.y ), dFdx( eye_pos.z ) );\n\t\tvec3 q1 = vec3( dFdy( eye_pos.x ), dFdy( eye_pos.y ), dFdy( eye_pos.z ) );\n\t\tvec2 st0 = dFdx( vUv.st );\n\t\tvec2 st1 = dFdy( vUv.st );\n\t\tfloat scale = sign( st1.t * st0.s - st0.t * st1.s );\n\t\tvec3 S = normalize( ( q0 * st1.t - q1 * st0.t ) * scale );\n\t\tvec3 T = normalize( ( - q0 * st1.s + q1 * st0.s ) * scale );\n\t\tvec3 N = normalize( surf_norm );\n\t\tmat3 tsn = mat3( S, T, N );\n\t\tmapN.xy *= ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t\treturn normalize( tsn * mapN );\n\t}\n#endif",clearcoat_normal_fragment_begin:"#ifdef CLEARCOAT\n\tvec3 clearcoatNormal = geometryNormal;\n#endif",clearcoat_normal_fragment_maps:"#ifdef USE_CLEARCOAT_NORMALMAP\n\tvec3 clearcoatMapN = texture2D( clearcoatNormalMap, vUv ).xyz * 2.0 - 1.0;\n\tclearcoatMapN.xy *= clearcoatNormalScale;\n\t#ifdef USE_TANGENT\n\t\tclearcoatNormal = normalize( vTBN * clearcoatMapN );\n\t#else\n\t\tclearcoatNormal = perturbNormal2Arb( - vViewPosition, clearcoatNormal, clearcoatMapN );\n\t#endif\n#endif",clearcoat_normalmap_pars_fragment:"#ifdef USE_CLEARCOAT_NORMALMAP\n\tuniform sampler2D clearcoatNormalMap;\n\tuniform vec2 clearcoatNormalScale;\n#endif",packing:"vec3 packNormalToRGB( const in vec3 normal ) {\n\treturn normalize( normal ) * 0.5 + 0.5;\n}\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\n\treturn 2.0 * rgb.xyz - 1.0;\n}\nconst float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;\nconst vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\nconst vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. );\nconst float ShiftRight8 = 1. / 256.;\nvec4 packDepthToRGBA( const in float v ) {\n\tvec4 r = vec4( fract( v * PackFactors ), v );\n\tr.yzw -= r.xyz * ShiftRight8;\treturn r * PackUpscale;\n}\nfloat unpackRGBAToDepth( const in vec4 v ) {\n\treturn dot( v, UnpackFactors );\n}\nvec4 pack2HalfToRGBA( vec2 v ) {\n\tvec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ));\n\treturn vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w);\n}\nvec2 unpackRGBATo2Half( vec4 v ) {\n\treturn vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) );\n}\nfloat viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {\n\treturn ( viewZ + near ) / ( near - far );\n}\nfloat orthographicDepthToViewZ( const in float linearClipZ, const in float near, const in float far ) {\n\treturn linearClipZ * ( near - far ) - near;\n}\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\n\treturn (( near + viewZ ) * far ) / (( far - near ) * viewZ );\n}\nfloat perspectiveDepthToViewZ( const in float invClipZ, const in float near, const in float far ) {\n\treturn ( near * far ) / ( ( far - near ) * invClipZ - far );\n}",premultiplied_alpha_fragment:"#ifdef PREMULTIPLIED_ALPHA\n\tgl_FragColor.rgb *= gl_FragColor.a;\n#endif",project_vertex:"vec4 mvPosition = vec4( transformed, 1.0 );\n#ifdef USE_INSTANCING\n\tmvPosition = instanceMatrix * mvPosition;\n#endif\nmvPosition = modelViewMatrix * mvPosition;\ngl_Position = projectionMatrix * mvPosition;",dithering_fragment:"#ifdef DITHERING\n\tgl_FragColor.rgb = dithering( gl_FragColor.rgb );\n#endif",dithering_pars_fragment:"#ifdef DITHERING\n\tvec3 dithering( vec3 color ) {\n\t\tfloat grid_position = rand( gl_FragCoord.xy );\n\t\tvec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );\n\t\tdither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );\n\t\treturn color + dither_shift_RGB;\n\t}\n#endif",roughnessmap_fragment:"float roughnessFactor = roughness;\n#ifdef USE_ROUGHNESSMAP\n\tvec4 texelRoughness = texture2D( roughnessMap, vUv );\n\troughnessFactor *= texelRoughness.g;\n#endif",roughnessmap_pars_fragment:"#ifdef USE_ROUGHNESSMAP\n\tuniform sampler2D roughnessMap;\n#endif",shadowmap_pars_fragment:"#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\n\t#endif\n\tfloat texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\n\t\treturn step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\n\t}\n\tvec2 texture2DDistribution( sampler2D shadow, vec2 uv ) {\n\t\treturn unpackRGBATo2Half( texture2D( shadow, uv ) );\n\t}\n\tfloat VSMShadow (sampler2D shadow, vec2 uv, float compare ){\n\t\tfloat occlusion = 1.0;\n\t\tvec2 distribution = texture2DDistribution( shadow, uv );\n\t\tfloat hard_shadow = step( compare , distribution.x );\n\t\tif (hard_shadow != 1.0 ) {\n\t\t\tfloat distance = compare - distribution.x ;\n\t\t\tfloat variance = max( 0.00000, distribution.y * distribution.y );\n\t\t\tfloat softness_probability = variance / (variance + distance * distance );\t\t\tsoftness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 );\t\t\tocclusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 );\n\t\t}\n\t\treturn occlusion;\n\t}\n\tfloat texture2DShadowLerp( sampler2D depths, vec2 size, vec2 uv, float compare ) {\n\t\tconst vec2 offset = vec2( 0.0, 1.0 );\n\t\tvec2 texelSize = vec2( 1.0 ) / size;\n\t\tvec2 centroidUV = ( floor( uv * size - 0.5 ) + 0.5 ) * texelSize;\n\t\tfloat lb = texture2DCompare( depths, centroidUV + texelSize * offset.xx, compare );\n\t\tfloat lt = texture2DCompare( depths, centroidUV + texelSize * offset.xy, compare );\n\t\tfloat rb = texture2DCompare( depths, centroidUV + texelSize * offset.yx, compare );\n\t\tfloat rt = texture2DCompare( depths, centroidUV + texelSize * offset.yy, compare );\n\t\tvec2 f = fract( uv * size + 0.5 );\n\t\tfloat a = mix( lb, lt, f.y );\n\t\tfloat b = mix( rb, rt, f.y );\n\t\tfloat c = mix( a, b, f.x );\n\t\treturn c;\n\t}\n\tfloat getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\n\t\tfloat shadow = 1.0;\n\t\tshadowCoord.xyz /= shadowCoord.w;\n\t\tshadowCoord.z += shadowBias;\n\t\tbvec4 inFrustumVec = bvec4 ( shadowCoord.x >= 0.0, shadowCoord.x <= 1.0, shadowCoord.y >= 0.0, shadowCoord.y <= 1.0 );\n\t\tbool inFrustum = all( inFrustumVec );\n\t\tbvec2 frustumTestVec = bvec2( inFrustum, shadowCoord.z <= 1.0 );\n\t\tbool frustumTest = all( frustumTestVec );\n\t\tif ( frustumTest ) {\n\t\t#if defined( SHADOWMAP_TYPE_PCF )\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n\t\t\tfloat dx0 = - texelSize.x * shadowRadius;\n\t\t\tfloat dy0 = - texelSize.y * shadowRadius;\n\t\t\tfloat dx1 = + texelSize.x * shadowRadius;\n\t\t\tfloat dy1 = + texelSize.y * shadowRadius;\n\t\t\tfloat dx2 = dx0 / 2.0;\n\t\t\tfloat dy2 = dy0 / 2.0;\n\t\t\tfloat dx3 = dx1 / 2.0;\n\t\t\tfloat dy3 = dy1 / 2.0;\n\t\t\tshadow = (\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\n\t\t\t) * ( 1.0 / 17.0 );\n\t\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n\t\t\tfloat dx0 = - texelSize.x * shadowRadius;\n\t\t\tfloat dy0 = - texelSize.y * shadowRadius;\n\t\t\tfloat dx1 = + texelSize.x * shadowRadius;\n\t\t\tfloat dy1 = + texelSize.y * shadowRadius;\n\t\t\tshadow = (\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy, shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#elif defined( SHADOWMAP_TYPE_VSM )\n\t\t\tshadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z );\n\t\t#else\n\t\t\tshadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );\n\t\t#endif\n\t\t}\n\t\treturn shadow;\n\t}\n\tvec2 cubeToUV( vec3 v, float texelSizeY ) {\n\t\tvec3 absV = abs( v );\n\t\tfloat scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );\n\t\tabsV *= scaleToCube;\n\t\tv *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );\n\t\tvec2 planar = v.xy;\n\t\tfloat almostATexel = 1.5 * texelSizeY;\n\t\tfloat almostOne = 1.0 - almostATexel;\n\t\tif ( absV.z >= almostOne ) {\n\t\t\tif ( v.z > 0.0 )\n\t\t\t\tplanar.x = 4.0 - v.x;\n\t\t} else if ( absV.x >= almostOne ) {\n\t\t\tfloat signX = sign( v.x );\n\t\t\tplanar.x = v.z * signX + 2.0 * signX;\n\t\t} else if ( absV.y >= almostOne ) {\n\t\t\tfloat signY = sign( v.y );\n\t\t\tplanar.x = v.x + 2.0 * signY + 2.0;\n\t\t\tplanar.y = v.z * signY - 2.0;\n\t\t}\n\t\treturn vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );\n\t}\n\tfloat getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {\n\t\tvec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );\n\t\tvec3 lightToPosition = shadowCoord.xyz;\n\t\tfloat dp = ( length( lightToPosition ) - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear );\t\tdp += shadowBias;\n\t\tvec3 bd3D = normalize( lightToPosition );\n\t\t#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM )\n\t\t\tvec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;\n\t\t\treturn (\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#else\n\t\t\treturn texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );\n\t\t#endif\n\t}\n#endif",shadowmap_pars_vertex:"#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t\tuniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\t\tuniform mat4 spotShadowMatrix[ NUM_SPOT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t\tuniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\n\t#endif\n#endif",shadowmap_vertex:"#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\n\t\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * worldPosition;\n\t}\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\n\t\tvSpotShadowCoord[ i ] = spotShadowMatrix[ i ] * worldPosition;\n\t}\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\n\t\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * worldPosition;\n\t}\n\t#endif\n#endif",shadowmask_pars_fragment:"float getShadowMask() {\n\tfloat shadow = 1.0;\n\t#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\tDirectionalLight directionalLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\n\t\tdirectionalLight = directionalLights[ i ];\n\t\tshadow *= all( bvec2( directionalLight.shadow, receiveShadow ) ) ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t}\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\tSpotLight spotLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\n\t\tspotLight = spotLights[ i ];\n\t\tshadow *= all( bvec2( spotLight.shadow, receiveShadow ) ) ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\n\t}\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\tPointLight pointLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\n\t\tpointLight = pointLights[ i ];\n\t\tshadow *= all( bvec2( pointLight.shadow, receiveShadow ) ) ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\n\t}\n\t#endif\n\t#endif\n\treturn shadow;\n}",skinbase_vertex:"#ifdef USE_SKINNING\n\tmat4 boneMatX = getBoneMatrix( skinIndex.x );\n\tmat4 boneMatY = getBoneMatrix( skinIndex.y );\n\tmat4 boneMatZ = getBoneMatrix( skinIndex.z );\n\tmat4 boneMatW = getBoneMatrix( skinIndex.w );\n#endif",skinning_pars_vertex:"#ifdef USE_SKINNING\n\tuniform mat4 bindMatrix;\n\tuniform mat4 bindMatrixInverse;\n\t#ifdef BONE_TEXTURE\n\t\tuniform highp sampler2D boneTexture;\n\t\tuniform int boneTextureSize;\n\t\tmat4 getBoneMatrix( const in float i ) {\n\t\t\tfloat j = i * 4.0;\n\t\t\tfloat x = mod( j, float( boneTextureSize ) );\n\t\t\tfloat y = floor( j / float( boneTextureSize ) );\n\t\t\tfloat dx = 1.0 / float( boneTextureSize );\n\t\t\tfloat dy = 1.0 / float( boneTextureSize );\n\t\t\ty = dy * ( y + 0.5 );\n\t\t\tvec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) );\n\t\t\tvec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) );\n\t\t\tvec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) );\n\t\t\tvec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) );\n\t\t\tmat4 bone = mat4( v1, v2, v3, v4 );\n\t\t\treturn bone;\n\t\t}\n\t#else\n\t\tuniform mat4 boneMatrices[ MAX_BONES ];\n\t\tmat4 getBoneMatrix( const in float i ) {\n\t\t\tmat4 bone = boneMatrices[ int(i) ];\n\t\t\treturn bone;\n\t\t}\n\t#endif\n#endif",skinning_vertex:"#ifdef USE_SKINNING\n\tvec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );\n\tvec4 skinned = vec4( 0.0 );\n\tskinned += boneMatX * skinVertex * skinWeight.x;\n\tskinned += boneMatY * skinVertex * skinWeight.y;\n\tskinned += boneMatZ * skinVertex * skinWeight.z;\n\tskinned += boneMatW * skinVertex * skinWeight.w;\n\ttransformed = ( bindMatrixInverse * skinned ).xyz;\n#endif",skinnormal_vertex:"#ifdef USE_SKINNING\n\tmat4 skinMatrix = mat4( 0.0 );\n\tskinMatrix += skinWeight.x * boneMatX;\n\tskinMatrix += skinWeight.y * boneMatY;\n\tskinMatrix += skinWeight.z * boneMatZ;\n\tskinMatrix += skinWeight.w * boneMatW;\n\tskinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;\n\tobjectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz;\n\t#ifdef USE_TANGENT\n\t\tobjectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz;\n\t#endif\n#endif",specularmap_fragment:"float specularStrength;\n#ifdef USE_SPECULARMAP\n\tvec4 texelSpecular = texture2D( specularMap, vUv );\n\tspecularStrength = texelSpecular.r;\n#else\n\tspecularStrength = 1.0;\n#endif",specularmap_pars_fragment:"#ifdef USE_SPECULARMAP\n\tuniform sampler2D specularMap;\n#endif",tonemapping_fragment:"#if defined( TONE_MAPPING )\n\tgl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\n#endif",tonemapping_pars_fragment:"#ifndef saturate\n#define saturate(a) clamp( a, 0.0, 1.0 )\n#endif\nuniform float toneMappingExposure;\nuniform float toneMappingWhitePoint;\nvec3 LinearToneMapping( vec3 color ) {\n\treturn toneMappingExposure * color;\n}\nvec3 ReinhardToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\treturn saturate( color / ( vec3( 1.0 ) + color ) );\n}\n#define Uncharted2Helper( x ) max( ( ( x * ( 0.15 * x + 0.10 * 0.50 ) + 0.20 * 0.02 ) / ( x * ( 0.15 * x + 0.50 ) + 0.20 * 0.30 ) ) - 0.02 / 0.30, vec3( 0.0 ) )\nvec3 Uncharted2ToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\treturn saturate( Uncharted2Helper( color ) / Uncharted2Helper( vec3( toneMappingWhitePoint ) ) );\n}\nvec3 OptimizedCineonToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\tcolor = max( vec3( 0.0 ), color - 0.004 );\n\treturn pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\n}\nvec3 ACESFilmicToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\treturn saturate( ( color * ( 2.51 * color + 0.03 ) ) / ( color * ( 2.43 * color + 0.59 ) + 0.14 ) );\n}",uv_pars_fragment:"#if ( defined( USE_UV ) && ! defined( UVS_VERTEX_ONLY ) )\n\tvarying vec2 vUv;\n#endif",uv_pars_vertex:"#ifdef USE_UV\n\t#ifdef UVS_VERTEX_ONLY\n\t\tvec2 vUv;\n\t#else\n\t\tvarying vec2 vUv;\n\t#endif\n\tuniform mat3 uvTransform;\n#endif",uv_vertex:"#ifdef USE_UV\n\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n#endif",uv2_pars_fragment:"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tvarying vec2 vUv2;\n#endif",uv2_pars_vertex:"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tattribute vec2 uv2;\n\tvarying vec2 vUv2;\n\tuniform mat3 uv2Transform;\n#endif",uv2_vertex:"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tvUv2 = ( uv2Transform * vec3( uv2, 1 ) ).xy;\n#endif",worldpos_vertex:"#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP )\n\tvec4 worldPosition = vec4( transformed, 1.0 );\n\t#ifdef USE_INSTANCING\n\t\tworldPosition = instanceMatrix * worldPosition;\n\t#endif\n\tworldPosition = modelMatrix * worldPosition;\n#endif",background_frag:"uniform sampler2D t2D;\nvarying vec2 vUv;\nvoid main() {\n\tvec4 texColor = texture2D( t2D, vUv );\n\tgl_FragColor = mapTexelToLinear( texColor );\n\t#include \n\t#include \n}",background_vert:"varying vec2 vUv;\nuniform mat3 uvTransform;\nvoid main() {\n\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n\tgl_Position = vec4( position.xy, 1.0, 1.0 );\n}",cube_frag:"#include \nuniform float opacity;\nvarying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvec3 vReflect = vWorldDirection;\n\t#include \n\tgl_FragColor = envColor;\n\tgl_FragColor.a *= opacity;\n\t#include \n\t#include \n}",cube_vert:"varying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include \n\t#include \n\tgl_Position.z = gl_Position.w;\n}",depth_frag:"#if DEPTH_PACKING == 3200\n\tuniform float opacity;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( 1.0 );\n\t#if DEPTH_PACKING == 3200\n\t\tdiffuseColor.a = opacity;\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#if DEPTH_PACKING == 3200\n\t\tgl_FragColor = vec4( vec3( 1.0 - gl_FragCoord.z ), opacity );\n\t#elif DEPTH_PACKING == 3201\n\t\tgl_FragColor = packDepthToRGBA( gl_FragCoord.z );\n\t#endif\n}",depth_vert:"#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include \n\t\t#include \n\t\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",distanceRGBA_frag:"#define DISTANCE\nuniform vec3 referencePosition;\nuniform float nearDistance;\nuniform float farDistance;\nvarying vec3 vWorldPosition;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main () {\n\t#include \n\tvec4 diffuseColor = vec4( 1.0 );\n\t#include \n\t#include \n\t#include \n\tfloat dist = length( vWorldPosition - referencePosition );\n\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\n\tdist = saturate( dist );\n\tgl_FragColor = packDepthToRGBA( dist );\n}",distanceRGBA_vert:"#define DISTANCE\nvarying vec3 vWorldPosition;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include \n\t\t#include \n\t\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvWorldPosition = worldPosition.xyz;\n}",equirect_frag:"uniform sampler2D tEquirect;\nvarying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvec3 direction = normalize( vWorldDirection );\n\tvec2 sampleUV;\n\tsampleUV.y = asin( clamp( direction.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n\tsampleUV.x = atan( direction.z, direction.x ) * RECIPROCAL_PI2 + 0.5;\n\tvec4 texColor = texture2D( tEquirect, sampleUV );\n\tgl_FragColor = mapTexelToLinear( texColor );\n\t#include \n\t#include \n}",equirect_vert:"varying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include \n\t#include \n}",linedashed_frag:"uniform vec3 diffuse;\nuniform float opacity;\nuniform float dashSize;\nuniform float totalSize;\nvarying float vLineDistance;\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\n\t\tdiscard;\n\t}\n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n}",linedashed_vert:"uniform float scale;\nattribute float lineDistance;\nvarying float vLineDistance;\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvLineDistance = scale * lineDistance;\n\tvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\n\tgl_Position = projectionMatrix * mvPosition;\n\t#include \n\t#include \n\t#include \n}",meshbasic_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\t#ifdef USE_LIGHTMAP\n\t\n\t\tvec4 lightMapTexel= texture2D( lightMap, vUv2 );\n\t\treflectedLight.indirectDiffuse += lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity;\n\t#else\n\t\treflectedLight.indirectDiffuse += vec3( 1.0 );\n\t#endif\n\t#include \n\treflectedLight.indirectDiffuse *= diffuseColor.rgb;\n\tvec3 outgoingLight = reflectedLight.indirectDiffuse;\n\t#include \n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n}",meshbasic_vert:"#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#ifdef USE_ENVMAP\n\t#include \n\t#include \n\t#include \n\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshlambert_frag:"uniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float opacity;\nvarying vec3 vLightFront;\nvarying vec3 vIndirectFront;\n#ifdef DOUBLE_SIDED\n\tvarying vec3 vLightBack;\n\tvarying vec3 vIndirectBack;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\treflectedLight.indirectDiffuse = getAmbientLightIrradiance( ambientLightColor );\n\t#ifdef DOUBLE_SIDED\n\t\treflectedLight.indirectDiffuse += ( gl_FrontFacing ) ? vIndirectFront : vIndirectBack;\n\t#else\n\t\treflectedLight.indirectDiffuse += vIndirectFront;\n\t#endif\n\t#include \n\treflectedLight.indirectDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb );\n\t#ifdef DOUBLE_SIDED\n\t\treflectedLight.directDiffuse = ( gl_FrontFacing ) ? vLightFront : vLightBack;\n\t#else\n\t\treflectedLight.directDiffuse = vLightFront;\n\t#endif\n\treflectedLight.directDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb ) * getShadowMask();\n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\n\t#include \n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshlambert_vert:"#define LAMBERT\nvarying vec3 vLightFront;\nvarying vec3 vIndirectFront;\n#ifdef DOUBLE_SIDED\n\tvarying vec3 vLightBack;\n\tvarying vec3 vIndirectBack;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshmatcap_frag:"#define MATCAP\nuniform vec3 diffuse;\nuniform float opacity;\nuniform sampler2D matcap;\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 viewDir = normalize( vViewPosition );\n\tvec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );\n\tvec3 y = cross( viewDir, x );\n\tvec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5;\n\t#ifdef USE_MATCAP\n\t\tvec4 matcapColor = texture2D( matcap, uv );\n\t\tmatcapColor = matcapTexelToLinear( matcapColor );\n\t#else\n\t\tvec4 matcapColor = vec4( 1.0 );\n\t#endif\n\tvec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n}",meshmatcap_vert:"#define MATCAP\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#ifndef FLAT_SHADED\n\t\tvNormal = normalize( transformedNormal );\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n}",meshtoon_frag:"#define TOON\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform vec3 specular;\nuniform float shininess;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshtoon_vert:"#define TOON\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n}",meshphong_frag:"#define PHONG\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform vec3 specular;\nuniform float shininess;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\n\t#include \n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshphong_vert:"#define PHONG\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n\t#include \n}",meshphysical_frag:"#define STANDARD\n#ifdef PHYSICAL\n\t#define REFLECTIVITY\n\t#define CLEARCOAT\n\t#define TRANSPARENCY\n#endif\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float roughness;\nuniform float metalness;\nuniform float opacity;\n#ifdef TRANSPARENCY\n\tuniform float transparency;\n#endif\n#ifdef REFLECTIVITY\n\tuniform float reflectivity;\n#endif\n#ifdef CLEARCOAT\n\tuniform float clearcoat;\n\tuniform float clearcoatRoughness;\n#endif\n#ifdef USE_SHEEN\n\tuniform vec3 sheen;\n#endif\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\n\t#ifdef TRANSPARENCY\n\t\tdiffuseColor.a *= saturate( 1. - transparency + linearToRelativeLuminance( reflectedLight.directSpecular + reflectedLight.indirectSpecular ) );\n\t#endif\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshphysical_vert:"#define STANDARD\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n\t#ifdef USE_TANGENT\n\t\tvTangent = normalize( transformedTangent );\n\t\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\n\t#endif\n#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n}",normal_frag:"#define NORMAL\nuniform float opacity;\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\n\tvarying vec3 vViewPosition;\n#endif\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\tgl_FragColor = vec4( packNormalToRGB( normal ), opacity );\n}",normal_vert:"#define NORMAL\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\n\tvarying vec3 vViewPosition;\n#endif\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n\t#ifdef USE_TANGENT\n\t\tvTangent = normalize( transformedTangent );\n\t\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\n\t#endif\n#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\n\tvViewPosition = - mvPosition.xyz;\n#endif\n}",points_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n}",points_vert:"uniform float size;\nuniform float scale;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\tgl_PointSize = size;\n\t#ifdef USE_SIZEATTENUATION\n\t\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\n\t\tif ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z );\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n}",shadow_frag:"uniform vec3 color;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\tgl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\n\t#include \n}",shadow_vert:"#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",sprite_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n}",sprite_vert:"uniform float rotation;\nuniform vec2 center;\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\n\tvec2 scale;\n\tscale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) );\n\tscale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) );\n\t#ifndef USE_SIZEATTENUATION\n\t\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\n\t\tif ( isPerspective ) scale *= - mvPosition.z;\n\t#endif\n\tvec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale;\n\tvec2 rotatedPosition;\n\trotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\n\trotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\n\tmvPosition.xy += rotatedPosition;\n\tgl_Position = projectionMatrix * mvPosition;\n\t#include \n\t#include \n\t#include \n}"},An={common:{diffuse:{value:new pt(15658734)},opacity:{value:1},map:{value:null},uvTransform:{value:new k},uv2Transform:{value:new k},alphaMap:{value:null}},specularmap:{specularMap:{value:null}},envmap:{envMap:{value:null},flipEnvMap:{value:-1},reflectivity:{value:1},refractionRatio:{value:.98},maxMipLevel:{value:0}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1}},emissivemap:{emissiveMap:{value:null}},bumpmap:{bumpMap:{value:null},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalScale:{value:new z(1,1)}},displacementmap:{displacementMap:{value:null},displacementScale:{value:1},displacementBias:{value:0}},roughnessmap:{roughnessMap:{value:null}},metalnessmap:{metalnessMap:{value:null}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new pt(16777215)}},lights:{ambientLightColor:{value:[]},lightProbe:{value:[]},directionalLights:{value:[],properties:{direction:{},color:{},shadow:{},shadowBias:{},shadowRadius:{},shadowMapSize:{}}},directionalShadowMap:{value:[]},directionalShadowMatrix:{value:[]},spotLights:{value:[],properties:{color:{},position:{},direction:{},distance:{},coneCos:{},penumbraCos:{},decay:{},shadow:{},shadowBias:{},shadowRadius:{},shadowMapSize:{}}},spotShadowMap:{value:[]},spotShadowMatrix:{value:[]},pointLights:{value:[],properties:{color:{},position:{},decay:{},distance:{},shadow:{},shadowBias:{},shadowRadius:{},shadowMapSize:{},shadowCameraNear:{},shadowCameraFar:{}}},pointShadowMap:{value:[]},pointShadowMatrix:{value:[]},hemisphereLights:{value:[],properties:{direction:{},skyColor:{},groundColor:{}}},rectAreaLights:{value:[],properties:{color:{},position:{},width:{},height:{}}}},points:{diffuse:{value:new pt(15658734)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},uvTransform:{value:new k}},sprite:{diffuse:{value:new pt(15658734)},opacity:{value:1},center:{value:new z(.5,.5)},rotation:{value:0},map:{value:null},alphaMap:{value:null},uvTransform:{value:new k}}},Ln={basic:{uniforms:mn([An.common,An.specularmap,An.envmap,An.aomap,An.lightmap,An.fog]),vertexShader:En.meshbasic_vert,fragmentShader:En.meshbasic_frag},lambert:{uniforms:mn([An.common,An.specularmap,An.envmap,An.aomap,An.lightmap,An.emissivemap,An.fog,An.lights,{emissive:{value:new pt(0)}}]),vertexShader:En.meshlambert_vert,fragmentShader:En.meshlambert_frag},phong:{uniforms:mn([An.common,An.specularmap,An.envmap,An.aomap,An.lightmap,An.emissivemap,An.bumpmap,An.normalmap,An.displacementmap,An.fog,An.lights,{emissive:{value:new pt(0)},specular:{value:new pt(1118481)},shininess:{value:30}}]),vertexShader:En.meshphong_vert,fragmentShader:En.meshphong_frag},standard:{uniforms:mn([An.common,An.envmap,An.aomap,An.lightmap,An.emissivemap,An.bumpmap,An.normalmap,An.displacementmap,An.roughnessmap,An.metalnessmap,An.fog,An.lights,{emissive:{value:new pt(0)},roughness:{value:.5},metalness:{value:.5},envMapIntensity:{value:1}}]),vertexShader:En.meshphysical_vert,fragmentShader:En.meshphysical_frag},toon:{uniforms:mn([An.common,An.specularmap,An.aomap,An.lightmap,An.emissivemap,An.bumpmap,An.normalmap,An.displacementmap,An.gradientmap,An.fog,An.lights,{emissive:{value:new pt(0)},specular:{value:new pt(1118481)},shininess:{value:30}}]),vertexShader:En.meshtoon_vert,fragmentShader:En.meshtoon_frag},matcap:{uniforms:mn([An.common,An.bumpmap,An.normalmap,An.displacementmap,An.fog,{matcap:{value:null}}]),vertexShader:En.meshmatcap_vert,fragmentShader:En.meshmatcap_frag},points:{uniforms:mn([An.points,An.fog]),vertexShader:En.points_vert,fragmentShader:En.points_frag},dashed:{uniforms:mn([An.common,An.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:En.linedashed_vert,fragmentShader:En.linedashed_frag},depth:{uniforms:mn([An.common,An.displacementmap]),vertexShader:En.depth_vert,fragmentShader:En.depth_frag},normal:{uniforms:mn([An.common,An.bumpmap,An.normalmap,An.displacementmap,{opacity:{value:1}}]),vertexShader:En.normal_vert,fragmentShader:En.normal_frag},sprite:{uniforms:mn([An.sprite,An.fog]),vertexShader:En.sprite_vert,fragmentShader:En.sprite_frag},background:{uniforms:{uvTransform:{value:new k},t2D:{value:null}},vertexShader:En.background_vert,fragmentShader:En.background_frag},cube:{uniforms:mn([An.envmap,{opacity:{value:1}}]),vertexShader:En.cube_vert,fragmentShader:En.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:En.equirect_vert,fragmentShader:En.equirect_frag},distanceRGBA:{uniforms:mn([An.common,An.displacementmap,{referencePosition:{value:new G},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:En.distanceRGBA_vert,fragmentShader:En.distanceRGBA_frag},shadow:{uniforms:mn([An.lights,An.fog,{color:{value:new pt(0)},opacity:{value:1}}]),vertexShader:En.shadow_vert,fragmentShader:En.shadow_frag}};function Pn(){var e=null,t=!1,n=null;function i(r,a){!1!==t&&(n(r,a),e.requestAnimationFrame(i))}return{start:function(){!0!==t&&null!==n&&(e.requestAnimationFrame(i),t=!0)},stop:function(){t=!1},setAnimationLoop:function(e){n=e},setContext:function(t){e=t}}}function Rn(e){var t=new WeakMap;return{get:function(e){return e.isInterleavedBufferAttribute&&(e=e.data),t.get(e)},remove:function(n){n.isInterleavedBufferAttribute&&(n=n.data);var i=t.get(n);i&&(e.deleteBuffer(i.buffer),t.delete(n))},update:function(n,i){n.isInterleavedBufferAttribute&&(n=n.data);var r=t.get(n);void 0===r?t.set(n,function(t,n){var i=t.array,r=t.usage,a=e.createBuffer();e.bindBuffer(n,a),e.bufferData(n,i,r),t.onUploadCallback();var o=5126;return i instanceof Float32Array?o=5126:i instanceof Float64Array?console.warn("THREE.WebGLAttributes: Unsupported data buffer format: Float64Array."):i instanceof Uint16Array?o=5123:i instanceof Int16Array?o=5122:i instanceof Uint32Array?o=5125:i instanceof Int32Array?o=5124:i instanceof Int8Array?o=5120:i instanceof Uint8Array&&(o=5121),{buffer:a,type:o,bytesPerElement:i.BYTES_PER_ELEMENT,version:t.version}}(n,i)):r.version0&&e.getShaderPrecisionFormat(35632,36338).precision>0)return"highp";t="mediump"}return"mediump"===t&&e.getShaderPrecisionFormat(35633,36337).precision>0&&e.getShaderPrecisionFormat(35632,36337).precision>0?"mediump":"lowp"}var a="undefined"!=typeof WebGL2RenderingContext&&e instanceof WebGL2RenderingContext||"undefined"!=typeof WebGL2ComputeRenderingContext&&e instanceof WebGL2ComputeRenderingContext,o=void 0!==n.precision?n.precision:"highp",s=r(o);s!==o&&(console.warn("THREE.WebGLRenderer:",o,"not supported, using",s,"instead."),o=s);var c=!0===n.logarithmicDepthBuffer,l=e.getParameter(34930),h=e.getParameter(35660),u=e.getParameter(3379),p=e.getParameter(34076),d=e.getParameter(34921),f=e.getParameter(36347),m=e.getParameter(36348),v=e.getParameter(36349),g=h>0,y=a||!!t.get("OES_texture_float");return{isWebGL2:a,getMaxAnisotropy:function(){if(void 0!==i)return i;var n=t.get("EXT_texture_filter_anisotropic");return i=null!==n?e.getParameter(n.MAX_TEXTURE_MAX_ANISOTROPY_EXT):0},getMaxPrecision:r,precision:o,logarithmicDepthBuffer:c,maxTextures:l,maxVertexTextures:h,maxTextureSize:u,maxCubemapSize:p,maxAttributes:d,maxVertexUniforms:f,maxVaryings:m,maxFragmentUniforms:v,vertexTextures:g,floatFragmentTextures:y,floatVertexTextures:g&&y,maxSamples:a?e.getParameter(36183):0}}function zn(){var e=this,t=null,n=0,i=!1,r=!1,a=new Ke,o=new k,s={value:null,needsUpdate:!1};function c(){s.value!==t&&(s.value=t,s.needsUpdate=n>0),e.numPlanes=n,e.numIntersection=0}function l(t,n,i,r){var c=null!==t?t.length:0,l=null;if(0!==c){if(l=s.value,!0!==r||null===l){var h=i+4*c,u=n.matrixWorldInverse;o.getNormalMatrix(u),(null===l||l.length65535?Lt:Et)(n,1);d.version=o,t.update(d,34963);var f=r.get(e);f&&t.remove(f),r.set(e,d)}return{get:function(e,t){var r=i.get(t);return r||(t.addEventListener("dispose",a),t.isBufferGeometry?r=t:t.isGeometry&&(void 0===t._bufferGeometry&&(t._bufferGeometry=(new Gt).setFromObject(e)),r=t._bufferGeometry),i.set(t,r),n.memory.geometries++,r)},update:function(e){var n=e.index,i=e.attributes;for(var r in null!==n&&t.update(n,34963),i)t.update(i[r],34962);var a=e.morphAttributes;for(var r in a)for(var o=a[r],s=0,c=o.length;s0)return e;var r=t*n,a=Kn[r];if(void 0===a&&(a=new Float32Array(r),Kn[r]=a),0!==t){i.toArray(a,0);for(var o=1,s=0;o!==t;++o)s+=n,e[o].toArray(a,s)}return a}function ii(e,t){if(e.length!==t.length)return!1;for(var n=0,i=e.length;n/gm;function Ki(e){return e.replace(Ji,Qi)}function Qi(e,t){var n=En[t];if(void 0===n)throw new Error("Can not resolve #include <"+t+">");return Ki(n)}var $i=/#pragma unroll_loop[\s]+?for \( int i \= (\d+)\; i < (\d+)\; i \+\+ \) \{([\s\S]+?)(?=\})\}/g;function er(e){return e.replace($i,tr)}function tr(e,t,n,i){for(var r="",a=parseInt(t);a0?e.gammaFactor:1,b=o.isWebGL2?"":function(e,t,n){return[(e=e||{}).derivatives||t.envMapCubeUV||t.bumpMap||t.tangentSpaceNormalMap||t.clearcoatNormalMap||t.flatShading||"physical"===t.shaderID?"#extension GL_OES_standard_derivatives : enable":"",(e.fragDepth||t.logarithmicDepthBuffer)&&n.get("EXT_frag_depth")?"#extension GL_EXT_frag_depth : enable":"",e.drawBuffers&&n.get("WEBGL_draw_buffers")?"#extension GL_EXT_draw_buffers : require":"",(e.shaderTextureLOD||t.envMap)&&n.get("EXT_shader_texture_lod")?"#extension GL_EXT_shader_texture_lod : enable":""].filter(Xi).join("\n")}(r.extensions,o,n),w=function(e){var t=[];for(var n in e){var i=e[n];!1!==i&&t.push("#define "+n+" "+i)}return t.join("\n")}(p),_=u.createProgram(),M=o.numMultiviewViews;if(r.isRawShaderMaterial?((s=[w].filter(Xi).join("\n")).length>0&&(s+="\n"),(c=[b,w].filter(Xi).join("\n")).length>0&&(c+="\n")):(s=[nr(o),"#define SHADER_NAME "+a.name,w,o.instancing?"#define USE_INSTANCING":"",o.supportsVertexTextures?"#define VERTEX_TEXTURES":"","#define GAMMA_FACTOR "+x,"#define MAX_BONES "+o.maxBones,o.useFog&&o.fog?"#define USE_FOG":"",o.useFog&&o.fogExp2?"#define FOG_EXP2":"",o.map?"#define USE_MAP":"",o.envMap?"#define USE_ENVMAP":"",o.envMap?"#define "+g:"",o.lightMap?"#define USE_LIGHTMAP":"",o.aoMap?"#define USE_AOMAP":"",o.emissiveMap?"#define USE_EMISSIVEMAP":"",o.bumpMap?"#define USE_BUMPMAP":"",o.normalMap?"#define USE_NORMALMAP":"",o.normalMap&&o.objectSpaceNormalMap?"#define OBJECTSPACE_NORMALMAP":"",o.normalMap&&o.tangentSpaceNormalMap?"#define TANGENTSPACE_NORMALMAP":"",o.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",o.displacementMap&&o.supportsVertexTextures?"#define USE_DISPLACEMENTMAP":"",o.specularMap?"#define USE_SPECULARMAP":"",o.roughnessMap?"#define USE_ROUGHNESSMAP":"",o.metalnessMap?"#define USE_METALNESSMAP":"",o.alphaMap?"#define USE_ALPHAMAP":"",o.vertexTangents?"#define USE_TANGENT":"",o.vertexColors?"#define USE_COLOR":"",o.vertexUvs?"#define USE_UV":"",o.uvsVertexOnly?"#define UVS_VERTEX_ONLY":"",o.flatShading?"#define FLAT_SHADED":"",o.skinning?"#define USE_SKINNING":"",o.useVertexTexture?"#define BONE_TEXTURE":"",o.morphTargets?"#define USE_MORPHTARGETS":"",o.morphNormals&&!1===o.flatShading?"#define USE_MORPHNORMALS":"",o.doubleSided?"#define DOUBLE_SIDED":"",o.flipSided?"#define FLIP_SIDED":"",o.shadowMapEnabled?"#define USE_SHADOWMAP":"",o.shadowMapEnabled?"#define "+m:"",o.sizeAttenuation?"#define USE_SIZEATTENUATION":"",o.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",o.logarithmicDepthBuffer&&(o.isWebGL2||n.get("EXT_frag_depth"))?"#define USE_LOGDEPTHBUF_EXT":"","uniform mat4 modelMatrix;","uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform mat4 viewMatrix;","uniform mat3 normalMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;","#ifdef USE_INSTANCING"," attribute mat4 instanceMatrix;","#endif","attribute vec3 position;","attribute vec3 normal;","attribute vec2 uv;","#ifdef USE_TANGENT","\tattribute vec4 tangent;","#endif","#ifdef USE_COLOR","\tattribute vec3 color;","#endif","#ifdef USE_MORPHTARGETS","\tattribute vec3 morphTarget0;","\tattribute vec3 morphTarget1;","\tattribute vec3 morphTarget2;","\tattribute vec3 morphTarget3;","\t#ifdef USE_MORPHNORMALS","\t\tattribute vec3 morphNormal0;","\t\tattribute vec3 morphNormal1;","\t\tattribute vec3 morphNormal2;","\t\tattribute vec3 morphNormal3;","\t#else","\t\tattribute vec3 morphTarget4;","\t\tattribute vec3 morphTarget5;","\t\tattribute vec3 morphTarget6;","\t\tattribute vec3 morphTarget7;","\t#endif","#endif","#ifdef USE_SKINNING","\tattribute vec4 skinIndex;","\tattribute vec4 skinWeight;","#endif","\n"].filter(Xi).join("\n"),c=[b,nr(o),"#define SHADER_NAME "+a.name,w,o.alphaTest?"#define ALPHATEST "+o.alphaTest+(o.alphaTest%1?"":".0"):"","#define GAMMA_FACTOR "+x,o.useFog&&o.fog?"#define USE_FOG":"",o.useFog&&o.fogExp2?"#define FOG_EXP2":"",o.map?"#define USE_MAP":"",o.matcap?"#define USE_MATCAP":"",o.envMap?"#define USE_ENVMAP":"",o.envMap?"#define "+v:"",o.envMap?"#define "+g:"",o.envMap?"#define "+y:"",o.lightMap?"#define USE_LIGHTMAP":"",o.aoMap?"#define USE_AOMAP":"",o.emissiveMap?"#define USE_EMISSIVEMAP":"",o.bumpMap?"#define USE_BUMPMAP":"",o.normalMap?"#define USE_NORMALMAP":"",o.normalMap&&o.objectSpaceNormalMap?"#define OBJECTSPACE_NORMALMAP":"",o.normalMap&&o.tangentSpaceNormalMap?"#define TANGENTSPACE_NORMALMAP":"",o.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",o.specularMap?"#define USE_SPECULARMAP":"",o.roughnessMap?"#define USE_ROUGHNESSMAP":"",o.metalnessMap?"#define USE_METALNESSMAP":"",o.alphaMap?"#define USE_ALPHAMAP":"",o.sheen?"#define USE_SHEEN":"",o.vertexTangents?"#define USE_TANGENT":"",o.vertexColors?"#define USE_COLOR":"",o.vertexUvs?"#define USE_UV":"",o.uvsVertexOnly?"#define UVS_VERTEX_ONLY":"",o.gradientMap?"#define USE_GRADIENTMAP":"",o.flatShading?"#define FLAT_SHADED":"",o.doubleSided?"#define DOUBLE_SIDED":"",o.flipSided?"#define FLIP_SIDED":"",o.shadowMapEnabled?"#define USE_SHADOWMAP":"",o.shadowMapEnabled?"#define "+m:"",o.premultipliedAlpha?"#define PREMULTIPLIED_ALPHA":"",o.physicallyCorrectLights?"#define PHYSICALLY_CORRECT_LIGHTS":"",o.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",o.logarithmicDepthBuffer&&(o.isWebGL2||n.get("EXT_frag_depth"))?"#define USE_LOGDEPTHBUF_EXT":"",(r.extensions&&r.extensions.shaderTextureLOD||o.envMap)&&(o.isWebGL2||n.get("EXT_shader_texture_lod"))?"#define TEXTURE_LOD_EXT":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;",0!==o.toneMapping?"#define TONE_MAPPING":"",0!==o.toneMapping?En.tonemapping_pars_fragment:"",0!==o.toneMapping?qi("toneMapping",o.toneMapping):"",o.dithering?"#define DITHERING":"",o.outputEncoding||o.mapEncoding||o.matcapEncoding||o.envMapEncoding||o.emissiveMapEncoding||o.lightMapEncoding?En.encodings_pars_fragment:"",o.mapEncoding?Wi("mapTexelToLinear",o.mapEncoding):"",o.matcapEncoding?Wi("matcapTexelToLinear",o.matcapEncoding):"",o.envMapEncoding?Wi("envMapTexelToLinear",o.envMapEncoding):"",o.emissiveMapEncoding?Wi("emissiveMapTexelToLinear",o.emissiveMapEncoding):"",o.lightMapEncoding?Wi("lightMapTexelToLinear",o.lightMapEncoding):"",o.outputEncoding?("linearToOutputTexel",l=o.outputEncoding,h=ki(l),"vec4 linearToOutputTexel( vec4 value ) { return LinearTo"+h[0]+h[1]+"; }"):"",o.depthPacking?"#define DEPTH_PACKING "+r.depthPacking:"","\n"].filter(Xi).join("\n")),d=Zi(d=Yi(d=Ki(d),o),o),f=Zi(f=Yi(f=Ki(f),o),o),d=er(d),f=er(f),o.isWebGL2&&!r.isRawShaderMaterial){var T=!1,S=/^\s*#version\s+300\s+es\s*\n/;r.isShaderMaterial&&null!==d.match(S)&&null!==f.match(S)&&(T=!0,d=d.replace(S,""),f=f.replace(S,"")),s=["#version 300 es\n","#define attribute in","#define varying out","#define texture2D texture"].join("\n")+"\n"+s,c=["#version 300 es\n","#define varying in",T?"":"out highp vec4 pc_fragColor;",T?"":"#define gl_FragColor pc_fragColor","#define gl_FragDepthEXT gl_FragDepth","#define texture2D texture","#define textureCube texture","#define texture2DProj textureProj","#define texture2DLodEXT textureLod","#define texture2DProjLodEXT textureProjLod","#define textureCubeLodEXT textureLod","#define texture2DGradEXT textureGrad","#define texture2DProjGradEXT textureProjGrad","#define textureCubeGradEXT textureGrad"].join("\n")+"\n"+c,M>0&&(s=(s=s.replace("#version 300 es\n",["#version 300 es\n","#extension GL_OVR_multiview2 : require","layout(num_views = "+M+") in;","#define VIEW_ID gl_ViewID_OVR"].join("\n"))).replace(["uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform mat4 viewMatrix;","uniform mat3 normalMatrix;"].join("\n"),["uniform mat4 modelViewMatrices["+M+"];","uniform mat4 projectionMatrices["+M+"];","uniform mat4 viewMatrices["+M+"];","uniform mat3 normalMatrices["+M+"];","#define modelViewMatrix modelViewMatrices[VIEW_ID]","#define projectionMatrix projectionMatrices[VIEW_ID]","#define viewMatrix viewMatrices[VIEW_ID]","#define normalMatrix normalMatrices[VIEW_ID]"].join("\n")),c=(c=c.replace("#version 300 es\n",["#version 300 es\n","#extension GL_OVR_multiview2 : require","#define VIEW_ID gl_ViewID_OVR"].join("\n"))).replace("uniform mat4 viewMatrix;",["uniform mat4 viewMatrices["+M+"];","#define viewMatrix viewMatrices[VIEW_ID]"].join("\n")))}var E,A,L=c+f,P=Hi(u,35633,s+d),R=Hi(u,35632,L);if(u.attachShader(_,P),u.attachShader(_,R),void 0!==r.index0AttributeName?u.bindAttribLocation(_,0,r.index0AttributeName):!0===o.morphTargets&&u.bindAttribLocation(_,0,"position"),u.linkProgram(_),e.debug.checkShaderErrors){var C=u.getProgramInfoLog(_).trim(),I=u.getShaderInfoLog(P).trim(),O=u.getShaderInfoLog(R).trim(),D=!0,N=!0;if(!1===u.getProgramParameter(_,35714)){D=!1;var z=ji(u,P,"vertex"),B=ji(u,R,"fragment");console.error("THREE.WebGLProgram: shader error: ",u.getError(),"35715",u.getProgramParameter(_,35715),"gl.getProgramInfoLog",C,z,B)}else""!==C?console.warn("THREE.WebGLProgram: gl.getProgramInfoLog()",C):""!==I&&""!==O||(N=!1);N&&(this.diagnostics={runnable:D,material:r,programLog:C,vertexShader:{log:I,prefix:s},fragmentShader:{log:O,prefix:c}})}return u.deleteShader(P),u.deleteShader(R),this.getUniforms=function(){return void 0===E&&(E=new Gi(u,_)),E},this.getAttributes=function(){return void 0===A&&(A=function(e,t){for(var n={},i=e.getProgramParameter(t,35721),r=0;r0,maxBones:_,useVertexTexture:s,morphTargets:n.morphTargets,morphNormals:n.morphNormals,maxMorphTargets:e.maxMorphTargets,maxMorphNormals:e.maxMorphNormals,numDirLights:r.directional.length,numPointLights:r.point.length,numSpotLights:r.spot.length,numRectAreaLights:r.rectArea.length,numHemiLights:r.hemi.length,numDirLightShadows:r.directionalShadowMap.length,numPointLightShadows:r.pointShadowMap.length,numSpotLightShadows:r.spotShadowMap.length,numClippingPlanes:m,numClipIntersection:v,dithering:n.dithering,shadowMapEnabled:e.shadowMap.enabled&&p.length>0,shadowMapType:e.shadowMap.type,toneMapping:n.toneMapped?e.toneMapping:0,physicallyCorrectLights:e.physicallyCorrectLights,premultipliedAlpha:n.premultipliedAlpha,alphaTest:n.alphaTest,doubleSided:2===n.side,flipSided:1===n.side,depthPacking:void 0!==n.depthPacking&&n.depthPacking}},this.getProgramCacheKey=function(t,n){var i=[];if(n.shaderID?i.push(n.shaderID):(i.push(t.fragmentShader),i.push(t.vertexShader)),void 0!==t.defines)for(var r in t.defines)i.push(r),i.push(t.defines[r]);if(void 0===t.isRawShaderMaterial){for(var a=0;a1&&n.sort(e||or),i.length>1&&i.sort(t||sr)}}}function lr(){var e=new WeakMap;function t(n){var i=n.target;i.removeEventListener("dispose",t),e.delete(i)}return{get:function(n,i){var r,a=e.get(n);return void 0===a?(r=new cr,e.set(n,new WeakMap),e.get(n).set(i,r),n.addEventListener("dispose",t)):void 0===(r=a.get(i))&&(r=new cr,a.set(i,r)),r},dispose:function(){e=new WeakMap}}}function hr(){var e={};return{get:function(t){if(void 0!==e[t.id])return e[t.id];var n;switch(t.type){case"DirectionalLight":n={direction:new G,color:new pt,shadow:!1,shadowBias:0,shadowRadius:1,shadowMapSize:new z};break;case"SpotLight":n={position:new G,direction:new G,color:new pt,distance:0,coneCos:0,penumbraCos:0,decay:0,shadow:!1,shadowBias:0,shadowRadius:1,shadowMapSize:new z};break;case"PointLight":n={position:new G,color:new pt,distance:0,decay:0,shadow:!1,shadowBias:0,shadowRadius:1,shadowMapSize:new z,shadowCameraNear:1,shadowCameraFar:1e3};break;case"HemisphereLight":n={direction:new G,skyColor:new pt,groundColor:new pt};break;case"RectAreaLight":n={color:new pt,position:new G,halfWidth:new G,halfHeight:new G}}return e[t.id]=n,n}}}var ur=0;function pr(e,t){return(t.castShadow?1:0)-(e.castShadow?1:0)}function dr(){for(var e=new hr,t={version:0,hash:{directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1},ambient:[0,0,0],probe:[],directional:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotShadowMap:[],spotShadowMatrix:[],rectArea:[],point:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[],numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1},n=0;n<9;n++)t.probe.push(new G);var i=new G,r=new ie,a=new ie;return{setup:function(n,o,s){for(var c=0,l=0,h=0,u=0;u<9;u++)t.probe[u].set(0,0,0);var p=0,d=0,f=0,m=0,v=0,g=0,y=0,x=0,b=s.matrixWorldInverse;n.sort(pr),u=0;for(var w=n.length;u\nvoid main() {\n float mean = 0.0;\n float squared_mean = 0.0;\n\tfloat depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy ) / resolution ) );\n for ( float i = -1.0; i < 1.0 ; i += SAMPLE_RATE) {\n #ifdef HORIZONAL_PASS\n vec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( i, 0.0 ) * radius ) / resolution ) );\n mean += distribution.x;\n squared_mean += distribution.y * distribution.y + distribution.x * distribution.x;\n #else\n float depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, i ) * radius ) / resolution ) );\n mean += depth;\n squared_mean += depth * depth;\n #endif\n }\n mean = mean * HALF_SAMPLE_RATE;\n squared_mean = squared_mean * HALF_SAMPLE_RATE;\n float std_dev = sqrt( squared_mean - mean * mean );\n gl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );\n}"}),f=d.clone();f.defines.HORIZONAL_PASS=1;var m=new Gt;m.setAttribute("position",new wt(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));var g=new an(m,d),y=this;function x(n,i){var r=t.update(g);d.uniforms.shadow_pass.value=n.map.texture,d.uniforms.resolution.value=n.mapSize,d.uniforms.radius.value=n.radius,e.setRenderTarget(n.mapPass),e.clear(),e.renderBufferDirect(i,null,r,d,g,null),f.uniforms.shadow_pass.value=n.mapPass.texture,f.uniforms.resolution.value=n.mapSize,f.uniforms.radius.value=n.radius,e.setRenderTarget(n.map),e.clear(),e.renderBufferDirect(i,null,r,f,g,null)}function b(e,t,n){var i=e<<0|t<<1|n<<2,r=l[i];return void 0===r&&(r=new vr({depthPacking:3201,morphTargets:e,skinning:t}),l[i]=r),r}function w(e,t,n){var i=e<<0|t<<1|n<<2,r=h[i];return void 0===r&&(r=new gr({morphTargets:e,skinning:t}),h[i]=r),r}function _(t,n,i,r,a,o){var s=t.geometry,c=null,l=b,h=t.customDepthMaterial;if(!0===i.isPointLight&&(l=w,h=t.customDistanceMaterial),void 0===h){var d=!1;!0===n.morphTargets&&(!0===s.isBufferGeometry?d=s.morphAttributes&&s.morphAttributes.position&&s.morphAttributes.position.length>0:!0===s.isGeometry&&(d=s.morphTargets&&s.morphTargets.length>0));var f=!1;!0===t.isSkinnedMesh&&(!0===n.skinning?f=!0:console.warn("THREE.WebGLShadowMap: THREE.SkinnedMesh with material.skinning set to false:",t)),c=l(d,f,!0===t.isInstancedMesh)}else c=h;if(e.localClippingEnabled&&!0===n.clipShadows&&0!==n.clippingPlanes.length){var m=c.uuid,v=n.uuid,g=u[m];void 0===g&&(g={},u[m]=g);var y=g[v];void 0===y&&(y=c.clone(),g[v]=y),c=y}return c.visible=n.visible,c.wireframe=n.wireframe,c.side=3===o?null!==n.shadowSide?n.shadowSide:n.side:null!==n.shadowSide?n.shadowSide:p[n.side],c.clipShadows=n.clipShadows,c.clippingPlanes=n.clippingPlanes,c.clipIntersection=n.clipIntersection,c.wireframeLinewidth=n.wireframeLinewidth,c.linewidth=n.linewidth,!0===i.isPointLight&&!0===c.isMeshDistanceMaterial&&(c.referencePosition.setFromMatrixPosition(i.matrixWorld),c.nearDistance=r,c.farDistance=a),c}function M(n,r,a,o,s){if(!1!==n.visible){if(n.layers.test(r.layers)&&(n.isMesh||n.isLine||n.isPoints)&&(n.castShadow||n.receiveShadow&&3===s)&&(!n.frustumCulled||i.intersectsObject(n))){n.modelViewMatrix.multiplyMatrices(a.matrixWorldInverse,n.matrixWorld);var c=t.update(n),l=n.material;if(Array.isArray(l))for(var h=c.groups,u=0,p=h.length;un||r.y>n)&&(console.warn("THREE.WebGLShadowMap:",b,"has shadow exceeding max texture size, reducing"),r.x>n&&(o.x=Math.floor(n/_.x),r.x=o.x*_.x,w.mapSize.x=o.x),r.y>n&&(o.y=Math.floor(n/_.y),r.y=o.y*_.y,w.mapSize.y=o.y)),null===w.map&&!w.isPointLightShadow&&3===this.type){var T={minFilter:c,magFilter:c,format:v};w.map=new Y(r.x,r.y,T),w.map.texture.name=b.name+".shadowMap",w.mapPass=new Y(r.x,r.y,T),w.camera.updateProjectionMatrix()}null===w.map&&(T={minFilter:a,magFilter:a,format:v},w.map=new Y(r.x,r.y,T),w.map.texture.name=b.name+".shadowMap",w.camera.updateProjectionMatrix()),e.setRenderTarget(w.map),e.clear();for(var S=w.getViewportCount(),E=0;E=1):-1!==C.indexOf("OpenGL ES")&&(R=parseFloat(/^OpenGL\ ES\ ([0-9])/.exec(C)[1]),P=R>=2);var I=null,O={},D=new X,N=new X;function z(e,n,i){var r=new Uint8Array(4),a=t.createTexture();t.bindTexture(e,a),t.texParameteri(e,10241,9728),t.texParameteri(e,10240,9728);for(var o=0;oi||e.height>i)&&(r=i/Math.max(e.width,e.height)),r<1||!0===t){if("undefined"!=typeof HTMLImageElement&&e instanceof HTMLImageElement||"undefined"!=typeof HTMLCanvasElement&&e instanceof HTMLCanvasElement||"undefined"!=typeof ImageBitmap&&e instanceof ImageBitmap){var a=t?N.floorPowerOfTwo:Math.floor,o=a(r*e.width),s=a(r*e.height);void 0===M&&(M=C(o,s));var c=n?C(o,s):M;return c.width=o,c.height=s,c.getContext("2d").drawImage(e,0,0,o,s),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+e.width+"x"+e.height+") to ("+o+"x"+s+")."),c}return"data"in e&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+e.width+"x"+e.height+")."),e}return e}function O(e){return N.isPowerOfTwo(e.width)&&N.isPowerOfTwo(e.height)}function D(e,t){return e.generateMipmaps&&t&&e.minFilter!==a&&e.minFilter!==c}function z(t,n,i,r){e.generateMipmap(t),x.get(n).__maxMipLevel=Math.log(Math.max(i,r))*Math.LOG2E}function B(n,i,r){if(!1===T)return i;if(null!==n){if(void 0!==e[n])return e[n];console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '"+n+"'")}var a=i;return 6403===i&&(5126===r&&(a=33326),5131===r&&(a=33325),5121===r&&(a=33321)),6407===i&&(5126===r&&(a=34837),5131===r&&(a=34843),5121===r&&(a=32849)),6408===i&&(5126===r&&(a=34836),5131===r&&(a=34842),5121===r&&(a=32856)),33325===a||33326===a||34842===a||34836===a?t.get("EXT_color_buffer_float"):34843!==a&&34837!==a||console.warn("THREE.WebGLRenderer: Floating point textures with RGB format not supported. Please use RGBA instead."),a}function F(e){return e===a||e===o||e===s?9728:9729}function U(t){var n=t.target;n.removeEventListener("dispose",U),function(t){var n=x.get(t);void 0!==n.__webglInit&&(e.deleteTexture(n.__webglTexture),x.remove(t))}(n),n.isVideoTexture&&P.delete(n),_.memory.textures--}function G(t){var n=t.target;n.removeEventListener("dispose",G),function(t){var n=x.get(t),i=x.get(t.texture);if(t){if(void 0!==i.__webglTexture&&e.deleteTexture(i.__webglTexture),t.depthTexture&&t.depthTexture.dispose(),t.isWebGLRenderTargetCube)for(var r=0;r<6;r++)e.deleteFramebuffer(n.__webglFramebuffer[r]),n.__webglDepthbuffer&&e.deleteRenderbuffer(n.__webglDepthbuffer[r]);else e.deleteFramebuffer(n.__webglFramebuffer),n.__webglDepthbuffer&&e.deleteRenderbuffer(n.__webglDepthbuffer);if(t.isWebGLMultiviewRenderTarget){e.deleteTexture(n.__webglColorTexture),e.deleteTexture(n.__webglDepthStencilTexture),_.memory.textures-=2,r=0;for(var a=n.__webglViewFramebuffers.length;r0&&n.__version!==e.version){var i=e.image;if(void 0===i)console.warn("THREE.WebGLRenderer: Texture marked for update but image is undefined");else{if(!1!==i.complete)return void Z(n,e,t);console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete")}}h.activeTexture(33984+t),h.bindTexture(3553,n.__webglTexture)}function k(t,n){if(6===t.image.length){var i=x.get(t);if(t.version>0&&i.__version!==t.version){Y(i,t),h.activeTexture(33984+n),h.bindTexture(34067,i.__webglTexture),e.pixelStorei(37440,t.flipY);for(var r=t&&t.isCompressedTexture,a=t.image[0]&&t.image[0].isDataTexture,o=[],s=0;s<6;s++)o[s]=r||a?a?t.image[s].image:t.image[s]:I(t.image[s],!1,!0,E);var c,l=o[0],u=O(l)||T,p=w.convert(t.format),d=w.convert(t.type),f=B(t.internalFormat,p,d);if(X(34067,t,u),r){for(s=0;s<6;s++){c=o[s].mipmaps;for(var g=0;g1||x.get(r).__currentAnisotropy)&&(e.texParameterf(n,s.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(r.anisotropy,b.getMaxAnisotropy())),x.get(r).__currentAnisotropy=r.anisotropy)}}function Y(t,n){void 0===t.__webglInit&&(t.__webglInit=!0,n.addEventListener("dispose",U),t.__webglTexture=e.createTexture(),_.memory.textures++)}function Z(t,n,r){var o=3553;n.isDataTexture2DArray&&(o=35866),n.isDataTexture3D&&(o=32879),Y(t,n),h.activeTexture(33984+r),h.bindTexture(o,t.__webglTexture),e.pixelStorei(37440,n.flipY),e.pixelStorei(37441,n.premultiplyAlpha),e.pixelStorei(3317,n.unpackAlignment);var s=function(e){return!T&&(e.wrapS!==i||e.wrapT!==i||e.minFilter!==a&&e.minFilter!==c)}(n)&&!1===O(n.image),l=I(n.image,s,!1,A),d=O(l)||T,x=w.convert(n.format),b=w.convert(n.type),_=B(n.internalFormat,x,b);X(o,n,d);var M,S=n.mipmaps;if(n.isDepthTexture){if(_=6402,n.type===p){if(!1===T)throw new Error("Float Depth Texture only supported in WebGL2.0");_=36012}else T&&(_=33189);n.format===g&&6402===_&&n.type!==u&&1014!==n.type&&(console.warn("THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture."),n.type=u,b=w.convert(n.type)),n.format===y&&(_=34041,n.type!==f&&(console.warn("THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture."),n.type=f,b=w.convert(n.type))),h.texImage2D(3553,0,_,l.width,l.height,0,x,b,null)}else if(n.isDataTexture)if(S.length>0&&d){for(var E=0,L=S.length;E0&&d){for(E=0,L=S.length;E=S&&console.warn("THREE.WebGLTextures: Trying to use "+e+" texture units while this GPU supports only "+S),H+=1,e},this.resetTextureUnits=function(){H=0},this.setTexture2D=V,this.setTexture2DArray=function(e,t){var n=x.get(e);e.version>0&&n.__version!==e.version?Z(n,e,t):(h.activeTexture(33984+t),h.bindTexture(35866,n.__webglTexture))},this.setTexture3D=function(e,t){var n=x.get(e);e.version>0&&n.__version!==e.version?Z(n,e,t):(h.activeTexture(33984+t),h.bindTexture(32879,n.__webglTexture))},this.setTextureCube=k,this.setTextureCubeDynamic=j,this.setupRenderTarget=function(n){var i=x.get(n),r=x.get(n.texture);n.addEventListener("dispose",G),r.__webglTexture=e.createTexture(),_.memory.textures++;var a=!0===n.isWebGLRenderTargetCube,o=!0===n.isWebGLMultisampleRenderTarget,s=!0===n.isWebGLMultiviewRenderTarget,c=O(n)||T;if(a){i.__webglFramebuffer=[];for(var l=0;l<6;l++)i.__webglFramebuffer[l]=e.createFramebuffer()}else if(i.__webglFramebuffer=e.createFramebuffer(),o)if(T){i.__webglMultisampledFramebuffer=e.createFramebuffer(),i.__webglColorRenderbuffer=e.createRenderbuffer(),e.bindRenderbuffer(36161,i.__webglColorRenderbuffer);var u=w.convert(n.texture.format),p=w.convert(n.texture.type),d=B(n.texture.internalFormat,u,p),f=Q(n);e.renderbufferStorageMultisample(36161,f,d,n.width,n.height),e.bindFramebuffer(36160,i.__webglMultisampledFramebuffer),e.framebufferRenderbuffer(36160,36064,36161,i.__webglColorRenderbuffer),e.bindRenderbuffer(36161,null),n.depthBuffer&&(i.__webglDepthRenderbuffer=e.createRenderbuffer(),K(i.__webglDepthRenderbuffer,n,!0)),e.bindFramebuffer(36160,null)}else console.warn("THREE.WebGLRenderer: WebGLMultisampleRenderTarget can only be used with WebGL2.");else if(s){var m=n.width,v=n.height,b=n.numViews;e.bindFramebuffer(36160,i.__webglFramebuffer);var M=t.get("OVR_multiview2");_.memory.textures+=2;var S=e.createTexture();e.bindTexture(35866,S),e.texParameteri(35866,10240,9728),e.texParameteri(35866,10241,9728),e.texImage3D(35866,0,32856,m,v,b,0,6408,5121,null),M.framebufferTextureMultiviewOVR(36160,36064,S,0,0,b);var E=e.createTexture();e.bindTexture(35866,E),e.texParameteri(35866,10240,9728),e.texParameteri(35866,10241,9728),e.texImage3D(35866,0,35056,m,v,b,0,34041,34042,null),M.framebufferTextureMultiviewOVR(36160,33306,E,0,0,b);var A=new Array(b);for(l=0;lu)return!1;for(var n=1,i=t.length;n=0){var l=r[s];if(void 0!==l){var h=l.normalized,u=l.itemSize;if(void 0===(_=T.get(l)))continue;var p=_.buffer,d=_.type,f=_.bytesPerElement;if(l.isInterleavedBufferAttribute){var m=l.data,v=m.stride,w=l.offset;m&&m.isInstancedInterleavedBuffer?(b.enableAttributeAndDivisor(c,m.meshPerAttribute),void 0===t.maxInstancedCount&&(t.maxInstancedCount=m.meshPerAttribute*m.count)):b.enableAttribute(c),g.bindBuffer(34962,p),g.vertexAttribPointer(c,u,d,h,v*f,w*f)}else l.isInstancedBufferAttribute?(b.enableAttributeAndDivisor(c,l.meshPerAttribute),void 0===t.maxInstancedCount&&(t.maxInstancedCount=l.meshPerAttribute*l.count)):b.enableAttribute(c),g.bindBuffer(34962,p),g.vertexAttribPointer(c,u,d,h,0,0)}else if("instanceMatrix"===s){var _;if(void 0===(_=T.get(e.instanceMatrix)))continue;p=_.buffer,d=_.type,b.enableAttributeAndDivisor(c+0,1),b.enableAttributeAndDivisor(c+1,1),b.enableAttributeAndDivisor(c+2,1),b.enableAttributeAndDivisor(c+3,1),g.bindBuffer(34962,p),g.vertexAttribPointer(c+0,4,d,!1,64,0),g.vertexAttribPointer(c+1,4,d,!1,64,16),g.vertexAttribPointer(c+2,4,d,!1,64,32),g.vertexAttribPointer(c+3,4,d,!1,64,48)}else if(void 0!==o){var M=o[s];if(void 0!==M)switch(M.length){case 2:g.vertexAttrib2fv(c,M);break;case 3:g.vertexAttrib3fv(c,M);break;case 4:g.vertexAttrib4fv(c,M);break;default:g.vertexAttrib1fv(c,M)}}}}b.disableUnusedAttributes()}}(r,n,i,s),null!==l&&g.bindBuffer(34963,u.buffer));var f=null!==l?l.count:h.count,m=n.drawRange.start*p,v=n.drawRange.count*p,w=null!==a?a.start*p:0,_=null!==a?a.count*p:1/0,M=Math.max(m,w),E=Math.min(f,m+v,w+_)-1,A=Math.max(0,E-M+1);if(0!==A){if(r.isMesh)!0===i.wireframe?(b.setLineWidth(i.wireframeLinewidth*me()),d.setMode(1)):d.setMode(4);else if(r.isLine){var L=i.linewidth;void 0===L&&(L=1),b.setLineWidth(L*me()),r.isLineSegments?d.setMode(1):r.isLineLoop?d.setMode(2):d.setMode(3)}else r.isPoints?d.setMode(0):r.isSprite&&d.setMode(4);r.isInstancedMesh?d.renderInstances(n,M,A,r.count):n.isInstancedBufferGeometry?d.renderInstances(n,M,A,n.maxInstancedCount):d.render(M,A)}},this.compile=function(e,t){(m=R.get(e,t)).init(),e.traverse((function(e){e.isLight&&(m.pushLight(e),e.castShadow&&m.pushShadow(e))})),m.setupLights(t),e.traverse((function(t){if(t.material)if(Array.isArray(t.material))for(var n=0;n=0&&e.numSupportedMorphTargets++}if(e.morphNormals)for(e.numSupportedMorphNormals=0,d=0;d=0&&e.numSupportedMorphNormals++;var f=i.shader.uniforms;(e.isShaderMaterial||e.isRawShaderMaterial)&&!0!==e.clipping||(i.numClippingPlanes=he.numPlanes,i.numIntersection=he.numIntersection,f.clippingPlanes=he.uniform),i.fog=t.fog,i.needsLights=function(e){return e.isMeshLambertMaterial||e.isMeshToonMaterial||e.isMeshPhongMaterial||e.isMeshStandardMaterial||e.isShadowMaterial||e.isShaderMaterial&&!0===e.lights}(e),i.lightsStateVersion=o,i.needsLights&&(f.ambientLightColor.value=r.state.ambient,f.lightProbe.value=r.state.probe,f.directionalLights.value=r.state.directional,f.spotLights.value=r.state.spot,f.rectAreaLights.value=r.state.rectArea,f.pointLights.value=r.state.point,f.hemisphereLights.value=r.state.hemi,f.directionalShadowMap.value=r.state.directionalShadowMap,f.directionalShadowMatrix.value=r.state.directionalShadowMatrix,f.spotShadowMap.value=r.state.spotShadowMap,f.spotShadowMatrix.value=r.state.spotShadowMatrix,f.pointShadowMap.value=r.state.pointShadowMap,f.pointShadowMatrix.value=r.state.pointShadowMatrix);var v=i.program.getUniforms(),g=Gi.seqWithValue(v.seq,f);i.uniformsList=g}function Oe(e,t,n,i){M.resetTextureUnits();var r=t.fog,a=n.isMeshStandardMaterial?t.environment:null,o=_.get(n),s=m.state.lights;if(ue&&(pe||e!==Z)){var c=e===Z&&n.id===q;he.setState(n.clippingPlanes,n.clipIntersection,n.clipShadows,e,o,c)}n.version===o.__version&&(void 0===o.program||n.fog&&o.fog!==r||o.environment!==a||o.needsLights&&o.lightsStateVersion!==s.state.version?n.needsUpdate=!0:void 0===o.numClippingPlanes||o.numClippingPlanes===he.numPlanes&&o.numIntersection===he.numIntersection?o.outputEncoding!==F.outputEncoding&&(n.needsUpdate=!0):n.needsUpdate=!0),n.version!==o.__version&&(Ie(n,t,i),o.__version=n.version);var l,h,u=!1,d=!1,f=!1,y=o.program,w=y.getUniforms(),T=o.shader.uniforms;if(b.useProgram(y.program)&&(u=!0,d=!0,f=!0),n.id!==q&&(q=n.id,d=!0),u||Z!==e){if(y.numMultiviewViews>0?xe.updateCameraProjectionMatricesUniform(e,w):w.setValue(g,"projectionMatrix",e.projectionMatrix),x.logarithmicDepthBuffer&&w.setValue(g,"logDepthBufFC",2/(Math.log(e.far+1)/Math.LN2)),Z!==e&&(Z=e,d=!0,f=!0),n.isShaderMaterial||n.isMeshPhongMaterial||n.isMeshToonMaterial||n.isMeshStandardMaterial||n.envMap){var S=w.map.cameraPosition;void 0!==S&&S.setValue(g,fe.setFromMatrixPosition(e.matrixWorld))}(n.isMeshPhongMaterial||n.isMeshToonMaterial||n.isMeshLambertMaterial||n.isMeshBasicMaterial||n.isMeshStandardMaterial||n.isShaderMaterial)&&w.setValue(g,"isOrthographic",!0===e.isOrthographicCamera),(n.isMeshPhongMaterial||n.isMeshToonMaterial||n.isMeshLambertMaterial||n.isMeshBasicMaterial||n.isMeshStandardMaterial||n.isShaderMaterial||n.skinning)&&(y.numMultiviewViews>0?xe.updateCameraViewMatricesUniform(e,w):w.setValue(g,"viewMatrix",e.matrixWorldInverse))}if(n.skinning){w.setOptional(g,i,"bindMatrix"),w.setOptional(g,i,"bindMatrixInverse");var E=i.skeleton;if(E){var A=E.bones;if(x.floatVertexTextures){if(void 0===E.boneTexture){var L=Math.sqrt(4*A.length);L=N.ceilPowerOfTwo(L),L=Math.max(L,4);var P=new Float32Array(L*L*4);P.set(E.boneMatrices);var R=new _n(P,L,L,v,p);E.boneMatrices=P,E.boneTexture=R,E.boneTextureSize=L}w.setValue(g,"boneTexture",E.boneTexture,M),w.setValue(g,"boneTextureSize",E.boneTextureSize)}else w.setOptional(g,E,"boneMatrices")}}return(d||o.receiveShadow!==i.receiveShadow)&&(o.receiveShadow=i.receiveShadow,w.setValue(g,"receiveShadow",i.receiveShadow)),d&&(w.setValue(g,"toneMappingExposure",F.toneMappingExposure),w.setValue(g,"toneMappingWhitePoint",F.toneMappingWhitePoint),o.needsLights&&(h=f,(l=T).ambientLightColor.needsUpdate=h,l.lightProbe.needsUpdate=h,l.directionalLights.needsUpdate=h,l.pointLights.needsUpdate=h,l.spotLights.needsUpdate=h,l.rectAreaLights.needsUpdate=h,l.hemisphereLights.needsUpdate=h),r&&n.fog&&function(e,t){e.fogColor.value.copy(t.color),t.isFog?(e.fogNear.value=t.near,e.fogFar.value=t.far):t.isFogExp2&&(e.fogDensity.value=t.density)}(T,r),n.isMeshBasicMaterial?De(T,n):n.isMeshLambertMaterial?(De(T,n),function(e,t){t.emissiveMap&&(e.emissiveMap.value=t.emissiveMap)}(T,n)):n.isMeshToonMaterial?(De(T,n),function(e,t){e.specular.value.copy(t.specular),e.shininess.value=Math.max(t.shininess,1e-4),t.gradientMap&&(e.gradientMap.value=t.gradientMap),t.emissiveMap&&(e.emissiveMap.value=t.emissiveMap),t.bumpMap&&(e.bumpMap.value=t.bumpMap,e.bumpScale.value=t.bumpScale,1===t.side&&(e.bumpScale.value*=-1)),t.normalMap&&(e.normalMap.value=t.normalMap,e.normalScale.value.copy(t.normalScale),1===t.side&&e.normalScale.value.negate()),t.displacementMap&&(e.displacementMap.value=t.displacementMap,e.displacementScale.value=t.displacementScale,e.displacementBias.value=t.displacementBias)}(T,n)):n.isMeshPhongMaterial?(De(T,n),function(e,t){e.specular.value.copy(t.specular),e.shininess.value=Math.max(t.shininess,1e-4),t.emissiveMap&&(e.emissiveMap.value=t.emissiveMap),t.bumpMap&&(e.bumpMap.value=t.bumpMap,e.bumpScale.value=t.bumpScale,1===t.side&&(e.bumpScale.value*=-1)),t.normalMap&&(e.normalMap.value=t.normalMap,e.normalScale.value.copy(t.normalScale),1===t.side&&e.normalScale.value.negate()),t.displacementMap&&(e.displacementMap.value=t.displacementMap,e.displacementScale.value=t.displacementScale,e.displacementBias.value=t.displacementBias)}(T,n)):n.isMeshStandardMaterial?(De(T,n,a),n.isMeshPhysicalMaterial?function(e,t,n){Ne(e,t,n),e.reflectivity.value=t.reflectivity,e.clearcoat.value=t.clearcoat,e.clearcoatRoughness.value=t.clearcoatRoughness,t.sheen&&e.sheen.value.copy(t.sheen),t.clearcoatNormalMap&&(e.clearcoatNormalScale.value.copy(t.clearcoatNormalScale),e.clearcoatNormalMap.value=t.clearcoatNormalMap,1===t.side&&e.clearcoatNormalScale.value.negate()),e.transparency.value=t.transparency}(T,n,a):Ne(T,n,a)):n.isMeshMatcapMaterial?(De(T,n),function(e,t){t.matcap&&(e.matcap.value=t.matcap),t.bumpMap&&(e.bumpMap.value=t.bumpMap,e.bumpScale.value=t.bumpScale,1===t.side&&(e.bumpScale.value*=-1)),t.normalMap&&(e.normalMap.value=t.normalMap,e.normalScale.value.copy(t.normalScale),1===t.side&&e.normalScale.value.negate()),t.displacementMap&&(e.displacementMap.value=t.displacementMap,e.displacementScale.value=t.displacementScale,e.displacementBias.value=t.displacementBias)}(T,n)):n.isMeshDepthMaterial?(De(T,n),function(e,t){t.displacementMap&&(e.displacementMap.value=t.displacementMap,e.displacementScale.value=t.displacementScale,e.displacementBias.value=t.displacementBias)}(T,n)):n.isMeshDistanceMaterial?(De(T,n),function(e,t){t.displacementMap&&(e.displacementMap.value=t.displacementMap,e.displacementScale.value=t.displacementScale,e.displacementBias.value=t.displacementBias),e.referencePosition.value.copy(t.referencePosition),e.nearDistance.value=t.nearDistance,e.farDistance.value=t.farDistance}(T,n)):n.isMeshNormalMaterial?(De(T,n),function(e,t){t.bumpMap&&(e.bumpMap.value=t.bumpMap,e.bumpScale.value=t.bumpScale,1===t.side&&(e.bumpScale.value*=-1)),t.normalMap&&(e.normalMap.value=t.normalMap,e.normalScale.value.copy(t.normalScale),1===t.side&&e.normalScale.value.negate()),t.displacementMap&&(e.displacementMap.value=t.displacementMap,e.displacementScale.value=t.displacementScale,e.displacementBias.value=t.displacementBias)}(T,n)):n.isLineBasicMaterial?(function(e,t){e.diffuse.value.copy(t.color),e.opacity.value=t.opacity}(T,n),n.isLineDashedMaterial&&function(e,t){e.dashSize.value=t.dashSize,e.totalSize.value=t.dashSize+t.gapSize,e.scale.value=t.scale}(T,n)):n.isPointsMaterial?function(e,t){var n;e.diffuse.value.copy(t.color),e.opacity.value=t.opacity,e.size.value=t.size*ne,e.scale.value=.5*te,t.map&&(e.map.value=t.map),t.alphaMap&&(e.alphaMap.value=t.alphaMap),t.map?n=t.map:t.alphaMap&&(n=t.alphaMap),void 0!==n&&(!0===n.matrixAutoUpdate&&n.updateMatrix(),e.uvTransform.value.copy(n.matrix))}(T,n):n.isSpriteMaterial?function(e,t){var n;e.diffuse.value.copy(t.color),e.opacity.value=t.opacity,e.rotation.value=t.rotation,t.map&&(e.map.value=t.map),t.alphaMap&&(e.alphaMap.value=t.alphaMap),t.map?n=t.map:t.alphaMap&&(n=t.alphaMap),void 0!==n&&(!0===n.matrixAutoUpdate&&n.updateMatrix(),e.uvTransform.value.copy(n.matrix))}(T,n):n.isShadowMaterial&&(T.color.value.copy(n.color),T.opacity.value=n.opacity),void 0!==T.ltc_1&&(T.ltc_1.value=An.LTC_1),void 0!==T.ltc_2&&(T.ltc_2.value=An.LTC_2),Gi.upload(g,o.uniformsList,T,M),n.isShaderMaterial&&(n.uniformsNeedUpdate=!1)),n.isShaderMaterial&&!0===n.uniformsNeedUpdate&&(Gi.upload(g,o.uniformsList,T,M),n.uniformsNeedUpdate=!1),n.isSpriteMaterial&&w.setValue(g,"center",i.center),y.numMultiviewViews>0?xe.updateObjectMatricesUniforms(i,e,w):(w.setValue(g,"modelViewMatrix",i.modelViewMatrix),w.setValue(g,"normalMatrix",i.normalMatrix)),w.setValue(g,"modelMatrix",i.matrixWorld),y}function De(e,t,n){e.opacity.value=t.opacity,t.color&&e.diffuse.value.copy(t.color),t.emissive&&e.emissive.value.copy(t.emissive).multiplyScalar(t.emissiveIntensity),t.map&&(e.map.value=t.map),t.alphaMap&&(e.alphaMap.value=t.alphaMap),t.specularMap&&(e.specularMap.value=t.specularMap);var i,r,a=t.envMap||n;a&&(e.envMap.value=a,e.flipEnvMap.value=a.isCubeTexture?-1:1,e.reflectivity.value=t.reflectivity,e.refractionRatio.value=t.refractionRatio,e.maxMipLevel.value=_.get(a).__maxMipLevel),t.lightMap&&(e.lightMap.value=t.lightMap,e.lightMapIntensity.value=t.lightMapIntensity),t.aoMap&&(e.aoMap.value=t.aoMap,e.aoMapIntensity.value=t.aoMapIntensity),t.map?i=t.map:t.specularMap?i=t.specularMap:t.displacementMap?i=t.displacementMap:t.normalMap?i=t.normalMap:t.bumpMap?i=t.bumpMap:t.roughnessMap?i=t.roughnessMap:t.metalnessMap?i=t.metalnessMap:t.alphaMap?i=t.alphaMap:t.emissiveMap&&(i=t.emissiveMap),void 0!==i&&(i.isWebGLRenderTarget&&(i=i.texture),!0===i.matrixAutoUpdate&&i.updateMatrix(),e.uvTransform.value.copy(i.matrix)),t.aoMap?r=t.aoMap:t.lightMap&&(r=t.lightMap),void 0!==r&&(r.isWebGLRenderTarget&&(r=r.texture),!0===r.matrixAutoUpdate&&r.updateMatrix(),e.uv2Transform.value.copy(r.matrix))}function Ne(e,t,n){e.roughness.value=t.roughness,e.metalness.value=t.metalness,t.roughnessMap&&(e.roughnessMap.value=t.roughnessMap),t.metalnessMap&&(e.metalnessMap.value=t.metalnessMap),t.emissiveMap&&(e.emissiveMap.value=t.emissiveMap),t.bumpMap&&(e.bumpMap.value=t.bumpMap,e.bumpScale.value=t.bumpScale,1===t.side&&(e.bumpScale.value*=-1)),t.normalMap&&(e.normalMap.value=t.normalMap,e.normalScale.value.copy(t.normalScale),1===t.side&&e.normalScale.value.negate()),t.displacementMap&&(e.displacementMap.value=t.displacementMap,e.displacementScale.value=t.displacementScale,e.displacementBias.value=t.displacementBias),(t.envMap||n)&&(e.envMapIntensity.value=t.envMapIntensity)}Le.setAnimationLoop((function(e){ye.isPresenting||Ae&&Ae(e)})),"undefined"!=typeof window&&Le.setContext(window),this.setAnimationLoop=function(e){Ae=e,ye.setAnimationLoop(e),Le.start()},this.render=function(e,t){var n,i;if(void 0!==arguments[2]&&(console.warn("THREE.WebGLRenderer.render(): the renderTarget argument has been removed. Use .setRenderTarget() instead."),n=arguments[2]),void 0!==arguments[3]&&(console.warn("THREE.WebGLRenderer.render(): the forceClear argument has been removed. Use .clear() instead."),i=arguments[3]),t&&t.isCamera){if(!U){Y.geometry=null,Y.program=null,Y.wireframe=!1,q=-1,Z=null,!0===e.autoUpdate&&e.updateMatrixWorld(),null===t.parent&&t.updateMatrixWorld(),ye.enabled&&ye.isPresenting&&(t=ye.getCamera(t)),(m=R.get(e,t)).init(),e.onBeforeRender(F,e,t,n||j),de.multiplyMatrices(t.projectionMatrix,t.matrixWorldInverse),le.setFromMatrix(de),pe=this.localClippingEnabled,ue=he.init(this.clippingPlanes,pe,t),(f=P.get(e,t)).init(),Pe(e,t,0,F.sortObjects),!0===F.sortObjects&&f.sort(re,ae),ue&&he.beginShadows();var r=m.state.shadowsArray;be.render(r,e,t),m.setupLights(t),ue&&he.endShadows(),this.info.autoReset&&this.info.reset(),void 0!==n&&this.setRenderTarget(n),ye.enabled&&xe.isAvailable()&&xe.attachCamera(t),C.render(f,e,t,i);var a=f.opaque,o=f.transparent;if(e.overrideMaterial){var s=e.overrideMaterial;a.length&&Re(a,e,t,s),o.length&&Re(o,e,t,s)}else a.length&&Re(a,e,t),o.length&&Re(o,e,t);e.onAfterRender(F,e,t),null!==j&&(M.updateRenderTargetMipmap(j),M.updateMultisampleRenderTarget(j)),b.buffers.depth.setTest(!0),b.buffers.depth.setMask(!0),b.buffers.color.setMask(!0),b.setPolygonOffset(!1),ye.enabled&&xe.isAvailable()&&xe.detachCamera(t),f=null,m=null}}else console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.")},this.setFramebuffer=function(e){H!==e&&null===j&&g.bindFramebuffer(36160,e),H=e},this.getActiveCubeFace=function(){return V},this.getActiveMipmapLevel=function(){return k},this.getRenderTarget=function(){return j},this.setRenderTarget=function(e,t,n){j=e,V=t,k=n,e&&void 0===_.get(e).__webglFramebuffer&&M.setupRenderTarget(e);var i=H,r=!1;if(e){var a=_.get(e).__webglFramebuffer;e.isWebGLRenderTargetCube?(i=a[t||0],r=!0):i=e.isWebGLMultisampleRenderTarget?_.get(e).__webglMultisampledFramebuffer:a,K.copy(e.viewport),Q.copy(e.scissor),$=e.scissorTest}else K.copy(oe).multiplyScalar(ne).floor(),Q.copy(se).multiplyScalar(ne).floor(),$=ce;if(W!==i&&(g.bindFramebuffer(36160,i),W=i),b.viewport(K),b.scissor(Q),b.setScissorTest($),r){var o=_.get(e.texture);g.framebufferTexture2D(36160,36064,34069+(t||0),o.__webglTexture,n||0)}},this.readRenderTargetPixels=function(e,t,n,i,r,a,o){if(e&&e.isWebGLRenderTarget){var s=_.get(e).__webglFramebuffer;if(e.isWebGLRenderTargetCube&&void 0!==o&&(s=s[o]),s){var c=!1;s!==W&&(g.bindFramebuffer(36160,s),c=!0);try{var l=e.texture,u=l.format,f=l.type;if(u!==v&&B.convert(u)!==g.getParameter(35739))return void console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");if(!(f===h||B.convert(f)===g.getParameter(35738)||f===p&&(x.isWebGL2||y.get("OES_texture_float")||y.get("WEBGL_color_buffer_float"))||f===d&&(x.isWebGL2?y.get("EXT_color_buffer_float"):y.get("EXT_color_buffer_half_float"))))return void console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");36053===g.checkFramebufferStatus(36160)?t>=0&&t<=e.width-i&&n>=0&&n<=e.height-r&&g.readPixels(t,n,i,r,B.convert(u),B.convert(f),a):console.error("THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.")}finally{c&&g.bindFramebuffer(36160,W)}}}else console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.")},this.copyFramebufferToTexture=function(e,t,n){void 0===n&&(n=0);var i=Math.pow(2,-n),r=Math.floor(t.image.width*i),a=Math.floor(t.image.height*i),o=B.convert(t.format);M.setTexture2D(t,0),g.copyTexImage2D(3553,n,o,e.x,e.y,r,a,0),b.unbindTexture()},this.copyTextureToTexture=function(e,t,n,i){var r=t.image.width,a=t.image.height,o=B.convert(n.format),s=B.convert(n.type);M.setTexture2D(n,0),t.isDataTexture?g.texSubImage2D(3553,i||0,e.x,e.y,r,a,o,s,t.image.data):g.texSubImage2D(3553,i||0,e.x,e.y,o,s,t.image),b.unbindTexture()},this.initTexture=function(e){M.setTexture2D(e,0),b.unbindTexture()},"undefined"!=typeof __THREE_DEVTOOLS__&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}function Lr(e,t){this.name="",this.color=new pt(e),this.density=void 0!==t?t:25e-5}function Pr(e,t,n){this.name="",this.color=new pt(e),this.near=void 0!==t?t:1,this.far=void 0!==n?n:1e3}function Rr(e,t){this.array=e,this.stride=t,this.count=void 0!==e?e.length/t:0,this.usage=R,this.updateRange={offset:0,count:-1},this.version=0}vr.prototype=Object.create(yt.prototype),vr.prototype.constructor=vr,vr.prototype.isMeshDepthMaterial=!0,vr.prototype.copy=function(e){return yt.prototype.copy.call(this,e),this.depthPacking=e.depthPacking,this.skinning=e.skinning,this.morphTargets=e.morphTargets,this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this},gr.prototype=Object.create(yt.prototype),gr.prototype.constructor=gr,gr.prototype.isMeshDistanceMaterial=!0,gr.prototype.copy=function(e){return yt.prototype.copy.call(this,e),this.referencePosition.copy(e.referencePosition),this.nearDistance=e.nearDistance,this.farDistance=e.farDistance,this.skinning=e.skinning,this.morphTargets=e.morphTargets,this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this},_r.prototype=Object.assign(Object.create(Y.prototype),{constructor:_r,isWebGLMultiviewRenderTarget:!0,copy:function(e){return Y.prototype.copy.call(this,e),this.numViews=e.numViews,this},setNumViews:function(e){return this.numViews!==e&&(this.numViews=e,this.dispose()),this}}),Tr.prototype=Object.assign(Object.create(yn.prototype),{constructor:Tr,isArrayCamera:!0}),Sr.prototype=Object.assign(Object.create(we.prototype),{constructor:Sr,isGroup:!0}),Object.assign(Er.prototype,I.prototype),Object.assign(Lr.prototype,{isFogExp2:!0,clone:function(){return new Lr(this.color,this.density)},toJSON:function(){return{type:"FogExp2",color:this.color.getHex(),density:this.density}}}),Object.assign(Pr.prototype,{isFog:!0,clone:function(){return new Pr(this.color,this.near,this.far)},toJSON:function(){return{type:"Fog",color:this.color.getHex(),near:this.near,far:this.far}}}),Object.defineProperty(Rr.prototype,"needsUpdate",{set:function(e){!0===e&&this.version++}}),Object.assign(Rr.prototype,{isInterleavedBuffer:!0,onUploadCallback:function(){},setUsage:function(e){return this.usage=e,this},copy:function(e){return this.array=new e.array.constructor(e.array),this.count=e.count,this.stride=e.stride,this.usage=e.usage,this},copyAt:function(e,t,n){e*=this.stride,n*=t.stride;for(var i=0,r=this.stride;ie.far||t.push({distance:s,point:Nr.clone(),uv:ct.getUV(Nr,Hr,Vr,kr,jr,Wr,qr,new z),face:null,object:this})}},clone:function(){return new this.constructor(this.material).copy(this)},copy:function(e){return we.prototype.copy.call(this,e),void 0!==e.center&&this.center.copy(e.center),this}});var Zr=new G,Jr=new G;function Kr(){we.call(this),this.type="LOD",Object.defineProperties(this,{levels:{enumerable:!0,value:[]}}),this.autoUpdate=!0}function Qr(e,t){e&&e.isGeometry&&console.error("THREE.SkinnedMesh no longer supports THREE.Geometry. Use THREE.BufferGeometry instead."),an.call(this,e,t),this.type="SkinnedMesh",this.bindMode="attached",this.bindMatrix=new ie,this.bindMatrixInverse=new ie}Kr.prototype=Object.assign(Object.create(we.prototype),{constructor:Kr,isLOD:!0,copy:function(e){we.prototype.copy.call(this,e,!1);for(var t=e.levels,n=0,i=t.length;n0){for(var n=1,i=t.length;n0){Zr.setFromMatrixPosition(this.matrixWorld);var n=e.ray.origin.distanceTo(Zr);this.getObjectForDistance(n).raycast(e,t)}},update:function(e){var t=this.levels;if(t.length>1){Zr.setFromMatrixPosition(e.matrixWorld),Jr.setFromMatrixPosition(this.matrixWorld);var n=Zr.distanceTo(Jr);t[0].object.visible=!0;for(var i=1,r=t.length;i=t[i].distance;i++)t[i-1].object.visible=!1,t[i].object.visible=!0;for(;i0&&(aa[0].instanceId=r,aa[0].object=this,t.push(aa[0]),aa.length=0)},setMatrixAt:function(e,t){t.toArray(this.instanceMatrix.array,16*e)},updateMorphTargets:function(){}}),ca.prototype=Object.create(yt.prototype),ca.prototype.constructor=ca,ca.prototype.isLineBasicMaterial=!0,ca.prototype.copy=function(e){return yt.prototype.copy.call(this,e),this.color.copy(e.color),this.linewidth=e.linewidth,this.linecap=e.linecap,this.linejoin=e.linejoin,this};var la=new G,ha=new G,ua=new ie,pa=new Xe,da=new Ue;function fa(e,t,n){1===n&&console.error("THREE.Line: parameter THREE.LinePieces no longer supported. Use THREE.LineSegments instead."),we.call(this),this.type="Line",this.geometry=void 0!==e?e:new Gt,this.material=void 0!==t?t:new ca({color:16777215*Math.random()})}fa.prototype=Object.assign(Object.create(we.prototype),{constructor:fa,isLine:!0,computeLineDistances:function(){var e=this.geometry;if(e.isBufferGeometry)if(null===e.index){for(var t=e.attributes.position,n=[0],i=1,r=t.count;io||(h.applyMatrix4(this.matrixWorld),(w=e.ray.origin.distanceTo(h))e.far||t.push({distance:w,point:l.clone().applyMatrix4(this.matrixWorld),index:m,face:null,faceIndex:null,object:this}))}else for(m=0,v=d.length/3-1;mo||(h.applyMatrix4(this.matrixWorld),(w=e.ray.origin.distanceTo(h))e.far||t.push({distance:w,point:l.clone().applyMatrix4(this.matrixWorld),index:m,face:null,faceIndex:null,object:this}))}else if(i.isGeometry){var x=i.vertices,b=x.length;for(m=0;mo||(h.applyMatrix4(this.matrixWorld),(w=e.ray.origin.distanceTo(h))e.far||t.push({distance:w,point:l.clone().applyMatrix4(this.matrixWorld),index:m,face:null,faceIndex:null,object:this}))}}}},clone:function(){return new this.constructor(this.geometry,this.material).copy(this)}});var ma=new G,va=new G;function ga(e,t){fa.call(this,e,t),this.type="LineSegments"}function ya(e,t){fa.call(this,e,t),this.type="LineLoop"}function xa(e){yt.call(this),this.type="PointsMaterial",this.color=new pt(16777215),this.map=null,this.alphaMap=null,this.size=1,this.sizeAttenuation=!0,this.morphTargets=!1,this.setValues(e)}ga.prototype=Object.assign(Object.create(fa.prototype),{constructor:ga,isLineSegments:!0,computeLineDistances:function(){var e=this.geometry;if(e.isBufferGeometry)if(null===e.index){for(var t=e.attributes.position,n=[],i=0,r=t.count;ir.far)return;a.push({distance:l,distanceToRay:Math.sqrt(s),point:c,index:t,face:null,object:o})}}function Ea(e,t,n,i,r,a,o,s,l){q.call(this,e,t,n,i,r,a,o,s,l),this.format=void 0!==o?o:m,this.minFilter=void 0!==a?a:c,this.magFilter=void 0!==r?r:c,this.generateMipmaps=!1}function Aa(e,t,n,i,r,a,o,s,c,l,h,u){q.call(this,null,a,o,s,c,l,i,r,h,u),this.image={width:t,height:n},this.mipmaps=e,this.flipY=!1,this.generateMipmaps=!1}function La(e,t,n,i,r,a,o,s,c){q.call(this,e,t,n,i,r,a,o,s,c),this.needsUpdate=!0}function Pa(e,t,n,i,r,o,s,c,l,h){if((h=void 0!==h?h:g)!==g&&h!==y)throw new Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");void 0===n&&h===g&&(n=u),void 0===n&&h===y&&(n=f),q.call(this,null,i,r,o,s,c,h,n,l),this.image={width:e,height:t},this.magFilter=void 0!==s?s:a,this.minFilter=void 0!==c?c:a,this.flipY=!1,this.generateMipmaps=!1}function Ra(e){Gt.call(this),this.type="WireframeGeometry";var t,n,i,r,a,o,s,c,l,h,u=[],p=[0,0],d={},f=["a","b","c"];if(e&&e.isGeometry){var m=e.faces;for(t=0,i=m.length;t=0?(e(g-l,v,p),d.subVectors(u,p)):(e(g+l,v,p),d.subVectors(p,u)),v-l>=0?(e(g,v-l,p),f.subVectors(u,p)):(e(g,v+l,p),f.subVectors(p,u)),h.crossVectors(d,f).normalize(),s.push(h.x,h.y,h.z),c.push(g,v)}}for(i=0;i.9&&o<.1&&(t<.2&&(a[e+0]+=1),n<.2&&(a[e+2]+=1),i<.2&&(a[e+4]+=1))}}()}(),this.setAttribute("position",new Pt(r,3)),this.setAttribute("normal",new Pt(r.slice(),3)),this.setAttribute("uv",new Pt(a,2)),0===i?this.computeVertexNormals():this.normalizeNormals()}function Na(e,t){pn.call(this),this.type="TetrahedronGeometry",this.parameters={radius:e,detail:t},this.fromBufferGeometry(new za(e,t)),this.mergeVertices()}function za(e,t){Da.call(this,[1,1,1,-1,-1,1,-1,1,-1,1,-1,-1],[2,1,0,0,3,2,1,3,0,2,3,1],e,t),this.type="TetrahedronBufferGeometry",this.parameters={radius:e,detail:t}}function Ba(e,t){pn.call(this),this.type="OctahedronGeometry",this.parameters={radius:e,detail:t},this.fromBufferGeometry(new Fa(e,t)),this.mergeVertices()}function Fa(e,t){Da.call(this,[1,0,0,-1,0,0,0,1,0,0,-1,0,0,0,1,0,0,-1],[0,2,4,0,4,3,0,3,5,0,5,2,1,2,5,1,5,3,1,3,4,1,4,2],e,t),this.type="OctahedronBufferGeometry",this.parameters={radius:e,detail:t}}function Ua(e,t){pn.call(this),this.type="IcosahedronGeometry",this.parameters={radius:e,detail:t},this.fromBufferGeometry(new Ga(e,t)),this.mergeVertices()}function Ga(e,t){var n=(1+Math.sqrt(5))/2,i=[-1,n,0,1,n,0,-1,-n,0,1,-n,0,0,-1,n,0,1,n,0,-1,-n,0,1,-n,n,0,-1,n,0,1,-n,0,-1,-n,0,1];Da.call(this,i,[0,11,5,0,5,1,0,1,7,0,7,10,0,10,11,1,5,9,5,11,4,11,10,2,10,7,6,7,1,8,3,9,4,3,4,2,3,2,6,3,6,8,3,8,9,4,9,5,2,4,11,6,2,10,8,6,7,9,8,1],e,t),this.type="IcosahedronBufferGeometry",this.parameters={radius:e,detail:t}}function Ha(e,t){pn.call(this),this.type="DodecahedronGeometry",this.parameters={radius:e,detail:t},this.fromBufferGeometry(new Va(e,t)),this.mergeVertices()}function Va(e,t){var n=(1+Math.sqrt(5))/2,i=1/n,r=[-1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,1,1,-1,1,1,1,0,-i,-n,0,-i,n,0,i,-n,0,i,n,-i,-n,0,-i,n,0,i,-n,0,i,n,0,-n,0,-i,n,0,-i,-n,0,i,n,0,i];Da.call(this,r,[3,11,7,3,7,15,3,15,13,7,19,17,7,17,6,7,6,15,17,4,8,17,8,10,17,10,6,8,0,16,8,16,2,8,2,10,0,12,1,0,1,18,0,18,16,6,10,2,6,2,13,6,13,15,2,16,18,2,18,3,2,3,13,18,1,9,18,9,11,18,11,3,4,14,12,4,12,0,4,0,8,11,9,5,11,5,19,11,19,7,19,5,14,19,14,4,19,4,17,1,12,14,1,14,5,1,5,9],e,t),this.type="DodecahedronBufferGeometry",this.parameters={radius:e,detail:t}}function ka(e,t,n,i,r,a){pn.call(this),this.type="TubeGeometry",this.parameters={path:e,tubularSegments:t,radius:n,radialSegments:i,closed:r},void 0!==a&&console.warn("THREE.TubeGeometry: taper has been removed.");var o=new ja(e,t,n,i,r);this.tangents=o.tangents,this.normals=o.normals,this.binormals=o.binormals,this.fromBufferGeometry(o),this.mergeVertices()}function ja(e,t,n,i,r){Gt.call(this),this.type="TubeBufferGeometry",this.parameters={path:e,tubularSegments:t,radius:n,radialSegments:i,closed:r},t=t||64,n=n||1,i=i||8,r=r||!1;var a=e.computeFrenetFrames(t,r);this.tangents=a.tangents,this.normals=a.normals,this.binormals=a.binormals;var o,s,c=new G,l=new G,h=new z,u=new G,p=[],d=[],f=[],m=[];function v(r){u=e.getPointAt(r/t,u);var o=a.normals[r],h=a.binormals[r];for(s=0;s<=i;s++){var f=s/i*Math.PI*2,m=Math.sin(f),v=-Math.cos(f);l.x=v*o.x+m*h.x,l.y=v*o.y+m*h.y,l.z=v*o.z+m*h.z,l.normalize(),d.push(l.x,l.y,l.z),c.x=u.x+n*l.x,c.y=u.y+n*l.y,c.z=u.z+n*l.z,p.push(c.x,c.y,c.z)}}!function(){for(o=0;o0){var o=r[a[0]];if(void 0!==o)for(this.morphTargetInfluences=[],this.morphTargetDictionary={},e=0,t=o.length;e0&&console.error("THREE.Points.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.")}},clone:function(){return new this.constructor(this.geometry,this.material).copy(this)}}),Ea.prototype=Object.assign(Object.create(q.prototype),{constructor:Ea,isVideoTexture:!0,update:function(){var e=this.image;e.readyState>=e.HAVE_CURRENT_DATA&&(this.needsUpdate=!0)}}),Aa.prototype=Object.create(q.prototype),Aa.prototype.constructor=Aa,Aa.prototype.isCompressedTexture=!0,La.prototype=Object.create(q.prototype),La.prototype.constructor=La,La.prototype.isCanvasTexture=!0,Pa.prototype=Object.create(q.prototype),Pa.prototype.constructor=Pa,Pa.prototype.isDepthTexture=!0,Ra.prototype=Object.create(Gt.prototype),Ra.prototype.constructor=Ra,Ca.prototype=Object.create(pn.prototype),Ca.prototype.constructor=Ca,Ia.prototype=Object.create(Gt.prototype),Ia.prototype.constructor=Ia,Oa.prototype=Object.create(pn.prototype),Oa.prototype.constructor=Oa,Da.prototype=Object.create(Gt.prototype),Da.prototype.constructor=Da,Na.prototype=Object.create(pn.prototype),Na.prototype.constructor=Na,za.prototype=Object.create(Da.prototype),za.prototype.constructor=za,Ba.prototype=Object.create(pn.prototype),Ba.prototype.constructor=Ba,Fa.prototype=Object.create(Da.prototype),Fa.prototype.constructor=Fa,Ua.prototype=Object.create(pn.prototype),Ua.prototype.constructor=Ua,Ga.prototype=Object.create(Da.prototype),Ga.prototype.constructor=Ga,Ha.prototype=Object.create(pn.prototype),Ha.prototype.constructor=Ha,Va.prototype=Object.create(Da.prototype),Va.prototype.constructor=Va,ka.prototype=Object.create(pn.prototype),ka.prototype.constructor=ka,ja.prototype=Object.create(Gt.prototype),ja.prototype.constructor=ja,ja.prototype.toJSON=function(){var e=Gt.prototype.toJSON.call(this);return e.path=this.parameters.path.toJSON(),e},Wa.prototype=Object.create(pn.prototype),Wa.prototype.constructor=Wa,qa.prototype=Object.create(Gt.prototype),qa.prototype.constructor=qa,Xa.prototype=Object.create(pn.prototype),Xa.prototype.constructor=Xa,Ya.prototype=Object.create(Gt.prototype),Ya.prototype.constructor=Ya;function Za(e,t,n,i,r){var a,o;if(r===function(e,t,n,i){for(var r=0,a=t,o=n-i;a0)for(a=t;a=t;a-=i)o=fo(a,e[a],e[a+1],o);return o&&lo(o,o.next)&&(mo(o),o=o.next),o}function Ja(e,t){if(!e)return e;t||(t=e);var n,i=e;do{if(n=!1,i.steiner||!lo(i,i.next)&&0!==co(i.prev,i,i.next))i=i.next;else{if(mo(i),(i=t=i.prev)===i.next)break;n=!0}}while(n||i!==t);return t}function Ka(e,t,n,i,r,a,o){if(e){!o&&a&&function(e,t,n,i){var r=e;do{null===r.z&&(r.z=ro(r.x,r.y,t,n,i)),r.prevZ=r.prev,r.nextZ=r.next,r=r.next}while(r!==e);r.prevZ.nextZ=null,r.prevZ=null,function(e){var t,n,i,r,a,o,s,c,l=1;do{for(n=e,e=null,a=null,o=0;n;){for(o++,i=n,s=0,t=0;t0||c>0&&i;)0!==s&&(0===c||!i||n.z<=i.z)?(r=n,n=n.nextZ,s--):(r=i,i=i.nextZ,c--),a?a.nextZ=r:e=r,r.prevZ=a,a=r;n=i}a.nextZ=null,l*=2}while(o>1)}(r)}(e,i,r,a);for(var s,c,l=e;e.prev!==e.next;)if(s=e.prev,c=e.next,a?$a(e,i,r,a):Qa(e))t.push(s.i/n),t.push(e.i/n),t.push(c.i/n),mo(e),e=c.next,l=c.next;else if((e=c)===l){o?1===o?Ka(e=eo(e,t,n),t,n,i,r,a,2):2===o&&to(e,t,n,i,r,a):Ka(Ja(e),t,n,i,r,a,1);break}}}function Qa(e){var t=e.prev,n=e,i=e.next;if(co(t,n,i)>=0)return!1;for(var r=e.next.next;r!==e.prev;){if(oo(t.x,t.y,n.x,n.y,i.x,i.y,r.x,r.y)&&co(r.prev,r,r.next)>=0)return!1;r=r.next}return!0}function $a(e,t,n,i){var r=e.prev,a=e,o=e.next;if(co(r,a,o)>=0)return!1;for(var s=r.xa.x?r.x>o.x?r.x:o.x:a.x>o.x?a.x:o.x,h=r.y>a.y?r.y>o.y?r.y:o.y:a.y>o.y?a.y:o.y,u=ro(s,c,t,n,i),p=ro(l,h,t,n,i),d=e.prevZ,f=e.nextZ;d&&d.z>=u&&f&&f.z<=p;){if(d!==e.prev&&d!==e.next&&oo(r.x,r.y,a.x,a.y,o.x,o.y,d.x,d.y)&&co(d.prev,d,d.next)>=0)return!1;if(d=d.prevZ,f!==e.prev&&f!==e.next&&oo(r.x,r.y,a.x,a.y,o.x,o.y,f.x,f.y)&&co(f.prev,f,f.next)>=0)return!1;f=f.nextZ}for(;d&&d.z>=u;){if(d!==e.prev&&d!==e.next&&oo(r.x,r.y,a.x,a.y,o.x,o.y,d.x,d.y)&&co(d.prev,d,d.next)>=0)return!1;d=d.prevZ}for(;f&&f.z<=p;){if(f!==e.prev&&f!==e.next&&oo(r.x,r.y,a.x,a.y,o.x,o.y,f.x,f.y)&&co(f.prev,f,f.next)>=0)return!1;f=f.nextZ}return!0}function eo(e,t,n){var i=e;do{var r=i.prev,a=i.next.next;!lo(r,a)&&ho(r,i,i.next,a)&&uo(r,a)&&uo(a,r)&&(t.push(r.i/n),t.push(i.i/n),t.push(a.i/n),mo(i),mo(i.next),i=e=a),i=i.next}while(i!==e);return i}function to(e,t,n,i,r,a){var o=e;do{for(var s=o.next.next;s!==o.prev;){if(o.i!==s.i&&so(o,s)){var c=po(o,s);return o=Ja(o,o.next),c=Ja(c,c.next),Ka(o,t,n,i,r,a),void Ka(c,t,n,i,r,a)}s=s.next}o=o.next}while(o!==e)}function no(e,t){return e.x-t.x}function io(e,t){if(t=function(e,t){var n,i=t,r=e.x,a=e.y,o=-1/0;do{if(a<=i.y&&a>=i.next.y&&i.next.y!==i.y){var s=i.x+(a-i.y)*(i.next.x-i.x)/(i.next.y-i.y);if(s<=r&&s>o){if(o=s,s===r){if(a===i.y)return i;if(a===i.next.y)return i.next}n=i.x=i.x&&i.x>=h&&r!==i.x&&oo(an.x)&&uo(i,e)&&(n=i,p=c),i=i.next;return n}(e,t),t){var n=po(t,e);Ja(n,n.next)}}function ro(e,t,n,i,r){return(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=32767*(e-n)*r)|e<<8))|e<<4))|e<<2))|e<<1))|(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=32767*(t-i)*r)|t<<8))|t<<4))|t<<2))|t<<1))<<1}function ao(e){var t=e,n=e;do{(t.x=0&&(e-o)*(i-s)-(n-o)*(t-s)>=0&&(n-o)*(a-s)-(r-o)*(i-s)>=0}function so(e,t){return e.next.i!==t.i&&e.prev.i!==t.i&&!function(e,t){var n=e;do{if(n.i!==e.i&&n.next.i!==e.i&&n.i!==t.i&&n.next.i!==t.i&&ho(n,n.next,e,t))return!0;n=n.next}while(n!==e);return!1}(e,t)&&uo(e,t)&&uo(t,e)&&function(e,t){var n=e,i=!1,r=(e.x+t.x)/2,a=(e.y+t.y)/2;do{n.y>a!=n.next.y>a&&n.next.y!==n.y&&r<(n.next.x-n.x)*(a-n.y)/(n.next.y-n.y)+n.x&&(i=!i),n=n.next}while(n!==e);return i}(e,t)}function co(e,t,n){return(t.y-e.y)*(n.x-t.x)-(t.x-e.x)*(n.y-t.y)}function lo(e,t){return e.x===t.x&&e.y===t.y}function ho(e,t,n,i){return!!(lo(e,n)&&lo(t,i)||lo(e,i)&&lo(n,t))||co(e,t,n)>0!=co(e,t,i)>0&&co(n,i,e)>0!=co(n,i,t)>0}function uo(e,t){return co(e.prev,e,e.next)<0?co(e,t,e.next)>=0&&co(e,e.prev,t)>=0:co(e,t,e.prev)<0||co(e,e.next,t)<0}function po(e,t){var n=new vo(e.i,e.x,e.y),i=new vo(t.i,t.x,t.y),r=e.next,a=t.prev;return e.next=t,t.prev=e,n.next=r,r.prev=n,i.next=n,n.prev=i,a.next=i,i.prev=a,i}function fo(e,t,n,i){var r=new vo(e,t,n);return i?(r.next=i.next,r.prev=i,i.next.prev=r,i.next=r):(r.prev=r,r.next=r),r}function mo(e){e.next.prev=e.prev,e.prev.next=e.next,e.prevZ&&(e.prevZ.nextZ=e.nextZ),e.nextZ&&(e.nextZ.prevZ=e.prevZ)}function vo(e,t,n){this.i=e,this.x=t,this.y=n,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1}var go={area:function(e){for(var t=e.length,n=0,i=t-1,r=0;r80*n){i=a=e[0],r=o=e[1];for(var f=n;fa&&(a=s),c>o&&(o=c);l=0!==(l=Math.max(a-i,o-r))?1/l:0}return Ka(p,d,n,i,r,l),d}(n,i);for(o=0;o2&&e[t-1].equals(e[0])&&e.pop()}function xo(e,t){for(var n=0;nNumber.EPSILON){var p=Math.sqrt(h),d=Math.sqrt(c*c+l*l),f=t.x-s/p,m=t.y+o/p,v=((n.x-l/d-f)*l-(n.y+c/d-m)*c)/(o*l-s*c),g=(i=f+o*v-e.x)*i+(r=m+s*v-e.y)*r;if(g<=2)return new z(i,r);a=Math.sqrt(g/2)}else{var y=!1;o>Number.EPSILON?c>Number.EPSILON&&(y=!0):o<-Number.EPSILON?c<-Number.EPSILON&&(y=!0):Math.sign(s)===Math.sign(l)&&(y=!0),y?(i=-s,r=o,a=Math.sqrt(h)):(i=o,r=s,a=Math.sqrt(h/2))}return new z(i/a,r/a)}for(var V=[],k=0,j=P.length,W=j-1,q=k+1;k=0;C--){for(O=C/d,D=h*Math.cos(O*Math.PI/2),I=u*Math.sin(O*Math.PI/2)+p,k=0,j=P.length;k=0;){n=k,(i=k-1)<0&&(i=e.length-1);var r=0,a=s+2*d;for(r=0;r0)&&f.push(_,M,S),(c!==n-1||l0&&g(!0),t>0&&g(!1)),this.setIndex(l),this.setAttribute("position",new Pt(h,3)),this.setAttribute("normal",new Pt(u,3)),this.setAttribute("uv",new Pt(p,2))}function Fo(e,t,n,i,r,a,o){zo.call(this,0,e,t,n,i,r,a,o),this.type="ConeGeometry",this.parameters={radius:e,height:t,radialSegments:n,heightSegments:i,openEnded:r,thetaStart:a,thetaLength:o}}function Uo(e,t,n,i,r,a,o){Bo.call(this,0,e,t,n,i,r,a,o),this.type="ConeBufferGeometry",this.parameters={radius:e,height:t,radialSegments:n,heightSegments:i,openEnded:r,thetaStart:a,thetaLength:o}}function Go(e,t,n,i){pn.call(this),this.type="CircleGeometry",this.parameters={radius:e,segments:t,thetaStart:n,thetaLength:i},this.fromBufferGeometry(new Ho(e,t,n,i)),this.mergeVertices()}function Ho(e,t,n,i){Gt.call(this),this.type="CircleBufferGeometry",this.parameters={radius:e,segments:t,thetaStart:n,thetaLength:i},e=e||1,t=void 0!==t?Math.max(3,t):8,n=void 0!==n?n:0,i=void 0!==i?i:2*Math.PI;var r,a,o=[],s=[],c=[],l=[],h=new G,u=new z;for(s.push(0,0,0),c.push(0,0,1),l.push(.5,.5),a=0,r=3;a<=t;a++,r+=3){var p=n+a/t*i;h.x=e*Math.cos(p),h.y=e*Math.sin(p),s.push(h.x,h.y,h.z),c.push(0,0,1),u.x=(s[r]/e+1)/2,u.y=(s[r+1]/e+1)/2,l.push(u.x,u.y)}for(r=1;r<=t;r++)o.push(r,r+1,0);this.setIndex(o),this.setAttribute("position",new Pt(s,3)),this.setAttribute("normal",new Pt(c,3)),this.setAttribute("uv",new Pt(l,2))}To.prototype=Object.create(pn.prototype),To.prototype.constructor=To,So.prototype=Object.create(wo.prototype),So.prototype.constructor=So,Eo.prototype=Object.create(pn.prototype),Eo.prototype.constructor=Eo,Ao.prototype=Object.create(Gt.prototype),Ao.prototype.constructor=Ao,Lo.prototype=Object.create(pn.prototype),Lo.prototype.constructor=Lo,Po.prototype=Object.create(Gt.prototype),Po.prototype.constructor=Po,Ro.prototype=Object.create(pn.prototype),Ro.prototype.constructor=Ro,Co.prototype=Object.create(Gt.prototype),Co.prototype.constructor=Co,Io.prototype=Object.create(pn.prototype),Io.prototype.constructor=Io,Io.prototype.toJSON=function(){var e=pn.prototype.toJSON.call(this);return Do(this.parameters.shapes,e)},Oo.prototype=Object.create(Gt.prototype),Oo.prototype.constructor=Oo,Oo.prototype.toJSON=function(){var e=Gt.prototype.toJSON.call(this);return Do(this.parameters.shapes,e)},No.prototype=Object.create(Gt.prototype),No.prototype.constructor=No,zo.prototype=Object.create(pn.prototype),zo.prototype.constructor=zo,Bo.prototype=Object.create(Gt.prototype),Bo.prototype.constructor=Bo,Fo.prototype=Object.create(zo.prototype),Fo.prototype.constructor=Fo,Uo.prototype=Object.create(Bo.prototype),Uo.prototype.constructor=Uo,Go.prototype=Object.create(pn.prototype),Go.prototype.constructor=Go,Ho.prototype=Object.create(Gt.prototype),Ho.prototype.constructor=Ho;var Vo=Object.freeze({__proto__:null,WireframeGeometry:Ra,ParametricGeometry:Ca,ParametricBufferGeometry:Ia,TetrahedronGeometry:Na,TetrahedronBufferGeometry:za,OctahedronGeometry:Ba,OctahedronBufferGeometry:Fa,IcosahedronGeometry:Ua,IcosahedronBufferGeometry:Ga,DodecahedronGeometry:Ha,DodecahedronBufferGeometry:Va,PolyhedronGeometry:Oa,PolyhedronBufferGeometry:Da,TubeGeometry:ka,TubeBufferGeometry:ja,TorusKnotGeometry:Wa,TorusKnotBufferGeometry:qa,TorusGeometry:Xa,TorusBufferGeometry:Ya,TextGeometry:To,TextBufferGeometry:So,SphereGeometry:Eo,SphereBufferGeometry:Ao,RingGeometry:Lo,RingBufferGeometry:Po,PlaneGeometry:Cn,PlaneBufferGeometry:In,LatheGeometry:Ro,LatheBufferGeometry:Co,ShapeGeometry:Io,ShapeBufferGeometry:Oo,ExtrudeGeometry:bo,ExtrudeBufferGeometry:wo,EdgesGeometry:No,ConeGeometry:Fo,ConeBufferGeometry:Uo,CylinderGeometry:zo,CylinderBufferGeometry:Bo,CircleGeometry:Go,CircleBufferGeometry:Ho,BoxGeometry:class extends pn{constructor(e,t,n,i,r,a){super(),this.type="BoxGeometry",this.parameters={width:e,height:t,depth:n,widthSegments:i,heightSegments:r,depthSegments:a},this.fromBufferGeometry(new dn(e,t,n,i,r,a)),this.mergeVertices()}},BoxBufferGeometry:dn});function ko(e){yt.call(this),this.type="ShadowMaterial",this.color=new pt(0),this.transparent=!0,this.setValues(e)}function jo(e){vn.call(this,e),this.type="RawShaderMaterial"}function Wo(e){yt.call(this),this.defines={STANDARD:""},this.type="MeshStandardMaterial",this.color=new pt(16777215),this.roughness=1,this.metalness=0,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new pt(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=0,this.normalScale=new z(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.roughnessMap=null,this.metalnessMap=null,this.alphaMap=null,this.envMap=null,this.envMapIntensity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.skinning=!1,this.morphTargets=!1,this.morphNormals=!1,this.setValues(e)}function qo(e){Wo.call(this),this.defines={STANDARD:"",PHYSICAL:""},this.type="MeshPhysicalMaterial",this.reflectivity=.5,this.clearcoat=0,this.clearcoatRoughness=0,this.sheen=null,this.clearcoatNormalScale=new z(1,1),this.clearcoatNormalMap=null,this.transparency=0,this.setValues(e)}function Xo(e){yt.call(this),this.type="MeshPhongMaterial",this.color=new pt(16777215),this.specular=new pt(1118481),this.shininess=30,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new pt(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=0,this.normalScale=new z(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.combine=0,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.skinning=!1,this.morphTargets=!1,this.morphNormals=!1,this.setValues(e)}function Yo(e){yt.call(this),this.defines={TOON:""},this.type="MeshToonMaterial",this.color=new pt(16777215),this.specular=new pt(1118481),this.shininess=30,this.map=null,this.gradientMap=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new pt(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=0,this.normalScale=new z(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.skinning=!1,this.morphTargets=!1,this.morphNormals=!1,this.setValues(e)}function Zo(e){yt.call(this),this.type="MeshNormalMaterial",this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=0,this.normalScale=new z(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.fog=!1,this.skinning=!1,this.morphTargets=!1,this.morphNormals=!1,this.setValues(e)}function Jo(e){yt.call(this),this.type="MeshLambertMaterial",this.color=new pt(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new pt(0),this.emissiveIntensity=1,this.emissiveMap=null,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.combine=0,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.skinning=!1,this.morphTargets=!1,this.morphNormals=!1,this.setValues(e)}function Ko(e){yt.call(this),this.defines={MATCAP:""},this.type="MeshMatcapMaterial",this.color=new pt(16777215),this.matcap=null,this.map=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=0,this.normalScale=new z(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.alphaMap=null,this.skinning=!1,this.morphTargets=!1,this.morphNormals=!1,this.setValues(e)}function Qo(e){ca.call(this),this.type="LineDashedMaterial",this.scale=1,this.dashSize=3,this.gapSize=1,this.setValues(e)}ko.prototype=Object.create(yt.prototype),ko.prototype.constructor=ko,ko.prototype.isShadowMaterial=!0,ko.prototype.copy=function(e){return yt.prototype.copy.call(this,e),this.color.copy(e.color),this},jo.prototype=Object.create(vn.prototype),jo.prototype.constructor=jo,jo.prototype.isRawShaderMaterial=!0,Wo.prototype=Object.create(yt.prototype),Wo.prototype.constructor=Wo,Wo.prototype.isMeshStandardMaterial=!0,Wo.prototype.copy=function(e){return yt.prototype.copy.call(this,e),this.defines={STANDARD:""},this.color.copy(e.color),this.roughness=e.roughness,this.metalness=e.metalness,this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.roughnessMap=e.roughnessMap,this.metalnessMap=e.metalnessMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapIntensity=e.envMapIntensity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.skinning=e.skinning,this.morphTargets=e.morphTargets,this.morphNormals=e.morphNormals,this},qo.prototype=Object.create(Wo.prototype),qo.prototype.constructor=qo,qo.prototype.isMeshPhysicalMaterial=!0,qo.prototype.copy=function(e){return Wo.prototype.copy.call(this,e),this.defines={STANDARD:"",PHYSICAL:""},this.reflectivity=e.reflectivity,this.clearcoat=e.clearcoat,this.clearcoatRoughness=e.clearcoatRoughness,e.sheen?this.sheen=(this.sheen||new pt).copy(e.sheen):this.sheen=null,this.clearcoatNormalMap=e.clearcoatNormalMap,this.clearcoatNormalScale.copy(e.clearcoatNormalScale),this.transparency=e.transparency,this},Xo.prototype=Object.create(yt.prototype),Xo.prototype.constructor=Xo,Xo.prototype.isMeshPhongMaterial=!0,Xo.prototype.copy=function(e){return yt.prototype.copy.call(this,e),this.color.copy(e.color),this.specular.copy(e.specular),this.shininess=e.shininess,this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.skinning=e.skinning,this.morphTargets=e.morphTargets,this.morphNormals=e.morphNormals,this},Yo.prototype=Object.create(yt.prototype),Yo.prototype.constructor=Yo,Yo.prototype.isMeshToonMaterial=!0,Yo.prototype.copy=function(e){return yt.prototype.copy.call(this,e),this.color.copy(e.color),this.specular.copy(e.specular),this.shininess=e.shininess,this.map=e.map,this.gradientMap=e.gradientMap,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.skinning=e.skinning,this.morphTargets=e.morphTargets,this.morphNormals=e.morphNormals,this},Zo.prototype=Object.create(yt.prototype),Zo.prototype.constructor=Zo,Zo.prototype.isMeshNormalMaterial=!0,Zo.prototype.copy=function(e){return yt.prototype.copy.call(this,e),this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.skinning=e.skinning,this.morphTargets=e.morphTargets,this.morphNormals=e.morphNormals,this},Jo.prototype=Object.create(yt.prototype),Jo.prototype.constructor=Jo,Jo.prototype.isMeshLambertMaterial=!0,Jo.prototype.copy=function(e){return yt.prototype.copy.call(this,e),this.color.copy(e.color),this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.skinning=e.skinning,this.morphTargets=e.morphTargets,this.morphNormals=e.morphNormals,this},Ko.prototype=Object.create(yt.prototype),Ko.prototype.constructor=Ko,Ko.prototype.isMeshMatcapMaterial=!0,Ko.prototype.copy=function(e){return yt.prototype.copy.call(this,e),this.defines={MATCAP:""},this.color.copy(e.color),this.matcap=e.matcap,this.map=e.map,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.alphaMap=e.alphaMap,this.skinning=e.skinning,this.morphTargets=e.morphTargets,this.morphNormals=e.morphNormals,this},Qo.prototype=Object.create(ca.prototype),Qo.prototype.constructor=Qo,Qo.prototype.isLineDashedMaterial=!0,Qo.prototype.copy=function(e){return ca.prototype.copy.call(this,e),this.scale=e.scale,this.dashSize=e.dashSize,this.gapSize=e.gapSize,this};var $o=Object.freeze({__proto__:null,ShadowMaterial:ko,SpriteMaterial:Dr,RawShaderMaterial:jo,ShaderMaterial:vn,PointsMaterial:xa,MeshPhysicalMaterial:qo,MeshStandardMaterial:Wo,MeshPhongMaterial:Xo,MeshToonMaterial:Yo,MeshNormalMaterial:Zo,MeshLambertMaterial:Jo,MeshDepthMaterial:vr,MeshDistanceMaterial:gr,MeshBasicMaterial:xt,MeshMatcapMaterial:Ko,LineDashedMaterial:Qo,LineBasicMaterial:ca,Material:yt}),es={arraySlice:function(e,t,n){return es.isTypedArray(e)?new e.constructor(e.subarray(t,void 0!==n?n:e.length)):e.slice(t,n)},convertArray:function(e,t,n){return!e||!n&&e.constructor===t?e:"number"==typeof t.BYTES_PER_ELEMENT?new t(e):Array.prototype.slice.call(e)},isTypedArray:function(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)},getKeyframeOrder:function(e){for(var t=e.length,n=new Array(t),i=0;i!==t;++i)n[i]=i;return n.sort((function(t,n){return e[t]-e[n]})),n},sortedArray:function(e,t,n){for(var i=e.length,r=new e.constructor(i),a=0,o=0;o!==i;++a)for(var s=n[a]*t,c=0;c!==t;++c)r[o++]=e[s+c];return r},flattenJSON:function(e,t,n,i){for(var r=1,a=e[0];void 0!==a&&void 0===a[i];)a=e[r++];if(void 0!==a){var o=a[i];if(void 0!==o)if(Array.isArray(o))do{void 0!==(o=a[i])&&(t.push(a.time),n.push.apply(n,o)),a=e[r++]}while(void 0!==a);else if(void 0!==o.toArray)do{void 0!==(o=a[i])&&(t.push(a.time),o.toArray(n,n.length)),a=e[r++]}while(void 0!==a);else do{void 0!==(o=a[i])&&(t.push(a.time),n.push(o)),a=e[r++]}while(void 0!==a)}},subclip:function(e,t,n,i,r){r=r||30;var a=e.clone();a.name=t;for(var o=[],s=0;s=i)){h.push(c.times[p]);for(var f=0;fa.tracks[s].times[0]&&(m=a.tracks[s].times[0]);for(s=0;s=r)break e;var s=t[1];for(e=(r=t[--n-1]))break t}a=n,n=0}for(;n>>1;et;)--a;if(++a,0!==r||a!==i){r>=a&&(r=(a=Math.max(a,1))-1);var o=this.getValueSize();this.times=es.arraySlice(n,r,a),this.values=es.arraySlice(this.values,r*o,a*o)}return this},validate:function(){var e=!0,t=this.getValueSize();t-Math.floor(t)!=0&&(console.error("THREE.KeyframeTrack: Invalid value size in track.",this),e=!1);var n=this.times,i=this.values,r=n.length;0===r&&(console.error("THREE.KeyframeTrack: Track is empty.",this),e=!1);for(var a=null,o=0;o!==r;o++){var s=n[o];if("number"==typeof s&&isNaN(s)){console.error("THREE.KeyframeTrack: Time is not a valid number.",this,o,s),e=!1;break}if(null!==a&&a>s){console.error("THREE.KeyframeTrack: Out of order keys.",this,o,s,a),e=!1;break}a=s}if(void 0!==i&&es.isTypedArray(i)){o=0;for(var c=i.length;o!==c;++o){var l=i[o];if(isNaN(l)){console.error("THREE.KeyframeTrack: Value is not a valid number.",this,o,l),e=!1;break}}}return e},optimize:function(){for(var e=this.times,t=this.values,n=this.getValueSize(),i=this.getInterpolation()===_,r=1,a=e.length-1,o=1;o0){for(e[r]=e[a],f=a*n,m=r*n,p=0;p!==n;++p)t[m+p]=t[f+p];++r}return r!==e.length&&(this.times=es.arraySlice(e,0,r),this.values=es.arraySlice(t,0,r*n)),this},clone:function(){var e=es.arraySlice(this.times,0),t=es.arraySlice(this.values,0),n=new(0,this.constructor)(this.name,e,t);return n.createInterpolant=this.createInterpolant,n}}),os.prototype=Object.assign(Object.create(as.prototype),{constructor:os,ValueTypeName:"bool",ValueBufferType:Array,DefaultInterpolation:b,InterpolantFactoryMethodLinear:void 0,InterpolantFactoryMethodSmooth:void 0}),ss.prototype=Object.assign(Object.create(as.prototype),{constructor:ss,ValueTypeName:"color"}),cs.prototype=Object.assign(Object.create(as.prototype),{constructor:cs,ValueTypeName:"number"}),ls.prototype=Object.assign(Object.create(ts.prototype),{constructor:ls,interpolate_:function(e,t,n,i){for(var r=this.resultBuffer,a=this.sampleValues,o=this.valueSize,s=e*o,c=(n-t)/(i-t),l=s+o;s!==l;s+=4)B.slerpFlat(r,0,a,s-o,a,s,c);return r}}),hs.prototype=Object.assign(Object.create(as.prototype),{constructor:hs,ValueTypeName:"quaternion",DefaultInterpolation:w,InterpolantFactoryMethodLinear:function(e){return new ls(this.times,this.values,this.getValueSize(),e)},InterpolantFactoryMethodSmooth:void 0}),us.prototype=Object.assign(Object.create(as.prototype),{constructor:us,ValueTypeName:"string",ValueBufferType:Array,DefaultInterpolation:b,InterpolantFactoryMethodLinear:void 0,InterpolantFactoryMethodSmooth:void 0}),ps.prototype=Object.assign(Object.create(as.prototype),{constructor:ps,ValueTypeName:"vector"}),Object.assign(ds,{parse:function(e){for(var t=[],n=e.tracks,i=1/(e.fps||1),r=0,a=n.length;r!==a;++r)t.push(fs(n[r]).scale(i));return new ds(e.name,e.duration,t)},toJSON:function(e){for(var t=[],n=e.tracks,i={name:e.name,duration:e.duration,tracks:t,uuid:e.uuid},r=0,a=n.length;r!==a;++r)t.push(as.toJSON(n[r]));return i},CreateFromMorphTargetSequence:function(e,t,n,i){for(var r=t.length,a=[],o=0;o1){var l=i[u=c[1]];l||(i[u]=l=[]),l.push(s)}}var h=[];for(var u in i)h.push(ds.CreateFromMorphTargetSequence(u,i[u],t,n));return h},parseAnimation:function(e,t){if(!e)return console.error("THREE.AnimationClip: No animation in JSONLoader data."),null;for(var n=function(e,t,n,i,r){if(0!==n.length){var a=[],o=[];es.flattenJSON(n,a,o,i),0!==a.length&&r.push(new e(t,a,o))}},i=[],r=e.name||"default",a=e.length||-1,o=e.fps||30,s=e.hierarchy||[],c=0;c0||0===e.search(/^data\:image\/jpeg/);r.format=i?m:v,r.needsUpdate=!0,void 0!==t&&t(r)}),n,i),r}}),Object.assign(As.prototype,{getPoint:function(){return console.warn("THREE.Curve: .getPoint() not implemented."),null},getPointAt:function(e,t){var n=this.getUtoTmapping(e);return this.getPoint(n,t)},getPoints:function(e){void 0===e&&(e=5);for(var t=[],n=0;n<=e;n++)t.push(this.getPoint(n/e));return t},getSpacedPoints:function(e){void 0===e&&(e=5);for(var t=[],n=0;n<=e;n++)t.push(this.getPointAt(n/e));return t},getLength:function(){var e=this.getLengths();return e[e.length-1]},getLengths:function(e){if(void 0===e&&(e=this.arcLengthDivisions),this.cacheArcLengths&&this.cacheArcLengths.length===e+1&&!this.needsUpdate)return this.cacheArcLengths;this.needsUpdate=!1;var t,n,i=[],r=this.getPoint(0),a=0;for(i.push(0),n=1;n<=e;n++)a+=(t=this.getPoint(n/e)).distanceTo(r),i.push(a),r=t;return this.cacheArcLengths=i,i},updateArcLengths:function(){this.needsUpdate=!0,this.getLengths()},getUtoTmapping:function(e,t){var n,i=this.getLengths(),r=0,a=i.length;n=t||e*i[a-1];for(var o,s=0,c=a-1;s<=c;)if((o=i[r=Math.floor(s+(c-s)/2)]-n)<0)s=r+1;else{if(!(o>0)){c=r;break}c=r-1}if(i[r=c]===n)return r/(a-1);var l=i[r];return(r+(n-l)/(i[r+1]-l))/(a-1)},getTangent:function(e){var t=1e-4,n=e-t,i=e+t;n<0&&(n=0),i>1&&(i=1);var r=this.getPoint(n);return this.getPoint(i).clone().sub(r).normalize()},getTangentAt:function(e){var t=this.getUtoTmapping(e);return this.getTangent(t)},computeFrenetFrames:function(e,t){var n,i,r,a=new G,o=[],s=[],c=[],l=new G,h=new ie;for(n=0;n<=e;n++)i=n/e,o[n]=this.getTangentAt(i),o[n].normalize();s[0]=new G,c[0]=new G;var u=Number.MAX_VALUE,p=Math.abs(o[0].x),d=Math.abs(o[0].y),f=Math.abs(o[0].z);for(p<=u&&(u=p,a.set(1,0,0)),d<=u&&(u=d,a.set(0,1,0)),f<=u&&a.set(0,0,1),l.crossVectors(o[0],a).normalize(),s[0].crossVectors(o[0],l),c[0].crossVectors(o[0],s[0]),n=1;n<=e;n++)s[n]=s[n-1].clone(),c[n]=c[n-1].clone(),l.crossVectors(o[n-1],o[n]),l.length()>Number.EPSILON&&(l.normalize(),r=Math.acos(N.clamp(o[n-1].dot(o[n]),-1,1)),s[n].applyMatrix4(h.makeRotationAxis(l,r))),c[n].crossVectors(o[n],s[n]);if(!0===t)for(r=Math.acos(N.clamp(s[0].dot(s[e]),-1,1)),r/=e,o[0].dot(l.crossVectors(s[0],s[e]))>0&&(r=-r),n=1;n<=e;n++)s[n].applyMatrix4(h.makeRotationAxis(o[n],r*n)),c[n].crossVectors(o[n],s[n]);return{tangents:o,normals:s,binormals:c}},clone:function(){return(new this.constructor).copy(this)},copy:function(e){return this.arcLengthDivisions=e.arcLengthDivisions,this},toJSON:function(){var e={metadata:{version:4.5,type:"Curve",generator:"Curve.toJSON"}};return e.arcLengthDivisions=this.arcLengthDivisions,e.type=this.type,e},fromJSON:function(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}}),Ls.prototype=Object.create(As.prototype),Ls.prototype.constructor=Ls,Ls.prototype.isEllipseCurve=!0,Ls.prototype.getPoint=function(e,t){for(var n=t||new z,i=2*Math.PI,r=this.aEndAngle-this.aStartAngle,a=Math.abs(r)i;)r-=i;r0?0:(Math.floor(Math.abs(h)/c)+1)*c:0===u&&h===c-1&&(h=c-2,u=1),this.closed||h>0?n=s[(h-1)%c]:(Cs.subVectors(s[0],s[1]).add(s[0]),n=Cs),i=s[h%c],r=s[(h+1)%c],this.closed||h+2i.length-2?i.length-1:a+1],h=i[a>i.length-3?i.length-1:a+2];return n.set(zs(o,s.x,c.x,l.x,h.x),zs(o,s.y,c.y,l.y,h.y)),n},Ws.prototype.copy=function(e){As.prototype.copy.call(this,e),this.points=[];for(var t=0,n=e.points.length;t=t){var r=n[i]-t,a=this.curves[i],o=a.getLength(),s=0===o?0:1-r/o;return a.getPointAt(s)}i++}return null},getLength:function(){var e=this.getCurveLengths();return e[e.length-1]},updateArcLengths:function(){this.needsUpdate=!0,this.cacheLengths=null,this.getCurveLengths()},getCurveLengths:function(){if(this.cacheLengths&&this.cacheLengths.length===this.curves.length)return this.cacheLengths;for(var e=[],t=0,n=0,i=this.curves.length;n1&&!n[n.length-1].equals(n[0])&&n.push(n[0]),n},copy:function(e){As.prototype.copy.call(this,e),this.curves=[];for(var t=0,n=e.curves.length;t0){var l=c.getPoint(0);l.equals(this.currentPoint)||this.lineTo(l.x,l.y)}this.curves.push(c);var h=c.getPoint(1);return this.currentPoint.copy(h),this},copy:function(e){return Xs.prototype.copy.call(this,e),this.currentPoint.copy(e.currentPoint),this},toJSON:function(){var e=Xs.prototype.toJSON.call(this);return e.currentPoint=this.currentPoint.toArray(),e},fromJSON:function(e){return Xs.prototype.fromJSON.call(this,e),this.currentPoint.fromArray(e.currentPoint),this}}),Zs.prototype=Object.assign(Object.create(Ys.prototype),{constructor:Zs,getPointsHoles:function(e){for(var t=[],n=0,i=this.holes.length;n0){var a=new Ts(new vs(t));a.setCrossOrigin(this.crossOrigin);for(var o=0,s=e.length;o0?new Qr(o,s):new an(o,s);break;case"InstancedMesh":o=r(e.geometry),s=a(e.material);var c=e.count,l=e.instanceMatrix;(i=new sa(o,s,c)).instanceMatrix=new wt(new Float32Array(l.array),16);break;case"LOD":i=new Kr;break;case"Line":i=new fa(r(e.geometry),a(e.material),e.mode);break;case"LineLoop":i=new ya(r(e.geometry),a(e.material));break;case"LineSegments":i=new ga(r(e.geometry),a(e.material));break;case"PointCloud":case"Points":i=new Ta(r(e.geometry),a(e.material));break;case"Sprite":i=new Xr(a(e.material));break;case"Group":i=new Sr;break;default:i=new we}if(i.uuid=e.uuid,void 0!==e.name&&(i.name=e.name),void 0!==e.matrix?(i.matrix.fromArray(e.matrix),void 0!==e.matrixAutoUpdate&&(i.matrixAutoUpdate=e.matrixAutoUpdate),i.matrixAutoUpdate&&i.matrix.decompose(i.position,i.quaternion,i.scale)):(void 0!==e.position&&i.position.fromArray(e.position),void 0!==e.rotation&&i.rotation.fromArray(e.rotation),void 0!==e.quaternion&&i.quaternion.fromArray(e.quaternion),void 0!==e.scale&&i.scale.fromArray(e.scale)),void 0!==e.castShadow&&(i.castShadow=e.castShadow),void 0!==e.receiveShadow&&(i.receiveShadow=e.receiveShadow),e.shadow&&(void 0!==e.shadow.bias&&(i.shadow.bias=e.shadow.bias),void 0!==e.shadow.radius&&(i.shadow.radius=e.shadow.radius),void 0!==e.shadow.mapSize&&i.shadow.mapSize.fromArray(e.shadow.mapSize),void 0!==e.shadow.camera&&(i.shadow.camera=this.parseObject(e.shadow.camera))),void 0!==e.visible&&(i.visible=e.visible),void 0!==e.frustumCulled&&(i.frustumCulled=e.frustumCulled),void 0!==e.renderOrder&&(i.renderOrder=e.renderOrder),void 0!==e.userData&&(i.userData=e.userData),void 0!==e.layers&&(i.layers.mask=e.layers),void 0!==e.children)for(var h=e.children,u=0;uNumber.EPSILON){if(l<0&&(o=t[a],c=-c,s=t[r],l=-l),e.ys.y)continue;if(e.y===o.y){if(e.x===o.x)return!0}else{var h=l*(e.x-o.x)-c*(e.y-o.y);if(0===h)return!0;if(h<0)continue;i=!i}}else{if(e.y!==o.y)continue;if(s.x<=e.x&&e.x<=o.x||o.x<=e.x&&e.x<=s.x)return!0}}return i}var r=go.isClockWise,a=this.subPaths;if(0===a.length)return[];if(!0===t)return n(a);var o,s,c,l=[];if(1===a.length)return s=a[0],(c=new Zs).curves=s.curves,l.push(c),l;var h=!r(a[0].getPoints());h=e?!h:h;var u,p,d=[],f=[],m=[],v=0;f[v]=void 0,m[v]=[];for(var g=0,y=a.length;g1){for(var x=!1,b=[],w=0,_=f.length;w<_;w++)d[w]=[];for(w=0,_=f.length;w<_;w++)for(var M=m[w],T=0;T0&&(x||(m=d))}g=0;for(var L=f.length;g0){this.source.connect(this.filters[0]);for(var e=1,t=this.filters.length;e0){this.source.disconnect(this.filters[0]);for(var e=1,t=this.filters.length;e=.5)for(var a=0;a!==r;++a)e[t+a]=e[n+a]},_slerp:function(e,t,n,i){B.slerpFlat(e,t,e,t,e,n,i)},_lerp:function(e,t,n,i,r){for(var a=1-i,o=0;o!==r;++o){var s=t+o;e[s]=e[s]*a+e[n+o]*i}}});var Xc="\\[\\]\\.:\\/",Yc=new RegExp("["+Xc+"]","g"),Zc="[^"+Xc+"]",Jc="[^"+Xc.replace("\\.","")+"]",Kc=/((?:WC+[\/:])*)/.source.replace("WC",Zc),Qc=/(WCOD+)?/.source.replace("WCOD",Jc),$c=/(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace("WC",Zc),el=/\.(WC+)(?:\[(.+)\])?/.source.replace("WC",Zc),tl=new RegExp("^"+Kc+Qc+$c+el+"$"),nl=["material","materials","bones"];function il(e,t,n){var i=n||rl.parseTrackName(t);this._targetGroup=e,this._bindings=e.subscribe_(t,i)}function rl(e,t,n){this.path=t,this.parsedPath=n||rl.parseTrackName(t),this.node=rl.findNode(e,this.parsedPath.nodeName)||e,this.rootNode=e}function al(e,t,n){this._mixer=e,this._clip=t,this._localRoot=n||null;for(var i=t.tracks,r=i.length,a=new Array(r),o={endingStart:M,endingEnd:M},s=0;s!==r;++s){var c=i[s].createInterpolant(null);a[s]=c,c.settings=o}this._interpolantSettings=o,this._interpolants=a,this._propertyBindings=new Array(r),this._cacheIndex=null,this._byClipCacheIndex=null,this._timeScaleInterpolant=null,this._weightInterpolant=null,this.loop=2201,this._loopCount=-1,this._startTime=null,this.time=0,this.timeScale=1,this._effectiveTimeScale=1,this.weight=1,this._effectiveWeight=1,this.repetitions=1/0,this.paused=!1,this.enabled=!0,this.clampWhenFinished=!1,this.zeroSlopeAtStart=!0,this.zeroSlopeAtEnd=!0}function ol(e){this._root=e,this._initMemoryManager(),this._accuIndex=0,this.time=0,this.timeScale=1}function sl(e){"string"==typeof e&&(console.warn("THREE.Uniform: Type parameter is no longer needed."),e=arguments[1]),this.value=e}function cl(e,t,n){Rr.call(this,e,t),this.meshPerAttribute=n||1}function ll(e,t){return e.distance-t.distance}function hl(e,t,n,i){if(!1!==e.visible&&(e.raycast(t,n),!0===i))for(var r=e.children,a=0,o=r.length;a=t){var h=t++,u=e[h];n[u.uuid]=l,e[l]=u,n[c]=h,e[h]=s;for(var p=0,d=r;p!==d;++p){var f=i[p],m=f[h],v=f[l];f[l]=m,f[h]=v}}}this.nCachedObjects_=t},uncache:function(){for(var e=this._objects,t=e.length,n=this.nCachedObjects_,i=this._indicesByUUID,r=this._bindings,a=r.length,o=0,s=arguments.length;o!==s;++o){var c=arguments[o],l=c.uuid,h=i[l];if(void 0!==h)if(delete i[l],h0)for(var c=this._interpolants,l=this._propertyBindings,h=0,u=c.length;h!==u;++h)c[h].evaluate(o),l[h].accumulate(i,s)}else this._updateWeight(e)},_updateWeight:function(e){var t=0;if(this.enabled){t=this.weight;var n=this._weightInterpolant;if(null!==n){var i=n.evaluate(e)[0];t*=i,e>n.parameterPositions[1]&&(this.stopFading(),0===i&&(this.enabled=!1))}}return this._effectiveWeight=t,t},_updateTimeScale:function(e){var t=0;if(!this.paused){t=this.timeScale;var n=this._timeScaleInterpolant;null!==n&&(t*=n.evaluate(e)[0],e>n.parameterPositions[1]&&(this.stopWarping(),0===t?this.paused=!0:this.timeScale=t))}return this._effectiveTimeScale=t,t},_updateTime:function(e){var t=this.time+e,n=this._clip.duration,i=this.loop,r=this._loopCount,a=2202===i;if(0===e)return-1===r?t:a&&1==(1&r)?n-t:t;if(i===x){-1===r&&(this._loopCount=0,this._setEndings(!0,!0,!1));e:{if(t>=n)t=n;else{if(!(t<0)){this.time=t;break e}t=0}this.clampWhenFinished?this.paused=!0:this.enabled=!1,this.time=t,this._mixer.dispatchEvent({type:"finished",action:this,direction:e<0?-1:1})}}else{if(-1===r&&(e>=0?(r=0,this._setEndings(!0,0===this.repetitions,a)):this._setEndings(0===this.repetitions,!0,a)),t>=n||t<0){var o=Math.floor(t/n);t-=n*o,r+=Math.abs(o);var s=this.repetitions-r;if(s<=0)this.clampWhenFinished?this.paused=!0:this.enabled=!1,t=e>0?n:0,this.time=t,this._mixer.dispatchEvent({type:"finished",action:this,direction:e>0?1:-1});else{if(1===s){var c=e<0;this._setEndings(c,!c,a)}else this._setEndings(!1,!1,a);this._loopCount=r,this.time=t,this._mixer.dispatchEvent({type:"loop",action:this,loopDelta:o})}}else this.time=t;if(a&&1==(1&r))return n-t}return t},_setEndings:function(e,t,n){var i=this._interpolantSettings;n?(i.endingStart=T,i.endingEnd=T):(i.endingStart=e?this.zeroSlopeAtStart?T:M:S,i.endingEnd=t?this.zeroSlopeAtEnd?T:M:S)},_scheduleFading:function(e,t,n){var i=this._mixer,r=i.time,a=this._weightInterpolant;null===a&&(a=i._lendControlInterpolant(),this._weightInterpolant=a);var o=a.parameterPositions,s=a.sampleValues;return o[0]=r,s[0]=t,o[1]=r+e,s[1]=n,this}}),ol.prototype=Object.assign(Object.create(I.prototype),{constructor:ol,_bindAction:function(e,t){var n=e._localRoot||this._root,i=e._clip.tracks,r=i.length,a=e._propertyBindings,o=e._interpolants,s=n.uuid,c=this._bindingsByRootAndName,l=c[s];void 0===l&&(l={},c[s]=l);for(var h=0;h!==r;++h){var u=i[h],p=u.name,d=l[p];if(void 0!==d)a[h]=d;else{if(void 0!==(d=a[h])){null===d._cacheIndex&&(++d.referenceCount,this._addInactiveBinding(d,s,p));continue}var f=t&&t._propertyBindings[h].binding.parsedPath;++(d=new qc(rl.create(n,p,f),u.ValueTypeName,u.getValueSize())).referenceCount,this._addInactiveBinding(d,s,p),a[h]=d}o[h].resultBuffer=d.buffer}},_activateAction:function(e){if(!this._isActiveAction(e)){if(null===e._cacheIndex){var t=(e._localRoot||this._root).uuid,n=e._clip.uuid,i=this._actionsByClip[n];this._bindAction(e,i&&i.knownActions[0]),this._addInactiveAction(e,n,t)}for(var r=e._propertyBindings,a=0,o=r.length;a!==o;++a){var s=r[a];0==s.useCount++&&(this._lendBinding(s),s.saveOriginalState())}this._lendAction(e)}},_deactivateAction:function(e){if(this._isActiveAction(e)){for(var t=e._propertyBindings,n=0,i=t.length;n!==i;++n){var r=t[n];0==--r.useCount&&(r.restoreOriginalState(),this._takeBackBinding(r))}this._takeBackAction(e)}},_initMemoryManager:function(){this._actions=[],this._nActiveActions=0,this._actionsByClip={},this._bindings=[],this._nActiveBindings=0,this._bindingsByRootAndName={},this._controlInterpolants=[],this._nActiveControlInterpolants=0;var e=this;this.stats={actions:{get total(){return e._actions.length},get inUse(){return e._nActiveActions}},bindings:{get total(){return e._bindings.length},get inUse(){return e._nActiveBindings}},controlInterpolants:{get total(){return e._controlInterpolants.length},get inUse(){return e._nActiveControlInterpolants}}}},_isActiveAction:function(e){var t=e._cacheIndex;return null!==t&&tthis.max.x||e.ythis.max.y)},containsBox:function(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y},getParameter:function(e,t){return void 0===t&&(console.warn("THREE.Box2: .getParameter() target is now required"),t=new z),t.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y))},intersectsBox:function(e){return!(e.max.xthis.max.x||e.max.ythis.max.y)},clampPoint:function(e,t){return void 0===t&&(console.warn("THREE.Box2: .clampPoint() target is now required"),t=new z),t.copy(e).clamp(this.min,this.max)},distanceToPoint:function(e){return ul.copy(e).clamp(this.min,this.max).sub(e).length()},intersect:function(e){return this.min.max(e.min),this.max.min(e.max),this},union:function(e){return this.min.min(e.min),this.max.max(e.max),this},translate:function(e){return this.min.add(e),this.max.add(e),this},equals:function(e){return e.min.equals(this.min)&&e.max.equals(this.max)}});var dl=new G,fl=new G;function ml(e,t){this.start=void 0!==e?e:new G,this.end=void 0!==t?t:new G}function vl(e){we.call(this),this.material=e,this.render=function(){}}Object.assign(ml.prototype,{set:function(e,t){return this.start.copy(e),this.end.copy(t),this},clone:function(){return(new this.constructor).copy(this)},copy:function(e){return this.start.copy(e.start),this.end.copy(e.end),this},getCenter:function(e){return void 0===e&&(console.warn("THREE.Line3: .getCenter() target is now required"),e=new G),e.addVectors(this.start,this.end).multiplyScalar(.5)},delta:function(e){return void 0===e&&(console.warn("THREE.Line3: .delta() target is now required"),e=new G),e.subVectors(this.end,this.start)},distanceSq:function(){return this.start.distanceToSquared(this.end)},distance:function(){return this.start.distanceTo(this.end)},at:function(e,t){return void 0===t&&(console.warn("THREE.Line3: .at() target is now required"),t=new G),this.delta(t).multiplyScalar(e).add(this.start)},closestPointToPointParameter:function(e,t){dl.subVectors(e,this.start),fl.subVectors(this.end,this.start);var n=fl.dot(fl),i=fl.dot(dl)/n;return t&&(i=N.clamp(i,0,1)),i},closestPointToPoint:function(e,t,n){var i=this.closestPointToPointParameter(e,t);return void 0===n&&(console.warn("THREE.Line3: .closestPointToPoint() target is now required"),n=new G),this.delta(n).multiplyScalar(i).add(this.start)},applyMatrix4:function(e){return this.start.applyMatrix4(e),this.end.applyMatrix4(e),this},equals:function(e){return e.start.equals(this.start)&&e.end.equals(this.end)}}),vl.prototype=Object.create(we.prototype),vl.prototype.constructor=vl,vl.prototype.isImmediateRenderObject=!0;var gl=new G;function yl(e,t){we.call(this),this.light=e,this.light.updateMatrixWorld(),this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.color=t;for(var n=new Gt,i=[0,0,0,0,0,1,0,0,0,1,0,1,0,0,0,-1,0,1,0,0,0,0,1,1,0,0,0,0,-1,1],r=0,a=1;r<32;r++,a++){var o=r/32*Math.PI*2,s=a/32*Math.PI*2;i.push(Math.cos(o),Math.sin(o),1,Math.cos(s),Math.sin(s),1)}n.setAttribute("position",new Pt(i,3));var c=new ca({fog:!1});this.cone=new ga(n,c),this.add(this.cone),this.update()}yl.prototype=Object.create(we.prototype),yl.prototype.constructor=yl,yl.prototype.dispose=function(){this.cone.geometry.dispose(),this.cone.material.dispose()},yl.prototype.update=function(){this.light.updateMatrixWorld();var e=this.light.distance?this.light.distance:1e3,t=e*Math.tan(this.light.angle);this.cone.scale.set(t,t,e),gl.setFromMatrixPosition(this.light.target.matrixWorld),this.cone.lookAt(gl),void 0!==this.color?this.cone.material.color.set(this.color):this.cone.material.color.copy(this.light.color)};var xl=new G,bl=new ie,wl=new ie;function _l(e){var t=[];e&&e.isBone&&t.push(e);for(var n=0;n.99999)this.quaternion.set(0,0,0,1);else if(e.y<-.99999)this.quaternion.set(1,0,0,0);else{Wl.set(e.z,0,-e.x).normalize();var t=Math.acos(e.y);this.quaternion.setFromAxisAngle(Wl,t)}},ql.prototype.setLength=function(e,t,n){void 0===t&&(t=.2*e),void 0===n&&(n=.2*t),this.line.scale.set(1,Math.max(1e-4,e-t),1),this.line.updateMatrix(),this.cone.scale.set(n,t,n),this.cone.position.y=e,this.cone.updateMatrix()},ql.prototype.setColor=function(e){this.line.material.color.set(e),this.cone.material.color.set(e)},ql.prototype.copy=function(e){return we.prototype.copy.call(this,e,!1),this.line.copy(e.line),this.cone.copy(e.cone),this},ql.prototype.clone=function(){return(new this.constructor).copy(this)},Xl.prototype=Object.create(ga.prototype),Xl.prototype.constructor=Xl;var Yl,Zl=Math.pow(2,8),Jl=[.125,.215,.35,.446,.526,.582],Kl=5+Jl.length,Ql={[E]:0,[A]:1,[L]:2,3004:3,3005:4,3006:5,3007:6},$l=new ic,eh=(20,(Yl=new jo({defines:{n:20},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:new Float32Array(20)},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:new G(0,1,0)},inputEncoding:{value:Ql[3e3]},outputEncoding:{value:Ql[3e3]}},vertexShader:"\nprecision mediump float;\nprecision mediump int;\nattribute vec3 position;\nattribute vec2 uv;\nattribute float faceIndex;\nvarying vec3 vOutputDirection;\nvec3 getDirection(vec2 uv, float face) {\n\tuv = 2.0 * uv - 1.0;\n\tvec3 direction = vec3(uv, 1.0);\n\tif (face == 0.0) {\n\t\tdirection = direction.zyx;\n\t\tdirection.z *= -1.0;\n\t} else if (face == 1.0) {\n\t\tdirection = direction.xzy;\n\t\tdirection.z *= -1.0;\n\t} else if (face == 3.0) {\n\t\tdirection = direction.zyx;\n\t\tdirection.x *= -1.0;\n\t} else if (face == 4.0) {\n\t\tdirection = direction.xzy;\n\t\tdirection.y *= -1.0;\n\t} else if (face == 5.0) {\n\t\tdirection.xz *= -1.0;\n\t}\n\treturn direction;\n}\nvoid main() {\n\tvOutputDirection = getDirection(uv, faceIndex);\n\tgl_Position = vec4( position, 1.0 );\n}\n\t",fragmentShader:"\nprecision mediump float;\nprecision mediump int;\nvarying vec3 vOutputDirection;\nuniform sampler2D envMap;\nuniform int samples;\nuniform float weights[n];\nuniform bool latitudinal;\nuniform float dTheta;\nuniform float mipInt;\nuniform vec3 poleAxis;\n\n\nuniform int inputEncoding;\nuniform int outputEncoding;\n\n#include \n\nvec4 inputTexelToLinear(vec4 value){\n\tif(inputEncoding == 0){\n\t\treturn value;\n\t}else if(inputEncoding == 1){\n\t\treturn sRGBToLinear(value);\n\t}else if(inputEncoding == 2){\n\t\treturn RGBEToLinear(value);\n\t}else if(inputEncoding == 3){\n\t\treturn RGBMToLinear(value, 7.0);\n\t}else if(inputEncoding == 4){\n\t\treturn RGBMToLinear(value, 16.0);\n\t}else if(inputEncoding == 5){\n\t\treturn RGBDToLinear(value, 256.0);\n\t}else{\n\t\treturn GammaToLinear(value, 2.2);\n\t}\n}\n\nvec4 linearToOutputTexel(vec4 value){\n\tif(outputEncoding == 0){\n\t\treturn value;\n\t}else if(outputEncoding == 1){\n\t\treturn LinearTosRGB(value);\n\t}else if(outputEncoding == 2){\n\t\treturn LinearToRGBE(value);\n\t}else if(outputEncoding == 3){\n\t\treturn LinearToRGBM(value, 7.0);\n\t}else if(outputEncoding == 4){\n\t\treturn LinearToRGBM(value, 16.0);\n\t}else if(outputEncoding == 5){\n\t\treturn LinearToRGBD(value, 256.0);\n\t}else{\n\t\treturn LinearToGamma(value, 2.2);\n\t}\n}\n\nvec4 envMapTexelToLinear(vec4 color) {\n\treturn inputTexelToLinear(color);\n}\n\t\n\n#define ENVMAP_TYPE_CUBE_UV\n#include \n\nvoid main() {\n\tgl_FragColor = vec4(0.0);\n\tfor (int i = 0; i < n; i++) {\n\t\tif (i >= samples)\n\t\t\tbreak;\n\t\tfor (int dir = -1; dir < 2; dir += 2) {\n\t\t\tif (i == 0 && dir == 1)\n\t\t\t\tcontinue;\n\t\t\tvec3 axis = latitudinal ? poleAxis : cross(poleAxis, vOutputDirection);\n\t\t\tif (all(equal(axis, vec3(0.0))))\n\t\t\t\taxis = cross(vec3(0.0, 1.0, 0.0), vOutputDirection);\n\t\t\taxis = normalize(axis);\n\t\t\tfloat theta = dTheta * float(dir * i);\n\t\t\tfloat cosTheta = cos(theta);\n\t\t\t// Rodrigues' axis-angle rotation\n\t\t\tvec3 sampleDirection = vOutputDirection * cosTheta\n\t\t\t\t\t+ cross(axis, vOutputDirection) * sin(theta)\n\t\t\t\t\t+ axis * dot(axis, vOutputDirection) * (1.0 - cosTheta);\n\t\t\tgl_FragColor.rgb +=\n\t\t\t\t\tweights[i] * bilinearCubeUV(envMap, sampleDirection, mipInt);\n\t\t}\n\t}\n\tgl_FragColor = linearToOutputTexel(gl_FragColor);\n}\n\t\t",blending:0,depthTest:!1,depthWrite:!1})).type="SphericalGaussianBlur",Yl),th=null,nh=null,{_lodPlanes:ih,_sizeLods:rh,_sigmas:ah}=function(){for(var e=[],t=[],n=[],i=8,r=0;r4?o=Jl[r-8+4-1]:0==r&&(o=0),n.push(o);for(var s=1/(a-1),c=-s/2,l=1+s/2,h=[c,c,l,c,l,l,c,c,l,l,c,l],u=new Float32Array(108),p=new Float32Array(72),d=new Float32Array(36),f=0;f<6;f++){var m=f%3*2/3-1,v=f>2?0:-1,g=[m,v,0,m+2/3,v,0,m+2/3,v+1,0,m,v,0,m+2/3,v+1,0,m,v+1,0];u.set(g,18*f),p.set(h,12*f);var y=[f,f,f,f,f,f];d.set(y,6*f)}var x=new Gt;x.setAttribute("position",new wt(u,3)),x.setAttribute("uv",new wt(p,2)),x.setAttribute("faceIndex",new wt(d,1)),e.push(x),i>4&&i--}return{_lodPlanes:e,_sizeLods:t,_sigmas:n}}(),oh=null,sh=null,ch=(1+Math.sqrt(5))/2,lh=1/ch,hh=[new G(1,1,1),new G(-1,1,1),new G(1,1,-1),new G(-1,1,-1),new G(0,ch,lh),new G(0,ch,-lh),new G(lh,0,ch),new G(-lh,0,ch),new G(ch,lh,0),new G(-ch,lh,0)];function uh(e){sh=e,fh(eh)}function ph(e){var t={magFilter:a,minFilter:a,generateMipmaps:!1,type:e?e.type:h,format:e?e.format:1023,encoding:e?e.encoding:L,depthBuffer:!1,stencilBuffer:!1},n=mh(t);return n.depthBuffer=!e,oh=mh(t),n}function dh(){oh.dispose(),sh.setRenderTarget(null);var e=sh.getSize(new z);sh.setViewport(0,0,e.x,e.y)}function fh(e){var t=new _e;t.add(new an(ih[0],e)),sh.compile(t,$l)}function mh(e){var n=new Y(3*Zl,3*Zl,e);return n.texture.mapping=t,n.texture.name="PMREM.cubeUv",n.scissorTest=!0,n}function vh(e,t,n,i){var r=1/sh.getPixelRatio();e*=r,t*=r,n*=r,i*=r,sh.setViewport(e,t,n,i),sh.setScissor(e,t,n,i)}function gh(e){var t=sh.autoClear;sh.autoClear=!1;for(var n=1;n20&&console.warn(`sigmaRadians, ${r}, is too large and will clip, as it requested ${p} samples when the maximum is set to 20`);for(var d=[],f=0,m=0;m<20;++m){var v=m/u,g=Math.exp(-v*v/2);d.push(g),0==m?f+=g:m4?i-8+4:0));sh.setRenderTarget(t),vh(v,x,3*y,2*y),sh.render(s,$l)}function bh(){var e=new jo({uniforms:{envMap:{value:null},texelSize:{value:new z(1,1)},inputEncoding:{value:Ql[3e3]},outputEncoding:{value:Ql[3e3]}},vertexShader:"\nprecision mediump float;\nprecision mediump int;\nattribute vec3 position;\nattribute vec2 uv;\nattribute float faceIndex;\nvarying vec3 vOutputDirection;\nvec3 getDirection(vec2 uv, float face) {\n\tuv = 2.0 * uv - 1.0;\n\tvec3 direction = vec3(uv, 1.0);\n\tif (face == 0.0) {\n\t\tdirection = direction.zyx;\n\t\tdirection.z *= -1.0;\n\t} else if (face == 1.0) {\n\t\tdirection = direction.xzy;\n\t\tdirection.z *= -1.0;\n\t} else if (face == 3.0) {\n\t\tdirection = direction.zyx;\n\t\tdirection.x *= -1.0;\n\t} else if (face == 4.0) {\n\t\tdirection = direction.xzy;\n\t\tdirection.y *= -1.0;\n\t} else if (face == 5.0) {\n\t\tdirection.xz *= -1.0;\n\t}\n\treturn direction;\n}\nvoid main() {\n\tvOutputDirection = getDirection(uv, faceIndex);\n\tgl_Position = vec4( position, 1.0 );\n}\n\t",fragmentShader:"\nprecision mediump float;\nprecision mediump int;\nvarying vec3 vOutputDirection;\nuniform sampler2D envMap;\nuniform vec2 texelSize;\n\n\nuniform int inputEncoding;\nuniform int outputEncoding;\n\n#include \n\nvec4 inputTexelToLinear(vec4 value){\n\tif(inputEncoding == 0){\n\t\treturn value;\n\t}else if(inputEncoding == 1){\n\t\treturn sRGBToLinear(value);\n\t}else if(inputEncoding == 2){\n\t\treturn RGBEToLinear(value);\n\t}else if(inputEncoding == 3){\n\t\treturn RGBMToLinear(value, 7.0);\n\t}else if(inputEncoding == 4){\n\t\treturn RGBMToLinear(value, 16.0);\n\t}else if(inputEncoding == 5){\n\t\treturn RGBDToLinear(value, 256.0);\n\t}else{\n\t\treturn GammaToLinear(value, 2.2);\n\t}\n}\n\nvec4 linearToOutputTexel(vec4 value){\n\tif(outputEncoding == 0){\n\t\treturn value;\n\t}else if(outputEncoding == 1){\n\t\treturn LinearTosRGB(value);\n\t}else if(outputEncoding == 2){\n\t\treturn LinearToRGBE(value);\n\t}else if(outputEncoding == 3){\n\t\treturn LinearToRGBM(value, 7.0);\n\t}else if(outputEncoding == 4){\n\t\treturn LinearToRGBM(value, 16.0);\n\t}else if(outputEncoding == 5){\n\t\treturn LinearToRGBD(value, 256.0);\n\t}else{\n\t\treturn LinearToGamma(value, 2.2);\n\t}\n}\n\nvec4 envMapTexelToLinear(vec4 color) {\n\treturn inputTexelToLinear(color);\n}\n\t\n\n#define RECIPROCAL_PI 0.31830988618\n#define RECIPROCAL_PI2 0.15915494\n\nvoid main() {\n\tgl_FragColor = vec4(0.0);\n\tvec3 outputDirection = normalize(vOutputDirection);\n\tvec2 uv;\n\tuv.y = asin(clamp(outputDirection.y, -1.0, 1.0)) * RECIPROCAL_PI + 0.5;\n\tuv.x = atan(outputDirection.z, outputDirection.x) * RECIPROCAL_PI2 + 0.5;\n\tvec2 f = fract(uv / texelSize - 0.5);\n\tuv -= f * texelSize;\n\tvec3 tl = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\n\tuv.x += texelSize.x;\n\tvec3 tr = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\n\tuv.y += texelSize.y;\n\tvec3 br = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\n\tuv.x -= texelSize.x;\n\tvec3 bl = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\n\tvec3 tm = mix(tl, tr, f.x);\n\tvec3 bm = mix(bl, br, f.x);\n\tgl_FragColor.rgb = mix(tm, bm, f.y);\n\tgl_FragColor = linearToOutputTexel(gl_FragColor);\n}\n\t\t",blending:0,depthTest:!1,depthWrite:!1});return e.type="EquirectangularToCubeUV",e}function wh(){var e=new jo({uniforms:{envMap:{value:null},inputEncoding:{value:Ql[3e3]},outputEncoding:{value:Ql[3e3]}},vertexShader:"\nprecision mediump float;\nprecision mediump int;\nattribute vec3 position;\nattribute vec2 uv;\nattribute float faceIndex;\nvarying vec3 vOutputDirection;\nvec3 getDirection(vec2 uv, float face) {\n\tuv = 2.0 * uv - 1.0;\n\tvec3 direction = vec3(uv, 1.0);\n\tif (face == 0.0) {\n\t\tdirection = direction.zyx;\n\t\tdirection.z *= -1.0;\n\t} else if (face == 1.0) {\n\t\tdirection = direction.xzy;\n\t\tdirection.z *= -1.0;\n\t} else if (face == 3.0) {\n\t\tdirection = direction.zyx;\n\t\tdirection.x *= -1.0;\n\t} else if (face == 4.0) {\n\t\tdirection = direction.xzy;\n\t\tdirection.y *= -1.0;\n\t} else if (face == 5.0) {\n\t\tdirection.xz *= -1.0;\n\t}\n\treturn direction;\n}\nvoid main() {\n\tvOutputDirection = getDirection(uv, faceIndex);\n\tgl_Position = vec4( position, 1.0 );\n}\n\t",fragmentShader:"\nprecision mediump float;\nprecision mediump int;\nvarying vec3 vOutputDirection;\nuniform samplerCube envMap;\n\n\nuniform int inputEncoding;\nuniform int outputEncoding;\n\n#include \n\nvec4 inputTexelToLinear(vec4 value){\n\tif(inputEncoding == 0){\n\t\treturn value;\n\t}else if(inputEncoding == 1){\n\t\treturn sRGBToLinear(value);\n\t}else if(inputEncoding == 2){\n\t\treturn RGBEToLinear(value);\n\t}else if(inputEncoding == 3){\n\t\treturn RGBMToLinear(value, 7.0);\n\t}else if(inputEncoding == 4){\n\t\treturn RGBMToLinear(value, 16.0);\n\t}else if(inputEncoding == 5){\n\t\treturn RGBDToLinear(value, 256.0);\n\t}else{\n\t\treturn GammaToLinear(value, 2.2);\n\t}\n}\n\nvec4 linearToOutputTexel(vec4 value){\n\tif(outputEncoding == 0){\n\t\treturn value;\n\t}else if(outputEncoding == 1){\n\t\treturn LinearTosRGB(value);\n\t}else if(outputEncoding == 2){\n\t\treturn LinearToRGBE(value);\n\t}else if(outputEncoding == 3){\n\t\treturn LinearToRGBM(value, 7.0);\n\t}else if(outputEncoding == 4){\n\t\treturn LinearToRGBM(value, 16.0);\n\t}else if(outputEncoding == 5){\n\t\treturn LinearToRGBD(value, 256.0);\n\t}else{\n\t\treturn LinearToGamma(value, 2.2);\n\t}\n}\n\nvec4 envMapTexelToLinear(vec4 color) {\n\treturn inputTexelToLinear(color);\n}\n\t\n\nvoid main() {\n\tgl_FragColor = vec4(0.0);\n\tgl_FragColor.rgb = envMapTexelToLinear(textureCube(envMap, vec3( - vOutputDirection.x, vOutputDirection.yz ))).rgb;\n\tgl_FragColor = linearToOutputTexel(gl_FragColor);\n}\n\t\t",blending:0,depthTest:!1,depthWrite:!1});return e.type="CubemapToCubeUV",e}function _h(e){console.warn("THREE.Spline has been removed. Use THREE.CatmullRomCurve3 instead."),Ns.call(this,e),this.type="catmullrom"}uh.prototype={constructor:uh,fromScene:function(e,t=0,n=.1,i=100){var r=ph();return function(e,t,n,i){var r=new yn(90,1,t,n),a=[1,1,1,1,-1,1],o=[1,1,-1,-1,-1,1],s=sh.outputEncoding,c=sh.toneMapping,l=sh.toneMappingExposure,h=sh.getClearColor(),u=sh.getClearAlpha();sh.toneMapping=1,sh.toneMappingExposure=1,sh.outputEncoding=E,e.scale.z*=-1;var p=e.background;if(p&&p.isColor){p.convertSRGBToLinear();var d=Math.max(p.r,p.g,p.b),f=Math.min(Math.max(Math.ceil(Math.log2(d)),-128),127);p=p.multiplyScalar(Math.pow(2,-f));var m=(f+128)/255;sh.setClearColor(p,m),e.background=null}sh.setRenderTarget(i);for(var v=0;v<6;v++){var g=v%3;0==g?(r.up.set(0,a[v],0),r.lookAt(o[v],0,0)):1==g?(r.up.set(0,0,a[v]),r.lookAt(0,o[v],0)):(r.up.set(0,a[v],0),r.lookAt(0,0,o[v])),vh(g*Zl,v>2?Zl:0,Zl,Zl),sh.render(e,r)}sh.toneMapping=c,sh.toneMappingExposure=l,sh.outputEncoding=s,sh.setClearColor(h,u),e.scale.z*=-1}(e,n,i,r),t>0&&yh(r,0,0,t),gh(r),dh(),r.scissorTest=!1,r},fromEquirectangular:function(e){return e.magFilter=a,e.minFilter=a,e.generateMipmaps=!1,this.fromCubemap(e)},fromCubemap:function(e){var t=ph(e);return function(e,t){var n=new _e;e.isCubeTexture?null==nh&&(nh=wh()):null==th&&(th=bh());var i=e.isCubeTexture?nh:th;n.add(new an(ih[0],i));var r=i.uniforms;r.envMap.value=e,e.isCubeTexture||r.texelSize.value.set(1/e.image.width,1/e.image.height),r.inputEncoding.value=Ql[e.encoding],r.outputEncoding.value=Ql[e.encoding],sh.setRenderTarget(t),vh(0,0,3*Zl,2*Zl),sh.render(n,$l)}(e,t),gh(t),dh(),t.scissorTest=!1,t},compileCubemapShader:function(){null==nh&&fh(nh=wh())},compileEquirectangularShader:function(){null==th&&fh(th=bh())},dispose:function(){eh.dispose(),null!=nh&&nh.dispose(),null!=th&&th.dispose();for(var e=0;e=a+1e3&&(s.update(1e3*o/(e-a),100),a=e,o=0,l)){var t=performance.memory;l.update(t.usedJSHeapSize/1048576,t.jsHeapSizeLimit/1048576)}return e},update:function(){r=this.end()},domElement:t,setMode:i}};Mh.Panel=function(e,t,n){var i=1/0,r=0,a=Math.round,o=a(window.devicePixelRatio||1),s=80*o,c=48*o,l=3*o,h=2*o,u=3*o,p=15*o,d=74*o,f=30*o,m=document.createElement("canvas");m.width=s,m.height=c,m.style.cssText="width:80px;height:48px";var v=m.getContext("2d");return v.font="bold "+9*o+"px Helvetica,Arial,sans-serif",v.textBaseline="top",v.fillStyle=n,v.fillRect(0,0,s,c),v.fillStyle=t,v.fillText(e,l,h),v.fillRect(u,p,d,f),v.fillStyle=n,v.globalAlpha=.9,v.fillRect(u,p,d,f),{dom:m,update:function(c,g){i=Math.min(i,c),r=Math.max(r,c),v.fillStyle=n,v.globalAlpha=1,v.fillRect(0,0,s,p),v.fillStyle=t,v.fillText(a(c)+" "+e+" ("+a(i)+"-"+a(r)+")",l,h),v.drawImage(m,u+o,p,d-o,f,u,p,d-o,f),v.fillRect(u+d-o,p,o,f),v.fillStyle=n,v.globalAlpha=.9,v.fillRect(u+d-o,p,o,a((1-c/g)*f))}}};var Th={},Sh=void 0,Eh=Th;function Ah(e,t){var n,i=e.split("."),r=Eh;!(i[0]in r)&&r.execScript&&r.execScript("var "+i[0]);for(;i.length&&(n=i.shift());)i.length||t===Sh?r=r[n]?r[n]:r[n]={}:r[n]=t}var Lh="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Uint32Array&&"undefined"!=typeof DataView;function Ph(e){var t,n,i,r,a,o,s,c,l,h,u=e.length,p=0,d=Number.POSITIVE_INFINITY;for(c=0;cp&&(p=e[c]),e[c]>=1;for(h=i<<16|c,l=o;l>>=1){case 0:var t=this.input,n=this.a,i=this.c,r=this.b,a=t.length,o=Sh,s=i.length,c=Sh;if(this.d=this.f=0,n+1>=a)throw Error("invalid uncompressed block header: LEN");if(o=t[n++]|t[n++]<<8,n+1>=a)throw Error("invalid uncompressed block header: NLEN");if(o===~(t[n++]|t[n++]<<8))throw Error("invalid uncompressed block header: length verify");if(n+o>t.length)throw Error("input buffer is broken");switch(this.i){case Ch:for(;r+o>i.length;){if(o-=c=s-r,Lh)i.set(t.subarray(n,n+c),r),r+=c,n+=c;else for(;c--;)i[r++]=t[n++];this.b=r,i=this.e(),r=this.b}break;case Ih:for(;r+o>i.length;)i=this.e({p:2});break;default:throw Error("invalid inflate mode")}if(Lh)i.set(t.subarray(n,n+o),r),r+=o,n+=o;else for(;o--;)i[r++]=t[n++];this.a=n,this.b=r,this.c=i;break;case 1:this.j(Zh,Kh);break;case 2:var l,h,u,p,d=Qh(this,5)+257,f=Qh(this,5)+1,m=Qh(this,4)+4,v=new(Lh?Uint8Array:Array)(Bh.length),g=Sh,y=Sh,x=Sh,b=Sh,w=Sh;for(w=0;w=Dh?8:255>=Dh?9:279>=Dh?7:8;var Xh,Yh,Zh=Ph(qh),Jh=new(Lh?Uint8Array:Array)(30);for(Xh=0,Yh=Jh.length;Xh=s)throw Error("input buffer is broken");i|=a[o++]<>>t,e.d=r-t,e.a=o,n}function $h(e,t){for(var n,i,r=e.f,a=e.d,o=e.input,s=e.a,c=o.length,l=t[0],h=t[1];a=c);)r|=o[s++]<>>16)>a)throw Error("invalid code length: "+i);return e.f=r>>i,e.d=a-i,e.a=s,65535&n}function eu(e,t){var n,i;if(this.input=e,this.a=0,!t&&(t={})||(t.index&&(this.a=t.index),t.verify&&(this.A=t.verify)),n=e[this.a++],i=e[this.a++],(15&n)!==tu)throw Error("unsupported compression method");if(this.method=tu,0!=((n<<8)+i)%31)throw Error("invalid fcheck flag:"+((n<<8)+i)%31);if(32&i)throw Error("fdict flag is not supported");this.q=new Rh(e,{index:this.a,bufferSize:t.bufferSize,bufferType:t.bufferType,resize:t.resize})}Rh.prototype.j=function(e,t){var n=this.c,i=this.b;this.o=e;for(var r,a,o,s,c=n.length-258;256!==(r=$h(this,e));)if(256>r)i>=c&&(this.b=i,n=this.e(),i=this.b),n[i++]=r;else for(s=Uh[a=r-257],0=c&&(this.b=i,n=this.e(),i=this.b);s--;)n[i]=n[i++-o];for(;8<=this.d;)this.d-=8,this.a--;this.b=i},Rh.prototype.w=function(e,t){var n=this.c,i=this.b;this.o=e;for(var r,a,o,s,c=n.length;256!==(r=$h(this,e));)if(256>r)i>=c&&(c=(n=this.e()).length),n[i++]=r;else for(s=Uh[a=r-257],0c&&(c=(n=this.e()).length);s--;)n[i]=n[i++-o];for(;8<=this.d;)this.d-=8,this.a--;this.b=i},Rh.prototype.e=function(){var e,t,n=new(Lh?Uint8Array:Array)(this.b-32768),i=this.b-32768,r=this.c;if(Lh)n.set(r.subarray(32768,n.length));else for(e=0,t=n.length;ee;++e)r[e]=r[i+e];return this.b=32768,r},Rh.prototype.z=function(e){var t,n,i,r=this.input.length/this.a+1|0,a=this.input,o=this.c;return e&&("number"==typeof e.p&&(r=e.p),"number"==typeof e.u&&(r+=e.u)),n=2>r?(i=(a.length-this.a)/this.o[2]/2*258|0)t&&(this.c.length=t),e=this.c),this.buffer=e},eu.prototype.k=function(){var e,t,n=this.input;if(e=this.q.k(),this.a=this.q.a,this.A){t=(n[this.a++]<<24|n[this.a++]<<16|n[this.a++]<<8|n[this.a++])>>>0;var i=e;if("string"==typeof i){var r,a,o=i.split("");for(r=0,a=o.length;r>>0;i=o}for(var s,c=1,l=0,h=i.length,u=0;0>>0)throw Error("invalid adler-32 checksum")}return e};var tu=8;Ah("Zlib.Inflate",eu),Ah("Zlib.Inflate.prototype.decompress",eu.prototype.k);var nu,iu,ru,au,ou={ADAPTIVE:Oh.s,BLOCK:Oh.t};if(Object.keys)nu=Object.keys(ou);else for(iu in nu=[],ru=0,ou)nu[ru++]=iu;for(ru=0,au=nu.length;ru=n[i])return i-1;if(t<=n[e])return e;for(var r=e,a=i,o=Math.floor((r+a)/2);t=n[o+1];)t=b&&(x[y][0]=x[g][0]/c[M+1][_],w=x[y][0]*c[_][M]);var T=d-1<=M?b-1:n-d;for(u=_>=-1?1:-_;u<=T;++u)x[y][u]=(x[g][u]-x[g][u-1])/c[M+1][_+u],w+=x[y][u]*c[_+u][M];d<=M&&(x[y][b]=-x[g][b-1]/c[M+1][d],w+=x[y][b]*c[d][M]),s[b][d]=w,u=g,g=y,y=u}}for(d=n,b=1;b<=i;++b){for(u=0;u<=n;++u)s[b][u]*=d;d*=n-b}return s},calcBSplineDerivatives:function(e,t,n,i,r){for(var a=r=a.length&&a===_(r,0,a.length))e=(new h).parse(t);else{var i=_(t);if(!function(e){var t,n,i=["K","a","y","d","a","r","a","\\","F","B","X","\\","B","i","n","a","r","y","\\","\\"],r=0;for(var a=0;a0,s="string"==typeof a.Content&&""!==a.Content;if(o||s){var c=this.parseImage(i[r]);n[a.RelativeFilename||a.Filename]=c}}}}for(var l in t){var h=t[l];void 0!==n[h]?t[l]=n[h]:t[l]=t[l].split("\\").pop()}return t},parseImage:function(e){var t,n=e.Content,i=e.RelativeFilename||e.Filename,r=i.slice(i.lastIndexOf(".")+1).toLowerCase();switch(r){case"bmp":t="image/bmp";break;case"jpg":case"jpeg":t="image/jpeg";break;case"png":t="image/png";break;case"tif":t="image/tiff";break;case"tga":null===this.manager.getHandler(".tga")&&console.warn("FBXLoader: TGA loader not found, skipping ",i),t="image/tga";break;default:return void console.warn('FBXLoader: Image type "'+r+'" is not supported.')}if("string"==typeof n)return"data:"+t+";base64,"+n;var a=new Uint8Array(n);return window.URL.createObjectURL(new Blob([a],{type:t}))},parseTextures:function(t){var n=new Map;if("Texture"in e.Objects){var i=e.Objects.Texture;for(var r in i){var a=this.parseTexture(i[r],t);n.set(parseInt(r),a)}}return n},parseTexture:function(e,t){var r=this.loadTexture(e,t);r.ID=e.id,r.name=e.attrName;var a=e.WrapModeU,o=e.WrapModeV,s=void 0!==a?a.value:0,c=void 0!==o?o.value:0;if(r.wrapS=0===s?n:i,r.wrapT=0===c?n:i,"Scaling"in e){var l=e.Scaling.value;r.repeat.x=l[0],r.repeat.y=l[1]}return r},loadTexture:function(e,n){var i,r,a=this.textureLoader.path,o=t.get(e.id).children;void 0!==o&&o.length>0&&void 0!==n[o[0].ID]&&(0!==(i=n[o[0].ID]).indexOf("blob:")&&0!==i.indexOf("data:")||this.textureLoader.setPath(void 0));var s=e.FileName.slice(-3).toLowerCase();if("tga"===s){var c=this.manager.getHandler(".tga");null===c?(console.warn("FBXLoader: TGA loader not found, creating placeholder texture for",e.RelativeFilename),r=new q):r=c.load(i)}else"psd"===s?(console.warn("FBXLoader: PSD textures are not supported, creating placeholder texture for",e.RelativeFilename),r=new q):r=this.textureLoader.load(i);return this.textureLoader.setPath(a),r},parseMaterials:function(t){var n=new Map;if("Material"in e.Objects){var i=e.Objects.Material;for(var r in i){var a=this.parseMaterial(i[r],t);null!==a&&n.set(parseInt(r),a)}}return n},parseMaterial:function(e,n){var i=e.id,r=e.attrName,a=e.ShadingModel;if("object"==typeof a&&(a=a.value),!t.has(i))return null;var o,s=this.parseParameters(e,n,i);switch(a.toLowerCase()){case"phong":o=new Xo;break;case"lambert":o=new Jo;break;default:console.warn('THREE.FBXLoader: unknown material type "%s". Defaulting to MeshPhongMaterial.',a),o=new Xo}return o.setValues(s),o.name=r,o},parseParameters:function(e,n,i){var r={};e.BumpFactor&&(r.bumpScale=e.BumpFactor.value),e.Diffuse?r.color=(new pt).fromArray(e.Diffuse.value):e.DiffuseColor&&"Color"===e.DiffuseColor.type&&(r.color=(new pt).fromArray(e.DiffuseColor.value)),e.DisplacementFactor&&(r.displacementScale=e.DisplacementFactor.value),e.Emissive?r.emissive=(new pt).fromArray(e.Emissive.value):e.EmissiveColor&&"Color"===e.EmissiveColor.type&&(r.emissive=(new pt).fromArray(e.EmissiveColor.value)),e.EmissiveFactor&&(r.emissiveIntensity=parseFloat(e.EmissiveFactor.value)),e.Opacity&&(r.opacity=parseFloat(e.Opacity.value)),r.opacity<1&&(r.transparent=!0),e.ReflectionFactor&&(r.reflectivity=e.ReflectionFactor.value),e.Shininess&&(r.shininess=e.Shininess.value),e.Specular?r.specular=(new pt).fromArray(e.Specular.value):e.SpecularColor&&"Color"===e.SpecularColor.type&&(r.specular=(new pt).fromArray(e.SpecularColor.value));var a=this;return t.get(i).children.forEach((function(e){var t=e.relationship;switch(t){case"Bump":r.bumpMap=a.getTexture(n,e.ID);break;case"Maya|TEX_ao_map":r.aoMap=a.getTexture(n,e.ID);break;case"DiffuseColor":case"Maya|TEX_color_map":r.map=a.getTexture(n,e.ID),r.map.encoding=A;break;case"DisplacementColor":r.displacementMap=a.getTexture(n,e.ID);break;case"EmissiveColor":r.emissiveMap=a.getTexture(n,e.ID),r.emissiveMap.encoding=A;break;case"NormalMap":case"Maya|TEX_normal_map":r.normalMap=a.getTexture(n,e.ID);break;case"ReflectionColor":r.envMap=a.getTexture(n,e.ID),r.envMap.mapping=303,r.envMap.encoding=A;break;case"SpecularColor":r.specularMap=a.getTexture(n,e.ID),r.specularMap.encoding=A;break;case"TransparentColor":r.alphaMap=a.getTexture(n,e.ID),r.transparent=!0;break;default:console.warn("THREE.FBXLoader: %s map is not supported in three.js, skipping texture.",t)}})),r},getTexture:function(n,i){return"LayeredTexture"in e.Objects&&i in e.Objects.LayeredTexture&&(console.warn("THREE.FBXLoader: layered textures are not supported in three.js. Discarding all but first layer."),i=t.get(i).children[0].ID),n.get(i)},parseDeformers:function(){var n={},i={};if("Deformer"in e.Objects){var r=e.Objects.Deformer;for(var a in r){var o=r[a],s=t.get(parseInt(a));if("Skin"===o.attrType){var c=this.parseSkeleton(s,r);c.ID=a,s.parents.length>1&&console.warn("THREE.FBXLoader: skeleton attached to more than one geometry is not supported."),c.geometryID=s.parents[0].ID,n[a]=c}else if("BlendShape"===o.attrType){var l={id:a};l.rawTargets=this.parseMorphTargets(s,r),l.id=a,s.parents.length>1&&console.warn("THREE.FBXLoader: morph target attached to more than one geometry is not supported."),i[a]=l}}}return{skeletons:n,morphTargets:i}},parseSkeleton:function(e,t){var n=[];return e.children.forEach((function(e){var i=t[e.ID];if("Cluster"===i.attrType){var r={ID:e.ID,indices:[],weights:[],transformLink:(new ie).fromArray(i.TransformLink.a)};"Indexes"in i&&(r.indices=i.Indexes.a,r.weights=i.Weights.a),n.push(r)}})),{rawBones:n,bones:[]}},parseMorphTargets:function(e,n){for(var i=[],r=0;r1?a=o:o.length>0?a=o[0]:(a=new Xo({color:13421772}),o.push(a)),"color"in r.attributes&&o.forEach((function(e){e.vertexColors=2})),r.FBX_Deformer?(o.forEach((function(e){e.skinning=!0})),(i=new Qr(r,a)).normalizeSkinWeights()):i=new an(r,a),i},createCurve:function(e,t){return new fa(e.children.reduce((function(e,n){return t.has(n.ID)&&(e=t.get(n.ID)),e}),null),new ca({color:3342591,linewidth:1}))},getTransformData:function(e,t){var n={};"InheritType"in t&&(n.inheritType=parseInt(t.InheritType.value)),n.eulerOrder="RotationOrder"in t?b(t.RotationOrder.value):"ZYX","Lcl_Translation"in t&&(n.translation=t.Lcl_Translation.value),"PreRotation"in t&&(n.preRotation=t.PreRotation.value),"Lcl_Rotation"in t&&(n.rotation=t.Lcl_Rotation.value),"PostRotation"in t&&(n.postRotation=t.PostRotation.value),"Lcl_Scaling"in t&&(n.scale=t.Lcl_Scaling.value),"ScalingOffset"in t&&(n.scalingOffset=t.ScalingOffset.value),"ScalingPivot"in t&&(n.scalingPivot=t.ScalingPivot.value),"RotationOffset"in t&&(n.rotationOffset=t.RotationOffset.value),"RotationPivot"in t&&(n.rotationPivot=t.RotationPivot.value),e.userData.transformData=n},setLookAtProperties:function(n,i){"LookAtProperty"in i&&t.get(n.ID).children.forEach((function(t){if("LookAtProperty"===t.relationship){var i=e.Objects.Model[t.ID];if("Lcl_Translation"in i){var a=i.Lcl_Translation.value;void 0!==n.target?(n.target.position.fromArray(a),r.add(n.target)):n.lookAt((new G).fromArray(a))}}}))},bindSkeleton:function(e,n,i){var r=this.parsePoseNodes();for(var a in e){var o=e[a];t.get(parseInt(o.ID)).parents.forEach((function(e){if(n.has(e.ID)){var a=e.ID;t.get(a).parents.forEach((function(e){i.has(e.ID)&&i.get(e.ID).bind(new ta(o.bones),r[e.ID])}))}}))}},parsePoseNodes:function(){var t={};if("Pose"in e.Objects){var n=e.Objects.Pose;for(var i in n)if("BindPose"===n[i].attrType){var r=n[i].PoseNode;Array.isArray(r)?r.forEach((function(e){t[e.Node]=(new ie).fromArray(e.Matrix.a)})):t[r.Node]=(new ie).fromArray(r.Matrix.a)}}return t},createAmbientLight:function(){if("GlobalSettings"in e&&"AmbientColor"in e.GlobalSettings){var t=e.GlobalSettings.AmbientColor.value,n=t[0],i=t[1],a=t[2];if(0!==n||0!==i||0!==a){var o=new pt(n,i,a);r.add(new oc(o,1))}}},setupMorphMaterials:function(){var e=this;r.traverse((function(t){t.isMesh&&t.geometry.morphAttributes.position&&t.geometry.morphAttributes.position.length&&(Array.isArray(t.material)?t.material.forEach((function(n,i){e.setupMorphMaterial(t,n,i)})):e.setupMorphMaterial(t,t.material))}))},setupMorphMaterial:function(e,t,n){var i=e.uuid,a=t.uuid,o=!1;if(r.traverse((function(e){e.isMesh&&(Array.isArray(e.material)?e.material.forEach((function(t){t.uuid===a&&e.uuid!==i&&(o=!0)})):e.material.uuid===a&&e.uuid!==i&&(o=!0))})),!0===o){var s=t.clone();s.morphTargets=!0,void 0===n?e.material=s:e.material[n]=s}else t.morphTargets=!0}},s.prototype={constructor:s,parse:function(n){var i=new Map;if("Geometry"in e.Objects){var r=e.Objects.Geometry;for(var a in r){var o=t.get(parseInt(a)),s=this.parseGeometry(o,r[a],n);i.set(parseInt(a),s)}}return i},parseGeometry:function(e,t,n){switch(t.attrType){case"Mesh":return this.parseMeshGeometry(e,t,n);case"NurbsCurve":return this.parseNurbsGeometry(t)}},parseMeshGeometry:function(t,n,i){var r=i.skeletons,a=[],o=t.parents.map((function(t){return e.Objects.Model[t.ID]}));if(0!==o.length){var s=t.children.reduce((function(e,t){return void 0!==r[t.ID]&&(e=r[t.ID]),e}),null);t.children.forEach((function(e){void 0!==i.morphTargets[e.ID]&&a.push(i.morphTargets[e.ID])}));var c=o[0],l={};"RotationOrder"in c&&(l.eulerOrder=b(c.RotationOrder.value)),"InheritType"in c&&(l.inheritType=parseInt(c.InheritType.value)),"GeometricTranslation"in c&&(l.translation=c.GeometricTranslation.value),"GeometricRotation"in c&&(l.rotation=c.GeometricRotation.value),"GeometricScaling"in c&&(l.scale=c.GeometricScaling.value);var h=x(l);return this.genGeometry(n,s,a,h)}},genGeometry:function(e,t,n,i){var r=new Gt;e.attrName&&(r.name=e.attrName);var a=this.parseGeoNode(e,t),o=this.genBuffers(a),s=new Pt(o.vertex,3);if(s.applyMatrix4(i),r.setAttribute("position",s),o.colors.length>0&&r.setAttribute("color",new Pt(o.colors,3)),t&&(r.setAttribute("skinIndex",new Et(o.weightsIndices,4)),r.setAttribute("skinWeight",new Pt(o.vertexWeights,4)),r.FBX_Deformer=t),o.normal.length>0){var c=(new k).getNormalMatrix(i),l=new Pt(o.normal,3);l.applyNormalMatrix(c),r.setAttribute("normal",l)}if(o.uvs.forEach((function(e,t){var n="uv"+(t+1).toString();0===t&&(n="uv"),r.setAttribute(n,new Pt(o.uvs[t],2))})),a.material&&"AllSame"!==a.material.mappingType){var h=o.materialIndex[0],u=0;if(o.materialIndex.forEach((function(e,t){e!==h&&(r.addGroup(u,t-u,h),h=e,u=t)})),r.groups.length>0){var p=r.groups[r.groups.length-1],d=p.start+p.count;d!==o.materialIndex.length&&r.addGroup(d,o.materialIndex.length-d,h)}0===r.groups.length&&r.addGroup(0,o.materialIndex.length,o.materialIndex[0])}return this.addMorphTargets(r,e,n,i),r},parseGeoNode:function(e,t){var n={};if(n.vertexPositions=void 0!==e.Vertices?e.Vertices.a:[],n.vertexIndices=void 0!==e.PolygonVertexIndex?e.PolygonVertexIndex.a:[],e.LayerElementColor&&(n.color=this.parseVertexColors(e.LayerElementColor[0])),e.LayerElementMaterial&&(n.material=this.parseMaterialIndices(e.LayerElementMaterial[0])),e.LayerElementNormal&&(n.normal=this.parseNormals(e.LayerElementNormal[0])),e.LayerElementUV){n.uv=[];for(var i=0;e.LayerElementUV[i];)n.uv.push(this.parseUVs(e.LayerElementUV[i])),i++}return n.weightTable={},null!==t&&(n.skeleton=t,t.rawBones.forEach((function(e,t){e.indices.forEach((function(i,r){void 0===n.weightTable[i]&&(n.weightTable[i]=[]),n.weightTable[i].push({id:t,weight:e.weights[r]})}))}))),n},genBuffers:function(e){var t={vertex:[],normal:[],colors:[],uvs:[],materialIndex:[],vertexWeights:[],weightsIndices:[]},n=0,i=0,r=!1,a=[],o=[],s=[],c=[],l=[],h=[],u=this;return e.vertexIndices.forEach((function(p,d){var f=!1;p<0&&(p^=-1,f=!0);var m=[],g=[];if(a.push(3*p,3*p+1,3*p+2),e.color){var y=v(d,n,p,e.color);s.push(y[0],y[1],y[2])}if(e.skeleton){if(void 0!==e.weightTable[p]&&e.weightTable[p].forEach((function(e){g.push(e.weight),m.push(e.id)})),g.length>4){r||(console.warn("THREE.FBXLoader: Vertex has more than 4 skinning weights assigned to vertex. Deleting additional weights."),r=!0);var x=[0,0,0,0],b=[0,0,0,0];g.forEach((function(e,t){var n=e,i=m[t];b.forEach((function(e,t,r){if(n>e){r[t]=n,n=e;var a=x[t];x[t]=i,i=a}}))})),m=x,g=b}for(;g.length<4;)g.push(0),m.push(0);for(var w=0;w<4;++w)l.push(g[w]),h.push(m[w])}if(e.normal&&(y=v(d,n,p,e.normal),o.push(y[0],y[1],y[2])),e.material&&"AllSame"!==e.material.mappingType)var _=v(d,n,p,e.material)[0];e.uv&&e.uv.forEach((function(e,t){var i=v(d,n,p,e);void 0===c[t]&&(c[t]=[]),c[t].push(i[0]),c[t].push(i[1])})),i++,f&&(u.genFace(t,e,a,_,o,s,c,l,h,i),n++,i=0,a=[],o=[],s=[],c=[],l=[],h=[])})),t},genFace:function(e,t,n,i,r,a,o,s,c,l){for(var h=2;h1&&console.warn("THREE.FBXLoader: Encountered an animation stack with multiple layers, this is currently not supported. Ignoring subsequent layers.");var s=n.get(o[0].ID);r[a]={name:i[a].attrName,layer:s}}return r},addClip:function(e){var t=[],n=this;return e.layer.forEach((function(e){t=t.concat(n.generateTracks(e))})),new ds(e.name,-1,t)},generateTracks:function(e){var t=[],n=new G,i=new B,r=new G;if(e.transform&&e.transform.decompose(n,i,r),n=n.toArray(),i=(new oe).setFromQuaternion(i,e.eulerOrder).toArray(),r=r.toArray(),void 0!==e.T&&Object.keys(e.T.curves).length>0){var a=this.generateVectorTrack(e.modelName,e.T.curves,n,"position");void 0!==a&&t.push(a)}if(void 0!==e.R&&Object.keys(e.R.curves).length>0){var o=this.generateRotationTrack(e.modelName,e.R.curves,i,e.preRotation,e.postRotation,e.eulerOrder);void 0!==o&&t.push(o)}if(void 0!==e.S&&Object.keys(e.S.curves).length>0){var s=this.generateVectorTrack(e.modelName,e.S.curves,r,"scale");void 0!==s&&t.push(s)}if(void 0!==e.DeformPercent){var c=this.generateMorphTrack(e);void 0!==c&&t.push(c)}return t},generateVectorTrack:function(e,t,n,i){var r=this.getTimesForAllAxes(t);return new ps(e+"."+i,r,this.getKeyframeTrackValues(r,t,n))},generateRotationTrack:function(e,t,n,i,r,a){void 0!==t.x&&(this.interpolateRotations(t.x),t.x.values=t.x.values.map(N.degToRad)),void 0!==t.y&&(this.interpolateRotations(t.y),t.y.values=t.y.values.map(N.degToRad)),void 0!==t.z&&(this.interpolateRotations(t.z),t.z.values=t.z.values.map(N.degToRad));var o=this.getTimesForAllAxes(t),s=this.getKeyframeTrackValues(o,t,n);void 0!==i&&((i=i.map(N.degToRad)).push(a),i=(new oe).fromArray(i),i=(new B).setFromEuler(i)),void 0!==r&&((r=r.map(N.degToRad)).push(a),r=(new oe).fromArray(r),r=(new B).setFromEuler(r).inverse());for(var c=new B,l=new oe,h=[],u=0;u=180){for(var a=r/180,o=i/a,s=n+o,c=e.times[t-1],l=(e.times[t]-c)/a,h=c+l,u=[],p=[];h1&&(n=e[1].replace(/^(\w+)::/,""),i=e[2]),{id:t,name:n,type:i}},parseNodeProperty:function(e,t,n){var i=t[1].replace(/^"/,"").replace(/"$/,"").trim(),r=t[2].replace(/^"/,"").replace(/"$/,"").trim();"Content"===i&&","===r&&(r=n.replace(/"/g,"").replace(/,$/,"").trim());var a=this.getCurrentNode();if("Properties70"!==a.name){if("C"===i){var o=r.split(",").slice(1),s=parseInt(o[0]),c=parseInt(o[1]),l=r.split(",").slice(3);i="connections",function(e,t){for(var n=0,i=e.length,r=t.length;n=e.size():e.getOffset()+160+16>=e.size()},parseNode:function(e,t){var n={},i=t>=7500?e.getUint64():e.getUint32(),r=t>=7500?e.getUint64():e.getUint32(),a=(t>=7500?e.getUint64():e.getUint32(),e.getUint8()),o=e.getString(a);if(0===i)return null;for(var s=[],c=0;c0?s[0]:"",h=s.length>1?s[1]:"",u=s.length>2?s[2]:"";for(n.singleProperty=1===r&&e.getOffset()===i;i>e.getOffset();){var p=this.parseNode(e,t);null!==p&&this.parseSubNode(o,n,p)}return n.propertyList=s,"number"==typeof l&&(n.id=l),""!==h&&(n.attrName=h),""!==u&&(n.attrType=u),""!==o&&(n.name=o),n},parseSubNode:function(e,t,n){if(!0===n.singleProperty){var i=n.propertyList[0];Array.isArray(i)?(t[n.name]=n,n.a=i):t[n.name]=i}else if("Connections"===e&&"C"===n.name){var r=[];n.propertyList.forEach((function(e,t){0!==t&&r.push(e)})),void 0===t.connections&&(t.connections=[]),t.connections.push(r)}else if("Properties70"===n.name)Object.keys(n).forEach((function(e){t[e]=n[e]}));else if("Properties70"===e&&"P"===n.name){var a,o=n.propertyList[0],s=n.propertyList[1],c=n.propertyList[2],l=n.propertyList[3];0===o.indexOf("Lcl ")&&(o=o.replace("Lcl ","Lcl_")),0===s.indexOf("Lcl ")&&(s=s.replace("Lcl ","Lcl_")),a="Color"===s||"ColorRGB"===s||"Vector"===s||"Vector3D"===s||0===s.indexOf("Lcl_")?[n.propertyList[4],n.propertyList[5],n.propertyList[6]]:n.propertyList[4],t[o]={type:s,type2:c,flag:l,value:a}}else void 0===t[n.name]?"number"==typeof n.id?(t[n.name]={},t[n.name][n.id]=n):t[n.name]=n:"PoseNode"===n.name?(Array.isArray(t[n.name])||(t[n.name]=[t[n.name]]),t[n.name].push(n)):void 0===t[n.name][n.id]&&(t[n.name][n.id]=n)},parseProperty:function(e){var t=e.getString(1);switch(t){case"C":return e.getBoolean();case"D":return e.getFloat64();case"F":return e.getFloat32();case"I":return e.getInt32();case"L":return e.getInt64();case"R":var n=e.getUint32();return e.getArrayBuffer(n);case"S":return n=e.getUint32(),e.getString(n);case"Y":return e.getInt16();case"b":case"c":case"d":case"f":case"i":case"l":var i=e.getUint32(),r=e.getUint32(),a=e.getUint32();if(0===r)switch(t){case"b":case"c":return e.getBooleanArray(i);case"d":return e.getFloat64Array(i);case"f":return e.getFloat32Array(i);case"i":return e.getInt32Array(i);case"l":return e.getInt64Array(i)}void 0===su&&console.error("THREE.FBXLoader: External library Inflate.min.js required, obtain or import from https://github.com/imaya/zlib.js");var o=new u(new su.Inflate(new Uint8Array(e.getArrayBuffer(a))).decompress().buffer);switch(t){case"b":case"c":return o.getBooleanArray(i);case"d":return o.getFloat64Array(i);case"f":return o.getFloat32Array(i);case"i":return o.getInt32Array(i);case"l":return o.getInt64Array(i)}default:throw new Error("THREE.FBXLoader: Unknown property type "+t)}}},u.prototype={constructor:u,getOffset:function(){return this.offset},size:function(){return this.dv.buffer.byteLength},skip:function(e){this.offset+=e},getBoolean:function(){return 1==(1&this.getUint8())},getBooleanArray:function(e){for(var t=[],n=0;n=0&&(t=t.slice(0,i)),lc(new Uint8Array(t))}},p.prototype={constructor:p,add:function(e,t){this[e]=t}};var m=[];function v(e,t,n,i){var r;switch(i.mappingType){case"ByPolygonVertex":r=e;break;case"ByPolygon":r=t;break;case"ByVertice":r=n;break;case"AllSame":r=i.indices[0];break;default:console.warn("THREE.FBXLoader: unknown attribute mapping type "+i.mappingType)}"IndexToDirect"===i.referenceType&&(r=i.indices[r]);var a=r*i.dataSize,o=a+i.dataSize;return function(e,t,n,i){for(var r=n,a=0;r{Mu.play(),console.log("video",Mu,Mu.videoWidth,Mu.videoHeight),function(e,t,n,i,r,a,o,s,c){let l,h,u,p,d,f,m,v,g,y,b,w,_,M=document.createElement("canvas"),T=M.getContext("2d"),S=new Ar({canvas:a,alpha:!0,antialias:!0});S.setPixelRatio(window.devicePixelRatio),S.toneMapping=5,S.outputEncoding=A;const E=new _e,L=new gn;L.matrixAutoUpdate=!1;const P=new Fc;L.add(P),console.log(P),E.add(L);const R=new oc(16777215,.1);E.add(R);const C=new ac(16777215,.5);E.add(C),C.position.set(0,0,100);const I=new we;E.add(I);const O=new vs;O.onLoad=()=>{console.log("Loading complete!"),vu=!0,du=new ol(uu),fu=new ol(pu);for(let e of uu.animations){console.log(`add dooranim:${e.name}`);const t=du.clipAction(e);t.setLoop(x),t.clampWhenFinished=!0,t.play(),t.paused=!0,xu.push(t)}for(let e of pu.animations){console.log(`add royanim:${e.name}`);const t=fu.clipAction(e);t.setLoop(x),t.clampWhenFinished=!0,t.play(),t.paused=!0,xu.push(t)}I.matrixAutoUpdate=!1,I.add(uu),I.add(pu),gu&&(document.body.classList.remove("loading"),document.getElementById("loading").remove(),document.getElementById("warning").style.display="flex")},mu=new Uc(P),E.add(mu),console.log(mu),new Ec(O).load("Data/hny2020.mp3",(e=>{mu.setBuffer(e)}));const D=new hu(O);D.load("models/hny2020fbx/Greeting_OnlyDoor.fbx",(e=>{console.log("door loaded",e.scale,e.position),e.scale.x=.07,e.scale.y=.07,e.scale.z=.07,e.rotateX(90*Math.PI/180),e.position.x=70,e.position.y=90,e.position.z=0,uu=e})),D.load("models/hny2020fbx/Greeting280_OnlyRoy.fbx",(e=>{console.log("roy loaded",e.scale,e.position),e.traverse((e=>{e.material&&("mahojin"===e.material.name?e.material.transparent=!0:(e.material.shininess=0,e.material.reflectivity=0,e.material.specular=new pt(0,0,0)))})),e.scale.x=.07,e.scale.y=.07,e.scale.z=.07,e.rotateX(90*Math.PI/180),e.position.x=70,e.position.y=90,e.position.z=0,pu=e}));let N,z=e=>{N=e?JSON.parse(e.matrixGL_RH):null},B=Date.now(),F=0;function U(){T.fillStyle="black",T.fillRect(0,0,g,y),T.drawImage(n,0,0,l,h,b,w,m,v);let e=T.getImageData(0,0,g,y);_.postMessage({type:"process",imagedata:e},[e.data.buffer])}let G=()=>{(()=>{let e=Date.now();if(F+=e-B,B=e,N){I.visible=!0;for(let e=0;e<16;e++)wu.delta[e]=N[e]-wu.interpolated[e],wu.interpolated[e]=wu.interpolated[e]+wu.delta[e]/5;!function(e,t){let n=[];for(let e in t)n[e]=t[e];"function"==typeof e.elements.set?e.elements.set(n):e.elements=[].slice.call(n)}(I.matrix,wu.interpolated),document.getElementById("warning").style.display="none",vu&&!yu&&(yu=!0,setTimeout((()=>{for(let e of xu)e.paused=!1;mu.play()}),2e3))}else I.visible=!1;S.render(E,L)})(),requestAnimationFrame(G);const e=bu.getDelta();du&&du.update(e),fu&&fu.update(e),o&&o(),s&&s()};console.log("input",i,r),l=i,h=r,d=640/Math.max(l,h/3*4),f=/Android|mobile|iPad|iPhone/i.test(navigator.userAgent)?window.outerWidth/i:1,u=l*f,p=h*f,n.style.width=u+"px",n.style.height=p+"px",a.style.clientWidth=u+"px",a.style.clientHeight=p+"px",a.width=u,a.height=p,m=l*d,v=h*d,g=Math.max(m,v/3*4),y=Math.max(v,m/4*3),b=(g-m)/2,w=(y-v)/2,console.log(`pw=${g} ph=${y} ox=${b} oy=${w} sw=${u} sh=${p} w=${m} h=${v} vw=${l} vh=${h}`),M.style.clientWidth=g+"px",M.style.clientHeight=y+"px",M.width=g,M.height=y,S.setSize(u,p),_=new Worker("./vendor/jsartoolkit5/js/artoolkit.worker.js"),_.postMessage({type:"load",pw:g,ph:y,camera_para:"../../../Data/camera_para-iPhone 5 rear 640x480 1.0m.dat",marker:t.url}),_.onmessage=e=>{let t=e.data;switch(t.type){case"loaded":{let e=JSON.parse(t.proj);console.log(e);let n=g/m,i=y/v;e[0]*=n,e[4]*=n,e[8]*=n,e[12]*=n,e[1]*=i,e[5]*=i,e[9]*=i,e[13]*=i;const r=2*Math.atan(1/e[5])*180/Math.PI,a=e[5]/e[0];console.log(`fov=${r} aspect=${a}`);const o=new yn(r,a,1,3e3);L.projectionMatrix=o.projectionMatrix;break}case"endLoading":1==t.end&&(gu=!0,vu&&(document.body.classList.remove("loading"),document.getElementById("loading").remove(),document.getElementById("warning").style.display="flex"));break;case"found":z(t);break;case"not found":z(null)}U()},G(),U()}(0,_u,Mu,Mu.videoWidth,Mu.videoHeight,Tu,(function(){}),(function(){}))}))}))}})(); \ No newline at end of file diff --git a/public/js/bundle.js.LICENSE.txt b/public/js/bundle.js.LICENSE.txt new file mode 100644 index 0000000..db7bb4a --- /dev/null +++ b/public/js/bundle.js.LICENSE.txt @@ -0,0 +1,3 @@ +/** @license zlib.js 2012 - imaya [ https://github.com/imaya/zlib.js ] The MIT License */ + +//!\ DECLARE ALIAS AFTER assign prototype ! diff --git a/src/js/app.js b/src/js/app.js index ba62664..ba4a058 100644 --- a/src/js/app.js +++ b/src/js/app.js @@ -7,7 +7,7 @@ let marker = { width: 874, height: 590, dpi: 150, - url: "../../../DataNFT/2020_greenting_omote" + url: "../../../DataNFT/image2023" }; let container = document.getElementById("app"); diff --git a/yarn.lock b/yarn.lock index 94ea7cd..67fd225 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,176 +2,223 @@ # yarn lockfile v1 -"@types/events@*": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" - integrity sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g== +"@discoveryjs/json-ext@^0.5.0": + version "0.5.7" + resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" + integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== -"@types/glob@^7.1.1": - version "7.1.1" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.1.tgz#aa59a1c6e3fbc421e07ccd31a944c30eba521575" - integrity sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w== +"@jridgewell/gen-mapping@^0.3.0": + version "0.3.2" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9" + integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== dependencies: - "@types/events" "*" - "@types/minimatch" "*" - "@types/node" "*" + "@jridgewell/set-array" "^1.0.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/resolve-uri@3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" + integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== + +"@jridgewell/set-array@^1.0.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" + integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== + +"@jridgewell/source-map@^0.3.2": + version "0.3.2" + resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.2.tgz#f45351aaed4527a298512ec72f81040c998580fb" + integrity sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw== + dependencies: + "@jridgewell/gen-mapping" "^0.3.0" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/sourcemap-codec@1.4.14", "@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.14" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" + integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== + +"@jridgewell/trace-mapping@^0.3.14", "@jridgewell/trace-mapping@^0.3.9": + version "0.3.17" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz#793041277af9073b0951a7fe0f0d8c4c98c36985" + integrity sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g== + dependencies: + "@jridgewell/resolve-uri" "3.1.0" + "@jridgewell/sourcemap-codec" "1.4.14" + +"@types/eslint-scope@^3.7.3": + version "3.7.4" + resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.4.tgz#37fc1223f0786c39627068a12e94d6e6fc61de16" + integrity sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA== + dependencies: + "@types/eslint" "*" + "@types/estree" "*" -"@types/minimatch@*": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" - integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== +"@types/eslint@*": + version "8.4.10" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.4.10.tgz#19731b9685c19ed1552da7052b6f668ed7eb64bb" + integrity sha512-Sl/HOqN8NKPmhWo2VBEPm0nvHnu2LL3v9vKo8MEq0EtbJ4eVzGPl41VNPvn5E1i5poMk4/XD8UriLHpJvEP/Nw== + dependencies: + "@types/estree" "*" + "@types/json-schema" "*" + +"@types/estree@*": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.0.tgz#5fb2e536c1ae9bf35366eed879e827fa59ca41c2" + integrity sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ== + +"@types/estree@^0.0.51": + version "0.0.51" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40" + integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ== + +"@types/json-schema@*", "@types/json-schema@^7.0.8": + version "7.0.11" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" + integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== "@types/node@*": version "13.1.1" resolved "https://registry.yarnpkg.com/@types/node/-/node-13.1.1.tgz#6d11a8c2d58405b3db9388ab740106cbfa64c3c9" integrity sha512-hx6zWtudh3Arsbl3cXay+JnkvVgCKzCWKv42C9J01N2T2np4h8w5X8u6Tpz5mj38kE3M9FM0Pazx8vKFFMnjLQ== -"@webassemblyjs/ast@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.8.5.tgz#51b1c5fe6576a34953bf4b253df9f0d490d9e359" - integrity sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ== - dependencies: - "@webassemblyjs/helper-module-context" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/wast-parser" "1.8.5" - -"@webassemblyjs/floating-point-hex-parser@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz#1ba926a2923613edce496fd5b02e8ce8a5f49721" - integrity sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ== - -"@webassemblyjs/helper-api-error@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz#c49dad22f645227c5edb610bdb9697f1aab721f7" - integrity sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA== - -"@webassemblyjs/helper-buffer@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz#fea93e429863dd5e4338555f42292385a653f204" - integrity sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q== - -"@webassemblyjs/helper-code-frame@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz#9a740ff48e3faa3022b1dff54423df9aa293c25e" - integrity sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ== +"@webassemblyjs/ast@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7" + integrity sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw== dependencies: - "@webassemblyjs/wast-printer" "1.8.5" + "@webassemblyjs/helper-numbers" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" -"@webassemblyjs/helper-fsm@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz#ba0b7d3b3f7e4733da6059c9332275d860702452" - integrity sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow== +"@webassemblyjs/floating-point-hex-parser@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz#f6c61a705f0fd7a6aecaa4e8198f23d9dc179e4f" + integrity sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ== -"@webassemblyjs/helper-module-context@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz#def4b9927b0101dc8cbbd8d1edb5b7b9c82eb245" - integrity sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g== - dependencies: - "@webassemblyjs/ast" "1.8.5" - mamacro "^0.0.3" - -"@webassemblyjs/helper-wasm-bytecode@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz#537a750eddf5c1e932f3744206551c91c1b93e61" - integrity sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ== - -"@webassemblyjs/helper-wasm-section@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz#74ca6a6bcbe19e50a3b6b462847e69503e6bfcbf" - integrity sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-buffer" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/wasm-gen" "1.8.5" - -"@webassemblyjs/ieee754@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz#712329dbef240f36bf57bd2f7b8fb9bf4154421e" - integrity sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g== - dependencies: - "@xtuc/ieee754" "^1.2.0" +"@webassemblyjs/helper-api-error@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz#1a63192d8788e5c012800ba6a7a46c705288fd16" + integrity sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg== -"@webassemblyjs/leb128@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.8.5.tgz#044edeb34ea679f3e04cd4fd9824d5e35767ae10" - integrity sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A== +"@webassemblyjs/helper-buffer@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz#832a900eb444884cde9a7cad467f81500f5e5ab5" + integrity sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA== + +"@webassemblyjs/helper-numbers@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz#64d81da219fbbba1e3bd1bfc74f6e8c4e10a62ae" + integrity sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ== dependencies: + "@webassemblyjs/floating-point-hex-parser" "1.11.1" + "@webassemblyjs/helper-api-error" "1.11.1" "@xtuc/long" "4.2.2" -"@webassemblyjs/utf8@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.8.5.tgz#a8bf3b5d8ffe986c7c1e373ccbdc2a0915f0cedc" - integrity sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw== +"@webassemblyjs/helper-wasm-bytecode@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz#f328241e41e7b199d0b20c18e88429c4433295e1" + integrity sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q== -"@webassemblyjs/wasm-edit@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz#962da12aa5acc1c131c81c4232991c82ce56e01a" - integrity sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-buffer" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/helper-wasm-section" "1.8.5" - "@webassemblyjs/wasm-gen" "1.8.5" - "@webassemblyjs/wasm-opt" "1.8.5" - "@webassemblyjs/wasm-parser" "1.8.5" - "@webassemblyjs/wast-printer" "1.8.5" - -"@webassemblyjs/wasm-gen@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz#54840766c2c1002eb64ed1abe720aded714f98bc" - integrity sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg== +"@webassemblyjs/helper-wasm-section@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz#21ee065a7b635f319e738f0dd73bfbda281c097a" + integrity sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg== dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/ieee754" "1.8.5" - "@webassemblyjs/leb128" "1.8.5" - "@webassemblyjs/utf8" "1.8.5" - -"@webassemblyjs/wasm-opt@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz#b24d9f6ba50394af1349f510afa8ffcb8a63d264" - integrity sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-buffer" "1.8.5" - "@webassemblyjs/wasm-gen" "1.8.5" - "@webassemblyjs/wasm-parser" "1.8.5" - -"@webassemblyjs/wasm-parser@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz#21576f0ec88b91427357b8536383668ef7c66b8d" - integrity sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw== + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-buffer" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/wasm-gen" "1.11.1" + +"@webassemblyjs/ieee754@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz#963929e9bbd05709e7e12243a099180812992614" + integrity sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ== dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-api-error" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/ieee754" "1.8.5" - "@webassemblyjs/leb128" "1.8.5" - "@webassemblyjs/utf8" "1.8.5" - -"@webassemblyjs/wast-parser@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz#e10eecd542d0e7bd394f6827c49f3df6d4eefb8c" - integrity sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg== + "@xtuc/ieee754" "^1.2.0" + +"@webassemblyjs/leb128@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.1.tgz#ce814b45574e93d76bae1fb2644ab9cdd9527aa5" + integrity sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw== dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/floating-point-hex-parser" "1.8.5" - "@webassemblyjs/helper-api-error" "1.8.5" - "@webassemblyjs/helper-code-frame" "1.8.5" - "@webassemblyjs/helper-fsm" "1.8.5" "@xtuc/long" "4.2.2" -"@webassemblyjs/wast-printer@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz#114bbc481fd10ca0e23b3560fa812748b0bae5bc" - integrity sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/wast-parser" "1.8.5" +"@webassemblyjs/utf8@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.1.tgz#d1f8b764369e7c6e6bae350e854dec9a59f0a3ff" + integrity sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ== + +"@webassemblyjs/wasm-edit@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz#ad206ebf4bf95a058ce9880a8c092c5dec8193d6" + integrity sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-buffer" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/helper-wasm-section" "1.11.1" + "@webassemblyjs/wasm-gen" "1.11.1" + "@webassemblyjs/wasm-opt" "1.11.1" + "@webassemblyjs/wasm-parser" "1.11.1" + "@webassemblyjs/wast-printer" "1.11.1" + +"@webassemblyjs/wasm-gen@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz#86c5ea304849759b7d88c47a32f4f039ae3c8f76" + integrity sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/ieee754" "1.11.1" + "@webassemblyjs/leb128" "1.11.1" + "@webassemblyjs/utf8" "1.11.1" + +"@webassemblyjs/wasm-opt@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz#657b4c2202f4cf3b345f8a4c6461c8c2418985f2" + integrity sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-buffer" "1.11.1" + "@webassemblyjs/wasm-gen" "1.11.1" + "@webassemblyjs/wasm-parser" "1.11.1" + +"@webassemblyjs/wasm-parser@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz#86ca734534f417e9bd3c67c7a1c75d8be41fb199" + integrity sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-api-error" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/ieee754" "1.11.1" + "@webassemblyjs/leb128" "1.11.1" + "@webassemblyjs/utf8" "1.11.1" + +"@webassemblyjs/wast-printer@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz#d0c73beda8eec5426f10ae8ef55cee5e7084c2f0" + integrity sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg== + dependencies: + "@webassemblyjs/ast" "1.11.1" "@xtuc/long" "4.2.2" +"@webpack-cli/configtest@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-2.0.1.tgz#a69720f6c9bad6aef54a8fa6ba9c3533e7ef4c7f" + integrity sha512-njsdJXJSiS2iNbQVS0eT8A/KPnmyH4pv1APj2K0d1wrZcBLw+yppxOy4CGqa0OxDJkzfL/XELDhD8rocnIwB5A== + +"@webpack-cli/info@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-2.0.1.tgz#eed745799c910d20081e06e5177c2b2569f166c0" + integrity sha512-fE1UEWTwsAxRhrJNikE7v4EotYflkEhBL7EbajfkPlf6E37/2QshOy/D48Mw8G5XMFlQtS6YV42vtbG9zBpIQA== + +"@webpack-cli/serve@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-2.0.1.tgz#34bdc31727a1889198855913db2f270ace6d7bf8" + integrity sha512-0G7tNyS+yW8TdgHwZKlDWYXFA6OJQnoLCQvYKkQP0Q2X205PSQ6RNUj0M+1OB/9gRQaUZ/ccYfaxd0nhaWKfjw== + "@xtuc/ieee754@^1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" @@ -182,3406 +229,511 @@ resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== -accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: - version "1.3.7" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" - integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== - dependencies: - mime-types "~2.1.24" - negotiator "0.6.2" - -acorn@^6.2.1: - version "6.4.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.0.tgz#b659d2ffbafa24baf5db1cdbb2c94a983ecd2784" - integrity sha512-gac8OEcQ2Li1dxIEWGZzsp2BitJxwkwcOm0zHAJLcPJaVvm58FRnk6RkuLRpU1EujipU2ZFODv2P9DLMfnV8mw== - -ajv-errors@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" - integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== - -ajv-keywords@^3.1.0, ajv-keywords@^3.4.1: - version "3.4.1" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.1.tgz#ef916e271c64ac12171fd8384eaae6b2345854da" - integrity sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ== - -ajv@^6.1.0, ajv@^6.10.2: - version "6.10.2" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.2.tgz#d3cea04d6b017b2894ad69040fec8b623eb4bd52" - integrity sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw== +acorn-import-assertions@^1.7.6: + version "1.8.0" + resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz#ba2b5939ce62c238db6d93d81c9b111b29b855e9" + integrity sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw== + +acorn@^8.5.0, acorn@^8.7.1: + version "8.8.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.1.tgz#0a3f9cbecc4ec3bea6f0a80b66ae8dd2da250b73" + integrity sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA== + +ajv-keywords@^3.5.2: + version "3.5.2" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" + integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== + +ajv@^6.12.5: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== dependencies: - fast-deep-equal "^2.0.1" + fast-deep-equal "^3.1.1" fast-json-stable-stringify "^2.0.0" json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ansi-colors@^3.0.0: - version "3.2.4" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" - integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== - -ansi-html@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" - integrity sha1-gTWEAhliqenm/QOflA0S9WynhZ4= +browserslist@^4.14.5: + version "4.21.4" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.4.tgz#e7496bbc67b9e39dd0f98565feccdcb0d4ff6987" + integrity sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw== + dependencies: + caniuse-lite "^1.0.30001400" + electron-to-chromium "^1.4.251" + node-releases "^2.0.6" + update-browserslist-db "^1.0.9" -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== -ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= +caniuse-lite@^1.0.30001400: + version "1.0.30001441" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001441.tgz#987437b266260b640a23cd18fbddb509d7f69f3e" + integrity sha512-OyxRR4Vof59I3yGWXws6i908EtGbMzVUi3ganaZQHmydk1iwDhRnvaPG2WaR0KcqrDFKrxVZHULT396LEPhXfg== -ansi-regex@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" - integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== +chrome-trace-event@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" + integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== -ansi-styles@^3.2.0, ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== +clone-deep@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" + integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== dependencies: - color-convert "^1.9.0" + is-plain-object "^2.0.4" + kind-of "^6.0.2" + shallow-clone "^3.0.0" -anymatch@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" - integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== - dependencies: - micromatch "^3.1.4" - normalize-path "^2.1.1" +colorette@^2.0.14: + version "2.0.19" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.19.tgz#cdf044f47ad41a0f4b56b3a0d5b4e6e1a2d5a798" + integrity sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ== -aproba@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== +commander@^2.15.1, commander@^2.20.0: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== -arr-diff@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" - integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= +commander@^9.4.1: + version "9.4.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-9.4.1.tgz#d1dd8f2ce6faf93147295c0df13c7c21141cfbdd" + integrity sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw== -arr-flatten@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" - integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== +cross-spawn@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" -arr-union@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" - integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= +electron-to-chromium@^1.4.251: + version "1.4.284" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz#61046d1e4cab3a25238f6bf7413795270f125592" + integrity sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA== -array-flatten@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" - integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= - -array-flatten@^2.1.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" - integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== - -array-union@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" - integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= +enhanced-resolve@^5.10.0: + version "5.12.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz#300e1c90228f5b570c4d35babf263f6da7155634" + integrity sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ== dependencies: - array-uniq "^1.0.1" - -array-uniq@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" - integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= + graceful-fs "^4.2.4" + tapable "^2.2.0" -array-unique@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" - integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= +envinfo@^7.7.3: + version "7.8.1" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" + integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw== -asn1.js@^4.0.0: - version "4.10.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" - integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw== - dependencies: - bn.js "^4.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - -assert@^1.1.1: - version "1.5.0" - resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" - integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== - dependencies: - object-assign "^4.1.1" - util "0.10.3" +es-module-lexer@^0.9.0: + version "0.9.3" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19" + integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ== -assign-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" - integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== -async-each@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" - integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== - -async-limiter@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" - integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== - -async@^2.6.2: - version "2.6.3" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" - integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== +eslint-scope@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== dependencies: - lodash "^4.17.14" + esrecurse "^4.3.0" + estraverse "^4.1.1" -atob@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" - integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" -balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== -base64-js@^1.0.2: - version "1.3.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" - integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== +estraverse@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== -base@^0.11.1: - version "0.11.2" - resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" - integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== - dependencies: - cache-base "^1.0.1" - class-utils "^0.3.5" - component-emitter "^1.2.1" - define-property "^1.0.0" - isobject "^3.0.1" - mixin-deep "^1.2.0" - pascalcase "^0.1.1" +events@^3.2.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== -batch@0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" - integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY= - -big.js@^5.2.2: - version "5.2.2" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" - integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== - -binary-extensions@^1.0.0: - version "1.13.1" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" - integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== - -bindings@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" - integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== - dependencies: - file-uri-to-path "1.0.0" - -bluebird@^3.5.5: - version "3.7.2" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" - integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== - -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: - version "4.11.8" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" - integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== - -body-parser@1.19.0: - version "1.19.0" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" - integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== - dependencies: - bytes "3.1.0" - content-type "~1.0.4" - debug "2.6.9" - depd "~1.1.2" - http-errors "1.7.2" - iconv-lite "0.4.24" - on-finished "~2.3.0" - qs "6.7.0" - raw-body "2.4.0" - type-is "~1.6.17" - -bonjour@^3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" - integrity sha1-jokKGD2O6aI5OzhExpGkK897yfU= - dependencies: - array-flatten "^2.1.0" - deep-equal "^1.0.1" - dns-equal "^1.0.0" - dns-txt "^2.0.2" - multicast-dns "^6.0.1" - multicast-dns-service-types "^1.1.0" - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" +fast-deep-equal@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== -braces@^2.3.1, braces@^2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" - integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== - dependencies: - arr-flatten "^1.1.0" - array-unique "^0.3.2" - extend-shallow "^2.0.1" - fill-range "^4.0.0" - isobject "^3.0.1" - repeat-element "^1.1.2" - snapdragon "^0.8.1" - snapdragon-node "^2.0.1" - split-string "^3.0.2" - to-regex "^3.0.1" - -brorand@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" - integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= - -browserify-aes@^1.0.0, browserify-aes@^1.0.4: - version "1.2.0" - resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" - integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== - dependencies: - buffer-xor "^1.0.3" - cipher-base "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.3" - inherits "^2.0.1" - safe-buffer "^5.0.1" - -browserify-cipher@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" - integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== - dependencies: - browserify-aes "^1.0.4" - browserify-des "^1.0.0" - evp_bytestokey "^1.0.0" - -browserify-des@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" - integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== - dependencies: - cipher-base "^1.0.1" - des.js "^1.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== -browserify-rsa@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" - integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ= - dependencies: - bn.js "^4.1.0" - randombytes "^2.0.1" +fastest-levenshtein@^1.0.12: + version "1.0.16" + resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#210e61b6ff181de91ea9b3d1b84fdedd47e034e5" + integrity sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg== -browserify-sign@^4.0.0: - version "4.0.4" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298" - integrity sha1-qk62jl17ZYuqa/alfmMMvXqT0pg= - dependencies: - bn.js "^4.1.1" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.2" - elliptic "^6.0.0" - inherits "^2.0.1" - parse-asn1 "^5.0.0" - -browserify-zlib@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" - integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== +find-up@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== dependencies: - pako "~1.0.5" - -buffer-from@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" - integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== + locate-path "^5.0.0" + path-exists "^4.0.0" -buffer-indexof@^1.0.0: +function-bind@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" - integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g== + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== -buffer-xor@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" - integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= +glob-to-regexp@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" + integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== -buffer@^4.3.0: - version "4.9.2" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" - integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== - dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - isarray "^1.0.0" +graceful-fs@^4.1.2, graceful-fs@^4.2.4, graceful-fs@^4.2.9: + version "4.2.10" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" + integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== -builtin-status-codes@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" - integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== -bytes@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" - integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= +has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" -bytes@3.1.0: +import-local@^3.0.2: version "3.1.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" - integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== + resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" + integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== + dependencies: + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" -cacache@^12.0.2: - version "12.0.3" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.3.tgz#be99abba4e1bf5df461cd5a2c1071fc432573390" - integrity sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw== +interpret@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-3.1.1.tgz#5be0ceed67ca79c6c4bc5cf0d7ee843dcea110c4" + integrity sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ== + +is-core-module@^2.9.0: + version "2.11.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144" + integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw== dependencies: - bluebird "^3.5.5" - chownr "^1.1.1" - figgy-pudding "^3.5.1" - glob "^7.1.4" - graceful-fs "^4.1.15" - infer-owner "^1.0.3" - lru-cache "^5.1.1" - mississippi "^3.0.0" - mkdirp "^0.5.1" - move-concurrently "^1.0.1" - promise-inflight "^1.0.1" - rimraf "^2.6.3" - ssri "^6.0.1" - unique-filename "^1.1.1" - y18n "^4.0.0" - -cache-base@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" - integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== + has "^1.0.3" + +is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== dependencies: - collection-visit "^1.0.0" - component-emitter "^1.2.1" - get-value "^2.0.6" - has-value "^1.0.0" isobject "^3.0.1" - set-value "^2.0.0" - to-object-path "^0.3.0" - union-value "^1.0.0" - unset-value "^1.0.0" - -camelcase@^5.0.0: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - -chalk@2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chokidar@^2.0.2, chokidar@^2.1.8: - version "2.1.8" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" - integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== - dependencies: - anymatch "^2.0.0" - async-each "^1.0.1" - braces "^2.3.2" - glob-parent "^3.1.0" - inherits "^2.0.3" - is-binary-path "^1.0.0" - is-glob "^4.0.0" - normalize-path "^3.0.0" - path-is-absolute "^1.0.0" - readdirp "^2.2.1" - upath "^1.1.1" - optionalDependencies: - fsevents "^1.2.7" - -chownr@^1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.3.tgz#42d837d5239688d55f303003a508230fa6727142" - integrity sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw== -chrome-trace-event@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4" - integrity sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ== - dependencies: - tslib "^1.9.0" +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= -cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" - integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" +isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= -class-utils@^0.3.5: - version "0.3.6" - resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" - integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== +jest-worker@^27.4.5: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" + integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== dependencies: - arr-union "^3.1.0" - define-property "^0.2.5" - isobject "^3.0.0" - static-extend "^0.1.1" + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^8.0.0" -cliui@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" - integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ== +jsartoolkit@kalwalt/jsartoolkit5.git#fixing-nft: + version "0.0.0" + resolved "https://codeload.github.com/kalwalt/jsartoolkit5/tar.gz/fa15cb1e128c91a714d31152081083796133c3a1" dependencies: - string-width "^2.1.1" - strip-ansi "^4.0.0" - wrap-ansi "^2.0.0" + json2csv "^4.1.5" -cliui@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" - integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== - dependencies: - string-width "^3.1.0" - strip-ansi "^5.2.0" - wrap-ansi "^5.1.0" +json-parse-even-better-errors@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== -code-point-at@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" - integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== -collection-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" - integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= +json2csv@^4.1.5: + version "4.5.4" + resolved "https://registry.yarnpkg.com/json2csv/-/json2csv-4.5.4.tgz#2b59c2869a137ec48cd2e243e0180466155f773f" + integrity sha512-YxBhY4Lmn8IvVZ36nqg5omxneLy9JlorkqW1j/EDCeqvmi+CQ4uM+wsvXlcIqvGDewIPXMC/O/oF8DX9EH5aoA== dependencies: - map-visit "^1.0.0" - object-visit "^1.0.0" + commander "^2.15.1" + jsonparse "^1.3.1" + lodash.get "^4.4.2" -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" +jsonparse@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" + integrity sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA= -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= +kind-of@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" + integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA== -commander@^2.15.1, commander@^2.20.0: - version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== +loader-runner@^4.2.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" + integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== -commondir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" - integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" -component-emitter@^1.2.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" - integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== +lodash.get@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" + integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk= -compressible@~2.0.16: - version "2.0.17" - resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.17.tgz#6e8c108a16ad58384a977f3a482ca20bff2f38c1" - integrity sha512-BGHeLCK1GV7j1bSmQQAi26X+GgWcTjLr/0tzSvMCl3LH1w1IJ4PFSPoV5316b30cneTziC+B1a+3OjoSUcQYmw== - dependencies: - mime-db ">= 1.40.0 < 2" +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== -compression@^1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" - integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== - dependencies: - accepts "~1.3.5" - bytes "3.0.0" - compressible "~2.0.16" - debug "2.6.9" - on-headers "~1.0.2" - safe-buffer "5.1.2" - vary "~1.1.2" - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= - -concat-stream@^1.5.0: - version "1.6.2" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" - integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== - dependencies: - buffer-from "^1.0.0" - inherits "^2.0.3" - readable-stream "^2.2.2" - typedarray "^0.0.6" +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== -connect-history-api-fallback@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" - integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== +mime-types@^2.1.27: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" -console-browserify@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" - integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== +neo-async@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== -constants-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" - integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= +node-releases@^2.0.6: + version "2.0.8" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.8.tgz#0f349cdc8fcfa39a92ac0be9bc48b7706292b9ae" + integrity sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A== -content-disposition@0.5.3: - version "0.5.3" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" - integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== - dependencies: - safe-buffer "5.1.2" - -content-type@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" - integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== - -cookie-signature@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" - integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= - -cookie@0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" - integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== - -copy-concurrently@^1.0.0: - version "1.0.5" - resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" - integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== - dependencies: - aproba "^1.1.1" - fs-write-stream-atomic "^1.0.8" - iferr "^0.1.5" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.0" - -copy-descriptor@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" - integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= - -core-util-is@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= - -create-ecdh@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" - integrity sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw== +p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== dependencies: - bn.js "^4.1.0" - elliptic "^6.0.0" + p-try "^2.0.0" -create-hash@^1.1.0, create-hash@^1.1.2: - version "1.2.0" - resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" - integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== - dependencies: - cipher-base "^1.0.1" - inherits "^2.0.1" - md5.js "^1.3.4" - ripemd160 "^2.0.1" - sha.js "^2.4.0" - -create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: - version "1.1.7" - resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" - integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== - dependencies: - cipher-base "^1.0.3" - create-hash "^1.1.0" - inherits "^2.0.1" - ripemd160 "^2.0.0" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -cross-spawn@6.0.5, cross-spawn@^6.0.0: - version "6.0.5" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" - integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== - dependencies: - nice-try "^1.0.4" - path-key "^2.0.1" - semver "^5.5.0" - shebang-command "^1.2.0" - which "^1.2.9" - -crypto-browserify@^3.11.0: - version "3.12.0" - resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" - integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== - dependencies: - browserify-cipher "^1.0.0" - browserify-sign "^4.0.0" - create-ecdh "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.0" - diffie-hellman "^5.0.0" - inherits "^2.0.1" - pbkdf2 "^3.0.3" - public-encrypt "^4.0.0" - randombytes "^2.0.0" - randomfill "^1.0.3" - -cyclist@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" - integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= - -debug@2.6.9, debug@^2.2.0, debug@^2.3.3: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== dependencies: - ms "2.0.0" + p-limit "^2.2.0" -debug@^3.0.0, debug@^3.1.1, debug@^3.2.5: - version "3.2.6" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" - integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== - dependencies: - ms "^2.1.1" +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== -debug@^4.1.0, debug@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" - integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== - dependencies: - ms "^2.1.1" +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== -decamelize@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= +path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== -decode-uri-component@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" - integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== -deep-equal@^1.0.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" - integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== - dependencies: - is-arguments "^1.0.4" - is-date-object "^1.0.1" - is-regex "^1.0.4" - object-is "^1.0.1" - object-keys "^1.1.1" - regexp.prototype.flags "^1.2.0" - -default-gateway@^4.2.0: +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + +pkg-dir@^4.2.0: version "4.2.0" - resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-4.2.0.tgz#167104c7500c2115f6dd69b0a536bb8ed720552b" - integrity sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA== + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== dependencies: - execa "^1.0.0" - ip-regex "^2.1.0" + find-up "^4.0.0" -define-properties@^1.1.2, define-properties@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" - integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== - dependencies: - object-keys "^1.0.12" +punycode@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== -define-property@^0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" - integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= +randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== dependencies: - is-descriptor "^0.1.0" + safe-buffer "^5.1.0" -define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" - integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= +rechoir@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.8.0.tgz#49f866e0d32146142da3ad8f0eff352b3215ff22" + integrity sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ== dependencies: - is-descriptor "^1.0.0" + resolve "^1.20.0" -define-property@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" - integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== +resolve-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== dependencies: - is-descriptor "^1.0.2" - isobject "^3.0.1" + resolve-from "^5.0.0" -del@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4" - integrity sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ== - dependencies: - "@types/glob" "^7.1.1" - globby "^6.1.0" - is-path-cwd "^2.0.0" - is-path-in-cwd "^2.0.0" - p-map "^2.0.0" - pify "^4.0.1" - rimraf "^2.6.3" - -depd@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" - integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== -des.js@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" - integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== +resolve@^1.20.0: + version "1.22.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" + integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== dependencies: - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - -destroy@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" - integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= - -detect-file@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" - integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc= + is-core-module "^2.9.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" -detect-node@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c" - integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw== +safe-buffer@^5.1.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== -diffie-hellman@^5.0.0: - version "5.0.3" - resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" - integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== +schema-utils@^3.1.0, schema-utils@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.1.1.tgz#bc74c4b6b6995c1d88f76a8b77bea7219e0c8281" + integrity sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw== dependencies: - bn.js "^4.1.0" - miller-rabin "^4.0.0" - randombytes "^2.0.0" - -dns-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" - integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0= + "@types/json-schema" "^7.0.8" + ajv "^6.12.5" + ajv-keywords "^3.5.2" -dns-packet@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.1.tgz#12aa426981075be500b910eedcd0b47dd7deda5a" - integrity sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg== +serialize-javascript@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" + integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== dependencies: - ip "^1.1.0" - safe-buffer "^5.0.1" + randombytes "^2.1.0" -dns-txt@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6" - integrity sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY= +shallow-clone@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" + integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== dependencies: - buffer-indexof "^1.0.0" - -domain-browser@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" - integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== + kind-of "^6.0.2" -duplexify@^3.4.2, duplexify@^3.6.0: - version "3.7.1" - resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" - integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== dependencies: - end-of-stream "^1.0.0" - inherits "^2.0.1" - readable-stream "^2.0.0" - stream-shift "^1.0.0" + shebang-regex "^3.0.0" -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -elliptic@^6.0.0: - version "6.5.2" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.2.tgz#05c5678d7173c049d8ca433552224a495d0e3762" - integrity sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw== +source-map-support@~0.5.20: + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== dependencies: - bn.js "^4.4.0" - brorand "^1.0.1" - hash.js "^1.0.0" - hmac-drbg "^1.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.0" - -emoji-regex@^7.0.1: - version "7.0.3" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" - integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== + buffer-from "^1.0.0" + source-map "^0.6.0" -emojis-list@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" - integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= - -encodeurl@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" - integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= - -end-of-stream@^1.0.0, end-of-stream@^1.1.0: - version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== - dependencies: - once "^1.4.0" +source-map@^0.6.0: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -enhanced-resolve@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz#41c7e0bfdfe74ac1ffe1e57ad6a5c6c9f3742a7f" - integrity sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng== +supports-color@^8.0.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== dependencies: - graceful-fs "^4.1.2" - memory-fs "^0.4.0" - tapable "^1.0.0" + has-flag "^4.0.0" -enhanced-resolve@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz#2937e2b8066cd0fe7ce0990a98f0d71a35189f66" - integrity sha512-98p2zE+rL7/g/DzMHMTF4zZlCgeVdJ7yr6xzEpJRYwFYrGi9ANdn5DnJURg6RpBkyk60XYDnWIv51VfIhfNGuA== - dependencies: - graceful-fs "^4.1.2" - memory-fs "^0.5.0" - tapable "^1.0.0" - -errno@^0.1.3, errno@~0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" - integrity sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg== - dependencies: - prr "~1.0.1" - -es-abstract@^1.17.0-next.1: - version "1.17.0" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.0.tgz#f42a517d0036a5591dbb2c463591dc8bb50309b1" - integrity sha512-yYkE07YF+6SIBmg1MsJ9dlub5L48Ek7X0qz+c/CPCHS9EBXfESorzng4cJQjJW5/pB6vDF41u7F8vUhLVDqIug== - dependencies: - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" - is-callable "^1.1.5" - is-regex "^1.0.5" - object-inspect "^1.7.0" - object-keys "^1.1.1" - object.assign "^4.1.0" - string.prototype.trimleft "^2.1.1" - string.prototype.trimright "^2.1.1" - -es-to-primitive@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" - integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== - dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" - -escape-html@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= - -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= - -eslint-scope@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" - integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== - dependencies: - esrecurse "^4.1.0" - estraverse "^4.1.1" - -esrecurse@^4.1.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" - integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ== - dependencies: - estraverse "^4.1.0" - -estraverse@^4.1.0, estraverse@^4.1.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - -etag@~1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" - integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= - -eventemitter3@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.0.tgz#d65176163887ee59f386d64c82610b696a4a74eb" - integrity sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg== - -events@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/events/-/events-3.0.0.tgz#9a0a0dfaf62893d92b875b8f2698ca4114973e88" - integrity sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA== - -eventsource@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.0.7.tgz#8fbc72c93fcd34088090bc0a4e64f4b5cee6d8d0" - integrity sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ== - dependencies: - original "^1.0.0" - -evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" - integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== - dependencies: - md5.js "^1.3.4" - safe-buffer "^5.1.1" - -execa@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" - integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== - dependencies: - cross-spawn "^6.0.0" - get-stream "^4.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - -expand-brackets@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" - integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= - dependencies: - debug "^2.3.3" - define-property "^0.2.5" - extend-shallow "^2.0.1" - posix-character-classes "^0.1.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -expand-tilde@^2.0.0, expand-tilde@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" - integrity sha1-l+gBqgUt8CRU3kawK/YhZCzchQI= - dependencies: - homedir-polyfill "^1.0.1" - -express@^4.17.1: - version "4.17.1" - resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" - integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== - dependencies: - accepts "~1.3.7" - array-flatten "1.1.1" - body-parser "1.19.0" - content-disposition "0.5.3" - content-type "~1.0.4" - cookie "0.4.0" - cookie-signature "1.0.6" - debug "2.6.9" - depd "~1.1.2" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - finalhandler "~1.1.2" - fresh "0.5.2" - merge-descriptors "1.0.1" - methods "~1.1.2" - on-finished "~2.3.0" - parseurl "~1.3.3" - path-to-regexp "0.1.7" - proxy-addr "~2.0.5" - qs "6.7.0" - range-parser "~1.2.1" - safe-buffer "5.1.2" - send "0.17.1" - serve-static "1.14.1" - setprototypeof "1.1.1" - statuses "~1.5.0" - type-is "~1.6.18" - utils-merge "1.0.1" - vary "~1.1.2" - -extend-shallow@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" - integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= - dependencies: - is-extendable "^0.1.0" - -extend-shallow@^3.0.0, extend-shallow@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" - integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= - dependencies: - assign-symbols "^1.0.0" - is-extendable "^1.0.1" - -extglob@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" - integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== - dependencies: - array-unique "^0.3.2" - define-property "^1.0.0" - expand-brackets "^2.1.4" - extend-shallow "^2.0.1" - fragment-cache "^0.2.1" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -fast-deep-equal@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" - integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= - -fast-json-stable-stringify@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - -faye-websocket@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" - integrity sha1-TkkvjQTftviQA1B/btvy1QHnxvQ= - dependencies: - websocket-driver ">=0.5.1" - -faye-websocket@~0.11.1: - version "0.11.3" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.3.tgz#5c0e9a8968e8912c286639fde977a8b209f2508e" - integrity sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA== - dependencies: - websocket-driver ">=0.5.1" - -figgy-pudding@^3.5.1: - version "3.5.1" - resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.1.tgz#862470112901c727a0e495a80744bd5baa1d6790" - integrity sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w== - -file-uri-to-path@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" - integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== - -fill-range@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" - integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= - dependencies: - extend-shallow "^2.0.1" - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range "^2.1.0" - -finalhandler@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" - integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== - dependencies: - debug "2.6.9" - encodeurl "~1.0.2" - escape-html "~1.0.3" - on-finished "~2.3.0" - parseurl "~1.3.3" - statuses "~1.5.0" - unpipe "~1.0.0" - -find-cache-dir@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" - integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== - dependencies: - commondir "^1.0.1" - make-dir "^2.0.0" - pkg-dir "^3.0.0" - -find-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" - integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== - dependencies: - locate-path "^3.0.0" - -findup-sync@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-3.0.0.tgz#17b108f9ee512dfb7a5c7f3c8b27ea9e1a9c08d1" - integrity sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg== - dependencies: - detect-file "^1.0.0" - is-glob "^4.0.0" - micromatch "^3.0.4" - resolve-dir "^1.0.1" - -flush-write-stream@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" - integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== - dependencies: - inherits "^2.0.3" - readable-stream "^2.3.6" - -follow-redirects@^1.0.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.9.0.tgz#8d5bcdc65b7108fe1508649c79c12d732dcedb4f" - integrity sha512-CRcPzsSIbXyVDl0QI01muNDu69S8trU4jArW9LpOt2WtC6LyUJetcIrmfHsRBx7/Jb6GHJUiuqyYxPooFfNt6A== - dependencies: - debug "^3.0.0" - -for-in@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= - -forwarded@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" - integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= - -fragment-cache@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" - integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= - dependencies: - map-cache "^0.2.2" - -fresh@0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" - integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= - -from2@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" - integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= - dependencies: - inherits "^2.0.1" - readable-stream "^2.0.0" - -fs-write-stream-atomic@^1.0.8: - version "1.0.10" - resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" - integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk= - dependencies: - graceful-fs "^4.1.2" - iferr "^0.1.5" - imurmurhash "^0.1.4" - readable-stream "1 || 2" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= - -fsevents@^1.2.7: - version "1.2.11" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.11.tgz#67bf57f4758f02ede88fb2a1712fef4d15358be3" - integrity sha512-+ux3lx6peh0BpvY0JebGyZoiR4D+oYzdPZMKJwkZ+sFkNJzpL7tXc/wehS49gUAxg3tmMHPHZkA8JU2rhhgDHw== - dependencies: - bindings "^1.5.0" - nan "^2.12.1" - -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== - -get-caller-file@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" - integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== - -get-caller-file@^2.0.1: - version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - -get-stream@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" - integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== - dependencies: - pump "^3.0.0" - -get-value@^2.0.3, get-value@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" - integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= - -glob-parent@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" - integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= - dependencies: - is-glob "^3.1.0" - path-dirname "^1.0.0" - -glob@^7.0.3, glob@^7.1.3, glob@^7.1.4: - version "7.1.6" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" - integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -global-modules@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" - integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== - dependencies: - global-prefix "^3.0.0" - -global-modules@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" - integrity sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg== - dependencies: - global-prefix "^1.0.1" - is-windows "^1.0.1" - resolve-dir "^1.0.0" - -global-prefix@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" - integrity sha1-2/dDxsFJklk8ZVVoy2btMsASLr4= - dependencies: - expand-tilde "^2.0.2" - homedir-polyfill "^1.0.1" - ini "^1.3.4" - is-windows "^1.0.1" - which "^1.2.14" - -global-prefix@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" - integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== - dependencies: - ini "^1.3.5" - kind-of "^6.0.2" - which "^1.3.1" - -globby@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" - integrity sha1-9abXDoOV4hyFj7BInWTfAkJNUGw= - dependencies: - array-union "^1.0.1" - glob "^7.0.3" - object-assign "^4.0.1" - pify "^2.0.0" - pinkie-promise "^2.0.0" - -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2: - version "4.2.3" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" - integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== - -handle-thing@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.0.tgz#0e039695ff50c93fc288557d696f3c1dc6776754" - integrity sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ== - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= - -has-symbols@^1.0.0, has-symbols@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" - integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== - -has-value@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" - integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= - dependencies: - get-value "^2.0.3" - has-values "^0.1.4" - isobject "^2.0.0" - -has-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" - integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= - dependencies: - get-value "^2.0.6" - has-values "^1.0.0" - isobject "^3.0.0" - -has-values@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" - integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= - -has-values@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" - integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= - dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" - -has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" - -hash-base@^3.0.0: - version "3.0.4" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" - integrity sha1-X8hoaEfs1zSZQDMZprCj8/auSRg= - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -hash.js@^1.0.0, hash.js@^1.0.3: - version "1.1.7" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" - integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.1" - -hmac-drbg@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" - integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= - dependencies: - hash.js "^1.0.3" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.1" - -homedir-polyfill@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" - integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== - dependencies: - parse-passwd "^1.0.0" - -hpack.js@^2.1.6: - version "2.1.6" - resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" - integrity sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI= - dependencies: - inherits "^2.0.1" - obuf "^1.0.0" - readable-stream "^2.0.1" - wbuf "^1.1.0" - -html-entities@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f" - integrity sha1-DfKTUfByEWNRXfueVUPl9u7VFi8= - -http-deceiver@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" - integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc= - -http-errors@1.7.2: - version "1.7.2" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" - integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.1" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.0" - -http-errors@~1.6.2: - version "1.6.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" - integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.0" - statuses ">= 1.4.0 < 2" - -http-errors@~1.7.2: - version "1.7.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" - integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== - dependencies: - depd "~1.1.2" - inherits "2.0.4" - setprototypeof "1.1.1" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.0" - -"http-parser-js@>=0.4.0 <0.4.11": - version "0.4.10" - resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.10.tgz#92c9c1374c35085f75db359ec56cc257cbb93fa4" - integrity sha1-ksnBN0w1CF912zWexWzCV8u5P6Q= - -http-proxy-middleware@0.19.1: - version "0.19.1" - resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a" - integrity sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q== - dependencies: - http-proxy "^1.17.0" - is-glob "^4.0.0" - lodash "^4.17.11" - micromatch "^3.1.10" - -http-proxy@^1.17.0: - version "1.18.0" - resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.0.tgz#dbe55f63e75a347db7f3d99974f2692a314a6a3a" - integrity sha512-84I2iJM/n1d4Hdgc6y2+qY5mDaz2PUVjlg9znE9byl+q0uC3DeByqBGReQu5tpLK0TAqTIXScRUV+dg7+bUPpQ== - dependencies: - eventemitter3 "^4.0.0" - follow-redirects "^1.0.0" - requires-port "^1.0.0" - -https-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" - integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= - -iconv-lite@0.4.24: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -ieee754@^1.1.4: - version "1.1.13" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" - integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== - -iferr@^0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" - integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= - -import-local@2.0.0, import-local@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" - integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== - dependencies: - pkg-dir "^3.0.0" - resolve-cwd "^2.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= - -infer-owner@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" - integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -inherits@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" - integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= - -inherits@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= - -ini@^1.3.4, ini@^1.3.5: - version "1.3.5" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" - integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== - -internal-ip@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907" - integrity sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg== - dependencies: - default-gateway "^4.2.0" - ipaddr.js "^1.9.0" - -interpret@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296" - integrity sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw== - -invert-kv@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" - integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== - -ip-regex@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" - integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= - -ip@^1.1.0, ip@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" - integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= - -ipaddr.js@1.9.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.0.tgz#37df74e430a0e47550fe54a2defe30d8acd95f65" - integrity sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA== - -ipaddr.js@^1.9.0: - version "1.9.1" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" - integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== - -is-absolute-url@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698" - integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q== - -is-accessor-descriptor@^0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" - integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= - dependencies: - kind-of "^3.0.2" - -is-accessor-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" - integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== - dependencies: - kind-of "^6.0.0" - -is-arguments@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3" - integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA== - -is-binary-path@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" - integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= - dependencies: - binary-extensions "^1.0.0" - -is-buffer@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" - integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== - -is-callable@^1.1.4, is-callable@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab" - integrity sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q== - -is-data-descriptor@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" - integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= - dependencies: - kind-of "^3.0.2" - -is-data-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" - integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== - dependencies: - kind-of "^6.0.0" - -is-date-object@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" - integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== - -is-descriptor@^0.1.0: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" - integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== - dependencies: - is-accessor-descriptor "^0.1.6" - is-data-descriptor "^0.1.4" - kind-of "^5.0.0" - -is-descriptor@^1.0.0, is-descriptor@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" - integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== - dependencies: - is-accessor-descriptor "^1.0.0" - is-data-descriptor "^1.0.0" - kind-of "^6.0.2" - -is-extendable@^0.1.0, is-extendable@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= - -is-extendable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" - integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== - dependencies: - is-plain-object "^2.0.4" - -is-extglob@^2.1.0, is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= - -is-fullwidth-code-point@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= - dependencies: - number-is-nan "^1.0.0" - -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= - -is-glob@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" - integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= - dependencies: - is-extglob "^2.1.0" - -is-glob@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" - integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== - dependencies: - is-extglob "^2.1.1" - -is-number@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" - integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= - dependencies: - kind-of "^3.0.2" - -is-path-cwd@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" - integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== - -is-path-in-cwd@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz#bfe2dca26c69f397265a4009963602935a053acb" - integrity sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ== - dependencies: - is-path-inside "^2.1.0" - -is-path-inside@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-2.1.0.tgz#7c9810587d659a40d27bcdb4d5616eab059494b2" - integrity sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg== - dependencies: - path-is-inside "^1.0.2" - -is-plain-object@^2.0.3, is-plain-object@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" - -is-regex@^1.0.4, is-regex@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.5.tgz#39d589a358bf18967f726967120b8fc1aed74eae" - integrity sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ== - dependencies: - has "^1.0.3" - -is-stream@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= - -is-symbol@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" - integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== - dependencies: - has-symbols "^1.0.1" - -is-windows@^1.0.1, is-windows@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" - integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== - -is-wsl@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" - integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= - -isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= - -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= - dependencies: - isarray "1.0.0" - -isobject@^3.0.0, isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= - -jsartoolkit@kalwalt/jsartoolkit5.git#fixing-nft: - version "0.0.0" - resolved "https://codeload.github.com/kalwalt/jsartoolkit5/tar.gz/fa15cb1e128c91a714d31152081083796133c3a1" - dependencies: - json2csv "^4.1.5" - -json-parse-better-errors@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" - integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json2csv@^4.1.5: - version "4.5.4" - resolved "https://registry.yarnpkg.com/json2csv/-/json2csv-4.5.4.tgz#2b59c2869a137ec48cd2e243e0180466155f773f" - integrity sha512-YxBhY4Lmn8IvVZ36nqg5omxneLy9JlorkqW1j/EDCeqvmi+CQ4uM+wsvXlcIqvGDewIPXMC/O/oF8DX9EH5aoA== - dependencies: - commander "^2.15.1" - jsonparse "^1.3.1" - lodash.get "^4.4.2" - -json3@^3.3.2: - version "3.3.3" - resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81" - integrity sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA== - -json5@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" - integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== - dependencies: - minimist "^1.2.0" - -jsonparse@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" - integrity sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA= - -killable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" - integrity sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg== - -kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= - dependencies: - is-buffer "^1.1.5" - -kind-of@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" - integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= - dependencies: - is-buffer "^1.1.5" - -kind-of@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" - integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== - -kind-of@^6.0.0, kind-of@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" - integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA== - -lcid@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" - integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== - dependencies: - invert-kv "^2.0.0" - -loader-runner@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" - integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== - -loader-utils@1.2.3, loader-utils@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" - integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA== - dependencies: - big.js "^5.2.2" - emojis-list "^2.0.0" - json5 "^1.0.1" - -locate-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" - integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== - dependencies: - p-locate "^3.0.0" - path-exists "^3.0.0" - -lodash.get@^4.4.2: - version "4.4.2" - resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" - integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk= - -lodash@^4.17.11, lodash@^4.17.14: - version "4.17.15" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" - integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== - -loglevel@^1.6.6: - version "1.6.6" - resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.6.tgz#0ee6300cc058db6b3551fa1c4bf73b83bb771312" - integrity sha512-Sgr5lbboAUBo3eXCSPL4/KoVz3ROKquOjcctxmHIt+vol2DrqTQe3SwkKKuYhEiWB5kYa13YyopJ69deJ1irzQ== - -lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== - dependencies: - yallist "^3.0.2" - -make-dir@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" - integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== - dependencies: - pify "^4.0.1" - semver "^5.6.0" - -mamacro@^0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/mamacro/-/mamacro-0.0.3.tgz#ad2c9576197c9f1abf308d0787865bd975a3f3e4" - integrity sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA== - -map-age-cleaner@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" - integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== - dependencies: - p-defer "^1.0.0" - -map-cache@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" - integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= - -map-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" - integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= - dependencies: - object-visit "^1.0.0" - -md5.js@^1.3.4: - version "1.3.5" - resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" - integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -media-typer@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" - integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= - -mem@^4.0.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" - integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w== - dependencies: - map-age-cleaner "^0.1.1" - mimic-fn "^2.0.0" - p-is-promise "^2.0.0" - -memory-fs@^0.4.0, memory-fs@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" - integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= - dependencies: - errno "^0.1.3" - readable-stream "^2.0.1" - -memory-fs@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c" - integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA== - dependencies: - errno "^0.1.3" - readable-stream "^2.0.1" - -merge-descriptors@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" - integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= - -methods@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" - integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= - -micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4: - version "3.1.10" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" - integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - braces "^2.3.1" - define-property "^2.0.2" - extend-shallow "^3.0.2" - extglob "^2.0.4" - fragment-cache "^0.2.1" - kind-of "^6.0.2" - nanomatch "^1.2.9" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.2" - -miller-rabin@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" - integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== - dependencies: - bn.js "^4.0.0" - brorand "^1.0.1" - -mime-db@1.42.0, "mime-db@>= 1.40.0 < 2": - version "1.42.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.42.0.tgz#3e252907b4c7adb906597b4b65636272cf9e7bac" - integrity sha512-UbfJCR4UAVRNgMpfImz05smAXK7+c+ZntjaA26ANtkXLlOe947Aag5zdIcKQULAiF9Cq4WxBi9jUs5zkA84bYQ== - -mime-types@~2.1.17, mime-types@~2.1.24: - version "2.1.25" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.25.tgz#39772d46621f93e2a80a856c53b86a62156a6437" - integrity sha512-5KhStqB5xpTAeGqKBAMgwaYMnQik7teQN4IAzC7npDv6kzeU6prfkR67bc87J1kWMPGkoaZSq1npmexMgkmEVg== - dependencies: - mime-db "1.42.0" - -mime@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" - integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== - -mime@^2.4.4: - version "2.4.4" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.4.tgz#bd7b91135fc6b01cde3e9bae33d659b63d8857e5" - integrity sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA== - -mimic-fn@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" - integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== - -minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" - integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= - -minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== - dependencies: - brace-expansion "^1.1.7" - -minimist@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" - integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= - -minimist@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" - integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= - -mississippi@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" - integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== - dependencies: - concat-stream "^1.5.0" - duplexify "^3.4.2" - end-of-stream "^1.1.0" - flush-write-stream "^1.0.0" - from2 "^2.1.0" - parallel-transform "^1.1.0" - pump "^3.0.0" - pumpify "^1.3.3" - stream-each "^1.1.0" - through2 "^2.0.0" - -mixin-deep@^1.2.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" - integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== - dependencies: - for-in "^1.0.2" - is-extendable "^1.0.1" - -mkdirp@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" - integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= - dependencies: - minimist "0.0.8" - -move-concurrently@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" - integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I= - dependencies: - aproba "^1.1.1" - copy-concurrently "^1.0.0" - fs-write-stream-atomic "^1.0.8" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.3" - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= - -ms@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" - integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== - -ms@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -multicast-dns-service-types@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" - integrity sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE= - -multicast-dns@^6.0.1: - version "6.2.3" - resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229" - integrity sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g== - dependencies: - dns-packet "^1.3.1" - thunky "^1.0.2" - -nan@^2.12.1: - version "2.14.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" - integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg== - -nanomatch@^1.2.9: - version "1.2.13" - resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" - integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - define-property "^2.0.2" - extend-shallow "^3.0.2" - fragment-cache "^0.2.1" - is-windows "^1.0.2" - kind-of "^6.0.2" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -negotiator@0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" - integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== - -neo-async@^2.5.0, neo-async@^2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" - integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== - -nice-try@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" - integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== - -node-forge@0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.9.0.tgz#d624050edbb44874adca12bb9a52ec63cb782579" - integrity sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ== - -node-libs-browser@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" - integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== - dependencies: - assert "^1.1.1" - browserify-zlib "^0.2.0" - buffer "^4.3.0" - console-browserify "^1.1.0" - constants-browserify "^1.0.0" - crypto-browserify "^3.11.0" - domain-browser "^1.1.1" - events "^3.0.0" - https-browserify "^1.0.0" - os-browserify "^0.3.0" - path-browserify "0.0.1" - process "^0.11.10" - punycode "^1.2.4" - querystring-es3 "^0.2.0" - readable-stream "^2.3.3" - stream-browserify "^2.0.1" - stream-http "^2.7.2" - string_decoder "^1.0.0" - timers-browserify "^2.0.4" - tty-browserify "0.0.0" - url "^0.11.0" - util "^0.11.0" - vm-browserify "^1.0.1" - -normalize-path@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= - dependencies: - remove-trailing-separator "^1.0.1" - -normalize-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -npm-run-path@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" - integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= - dependencies: - path-key "^2.0.0" - -number-is-nan@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= - -object-assign@^4.0.1, object-assign@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= - -object-copy@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" - integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= - dependencies: - copy-descriptor "^0.1.0" - define-property "^0.2.5" - kind-of "^3.0.3" - -object-inspect@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67" - integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw== - -object-is@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.0.2.tgz#6b80eb84fe451498f65007982f035a5b445edec4" - integrity sha512-Epah+btZd5wrrfjkJZq1AOB9O6OxUQto45hzFd7lXGrpHPGE0W1k+426yrZV+k6NJOzLNNW/nVsmZdIWsAqoOQ== - -object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - -object-visit@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" - integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= - dependencies: - isobject "^3.0.0" - -object.assign@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" - integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== - dependencies: - define-properties "^1.1.2" - function-bind "^1.1.1" - has-symbols "^1.0.0" - object-keys "^1.0.11" - -object.pick@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" - integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= - dependencies: - isobject "^3.0.1" - -obuf@^1.0.0, obuf@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" - integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== - -on-finished@~2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" - integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= - dependencies: - ee-first "1.1.1" - -on-headers@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" - integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== - -once@^1.3.0, once@^1.3.1, once@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= - dependencies: - wrappy "1" - -opn@^5.5.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc" - integrity sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA== - dependencies: - is-wsl "^1.1.0" - -original@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f" - integrity sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg== - dependencies: - url-parse "^1.4.3" - -os-browserify@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" - integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= - -os-locale@^3.0.0, os-locale@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" - integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q== - dependencies: - execa "^1.0.0" - lcid "^2.0.0" - mem "^4.0.0" - -p-defer@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" - integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= - -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= - -p-is-promise@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" - integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg== - -p-limit@^2.0.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.1.tgz#aa07a788cc3151c939b5131f63570f0dd2009537" - integrity sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg== - dependencies: - p-try "^2.0.0" - -p-locate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" - integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== - dependencies: - p-limit "^2.0.0" - -p-map@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" - integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== - -p-retry@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-3.0.1.tgz#316b4c8893e2c8dc1cfa891f406c4b422bebf328" - integrity sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w== - dependencies: - retry "^0.12.0" - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - -pako@~1.0.5: - version "1.0.10" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.10.tgz#4328badb5086a426aa90f541977d4955da5c9732" - integrity sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw== - -parallel-transform@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" - integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== - dependencies: - cyclist "^1.0.1" - inherits "^2.0.3" - readable-stream "^2.1.5" - -parse-asn1@^5.0.0: - version "5.1.5" - resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.5.tgz#003271343da58dc94cace494faef3d2147ecea0e" - integrity sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ== - dependencies: - asn1.js "^4.0.0" - browserify-aes "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.0" - pbkdf2 "^3.0.3" - safe-buffer "^5.1.1" - -parse-passwd@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" - integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= - -parseurl@~1.3.2, parseurl@~1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" - integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== - -pascalcase@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" - integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= - -path-browserify@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" - integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== - -path-dirname@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" - integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= - -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= - -path-is-inside@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" - integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= - -path-key@^2.0.0, path-key@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" - integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= - -path-to-regexp@0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" - integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= - -pbkdf2@^3.0.3: - version "3.0.17" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" - integrity sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA== - dependencies: - create-hash "^1.1.2" - create-hmac "^1.1.4" - ripemd160 "^2.0.1" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -pify@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= - -pify@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" - integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== - -pinkie-promise@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" - integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= - dependencies: - pinkie "^2.0.0" - -pinkie@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" - integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= - -pkg-dir@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" - integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== - dependencies: - find-up "^3.0.0" - -portfinder@^1.0.25: - version "1.0.25" - resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.25.tgz#254fd337ffba869f4b9d37edc298059cb4d35eca" - integrity sha512-6ElJnHBbxVA1XSLgBp7G1FiCkQdlqGzuF7DswL5tcea+E8UpuvPU7beVAjjRwCioTS9ZluNbu+ZyRvgTsmqEBg== - dependencies: - async "^2.6.2" - debug "^3.1.1" - mkdirp "^0.5.1" - -posix-character-classes@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" - integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= - -process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== - -process@^0.11.10: - version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= - -promise-inflight@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" - integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= - -proxy-addr@~2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.5.tgz#34cbd64a2d81f4b1fd21e76f9f06c8a45299ee34" - integrity sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ== - dependencies: - forwarded "~0.1.2" - ipaddr.js "1.9.0" - -prr@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" - integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= - -public-encrypt@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" - integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== - dependencies: - bn.js "^4.1.0" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - parse-asn1 "^5.0.0" - randombytes "^2.0.1" - safe-buffer "^5.1.2" - -pump@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" - integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -pump@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -pumpify@^1.3.3: - version "1.5.1" - resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" - integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== - dependencies: - duplexify "^3.6.0" - inherits "^2.0.3" - pump "^2.0.0" - -punycode@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" - integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= - -punycode@^1.2.4: - version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= - -punycode@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== - -qs@6.7.0: - version "6.7.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" - integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== - -querystring-es3@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" - integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= - -querystring@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" - integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= - -querystringify@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.1.1.tgz#60e5a5fd64a7f8bfa4d2ab2ed6fdf4c85bad154e" - integrity sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA== - -randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: - version "2.1.0" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== - dependencies: - safe-buffer "^5.1.0" - -randomfill@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" - integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== - dependencies: - randombytes "^2.0.5" - safe-buffer "^5.1.0" - -range-parser@^1.2.1, range-parser@~1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" - integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== - -raw-body@2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" - integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== - dependencies: - bytes "3.1.0" - http-errors "1.7.2" - iconv-lite "0.4.24" - unpipe "1.0.0" - -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: - version "2.3.6" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" - integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - -readable-stream@^3.0.6: - version "3.4.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.4.0.tgz#a51c26754658e0a3c21dbf59163bd45ba6f447fc" - integrity sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readdirp@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" - integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== - dependencies: - graceful-fs "^4.1.11" - micromatch "^3.1.10" - readable-stream "^2.0.2" - -regex-not@^1.0.0, regex-not@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" - integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== - dependencies: - extend-shallow "^3.0.2" - safe-regex "^1.1.0" - -regexp.prototype.flags@^1.2.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75" - integrity sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - -remove-trailing-separator@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" - integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= - -repeat-element@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" - integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== - -repeat-string@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= - -require-main-filename@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" - integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= - -require-main-filename@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" - integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== - -requires-port@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" - integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= - -resolve-cwd@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" - integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo= - dependencies: - resolve-from "^3.0.0" - -resolve-dir@^1.0.0, resolve-dir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" - integrity sha1-eaQGRMNivoLybv/nOcm7U4IEb0M= - dependencies: - expand-tilde "^2.0.0" - global-modules "^1.0.0" - -resolve-from@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" - integrity sha1-six699nWiBvItuZTM17rywoYh0g= - -resolve-url@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" - integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= - -ret@~0.1.10: - version "0.1.15" - resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" - integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== - -retry@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" - integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= - -rimraf@^2.5.4, rimraf@^2.6.3: - version "2.7.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" - integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== - dependencies: - glob "^7.1.3" - -ripemd160@^2.0.0, ripemd160@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" - integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - -run-queue@^1.0.0, run-queue@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" - integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec= - dependencies: - aproba "^1.1.1" - -safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" - integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== - -safe-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" - integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= - dependencies: - ret "~0.1.10" - -"safer-buffer@>= 2.1.2 < 3": - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -schema-utils@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" - integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== - dependencies: - ajv "^6.1.0" - ajv-errors "^1.0.0" - ajv-keywords "^3.1.0" - -select-hose@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" - integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= - -selfsigned@^1.10.7: - version "1.10.7" - resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.7.tgz#da5819fd049d5574f28e88a9bcc6dbc6e6f3906b" - integrity sha512-8M3wBCzeWIJnQfl43IKwOmC4H/RAp50S8DF60znzjW5GVqTcSe2vWclt7hmYVPkKPlHWOu5EaWOMZ2Y6W8ZXTA== - dependencies: - node-forge "0.9.0" - -semver@^5.5.0, semver@^5.6.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - -semver@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - -send@0.17.1: - version "0.17.1" - resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" - integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== - dependencies: - debug "2.6.9" - depd "~1.1.2" - destroy "~1.0.4" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - fresh "0.5.2" - http-errors "~1.7.2" - mime "1.6.0" - ms "2.1.1" - on-finished "~2.3.0" - range-parser "~1.2.1" - statuses "~1.5.0" - -serialize-javascript@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.2.tgz#ecec53b0e0317bdc95ef76ab7074b7384785fa61" - integrity sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ== - -serve-index@^1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" - integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk= - dependencies: - accepts "~1.3.4" - batch "0.6.1" - debug "2.6.9" - escape-html "~1.0.3" - http-errors "~1.6.2" - mime-types "~2.1.17" - parseurl "~1.3.2" - -serve-static@1.14.1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" - integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== - dependencies: - encodeurl "~1.0.2" - escape-html "~1.0.3" - parseurl "~1.3.3" - send "0.17.1" - -set-blocking@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= - -set-value@^2.0.0, set-value@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" - integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== - dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.3" - split-string "^3.0.1" - -setimmediate@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" - integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= - -setprototypeof@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" - integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== - -setprototypeof@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" - integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== - -sha.js@^2.4.0, sha.js@^2.4.8: - version "2.4.11" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" - integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -shebang-command@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" - integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= - dependencies: - shebang-regex "^1.0.0" - -shebang-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" - integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= - -signal-exit@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" - integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= - -snapdragon-node@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" - integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== - dependencies: - define-property "^1.0.0" - isobject "^3.0.0" - snapdragon-util "^3.0.1" - -snapdragon-util@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" - integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== - dependencies: - kind-of "^3.2.0" - -snapdragon@^0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" - integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== - dependencies: - base "^0.11.1" - debug "^2.2.0" - define-property "^0.2.5" - extend-shallow "^2.0.1" - map-cache "^0.2.2" - source-map "^0.5.6" - source-map-resolve "^0.5.0" - use "^3.1.0" - -sockjs-client@1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.4.0.tgz#c9f2568e19c8fd8173b4997ea3420e0bb306c7d5" - integrity sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g== - dependencies: - debug "^3.2.5" - eventsource "^1.0.7" - faye-websocket "~0.11.1" - inherits "^2.0.3" - json3 "^3.3.2" - url-parse "^1.4.3" - -sockjs@0.3.19: - version "0.3.19" - resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.19.tgz#d976bbe800af7bd20ae08598d582393508993c0d" - integrity sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw== - dependencies: - faye-websocket "^0.10.0" - uuid "^3.0.1" - -source-list-map@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" - integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== - -source-map-resolve@^0.5.0: - version "0.5.3" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" - integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== - dependencies: - atob "^2.1.2" - decode-uri-component "^0.2.0" - resolve-url "^0.2.1" - source-map-url "^0.4.0" - urix "^0.1.0" - -source-map-support@~0.5.12: - version "0.5.16" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.16.tgz#0ae069e7fe3ba7538c64c98515e35339eac5a042" - integrity sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map-url@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" - integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= - -source-map@^0.5.6: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= - -source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -spdy-transport@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" - integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== - dependencies: - debug "^4.1.0" - detect-node "^2.0.4" - hpack.js "^2.1.6" - obuf "^1.1.2" - readable-stream "^3.0.6" - wbuf "^1.7.3" - -spdy@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.1.tgz#6f12ed1c5db7ea4f24ebb8b89ba58c87c08257f2" - integrity sha512-HeZS3PBdMA+sZSu0qwpCxl3DeALD5ASx8pAX0jZdKXSpPWbQ6SYGnlg3BBmYLx5LtiZrmkAZfErCm2oECBcioA== - dependencies: - debug "^4.1.0" - handle-thing "^2.0.0" - http-deceiver "^1.2.7" - select-hose "^2.0.0" - spdy-transport "^3.0.0" - -split-string@^3.0.1, split-string@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" - integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== - dependencies: - extend-shallow "^3.0.0" - -ssri@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8" - integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA== - dependencies: - figgy-pudding "^3.5.1" - -static-extend@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" - integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= - dependencies: - define-property "^0.2.5" - object-copy "^0.1.0" - -"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" - integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= - -stream-browserify@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" - integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== - dependencies: - inherits "~2.0.1" - readable-stream "^2.0.2" - -stream-each@^1.1.0: - version "1.2.3" - resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" - integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== - dependencies: - end-of-stream "^1.1.0" - stream-shift "^1.0.0" - -stream-http@^2.7.2: - version "2.8.3" - resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" - integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== - dependencies: - builtin-status-codes "^3.0.0" - inherits "^2.0.1" - readable-stream "^2.3.6" - to-arraybuffer "^1.0.0" - xtend "^4.0.0" - -stream-shift@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" - integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== - -string-width@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" - -string-width@^2.0.0, string-width@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" - -string-width@^3.0.0, string-width@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" - integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== - dependencies: - emoji-regex "^7.0.1" - is-fullwidth-code-point "^2.0.0" - strip-ansi "^5.1.0" - -string.prototype.trimleft@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz#9bdb8ac6abd6d602b17a4ed321870d2f8dcefc74" - integrity sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag== - dependencies: - define-properties "^1.1.3" - function-bind "^1.1.1" - -string.prototype.trimright@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz#440314b15996c866ce8a0341894d45186200c5d9" - integrity sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g== - dependencies: - define-properties "^1.1.3" - function-bind "^1.1.1" - -string_decoder@^1.0.0, string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - -strip-ansi@^3.0.0, strip-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= - dependencies: - ansi-regex "^2.0.0" - -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= - dependencies: - ansi-regex "^3.0.0" - -strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" - integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== - dependencies: - ansi-regex "^4.1.0" - -strip-eof@^1.0.0: +supports-preserve-symlinks-flag@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" - integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== -supports-color@6.1.0, supports-color@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" - integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== - dependencies: - has-flag "^3.0.0" - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -tapable@^1.0.0, tapable@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" - integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== - -terser-webpack-plugin@^1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz#5ecaf2dbdc5fb99745fd06791f46fc9ddb1c9a7c" - integrity sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA== - dependencies: - cacache "^12.0.2" - find-cache-dir "^2.1.0" - is-wsl "^1.1.0" - schema-utils "^1.0.0" - serialize-javascript "^2.1.2" - source-map "^0.6.1" - terser "^4.1.2" - webpack-sources "^1.4.0" - worker-farm "^1.7.0" - -terser@^4.1.2: - version "4.4.3" - resolved "https://registry.yarnpkg.com/terser/-/terser-4.4.3.tgz#401abc52b88869cf904412503b1eb7da093ae2f0" - integrity sha512-0ikKraVtRDKGzHrzkCv5rUNDzqlhmhowOBqC0XqUHFpW+vJ45+20/IFBcebwKfiS2Z9fJin6Eo+F1zLZsxi8RA== - dependencies: +tapable@^2.1.1, tapable@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" + integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== + +terser-webpack-plugin@^5.1.3: + version "5.3.6" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz#5590aec31aa3c6f771ce1b1acca60639eab3195c" + integrity sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ== + dependencies: + "@jridgewell/trace-mapping" "^0.3.14" + jest-worker "^27.4.5" + schema-utils "^3.1.1" + serialize-javascript "^6.0.0" + terser "^5.14.1" + +terser@^5.14.1: + version "5.16.1" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.16.1.tgz#5af3bc3d0f24241c7fb2024199d5c461a1075880" + integrity sha512-xvQfyfA1ayT0qdK47zskQgRZeWLoOQ8JQ6mIgRGVNwZKdQMU+5FkCBjmv4QjcrTzyZquRw2FVtlJSRUmMKQslw== + dependencies: + "@jridgewell/source-map" "^0.3.2" + acorn "^8.5.0" commander "^2.20.0" - source-map "~0.6.1" - source-map-support "~0.5.12" + source-map-support "~0.5.20" three@^0.112: version "0.112.1" resolved "https://registry.yarnpkg.com/three/-/three-0.112.1.tgz#f8d8f4d0f8e5f753dac6260491b8209457fdc131" integrity sha512-8I0O74hiYtKl3LgDNcPJbBGOlpekbcJ6fJnImmW3mFdeUFJ2H9Y3/UuUSW2sBdjrIlCM0gvOkaTEFlofO900TQ== -through2@^2.0.0: - version "2.0.5" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" - integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== - dependencies: - readable-stream "~2.3.6" - xtend "~4.0.1" - -thunky@^1.0.2: - version "1.1.0" - resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" - integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== - -timers-browserify@^2.0.4: - version "2.0.11" - resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.11.tgz#800b1f3eee272e5bc53ee465a04d0e804c31211f" - integrity sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ== - dependencies: - setimmediate "^1.0.4" - -to-arraybuffer@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" - integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= - -to-object-path@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" - integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= - dependencies: - kind-of "^3.0.2" - -to-regex-range@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" - integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= - dependencies: - is-number "^3.0.0" - repeat-string "^1.6.1" - -to-regex@^3.0.1, to-regex@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" - integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== - dependencies: - define-property "^2.0.2" - extend-shallow "^3.0.2" - regex-not "^1.0.2" - safe-regex "^1.1.0" - -toidentifier@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" - integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== - -tslib@^1.9.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" - integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ== - -tty-browserify@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" - integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= - -type-is@~1.6.17, type-is@~1.6.18: - version "1.6.18" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" - integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== - dependencies: - media-typer "0.3.0" - mime-types "~2.1.24" - -typedarray@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" - integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= - -union-value@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" - integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== - dependencies: - arr-union "^3.1.0" - get-value "^2.0.6" - is-extendable "^0.1.1" - set-value "^2.0.1" - -unique-filename@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" - integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== - dependencies: - unique-slug "^2.0.0" - -unique-slug@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" - integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== - dependencies: - imurmurhash "^0.1.4" - -unpipe@1.0.0, unpipe@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= - -unset-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" - integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= +update-browserslist-db@^1.0.9: + version "1.0.10" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz#0f54b876545726f17d00cd9a2561e6dade943ff3" + integrity sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ== dependencies: - has-value "^0.3.1" - isobject "^3.0.0" - -upath@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" - integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== + escalade "^3.1.1" + picocolors "^1.0.0" uri-js@^4.2.2: version "4.2.2" @@ -3590,328 +742,84 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" -urix@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" - integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= - -url-parse@^1.4.3: - version "1.4.7" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.7.tgz#a8a83535e8c00a316e403a5db4ac1b9b853ae278" - integrity sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg== - dependencies: - querystringify "^2.1.1" - requires-port "^1.0.0" - -url@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" - integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= - dependencies: - punycode "1.3.2" - querystring "0.2.0" - -use@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" - integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== - -util-deprecate@^1.0.1, util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= - -util@0.10.3: - version "0.10.3" - resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" - integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= - dependencies: - inherits "2.0.1" - -util@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" - integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== - dependencies: - inherits "2.0.3" - -utils-merge@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" - integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= - -uuid@^3.0.1, uuid@^3.3.2: - version "3.3.3" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.3.tgz#4568f0216e78760ee1dbf3a4d2cf53e224112866" - integrity sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ== - -v8-compile-cache@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz#00f7494d2ae2b688cfe2899df6ed2c54bef91dbe" - integrity sha512-CNmdbwQMBjwr9Gsmohvm0pbL954tJrNzf6gWL3K+QMQf00PF7ERGrEiLgjuU3mKreLC2MeGhUsNV9ybTbLgd3w== - -vary@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" - integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= - -vm-browserify@^1.0.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" - integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== - -watchpack@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.0.tgz#4bc12c2ebe8aa277a71f1d3f14d685c7b446cd00" - integrity sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA== +watchpack@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d" + integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg== dependencies: - chokidar "^2.0.2" + glob-to-regexp "^0.4.1" graceful-fs "^4.1.2" - neo-async "^2.5.0" - -wbuf@^1.1.0, wbuf@^1.7.3: - version "1.7.3" - resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" - integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== - dependencies: - minimalistic-assert "^1.0.0" - -webpack-cli@^3.3.10: - version "3.3.10" - resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.3.10.tgz#17b279267e9b4fb549023fae170da8e6e766da13" - integrity sha512-u1dgND9+MXaEt74sJR4PR7qkPxXUSQ0RXYq8x1L6Jg1MYVEmGPrH6Ah6C4arD4r0J1P5HKjRqpab36k0eIzPqg== - dependencies: - chalk "2.4.2" - cross-spawn "6.0.5" - enhanced-resolve "4.1.0" - findup-sync "3.0.0" - global-modules "2.0.0" - import-local "2.0.0" - interpret "1.2.0" - loader-utils "1.2.3" - supports-color "6.1.0" - v8-compile-cache "2.0.3" - yargs "13.2.4" - -webpack-dev-middleware@^3.7.2: - version "3.7.2" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz#0019c3db716e3fa5cecbf64f2ab88a74bab331f3" - integrity sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw== - dependencies: - memory-fs "^0.4.1" - mime "^2.4.4" - mkdirp "^0.5.1" - range-parser "^1.2.1" - webpack-log "^2.0.0" - -webpack-dev-server@^3.10.1: - version "3.10.1" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.10.1.tgz#1ff3e5cccf8e0897aa3f5909c654e623f69b1c0e" - integrity sha512-AGG4+XrrXn4rbZUueyNrQgO4KGnol+0wm3MPdqGLmmA+NofZl3blZQKxZ9BND6RDNuvAK9OMYClhjOSnxpWRoA== - dependencies: - ansi-html "0.0.7" - bonjour "^3.5.0" - chokidar "^2.1.8" - compression "^1.7.4" - connect-history-api-fallback "^1.6.0" - debug "^4.1.1" - del "^4.1.1" - express "^4.17.1" - html-entities "^1.2.1" - http-proxy-middleware "0.19.1" - import-local "^2.0.0" - internal-ip "^4.3.0" - ip "^1.1.5" - is-absolute-url "^3.0.3" - killable "^1.0.1" - loglevel "^1.6.6" - opn "^5.5.0" - p-retry "^3.0.1" - portfinder "^1.0.25" - schema-utils "^1.0.0" - selfsigned "^1.10.7" - semver "^6.3.0" - serve-index "^1.9.1" - sockjs "0.3.19" - sockjs-client "1.4.0" - spdy "^4.0.1" - strip-ansi "^3.0.1" - supports-color "^6.1.0" - url "^0.11.0" - webpack-dev-middleware "^3.7.2" - webpack-log "^2.0.0" - ws "^6.2.1" - yargs "12.0.5" - -webpack-log@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-2.0.0.tgz#5b7928e0637593f119d32f6227c1e0ac31e1b47f" - integrity sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg== - dependencies: - ansi-colors "^3.0.0" - uuid "^3.3.2" - -webpack-sources@^1.4.0, webpack-sources@^1.4.1: - version "1.4.3" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" - integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== - dependencies: - source-list-map "^2.0.0" - source-map "~0.6.1" -webpack@^4.41.5: - version "4.41.5" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.41.5.tgz#3210f1886bce5310e62bb97204d18c263341b77c" - integrity sha512-wp0Co4vpyumnp3KlkmpM5LWuzvZYayDwM2n17EHFr4qxBBbRokC7DJawPJC7TfSFZ9HZ6GsdH40EBj4UV0nmpw== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-module-context" "1.8.5" - "@webassemblyjs/wasm-edit" "1.8.5" - "@webassemblyjs/wasm-parser" "1.8.5" - acorn "^6.2.1" - ajv "^6.10.2" - ajv-keywords "^3.4.1" +webpack-cli@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-5.0.1.tgz#95fc0495ac4065e9423a722dec9175560b6f2d9a" + integrity sha512-S3KVAyfwUqr0Mo/ur3NzIp6jnerNpo7GUO6so51mxLi1spqsA17YcMXy0WOIJtBSnj748lthxC6XLbNKh/ZC+A== + dependencies: + "@discoveryjs/json-ext" "^0.5.0" + "@webpack-cli/configtest" "^2.0.1" + "@webpack-cli/info" "^2.0.1" + "@webpack-cli/serve" "^2.0.1" + colorette "^2.0.14" + commander "^9.4.1" + cross-spawn "^7.0.3" + envinfo "^7.7.3" + fastest-levenshtein "^1.0.12" + import-local "^3.0.2" + interpret "^3.1.1" + rechoir "^0.8.0" + webpack-merge "^5.7.3" + +webpack-merge@^5.7.3: + version "5.8.0" + resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.8.0.tgz#2b39dbf22af87776ad744c390223731d30a68f61" + integrity sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q== + dependencies: + clone-deep "^4.0.1" + wildcard "^2.0.0" + +webpack-sources@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" + integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== + +webpack@^5.75.0: + version "5.75.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.75.0.tgz#1e440468647b2505860e94c9ff3e44d5b582c152" + integrity sha512-piaIaoVJlqMsPtX/+3KTTO6jfvrSYgauFVdt8cr9LTHKmcq/AMd4mhzsiP7ZF/PGRNPGA8336jldh9l2Kt2ogQ== + dependencies: + "@types/eslint-scope" "^3.7.3" + "@types/estree" "^0.0.51" + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/wasm-edit" "1.11.1" + "@webassemblyjs/wasm-parser" "1.11.1" + acorn "^8.7.1" + acorn-import-assertions "^1.7.6" + browserslist "^4.14.5" chrome-trace-event "^1.0.2" - enhanced-resolve "^4.1.0" - eslint-scope "^4.0.3" - json-parse-better-errors "^1.0.2" - loader-runner "^2.4.0" - loader-utils "^1.2.3" - memory-fs "^0.4.1" - micromatch "^3.1.10" - mkdirp "^0.5.1" - neo-async "^2.6.1" - node-libs-browser "^2.2.1" - schema-utils "^1.0.0" - tapable "^1.1.3" - terser-webpack-plugin "^1.4.3" - watchpack "^1.6.0" - webpack-sources "^1.4.1" - -websocket-driver@>=0.5.1: - version "0.7.3" - resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.3.tgz#a2d4e0d4f4f116f1e6297eba58b05d430100e9f9" - integrity sha512-bpxWlvbbB459Mlipc5GBzzZwhoZgGEZLuqPaR0INBGnPAY1vdBX6hPnoFXiw+3yWxDuHyQjO2oXTMyS8A5haFg== - dependencies: - http-parser-js ">=0.4.0 <0.4.11" - safe-buffer ">=5.1.0" - websocket-extensions ">=0.1.1" - -websocket-extensions@>=0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.3.tgz#5d2ff22977003ec687a4b87073dfbbac146ccf29" - integrity sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg== - -which-module@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= - -which@^1.2.14, which@^1.2.9, which@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + enhanced-resolve "^5.10.0" + es-module-lexer "^0.9.0" + eslint-scope "5.1.1" + events "^3.2.0" + glob-to-regexp "^0.4.1" + graceful-fs "^4.2.9" + json-parse-even-better-errors "^2.3.1" + loader-runner "^4.2.0" + mime-types "^2.1.27" + neo-async "^2.6.2" + schema-utils "^3.1.0" + tapable "^2.1.1" + terser-webpack-plugin "^5.1.3" + watchpack "^2.4.0" + webpack-sources "^3.2.3" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== dependencies: isexe "^2.0.0" -worker-farm@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" - integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== - dependencies: - errno "~0.1.7" - -wrap-ansi@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" - integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - -wrap-ansi@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" - integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== - dependencies: - ansi-styles "^3.2.0" - string-width "^3.0.0" - strip-ansi "^5.0.0" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= - -ws@^6.2.1: - version "6.2.1" - resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" - integrity sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA== - dependencies: - async-limiter "~1.0.0" - -xtend@^4.0.0, xtend@~4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" - integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== - -"y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" - integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== - -yallist@^3.0.2: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - -yargs-parser@^11.1.1: - version "11.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" - integrity sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs-parser@^13.1.0: - version "13.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.1.tgz#d26058532aa06d365fe091f6a1fc06b2f7e5eca0" - integrity sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs@12.0.5: - version "12.0.5" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" - integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw== - dependencies: - cliui "^4.0.0" - decamelize "^1.2.0" - find-up "^3.0.0" - get-caller-file "^1.0.1" - os-locale "^3.0.0" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^2.0.0" - which-module "^2.0.0" - y18n "^3.2.1 || ^4.0.0" - yargs-parser "^11.1.1" - -yargs@13.2.4: - version "13.2.4" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.2.4.tgz#0b562b794016eb9651b98bd37acf364aa5d6dc83" - integrity sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg== - dependencies: - cliui "^5.0.0" - find-up "^3.0.0" - get-caller-file "^2.0.1" - os-locale "^3.1.0" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^3.0.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^13.1.0" +wildcard@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.0.tgz#a77d20e5200c6faaac979e4b3aadc7b3dd7f8fec" + integrity sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw== From a4bdfb7d68259df32da163936baf22cf628158cc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 28 Dec 2022 05:57:52 +0000 Subject: [PATCH 2/2] Bump kind-of from 6.0.2 to 6.0.3 Bumps [kind-of](https://github.com/jonschlinkert/kind-of) from 6.0.2 to 6.0.3. - [Release notes](https://github.com/jonschlinkert/kind-of/releases) - [Changelog](https://github.com/jonschlinkert/kind-of/blob/master/CHANGELOG.md) - [Commits](https://github.com/jonschlinkert/kind-of/compare/6.0.2...6.0.3) --- updated-dependencies: - dependency-name: kind-of dependency-type: indirect ... Signed-off-by: dependabot[bot] --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 67fd225..aef6a20 100644 --- a/yarn.lock +++ b/yarn.lock @@ -497,9 +497,9 @@ jsonparse@^1.3.1: integrity sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA= kind-of@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" - integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA== + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== loader-runner@^4.2.0: version "4.3.0"